* [PATCH 0/5] Package bitbake-setup for PyPI
@ 2026-01-21 2:47 Rob Woolley
2026-01-21 2:47 ` [PATCH 1/5] gitignore: ignore Python packaging files Rob Woolley
` (5 more replies)
0 siblings, 6 replies; 16+ messages in thread
From: Rob Woolley @ 2026-01-21 2:47 UTC (permalink / raw)
To: bitbake-devel; +Cc: Alexander Kanavin
Adding bitbake-setup to PyPI is helpful to developers who are already
comfortable with using pip in their workflow.
This series makes the necessary changes to build a wheel that may
be uploaded to PyPI.
The build sequence would be:
git clone https://git.openembedded.org/bitbake
python3 -m venv venv
source venv/bin/activate
python3 -m pip install build
python3 -m build
This produces a wheel (.whl) file in the dist directory. This may
be installed using pip.
Testing included "Setting Up the Environment With bitbake-setup" from
the Yocto Project manual. As well as testing the ability to build
using local configurations.
bitbake-setup init poky-whinlatter.conf.json
For each scenario, a build of the core-image-minimal recipe was built
successfully.
Rob Woolley (5):
gitignore: ignore Python packaging files
bitbake-setup: Move into Python module
bitbake-setup: Add wrapper script for bitbake_setup module
Add Python packaging files
bitbake-setup: Add the conditional script stanza
.gitignore | 2 +
bin/bitbake-setup | 1108 +-------------------------------
lib/bitbake_setup/__init__.py | 0
lib/bitbake_setup/__main__.py | 1110 +++++++++++++++++++++++++++++++++
pyproject.toml | 3 +
setup.cfg | 40 ++
6 files changed, 1160 insertions(+), 1103 deletions(-)
create mode 100644 lib/bitbake_setup/__init__.py
create mode 100755 lib/bitbake_setup/__main__.py
create mode 100644 pyproject.toml
create mode 100644 setup.cfg
--
2.49.0
^ permalink raw reply [flat|nested] 16+ messages in thread* [PATCH 1/5] gitignore: ignore Python packaging files 2026-01-21 2:47 [PATCH 0/5] Package bitbake-setup for PyPI Rob Woolley @ 2026-01-21 2:47 ` Rob Woolley 2026-01-21 2:47 ` [PATCH 2/5] bitbake-setup: Move into Python module Rob Woolley ` (4 subsequent siblings) 5 siblings, 0 replies; 16+ messages in thread From: Rob Woolley @ 2026-01-21 2:47 UTC (permalink / raw) To: bitbake-devel; +Cc: Alexander Kanavin Signed-off-by: Rob Woolley <rob.woolley@windriver.com> --- .gitignore | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.gitignore b/.gitignore index a6a256b2..0d8a8e23 100644 --- a/.gitignore +++ b/.gitignore @@ -17,3 +17,5 @@ lib/toaster/contrib/tts/backlog.txt lib/toaster/contrib/tts/log/* lib/toaster/contrib/tts/.cache/* lib/bb/tests/runqueue-tests/bitbake-cookerdaemon.log +dist/ +*.egg-info/ -- 2.49.0 ^ permalink raw reply related [flat|nested] 16+ messages in thread
* [PATCH 2/5] bitbake-setup: Move into Python module 2026-01-21 2:47 [PATCH 0/5] Package bitbake-setup for PyPI Rob Woolley 2026-01-21 2:47 ` [PATCH 1/5] gitignore: ignore Python packaging files Rob Woolley @ 2026-01-21 2:47 ` Rob Woolley 2026-01-21 2:47 ` [PATCH 3/5] bitbake-setup: Add wrapper script for bitbake_setup module Rob Woolley ` (3 subsequent siblings) 5 siblings, 0 replies; 16+ messages in thread From: Rob Woolley @ 2026-01-21 2:47 UTC (permalink / raw) To: bitbake-devel; +Cc: Alexander Kanavin Create a separate Python module for bitbake_setup to be invoked from a wrapper script. Signed-off-by: Rob Woolley <rob.woolley@windriver.com> --- lib/bitbake_setup/__init__.py | 0 bin/bitbake-setup => lib/bitbake_setup/__main__.py | 0 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 lib/bitbake_setup/__init__.py rename bin/bitbake-setup => lib/bitbake_setup/__main__.py (100%) diff --git a/lib/bitbake_setup/__init__.py b/lib/bitbake_setup/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/bin/bitbake-setup b/lib/bitbake_setup/__main__.py similarity index 100% rename from bin/bitbake-setup rename to lib/bitbake_setup/__main__.py -- 2.49.0 ^ permalink raw reply [flat|nested] 16+ messages in thread
* [PATCH 3/5] bitbake-setup: Add wrapper script for bitbake_setup module 2026-01-21 2:47 [PATCH 0/5] Package bitbake-setup for PyPI Rob Woolley 2026-01-21 2:47 ` [PATCH 1/5] gitignore: ignore Python packaging files Rob Woolley 2026-01-21 2:47 ` [PATCH 2/5] bitbake-setup: Move into Python module Rob Woolley @ 2026-01-21 2:47 ` Rob Woolley 2026-01-21 9:29 ` [bitbake-devel] " Alexander Kanavin 2026-01-21 2:47 ` [PATCH 4/5] Add Python packaging files Rob Woolley ` (2 subsequent siblings) 5 siblings, 1 reply; 16+ messages in thread From: Rob Woolley @ 2026-01-21 2:47 UTC (permalink / raw) To: bitbake-devel; +Cc: Alexander Kanavin This wrapper script is used to support the workflow where bitbake-setup is invoked from the bitbake git repository. It uses the directory of the script to find the bitbake_setup module present in the same git repository. Signed-off-by: Rob Woolley <rob.woolley@windriver.com> --- bin/bitbake-setup | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100755 bin/bitbake-setup diff --git a/bin/bitbake-setup b/bin/bitbake-setup new file mode 100755 index 00000000..e1b1cdd1 --- /dev/null +++ b/bin/bitbake-setup @@ -0,0 +1,11 @@ +#!/usr/bin/env python3 +import os +import sys + +ROOT = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) +sys.path.insert(0, os.path.join(ROOT,'lib')) + +from bitbake_setup.__main__ import main + +if __name__ == "__main__": + main() -- 2.49.0 ^ permalink raw reply related [flat|nested] 16+ messages in thread
* Re: [bitbake-devel] [PATCH 3/5] bitbake-setup: Add wrapper script for bitbake_setup module 2026-01-21 2:47 ` [PATCH 3/5] bitbake-setup: Add wrapper script for bitbake_setup module Rob Woolley @ 2026-01-21 9:29 ` Alexander Kanavin 0 siblings, 0 replies; 16+ messages in thread From: Alexander Kanavin @ 2026-01-21 9:29 UTC (permalink / raw) To: rob.woolley; +Cc: bitbake-devel, Alexander Kanavin On Wed, 21 Jan 2026 at 03:47, Rob Woolley via lists.openembedded.org <rob.woolley=windriver.com@lists.openembedded.org> wrote: > > This wrapper script is used to support the workflow where > bitbake-setup is invoked from the bitbake git repository. > > It uses the directory of the script to find the bitbake_setup > module present in the same git repository. > > Signed-off-by: Rob Woolley <rob.woolley@windriver.com> > --- > bin/bitbake-setup | 11 +++++++++++ > 1 file changed, 11 insertions(+) > create mode 100755 bin/bitbake-setup > > diff --git a/bin/bitbake-setup b/bin/bitbake-setup > new file mode 100755 > index 00000000..e1b1cdd1 > --- /dev/null > +++ b/bin/bitbake-setup > @@ -0,0 +1,11 @@ > +#!/usr/bin/env python3 > +import os > +import sys > + > +ROOT = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) > +sys.path.insert(0, os.path.join(ROOT,'lib')) > + > +from bitbake_setup.__main__ import main > + > +if __name__ == "__main__": > + main() I'm not sure I understand the rationale for this and the previous patch. Why do we need to convert bitbake-setup into a module, and replace the executable with a wrapper? Alex ^ permalink raw reply [flat|nested] 16+ messages in thread
* [PATCH 4/5] Add Python packaging files 2026-01-21 2:47 [PATCH 0/5] Package bitbake-setup for PyPI Rob Woolley ` (2 preceding siblings ...) 2026-01-21 2:47 ` [PATCH 3/5] bitbake-setup: Add wrapper script for bitbake_setup module Rob Woolley @ 2026-01-21 2:47 ` Rob Woolley 2026-01-21 9:41 ` [bitbake-devel] " Alexander Kanavin ` (2 more replies) 2026-01-21 2:47 ` [PATCH 5/5] bitbake-setup: Add the conditional script stanza Rob Woolley 2026-01-21 9:34 ` [bitbake-devel] [PATCH 0/5] Package bitbake-setup for PyPI Alexander Kanavin 5 siblings, 3 replies; 16+ messages in thread From: Rob Woolley @ 2026-01-21 2:47 UTC (permalink / raw) To: bitbake-devel; +Cc: Alexander Kanavin This enables creating a pip package for PyPI with: python3 -m build Signed-off-by: Rob Woolley <rob.woolley@windriver.com> --- pyproject.toml | 3 +++ setup.cfg | 40 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 43 insertions(+) create mode 100644 pyproject.toml create mode 100644 setup.cfg diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 00000000..4aff98bb --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,3 @@ +[build-system] +requires = ["setuptools>=61.0.0", "wheel"] +build-backend = "setuptools.build_meta" diff --git a/setup.cfg b/setup.cfg new file mode 100644 index 00000000..3eaa3c49 --- /dev/null +++ b/setup.cfg @@ -0,0 +1,40 @@ +[metadata] +name = bitbake-setup +version = 2.16.0a1 +author = OpenEmbedded BitBake Developers +author_email = bitbake-devel@lists.openembedded.org +description = bitbake-setup +long_description = file: README.md +long_description_content_type = text/markdown +url = https://github.com/openembedded/bitbake.git +license = "GPL-2.0-only and MIT" +classifiers = + Programming Language :: Python :: 3 + License :: OSI Approved :: MIT License + License :: OSI Approved :: GNU General Public License v2 (GPLv2) + Operating System :: POSIX :: Linux + +[options] +package_dir = + = lib +packages = find: +include_package_data = True +zip_safe = False +python_requires = >=3.6 +py_modules = codegen + +install_requires = + ; List any non-standard dependencies BitBake needs + ; BitBake is mostly self-contained, but check its documentation + +[options.packages.find] +where = lib +include = + bb* + bs4* + ply + bitbake_setup + +[options.entry_points] +console_scripts = + bitbake-setup = bitbake_setup.__main__:main -- 2.49.0 ^ permalink raw reply related [flat|nested] 16+ messages in thread
* Re: [bitbake-devel] [PATCH 4/5] Add Python packaging files 2026-01-21 2:47 ` [PATCH 4/5] Add Python packaging files Rob Woolley @ 2026-01-21 9:41 ` Alexander Kanavin 2026-01-21 10:01 ` Quentin Schulz 2026-01-21 9:47 ` Quentin Schulz 2026-01-21 10:01 ` Antonin Godard 2 siblings, 1 reply; 16+ messages in thread From: Alexander Kanavin @ 2026-01-21 9:41 UTC (permalink / raw) To: rob.woolley; +Cc: bitbake-devel, Alexander Kanavin, Richard Purdie On Wed, 21 Jan 2026 at 03:47, Rob Woolley via lists.openembedded.org <rob.woolley=windriver.com@lists.openembedded.org> wrote: > +version = 2.16.0a1 There are other issues in setup.cfg, and the commit title should be: 'bitbake-setup: add pypi packaging', but before that I think we need to consider the release strategy and version scheme for it, and get RP's blessing :) Here's what there is in terms of tags and branches, and from what I've heard it is not easy to change: https://git.openembedded.org/bitbake/ I guess, bitbake-setup would only be released from the master branch, at least once when a new yocto release happens, at the point where stable and master branches diverge. Those releases should match the stable version, e.g. whinlatter release would have been 2.16. Then the question I can't quite answer is, how to version something from the master trunk? E.g. if we want to release from master right now, what version would it have? Note that ideally it needs to contain the short commit id, for traceability. Alex ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [bitbake-devel] [PATCH 4/5] Add Python packaging files 2026-01-21 9:41 ` [bitbake-devel] " Alexander Kanavin @ 2026-01-21 10:01 ` Quentin Schulz 2026-01-21 10:07 ` Alexander Kanavin 2026-02-11 14:40 ` Rob Woolley 0 siblings, 2 replies; 16+ messages in thread From: Quentin Schulz @ 2026-01-21 10:01 UTC (permalink / raw) To: alex.kanavin, rob.woolley Cc: bitbake-devel, Alexander Kanavin, Richard Purdie Hi Alex, Rob, On 1/21/26 10:41 AM, Alexander Kanavin via lists.openembedded.org wrote: > On Wed, 21 Jan 2026 at 03:47, Rob Woolley via lists.openembedded.org > <rob.woolley=windriver.com@lists.openembedded.org> wrote: >> +version = 2.16.0a1 > > There are other issues in setup.cfg, and the commit title should be: > 'bitbake-setup: add pypi packaging', but before that I think we need > to consider the release strategy and version scheme for it, and get > RP's blessing :) > > Here's what there is in terms of tags and branches, and from what I've > heard it is not easy to change: > https://git.openembedded.org/bitbake/ > > I guess, bitbake-setup would only be released from the master branch, > at least once when a new yocto release happens, at the point where > stable and master branches diverge. Those releases should match the > stable version, e.g. whinlatter release would have been 2.16. > > Then the question I can't quite answer is, how to version something > from the master trunk? E.g. if we want to release from master right > now, what version would it have? Note that ideally it needs to contain > the short commit id, for traceability. > setuptools_scm should be able to handle that, see https://setuptools-scm.readthedocs.io/en/stable/usage/#default-versioning-scheme. I've yet to play with it (will try with https://github.com/yoctoproject/bmaptool/ in the next few weeks). Note that as far as I could tell this means all versioned files in the repo are part of the sdist by default (but you can exclude them via MANIFEST.in). The next question is whether we're planning to upload bitbake itself to PyPI in the future? If so, we need to be careful about the layout. Building two packages from the same git repo isn't that straightforward if I remember correctly so if we're moving things around, better anticipate this possibility so we don't have to move everything around again once we want to publish bitbake itself. Cheers, Quentin ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [bitbake-devel] [PATCH 4/5] Add Python packaging files 2026-01-21 10:01 ` Quentin Schulz @ 2026-01-21 10:07 ` Alexander Kanavin 2026-02-11 14:40 ` Rob Woolley 1 sibling, 0 replies; 16+ messages in thread From: Alexander Kanavin @ 2026-01-21 10:07 UTC (permalink / raw) To: quentin.schulz Cc: rob.woolley, bitbake-devel, Alexander Kanavin, Richard Purdie On Wed, 21 Jan 2026 at 11:02, Quentin Schulz via lists.openembedded.org <quentin.schulz=cherry.de@lists.openembedded.org> wrote: > The next question is whether we're planning to upload bitbake itself to > PyPI in the future? If so, we need to be careful about the layout. > Building two packages from the same git repo isn't that straightforward > if I remember correctly so if we're moving things around, better > anticipate this possibility so we don't have to move everything around > again once we want to publish bitbake itself. The answer to publishing bitbake itself is a firm no. That said, bitbake-setup packaging files still shouldn't be at the top level. There should be a script that moves them into right place before doing the packaging step, or ideally packaging should be pointed to use a sub-directory. Alex ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [bitbake-devel] [PATCH 4/5] Add Python packaging files 2026-01-21 10:01 ` Quentin Schulz 2026-01-21 10:07 ` Alexander Kanavin @ 2026-02-11 14:40 ` Rob Woolley 2026-02-12 11:38 ` Alexander Kanavin 1 sibling, 1 reply; 16+ messages in thread From: Rob Woolley @ 2026-02-11 14:40 UTC (permalink / raw) To: quentin.schulz Cc: alex.kanavin, bitbake-devel, Alexander Kanavin, Richard Purdie [-- Attachment #1: Type: text/plain, Size: 4366 bytes --] On Wed, Jan 21, 2026 at 5:02 AM Quentin Schulz via lists.openembedded.org <quentin.schulz=cherry.de@lists.openembedded.org> wrote: > On 1/21/26 10:41 AM, Alexander Kanavin via lists.openembedded.org wrote: > > On Wed, 21 Jan 2026 at 03:47, Rob Woolley via lists.openembedded.org > > <rob.woolley=windriver.com@lists.openembedded.org> wrote: > >> +version = 2.16.0a1 > > > > There are other issues in setup.cfg, and the commit title should be: > > 'bitbake-setup: add pypi packaging', but before that I think we need > > to consider the release strategy and version scheme for it, and get > > RP's blessing :) > > > > Here's what there is in terms of tags and branches, and from what I've > > heard it is not easy to change: > > https://git.openembedded.org/bitbake/ > > > > I guess, bitbake-setup would only be released from the master branch, > > at least once when a new yocto release happens, at the point where > > stable and master branches diverge. Those releases should match the > > stable version, e.g. whinlatter release would have been 2.16. > > > > Then the question I can't quite answer is, how to version something > > from the master trunk? E.g. if we want to release from master right > > now, what version would it have? Note that ideally it needs to contain > > the short commit id, for traceability. > > > > setuptools_scm should be able to handle that, see > > https://setuptools-scm.readthedocs.io/en/stable/usage/#default-versioning-scheme. > > I've yet to play with it (will try with > https://github.com/yoctoproject/bmaptool/ in the next few weeks). > > Note that as far as I could tell this means all versioned files in the > repo are part of the sdist by default (but you can exclude them via > MANIFEST.in). > > The next question is whether we're planning to upload bitbake itself to > PyPI in the future? If so, we need to be careful about the layout. > Building two packages from the same git repo isn't that straightforward > if I remember correctly so if we're moving things around, better > anticipate this possibility so we don't have to move everything around > again once we want to publish bitbake itself. > > Cheers, > Quentin > Quick update on progress: I have replaced nox and pytest with Python unittest so that the tests can be invoked from bitbake-selftest. The new PyPIPackagingTest still uses package-bitbake-setup.py to copy the files from contrib/pypi to a staging directory. This is needed to reorganize the layout such that pyproject.toml is at the root with the source code in subdirectories. I experimented with using setuptools_scm to automatically detect the version number for creating the Python package. Using setuptools_scm for determining the version based on git tags conflicts with creating the staging directory. Whether it is outside the git repo (e.g. in TMPDIR) or in a sub-directory (e.g. <git repo root>/packaging_workspace) it fails to detect the latest git tag. In the case of it being in a subdirectory, I need to set root (e.g. root = "..") in the tool.setuptools_scm section of pyproject.toml for it to succeed. If we want to use setuptools_scm with git for automatic versioning then we will need to use a fixed (temporary) directory in the git repository (eg. ./packaging_workspace). If a developer chooses another location for scratch work the version will fallback to 0.0.0, which seems acceptable to me. I added a test in PyPIPackagingTest to check for this failure case when doing "production" builds. Are we okay with pinning the temporary staging directory inside the git repository? If so, do you have a preference as to what that directory is called and where it is located? The setuptools_scm uses git tags rather than branches. We may want to consider updating our tagging strategy if we want to use it to automatically describe the commit for packages built on master. One option we have is to set tag_regex in pyproject.toml to a custom pattern. Thus we could create tags like bitbake-v2.16.0 or bitbake-setup-v2.16.0 to provide a reference point for results like bitbake-setup-2.16.1.dev0+gd2e159d85.d20260211 or something simpler like bitbake-setup-2.16.2.dev1 (see https://setuptools-scm.readthedocs.io/en/latest/extending/#version-number-construction ) Regards, Rob [-- Attachment #2: Type: text/html, Size: 5769 bytes --] ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [bitbake-devel] [PATCH 4/5] Add Python packaging files 2026-02-11 14:40 ` Rob Woolley @ 2026-02-12 11:38 ` Alexander Kanavin 2026-02-12 12:50 ` Quentin Schulz 0 siblings, 1 reply; 16+ messages in thread From: Alexander Kanavin @ 2026-02-12 11:38 UTC (permalink / raw) To: Rob Woolley Cc: quentin.schulz, bitbake-devel, Alexander Kanavin, Richard Purdie On Wed, 11 Feb 2026 at 15:41, Rob Woolley <rob.woolleywr@gmail.com> wrote: > Are we okay with pinning the temporary staging directory inside the git repository? If so, do you have a preference as to what that directory is called and where it is located? I am okay and I have no particular preference. As long as it's in .gitignore. > The setuptools_scm uses git tags rather than branches. We may want to consider updating our tagging strategy if we want to use it to automatically describe the commit for packages built on master. One option we have is to set tag_regex in pyproject.toml to a custom pattern. Thus we could create tags like bitbake-v2.16.0 or bitbake-setup-v2.16.0 to provide a reference point for results like bitbake-setup-2.16.1.dev0+gd2e159d85.d20260211 or something simpler like bitbake-setup-2.16.2.dev1 (see https://setuptools-scm.readthedocs.io/en/latest/extending/#version-number-construction) The tags available in master branch can be see with 'git tag --merged master'. It seems that the two most suitable sets are at the end: 2024-04-scarthgap 2024-10-styhead 2025-04-walnascar 2025-04.1-walnascar 2025-10-whinlatter ... yocto-5.0 yocto-5.1 yocto-5.2 yocto-5.2.1 yocto-5.3 So we could simply use one of these versions (they match exact release points), and then add a .relN+hash if that can be done automatically. And then there's no need to introduce new tag schemes or extra work for RP. I like the one with the year and release name a bit more, because it's more informative to the users. Alex ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [bitbake-devel] [PATCH 4/5] Add Python packaging files 2026-02-12 11:38 ` Alexander Kanavin @ 2026-02-12 12:50 ` Quentin Schulz 0 siblings, 0 replies; 16+ messages in thread From: Quentin Schulz @ 2026-02-12 12:50 UTC (permalink / raw) To: Alexander Kanavin, Rob Woolley Cc: bitbake-devel, Alexander Kanavin, Richard Purdie Hi Alex, On 2/12/26 12:38 PM, Alexander Kanavin wrote: > On Wed, 11 Feb 2026 at 15:41, Rob Woolley <rob.woolleywr@gmail.com> wrote: > >> Are we okay with pinning the temporary staging directory inside the git repository? If so, do you have a preference as to what that directory is called and where it is located? > > I am okay and I have no particular preference. As long as it's in .gitignore. > >> The setuptools_scm uses git tags rather than branches. We may want to consider updating our tagging strategy if we want to use it to automatically describe the commit for packages built on master. One option we have is to set tag_regex in pyproject.toml to a custom pattern. Thus we could create tags like bitbake-v2.16.0 or bitbake-setup-v2.16.0 to provide a reference point for results like bitbake-setup-2.16.1.dev0+gd2e159d85.d20260211 or something simpler like bitbake-setup-2.16.2.dev1 (see https://setuptools-scm.readthedocs.io/en/latest/extending/#version-number-construction) > > The tags available in master branch can be see with 'git tag --merged > master'. It seems that the two most suitable sets are at the end: > > 2024-04-scarthgap > 2024-10-styhead > 2025-04-walnascar > 2025-04.1-walnascar > 2025-10-whinlatter > ... > yocto-5.0 > yocto-5.1 > yocto-5.2 > yocto-5.2.1 > yocto-5.3 > > So we could simply use one of these versions (they match exact release > points), and then add a .relN+hash if that can be done automatically. > And then there's no need to introduce new tag schemes or extra work > for RP. I like the one with the year and release name a bit more, > because it's more informative to the users. > Read https://packaging.python.org/en/latest/specifications/version-specifiers/ and https://peps.python.org/pep-0440/. Specifically: """ Local version identifiers SHOULD NOT be used when publishing upstream projects to a public index server """ The local version is whatever's after a +. So this isn't an option. Also, no yocto- or -<yocto-release> string possible. See https://packaging.python.org/en/latest/specifications/version-specifiers/#public-version-identifiers 2025-04.1 will also not be a valid public version identifier. It needs to be 2025.04.1. So the only viable option would be 5.3 for example (you can strip yocto- automatically in versioningit for example). Now the issue for BitBake repo is that we have the initial release tag on the master branch. This means that the tag is present both on master and 2.16 branch for example. This also means that X.Y.Z.devN may point to two different commits, the N-th one after X.Y.Z release in the release branch, or the N-th one in master. This is of course illegal on PyPI so we'll need to separate them. I'm suggesting to use .devN for master and .postN for release branches. How to make this work with the packaging tool... I don't know. I see that versioningit has customizable hooks so maybe that could be an answer on doing this manually in some way. See https://versioningit.readthedocs.io/en/stable/configuration.html and https://versioningit.readthedocs.io/en/stable/writing-methods.html Cheers, Quentin ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [bitbake-devel] [PATCH 4/5] Add Python packaging files 2026-01-21 2:47 ` [PATCH 4/5] Add Python packaging files Rob Woolley 2026-01-21 9:41 ` [bitbake-devel] " Alexander Kanavin @ 2026-01-21 9:47 ` Quentin Schulz 2026-01-21 10:01 ` Antonin Godard 2 siblings, 0 replies; 16+ messages in thread From: Quentin Schulz @ 2026-01-21 9:47 UTC (permalink / raw) To: rob.woolley, bitbake-devel; +Cc: Alexander Kanavin Hi Rob, On 1/21/26 3:47 AM, Rob Woolley via lists.openembedded.org wrote: > This enables creating a pip package for PyPI with: > > python3 -m build > > Signed-off-by: Rob Woolley <rob.woolley@windriver.com> > --- > pyproject.toml | 3 +++ > setup.cfg | 40 ++++++++++++++++++++++++++++++++++++++++ Please migrate everything in setup.cfg into pyproject.toml, there's no reason to use an ancient mechanism. (This may require a more recent setuptools) > 2 files changed, 43 insertions(+) > create mode 100644 pyproject.toml > create mode 100644 setup.cfg > > diff --git a/pyproject.toml b/pyproject.toml > new file mode 100644 > index 00000000..4aff98bb > --- /dev/null > +++ b/pyproject.toml > @@ -0,0 +1,3 @@ > +[build-system] > +requires = ["setuptools>=61.0.0", "wheel"] > +build-backend = "setuptools.build_meta" > diff --git a/setup.cfg b/setup.cfg > new file mode 100644 > index 00000000..3eaa3c49 > --- /dev/null > +++ b/setup.cfg > @@ -0,0 +1,40 @@ > +[metadata] > +name = bitbake-setup > +version = 2.16.0a1 100% we are going to forget updating this field. I'm wondering if we cannot simply use setuptools_scm to have a dynamic version? Or use the version from lib/bb/__init__.py? > +author = OpenEmbedded BitBake Developers > +author_email = bitbake-devel@lists.openembedded.org > +description = bitbake-setup > +long_description = file: README.md > +long_description_content_type = text/markdown > +url = https://github.com/openembedded/bitbake.git > +license = "GPL-2.0-only and MIT" Must be uppercase, so AND. c.f. https://spdx.github.io/spdx-spec/v2.2.2/SPDX-license-expressions/#d2-case-sensitivity > +classifiers = > + Programming Language :: Python :: 3 > + License :: OSI Approved :: MIT License > + License :: OSI Approved :: GNU General Public License v2 (GPLv2) This is deprecated since PEP639, c.f. https://peps.python.org/pep-0639/#deprecate-license-classifiers > + Operating System :: POSIX :: Linux > + > +[options] > +package_dir = > + = lib > +packages = find: > +include_package_data = True > +zip_safe = False > +python_requires = >=3.6 3.9.0 as reported in __init__.py. > +py_modules = codegen > + > +install_requires = > + ; List any non-standard dependencies BitBake needs > + ; BitBake is mostly self-contained, but check its documentation > + > +[options.packages.find] > +where = lib > +include = > + bb* Is this meant to match both lib/bb/ and lib/bblayers/ ? Why not explicitly list both? > + bs4* What is this supposed to match except lib/bs4/? Cheers, Quentin ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [bitbake-devel] [PATCH 4/5] Add Python packaging files 2026-01-21 2:47 ` [PATCH 4/5] Add Python packaging files Rob Woolley 2026-01-21 9:41 ` [bitbake-devel] " Alexander Kanavin 2026-01-21 9:47 ` Quentin Schulz @ 2026-01-21 10:01 ` Antonin Godard 2 siblings, 0 replies; 16+ messages in thread From: Antonin Godard @ 2026-01-21 10:01 UTC (permalink / raw) To: rob.woolley, bitbake-devel; +Cc: Alexander Kanavin Hi, On Wed Jan 21, 2026 at 3:47 AM CET, Rob Woolley via lists.openembedded.org wrote: > This enables creating a pip package for PyPI with: > > python3 -m build > > Signed-off-by: Rob Woolley <rob.woolley@windriver.com> > --- > pyproject.toml | 3 +++ > setup.cfg | 40 ++++++++++++++++++++++++++++++++++++++++ > 2 files changed, 43 insertions(+) > create mode 100644 pyproject.toml > create mode 100644 setup.cfg > > diff --git a/pyproject.toml b/pyproject.toml > new file mode 100644 > index 00000000..4aff98bb > --- /dev/null > +++ b/pyproject.toml > @@ -0,0 +1,3 @@ > +[build-system] > +requires = ["setuptools>=61.0.0", "wheel"] > +build-backend = "setuptools.build_meta" > diff --git a/setup.cfg b/setup.cfg > new file mode 100644 > index 00000000..3eaa3c49 > --- /dev/null > +++ b/setup.cfg > @@ -0,0 +1,40 @@ > +[metadata] > +name = bitbake-setup > +version = 2.16.0a1 > +author = OpenEmbedded BitBake Developers > +author_email = bitbake-devel@lists.openembedded.org > +description = bitbake-setup > +long_description = file: README.md I don't think we have a README.md file? Perhaps doc/bitbake-user-manual/bitbake-user-manual-environment-setup.rst would be a better candidate here? > +long_description_content_type = text/markdown This would be text/x-rst then. > +url = https://github.com/openembedded/bitbake.git It should probably be https://git.openembedded.org/bitbake/? The github version is supposed to be a mirror only I think. Antonin -- Antonin Godard, Bootlin Embedded Linux and Kernel engineering https://bootlin.com ^ permalink raw reply [flat|nested] 16+ messages in thread
* [PATCH 5/5] bitbake-setup: Add the conditional script stanza 2026-01-21 2:47 [PATCH 0/5] Package bitbake-setup for PyPI Rob Woolley ` (3 preceding siblings ...) 2026-01-21 2:47 ` [PATCH 4/5] Add Python packaging files Rob Woolley @ 2026-01-21 2:47 ` Rob Woolley 2026-01-21 9:34 ` [bitbake-devel] [PATCH 0/5] Package bitbake-setup for PyPI Alexander Kanavin 5 siblings, 0 replies; 16+ messages in thread From: Rob Woolley @ 2026-01-21 2:47 UTC (permalink / raw) To: bitbake-devel; +Cc: Alexander Kanavin This ensures that the main function is only executed if the module is executed in the top-level environment. Signed-off-by: Rob Woolley <rob.woolley@windriver.com> --- lib/bitbake_setup/__main__.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/bitbake_setup/__main__.py b/lib/bitbake_setup/__main__.py index a69dc750..d23582dd 100755 --- a/lib/bitbake_setup/__main__.py +++ b/lib/bitbake_setup/__main__.py @@ -1106,4 +1106,5 @@ def main(): from argparse import Namespace parser.print_help() -main() +if __name__ == '__main__': + main() -- 2.49.0 ^ permalink raw reply related [flat|nested] 16+ messages in thread
* Re: [bitbake-devel] [PATCH 0/5] Package bitbake-setup for PyPI 2026-01-21 2:47 [PATCH 0/5] Package bitbake-setup for PyPI Rob Woolley ` (4 preceding siblings ...) 2026-01-21 2:47 ` [PATCH 5/5] bitbake-setup: Add the conditional script stanza Rob Woolley @ 2026-01-21 9:34 ` Alexander Kanavin 5 siblings, 0 replies; 16+ messages in thread From: Alexander Kanavin @ 2026-01-21 9:34 UTC (permalink / raw) To: rob.woolley; +Cc: bitbake-devel, Alexander Kanavin On Wed, 21 Jan 2026 at 03:47, Rob Woolley via lists.openembedded.org <rob.woolley=windriver.com@lists.openembedded.org> wrote: > > Adding bitbake-setup to PyPI is helpful to developers who are already > comfortable with using pip in their workflow. > > This series makes the necessary changes to build a wheel that may > be uploaded to PyPI. > > The build sequence would be: > git clone https://git.openembedded.org/bitbake > > python3 -m venv venv > source venv/bin/activate > > python3 -m pip install build > python3 -m build > This produces a wheel (.whl) file in the dist directory. This may > be installed using pip. There should be a test for producing the .whl, ideally that also installs the resulting local .whl into a temporary location and runs 'bitbake-setup list' from that installation. Is that feasible? The instructions to produce, publish, and install the .whl should be in a README. Alex ^ permalink raw reply [flat|nested] 16+ messages in thread
end of thread, other threads:[~2026-02-12 12:50 UTC | newest] Thread overview: 16+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2026-01-21 2:47 [PATCH 0/5] Package bitbake-setup for PyPI Rob Woolley 2026-01-21 2:47 ` [PATCH 1/5] gitignore: ignore Python packaging files Rob Woolley 2026-01-21 2:47 ` [PATCH 2/5] bitbake-setup: Move into Python module Rob Woolley 2026-01-21 2:47 ` [PATCH 3/5] bitbake-setup: Add wrapper script for bitbake_setup module Rob Woolley 2026-01-21 9:29 ` [bitbake-devel] " Alexander Kanavin 2026-01-21 2:47 ` [PATCH 4/5] Add Python packaging files Rob Woolley 2026-01-21 9:41 ` [bitbake-devel] " Alexander Kanavin 2026-01-21 10:01 ` Quentin Schulz 2026-01-21 10:07 ` Alexander Kanavin 2026-02-11 14:40 ` Rob Woolley 2026-02-12 11:38 ` Alexander Kanavin 2026-02-12 12:50 ` Quentin Schulz 2026-01-21 9:47 ` Quentin Schulz 2026-01-21 10:01 ` Antonin Godard 2026-01-21 2:47 ` [PATCH 5/5] bitbake-setup: Add the conditional script stanza Rob Woolley 2026-01-21 9:34 ` [bitbake-devel] [PATCH 0/5] Package bitbake-setup for PyPI Alexander Kanavin
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox