From mboxrd@z Thu Jan 1 00:00:00 1970 X-GM-THRID: 6506467811408216064 X-Received: by 10.28.208.71 with SMTP id h68mr4086164wmg.6.1514905090362; Tue, 02 Jan 2018 06:58:10 -0800 (PST) X-BeenThere: isar-users@googlegroups.com Received: by 10.28.11.74 with SMTP id 71ls1504345wml.1.canary-gmail; Tue, 02 Jan 2018 06:58:09 -0800 (PST) X-Google-Smtp-Source: ACJfBosrqEY0NiocjLEbbbBy+pXbgG/IENka7w8QE7SXX3vMMuuFtA7RlEWcs2srm2IuCMWONo+p X-Received: by 10.28.20.11 with SMTP id 11mr4343680wmu.29.1514905089713; Tue, 02 Jan 2018 06:58:09 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1514905089; cv=none; d=google.com; s=arc-20160816; b=sfiipUVZzkUdbKlQLf/CUQiWty6tfiBlOQITggb4ansSfgBIvZ4L6NpA3+zw6R3oiN UyvBBIl0aZgRpsdiJq05tleT2dx9PgSAbCcvMqSitrDuoBMGZoy4xvu0OOPhaEEWcdZc 0uasiO5RHbi70Q8GRh5dmlVwZoyHLHWEoyR/mpSOi9aPZqtsBmDgYjzfDIn/PtIaFZmM y8TU6pieD3CXcMey7fG9r10ylXaVvL+Dv+nGl51VkVYBp7daA3j3jRraINYvoVnH4LNS 2mvf0ae48A9ZXqgLM2/3toQ1DUJZ8bNi8dOT+9IQZTvJgVcYkNV83ndXifZG7Rpas0as ZSaA== 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=mFijzmDQAH0CbNuLD8MSETE3c+AeX6mtzEW78axnvlA=; b=xNddnmfOrC1Y1jR9Sd+I6lZjJcJD92G/NmYILjRTb9C07iyLsz5uyK5pVPuRSUjanr AsJYvHIBZeQHfXf61yUSCnWWX+gKw2RKt8ZNOIMgjUGRlyjRtcdRFFP1KmknIuvpWJwv KHrH9EJDRJbyBN2RvCCb7YVD+o66T2vYwpP66A7mu2LO+M5MXQ+MeN/J88gZtFGn08WN RaGIkSQktI5M/fQPUal99ZjKVJx2Gwa9z0onWJ/4oUCpcgoetufncEk/EUdoNsuXCqmk 6bkAAA7aYknBxl99raE6IwCSTFbm+DavQ6xfISb+y12+ON5ulIy8r0Hh8MY8ZpGhf3fb cT0w== ARC-Authentication-Results: i=1; gmr-mx.google.com; spf=pass (google.com: best guess record for domain of asmirnov@ilbers.de designates 85.214.62.211 as permitted sender) smtp.mailfrom=asmirnov@ilbers.de Return-Path: Received: from aqmola.ilbers.de (aqmola.ilbers.de. [85.214.62.211]) by gmr-mx.google.com with ESMTPS id h76si503710wmd.1.2018.01.02.06.58.09 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 02 Jan 2018 06:58:09 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of asmirnov@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 asmirnov@ilbers.de designates 85.214.62.211 as permitted sender) smtp.mailfrom=asmirnov@ilbers.de Received: from localhost.localdomain ([188.227.110.165]) (authenticated bits=0) by aqmola.ilbers.de (8.14.4/8.14.4/Debian-4+deb7u1) with ESMTP id w02Evpwh016822 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 2 Jan 2018 15:57:59 +0100 From: Alexander Smirnov To: isar-users@googlegroups.com Cc: Alexander Smirnov Subject: [RFC][PATCH 2/6] base-apt: Add to pipeline Date: Tue, 2 Jan 2018 17:57:40 +0300 Message-Id: <20180102145744.21814-3-asmirnov@ilbers.de> X-Mailer: git-send-email 2.9.5 In-Reply-To: <20180102145744.21814-1-asmirnov@ilbers.de> References: <20180102145744.21814-1-asmirnov@ilbers.de> X-TUID: uLeSfqdB1QoX Add 'base-apt' recipe to build pipeline. Signed-off-by: Alexander Smirnov --- meta-isar/conf/local.conf.sample | 5 +++++ meta/classes/dpkg-base.bbclass | 14 ++++++++++++++ meta/classes/image.bbclass | 13 ++++++++++++- meta/recipes-devtools/base-apt/base-apt.bb | 5 ++++- meta/recipes-devtools/buildchroot/buildchroot.bb | 12 ++++++++++++ 5 files changed, 47 insertions(+), 2 deletions(-) diff --git a/meta-isar/conf/local.conf.sample b/meta-isar/conf/local.conf.sample index 660958f..2da803b 100644 --- a/meta-isar/conf/local.conf.sample +++ b/meta-isar/conf/local.conf.sample @@ -162,3 +162,8 @@ BB_NUMBER_THREADS = "4" # # Number of attempts to try to get reprepro lock for access to apt cache REPREPRO_LOCK_ATTEMPTS = "16" + +# +# List of images, wich dependencies will be pre-fetched and put in base-apt. +# This will guarantee image building reproducibility. +BASE_APT_IMAGES ?= "isar-image-base isar-image-debug" diff --git a/meta/classes/dpkg-base.bbclass b/meta/classes/dpkg-base.bbclass index ad58f0b..c61f9a6 100644 --- a/meta/classes/dpkg-base.bbclass +++ b/meta/classes/dpkg-base.bbclass @@ -8,6 +8,20 @@ do_build[depends] = "buildchroot:do_build" # recipe name as identifier PP = "/home/builder/${PN}" +do_get_deps[stamp-extra-info] = "${DISTRO}-${DISTRO_ARCH}" + +S = "${WORKDIR}/${SRC_DIR}" + +do_get_deps() { + if [ -e ${S}/debian/control ]; then + mkdir -p ${BASE_APT_DIR}/deps + DEPS=$(perl -ne 'next if /^#/; $p=(s/^Build-Depends:\s*/ / or (/^ / and $p)); s/,|\n|\([^)]+\)|\[[^]]+\]//mg; print if $p' < ${S}/debian/control) + echo $DEPS > ${BASE_APT_DIR}/deps/${PN} + fi +} + +addtask get_deps after do_unpack before do_build + BUILDROOT = "${BUILDCHROOT_DIR}/${PP}" do_build[stamp-extra-info] = "${DISTRO}-${DISTRO_ARCH}" diff --git a/meta/classes/image.bbclass b/meta/classes/image.bbclass index e2cb01b..457a525 100644 --- a/meta/classes/image.bbclass +++ b/meta/classes/image.bbclass @@ -66,6 +66,17 @@ do_cache_config() { addtask cache_config before do_populate +IMAGE_PREINSTALL ?= "" +do_get_deps[stamp-extra-info] = "${DISTRO}-${MACHINE}" + +do_get_deps() { + mkdir -p ${BASE_APT_DIR}/deps + echo ${IMAGE_PREINSTALL} > ${BASE_APT_DIR}/deps/${PN} +} + +addtask get_deps before do_build after do_unpack +do_get_deps[deptask] = "do_get_deps" + do_populate[stamp-extra-info] = "${DISTRO}-${MACHINE}" # Populate Isar apt repository by newly built packages @@ -79,7 +90,7 @@ do_populate() { fi } -addtask populate before do_build after do_unpack +addtask populate before do_build after do_get_deps do_populate[deptask] = "do_deploy_deb" do_rootfs[stamp-extra-info] = "${MACHINE}-${DISTRO}" diff --git a/meta/recipes-devtools/base-apt/base-apt.bb b/meta/recipes-devtools/base-apt/base-apt.bb index b292d89..108d501 100644 --- a/meta/recipes-devtools/base-apt/base-apt.bb +++ b/meta/recipes-devtools/base-apt/base-apt.bb @@ -13,7 +13,10 @@ SRC_URI = "file://distributions.in \ file://multistrap.conf.in \ " -BASE_PREINSTALL ?= "" +DEPENDS = "${BASE_APT_IMAGES} buildchroot" +do_get_base_apt[deptask] = "do_get_deps" + +BASE_PREINSTALL ?= "apt" WORKDIR = "${TMPDIR}/work/${DISTRO}-${DISTRO_ARCH}/${PN}" diff --git a/meta/recipes-devtools/buildchroot/buildchroot.bb b/meta/recipes-devtools/buildchroot/buildchroot.bb index 59ad0e0..098f5c7 100644 --- a/meta/recipes-devtools/buildchroot/buildchroot.bb +++ b/meta/recipes-devtools/buildchroot/buildchroot.bb @@ -29,8 +29,20 @@ BUILDCHROOT_PREINSTALL ?= "gcc \ WORKDIR = "${TMPDIR}/work/${DISTRO}-${DISTRO_ARCH}/${PN}" +do_get_deps[stamp-extra-info] = "${DISTRO}-${MACHINE}" + +do_get_deps() { + mkdir -p ${BASE_APT_DIR}/deps + echo ${BUILDCHROOT_PREINSTALL} > ${BASE_APT_DIR}/deps/${PN} +} + +addtask get_deps before do_build after do_unpack +do_get_deps[deptask] = "do_get_deps" + + do_build[stamp-extra-info] = "${DISTRO}-${DISTRO_ARCH}" do_build[dirs] = "${WORKDIR}/hooks_multistrap" +do_build[depends] = "base-apt:do_get_base_apt" do_build() { E="${@ bb.utils.export_proxies(d)}" -- 2.1.4