From mboxrd@z Thu Jan 1 00:00:00 1970 X-GM-THRID: 6680759771290664960 X-Received: by 2002:a2e:9703:: with SMTP id r3mr10061292lji.88.1555586752588; Thu, 18 Apr 2019 04:25:52 -0700 (PDT) X-BeenThere: isar-users@googlegroups.com Received: by 2002:ac2:4ac1:: with SMTP id m1ls164444lfp.12.gmail; Thu, 18 Apr 2019 04:25:51 -0700 (PDT) X-Google-Smtp-Source: APXvYqwkV9RvYCnXPYmRvfWhssSs48FUA3AtSh3JavN88yG03WIH9HHx2jEfEUUzeJG1ZsyN+L4S X-Received: by 2002:ac2:592b:: with SMTP id v11mr27851048lfi.85.1555586751910; Thu, 18 Apr 2019 04:25:51 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1555586751; cv=none; d=google.com; s=arc-20160816; b=C95xqClGz1rBAMrGPsuTpFmvwc64jEntBMF6FDnVhqQArIKglxiHPTFp06sLCj6L7l 1tLNhSOxhAq8IGA0ug3uXnZWrnSo/AtMipde9T9qUuKtLpntYX1hu5wdShJpKlnccbyT HGBUH8IrOgTDBmu68eO7BCezMUfMYwpktaru0HsDlacHjjomPHmTuSaDt4U3DUin1XYJ QxUFUTX/NfpkgB6qjhJhLLIdXU5bsG4fIZL3iNpid1L0PJLzUUJB6l2E6yYfNYct153M LAUZKuHU5LmX/s80aoIyelQRonUWnPG2MVLPms5tStotfuIib7FkVhoJlQlAuurkRIJ9 sE1g== 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=Vi/psaCnPeZJ+Z+PkRoMC7kZDrJD4OSOnxrRjP+uxks=; b=Gqti7pfOHevCXuY+kb2TaHT8FW7l7lvKX4zjzLLT04Uo4uUil22s8nf3mZA6nVv5s1 n+VIIidecKxd+IeOF8UaEz95x4tFvO5N1EUaPK+LOP38SFSQAwzeIjgVRv3CAfmO0GlV 5N22oKpX+TrEsn4CHjckmErofgRUdOkxV2MKliqDjmFSehzKWmBwrAQ9vkb15R8pdghk hPg3MsK6bpk7LrH/aINL/sZbO1eR2veVXv94cLh4/rvK+czFh6SygH/yC9pwYXKvqbHF huDL2NmQR0taY48ruRQaR29AdZXgkBBv1yS2qQ4O4BN0utTxk6St5pqqMnFdjU7aqKJQ mxYA== ARC-Authentication-Results: i=1; gmr-mx.google.com; spf=pass (google.com: domain of claudius.heine.ext@siemens.com designates 194.138.37.39 as permitted sender) smtp.mailfrom=claudius.heine.ext@siemens.com Return-Path: Received: from lizzard.sbs.de (lizzard.sbs.de. [194.138.37.39]) by gmr-mx.google.com with ESMTPS id t82si139421lje.3.2019.04.18.04.25.51 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 18 Apr 2019 04:25:51 -0700 (PDT) Received-SPF: pass (google.com: domain of claudius.heine.ext@siemens.com designates 194.138.37.39 as permitted sender) client-ip=194.138.37.39; Authentication-Results: gmr-mx.google.com; spf=pass (google.com: domain of claudius.heine.ext@siemens.com designates 194.138.37.39 as permitted sender) smtp.mailfrom=claudius.heine.ext@siemens.com Received: from mail1.sbs.de (mail1.sbs.de [192.129.41.35]) by lizzard.sbs.de (8.15.2/8.15.2) with ESMTPS id x3IBPoFM010450 (version=TLSv1.2 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Thu, 18 Apr 2019 13:25:50 +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 x3IBPolJ014428; Thu, 18 Apr 2019 13:25:50 +0200 From: claudius.heine.ext@siemens.com To: isar-users@googlegroups.com Cc: Claudius Heine Subject: [PATCH 3/6] meta/classes: add image-locales-extension class Date: Thu, 18 Apr 2019 13:25:42 +0200 Message-Id: <20190418112545.1201-4-claudius.heine.ext@siemens.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190418112545.1201-1-claudius.heine.ext@siemens.com> References: <20190418112545.1201-1-claudius.heine.ext@siemens.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-TUID: 73GX3268FoMy 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 89dc5e4..c1ae4f6 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