scripts/oe-setup-build: write a build environment initialization one-liner into the build directory

With this, users no longer have to know where oe-init-build-env is relative to the
build directory; that information is contained in the one liner and then
it's possible to simply use that:

. /path/to/build/init-build-env

This will particularly help with initializing builds in unpacked
build bundles, as users won't have to know where oe-init-build-env
is in the bundle directory tree - similar to esdk initialization.

(From OE-Core rev: 1cabdf287c2739accdab3a766df060f1bc802b63)

(From OE-Core rev: 4bf3f11e39312cfce59d4652804faf0eec6b5ace)

Signed-off-by: Alexander Kanavin <alex@linutronix.de>
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
This commit is contained in:
Alexander Kanavin 2024-05-02 13:44:21 +02:00 committed by Steve Sakoman
parent 64c3534366
commit 94dc3e62a5

View File

@ -91,7 +91,16 @@ def setup_build_env(args):
builddir = args.b if args.b else template["buildpath"]
no_shell = args.no_shell
coredir = os.path.abspath(os.path.join(os.path.dirname(os.path.realpath(__file__)), '..'))
cmd = "TEMPLATECONF={} . {} {}".format(template["templatepath"], os.path.join(coredir, 'oe-init-build-env'), builddir)
cmd_base = ". {} {}".format(os.path.join(coredir, 'oe-init-build-env'), os.path.abspath(builddir))
initbuild = os.path.join(builddir, 'init-build-env')
if not os.path.exists(initbuild):
os.makedirs(builddir, exist_ok=True)
with open(initbuild, 'w') as f:
f.write(cmd_base)
print("\nRun '. {}' to initialize the build in a current shell session.\n".format(initbuild))
cmd = "TEMPLATECONF={} {}".format(template["templatepath"], cmd_base)
if not no_shell:
cmd = cmd + " && {}".format(os.environ['SHELL'])
print("Running:", cmd)