diff mbox series

[2/3] bitbake-setup: add bb-target build wrapper

Message ID 20260320150312.1243270-3-zhangfei.gao@linaro.org
State New
Headers show
Series bitbake-setup: config-driven local.conf, default target and docs | expand

Commit Message

Zhangfei Gao March 20, 2026, 3:03 p.m. UTC
Allow configurations to define 'bb-target'.

When set, bitbake-setup creates a setupdir/build-target helper script
that sources build/init-build-env and runs bitbake with the configured
default target (or with arguments provided by the user).

This reduces wrapper-script logic and makes setup usage closer to
one-command project build workflows.

Signed-off-by: Zhangfei Gao <zhangfei.gao@linaro.org>
---
 bin/bitbake-setup | 25 +++++++++++++++++++++++++
 1 file changed, 25 insertions(+)
diff mbox series

Patch

diff --git a/bin/bitbake-setup b/bin/bitbake-setup
index edb8c4d1f..04cb15dab 100755
--- a/bin/bitbake-setup
+++ b/bin/bitbake-setup
@@ -361,6 +361,30 @@  def setup_bitbake_build(bitbake_config, layerdir, setupdir, thisdir, update_bb_c
             f.write('\n')
             f.write(content)
 
+    def _make_default_target_wrapper(setupdir):
+        default_target = bitbake_config.get("bb-target")
+        if not default_target:
+            return
+
+        wrapper = os.path.join(setupdir, 'build-target')
+        script = """#!/bin/sh
+# build-target wrapper created by bitbake-setup
+set -e
+
+if [ "$#" -gt 0 ]; then
+    target="$*"
+else
+    target="{default_target}"
+fi
+
+. "$(dirname "$0")/build/init-build-env" >/dev/null
+bitbake $target
+""".format(default_target=default_target)
+
+        with open(wrapper, 'w') as f:
+            f.write(script)
+        os.chmod(wrapper, 0o755)
+
     bitbake_builddir = os.path.join(setupdir, "build")
     logger.plain("Setting up bitbake configuration in\n    {}\n".format(bitbake_builddir))
 
@@ -394,6 +418,7 @@  def setup_bitbake_build(bitbake_config, layerdir, setupdir, thisdir, update_bb_c
         _make_init_build_env(bitbake_builddir, os.path.realpath(oeinitbuildenvdir))
 
     _prepend_passthrough_to_init_build_env(bitbake_builddir)
+    _make_default_target_wrapper(setupdir)
 
     siteconf_symlink = os.path.join(bitbake_confdir, "site.conf")
     siteconf = os.path.normpath(os.path.join(setupdir, '..', "site.conf"))