From mboxrd@z Thu Jan 1 00:00:00 1970 X-GM-THRID: 7097485294514995200 X-Received: by 2002:a05:6512:398d:b0:473:a597:540a with SMTP id j13-20020a056512398d00b00473a597540amr5965360lfu.64.1652512073634; Sat, 14 May 2022 00:07:53 -0700 (PDT) X-BeenThere: isar-users@googlegroups.com Received: by 2002:a05:6512:b1c:b0:472:38f0:bc75 with SMTP id w28-20020a0565120b1c00b0047238f0bc75ls6035547lfu.0.gmail; Sat, 14 May 2022 00:07:52 -0700 (PDT) X-Google-Smtp-Source: ABdhPJz4jryYR+Ik1Ib0HYWVK1rEzPmWW1vDel818URJLYDV7nq90cjnwFXiAVPm9CyqmzhwJuUD X-Received: by 2002:a05:6512:3191:b0:473:dffc:1899 with SMTP id i17-20020a056512319100b00473dffc1899mr5943181lfe.459.1652512072589; Sat, 14 May 2022 00:07:52 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1652512072; cv=none; d=google.com; s=arc-20160816; b=nR0icjhNgcNvNKc72N/pVQD1ZqayIxBB8KYGEi2PB31XOJnyh5KolGRIS8aDV7TJ2X nxtlPqS6vP+fCHL6ffsR4Gdz4xB3nsMdtp2A6wocd1YkLkPxOFSBS+LaUucmZ6xGK16y ifFUfkxAfl3CRpRtO+xxRmWMy93677+iFnJozp4A9XHTn6jkR4Lu2RCguHdaA3ZocZzy PI9P8yAep3Aoo4zhAqCxwEb9phDF/Lqo97r1F8f7wDjSXcMylj39sPMew6Ca1z8m8TqR omp+0qcRhuBTEwsMznQpyYOOub0Y31fHEf0qmoDuyjczhYqCnE02iZdQeEjA7FYXiNoH U1HQ== 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; bh=iXTpLFlk84ONOrTwfiPk91Z9nqa9UCJzcOsBXjwJXqA=; b=CCj7kOYi8Ars53Nl5nSRtLODBgCMVGC2urR/JCX5ZH48fMDDmnu9fHJF7Fe65qaCSh j7zC4u8n+lX4nM3nl30VzUr4RxjKJ1uQFJ9wK1A77DCd8yBfec5ALxH2hU+7MjouocGV r/Nv8W5/3nEzEBNRMCFNzGZYQNi9ZFltNoJjNVwbB0/ZPlYIdzUwp8eKpEwxRHimsQBQ vQuqE1Mc/ysn/lo13C2qmjGEglURx7y9rMWHKBfWQbtVGSk5h7pXJq/dZo1dvDyfK9/o 9/wlVJQNh2iYwJBriZElRKl44mjJ/buvKARkWR9ZE0H/EsO8y6crOs6yNwjuteMfI8hT gOuw== 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 b22-20020a2ebc16000000b0024c7f087105si196272ljf.8.2022.05.14.00.07.52 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Sat, 14 May 2022 00:07:52 -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-235-31-214-37.mgts.dynamic.pppoe.byfly.by [37.214.31.235] (may be forged)) (authenticated bits=0) by shymkent.ilbers.de (8.15.2/8.15.2/Debian-8) with ESMTPSA id 24E77k0A025368 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Sat, 14 May 2022 09:07:51 +0200 From: Anton Mikanovich To: isar-users@googlegroups.com Cc: adriaan.schmidt@siemens.com, Anton Mikanovich Subject: [PATCH 4/6] imager: Move image types to schroot Date: Sat, 14 May 2022 10:07:34 +0300 Message-Id: <20220514070736.12997-5-amikan@ilbers.de> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20220514070736.12997-1-amikan@ilbers.de> References: <20220514070736.12997-1-amikan@ilbers.de> 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: MH5YxUCpCIep Use schroot inside imager session to prepare images. Signed-off-by: Anton Mikanovich --- meta/classes/image.bbclass | 3 +- meta/classes/imagetypes_vm.bbclass | 7 +-- meta/classes/imagetypes_wic.bbclass | 73 +++++++++-------------------- 3 files changed, 25 insertions(+), 58 deletions(-) diff --git a/meta/classes/image.bbclass b/meta/classes/image.bbclass index 651b252..9b4b67b 100644 --- a/meta/classes/image.bbclass +++ b/meta/classes/image.bbclass @@ -210,7 +210,7 @@ python() { localdata.setVar('IMAGE_FILE_HOST', '${DEPLOY_DIR_IMAGE}/${IMAGE_FULLNAME}.${type}') #bb.warn("FULLNAME is %s -> %s" % (localdata.getVar('IMAGE_FULLNAME', False), localdata.getVar('IMAGE_FULLNAME', True))) localdata.setVar('IMAGE_FILE_CHROOT', '${PP_DEPLOY}/${IMAGE_FULLNAME}.${type}') - localdata.setVar('SUDO_CHROOT', localdata.expand('sudo chroot ${BUILDCHROOT_DIR}')) + localdata.setVar('SUDO_CHROOT', localdata.expand('imager_run -d ${PP_ROOTFS} -u root --')) # imager install for dep in (d.getVar('IMAGER_INSTALL_' + bt_clean) or '').split(): @@ -219,7 +219,6 @@ python() { imager_build_deps.add(dep) # construct image command - cmds.append('\timage_do_mounts') image_cmd = localdata.getVar('IMAGE_CMD_' + bt_clean) if image_cmd: localdata.setVar('type', bt) diff --git a/meta/classes/imagetypes_vm.bbclass b/meta/classes/imagetypes_vm.bbclass index 8a676ac..a7090e6 100644 --- a/meta/classes/imagetypes_vm.bbclass +++ b/meta/classes/imagetypes_vm.bbclass @@ -4,8 +4,6 @@ # This class allows to generate images for VMware and VirtualBox # -inherit buildchroot - USING_OVA = "${@bb.utils.contains('IMAGE_BASETYPES', 'ova', '1', '0', d)}" FILESEXTRAPATHS_prepend := "${LAYERDIR_core}/classes/vm-img:" @@ -38,9 +36,8 @@ CONVERSION_OPTIONS = "${@set_convert_options(d)}" convert_wic() { rm -f '${DEPLOY_DIR_IMAGE}/${VIRTUAL_MACHINE_IMAGE_FILE}' - image_do_mounts bbnote "Creating ${VIRTUAL_MACHINE_IMAGE_FILE} from ${SOURCE_IMAGE_FILE}" - sudo -E chroot --userspec=$( id -u ):$( id -g ) ${BUILDCHROOT_DIR} \ + imager_run -p -d ${PP_WORK} -- \ /usr/bin/qemu-img convert -f raw -O ${VIRTUAL_MACHINE_IMAGE_TYPE} ${CONVERSION_OPTIONS} \ '${PP_DEPLOY}/${SOURCE_IMAGE_FILE}' '${VIRTUAL_MACHINE_DISK}' } @@ -83,7 +80,7 @@ IMAGE_CMD_ova() { export LAST_CHANGE=$(date -u "+%Y-%m-%dT%H:%M:%SZ") export OVA_FIRMWARE_UPPERCASE=$(echo ${OVA_FIRMWARE} | tr '[a-z]' '[A-Z]') export OVF_TEMPLATE_STAGE2=$(echo ${OVF_TEMPLATE_FILE} | sed 's/.tmpl$//' ) - sudo -Es chroot --userspec=$( id -u ):$( id -g ) ${BUILDCHROOT_DIR} <<'EOSUDO' + imager_run -p -d ${PP_WORK} <<'EOSUDO' set -e export DISK_SIZE_BYTES=$(qemu-img info -f vmdk "${VIRTUAL_MACHINE_DISK}" \ | gawk 'match($0, /^virtual size:.*\(([0-9]+) bytes\)/, a) {print a[1]}') diff --git a/meta/classes/imagetypes_wic.bbclass b/meta/classes/imagetypes_wic.bbclass index cfcc94c..9c7a5eb 100644 --- a/meta/classes/imagetypes_wic.bbclass +++ b/meta/classes/imagetypes_wic.bbclass @@ -82,8 +82,6 @@ python () { bb.build.addtask('do_transform_template', 'do_image_wic', None, d) } -inherit buildchroot - IMAGER_INSTALL_wic += "${WIC_IMAGER_INSTALL}" # wic comes with reasonable defaults, and the proper interface is the wks file ROOTFS_EXTRA ?= "0" @@ -94,7 +92,6 @@ STAGING_DIR ?= "${TMPDIR}" IMAGE_BASENAME ?= "${PN}-${DISTRO}" FAKEROOTCMD ?= "${SCRIPTSDIR}/wic_fakeroot" RECIPE_SYSROOT_NATIVE ?= "/" -BUILDCHROOT_DIR = "${BUILDCHROOT_TARGET_DIR}" WIC_CREATE_EXTRA_ARGS ?= "" @@ -142,25 +139,11 @@ check_for_wic_warnings() { do_image_wic[file-checksums] += "${WKS_FILE_CHECKSUM}" IMAGE_CMD_wic() { - wic_do_mounts generate_wic_image check_for_wic_warnings } -wic_do_mounts() { - buildchroot_do_mounts - sudo -s <<'EOSUDO' - ( flock 9 - set -e - for dir in ${BBLAYERS} ${STAGING_DIR} ${SCRIPTSDIR} ${BITBAKEDIR}; do - mkdir -p ${BUILDCHROOT_DIR}/$dir - if ! mountpoint ${BUILDCHROOT_DIR}/$dir >/dev/null 2>&1; then - mount --bind --make-private $dir ${BUILDCHROOT_DIR}/$dir - fi - done - ) 9>${MOUNT_LOCKFILE} -EOSUDO -} +SCHROOT_MOUNTS += "${BBLAYERS} ${STAGING_DIR} ${SCRIPTSDIR} ${BITBAKEDIR}" generate_wic_image() { export FAKEROOTCMD=${FAKEROOTCMD} @@ -169,43 +152,31 @@ generate_wic_image() { mkdir -p ${IMAGE_ROOTFS}/../pseudo touch ${IMAGE_ROOTFS}/../pseudo/files.db - # create the temp dir in the buildchroot to ensure uniqueness - WICTMP=$(cd ${BUILDCHROOT_DIR}; mktemp -d -p tmp) - - sudo -E chroot ${BUILDCHROOT_DIR} \ - sh -c ' \ - BITBAKEDIR="$1" - SCRIPTSDIR="$2" - WKS_FULL_PATH="$3" - STAGING_DIR="$4" - MACHINE="$5" - WICTMP="$6" - IMAGE_FULLNAME="$7" - IMAGE_BASENAME="$8" - shift 8 - # The python path is hard-coded as /usr/bin/python3-native/python3 in wic. Handle that. - mkdir -p /usr/bin/python3-native/ - if [ $(head -1 $(which bmaptool) | grep python3) ];then + imager_run -p -d ${PP_WORK} -u root <<'EOSUDO' + set -e + + # The python path is hard-coded as /usr/bin/python3-native/python3 in wic. Handle that. + mkdir -p /usr/bin/python3-native/ + if [ $(head -1 $(which bmaptool) | grep python3) ];then ln -fs /usr/bin/python3 /usr/bin/python3-native/python3 - else + else ln -fs /usr/bin/python2 /usr/bin/python3-native/python3 - fi - export PATH="$BITBAKEDIR/bin:$PATH" - "$SCRIPTSDIR"/wic create "$WKS_FULL_PATH" \ - --vars "$STAGING_DIR/$MACHINE/imgdata/" \ - -o "/$WICTMP/${IMAGE_FULLNAME}.wic/" \ + fi + + export PATH="${BITBAKEDIR}/bin:$PATH" + + "${SCRIPTSDIR}"/wic create "${WKS_FULL_PATH}" \ + --vars "${STAGING_DIR}/${MACHINE}/imgdata/" \ + -o "/tmp/${IMAGE_FULLNAME}.wic/" \ --bmap \ - -e "$IMAGE_BASENAME" $@' \ - my_script "${BITBAKEDIR}" "${SCRIPTSDIR}" "${WKS_FULL_PATH}" "${STAGING_DIR}" \ - "${MACHINE}" "${WICTMP}" "${IMAGE_FULLNAME}" "${IMAGE_BASENAME}" \ - ${WIC_CREATE_EXTRA_ARGS} + -e "${IMAGE_BASENAME}" ${WIC_CREATE_EXTRA_ARGS} + find "/tmp/${IMAGE_FULLNAME}.wic/" -type f -name "*.direct*" | while read f; do + suffix=$(basename $f | sed 's/\(.*\)\(\.direct\)\(.*\)/\3/') + mv -f ${f} ${PP_DEPLOY}/${IMAGE_FULLNAME}.wic${suffix} + done +EOSUDO sudo chown -R $(stat -c "%U" ${LAYERDIR_core}) ${LAYERDIR_core} ${LAYERDIR_isar} ${SCRIPTSDIR} || true - sudo chown -R $(id -u):$(id -g) ${BUILDCHROOT_DIR}/${WICTMP} - find ${BUILDCHROOT_DIR}/${WICTMP} -type f -name "*.direct*" | while read f; do - suffix=$(basename $f | sed 's/\(.*\)\(\.direct\)\(.*\)/\3/') - mv -f ${f} "${DEPLOY_DIR_IMAGE}/${IMAGE_FULLNAME}.wic${suffix}" - done - rm -rf ${BUILDCHROOT_DIR}/${WICTMP} + sudo chown -R $(id -u):$(id -g) ${DEPLOY_DIR_IMAGE}/${IMAGE_FULLNAME}.wic* rm -rf ${IMAGE_ROOTFS}/../pseudo } -- 2.17.1