From mboxrd@z Thu Jan 1 00:00:00 1970 X-GM-THRID: 6572151760657317888 X-Received: by 2002:a1c:f405:: with SMTP id z5-v6mr1512205wma.1.1530603570581; Tue, 03 Jul 2018 00:39:30 -0700 (PDT) X-BeenThere: isar-users@googlegroups.com Received: by 2002:a1c:7301:: with SMTP id d1-v6ls2179122wmb.8.gmail; Tue, 03 Jul 2018 00:39:30 -0700 (PDT) X-Google-Smtp-Source: AAOMgpf2JzAhuMxUwPkfI3AAp4V7EzWx/dTWnRRmVV7YS3ExqM75vyDzdvGFstmVYORD3kpMOrAW X-Received: by 2002:a1c:7e8c:: with SMTP id z134-v6mr1352785wmc.3.1530603570197; Tue, 03 Jul 2018 00:39:30 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1530603570; cv=none; d=google.com; s=arc-20160816; b=jA4ObsLyV54PCceSampEMK2hj64hzs6LVef+eIa328lREGyKqKnirtLqc6UIsEMGeJ FhXMvmLunbUi96VaYHi9iN4Jb1vbuSEVQGkVDHeIUWs9H9pwMeH7poO4GZxFyYQsr7tJ LuIF/WV09quWzNKK7DQ8rgymso4lfoA0lYWphjbn9tqvzvZ5riza/U6jsyE5G4QAxmJ2 qzOhtRL+yOmq/q5FeXwo7zQrKZBhbQHex2cFEbV8+ePpZXbYavHMuCaB3mo6Kknh9U1y FrHkymWVPsm0//KN8h+D+dMqXLqxAcotF2I6nURa10JCzAqmp7E7MxB2e4L3xvA5RrQj fAhw== 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=UxAtWojb9VbRFqvVeL4slSjhad4EPDoCzr5hpy7B5tc=; b=dic6wcKYaB0gH9pCOShU5O/YUVTWu2+STXEFO8vTLfE4OdJN5j3v3UVJJfEUDlhE9e TGmOwaHw49ApFkNQqn2Z2jBdOuKtNqAtVOHqhtotuaXzFhB852GT8SzKEaN358kiiVFb SG9LE4SFGHZkUwwJj2z+K6ivPMMQNa/xZVM76l/YWQ30g/kkkExEUo9TIsVAJ4CEnw3u d/R5BO0D3DgXBreNehTpsf6gDSNYe+O5dEeIDRd1OgtUF1CkzHUsaWdNOTYRm6Vd0X9V jmquZ3jE/nZJBP3TrRz0ifOzykewH2orUYISQJJfPBMMG333stPwBdJkThwpeEaO4wX+ NT/A== ARC-Authentication-Results: i=1; gmr-mx.google.com; spf=pass (google.com: domain of henning.schild@siemens.com designates 192.35.17.2 as permitted sender) smtp.mailfrom=henning.schild@siemens.com Return-Path: Received: from thoth.sbs.de (thoth.sbs.de. [192.35.17.2]) by gmr-mx.google.com with ESMTPS id d18-v6si18093wrj.3.2018.07.03.00.39.30 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 03 Jul 2018 00:39:30 -0700 (PDT) Received-SPF: pass (google.com: domain of henning.schild@siemens.com designates 192.35.17.2 as permitted sender) client-ip=192.35.17.2; Authentication-Results: gmr-mx.google.com; spf=pass (google.com: domain of henning.schild@siemens.com designates 192.35.17.2 as permitted sender) smtp.mailfrom=henning.schild@siemens.com Received: from mail2.siemens.de (mail2.siemens.de [139.25.208.11]) by thoth.sbs.de (8.15.2/8.15.2) with ESMTPS id w637dThO012355 (version=TLSv1.2 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 3 Jul 2018 09:39:29 +0200 Received: from md1pvb1c.ad001.siemens.net (md1pvb1c.ad001.siemens.net [139.25.68.40]) by mail2.siemens.de (8.15.2/8.15.2) with ESMTP id w637dTVE021149; Tue, 3 Jul 2018 09:39:29 +0200 From: Henning Schild To: isar-users@googlegroups.com Cc: "Maxim Yu . Osipov" , Jan Kiszka , Henning Schild Subject: [PATCH] meta/image: allow customization of command we use fo BUILD_ID Date: Tue, 3 Jul 2018 09:39:28 +0200 Message-Id: <20180703073928.25857-1-henning.schild@siemens.com> X-Mailer: git-send-email 2.16.4 In-Reply-To: <4cb847ca-f5ce-6765-602e-9d5263746a3f@ilbers.de> References: <4cb847ca-f5ce-6765-602e-9d5263746a3f@ilbers.de> X-TUID: OdlgN+Tn8SBe One of the previous patches introduced the feature to leave some build system information in the rootfs. The git command to derive that information was kept pretty repository agnostic. This patch makes the command Isar-specific and allows users to customize the command to their needs if they use a different tagging scheme in their repository, or if they do not use git at all. Signed-off-by: Henning Schild --- meta-isar/recipes-core/images/isar-image-base.bb | 3 ++- meta/classes/image.bbclass | 27 ++++++++++++------------ 2 files changed, 16 insertions(+), 14 deletions(-) diff --git a/meta-isar/recipes-core/images/isar-image-base.bb b/meta-isar/recipes-core/images/isar-image-base.bb index c72bfdb..a24aa3e 100644 --- a/meta-isar/recipes-core/images/isar-image-base.bb +++ b/meta-isar/recipes-core/images/isar-image-base.bb @@ -24,7 +24,8 @@ IMAGE_TRANSIENT_PACKAGES += "isar-cfg-localepurge" WORKDIR = "${TMPDIR}/work/${DISTRO}-${DISTRO_ARCH}/${PN}" -ISAR_GIT_RELEASE_PATH ?= "${LAYERDIR_isar}" +ISAR_RELEASE_CMD_DEFAULT = "git -C ${LAYERDIR_isar} describe --tags --dirty --match 'v[0-9].[0-9]*'" +ISAR_RELEASE_CMD ?= "${ISAR_RELEASE_CMD_DEFAULT}" do_rootfs[root_cleandirs] = "${IMAGE_ROOTFS} \ ${IMAGE_ROOTFS}/isar-apt" diff --git a/meta/classes/image.bbclass b/meta/classes/image.bbclass index 7935b69..077c550 100644 --- a/meta/classes/image.bbclass +++ b/meta/classes/image.bbclass @@ -34,24 +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 +# here we call a command that should describe your whole build system, +# this could be "git describe" or something similar. +# set ISAR_RELEASE_CMD to customize, or override do_mark_rootfs to do something +# completely different 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))): + (d.getVar("ISAR_RELEASE_CMD", True) == + d.getVar("ISAR_RELEASE_CMD_DEFAULT", 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) + ' in the build_id. Consider changing ISAR_RELEASE_CMD.') + cmd = d.getVar("ISAR_RELEASE_CMD", True) + try: + v = subprocess.check_output(cmd, shell=True, universal_newlines=True) return v.rstrip() - return "" + except subprocess.CalledProcessError as e: + bb.warn('\"%s\" returned %d, returning empty build_id' % + (e.cmd, e.returncode)) + return "" python set_image_size () { rootfs_size = get_rootfs_size(d) -- 2.16.4