From mboxrd@z Thu Jan 1 00:00:00 1970 X-GM-THRID: 6558749580291211264 X-Received: by 2002:a2e:8357:: with SMTP id l23-v6mr149513ljh.4.1527681009983; Wed, 30 May 2018 04:50:09 -0700 (PDT) X-BeenThere: isar-users@googlegroups.com Received: by 2002:a2e:7005:: with SMTP id l5-v6ls4039653ljc.14.gmail; Wed, 30 May 2018 04:50:09 -0700 (PDT) X-Google-Smtp-Source: ADUXVKIgU1qIRD8322/sgIj03SPqjsETgjgR/scSpW9eqqlkpOkDpqbdEZUPlWNLlEsQKw+Fvlfc X-Received: by 2002:a2e:9d97:: with SMTP id c23-v6mr147812ljj.24.1527681009550; Wed, 30 May 2018 04:50:09 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1527681009; cv=none; d=google.com; s=arc-20160816; b=N6PBMpoDtAUFfnFLryot6uWxNFpatjBAhdbqtFQatUrdm9G0HLT/b9tT/4blzJgZef +mzUAIeOiqxB/BF6nYLb8oW1q5yyVju/RJ5P/C0QWGXKDsa+U7S1W2IeU8fCKJs6p8lO 9S12pxLhtv+IIRYGTlHIduxfYbrHb3CMMmHIVnioj1O+7Je5N0T2szFTdvgbPIrAxPMw 4qB13gUfUaw125E6Dssm0MHASej+BYUHa/Sr0m3SUt/fZw/E9J65/pqdJu5h5rFp6+sO 6/gTckAMYmwcfmHalzz6QDt+3SCOGN017EXXI+6bEOWSZyZncwIzgAIt/35CVeUSa4qo 2bsw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=references:in-reply-to:message-id:date:subject:cc:to:from :arc-authentication-results; bh=WpdPVUJZ9FZPV4D2nVZYxkKAcOzkl9Wf8j5RyjPS/cI=; b=XthxFcqskhFq0wAQtf54u+rHcSCpvB2KyoBXMsWkcO9jr3gLVk22R6kUUZCmTOnkdl B9haSL+5NvULKM/JiIQhQPs0YPf1W0NIvtPcCO6L56Cc+zIxVN7tDWicAzSI0qhjiQeI i0YimbycuYum82/sdsoPsv16LxbZS/wCt5uQS+Vl67k2uuHeaMzAMlp1vu7SnfwPjVh0 cBR4KFsbI8BYDfdnJmxpNgKIpuAf7ZQnv+gOGRwjbWerAokvKWuL09it+teeZhFhgQRj hXIZq9cTr9EBVKGAEHF4xyshzHBfbGX+mxEet4CELJAiiuUsHPO4kH26c+VW1YiiBVT2 wGog== 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 Return-Path: Received: from david.siemens.de (david.siemens.de. [192.35.17.14]) by gmr-mx.google.com with ESMTPS id i26-v6si1662353ljj.2.2018.05.30.04.50.09 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 30 May 2018 04:50:09 -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 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 w4UBo863019152 (version=TLSv1.2 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 30 May 2018 13:50:08 +0200 Received: from ring.ppmd.siemens.net (linux-ses-ext02.ppmd.siemens.net [139.25.69.69]) by mail2.sbs.de (8.15.2/8.15.2) with ESMTP id w4UBo7F2014220; Wed, 30 May 2018 13:50:07 +0200 From: claudius.heine.ext@siemens.com To: isar-users@googlegroups.com Cc: Claudius Heine Subject: [PATCH v6 1/4] isar-bootstrap|configscript: implement one transient packages Date: Wed, 30 May 2018 13:49:57 +0200 Message-Id: <20180530115000.14424-2-claudius.heine.ext@siemens.com> X-Mailer: git-send-email 2.17.0 In-Reply-To: <20180530115000.14424-1-claudius.heine.ext@siemens.com> References: <20180530115000.14424-1-claudius.heine.ext@siemens.com> X-TUID: mrghsyNwf6Du From: Claudius Heine Some configuration tasks on the image require certain other packages, but those packages might not be required on the final image. One way to solve this is use a special package that is installed to the image and then removed again. When installing it makes certain that all required packages are installed to the image as well. Then the image can be configured in the postinst hook. When this package is removed and all unused dependencies are removed as well, no not required packages used by this package should remain on the image. Signed-off-by: Claudius Heine --- .../images/files/debian-configscript.sh | 1 - .../images/files/raspbian-configscript.sh | 1 - meta/classes/isar-bootstrap-helper.bbclass | 32 ++++++++++++++++--- 3 files changed, 28 insertions(+), 6 deletions(-) diff --git a/meta-isar/recipes-core/images/files/debian-configscript.sh b/meta-isar/recipes-core/images/files/debian-configscript.sh index 7ca0562..9b3ff30 100755 --- a/meta-isar/recipes-core/images/files/debian-configscript.sh +++ b/meta-isar/recipes-core/images/files/debian-configscript.sh @@ -40,4 +40,3 @@ fi # Purge unused locale and installed packages' .deb files localepurge -apt-get clean diff --git a/meta-isar/recipes-core/images/files/raspbian-configscript.sh b/meta-isar/recipes-core/images/files/raspbian-configscript.sh index b240de9..448dea5 100644 --- a/meta-isar/recipes-core/images/files/raspbian-configscript.sh +++ b/meta-isar/recipes-core/images/files/raspbian-configscript.sh @@ -40,4 +40,3 @@ kernel=$KERNEL_IMAGE EOF localepurge -apt-get clean diff --git a/meta/classes/isar-bootstrap-helper.bbclass b/meta/classes/isar-bootstrap-helper.bbclass index 4284d02..d6b2a26 100644 --- a/meta/classes/isar-bootstrap-helper.bbclass +++ b/meta/classes/isar-bootstrap-helper.bbclass @@ -5,15 +5,24 @@ # # SPDX-License-Identifier: MIT +IMAGE_TRANSIENT_PACKAGES ??= "" + +def reverse_bb_array(d, varname): + array = d.getVar(varname, True) + if array is None: + return None + array = reversed(array.split()) + return " ".join(i for i in array) + setup_root_file_system() { ROOTFSDIR="$1" - CLEANHOSTLEAK="$2" + CLEAN="$2" shift shift PACKAGES="$@" APT_ARGS="install --yes --allow-unauthenticated \ -o Debug::pkgProblemResolver=yes" - CLEANHOSTLEAK_FILES="${ROOTFSDIR}/etc/hostname ${ROOTFSDIR}/etc/resolv.conf" + CLEAN_FILES="${ROOTFSDIR}/etc/hostname ${ROOTFSDIR}/etc/resolv.conf" sudo cp -Trpfx \ "${DEPLOY_DIR_IMAGE}/isar-bootstrap-${DISTRO}-${DISTRO_ARCH}/" \ @@ -41,8 +50,23 @@ setup_root_file_system() { -o Dir::Etc::sourceparts="-" \ -o APT::Get::List-Cleanup="0" sudo -E chroot "$ROOTFSDIR" \ - /usr/bin/apt-get ${APT_ARGS} --download-only $PACKAGES - [ "clean" = ${CLEANHOSTLEAK} ] && sudo rm -f ${CLEANHOSTLEAK_FILES} + /usr/bin/apt-get ${APT_ARGS} --download-only $PACKAGES \ + ${IMAGE_TRANSIENT_PACKAGES} + [ "clean" = ${CLEAN} ] && sudo rm -f ${CLEAN_FILES} sudo -E chroot "$ROOTFSDIR" \ /usr/bin/apt-get ${APT_ARGS} $PACKAGES + for pkg in ${IMAGE_TRANSIENT_PACKAGES}; do + sudo -E chroot "$ROOTFSDIR" \ + /usr/bin/apt-get ${APT_ARGS} $pkg + done + for pkg in ${@reverse_bb_array(d, "IMAGE_TRANSIENT_PACKAGES") or ""}; do + sudo -E chroot "$ROOTFSDIR" \ + /usr/bin/apt-get purge --yes $pkg + done + if [ "clean" = ${CLEAN} ]; then + sudo -E chroot "$ROOTFSDIR" \ + /usr/bin/apt-get autoremove --purge --yes + sudo -E chroot "$ROOTFSDIR" \ + /usr/bin/apt-get clean + fi } -- 2.17.0