From mboxrd@z Thu Jan 1 00:00:00 1970 X-GM-THRID: 6572151760657317888 X-Received: by 2002:adf:e348:: with SMTP id n8-v6mr494729wrj.29.1530198324702; Thu, 28 Jun 2018 08:05:24 -0700 (PDT) X-BeenThere: isar-users@googlegroups.com Received: by 2002:a1c:a6d4:: with SMTP id p203-v6ls2247813wme.0.gmail; Thu, 28 Jun 2018 08:05:24 -0700 (PDT) X-Google-Smtp-Source: AAOMgpdjDwWXv+/rwhkSyFzSdlB1f16DXmcZ7/i1CQkznweROkHszFeZ5nYT4RxAmiKkLvmJ+tMN X-Received: by 2002:a1c:cc0e:: with SMTP id h14-v6mr1089443wmb.4.1530198324260; Thu, 28 Jun 2018 08:05:24 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1530198324; cv=none; d=google.com; s=arc-20160816; b=NDxxdER68oVou6qVvVJzNbzubbgyvAzCgbYI/dAOukZt1v1xtDANgUvunEQeACgYjj hb0k4jtFSA7QS0zjOFclmqEOUdZOgRbNyxFjbdgynbj0fcWrFVvWloatNHM3N7VaNF/S mR2BBAPd+KCISqvRSZ3uw4AlXj9dyzc+gZC4sWfdZrqXHYSYvINW3Qqi4VgYmJUA54OA tnfp3p7CjJjzEGwXe7bFEOjvqlN3xRzlswCUPl7TXXzSbEOcweA3eJBpv8jPHGwjGzbU u3CzMfOj7QTwa7WcKfsCn8l2B78n0Rg6NKhX8RP5zk3W4mrGBD45hlBsIeKZTuNdv+kW 2Hjw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=message-id:date:subject:cc:to:from:arc-authentication-results; bh=wVeds0hXyO5qWfcPlEcSrTXN5D33J24WXljrGQOvL60=; b=qyrC5s92Pik4v/dGBU6CYJEq2HiaQRoFYmKNlLyYrmfITTK1OKi2fG2WOJGstsOc6f XcsyawXT95UQVu7HBksK1227Md8qda+/zH6IFCZkhpT65Jg9mfLg4/w05aX0ROcFQq9C s/f11PodNWaQwsSdmnC1M1bsgherMzPQtznDNaM9sG4kKTDa2x4eIUpW3VWyY3NsAHFp oiQX1J9woM06XeNP6Mkppi7E8i7lwH0bw7o5eXd1m2AhuL2Y3jCDQFK1FEqGKBUURv3Q WISCZ3USTn6+KqtVI+OpUUf60dqEfQwlzD3xnPNvRXHkBJW/Mmt9MirwGy1WTQI/UQAR XMDg== ARC-Authentication-Results: i=1; gmr-mx.google.com; spf=pass (google.com: domain of henning.schild@siemens.com designates 192.35.17.28 as permitted sender) smtp.mailfrom=henning.schild@siemens.com Return-Path: Received: from goliath.siemens.de (goliath.siemens.de. [192.35.17.28]) by gmr-mx.google.com with ESMTPS id d18-v6si124982wrq.4.2018.06.28.08.05.24 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 28 Jun 2018 08:05:24 -0700 (PDT) Received-SPF: pass (google.com: domain of henning.schild@siemens.com designates 192.35.17.28 as permitted sender) client-ip=192.35.17.28; Authentication-Results: gmr-mx.google.com; spf=pass (google.com: domain of henning.schild@siemens.com designates 192.35.17.28 as permitted sender) smtp.mailfrom=henning.schild@siemens.com Received: from mail3.siemens.de (mail3.siemens.de [139.25.208.14]) by goliath.siemens.de (8.15.2/8.15.2) with ESMTPS id w5SF5NWt018007 (version=TLSv1.2 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Thu, 28 Jun 2018 17:05:23 +0200 Received: from md1pvb1c.ad001.siemens.net (md1pvb1c.ad001.siemens.net [139.25.68.40]) by mail3.siemens.de (8.15.2/8.15.2) with ESMTP id w5SF5NoL010742; Thu, 28 Jun 2018 17:05:23 +0200 From: Henning Schild To: isar-users@googlegroups.com Cc: Henning Schild Subject: [PATCH] meta/image: leave BUILD_ID and VARIANT in /etc/os-release Date: Thu, 28 Jun 2018 17:05:21 +0200 Message-Id: <20180628150521.15790-1-henning.schild@siemens.com> X-Mailer: git-send-email 2.16.4 X-TUID: EVCaCqQmOaWj 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"], 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="" -- 2.16.4