From mboxrd@z Thu Jan 1 00:00:00 1970 X-GM-THRID: 6572151760657317888 X-Received: by 2002:a5d:484a:: with SMTP id n10-v6mr1802620wrs.26.1530522940624; Mon, 02 Jul 2018 02:15:40 -0700 (PDT) X-BeenThere: isar-users@googlegroups.com Received: by 2002:a1c:9ecf:: with SMTP id h198-v6ls1659846wme.6.gmail; Mon, 02 Jul 2018 02:15:40 -0700 (PDT) X-Google-Smtp-Source: AAOMgpf00XZ1IG6WMvUhjYtfbiInGk02XtywarBPqcCnXWU71LkdQNxawsOaFRm7S84vEaB79bv3 X-Received: by 2002:a1c:8202:: with SMTP id e2-v6mr1008315wmd.10.1530522940192; Mon, 02 Jul 2018 02:15:40 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1530522940; cv=none; d=google.com; s=arc-20160816; b=LUt1A746vbpcbMPE4xxAt979aR2EH6E6hKMiyVaTG7kwzyXeUuFEMxG6qOLQ9KObJi k9Y+PZcraM7DarAWI1XbdRIJnjkoTPNCxz3XeynKyoZiWjkOT7eZBzGnHrY9X0Q+oQ3J c0GTnrxx2N8hUcrLSD/oyFPh/G4NJlToc5Fm1U80qfM+oNFx/ibwpkiu1jyRHRnTPhyJ YGThnXZyMF3hCxIQwC1OmXb/VF5Nxy/5QfxMWYJr0uu3BbDaVf8ZwmDN+4bh61/Bu+wG pWcxmTKBADA0MnZSOmsaA1bpKPV1Gfpgp2v5NlmFnSSeKr6wNnI2gq5j7GnqGRsUQNHx N0QA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:content-language:in-reply-to:mime-version :user-agent:date:message-id:organization:from:references:to:subject :arc-authentication-results; bh=sQtzxD+w9l/n3gahEgH5CZjArHAe6C1qjHKO1DtpJ6Q=; b=ZThaXYPxd/KK3EkQrvdP7XytlGi3zG9acUg2tRxRMuNiaWvLY0EdIg1PyUQXhPlvgS SN+sT5oVkQVtAfyMA/5lKh/mcZZPrryHRTBP57/28uET51fwu5cUPoVTxyOa8cPRoKrs GtVvs62iIT7B0bSGqhvdUmA/E2tIhAI0urOyi9APrn520ZjvO9Xrn6+W3mbNXPAllMnk 6p0HVrdB3f4akFf6nvW6hAFYIP0XjMfBv6h2lDL0jMR3fo1/m0aV7nM/ICP3JY8UcVQl dIgGkB1YaYmEQ+eRdUZtW/eJV8teqyIhXZbmS9Y4/Ml9wZ5xgeR1N1ZOuYsewKpYaEUr folw== ARC-Authentication-Results: i=1; gmr-mx.google.com; spf=pass (google.com: best guess record for domain of mosipov@ilbers.de designates 85.214.62.211 as permitted sender) smtp.mailfrom=mosipov@ilbers.de Return-Path: Received: from aqmola.ilbers.de (aqmola.ilbers.de. [85.214.62.211]) by gmr-mx.google.com with ESMTPS id v124-v6si229929wma.2.2018.07.02.02.15.40 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 02 Jul 2018 02:15:40 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of mosipov@ilbers.de designates 85.214.62.211 as permitted sender) client-ip=85.214.62.211; Authentication-Results: gmr-mx.google.com; spf=pass (google.com: best guess record for domain of mosipov@ilbers.de designates 85.214.62.211 as permitted sender) smtp.mailfrom=mosipov@ilbers.de Received: from [192.168.0.2] (client179-66.infolink.ru [93.123.179.66] (may be forged)) (authenticated bits=0) by aqmola.ilbers.de (8.14.4/8.14.4/Debian-4+deb7u1) with ESMTP id w629Fbvh004983 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES128-SHA bits=128 verify=NOT); Mon, 2 Jul 2018 11:15:38 +0200 Subject: Re: [PATCH] meta/image: leave BUILD_ID and VARIANT in /etc/os-release To: Henning Schild , isar-users@googlegroups.com References: <20180628150521.15790-1-henning.schild@siemens.com> From: "Maxim Yu. Osipov" Organization: ilbers GmbH Message-ID: <4cb847ca-f5ce-6765-602e-9d5263746a3f@ilbers.de> Date: Mon, 2 Jul 2018 12:15:31 +0300 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.8.0 MIME-Version: 1.0 In-Reply-To: <20180628150521.15790-1-henning.schild@siemens.com> Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: 7bit X-TUID: Ryy+10N0NDn4 On 06/28/2018 06:05 PM, Henning Schild wrote: > 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 Applied to the 'next', Thanks, Maxim. > 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="" > -- Maxim Osipov ilbers GmbH Maria-Merian-Str. 8 85521 Ottobrunn Germany +49 (151) 6517 6917 mosipov@ilbers.de http://ilbers.de/ Commercial register Munich, HRB 214197 General Manager: Baurzhan Ismagulov