From mboxrd@z Thu Jan 1 00:00:00 1970 X-GM-THRID: 7349190070423781376 X-Forwarded-Encrypted: i=2; AJvYcCWNy5VJLEBkQGBTIvFuqh+HSc7UQMI1FcwFwMJcWlB0plo/Mi+MztiobK82ft/KWh3C+tBzlhI2C5kk5MSikOVrRVCRoPm4UjlikIQ= X-Received: by 2002:a17:90a:488f:b0:2a0:7895:f356 with SMTP id b15-20020a17090a488f00b002a07895f356mr2537243pjh.12.1711380927503; Mon, 25 Mar 2024 08:35:27 -0700 (PDT) X-BeenThere: isar-users@googlegroups.com Received: by 2002:a17:90a:d34a:b0:2a0:2a05:dd6b with SMTP id i10-20020a17090ad34a00b002a02a05dd6bls2012610pjx.0.-pod-prod-00-us-canary; Mon, 25 Mar 2024 08:35:26 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCWT8PB/pkxp279C/oHfWPixaZsBrWUazvNK1hjHfTi56fU+StTE0+pSr1FD0WnEyYYVSDkicV3Zn3cYVohtgjR4EZS1J3kK9gc9ZnM= X-Google-Smtp-Source: AGHT+IEgSh1DFTD2CA4mPM6ZZbTDGU3UKgrAfOUjqlMj5Z+aj01zB1rRjV8xwzcFN+33fE2Qg5/l X-Received: by 2002:a05:6a20:43a6:b0:1a3:a85c:44a5 with SMTP id i38-20020a056a2043a600b001a3a85c44a5mr9080125pzl.31.1711380926214; Mon, 25 Mar 2024 08:35:26 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1711380926; cv=none; d=google.com; s=arc-20160816; b=CE3qgMd+RR90m1dOPz7ig8XJv/VmE2WOtJRxBLU0Hd+nyceYgdHedA5yim5LYPr68J ZMuUfaBtGv+G592wh3HCh1alHpSxyg4mVq5XMgPO61Fz1hVgctsf6Vb5iZjC+MSEoIL3 A1PIc5e0hHKtVkK8oA11W5G69HfF7SIZIDeOm7y2M9yNQ1fPhGJAkwTBF+wGa7HBkZaQ XwqW7rHDWZyNbuZ6wA8MQnjBnLIqutVF2Lqyjz0cQySd1jliHPoAg55AapVizVA44dkD 3fj7lCTSyv45BAF9s71JOl478LrKYm0LqbGR+UWsJwzYR/xm8TJPq8i20dDvEp4CDCSa X3Qw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=feedback-id:content-transfer-encoding:mime-version:references :in-reply-to:message-id:date:subject:to:from:dkim-signature; bh=xcN4HEnORW/2rIwyCstPVUtKlU8UtTJoWNiL9kr5WYA=; fh=rpHsxb7lPfJJgFX8BDY3/IlKBNbRtI9Z0SHxGoqscuk=; b=tmxywZ2D+npRkQ6/650SBX8M47o2hFc6iYgJHBZGk91eDaw2U1radjWP2AKCDfbT0Y SakYfzIOrxtfKfGbFs9HK0TtQTO4J06lFdx5RKBr6q7OFF0TEctjlrBUxKgCTlkX9NGy tq/N2C3PH9hxFeaGxValE4NGSlSvvm893SN3aRqmIi5A8pTsU7YUSNbB4iKlxyTtZwcs evbv8xwk54v4BGbqx+ipzSMwWCXz5bd7SywRIFhBDimwHjvLx8n2mANdLepWyrK4FnRh xTmEhHjgYwWPLR7tg46WZumUFL/6IAI3nn2FH+pu+TaR2e9G6qa7CzUB1AimU5ZSNGA7 OmNg==; dara=google.com ARC-Authentication-Results: i=1; gmr-mx.google.com; dkim=pass header.i=@siemens.com header.s=fm1 header.b=Kw6pfdNk; spf=pass (google.com: domain of fm-51332-2024032515352356421b6dc79ad7d040-xsxw5w@rts-flowmailer.siemens.com designates 185.136.65.225 as permitted sender) smtp.mailfrom=fm-51332-2024032515352356421b6dc79ad7d040-Xsxw5w@rts-flowmailer.siemens.com; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=siemens.com Return-Path: Received: from mta-65-225.siemens.flowmailer.net (mta-65-225.siemens.flowmailer.net. [185.136.65.225]) by gmr-mx.google.com with ESMTPS id p5-20020aa79e85000000b006e8040429d1si287805pfq.6.2024.03.25.08.35.26 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Mon, 25 Mar 2024 08:35:26 -0700 (PDT) Received-SPF: pass (google.com: domain of fm-51332-2024032515352356421b6dc79ad7d040-xsxw5w@rts-flowmailer.siemens.com designates 185.136.65.225 as permitted sender) client-ip=185.136.65.225; Authentication-Results: gmr-mx.google.com; dkim=pass header.i=@siemens.com header.s=fm1 header.b=Kw6pfdNk; spf=pass (google.com: domain of fm-51332-2024032515352356421b6dc79ad7d040-xsxw5w@rts-flowmailer.siemens.com designates 185.136.65.225 as permitted sender) smtp.mailfrom=fm-51332-2024032515352356421b6dc79ad7d040-Xsxw5w@rts-flowmailer.siemens.com; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=siemens.com Received: by mta-65-225.siemens.flowmailer.net with ESMTPSA id 2024032515352356421b6dc79ad7d040 for ; Mon, 25 Mar 2024 16:35:23 +0100 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; s=fm1; d=siemens.com; i=Quirin.Gylstorff@siemens.com; h=Date:From:Subject:To:Message-ID:MIME-Version:Content-Type:Content-Transfer-Encoding:References:In-Reply-To; bh=xcN4HEnORW/2rIwyCstPVUtKlU8UtTJoWNiL9kr5WYA=; b=Kw6pfdNk0xPSPrkEghUckLlibHl9rLhZ+6VRwHGuMQ+yv4T/o77fA0r61Rlu3VNPP2yVkD b1+8Uxk8uiVD1no0eLZWvtzNKR1NtnBkEutWzWfkYtBYyT364oxihkygzlRvNTyC5/7lJaTD qEtX89b6lJs7BPj+0w0o4KglnzIM8=; From: Quirin Gylstorff To: felix.moessbauer@siemens.com, isar-users@googlegroups.com Subject: [PATCH v3 1/2] add new class to add files directly to the rootfs Date: Mon, 25 Mar 2024 16:34:58 +0100 Message-ID: <20240325153522.2104345-2-Quirin.Gylstorff@siemens.com> In-Reply-To: <20240325153522.2104345-1-Quirin.Gylstorff@siemens.com> References: <20240325153522.2104345-1-Quirin.Gylstorff@siemens.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Flowmailer-Platform: Siemens Feedback-ID: 519:519-51332:519-21489:flowmailer X-TUID: IT6UQd6ZgRKX From: Quirin Gylstorff This allows to add files like the installer target directly to rootfs without compressing the target file. It also reduces the sstate size. Signed-off-by: Quirin Gylstorff --- meta/classes/rootfs-add-files.bbclass | 45 +++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 meta/classes/rootfs-add-files.bbclass diff --git a/meta/classes/rootfs-add-files.bbclass b/meta/classes/rootfs-add-files.bbclass new file mode 100644 index 00000000..4125caf5 --- /dev/null +++ b/meta/classes/rootfs-add-files.bbclass @@ -0,0 +1,45 @@ +# This software is a part of ISAR. +# Copyright (C) Siemens AG, 2024 +# This class allows to add a file directly to +# the rootfs. +# An example usecase would be an installer which +# contains an complete rootfs added with multiconfig. +ROOTFS_INSTALL_COMMAND =+ "rootfs_add_files" +ROOTFS_ADDITIONAL_FILES ??= "" + +# ROOTFS_ADDITIONAL_FILES ??= "installer-target" +# +# ROOTFS_ADDITIONAL_FILE_installer-target[source] = \ +# "${DEPLOY_DIR_IMAGE}/${IMG_DATA_FILE}.${IMAGE_DATA_POSTFIX}" +# ROOTFS_ADDITIONAL_FILE_installer-target[destination] = \ +# "/install/${IMG_DATA_FILE}.${IMAGE_DATA_POSTFIX}" + + +python rootfs_add_files() { + import os + if d.getVar("SOURCE_DATE_EPOCH") != None: + os.environ["SOURCE_DATE_EPOCH"] = d.getVar("SOURCE_DATE_EPOCH") + + postprocess_additional_files = d.getVar('ROOTFS_ADDITIONAL_FILES').split() + rootfsdir = d.getVar("ROOTFSDIR") + + for entry in postprocess_additional_files: + additional_file_entry = f"ROOTFS_ADDITIONAL_FILE_{entry}" + destination = d.getVarFlag(additional_file_entry, "destination") or "" + source = d.getVarFlag(additional_file_entry, "source") or "" + if os.path.exists(f"{rootfsdir}/{destination}"): + bb.process.run([ "/usr/bin/rm", "-f", f"{destination}"]) + + dest_dir = os.path.dirname(destination) + bb.process.run(["sudo", "-E", "/usr/bin/mkdir", "-p", f"{rootfsdir}/{dest_dir}" ]) + # empty source creates only an empty destination file + if not source: + bb.process.run(["sudo", "-E", "/usr/bin/touch", f"{rootfsdir}/{destination}" ]) + return + + if not os.path.exists(f"{source}"): + bb.error(f"{source} does not exists and cannot be copied to the rootfs!") + # no recursive copy only single files + bb.process.run(["sudo", "-E", "/usr/bin/cp", "-a", f"{source}", f"{rootfsdir}/{destination}" ]) +} +ROOTFS_INSTALL_COMMAND += "rootfs_add_files" -- 2.43.0