diff mbox series

[v2,04/13] bitbake-setup: Add checks for version information

Message ID 20260331160703.3137930-5-rob.woolley@windriver.com
State New
Headers show
Series bitbake-setup PyPI Packaging | expand

Commit Message

Rob Woolley March 31, 2026, 4:06 p.m. UTC
The __version__ has been present since bbmake to ensure that the
Python script uses the appropriate bb module.  Other bitbake-*
scripts do not check the version.

When executed in place, the bitbake-* scripts manipulate sys.path
to find the bb module in ../lib. This path is inserted to the
beginning of sys.path and it cannot be overridden by any other
modules named bb.

This commit adds a check for ../lib/bb/__init__.py before making
changes to sys.path. It falls back to importing the bitbake_setup
module using a custom bitbake_setup package.

Signed-off-by: Rob Woolley <rob.woolley@windriver.com>
---
 bin/bitbake-setup | 29 ++++++++++++++++++++++++++---
 1 file changed, 26 insertions(+), 3 deletions(-)
diff mbox series

Patch

diff --git a/bin/bitbake-setup b/bin/bitbake-setup
index f90f01f55..073b18f95 100755
--- a/bin/bitbake-setup
+++ b/bin/bitbake-setup
@@ -23,10 +23,33 @@  import time
 
 
 bindir = os.path.abspath(os.path.dirname(__file__))
-sys.path[0:0] = [os.path.join(os.path.dirname(bindir), 'lib')]
+libdir = os.path.join(os.path.dirname(bindir), 'lib')
+bbfile = os.path.join(libdir, 'bb', '__init__.py')
 
-import bb.msg  # noqa: E402
-import bb.process  # noqa: E402
+# Obtain __version__ and import bb
+if os.path.exists(bbfile):
+    # Execute bitbake-setup in git repository
+    try:
+        sys.path[0:0] = [libdir]
+        import bb.msg  # noqa: E402
+        import bb.process  # noqa: E402
+        from bb import __version__  # noqa: E402
+    except ImportError as e:
+        print(f"Could not import bb from lib: {e}")
+else:
+    # Execute bitbake-setup installed with packages
+    try:
+        from importlib.metadata import version, PackageNotFoundError  # noqa:E402
+        try:
+            import bb.msg  # noqa: E402
+            import bb.process  # noqa: E402
+            __version__ = version("bitbake_setup")
+        except ImportError as e:
+            print(f"Could not import bb: {e}")
+        except PackageNotFoundError as e:
+            print(f"Could not find package bb: {e}")
+    except ImportError as e:
+        print(f"Could not import bb from package: {e}")
 
 logger = bb.msg.logger_create('bitbake-setup', sys.stdout)