From mboxrd@z Thu Jan 1 00:00:00 1970 X-GM-THRID: 6509751388101148672 X-Received: by 10.25.28.72 with SMTP id c69mr205635lfc.18.1515685654160; Thu, 11 Jan 2018 07:47:34 -0800 (PST) X-BeenThere: isar-users@googlegroups.com Received: by 10.25.143.193 with SMTP id s62ls308359lfk.3.gmail; Thu, 11 Jan 2018 07:47:33 -0800 (PST) X-Google-Smtp-Source: ACJfBouP7xtfkc12iT3V/hHldKma8v+JxrM/5ScfgreHO16XEgBpT2pYP+Xd/n3Y4T21ZRwcVG3H X-Received: by 10.46.60.2 with SMTP id j2mr1599888lja.40.1515685653486; Thu, 11 Jan 2018 07:47:33 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1515685653; cv=none; d=google.com; s=arc-20160816; b=F9H2LVmmgAn5UHZKH/FLzVYmfXQc6sxGoPIAiEYNeV9xQvGRSdmOmlo+PC+Z3KmjPw BaDAIDFs644nKDyD4shHbFqgbaafaYqSHhuXCZHPoahd6kT4PbwLF/C6zgzgzid9V2bL VNAy76y+hUOmoAhh7epuk9dk9Bx8WaAccbn6Bl9I+dMAqJLRqu2I2UWfHK7fi3Spzh8l xICexBtkEOULNQQeNc+3tPOFTJBjJI7bw8pPbHmwZ38bixaxLqKUv5CVMGusnfVf1Jum zl6xvic1mruy4tLrDDdA1xBnyXZvqTIRil4+H7XhjovhMkJlgU0VJaP4sfzi8d8jDqtG 4Kkw== 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:from:references:to:subject :arc-authentication-results; bh=SyShZnd2SUqqyiIvtHAvcjzMdmal7yFq2ujO1zqgMG4=; b=VanToBUHwtPc8/5RmQA/nsfDciq/LlHduLIrOEcjpeqWdFMS7k4jhlelWIMxDSvebi 5OU0tYjTUtIdKJQ5oode99D8aeBIpNnxwSrlSvsCMYJ0rWTVu01uJCJuAIIvnPxfvadp BXu2I4QC/w27fzAJ4h/ErROpCCJhOhEkV+ghZgdiTzE+ZMbE2VGOFToEyx3EBiuMh2oC kmRYaPOzE6HwsNL3rH0m6kIGG1yCFu61DpSIvqyRHBumY9vrPcvj9EIIUWP/5Cp+zY0U tj9R0V/1IeTUGCZjqfehntF2u/5spJV6Kg0iNvEH8Wmgh+CberI+YMada20hDX8J96mG IJNw== ARC-Authentication-Results: i=1; gmr-mx.google.com; spf=pass (google.com: domain of jan.kiszka@siemens.com designates 192.35.17.28 as permitted sender) smtp.mailfrom=jan.kiszka@siemens.com Return-Path: Received: from goliath.siemens.de (goliath.siemens.de. [192.35.17.28]) by gmr-mx.google.com with ESMTPS id y16si2303177lje.2.2018.01.11.07.47.33 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 11 Jan 2018 07:47:33 -0800 (PST) Received-SPF: pass (google.com: domain of jan.kiszka@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 jan.kiszka@siemens.com designates 192.35.17.28 as permitted sender) smtp.mailfrom=jan.kiszka@siemens.com Received: from mail2.siemens.de (mail2.siemens.de [139.25.208.11]) by goliath.siemens.de (8.15.2/8.15.2) with ESMTPS id w0BFlWTh024065 (version=TLSv1.2 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Thu, 11 Jan 2018 16:47:32 +0100 Received: from md1f2u6c.ww002.siemens.net (md1q0hnc.ad001.siemens.net [139.25.68.37] (may be forged)) by mail2.siemens.de (8.15.2/8.15.2) with ESMTP id w0BFlWei022523; Thu, 11 Jan 2018 16:47:32 +0100 Subject: Re: [RFC v2][PATCH 2/3] build-rep: Add helper class To: Alexander Smirnov , isar-users@googlegroups.com References: <20180111111939.25667-1-asmirnov@ilbers.de> <20180111111939.25667-3-asmirnov@ilbers.de> From: Jan Kiszka Message-ID: Date: Thu, 11 Jan 2018 16:47:32 +0100 User-Agent: Mozilla/5.0 (X11; U; Linux i686 (x86_64); de; rv:1.8.1.12) Gecko/20080226 SUSE/2.0.0.12-1.1 Thunderbird/2.0.0.12 Mnenhy/0.7.5.666 MIME-Version: 1.0 In-Reply-To: <20180111111939.25667-3-asmirnov@ilbers.de> Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 7bit X-TUID: FCfLIsKfEKpV On 2018-01-11 12:19, Alexander Smirnov wrote: > Add class that helps to implement build reproducibility. It implements > anonymous function that will get all the Debian dependencies that are > needed for current Isar tree. > > Until build reproducibility will be fully implemented, it's disabled by > default. To enable it just set ISAR_BUILD_REP to "1" in local.conf. "ISAR_REPRODUCIBLE_BUILD" - "REP" could mean anything. Still feels like this should rather default to "on", so maybe call it "ISAR_NON_REPRODUCIBLE_BUILD". Jan > > Signed-off-by: Alexander Smirnov > --- > meta-isar/conf/local.conf.sample | 6 +++++ > meta-isar/recipes-app/hello/hello.bb | 2 ++ > meta/classes/build-rep.bbclass | 32 ++++++++++++++++++++++++ > meta/classes/dpkg-base.bbclass | 2 ++ > meta/classes/image.bbclass | 2 ++ > meta/recipes-devtools/buildchroot/buildchroot.bb | 2 ++ > 6 files changed, 46 insertions(+) > create mode 100644 meta/classes/build-rep.bbclass > > diff --git a/meta-isar/conf/local.conf.sample b/meta-isar/conf/local.conf.sample > index 660958f..45b8995 100644 > --- a/meta-isar/conf/local.conf.sample > +++ b/meta-isar/conf/local.conf.sample > @@ -162,3 +162,9 @@ BB_NUMBER_THREADS = "4" > # > # Number of attempts to try to get reprepro lock for access to apt cache > REPREPRO_LOCK_ATTEMPTS = "16" > + > +# Isar build reproducibility feature creates local repository which contains > +# copies for all the upstream Debian packages that could be used to build > +# your Isar tree. So fetching them once will guarantee that all the next Isar > +# builds will be identically. > +ISAR_BUILD_REP ?= "0" > diff --git a/meta-isar/recipes-app/hello/hello.bb b/meta-isar/recipes-app/hello/hello.bb > index 44b8bc3..fafda2e 100644 > --- a/meta-isar/recipes-app/hello/hello.bb > +++ b/meta-isar/recipes-app/hello/hello.bb > @@ -16,3 +16,5 @@ SRCREV = "ad7065ecc4840cc436bfcdac427386dbba4ea719" > SRC_DIR = "git" > > inherit dpkg > + > +DEBIAN_DEPENDS = "debhelper (>= 9), autotools-dev" > diff --git a/meta/classes/build-rep.bbclass b/meta/classes/build-rep.bbclass > new file mode 100644 > index 0000000..ede5a93 > --- /dev/null > +++ b/meta/classes/build-rep.bbclass > @@ -0,0 +1,32 @@ > +# This software is a part of ISAR. > +# Copyright (C) 2017 Siemens AG > + > +python __anonymous() { > + rep = d.getVar('ISAR_BUILD_REP', True) or "0" > + if rep == "0": > + return > + > + depsdir = d.getVar('BASE_APT_DIR', True) > + if depsdir is None: > + return > + > + depsdir += '/deps/' > + > + pn = d.getVar('PN', True) > + > + if not os.path.exists(depsdir): > + os.makedirs(depsdir, exist_ok=True) > + > + if d.getVar('DEBIAN_DEPENDS', True): > + with open(depsdir + '/' + pn + '.depends', 'w') as the_file: > + the_file.write(d.getVar('DEBIAN_DEPENDS', True)) > + the_file.close > + elif d.getVar('BUILDCHROOT_PREINSTALL', True): > + with open(depsdir + '/' + pn + '.preinst', 'w') as the_file: > + the_file.write(d.getVar('BUILDCHROOT_PREINSTALL', True)) > + the_file.close > + elif d.getVar('IMAGE_PREINSTALL', True): > + with open(depsdir + '/' + pn + '.preinst', 'w') as the_file: > + the_file.write(d.getVar('IMAGE_PREINSTALL', True)) > + the_file.close > +} > diff --git a/meta/classes/dpkg-base.bbclass b/meta/classes/dpkg-base.bbclass > index 4d220da..bf66e78 100644 > --- a/meta/classes/dpkg-base.bbclass > +++ b/meta/classes/dpkg-base.bbclass > @@ -3,6 +3,8 @@ > > DEBIAN_DEPENDS ?= "" > > +inherit build-rep > + > # Add dependency from buildchroot creation > do_build[depends] = "buildchroot:do_build" > > diff --git a/meta/classes/image.bbclass b/meta/classes/image.bbclass > index e2cb01b..67f5af8 100644 > --- a/meta/classes/image.bbclass > +++ b/meta/classes/image.bbclass > @@ -5,6 +5,8 @@ IMAGE_INSTALL ?= "" > IMAGE_TYPE ?= "ext4-img" > IMAGE_ROOTFS = "${WORKDIR}/rootfs" > > +inherit build-rep > + > def get_image_name(d, name_link): > S = d.getVar("IMAGE_ROOTFS", True) > path_link = os.path.join(S, name_link) > diff --git a/meta/recipes-devtools/buildchroot/buildchroot.bb b/meta/recipes-devtools/buildchroot/buildchroot.bb > index 51f9d5d..da18231 100644 > --- a/meta/recipes-devtools/buildchroot/buildchroot.bb > +++ b/meta/recipes-devtools/buildchroot/buildchroot.bb > @@ -16,6 +16,8 @@ SRC_URI = "file://multistrap.conf.in \ > file://build.sh" > PV = "1.0" > > +inherit build-rep > + > BUILDCHROOT_PREINSTALL ?= "gcc \ > make \ > build-essential \ > -- Siemens AG, Corporate Technology, CT RDA IOT SES-DE Corporate Competence Center Embedded Linux