diff mbox series

[v2] bitbake-setup: use internal registry if run from git checkout, bitbake repo otherwise

Message ID 20260114113348.2991476-1-alex.kanavin@gmail.com
State New
Headers show
Series [v2] bitbake-setup: use internal registry if run from git checkout, bitbake repo otherwise | expand

Commit Message

Alexander Kanavin Jan. 14, 2026, 11:33 a.m. UTC
From: Alexander Kanavin <alex@linutronix.de>

If bitbake-setup is packaged and obtained from pypi, or another package feed
it needs to be able to find standard configurations. It is not impossible
to package configurations into some location inside the package
and add logic to find them, but it is much easier to just fetch the bitbake
repo and use that as a configuration registry. The other benefit is that
such packaged/installed bitbake-setup will not have to be updated in order
to obtain latest configurations: it will simply check the registry and fetch
them as needed, which is the original intent of config registries as repos.

Signed-off-by: Alexander Kanavin <alex@linutronix.de>
---
 bin/bitbake-setup | 15 ++++++++++++---
 1 file changed, 12 insertions(+), 3 deletions(-)

Comments

Rob Woolley Jan. 15, 2026, 2:53 p.m. UTC | #1
Hi Alex,

Thanks! I will give this a try.

I have a need to be able to use bitbake-setup for air-gapped builds. I will
experiment with how we might make this work for situations where
git.openembedded.org is unavailable.  (In the past I have used git
"insteadof" to accomplish this)

Regards,
Rob

On Wed, Jan 14, 2026 at 6:33 AM Alexander Kanavin via lists.openembedded.org
<alex.kanavin=gmail.com@lists.openembedded.org> wrote:

> From: Alexander Kanavin <alex@linutronix.de>
>
> If bitbake-setup is packaged and obtained from pypi, or another package
> feed
> it needs to be able to find standard configurations. It is not impossible
> to package configurations into some location inside the package
> and add logic to find them, but it is much easier to just fetch the bitbake
> repo and use that as a configuration registry. The other benefit is that
> such packaged/installed bitbake-setup will not have to be updated in order
> to obtain latest configurations: it will simply check the registry and
> fetch
> them as needed, which is the original intent of config registries as repos.
>
> Signed-off-by: Alexander Kanavin <alex@linutronix.de>
> ---
>  bin/bitbake-setup | 15 ++++++++++++---
>  1 file changed, 12 insertions(+), 3 deletions(-)
>
> diff --git a/bin/bitbake-setup b/bin/bitbake-setup
> index 2c2b6d8ec..4ed06fc62 100755
> --- a/bin/bitbake-setup
> +++ b/bin/bitbake-setup
> @@ -21,8 +21,6 @@ import signal
>  import functools
>  import string
>
> -default_registry = os.path.normpath(os.path.dirname(__file__) +
> "/../default-registry")
> -
>  bindir = os.path.abspath(os.path.dirname(__file__))
>  sys.path[0:0] = [os.path.join(os.path.dirname(bindir), 'lib')]
>
> @@ -37,6 +35,17 @@ GLOBAL_ONLY_SETTINGS = (
>      "top-dir-name",
>  )
>
> +# If bitbake is from a release tarball or somewhere like pypi where
> +# updates may not be straightforward, prefer to use the git repo as the
> +# default registry
> +def get_default_registry():
> +    internal_registry = os.path.normpath(os.path.dirname(__file__) +
> "/../default-registry")
> +    git_registry = "git://
> git.openembedded.org/bitbake;protocol=https;branch=master;rev=master"
> +    if os.path.exists(os.path.dirname(__file__) + "/../.git"):
> +        return internal_registry
> +    else:
> +        return git_registry
> +
>  def cache_dir(top_dir):
>      return os.path.join(top_dir, '.bitbake-setup-cache')
>
> @@ -1084,7 +1093,7 @@ def main():
>          builtin_settings['default'] = {
>                           'top-dir-prefix':os.getcwd(),
>                           'top-dir-name':'bitbake-builds',
> -                         'registry':default_registry,
> +                         'registry':get_default_registry(),
>                           'use-full-setup-dir-name':'no',
>                           'common-sstate':'yes',
>                           }
> --
> 2.47.3
>
>
> -=-=-=-=-=-=-=-=-=-=-=-
> Links: You receive all messages sent to this group.
> View/Reply Online (#18752):
> https://lists.openembedded.org/g/bitbake-devel/message/18752
> Mute This Topic: https://lists.openembedded.org/mt/117259398/556952
> Group Owner: bitbake-devel+owner@lists.openembedded.org
> Unsubscribe: https://lists.openembedded.org/g/bitbake-devel/unsub [
> rob.woolleywr@gmail.com]
> -=-=-=-=-=-=-=-=-=-=-=-
>
>
diff mbox series

Patch

diff --git a/bin/bitbake-setup b/bin/bitbake-setup
index 2c2b6d8ec..4ed06fc62 100755
--- a/bin/bitbake-setup
+++ b/bin/bitbake-setup
@@ -21,8 +21,6 @@  import signal
 import functools
 import string
 
-default_registry = os.path.normpath(os.path.dirname(__file__) + "/../default-registry")
-
 bindir = os.path.abspath(os.path.dirname(__file__))
 sys.path[0:0] = [os.path.join(os.path.dirname(bindir), 'lib')]
 
@@ -37,6 +35,17 @@  GLOBAL_ONLY_SETTINGS = (
     "top-dir-name",
 )
 
+# If bitbake is from a release tarball or somewhere like pypi where
+# updates may not be straightforward, prefer to use the git repo as the
+# default registry
+def get_default_registry():
+    internal_registry = os.path.normpath(os.path.dirname(__file__) + "/../default-registry")
+    git_registry = "git://git.openembedded.org/bitbake;protocol=https;branch=master;rev=master"
+    if os.path.exists(os.path.dirname(__file__) + "/../.git"):
+        return internal_registry
+    else:
+        return git_registry
+
 def cache_dir(top_dir):
     return os.path.join(top_dir, '.bitbake-setup-cache')
 
@@ -1084,7 +1093,7 @@  def main():
         builtin_settings['default'] = {
                          'top-dir-prefix':os.getcwd(),
                          'top-dir-name':'bitbake-builds',
-                         'registry':default_registry,
+                         'registry':get_default_registry(),
                          'use-full-setup-dir-name':'no',
                          'common-sstate':'yes',
                          }