From mboxrd@z Thu Jan 1 00:00:00 1970 X-GM-THRID: 6691586504498610176 X-Received: by 2002:a19:ca0e:: with SMTP id a14mr35846295lfg.3.1558356385089; Mon, 20 May 2019 05:46:25 -0700 (PDT) X-BeenThere: isar-users@googlegroups.com Received: by 2002:ac2:523a:: with SMTP id i26ls1159330lfl.9.gmail; Mon, 20 May 2019 05:46:24 -0700 (PDT) X-Google-Smtp-Source: APXvYqweWkENrMKpKz3XX+1B8rduekII1nRapU5SY8J6lHqfODzTOGunuxDkyu/3+a+4MMKFU4qo X-Received: by 2002:a05:6512:6c:: with SMTP id i12mr18030131lfo.130.1558356384652; Mon, 20 May 2019 05:46:24 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1558356384; cv=none; d=google.com; s=arc-20160816; b=BLbEJBUAh48+AdKmuTeoqmFPF/9f90gfn1wG8O5Kr5MotlnhoE4+l/amHTcjlNH+qI 8KQMpWId37W9EHMIPWZi/N4AFSZTg8N33aIVPrtdwah77M7dmon7lPjwQWnGNz+woo3q sYhZ+zM4P25eynBuH1KgidfmKPEHyZ869VM2naF9SfKyWke1D+8BZs8Ja1ebGELOlNu+ 6UGDZvAUlzqkQwIyZZK83Cd+BJl0bXxlkoNMff6RR7BlpXL924lrXlSqff/D6FCcm4qO hOG3SMNiG4iAZBYR5c9vtJMdlrDJKYGufUeEWtx0BrnO0cezhPCcYgl5qHFITh1A/Gj1 RxLw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from; bh=czLxbOrrHzaePQhIBdQD8NH+EpxMIXVhvodbsjAoiqY=; b=Pa5WU4wgr9jojnL4R/4J4cC9zU2EeEUfk+TCU7Uy8LchTnJ9+4Uzr1dAvm01oQbtp3 q9IarzGt6J5aGevjpYcT8rAA5zMw7HlcZB+sSzinp97M1mFRClg0baEVbYnC+z4DD6Xu OCSVyC04Zpe2edcnN46Vpeq7lqSVucwNWM1vjdJQIWOkTBk57GgvRa9gwxJXnJF6p3/B 0YHEIRFPFrNXa4VrjLJm4QiviEv7NWAmTSNOZOwhn3z3rDwBW+v/5Anr8szEbEnR/1Rz UQbct8UK5eyfqBZ52E0qjfoQSl2wFSzABwL6umwk3rEpdQch9X0ICkAjSG/Zxc8UlsaW UiCg== ARC-Authentication-Results: i=1; gmr-mx.google.com; spf=pass (google.com: domain of claudius.heine.ext@siemens.com designates 194.138.37.40 as permitted sender) smtp.mailfrom=claudius.heine.ext@siemens.com; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=siemens.com Return-Path: Received: from gecko.sbs.de (gecko.sbs.de. [194.138.37.40]) by gmr-mx.google.com with ESMTPS id i12si1727611lfo.5.2019.05.20.05.46.24 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 20 May 2019 05:46:24 -0700 (PDT) Received-SPF: pass (google.com: domain of claudius.heine.ext@siemens.com designates 194.138.37.40 as permitted sender) client-ip=194.138.37.40; Authentication-Results: gmr-mx.google.com; spf=pass (google.com: domain of claudius.heine.ext@siemens.com designates 194.138.37.40 as permitted sender) smtp.mailfrom=claudius.heine.ext@siemens.com; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=siemens.com Received: from mail1.sbs.de (mail1.sbs.de [192.129.41.35]) by gecko.sbs.de (8.15.2/8.15.2) with ESMTPS id x4KCkM3f031979 (version=TLSv1.2 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 20 May 2019 14:46:22 +0200 Received: from ring.ppmd.siemens.net (linux-ses-ext02.ppmd.siemens.net [139.25.69.232]) by mail1.sbs.de (8.15.2/8.15.2) with ESMTP id x4KCkMDC000732; Mon, 20 May 2019 14:46:22 +0200 From: claudius.heine.ext@siemens.com To: isar-users@googlegroups.com Cc: Claudius Heine Subject: [PATCH v3 3/8] meta/classes: add image-locales-extension class Date: Mon, 20 May 2019 14:46:13 +0200 Message-Id: <20190520124618.16598-4-claudius.heine.ext@siemens.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190520124618.16598-1-claudius.heine.ext@siemens.com> References: <20190520124618.16598-1-claudius.heine.ext@siemens.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-TUID: 79mpfSKvk9wk From: Claudius Heine This class allows to configure the locales of the image and also uses 'localepurge' to remove unwanted locales. The locale can be configured the same way as with the isar-cfg-localepurge package, via the `LOCALE_GEN` and `LOCALE_DEFAULT` variables. Signed-off-by: Claudius Heine --- meta/classes/image-locales-extension.bbclass | 97 ++++++++++++++++++++ meta/classes/image.bbclass | 1 + meta/classes/rootfs.bbclass | 4 + 3 files changed, 102 insertions(+) create mode 100644 meta/classes/image-locales-extension.bbclass diff --git a/meta/classes/image-locales-extension.bbclass b/meta/classes/image-locales-extension.bbclass new file mode 100644 index 0000000..3c0758f --- /dev/null +++ b/meta/classes/image-locales-extension.bbclass @@ -0,0 +1,97 @@ +# This software is a part of ISAR. +# Copyright (C) Siemens AG, 2019 +# +# SPDX-License-Identifier: MIT +# +# This class extends the image.bbclass for setting locales and purging unneeded +# ones. + +LOCALE_GEN ?= "en_US.UTF-8 UTF-8\n\ + en_US ISO-8859-1\n" +LOCALE_DEFAULT ?= "en_US.UTF-8" + +def get_locale_gen(d, sep='\n'): + locale_gen = d.getVar("LOCALE_GEN", True) or "" + return sep.join(sorted(set(i.strip() + for i in locale_gen.split('\\n') + if i.strip()))) + +def get_nopurge(d): + locale_gen = d.getVar("LOCALE_GEN", True) or "" + return '\n'.join(sorted(set(i.strip() + for j in locale_gen.split('\\n') + if j.strip() + for i in (j.split()[0].split("_")[0], + j.split()[0].split(".")[0], + j.split()[0])))) + +ROOTFS_INSTALL_COMMAND_BEFORE_CLEAN += "image_install_localepurge_download" +image_install_localepurge_download[weight] = "40" +image_install_localepurge_download() { + sudo -E chroot '${ROOTFSDIR}' \ + /usr/bin/apt-get ${ROOTFS_APT_ARGS} --download-only localepurge +} + +ROOTFS_INSTALL_COMMAND += "image_install_localepurge_install" +image_install_localepurge_install[weight] = "700" +image_install_localepurge_install() { + + # Generate locale and localepurge configuration: + cat<<__EOF__ > ${WORKDIR}/locale.gen +${@get_locale_gen(d)} +__EOF__ + cat<<__EOF__ > ${WORKDIR}/locale.debconf +locales locales/locales_to_be_generated multiselect ${@get_locale_gen(d, ', ')} +locales locales/default_environment_locale select ${LOCALE_DEFAULT} +__EOF__ + cat<<__EOF__ > ${WORKDIR}/locale.default +LANG=${LOCALE_DEFAULT} +__EOF__ + cat<<__EOF__ > ${WORKDIR}/locale.nopurge +#USE_DPKG +MANDELETE +DONTBOTHERNEWLOCALE +#SHOWFREEDSPACE +#QUICKNDIRTYCALC +#VERBOSE +${@get_nopurge(d)} +__EOF__ + + # Install configuration into image: + sudo -E -s <<'EOSUDO' + cat '${WORKDIR}/locale.gen' >> '${ROOTFSDIR}/etc/locale.gen' + cat '${WORKDIR}/locale.default' > '${ROOTFSDIR}/etc/default/locale' + cat '${WORKDIR}/locale.nopurge' > '${ROOTFSDIR}/etc/locale.nopurge' + cat '${WORKDIR}/locale.debconf' > '${ROOTFSDIR}/tmp/locale.debconf' + + # Enter image and trigger locales config and localepurge: + chroot '${ROOTFSDIR}' /bin/sh <<'EOSH' + localepurge_state='i' + if dpkg -s localepurge 2>/dev/null >&2 + then + echo 'localepurge was installed (leaving it installed later)' + else + localepurge_state='p' + echo 'localepurge was not installed (removing it later)' + apt-get ${ROOTFS_APT_ARGS} localepurge + fi + + echo 'running locale debconf-set-selections' + debconf-set-selections /tmp/locale.debconf + rm -f '/tmp/locale.debconf' + + echo 'reconfigure locales' + dpkg-reconfigure -f noninteractive locales + + echo 'running localepurge' + localepurge + + if [ "$localepurge_state" = 'p' ] + then + echo removing localepurge... + apt-get purge --yes localepurge + apt-get autoremove --purge --yes + fi +EOSH +EOSUDO +} diff --git a/meta/classes/image.bbclass b/meta/classes/image.bbclass index 99eea92..dce6638 100644 --- a/meta/classes/image.bbclass +++ b/meta/classes/image.bbclass @@ -60,6 +60,7 @@ inherit image-sdk-extension inherit image-cache-extension inherit image-tools-extension inherit image-postproc-extension +inherit image-locales-extension # Extra space for rootfs in MB ROOTFS_EXTRA ?= "64" diff --git a/meta/classes/rootfs.bbclass b/meta/classes/rootfs.bbclass index 0fc8ba8..5736eee 100644 --- a/meta/classes/rootfs.bbclass +++ b/meta/classes/rootfs.bbclass @@ -99,6 +99,7 @@ rootfs_install_pkgs_update() { -o Dir::Etc::sourceparts="-" \ -o APT::Get::List-Cleanup="0" } + ROOTFS_INSTALL_COMMAND += "rootfs_install_resolvconf" rootfs_install_resolvconf[weight] = "1" rootfs_install_resolvconf() { @@ -112,6 +113,9 @@ rootfs_install_pkgs_download() { /usr/bin/apt-get ${ROOTFS_APT_ARGS} --download-only ${ROOTFS_PACKAGES} } +ROOTFS_INSTALL_COMMAND_BEFORE_CLEAN ??= "" +ROOTFS_INSTALL_COMMAND += "${ROOTFS_INSTALL_COMMAND_BEFORE_CLEAN}" + ROOTFS_INSTALL_COMMAND += "${@ 'rootfs_install_clean_files' if (d.getVar('ROOTFS_CLEAN_FILES') or '').strip() else ''}" rootfs_install_clean_files[weight] = "2" rootfs_install_clean_files() { -- 2.20.1