From mboxrd@z Thu Jan 1 00:00:00 1970 X-GM-THRID: 6691586504498610176 X-Received: by 2002:a1c:eb12:: with SMTP id j18mr9163811wmh.48.1558006392624; Thu, 16 May 2019 04:33:12 -0700 (PDT) X-BeenThere: isar-users@googlegroups.com Received: by 2002:a1c:9c45:: with SMTP id f66ls1767045wme.0.gmail; Thu, 16 May 2019 04:33:12 -0700 (PDT) X-Google-Smtp-Source: APXvYqyfqOE3qEWS3BmQ+4cTMMNoMCC/Y/Mh+1/yT/bGG4eJmau7SqAHD6tYSrtLvz3k/YW9w2MK X-Received: by 2002:a1c:6783:: with SMTP id b125mr28083965wmc.41.1558006392095; Thu, 16 May 2019 04:33:12 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1558006392; cv=none; d=google.com; s=arc-20160816; b=to3sqSC8G2gWnqUWLXEDfrM6753SV0E6HonZ7Ttg1il7c26OwqzHX/aMRRogbAgoLa EXeyByBSthRDPyL0xqYV+hbK6dniy5is8aLZ5vYtrWAjnBjTcICXyHMQqmN1RNavvBQK WbND3Uc50RPtMqHCLyahg0dYobQL6LexZST4MnBexfV7C/6PuR4l5wGFe/gICHxZ7Jjj 24M1TaFJv0we6dyvnjFQcoROx8Aoa4tJ2OtMjU0bBsWehHArYn0cFCoROEjiEH686ee+ 2+K8X5Fz7SCi//05lyaC3p04VmovYzxXNER+nj6m0p5Q58wdUXcPIWIJtiRSrk3Sxhm+ HhRw== 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=eDlwKxjeywRvSOFS5D6OY+/Ob2JSvw+iyoqppKpQnXs=; b=WuOxUwJ9IxE82LRAnTi58/BS+ufRrgSrSS6yuIBqNbO7uDsNgD6sLodn63KKHEZd23 RmvENlB8i5lwhGQcaKv9i9WQNoQtWEco4SueuOi1zk8q8/GYNJehVgiFe50yfY9OTCrP yAv7kdgcFMjm31JD5pWikUzHZe0kfV5vUpOnPEodhDf6f0UHV4g8o5XFmDQemy6PxEe9 Hw6AUXTgvRgEOYg7DL7YLU1VhT/taCNuS5LcbBBI7P6xNo/6W/TO2dC+N9eTR45ij2Z7 90yJ9jye/yipZLhOYIWkqNxT+3iX8g8NM3OWkvYqAWjHND62d73mMZwsXgfrBuBcINDa rAnA== 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 g204si2065390wmf.1.2019.05.16.04.33.12 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 16 May 2019 04:33:12 -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 mail2.sbs.de (mail2.sbs.de [192.129.41.66]) by david.siemens.de (8.15.2/8.15.2) with ESMTPS id x4GBXBTu008802 (version=TLSv1.2 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Thu, 16 May 2019 13:33:11 +0200 Received: from ring.ppmd.siemens.net (linux-ses-ext02.ppmd.siemens.net [139.25.69.232]) by mail2.sbs.de (8.15.2/8.15.2) with ESMTP id x4GBXAXl012624; Thu, 16 May 2019 13:33:11 +0200 From: claudius.heine.ext@siemens.com To: isar-users@googlegroups.com Cc: Claudius Heine Subject: [PATCH v2 3/8] meta/classes: add image-locales-extension class Date: Thu, 16 May 2019 13:32:58 +0200 Message-Id: <20190516113303.12184-4-claudius.heine.ext@siemens.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190516113303.12184-1-claudius.heine.ext@siemens.com> References: <20190516113303.12184-1-claudius.heine.ext@siemens.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-TUID: RqEGF+F/bND7 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 158e064..9753a16 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