From mboxrd@z Thu Jan 1 00:00:00 1970 X-GM-THRID: 6916819859940573184 X-Received: by 2002:a17:906:ca47:: with SMTP id jx7mr28170ejb.237.1610474688267; Tue, 12 Jan 2021 10:04:48 -0800 (PST) X-BeenThere: isar-users@googlegroups.com Received: by 2002:a17:907:2172:: with SMTP id rl18ls941825ejb.6.gmail; Tue, 12 Jan 2021 10:04:47 -0800 (PST) X-Google-Smtp-Source: ABdhPJy+OqEdGr5CzYELtuaA8+68/wsLTfotlshVSX8gEfzbexm2QD8mx9B0JhmvtBkU1prUJY99 X-Received: by 2002:a17:906:6606:: with SMTP id b6mr29023ejp.151.1610474687199; Tue, 12 Jan 2021 10:04:47 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1610474687; cv=none; d=google.com; s=arc-20160816; b=CqPDyGlBjRBhytXM0xuU8eCOeYDMA0xAKsC0YIVgCi3bf7mAm6ft9ES9mhxBKLXv72 HVtX0cGINTJbwfG3r2BS1IK51ho9tnxpsBAcOVTlOGbyiiwsmF0XOgKKUllFSGuinPZw JOpX8Wc3wPR0diP3mMZU5Aiqx5rkcjElppOJrUB3/n/+y8XVO7VeYlrzw0yIeNKZ57Eh O7BEOPmQ8Fs+k4oJqHJDxcxjsFQSZOEkhmlYjmkOOIcLUv8yzDmg3i+XUMcAOFDWRCww ImoPiH7tvFTvYEyn3vBhQo3HFQgDeUIrir1mpaCIV6RuOASi0EeHbmKFKWqi+2qkgW42 pvog== 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:cc:to:subject; bh=i+WMFQd3JeqGWYo5tfArGP1k4k3rnq6+3sHSD3jsamk=; b=XjCnwnQJl+94NwwHWulMf/w7K0HXT7BmPIX3u+NlE2uiuSbXFT42N7M8PXpR+Hq1aW HeVXX4gUMF27MAsUfbiqhlxuI3D/3t03QiecxtmqI3dwovl63YkY7vue67mymbsZJgW0 RrakkV1gW4mzrpHaUF8p8tawo2nQrJsH2xOAXBzULE/wmreKpprj9ncPgfkC7ikSQzsP AUY4UbzSrI4hu2MP2gP0qibeordNugfwoBjrtUlrLoJIp2KybdTIIHPgTll7nghP8yN7 nZfUpyQqx5BudaWyFuxZ23Bb9rMDfmKY4LGF4cWXamF/tOHM+kAgDgH3nLS/ZpbIC+Uz 2tJg== ARC-Authentication-Results: i=1; gmr-mx.google.com; spf=pass (google.com: domain of jan.kiszka@siemens.com designates 194.138.37.40 as permitted sender) smtp.mailfrom=jan.kiszka@siemens.com; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=siemens.com Return-Path: Received: from gecko.sbs.de (gecko.sbs.de. [194.138.37.40]) by gmr-mx.google.com with ESMTPS id z13si142160ejb.1.2021.01.12.10.04.47 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Tue, 12 Jan 2021 10:04:47 -0800 (PST) Received-SPF: pass (google.com: domain of jan.kiszka@siemens.com designates 194.138.37.40 as permitted sender) client-ip=194.138.37.40; Authentication-Results: gmr-mx.google.com; spf=pass (google.com: domain of jan.kiszka@siemens.com designates 194.138.37.40 as permitted sender) smtp.mailfrom=jan.kiszka@siemens.com; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=siemens.com Received: from mail2.sbs.de (mail2.sbs.de [192.129.41.66]) by gecko.sbs.de (8.15.2/8.15.2) with ESMTPS id 10CI4k1r005510 (version=TLSv1.2 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Tue, 12 Jan 2021 19:04:46 +0100 Received: from [167.87.43.185] ([167.87.43.185]) by mail2.sbs.de (8.15.2/8.15.2) with ESMTP id 10CI4kBH009569; Tue, 12 Jan 2021 19:04:46 +0100 Subject: Re: [RFC PATCH 1/2] sdk: support creation of container image To: "[ext] Silvano Cirujano Cuesta" , Henning Schild Cc: isar-users@googlegroups.com References: <20210112103338.14712-1-silvano.cirujano-cuesta@siemens.com> <20210112103338.14712-2-silvano.cirujano-cuesta@siemens.com> <20210112183655.4f227e42@md1za8fc.ad001.siemens.net> <75752029-677f-c07c-fb93-c6754ff1bad3@siemens.com> From: Jan Kiszka Message-ID: <3d1a0d3d-a56f-1a69-ed3d-724db91f4a08@siemens.com> Date: Tue, 12 Jan 2021 19:04:46 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.6.0 MIME-Version: 1.0 In-Reply-To: <75752029-677f-c07c-fb93-c6754ff1bad3@siemens.com> Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 7bit X-TUID: 3mYnI7OLizUZ On 12.01.21 18:54, [ext] Silvano Cirujano Cuesta wrote: > > On 12/01/2021 18:36, Henning Schild wrote: >> Am Tue, 12 Jan 2021 11:33:37 +0100 >> schrieb "[ext] Silvano Cirujano Cuesta" >> : >> >>> Extend task "populate_sdk" to support the creation of a container >>> image containing the SDK. >>> >>> Signed-off-by: Silvano Cirujano Cuesta >>> --- >>> meta/classes/image-sdk-extension.bbclass | 99 >>> ++++++++++++++++++++++-- 1 file changed, 92 insertions(+), 7 >>> deletions(-) >>> >>> diff --git a/meta/classes/image-sdk-extension.bbclass >>> b/meta/classes/image-sdk-extension.bbclass index a8c708a..9317256 >>> 100644 --- a/meta/classes/image-sdk-extension.bbclass >>> +++ b/meta/classes/image-sdk-extension.bbclass >>> @@ -6,10 +6,77 @@ >>> # This class extends the image.bbclass to supply the creation of a >>> sdk >>> SDK_INCLUDE_ISAR_APT ?= "0" >>> +SDK_GENERATE_FORMATS = "${@d.getVar("SDK_FORMATS", "tar")}" >>> + >>> +sdk_tar() { >>> + # Copy mount_chroot.sh for convenience >>> + sudo cp ${SCRIPTSDIR}/mount_chroot.sh ${SDKCHROOT_DIR} >>> + >>> + # Create SDK archive >>> + cd -P ${SDKCHROOT_DIR}/.. >>> + sudo tar --transform="s|^rootfs|sdk-${DISTRO}-${DISTRO_ARCH}|" \ >>> + -c rootfs | xz -T0 > >>> ${DEPLOY_DIR_IMAGE}/sdk-${DISTRO}-${DISTRO_ARCH}.tar.xz +} >>> + >>> +sdk_container_images() { >>> + local cmd="/bin/dash" >>> + local empty_tag="empty" >>> + local full_tag="latest" >>> + local oci_img_dir="${WORKDIR}/oci-image" >>> + local sdk_container_formats="$1" >>> + >>> + # prepare OCI container image skeleton >>> + sudo umoci init --layout "${oci_img_dir}" >>> + sudo umoci new --image "${oci_img_dir}:${empty_tag}" >>> + sudo umoci config --image "${oci_img_dir}:${empty_tag}" \ >>> + --config.cmd="${cmd}" >>> + sudo umoci unpack --image "${oci_img_dir}:${empty_tag}" \ >>> + "${oci_img_dir}_unpacked" >>> + >>> + # add SDK root filesystem as the flesh of the skeleton >>> + sudo cp -a "${SDKCHROOT_DIR}"/* "${oci_img_dir}_unpacked/rootfs/" >>> + >>> + # pack container image >>> + sudo umoci repack --image "${oci_img_dir}:${full_tag}" \ >>> + "${oci_img_dir}_unpacked" >>> + sudo umoci remove --image "${oci_img_dir}:${empty_tag}" >>> + sudo rm -rf "${oci_img_dir}_unpacked" >>> + >>> + # no root needed anymore >>> + sudo chown --recursive $(id -u):$(id -g) "${oci_img_dir}" >>> + >>> + # convert the OCI container image to the desired format >>> + sdk_id="sdk-${DISTRO}-${DISTRO_ARCH}" >>> + image_name="isar-${sdk_id}" >>> + image_archive="${DEPLOY_DIR_IMAGE}/${sdk_id}-${sdk_format}.tar" >>> + for sdk_format in ${sdk_container_formats} ; do >>> + case "${sdk_format}" in >>> + "docker-archive" | "oci-archive") >>> + if [ "${sdk_format}" = "oci-archive" ] ; then >>> + target="${sdk_format}:${image_archive}:latest" >>> + else >>> + >>> target="${sdk_format}:${image_archive}:${image_name}:latest" >>> + fi >>> + skopeo --insecure-policy copy \ >>> + "oci:${oci_img_dir}:${full_tag}" "${target}" >>> + xz -T0 "${image_archive}" >>> + ;; >>> + "oci") >>> + tar --create --xz --directory "${oci_img_dir}" \ >>> + --file "${image_archive}.xz" . >>> + ;; >>> + "docker-daemon" | "containers-storage") >>> + skopeo --insecure-policy copy \ >>> + "oci:${oci_img_dir}:${full_tag}" \ >>> + "${sdk_format}:${image_name}:latest" >>> + ;; >> Jan proposed to make the SDK class wider than x86(64). How is this >> going to affect docker? (i intentionally use "docker" as synonym for all >> sorts of ...) > I intentionally use container instead of Docker where it's not docker-only. >> >> The proposed changes should be tested for riscv and arm64 as well. > > Do you mean hosts or targets? Assuming you're talking about RISC-V and ARM64 targets... > > This functionality is merely packaging the cross-buildchain that up-to-now could be generated with "populate_sdk", whatever was supported should be supported by this patch. > > Of course, the changes should be tested for different combinations. Feel free to test it for those architectures, as long as we are in the discussion round I'm fine with the "whatever was supported should be supported by this patch" that I've written above. I'd really test if only before contributing the final patches for integration. > Agreed. I don't see any arch-specific blocker here. Both skopeo and umoci are available for our "new" host arch, arm64. RISC-V is still no official Debian target, thus may break for any reason on any day. Jan -- Siemens AG, T RDA IOT Corporate Competence Center Embedded Linux