From mboxrd@z Thu Jan 1 00:00:00 1970 X-GM-THRID: 6524973730788016128 X-Received: by 10.223.163.221 with SMTP id m29mr2404516wrb.20.1520495621452; Wed, 07 Mar 2018 23:53:41 -0800 (PST) X-BeenThere: isar-users@googlegroups.com Received: by 10.28.116.3 with SMTP id p3ls835049wmc.9.canary-gmail; Wed, 07 Mar 2018 23:53:40 -0800 (PST) X-Google-Smtp-Source: AG47ELuIbKhhrNDZ+e2f8HHoR+dqXclp5WeFfcw5m29PIYSOrWNBT7+Y2VArPc7ltvTWz0YbXaVr X-Received: by 10.28.144.17 with SMTP id s17mr842412wmd.29.1520495620840; Wed, 07 Mar 2018 23:53:40 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1520495620; cv=none; d=google.com; s=arc-20160816; b=BXOTexfJgb7qSn2CRO5CLzbImf17YFhshoBAmBeFNSPvocEjd6+zYbe3F3QVINOQW8 vmZrZqwUpSnFYczkvsJyneZ7RWs3TXp6b9pqT/BunPkSlj2DCa6gwAboY4Dk8/rD/tCb 4TVhpi/v8BTrTr2NUj/wuBrcdKxKNaIIjTGtvReZcOSVg78o7ZgPZu1oxVJH23fisGDy 6iHK8XJFT0I4UR/uLuQnGjZJ1tZx0X3dl83E2VqbOLTyjyM2WXrc9/TTDRpXOmuhKuTa my3uK4y0p+78L8VfxMpO3b8Ch+4C6drYduWUjfh2TU11d1pUJfttesz8lUpGhhLsdKds LfrQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=mime-version:references:in-reply-to:date:to:from:subject:message-id :arc-authentication-results; bh=d9SAcCvZfFfDHd07kvMOEOEF21MeGpZRfl8iwZNujBU=; b=qzVkLvRNWeTJCff1AtOw2u2GSBqRBpYmjhqeNXckfgUWUk2RLykGlXV10j5pu7eWrj xJD6Em2xABUvHMzHyW7EQAxEqLW6dOkEFR/NhPy8ypw2pN1zDExmV4rMXzBFs829oLr/ sEKP4OqYzFbPrUeuJLB3b/9tnrjMv4Pu6bzVJ1cqw1PQhwhFu7aehdC8Dgk9JmXOub1W ykICN1/jxvBGMAvns23PoL4jUR2k90VOus1XYZfpHbhIaDa0EkUdFJXV/j/Y85BWVj66 yqK5+Q7J7h1MkyNFkRG2Swg/3pS1P9GCLA8MuXHHtTUDhfaowPzknPokB0BmpBZVf9AY hDzQ== ARC-Authentication-Results: i=1; gmr-mx.google.com; spf=neutral (google.com: 212.18.0.10 is neither permitted nor denied by best guess record for domain of ch@denx.de) smtp.mailfrom=ch@denx.de Return-Path: Received: from mail-out.m-online.net (mail-out.m-online.net. [212.18.0.10]) by gmr-mx.google.com with ESMTPS id 51si1013367wrw.0.2018.03.07.23.53.40 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 07 Mar 2018 23:53:40 -0800 (PST) Received-SPF: neutral (google.com: 212.18.0.10 is neither permitted nor denied by best guess record for domain of ch@denx.de) client-ip=212.18.0.10; Authentication-Results: gmr-mx.google.com; spf=neutral (google.com: 212.18.0.10 is neither permitted nor denied by best guess record for domain of ch@denx.de) smtp.mailfrom=ch@denx.de Received: from frontend01.mail.m-online.net (unknown [192.168.8.182]) by mail-out.m-online.net (Postfix) with ESMTP id 3zxjSN4T9rz1qwHj; Thu, 8 Mar 2018 08:53:40 +0100 (CET) Received: from localhost (dynscan1.mnet-online.de [192.168.6.70]) by mail.m-online.net (Postfix) with ESMTP id 3zxjSN4DNHz1qwkv; Thu, 8 Mar 2018 08:53:40 +0100 (CET) X-Virus-Scanned: amavisd-new at mnet-online.de Received: from mail.mnet-online.de ([192.168.8.182]) by localhost (dynscan1.mail.m-online.net [192.168.6.70]) (amavisd-new, port 10024) with ESMTP id I6GSoFsFqqKU; Thu, 8 Mar 2018 08:53:37 +0100 (CET) X-Auth-Info: g3nh1wUR00Ior150BjGHF+VRSSeUUwuWO9vuqfJd278= Received: from Orrorin.Speedport_W723_V_Typ_A_1_01_009 (p578a821c.dip0.t-ipconnect.de [87.138.130.28]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.mnet-online.de (Postfix) with ESMTPSA; Thu, 8 Mar 2018 08:53:37 +0100 (CET) Message-ID: <1520495612.2473.186.camel@denx.de> Subject: Re: [PATCH v4 1/5] implement isar-bootstrap using debootstrap From: Claudius Heine To: claudius.heine.ext@siemens.com, isar-users@googlegroups.com Date: Thu, 08 Mar 2018 08:53:32 +0100 In-Reply-To: <20180307164457.31933-2-claudius.heine.ext@siemens.com> References: <20180307164457.31933-1-claudius.heine.ext@siemens.com> <20180307164457.31933-2-claudius.heine.ext@siemens.com> Content-Type: multipart/signed; micalg="pgp-sha512"; protocol="application/pgp-signature"; boundary="=-YD9uKxNdHJVUNPs9JCdf" X-Mailer: Evolution 3.26.5 Mime-Version: 1.0 X-TUID: hPq84sw0jg+3 --=-YD9uKxNdHJVUNPs9JCdf Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Hi, just reviewed it with a fresh mind. There are still some places where stuff can be optimized. But IMO that could also be done later. I might not have time to do it this month myself. Here are some of my points: On Wed, 2018-03-07 at 17:44 +0100, claudius.heine.ext@siemens.com wrote: > From: Claudius Heine >=20 > Since multistrap is deprecated for some years, it is required to > change > to debootstrap. >=20 > This patch introduces the 'isar-bootstrap' recipe that implement the > creation of a minimal base root file system using debootstrap. >=20 > Signed-off-by: Claudius Heine > --- > meta-isar/conf/distro/debian-jessie.conf | 15 +- > meta-isar/conf/distro/debian-jessie.list | 3 + > meta-isar/conf/distro/debian-stretch.conf | 11 +- > meta-isar/conf/distro/debian-stretch.list | 3 + > meta-isar/conf/distro/debian-wheezy.conf | 11 +- > meta-isar/conf/distro/debian-wheezy.list | 3 + > meta-isar/conf/distro/raspbian-jessie.conf | 10 +- > meta-isar/conf/distro/raspbian-jessie.list | 1 + > .../isar-bootstrap/files/isar-apt.conf | 2 + > meta/recipes-core/isar-bootstrap/isar-bootstrap.bb | 205 > +++++++++++++++++++++ > 10 files changed, 247 insertions(+), 17 deletions(-) > create mode 100644 meta-isar/conf/distro/debian-jessie.list > create mode 100644 meta-isar/conf/distro/debian-stretch.list > create mode 100644 meta-isar/conf/distro/debian-wheezy.list > create mode 100644 meta-isar/conf/distro/raspbian-jessie.list > create mode 100644 meta/recipes-core/isar-bootstrap/files/isar- > apt.conf > create mode 100644 meta/recipes-core/isar-bootstrap/isar- > bootstrap.bb >=20 > diff --git a/meta-isar/conf/distro/debian-jessie.conf b/meta- > isar/conf/distro/debian-jessie.conf > index 3e62b14..df27fd7 100644 > --- a/meta-isar/conf/distro/debian-jessie.conf > +++ b/meta-isar/conf/distro/debian-jessie.conf > @@ -1,16 +1,19 @@ > -# Debian jessie multistrap configuration > +# Debian jessie distribution configuration > # > # This software is a part of ISAR. > # Copyright (C) 2015-2016 ilbers GmbH > =20 > +DISTRO_APT_SOURCES +=3D "conf/distro/debian-jessie.list" > +DISTRO_CONFIG_SCRIPT ?=3D "debian-configscript.sh" > +DISTRO_KERNELS ?=3D "486 4kc-malta 586 5kc-malta 686-pae amd64 arm64 > armmp \ > + armmp-lpae ixp4xx kirkwood loongson-2e loongson-2f loongson-3 > octeon \ > + orion5x powerpc powerpc-smp powerpc64 powerpc64le r4k-ip22 r5k- > ip32 \ > + s390x sb1-bcm91250a versatile" > + > +# No longer needed: > DISTRO_SUITE ?=3D "jessie" > DISTRO_COMPONENTS ?=3D "main contrib non-free" > DISTRO_APT_SOURCE ?=3D "http://ftp.debian.org/debian" > DISTRO_APT_SOURCE_SEC ?=3D "http://security.debian.org/debian-security > " > -DISTRO_CONFIG_SCRIPT ?=3D "debian-configscript.sh" > DISTRO_MULTICONF_BOOTSTRAP ?=3D "base updates security" > DISTRO_MULTICONF_APTSOURCES ?=3D "${DISTRO_MULTICONF_BOOTSTRAP}" > -DISTRO_KERNELS ?=3D "486 4kc-malta 586 5kc-malta 686-pae amd64 arm64 > armmp \ > - armmp-lpae ixp4xx kirkwood loongson-2e loongson-2f loongson-3 > octeon \ > - orion5x powerpc powerpc-smp powerpc64 powerpc64le r4k-ip22 r5k- > ip32 \ > - s390x sb1-bcm91250a versatile" > diff --git a/meta-isar/conf/distro/debian-jessie.list b/meta- > isar/conf/distro/debian-jessie.list > new file mode 100644 > index 0000000..be46a57 > --- /dev/null > +++ b/meta-isar/conf/distro/debian-jessie.list > @@ -0,0 +1,3 @@ > +deb http://ftp.de.debian.org/debian class=3D"Apple-tab-span" > style=3D"white-space:pre"> jessie main contrib non-free > +deb http://ftp.de.debian.org/debian jessie-updates mai > n contrib non-free > +deb http://security.debian.org class=3D"Apple-tab-span" > style=3D"white-space:pre"> jessie/updates main contrib non-free > diff --git a/meta-isar/conf/distro/debian-stretch.conf b/meta- > isar/conf/distro/debian-stretch.conf > index 5a85d52..13c4f94 100644 > --- a/meta-isar/conf/distro/debian-stretch.conf > +++ b/meta-isar/conf/distro/debian-stretch.conf > @@ -1,13 +1,16 @@ > # This software is a part of ISAR. > # Copyright (C) 2017 ilbers GmbH > =20 > +DISTRO_APT_SOURCES +=3D "conf/distro/debian-stretch.list" > +DISTRO_CONFIG_SCRIPT ?=3D "debian-configscript.sh" > +DISTRO_KERNELS ?=3D "4kc-malta 586 5kc-malta 686 686-pae amd64 arm64 > armmp \ > + armmp-lpae kirkwood loongson-3 marvell octeon orion5x > powerpc64le \ > + rt-686-pae rt-amd64 s390x" > + > +# No longer needed: > DISTRO_SUITE ?=3D "stretch" > DISTRO_COMPONENTS ?=3D "main contrib non-free" > DISTRO_APT_SOURCE ?=3D "http://ftp.debian.org/debian" > DISTRO_APT_SOURCE_SEC ?=3D "http://security.debian.org/debian-security > " > -DISTRO_CONFIG_SCRIPT ?=3D "debian-configscript.sh" > DISTRO_MULTICONF_BOOTSTRAP ?=3D "base updates security" > DISTRO_MULTICONF_APTSOURCES ?=3D "${DISTRO_MULTICONF_BOOTSTRAP}" > -DISTRO_KERNELS ?=3D "4kc-malta 586 5kc-malta 686 686-pae amd64 arm64 > armmp \ > - armmp-lpae kirkwood loongson-3 marvell octeon orion5x > powerpc64le \ > - rt-686-pae rt-amd64 s390x" > diff --git a/meta-isar/conf/distro/debian-stretch.list b/meta- > isar/conf/distro/debian-stretch.list > new file mode 100644 > index 0000000..bfa5cf9 > --- /dev/null > +++ b/meta-isar/conf/distro/debian-stretch.list > @@ -0,0 +1,3 @@ > +deb http://ftp.de.debian.org/debian stretch main > contrib non-free > +deb http://ftp.de.debian.org/debian stretch-updates ma > in contrib non-free > +deb http://security.debian.org class=3D"Apple-tab-span" > style=3D"white-space:pre"> stretch/updates main contrib non-free > diff --git a/meta-isar/conf/distro/debian-wheezy.conf b/meta- > isar/conf/distro/debian-wheezy.conf > index f5ab6eb..2108f9b 100644 > --- a/meta-isar/conf/distro/debian-wheezy.conf > +++ b/meta-isar/conf/distro/debian-wheezy.conf > @@ -1,14 +1,17 @@ > -# Debian wheezy multistrap configuration > +# Debian wheezy distribution configuration > # > # This software is a part of ISAR. > # Copyright (C) 2015-2016 ilbers GmbH > =20 > +DISTRO_APT_SOURCES +=3D "conf/distro/debian-wheezy.list" > +DISTRO_CONFIG_SCRIPT ?=3D "debian-configscript.sh" > +DISTRO_KERNELS ?=3D "486 686-pae amd64 rt-686-pae rt-amd64 versatile > vexpress \ > + iop32x ixp4xx kirkwood mv78xx0 mx5 omap orion5x" > + > +# No longer needed: > DISTRO_SUITE ?=3D "wheezy" > DISTRO_COMPONENTS ?=3D "main contrib non-free" > DISTRO_APT_SOURCE ?=3D "http://ftp.debian.org/debian" > DISTRO_APT_SOURCE_SEC ?=3D "http://security.debian.org/debian-security > " > -DISTRO_CONFIG_SCRIPT ?=3D "debian-configscript.sh" > DISTRO_MULTICONF_BOOTSTRAP ?=3D "base updates security" > DISTRO_MULTICONF_APTSOURCES ?=3D "${DISTRO_MULTICONF_BOOTSTRAP}" > -DISTRO_KERNELS ?=3D "486 686-pae amd64 rt-686-pae rt-amd64 versatile > vexpress \ > - iop32x ixp4xx kirkwood mv78xx0 mx5 omap orion5x" > diff --git a/meta-isar/conf/distro/debian-wheezy.list b/meta- > isar/conf/distro/debian-wheezy.list > new file mode 100644 > index 0000000..0bfa98e > --- /dev/null > +++ b/meta-isar/conf/distro/debian-wheezy.list > @@ -0,0 +1,3 @@ > +deb http://ftp.de.debian.org/debian wheezy main > contrib non-free > +deb http://ftp.de.debian.org/debian wheezy-updates mai > n contrib non-free > +deb http://security.debian.org class=3D"Apple-tab-span" > style=3D"white-space:pre"> wheezy/updates main contrib non-free > diff --git a/meta-isar/conf/distro/raspbian-jessie.conf b/meta- > isar/conf/distro/raspbian-jessie.conf > index c2a867d..57d0e7d 100644 > --- a/meta-isar/conf/distro/raspbian-jessie.conf > +++ b/meta-isar/conf/distro/raspbian-jessie.conf > @@ -1,13 +1,17 @@ > -# Raspbian stable multistrap configuration > +# Raspbian stable distribution configuration > # > # This software is a part of ISAR. > # Copyright (C) 2015-2016 ilbers GmbH > =20 > +DISTRO_APT_SOURCES +=3D "conf/distro/raspbian-jessie.list" > +DISTRO_APT_KEYS +=3D "https://archive.raspbian.org/raspbian.public.key > ;sha256sum=3Dca59cd4f2bcbc3a1d41ba6815a02a8dc5c175467a59bd87edeac458f4a > 5345de" > +DISTRO_CONFIG_SCRIPT?=3D "raspbian-configscript.sh" > +DISTRO_KERNELS ?=3D "rpi rpi2 rpi-rpfv rpi2-rpfv" > + > +# No longer needed: > DISTRO_SUITE ?=3D "jessie" > DISTRO_COMPONENTS ?=3D "main contrib non-free firmware" > DISTRO_APT_SOURCE ?=3D "http://archive.raspbian.org/raspbian" > DISTRO_APT_SOURCE_SEC ?=3D "" > -DISTRO_CONFIG_SCRIPT ?=3D "raspbian-configscript.sh" > DISTRO_MULTICONF_BOOTSTRAP ?=3D "base" > DISTRO_MULTICONF_APTSOURCES ?=3D "${DISTRO_MULTICONF_BOOTSTRAP}" > -DISTRO_KERNELS ?=3D "rpi rpi2 rpi-rpfv rpi2-rpfv" > diff --git a/meta-isar/conf/distro/raspbian-jessie.list b/meta- > isar/conf/distro/raspbian-jessie.list > new file mode 100644 > index 0000000..792f9c6 > --- /dev/null > +++ b/meta-isar/conf/distro/raspbian-jessie.list > @@ -0,0 +1 @@ > +deb http://archive.raspbian.org/raspbian class=3D"Apple-tab- > span" style=3D"white-space:pre"> jessie main contrib non-free > firmware > diff --git a/meta/recipes-core/isar-bootstrap/files/isar-apt.conf > b/meta/recipes-core/isar-bootstrap/files/isar-apt.conf > new file mode 100644 > index 0000000..a62feb1 > --- /dev/null > +++ b/meta/recipes-core/isar-bootstrap/files/isar-apt.conf > @@ -0,0 +1,2 @@ > +APT::Install-Recommends "0"; > +APT::Install-Suggests "0"; > diff --git a/meta/recipes-core/isar-bootstrap/isar-bootstrap.bb > b/meta/recipes-core/isar-bootstrap/isar-bootstrap.bb > new file mode 100644 > index 0000000..2ddefa4 > --- /dev/null > +++ b/meta/recipes-core/isar-bootstrap/isar-bootstrap.bb > @@ -0,0 +1,205 @@ > +# Minimal debian root file system > +# > +# This software is a part of ISAR. > +# Copyright (c) Siemens AG, 2018 > +# > +# SPDX-License-Identifier: MIT > + > +Description =3D "Minimal debian root file system" > + > +LICENSE =3D "gpl-2.0" > +LIC_FILES_CHKSUM =3D > "file://${LAYERDIR_isar}/licenses/COPYING.GPLv2;md5=3D751419260aa954499 > f7abaabaa882bbe" > +FILESPATH_prepend :=3D "${THISDIR}/files:" > +SRC_URI =3D "file://isar-apt.conf" > +PV =3D "1.0" > + > +WORKDIR =3D "${TMPDIR}/work/${DISTRO}-${DISTRO_ARCH}/${PN}" > +DEBOOTSTRAP ?=3D "" > +ROOTFSDIR =3D "${WORKDIR}/rootfs" > +APTPREFS =3D "${WORKDIR}/apt-preferences" > +APTSRCS =3D "${WORKDIR}/apt-sources" > +APTKEYFILES =3D "" > +APTKEYRING =3D "${WORKDIR}/apt-keyring.gpg" > +DEBOOTSTRAP_KEYRING =3D "" > + > +python () { > + from urllib.parse import urlparse > + > + debootstrap =3D d.getVar("DEBOOTSTRAP", True) > + if not debootstrap: > + target =3D d.getVar("DISTRO_ARCH", True) > + machine =3D os.uname()[4] > + m =3D { > + "x86_64": ["i386", "amd64"], > + "x86": ["i386"], > + } > + if machine not in m or target not in m[machine]: > + debootstrap =3D "qemu-debootstrap" > + else: > + debootstrap =3D "debootstrap" > + d.setVar("DEBOOTSTRAP", debootstrap) > + > + distro_apt_keys =3D d.getVar("DISTRO_APT_KEYS", False) > + if distro_apt_keys: > + d.setVar("DEBOOTSTRAP_KEYRING", "--keyring ${APTKEYRING}") > + for key in distro_apt_keys.split(): > + url =3D urlparse(key) > + filename =3D os.path.basename(url.path) > + d.appendVar("SRC_URI", " %s" % key) > + d.appendVar("APTKEYFILES", " %s" % filename) > +} > + > +def aggregate_files(d, file_list, file_out): > + import shutil > + > + with open(file_out, "wb") as out_fd: > + for entry in file_list: > + entry_real =3D bb.parse.resolve_file(entry, d) > + with open(entry_real, "rb") as in_fd: > + shutil.copyfileobj(in_fd, out_fd, 1024*1024*10) > + out_fd.write("\n".encode()) > + > +def parse_aptsources_list_line(source_list_line): > + import re > + > + s =3D source_list_line.strip() > + > + if s.startswith("#"): if not s or s.startswith("#"): That way empty lines will be ignored as well. > + return None > + > + type, s =3D re.split("\s+", s, maxsplit=3D1) s.split(maxsplit=3D1) No need for regex. > + if type not in ["deb", "deb-src"]: > + return None > + > + options =3D "" > + options_match =3D > re.match("\[\s*(\S+=3D\S+(?=3D\s))*\s*(\S+=3D\S+)\s*\]\s+", s) Overly complicated regex. Something like this might be good enough: "\[[^\]]*]\s+" I written the complicated one first, because I wanted to extract all the individual options, but that is not really necessary now and maybe ever. > + if options_match: > + options =3D options_match.group(0).strip() > + s =3D s[options_match.end():] > + > + source, s =3D re.split("\s+", s, maxsplit=3D1) > + > + suite, s =3D re.split("\s+", s, maxsplit=3D1) Here re.split can be replaced with just split as well. > + > + components =3D " ".join(s.split()) > + > + return type, options, source, suite, components This whole function could also be simplified to just one regex. I originally tried that, but I wanted to extract the information completely as seen in the one real regex left. A regex like this could work: r"(?Pdeb|deb- src)\s+(?P\[[^\]]*]\s+)?(?P\S+)\s+(?P\S+)\s+(?P .*)" > + > +def get_distro_primary_source_entry(d): > + apt_sources_list =3D (d.getVar("DISTRO_APT_SOURCES", True) or > "").split() > + for entry in apt_sources_list: > + entry_real =3D bb.parse.resolve_file(entry, d) > + with open(entry_real, "r") as in_fd: > + for line in in_fd: > + parsed =3D parse_aptsources_list_line(line) > + if parsed: > + type, _, source, suite, components =3D parsed > + if type =3D=3D "deb": > + return source, suite, components > + return "", "", "" Maybe extract an iterator out of this function, and use this when generating the bootstrap.list file in do_apt_config_prepare as well. This way parse_aptsources_list_line or the interator itself could later be used to implement PREMIRRORS, similar to the PREMIRRORS in OE. Cheers, Claudius > + > +def get_distro_source(d): > + return get_distro_primary_source_entry(d)[0] > + > +def get_distro_suite(d): > + return get_distro_primary_source_entry(d)[1] > + > +def get_distro_components_argument(d): > + components =3D get_distro_primary_source_entry(d)[2] > + if components and components.strip(): > + return "--components=3D%s" % ",".join(components.split()) > + else: > + return "" > + > +do_generate_keyring[stamp-extra-info] =3D "${DISTRO}-${DISTRO_ARCH}" > +do_generate_keyring[dirs] =3D "${WORKDIR}" > +do_generate_keyring[vardeps] +=3D "DISTRO_APT_KEYS" > +do_generate_keyring() { > + if [ -n "${@d.getVar("APTKEYFILES", True) or ""}" ]; then > + for keyfile in ${@d.getVar("APTKEYFILES", True)}; do > + gpg --no-default-keyring --keyring "${APTKEYRING}" -- > import "$keyfile" > + done > + fi > +} > +addtask generate_keyring before do_build after do_unpack > + > +do_apt_config_prepare[stamp-extra-info] =3D "${DISTRO}-${DISTRO_ARCH}" > +do_apt_config_prepare[vardeps] +=3D "\ > + APTPREFS \ > + DISTRO_APT_PREFERENCES \ > + DEBDISTRONAME \ > + APTSRCS \ > + DISTRO_APT_SOURCES \ > + " > +python do_apt_config_prepare() { > + apt_preferences_out =3D d.getVar("APTPREFS", True) > + apt_preferences_list =3D (d.getVar("DISTRO_APT_PREFERENCES", True) > or "" > + ).split() > + aggregate_files(d, apt_preferences_list, apt_preferences_out) > + > + apt_sources_out =3D d.getVar("APTSRCS", True) > + apt_sources_list =3D (d.getVar("DISTRO_APT_SOURCES", True) or > "").split() > + > + aggregate_files(d, apt_sources_list, apt_sources_out) > +} > +addtask apt_config_prepare before do_build after do_generate_keyring > + > +do_bootstrap[stamp-extra-info] =3D "${DISTRO}-${DISTRO_ARCH}" > +do_bootstrap[vardeps] +=3D "DISTRO_APT_SOURCES" > +do_bootstrap() { > + if [ -e "${ROOTFSDIR}" ]; then > + sudo umount -l "${ROOTFSDIR}/dev" || true > + sudo umount -l "${ROOTFSDIR}/proc" || true > + sudo rm -rf "${ROOTFSDIR}" > + fi > + E=3D"${@bb.utils.export_proxies(d)}" > + sudo -E "${DEBOOTSTRAP}" --verbose \ > + --variant minbase \ > + --arch "${DISTRO_ARCH}" \ > + ${@get_distro_components_argument(d)} \ > + ${DEBOOTSTRAP_KEYRING} \ > + "${@get_distro_suite(d)}" \ > + "${ROOTFSDIR}" \ > + "${@get_distro_source(d)}" > +} > +addtask bootstrap before do_build after do_apt_config_prepare > + > +do_apt_config_install[stamp-extra-info] =3D "${DISTRO}-${DISTRO_ARCH}" > +do_apt_config_install() { > + sudo mkdir -p "${ROOTFSDIR}/etc/apt/preferences.d" > + sudo install -v -m644 "${APTPREFS}" \ > + "${ROOTFSDIR}/etc/apt/preferences.d/bootst > rap" > + sudo mkdir -p "${ROOTFSDIR}/etc/apt/sources.list.d" > + sudo install -v -m644 "${APTSRCS}" \ > + "${ROOTFSDIR}/etc/apt/sources.list.d/boots > trap.list" > + sudo rm -f "${ROOTFSDIR}/etc/apt/sources.list" > + sudo mkdir -p "${ROOTFSDIR}/etc/apt/apt.conf.d" > + sudo install -v -m644 "${WORKDIR}/isar-apt.conf" \ > + "${ROOTFSDIR}/etc/apt/apt.conf.d/50isar.co > nf" > +} > +addtask apt_config_install before do_build after do_bootstrap > + > +do_apt_update[stamp-extra-info] =3D "${DISTRO}-${DISTRO_ARCH}" > +do_apt_update() { > + sudo mount -t devtmpfs -o mode=3D0755,nosuid devtmpfs > ${ROOTFSDIR}/dev > + sudo mount -t proc none ${ROOTFSDIR}/proc > + > + E=3D"${@bb.utils.export_proxies(d)}" > + export DEBIAN_FRONTEND=3Dnoninteractive > + sudo -E chroot "${ROOTFSDIR}" /usr/bin/apt-get update -y > + sudo -E chroot "${ROOTFSDIR}" /usr/bin/apt-get dist-upgrade -y \ > + -o > Debug::pkgProblemResolver=3Dyes > +} > +addtask apt_update before do_build after do_apt_config_install > + > +do_deploy[stamp-extra-info] =3D "${DISTRO}-${DISTRO_ARCH}" > +do_deploy[dirs] =3D "${DEPLOY_DIR_IMAGE}" > +do_deploy() { > + ln -Tfsr "${ROOTFSDIR}" "${DEPLOY_DIR_IMAGE}/${PN}-${DISTRO}- > ${DISTRO_ARCH}" > +} > +addtask deploy before do_build after do_apt_update > + > +CLEANFUNCS =3D "clean_deploy" > +clean_deploy() { > + rm -f "${DEPLOY_DIR_IMAGE}/${PN}-${DISTRO}-${DISTRO_ARCH}" > +} --=20 DENX Software Engineering GmbH, Managing Director: Wolfgang Denk HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany Phone: (+49)-8142-66989-54 Fax: (+49)-8142-66989-80 Email: ch@denx.de PGP key: 6FF2 E59F 00C6 BC28 31D8 64C1 1173 CB19 9808 B153 Keyserver: hkp://pool.sks-keyservers.net --=-YD9uKxNdHJVUNPs9JCdf Content-Type: application/pgp-signature; name="signature.asc" Content-Description: This is a digitally signed message part Content-Transfer-Encoding: 7bit -----BEGIN PGP SIGNATURE----- iQIzBAABCgAdFiEEb/LlnwDGvCgx2GTBEXPLGZgIsVMFAlqg6/wACgkQEXPLGZgI sVPYzw//UFQJRWpgG48B8QaYutfBwxqzp5a8tlaxH9O1M6JniX5BaOBmlNEw20d/ ut079W11nu1bUMYH2Fxntyi9qHyqb4rjU466wAtgsSc7Gvhs0+OnKV1xhpz++8dA p496I3q5O6xuJiV7ByAH9b+bGfaWXFz3dkeWEEKi8B7W5sDR1tAwOckiFksaXt0R lplgu2Myy5qPsl3KuH9YLprf37jficIX+0dB6fJbL3BIh9wpsfyuNE4pPrN3XAws zCG0vlcTDh71Am6wx5qI/AXJrzv0Q2/S5VVyiYWjw1IM71r82fchmO241MzWaF8H 8v1R0pDbJKL3wwlPHcDD4YDy9BEkUm3vGVwnCFfKFOuwzZEVhJz9ABoafdd4F3/s /X6AE6wzXHMpqvfptJKuFstMYoLm+ZJcRaKlx7gFy1DYjs4UmYyJFX86A1ZPC1WH lx1X6v9wy/MnFZ88a67QGiHzOCTNnq6NyAYHrOkfQE5TYauW30+n5TJYA6xeKGXk cJ7WRJ0rRVNADgDaDdxiHU/xkLjk9B1+LPbjnTGxNkltRozNY/vdprr5AO3DJL/V MHcDM6aIMKQoMZvwyFET/gPKSDPbxQRaeh1HSxFXLHyq/1uv4qgkJHV1yylTQRP8 cYvTqZED3V5UayXQCKsd+wUE209pXgLjOrAZROrAaLJSNLhNIUI= =cCfm -----END PGP SIGNATURE----- --=-YD9uKxNdHJVUNPs9JCdf--