From mboxrd@z Thu Jan 1 00:00:00 1970 X-GM-THRID: 6572151760657317888 X-Received: by 2002:a1c:b813:: with SMTP id i19-v6mr1085267wmf.22.1530198600500; Thu, 28 Jun 2018 08:10:00 -0700 (PDT) X-BeenThere: isar-users@googlegroups.com Received: by 2002:a1c:ed14:: with SMTP id l20-v6ls2183765wmh.3.gmail; Thu, 28 Jun 2018 08:10:00 -0700 (PDT) X-Google-Smtp-Source: AAOMgpcwsgLFXJO2OuBd3hSipUZSYEtD3MvVy/JET0BCAE/13XHki2R0JFeYoVD0UshmOwsRV6nq X-Received: by 2002:a1c:f510:: with SMTP id t16-v6mr978342wmh.6.1530198600039; Thu, 28 Jun 2018 08:10:00 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1530198599; cv=none; d=google.com; s=arc-20160816; b=NljnYHgDL84FHO7OQCdXaQvrxO18O67b8AmC8aKSFZLFRznED+E20cH0J86/ABdRA4 +b+i0G+1lBg3gwzdP/6M/MX2Y9RAnhZQsB6oq9Tkk0ZgctAMzLo5RwXEc44NeDOk79ua d5IH5KuuN7f/FaSGMeDgbfu7GcJIBrke7NTPp5Jo1CUTAVjjp48qzFdCCqPF7a7BXRdN qiMekb+OWCJkn9LuTvZW/TPGLvPpuCKHzGMMk8WiPUFiqRND86laMKSpLmb6m1gBiF+5 TAcodjnU799cpym3+xXthsvfQ96bAGRCwtViVpAjHla+tCn3qMf6Nec8B0athj6oGAWP ckZQ== 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:subject:to:from:date:arc-authentication-results; bh=Cd+JxkFSGJbcimdcPKQKMPtb9zakyMw4MP11tk8/d1k=; b=v4Jc7sa8YCuwLEtX8WB0evR7ct8vf4+hPcApagM+a0Mtepz6wCpw7P/nBGypNoRFUp j7Twvhyh9qXaBFKqqpf++Ddgx8RaHpXElvBEbn0MGPCC25rygbURmX6p5DTE3NiiCm8p 3Dr9cqneXwAWp6mr5S4zC6lflgF/ehGNYIcCebB+f6h/1bHOL1v/jG2zMhKQt1YJ2gh+ TSqfN49nzv4VzvpWNS5MfwJUm4eh7T3nF7hL9sNeHNd0mDb8eLKceSyuX+NV28qiMwVc qc6sOIDYazzoYYg3kOD6RUxJE9alp3bn7FN0n1RXkZMPGKLT1tgBL0LzeTbhprOMLVYj eY5A== ARC-Authentication-Results: i=1; gmr-mx.google.com; spf=pass (google.com: domain of henning.schild@siemens.com designates 192.35.17.14 as permitted sender) smtp.mailfrom=henning.schild@siemens.com Return-Path: Received: from david.siemens.de (david.siemens.de. [192.35.17.14]) by gmr-mx.google.com with ESMTPS id v25-v6si27720wmh.2.2018.06.28.08.09.59 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 28 Jun 2018 08:09:59 -0700 (PDT) Received-SPF: pass (google.com: domain of henning.schild@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 henning.schild@siemens.com designates 192.35.17.14 as permitted sender) smtp.mailfrom=henning.schild@siemens.com Received: from mail1.siemens.de (mail1.siemens.de [139.23.33.14]) by david.siemens.de (8.15.2/8.15.2) with ESMTPS id w5SF9xXx014909 (version=TLSv1.2 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Thu, 28 Jun 2018 17:09:59 +0200 Received: from md1pvb1c.ad001.siemens.net (md1pvb1c.ad001.siemens.net [139.25.68.40]) by mail1.siemens.de (8.15.2/8.15.2) with ESMTP id w5SF9xYI030369 for ; Thu, 28 Jun 2018 17:09:59 +0200 Date: Thu, 28 Jun 2018 17:09:58 +0200 From: Henning Schild To: Subject: Re: [PATCH] meta/image: leave BUILD_ID and VARIANT in /etc/os-release Message-ID: <20180628170958.2e009d98@md1pvb1c.ad001.siemens.net> In-Reply-To: <20180628150521.15790-1-henning.schild@siemens.com> References: <20180628150521.15790-1-henning.schild@siemens.com> X-Mailer: Claws Mail 3.15.0-dirty (GTK+ 2.24.31; x86_64-pc-linux-gnu) MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit X-TUID: 2+bDDeHuIBue Am Thu, 28 Jun 2018 17:05:21 +0200 schrieb Henning Schild : > This commit adds support for leaving a mark in the resulting image. > That should allow you to tell what code you used to create it. By > default "git describe" will be used on Isar itself to come up with a > BUILD_ID. And the DESCRIPTION of the image will become the VARIANT. > > see > https://www.freedesktop.org/software/systemd/man/os-release.html > > Signed-off-by: Henning Schild > --- > meta-isar/recipes-core/images/isar-image-base.bb | 2 ++ > meta/classes/image.bbclass | 27 > ++++++++++++++++++++++++ > meta/classes/isar-bootstrap-helper.bbclass | 26 > +++++++++++++++++++++++ 3 files changed, 55 insertions(+) > > diff --git a/meta-isar/recipes-core/images/isar-image-base.bb > b/meta-isar/recipes-core/images/isar-image-base.bb index > 6cdc6b2..c72bfdb 100644 --- > a/meta-isar/recipes-core/images/isar-image-base.bb +++ > b/meta-isar/recipes-core/images/isar-image-base.bb @@ -24,6 +24,8 @@ > IMAGE_TRANSIENT_PACKAGES += "isar-cfg-localepurge" > WORKDIR = "${TMPDIR}/work/${DISTRO}-${DISTRO_ARCH}/${PN}" > > +ISAR_GIT_RELEASE_PATH ?= "${LAYERDIR_isar}" > + > do_rootfs[root_cleandirs] = "${IMAGE_ROOTFS} \ > ${IMAGE_ROOTFS}/isar-apt" > > diff --git a/meta/classes/image.bbclass b/meta/classes/image.bbclass > index 3bdcb2f..00040e5 100644 > --- a/meta/classes/image.bbclass > +++ b/meta/classes/image.bbclass > @@ -34,6 +34,25 @@ def get_rootfs_size(d): > > return base_size + rootfs_extra * 1024 > > +# we assume that one git commit can describe the whole image, so you > should be +# using submodules, kas, or something like that > +# set ISAR_GIT_RELEASE_PATH to that one "most significant" layer > +# when not using git, override do_mark_rootfs > +def get_build_id(d): > + import subprocess > + if (len(d.getVar("BBLAYERS", True).strip().split(' ')) != 2 and > + (d.getVar("ISAR_GIT_RELEASE_PATH", True) == > + d.getVar("LAYERDIR_isar", True))): > + bb.warn('You are using external layers that will not be > considered' + > + ' in the build_id. Considder setting > ISAR_GIT_RELEASE_PATH.') > + base = ["git", "-C", d.getVar("ISAR_GIT_RELEASE_PATH", True)] > + if (0 == subprocess.call(base + ["rev-parse"])): > + v = subprocess.check_output(base + > + ["describe", "--long", "--dirty", > + "--always"], Here i am not sure what arguments to use. That also depends on the tagging of the project. We might want to make this configurable, since the "most significant" layer might use different tagging. Opinions? In that regard i realized that the tags on Isar are not consistent. v0.3 seems to be the last annotated one. Henning > universal_newlines=True) > + return v.rstrip() > + return "" > + > python set_image_size () { > rootfs_size = get_rootfs_size(d) > d.setVar('ROOTFS_SIZE', str(rootfs_size)) > @@ -56,6 +75,14 @@ do_rootfs() { > addtask rootfs before do_build after do_unpack > do_rootfs[deptask] = "do_deploy_deb" > > +do_mark_rootfs() { > + update_etc_os_release \ > + --build-id "${@get_build_id(d)}" --variant "${DESCRIPTION}" \ > + "${IMAGE_ROOTFS}" > +} > + > +addtask mark_rootfs before do_copy_boot_files after do_rootfs > + > do_copy_boot_files() { > KERNEL_IMAGE=${@get_image_name(d, 'vmlinuz')[1]} > if [ -n "${KERNEL_IMAGE}" ]; then > diff --git a/meta/classes/isar-bootstrap-helper.bbclass > b/meta/classes/isar-bootstrap-helper.bbclass index 3c10fc7..f375853 > 100644 --- a/meta/classes/isar-bootstrap-helper.bbclass > +++ b/meta/classes/isar-bootstrap-helper.bbclass > @@ -14,6 +14,32 @@ def reverse_bb_array(d, varname): > array = reversed(array.split()) > return " ".join(i for i in array) > > +update_etc_os_release() { > + OS_RELEASE_BUILD_ID="" > + OS_RELEASE_VARIANT="" > + while true; do > + case "$1" in > + --build-id) OS_RELEASE_BUILD_ID=$2; shift ;; > + --variant) OS_RELEASE_VARIANT=$2; shift ;; > + -*) bbfatal "$0: invalid option specified: $1" ;; > + *) break ;; > + esac > + shift > + done > + ROOTFSDIR="$1" > + > + if [ -n "${OS_RELEASE_BUILD_ID}" ]; then > + sudo sed -i '/^BUILD_ID=.*/d' ${ROOTFSDIR}/etc/os-release > + echo "BUILD_ID=\"${OS_RELEASE_BUILD_ID}\"" | \ > + sudo tee -a ${ROOTFSDIR}/etc/os-release > + fi > + if [ -n "${OS_RELEASE_VARIANT}" ]; then > + sudo sed -i '/^VARIANT=.*/d' ${ROOTFSDIR}/etc/os-release > + echo "VARIANT=\"${OS_RELEASE_VARIANT}\"" | \ > + sudo tee -a ${ROOTFSDIR}/etc/os-release > + fi > +} > + > setup_root_file_system() { > CLEAN="" > FSTAB=""