From mboxrd@z Thu Jan 1 00:00:00 1970 X-GM-THRID: 6989231260094693376 X-Received: by 2002:adf:9084:: with SMTP id i4mr19547636wri.23.1627307215048; Mon, 26 Jul 2021 06:46:55 -0700 (PDT) X-BeenThere: isar-users@googlegroups.com Received: by 2002:a5d:4c50:: with SMTP id n16ls1499120wrt.2.gmail; Mon, 26 Jul 2021 06:46:54 -0700 (PDT) X-Google-Smtp-Source: ABdhPJw7bZaqE133DSbyOeS6o+SOIZz27rWiv6iASLlW1fFBkEULivW7paa8/ipBQrz50xrEYINw X-Received: by 2002:adf:eec9:: with SMTP id a9mr11572081wrp.157.1627307214121; Mon, 26 Jul 2021 06:46:54 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1627307214; cv=none; d=google.com; s=arc-20160816; b=1CQ9txCXsD/CM5V2qgQuNMnDA/L0oZmym/3NVliH5krja94FvcEINBpdvFWuLTGwCw Hro/e73iCoMpmvE31dwSf7dVCAMJrptD/05BzUGMxIZMxhCm6Z+W3Epxs/FqPro0OMFh ZWO33qx8IaW47s8jOmHZ8/GINRLMGdmSvIfiDbb+QNpKKcrvWc4JGOtXQz337e9jDcjj nWcLZZtAYVRyGv0pcSsnH9EdgA0SFx/sx+PnrrbHm6O+K3p+ZbD1YaxV+ghFOnMZ7qsE ZxXrkSSJ5knfCjsgmZHAYPdCy2DPGgdJt9z4f7BlbTJXtH9nfDwbrHes/+KmNC4N7tvm kdeA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from; bh=hADYq9g4OdkqQCIYyk5O6aI1GTVmxdQnduY0z2aabWg=; b=NaUFUEvUbp8G/TpgyTxBb5jAYA6rR5zmHKNaguMjlimepi/QUQ9GOJSkSghbMc9iEZ TsW4a1A3FJW6aSaO4GlGD59OB8DQwCqHr6rbl9ZfEOdlmP8aEDP95O1RJ2LZBtFD1U+l TqaJk34WIOFcvs12eVMhPo1rusarpC1bp5cnvOXBx7MuV00xsrATnkkH/CELnQ/uIETC gplTGUlxCPfHRN8FmNixF0ki3z6N4d8YsUhPNeqxtOkRdo4wNu812KExPX0HuCMbxBct yleU3LpDbkWzXVuDlOkr/3LVSzcPsXrcfG8BzJA56UkzcoLqx7gwDj2+q9pNSSRZLyH4 9eIw== ARC-Authentication-Results: i=1; gmr-mx.google.com; spf=pass (google.com: domain of amikan@ilbers.de designates 85.214.156.166 as permitted sender) smtp.mailfrom=amikan@ilbers.de Return-Path: Received: from shymkent.ilbers.de (shymkent.ilbers.de. [85.214.156.166]) by gmr-mx.google.com with ESMTPS id c26si2881wml.0.2021.07.26.06.46.53 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Mon, 26 Jul 2021 06:46:54 -0700 (PDT) Received-SPF: pass (google.com: domain of amikan@ilbers.de designates 85.214.156.166 as permitted sender) client-ip=85.214.156.166; Authentication-Results: gmr-mx.google.com; spf=pass (google.com: domain of amikan@ilbers.de designates 85.214.156.166 as permitted sender) smtp.mailfrom=amikan@ilbers.de Received: from localhost.localdomain (mm-198-62-214-37.mgts.dynamic.pppoe.byfly.by [37.214.62.198] (may be forged)) (authenticated bits=0) by shymkent.ilbers.de (8.15.2/8.15.2/Debian-8) with ESMTPSA id 16QDknut019679 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 26 Jul 2021 15:46:53 +0200 From: Anton Mikanovich To: isar-users@googlegroups.com Cc: Anton Mikanovich Subject: [RFC 03/15] isar-bootstrap: Export bootstrap to schroot config Date: Mon, 26 Jul 2021 16:46:24 +0300 Message-Id: <20210726134636.30800-4-amikan@ilbers.de> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210726134636.30800-1-amikan@ilbers.de> References: <20210726134636.30800-1-amikan@ilbers.de> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-1.0 required=5.0 tests=ALL_TRUSTED autolearn=unavailable autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on shymkent.ilbers.de X-TUID: e0M4m+m1wBEQ To use isar-bootstrap with sbuild and schroot tools we need to export the path to schroot config. We also need to put isar-apt and downloads into fstab for sbuild profile to have it mounted inside schroot. Signed-off-by: Anton Mikanovich --- meta/classes/sbuild.bbclass | 17 ++++++ .../isar-bootstrap/isar-bootstrap.inc | 54 ++++++++++++++++++- 2 files changed, 69 insertions(+), 2 deletions(-) create mode 100644 meta/classes/sbuild.bbclass diff --git a/meta/classes/sbuild.bbclass b/meta/classes/sbuild.bbclass new file mode 100644 index 0000000..ed2d0cf --- /dev/null +++ b/meta/classes/sbuild.bbclass @@ -0,0 +1,17 @@ +# This software is a part of ISAR. +# Copyright (C) 2021 ilbers GmbH + +SCHROOT_CONF ?= "/etc/schroot" + +python __anonymous() { + mode = d.getVar('ISAR_CROSS_COMPILE', True) + distro_arch = d.getVar('DISTRO_ARCH') + if mode == "0" or d.getVar('HOST_ARCH') == distro_arch or \ + (d.getVar('HOST_DISTRO') == "debian-stretch" and distro_arch == "i386"): + d.setVar('SBUILD_HOST_ARCH', distro_arch) + else: + d.setVar('SBUILD_HOST_ARCH', d.getVar('HOST_ARCH')) +} + +SBUILD_CHROOT ?= "${DEBDISTRONAME}-${@os.getlogin()}-${DISTRO}-${SBUILD_HOST_ARCH}" +SBUILD_CHROOT_RW ?= "${DEBDISTRONAME}-${@os.getlogin()}-${DISTRO}-${SBUILD_HOST_ARCH}-rw" diff --git a/meta/recipes-core/isar-bootstrap/isar-bootstrap.inc b/meta/recipes-core/isar-bootstrap/isar-bootstrap.inc index 0edefc5..b4f352b 100644 --- a/meta/recipes-core/isar-bootstrap/isar-bootstrap.inc +++ b/meta/recipes-core/isar-bootstrap/isar-bootstrap.inc @@ -23,11 +23,12 @@ APTSRCS_INIT = "${WORKDIR}/apt-sources-init" DISTRO_BOOTSTRAP_KEYFILES = "" THIRD_PARTY_APT_KEYFILES = "" DEPLOY_ISAR_BOOTSTRAP ?= "" -DISTRO_BOOTSTRAP_BASE_PACKAGES = "locales" +DISTRO_BOOTSTRAP_BASE_PACKAGES = "locales,fakeroot,build-essential,debhelper" DISTRO_BOOTSTRAP_BASE_PACKAGES_append_gnupg = ",gnupg" DISTRO_BOOTSTRAP_BASE_PACKAGES_append_https-support = "${@https_support(d)}" inherit deb-dl-dir +inherit sbuild python () { distro_bootstrap_keys = (d.getVar("DISTRO_BOOTSTRAP_KEYS") or "").split() @@ -254,8 +255,9 @@ isar_bootstrap() { if [ "${ISAR_USE_CACHED_BASE_REPO}" = "1" -a -z "${BASE_REPO_KEY}" ]; then debootstrap_args="$debootstrap_args --no-check-gpg" fi + user_name=$(id -un) E="${@ isar_export_proxies(d)}" - export IS_HOST debootstrap_args E + export IS_HOST debootstrap_args E user_name if [ ! -e "${DEPLOY_ISAR_BOOTSTRAP}" ]; then sudo rm -rf --one-file-system "${ROOTFSDIR}" if [ "${IS_HOST}" ];then @@ -266,6 +268,7 @@ isar_bootstrap() { sudo -E -s <<'EOSUDO' set -e + BOOTSTRAP_ARCH=${HOST_ARCH} if [ ${IS_HOST} ]; then ${DEBOOTSTRAP} $debootstrap_args \ ${@get_distro_components_argument(d, True)} \ @@ -281,6 +284,53 @@ isar_bootstrap() { "${ROOTFSDIR}" \ "${@get_distro_source(d, False)}" \ ${DISTRO_DEBOOTSTRAP_SCRIPT} + BOOTSTRAP_ARCH=${DISTRO_ARCH} + fi + + cat << EOF > "${SCHROOT_CONF}/chroot.d/${DEBDISTRONAME}-${user_name}-${DISTRO}-${BOOTSTRAP_ARCH}" +[${DEBDISTRONAME}-${user_name}-${DISTRO}-${BOOTSTRAP_ARCH}] +type=directory +directory=${ROOTFSDIR} +profile=${DEBDISTRONAME}-${user_name} +users=${user_name} +groups=root,sbuild +root-users=${user_name} +root-groups=root,sbuild +source-root-users=${user_name} +source-root-groups=root,sbuild +union-type=overlay +preserve-environment=true + +[${DEBDISTRONAME}-${user_name}-${DISTRO}-${BOOTSTRAP_ARCH}-rw] +type=directory +directory=${ROOTFSDIR} +profile=${DEBDISTRONAME}-${user_name} +users=${user_name} +groups=root,sbuild +root-users=${user_name} +root-groups=root,sbuild +preserve-environment=true +EOF + + mkdir -p '${ROOTFSDIR}/etc/apt/preferences.d' + cat << EOF > '${ROOTFSDIR}/etc/apt/preferences.d/isar-apt' +Package: * +Pin: release n=${DEBDISTRONAME} +Pin-Priority: 1000 +EOF + + # Prepare mount points + if [ ! -d "${SCHROOT_CONF}/${DEBDISTRONAME}-${user_name}" ]; then + cp -r "${SCHROOT_CONF}/sbuild" "${SCHROOT_CONF}/${DEBDISTRONAME}-${user_name}" + fi + sbuild_fstab="${SCHROOT_CONF}/${DEBDISTRONAME}-${user_name}/fstab" + + fstab_isarapt="${DEPLOY_DIR}/isar-apt /isar-apt none rw,bind 0 0" + grep -qxF "${fstab_isarapt}" ${sbuild_fstab} || echo "${fstab_isarapt}" >> ${sbuild_fstab} + + if [ -d ${DL_DIR} ]; then + fstab_downloads="${DL_DIR} /downloads none rw,bind 0 0" + grep -qxF "${fstab_downloads}" ${sbuild_fstab} || echo "${fstab_downloads}" >> ${sbuild_fstab} fi # Install apt config -- 2.25.1