From: Rob Woolley <rob.woolley@windriver.com>
To: <bitbake-devel@lists.openembedded.org>
Cc: <alex.kanavin@gmail.com>
Subject: [PATCH v2 08/13] bitbake: Add checks for importing bb module
Date: Tue, 31 Mar 2026 09:06:58 -0700 [thread overview]
Message-ID: <20260331160703.3137930-9-rob.woolley@windriver.com> (raw)
In-Reply-To: <20260331160703.3137930-1-rob.woolley@windriver.com>
The __version__ has been present since bbmake to ensure that the
Python script uses the appropriate bb module. This was necessary
when bbmake had functional code that had to match the bb module.
The code has since been moved into bb/main.py. The skeleton
code left in bin/bitbake rarely changes save for bumping the
version.
When executed in place, the bitbake script manipulates sys.path
to find the bb module in ../lib. This path is inserted to the
beginning of sys.path and it cannot be overridden. This path is
inserted regardless of whether the bb module is present in the
lib directory.
This adds a check for the existence of the lib/bb/__init__.py file
before inserting the directory to the beginning of sys.path. This
supports bitbake to be executed from inside the git repository.
It deliberately fails in the situation where lib/bb/__init__.py
is missing, but the bb package exists inside a site-package
directory. This situation was previously possible.
Signed-off-by: Rob Woolley <rob.woolley@windriver.com>
---
bin/bitbake | 24 ++++++++++++++----------
1 file changed, 14 insertions(+), 10 deletions(-)
diff --git a/bin/bitbake b/bin/bitbake
index a995bd665..76ec80d90 100755
--- a/bin/bitbake
+++ b/bin/bitbake
@@ -15,23 +15,27 @@ import sys
import warnings
warnings.simplefilter("default")
-sys.path.insert(0, os.path.join(os.path.dirname(os.path.dirname(__file__)),
- 'lib'))
-try:
- import bb
-except RuntimeError as exc:
- sys.exit(str(exc))
+bindir = os.path.abspath(os.path.dirname(__file__))
+libdir = os.path.join(os.path.dirname(bindir), 'lib')
+bbfile = os.path.join(libdir, 'bb', '__init__.py')
+
+if os.path.exists(bbfile):
+ # Execute bitbake in git repository
+ try:
+ sys.path[0:0] = [libdir]
+ import bb
+ except ImportError as e:
+ print(f"Could not import bb from lib: {e}", file=sys.stderr)
+else:
+ print(f"Could not find bb module", file=sys.stderr)
+ sys.exit(1)
from bb import cookerdata
from bb.main import bitbake_main, BitBakeConfigParameters, BBMainException
bb.utils.check_system_locale()
-__version__ = "2.16.0"
-
if __name__ == "__main__":
- if __version__ != bb.__version__:
- sys.exit("Bitbake core version and program version mismatch!")
try:
sys.exit(bitbake_main(BitBakeConfigParameters(sys.argv),
cookerdata.CookerConfiguration()))
--
2.49.0
next prev parent reply other threads:[~2026-03-31 16:07 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-03-31 16:06 [PATCH v2 00/13] bitbake-setup PyPI Packaging Rob Woolley
2026-03-31 16:06 ` [PATCH v2 01/13] bitbake-setup: Resolve unused loop control variables Rob Woolley
2026-04-01 21:44 ` [bitbake-devel] " Richard Purdie
2026-03-31 16:06 ` [PATCH v2 02/13] bitbake-setup: Fix ambiguous variable names Rob Woolley
2026-03-31 16:06 ` [PATCH v2 03/13] bitbake-setup: Set function default to None Rob Woolley
2026-04-01 21:43 ` [bitbake-devel] " Richard Purdie
2026-03-31 16:06 ` [PATCH v2 04/13] bitbake-setup: Add checks for version information Rob Woolley
2026-03-31 16:06 ` [PATCH v2 05/13] bitbake-setup: Add version option Rob Woolley
2026-03-31 16:06 ` [PATCH v2 06/13] bitbake-setup: Add the conditional script stanza Rob Woolley
2026-03-31 16:06 ` [PATCH v2 07/13] bitbake-setup: Add version check and catch exceptions Rob Woolley
2026-03-31 16:06 ` Rob Woolley [this message]
2026-03-31 16:06 ` [PATCH v2 09/13] pypi: Add PyPI packaging for bitbake-setup Rob Woolley
2026-03-31 16:07 ` [PATCH v2 10/13] pypi: Add packaging documentation for developers Rob Woolley
2026-03-31 16:07 ` [PATCH v2 11/13] gitignore: Ignore temporary staging directory Rob Woolley
2026-03-31 16:07 ` [PATCH v2 12/13] lib: Vendorize bundled third-party libraries under bb._vendor Rob Woolley
2026-03-31 16:07 ` [PATCH v2 13/13] bb: Move codegen.py inside module Rob Woolley
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20260331160703.3137930-9-rob.woolley@windriver.com \
--to=rob.woolley@windriver.com \
--cc=alex.kanavin@gmail.com \
--cc=bitbake-devel@lists.openembedded.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox