From patchwork Wed Oct 8 16:56:56 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alexander Kanavin X-Patchwork-Id: 71850 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id D1AB4CCA470 for ; Wed, 8 Oct 2025 16:57:19 +0000 (UTC) Received: from mail-wr1-f48.google.com (mail-wr1-f48.google.com [209.85.221.48]) by mx.groups.io with SMTP id smtpd.web11.741.1759942633206843410 for ; Wed, 08 Oct 2025 09:57:13 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@gmail.com header.s=20230601 header.b=fhIXnzhW; spf=pass (domain: gmail.com, ip: 209.85.221.48, mailfrom: alex.kanavin@gmail.com) Received: by mail-wr1-f48.google.com with SMTP id ffacd0b85a97d-3ecdf2b1751so111093f8f.0 for ; Wed, 08 Oct 2025 09:57:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1759942631; x=1760547431; darn=lists.openembedded.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=qZDg81WwS8Xsw5QplX9hErCH6HsyfyBJ+UWOH/LzIPg=; b=fhIXnzhWngRPsMAB4Os2CJ4q2SzfHWc6RhzGYM2D+wxH+eAmnADh1QboRV7KJgBQs0 yTPM8jE4DcisSgGq4/YOCgx3aRvTTOMKo3JHYKRf2Mlhz8IosQDsIWv4kcbftYEbBrFd jPsw0NifCXqvITk1bo1HR/S7AmVpU2dshqGWFhQRQ+zG9SFZmgbl4JKP06yzm/xJgswX BPpX/hkk2CBChx+Mn7RaHUQuqbL93zXUxhl3VePKqWyqyxGIzXrVR6ppsyQ7jcfXdqVU Qvu2Yj6MHQmjeWRdOYcbn+Bl8/37cO1EHNNi508NjJsVu4Cgc3cQavbzeKCoJOtNt6NS 2DQQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1759942631; x=1760547431; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=qZDg81WwS8Xsw5QplX9hErCH6HsyfyBJ+UWOH/LzIPg=; b=dJIjpfL63URcFbVcNUETeDAz9+rD6OoLdGYG9nU1IQ0oxQ9Gs3zAcQT6fy+dl/sb/P UGr+sqLHYaaqpd+XvA0RFBl5nGPrPkqP1mYwWjb/nEROd8Y4l5bhLKBxla77F/zdqk6t TsI6VgXZiQNRX4Zo3dZ4OMGvSknfFSKhxMvL6UesJu/9/BKh1S0TvAdTOyceO9nzFCZV +448H1VoZa43CuHbSstkNvRY54jruCJJFbGNxadjhYlJLtWXTb3+v3FUt4RgNB9Ye3fQ 1Ap86CRxl44WwNbIRlz+rJN4CXt35TuE4GnAgUrLBRaUc2zPOQEhkUm5f5yjn9rkMjlZ vwaQ== X-Gm-Message-State: AOJu0YxpJD8qjHzOey0jSABomwvUvOxdkLlVmGwrlarLnum2Cwp8Uqw8 SSfdb+/pKGOCLqNl0wPo3WYd1pWlExnkWDzKiZPsS3sb1UQTQrK7KflV9ckUrQ== X-Gm-Gg: ASbGncvKTJU+ubYAMJgdudCItzT9x0asbbgh46W/+GEX22yrXqrGq0qWRHDlA3tpAT2 xteidaLF+h6mTe6UvVUg8yRhz0l1QcRx3NwEM/jQQIABDEUXUH80gZaaJ20jjlN2n8eSrwmV9HE Ozp3ea2ptsJuJZ0i+4LuHPTslEhwj/Z5i+BXz9PKORCWmM6Lo3SBUnToO9TooK81wzCTlczpqsC 9Tdfg2s0SRyQboT3GUwQQBdxb4QSe0QSJcg9ZfpCaBc6cPZ9crXRjf2CHD4hpAFQZ0KQobJHHhy FtToO6wH9EhlNyXu/9fjO2yexcLGv5zgJxbPPAG6Lpz0SPwaOtOEVYHyJJDpez3qHK8HlAocrFd iVS0ErUFtchMjW6/wyIAatNKcMWBcIyK6pjF3+putEb3WaUpVVz+72IpP/cleY+P6Sb3xOzVoZ/ LFTsmHc6GclOzpFBb0o3+woXwmzYiXkAWpNP9SxeoFoMPWerlXILPueH8DnGdAFt5gjAepV5lRe nwoZ9cL+Q== X-Google-Smtp-Source: AGHT+IF3+HT7QudTIjAoGkGXBsuXi1X6R/ADjQ5cQ4PGrp0GztelUmnHXH+hq2pCiv/LgeYs+BJ6aQ== X-Received: by 2002:a5d:5d85:0:b0:425:7e45:a4df with SMTP id ffacd0b85a97d-42666ac60c3mr2694653f8f.11.1759942631313; Wed, 08 Oct 2025 09:57:11 -0700 (PDT) Received: from Zen2.lab.linutronix.de. (drugstore.linutronix.de. [80.153.143.164]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4255d8a6b77sm30740453f8f.6.2025.10.08.09.57.10 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 08 Oct 2025 09:57:10 -0700 (PDT) From: Alexander Kanavin To: bitbake-devel@lists.openembedded.org Cc: Johannes Schneider Subject: [PATCH 1/4] bitbake-setup: support adding environment-passthroughs to the init-build-env Date: Wed, 8 Oct 2025 18:56:56 +0200 Message-Id: <20251008165659.1884881-1-alex.kanavin@gmail.com> X-Mailer: git-send-email 2.39.5 MIME-Version: 1.0 List-Id: X-Webhook-Received: from li982-79.members.linode.com [45.33.32.79] by aws-us-west-2-korg-lkml-1.web.codeaurora.org with HTTPS for ; Wed, 08 Oct 2025 16:57:19 -0000 X-Groupsio-URL: https://lists.openembedded.org/g/bitbake-devel/message/18145 From: Johannes Schneider This patch adds support for extending the BB_ENV_PASSTHROUGH_ADDITIONS environment variable from within the `init-build-env` wrapper script - generated by either oe-core's oe-setup-build, or by `bitbake-setup` - based on per-configuration JSON settings. This enables CI workflows to inject environment-specific data - such as build number, host, build type, or credentials required to fetch from certain SRC_URIs - which cannot be captured via configuration fragments alone. These variables are now handled early in the setup process and exported directly into the build environment. Example: "bb-env-passthrough-additions": [ "ACME_DIR", "ARTIFACTORY_TOKEN", "ARTIFACTORY_USERNAME", "GITHUB_TOKEN", "GITHUB_PROTOCOL", "KEY" ] the resulting 'init-build-env' would then be: # environment passthrough added by bitbake-setup export BB_ENV_PASSTHROUGH_ADDITIONS=" \ $BB_ENV_PASSTHROUGH_ADDITIONS \ ACME_DIR \ ARTIFACTORY_TOKEN \ ARTIFACTORY_USERNAME \ GITHUB_TOKEN \ GITHUB_PROTOCOL \ KEY" # init-build-env wrapper created by bitbake-setup . /tmp/acme_master-acme-distro_acme-machine_bang/layers/openembedded-core/oe-init-build-env /tmp/bitbake-setup/gs/acme_master-acme-distro_acme-machine_bang/build Signed-off-by: Johannes Schneider --- bin/bitbake-setup | 27 ++++++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/bin/bitbake-setup b/bin/bitbake-setup index e7b955213..7878cd939 100755 --- a/bin/bitbake-setup +++ b/bin/bitbake-setup @@ -162,8 +162,31 @@ def setup_bitbake_build(bitbake_config, layerdir, builddir, thisdir): builddir = os.path.realpath(builddir) cmd = "cd {}\nset {}\n. ./oe-init-build-env\n".format(oeinitbuildenvdir, builddir) initbuild_in_builddir = os.path.join(builddir, 'init-build-env') + with open(initbuild_in_builddir, 'w') as f: - f.write(cmd) + f.write("# init-build-env wrapper created by bitbake-setup\n") + f.write(cmd + '\n') + + def _prepend_passthrough_to_init_build_env(builddir): + env = bitbake_config.get("bb-env-passthrough-additions") + if not env: + return + + initbuild_in_builddir = os.path.join(builddir, 'init-build-env') + with open(initbuild_in_builddir) as f: + content = f.read() + + joined = " \\\n".join(env) + env = "export BB_ENV_PASSTHROUGH_ADDITIONS=\" \\\n" + env += "${BB_ENV_PASSTHROUGH_ADDITIONS} \\\n" + env += joined + env += '"' + + with open(initbuild_in_builddir, 'w') as f: + f.write("# environment passthrough added by bitbake-setup\n") + f.write(env + '\n') + f.write('\n') + f.write(content) bitbake_builddir = os.path.join(builddir, "build") print("Setting up bitbake configuration in\n {}\n".format(bitbake_builddir)) @@ -194,6 +217,8 @@ def setup_bitbake_build(bitbake_config, layerdir, builddir, thisdir): return _make_init_build_env(bitbake_builddir, os.path.realpath(oeinitbuildenvdir)) + _prepend_passthrough_to_init_build_env(bitbake_builddir) + siteconf_symlink = os.path.join(bitbake_confdir, "site.conf") siteconf = os.path.normpath(os.path.join(builddir, '..', "site.conf")) if os.path.lexists(siteconf_symlink):