From mboxrd@z Thu Jan 1 00:00:00 1970 X-GM-THRID: 6691586504498610176 X-Received: by 2002:a50:94db:: with SMTP id t27mr51483381eda.173.1558623325729; Thu, 23 May 2019 07:55:25 -0700 (PDT) X-BeenThere: isar-users@googlegroups.com Received: by 2002:a17:906:c116:: with SMTP id h22ls1441430ejz.6.gmail; Thu, 23 May 2019 07:55:25 -0700 (PDT) X-Google-Smtp-Source: APXvYqwMuHl55nwsIchWcFgHKq5c4Nl3akdQ9iclD6aTm7JJ6E3cjagrl5B+S6g5I+Ywg5RZHkMn X-Received: by 2002:a17:906:3d8:: with SMTP id c24mr22037652eja.214.1558623325306; Thu, 23 May 2019 07:55:25 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1558623325; cv=none; d=google.com; s=arc-20160816; b=POaPyoOxwrCX1jA0QcNJBRtOuY9e0MAE4OL3yAF4HfZeJhbkfIAGkLuSewnooqJcvT rnIGcUEkSzw7t8ium+alT7ltFHmnKuarNU1EDs9VsnAtdW5nBqF+TUXGPBoTRMfD0vtH TiE2yhjjfQNlnvaezSn9J9dwN7NPI56vP7tOCc9ohiYAbnFKCV8tv9apGQ3f/Kb/uxui HzUN+mA1cxV078R2OM0QAIcy1FYSsj8TC6lgeaE0QvdH+06XqmtR4R4Iqx4emGTpZDHj +W9jUCDvnjLRY0ODXFLrGfxEugQK+wfEgf4O7Bd8D26ua/sd1AKs3pSnGck/OqNxbQMy gFCw== 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=PgeDDyECAxPsi0k5dS6PinFwdRAEekK8dk5ObF9+HHx0VXbpCPvvRcqzvBCB3kUhlc q7WXzSxWh8knE+3ULa5muueDwCIXopiwvLZhg9YWI2JGrCK8RYdStLKG7H5FbdAPDfmb Qvu69uRo6F1izrS5brUfirOdfm0ZmLY4uz8TQsNqDptAklPoqX9JvELRNFd+Rj+lj79y As5IgEJGlGtDoxRMmfHdkFVRZ4WwPx7Fp3POkyvIE32Y021EY4MVp0Ge5htOLbtGExWo +fWKCAQshuHMYI9qh/mD1OyulzYJQHpfYXmhFrHeDoNbnkFDUl/d+acV5ZBWcQe1PyA8 rivA== ARC-Authentication-Results: i=1; gmr-mx.google.com; spf=pass (google.com: domain of claudius.heine.ext@siemens.com designates 192.35.17.14 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 david.siemens.de (david.siemens.de. [192.35.17.14]) by gmr-mx.google.com with ESMTPS id l30si2925951edd.4.2019.05.23.07.55.25 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 23 May 2019 07:55:25 -0700 (PDT) Received-SPF: pass (google.com: domain of claudius.heine.ext@siemens.com designates 192.35.17.14 as permitted sender) client-ip=192.35.17.14; Authentication-Results: gmr-mx.google.com; spf=pass (google.com: domain of claudius.heine.ext@siemens.com designates 192.35.17.14 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 david.siemens.de (8.15.2/8.15.2) with ESMTPS id x4NEtOY7015570 (version=TLSv1.2 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Thu, 23 May 2019 16:55:24 +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 x4NEtNgC014892; Thu, 23 May 2019 16:55:24 +0200 From: claudius.heine.ext@siemens.com To: isar-users@googlegroups.com Cc: Claudius Heine Subject: [PATCH v4 3/8] meta/classes: add image-locales-extension class Date: Thu, 23 May 2019 16:55:16 +0200 Message-Id: <20190523145521.23050-4-claudius.heine.ext@siemens.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190523145521.23050-1-claudius.heine.ext@siemens.com> References: <20190523145521.23050-1-claudius.heine.ext@siemens.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-TUID: GS1dkrKFD+Pe 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