Skip to content

Comments

bitbake: Merge latest upstream#47

Draft
Shreejit-03 wants to merge 161 commits intoni:nilrt/master/nextfrom
Shreejit-03:dev/automerge/ni
Draft

bitbake: Merge latest upstream#47
Shreejit-03 wants to merge 161 commits intoni:nilrt/master/nextfrom
Shreejit-03:dev/automerge/ni

Conversation

@Shreejit-03
Copy link

Merge latest from upstream. No conflicts.

AB#3599972

  • Built pyrex container
  • bitbake packagefeed-ni-core
  • bitbake package-index && bitbake nilrt-base-system-image
  • Installed BSI on a VM and verified it boots successfully

jo-so-nx and others added 30 commits October 17, 2025 16:43
Signed-off-by: Jörg Sommer <joerg.sommer@navimatix.de>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
The regex used to detect bitbake files was improved in patch 9.1.1732.
Update the plugin to match that logic and fix a bug where the wrong
expression was used to set the file type

Signed-off-by: Joshua Watt <JPEWhacker@gmail.com>
Signed-off-by: Mathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
…S_BUILTIN

The actual variable name used in oe-core is OE_FRAGMENTS_BUILTIN,
which is in a consistent format with other OE_FRAGMENTS_XXX vars.

Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
Signed-off-by: Mathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
…ment

--global was defined twice (for settings command as a whole, and specifically
for set/unset sub-commands), which caused 'settings --global set ...' to
be allowed, and at the same time not have any effect. 'settings set --global'
is the only valid form after this change.

Signed-off-by: Alexander Kanavin <alex@linutronix.de>
Tested-by: Antonin Godard <antonin.godard@bootlin.com>
Signed-off-by: Mathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Describe the roles of AUTOREV and SRCREV_FORMAT in the fetching step.
Add their missing descriptions to the variable reference section.

Fixes [YOCTO #14498]

Signed-off-by: Adam Blank <adam.blank.g@gmail.com>
Reviewed-by: Antonin Godard <antonin.godard@bootlin.com>
Signed-off-by: Mathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Fix encountered style issues in the fetching section.
Mention that "subdir" and fetcher specific parameters can stack-up.

Signed-off-by: Adam Blank <adam.blank.g@gmail.com>
Reviewed-by: Antonin Godard <antonin.godard@bootlin.com>
Signed-off-by: Mathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Current wording makes it difficult to understand what
exactly is done with INHERIT-ed anonymous functions and
when.

Signed-off-by: Adam Blank <adam.blank.g@gmail.com>
Reviewed-by: Antonin Godard <antonin.godard@bootlin.com>
Signed-off-by: Mathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
… the proto in the message

Signed-off-by: Chris Laplante <chris.laplante@agilent.com>
Signed-off-by: Mathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Adding documentation for having an empty first component for the
SRCREV_FORMAT.

Signed-off-by: Patrick Vogelaar <patrick.vogelaar.dev@mailbox.org>
Signed-off-by: Mathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Extend the current documentation of PERSISTENT_DIR:

- Mention that it also contains the hash equivalence database when
  BB_HASHSERVE = auto.
- Mention that it should not be shared between builds.

[YOCTO #15727]

Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
Signed-off-by: Mathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
After a terminology review by Antonin we brainstormed
something less confusing than 'build' and 'build directory'
for the place where bitbake-setup clones layers and
creates a *bitbake* build directory in. People are bound
to get these two confused and mix them up, and 'setup' is
much more distinct and aligns nicely with 'bitbake-setup'.
It's also not claimed by anything else in OE/Yocto.

So before:

top-dir -> build-dir (can be several) -> bitbake build dir, layer dir, config dir

Now:

top-dir -> setup-dir (can be several) -> bitbake build dir, layer dir, config dir

This also updates the respective command line options, I understand it's
a breaking change, but as before the tweaks are simple and we need to get the
terminology right for the users, and now is the time to do it.

Signed-off-by: Alexander Kanavin <alex@linutronix.de>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
    This adds support for the new bitbake-setup:
      * Maintain backwards compatibility for poky-classic releases
      * Assume bitbake-setup for all releases 'master' and forward
      * When no ".templateconf" assume Poky and not OE
      * Generate and use "init-build-env" script instead of 'oe-init-build-env'
        directly, but "cd" to the clone and not the local installation.
      * Include "bblayers.conf" because "cookerdata.py" now explicitly
        required it, and let it be over-ridden by the usual "toaster-bblayers.conf".
      * Force the value "TOPDIR" in "toaster.conf" to the local project's directory.

    Normally "cookerdata.py" sets TOPDIR from getcwd(), but somehow in bitbake-setup
    mode the CWD at this point has become ".../layers/openembedded-core", so
    "bitbake.conf and all other files cannot be found. This non-obvious problem was
    hard to discover. Until this is understood, the forced value will make things work.

    [YOCTO #16012]

Signed-off-by: David Reyna <David.Reyna@windriver.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
…tings_path'

Rename the function to align with the corresponding
'global_settings_path' function, and move it down just above the
later.

This is done to differentiate from the built-in default settings, and
to align with the other places in the code that use 'topdir_settings'
(or 'global_settings')

Signed-off-by: Johannes Schneider <johannes.schneider@leica-geosystems.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Setting a key=value in a new section would raise a key-error when
using in-memory settings, e.g:

./bin/bitbake-setup --setting default top-dir-prefix /tmp/bitbake-setup --setting default top-dir-name gs settings foo bar baz

Loading settings from
    /tmp/bitbake-setup/gs/settings.conf

Traceback (most recent call last):
  File "/tmp/bitbake-setup/bitbake/./bin/bitbake-setup", line 853, in <module>
    main()
  File "/tmp/bitbake-setup/bitbake/./bin/bitbake-setup", line 838, in main
    all_settings = merge_settings(builtin_settings, global_settings, topdir_settings, args.setting)
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/tmp/bitbake-setup/bitbake/./bin/bitbake-setup", line 733, in merge_settings
    all_settings[section][setting] = value
    ~~~~~~~~~~~~^^^^^^^^^
KeyError: 'foo'

Signed-off-by: Johannes Schneider <johannes.schneider@leica-geosystems.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Rename the function to reflect which (of the possibly many) files in
the build/config directory it writes to.

Signed-off-by: Johannes Schneider <johannes.schneider@leica-geosystems.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Construct the 'src_uri' separately, and then pass either variant into
one call that creates the Fetch. Making use of format-strings to
shorten/simplify the code.

Also: using 'proto' instead of 'type' for a variable name, to avoid
the protected keyword.

Signed-off-by: Johannes Schneider <johannes.schneider@leica-geosystems.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
All places that called into 'check_setupdir_files' did the same
preparation step to load the upstream-config.json and then pass it
into the function.

Since the 'setuppath' is already passed into the function, and the
name and relative location of the upstream-config.json is fixed,
constructing the file path and loading the json could be done in the
function.

De-duplicate code by loading the json inside the function instead.

Signed-off-by: Johannes Schneider <johannes.schneider@leica-geosystems.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
When initializing a build setup from a conf.json that only sets 'rev'
to a tag or branch, the actual revision would not be captured or
logged.

To capture the current layer state after an 'init' or 'update', the
checkout_layers function is extended to store the revision the
bb.fetch.Fetch pulled, and write that information into a
sources-fixed-revisions.json file. This file can then be fed back into
bitbake-setup init as: --sources-overrides

This new 'sources-fixed-revisions.json' is written during 'update_build' and
stored alongside the 'config-upstream.json' in the config dir. And put
with the later under version control by calling 'commit_config" after
'update_build'.

The use of 'deepcopy' is necessary to not modify the original input
data - which python passes around as reference.

Signed-off-by: Johannes Schneider <johannes.schneider@leica-geosystems.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
…tive

{THISDIR} is a special value token that can be used in the list of enabled
layers to specify the layer location relative to the confguration file:
https://git.openembedded.org/bitbake/commit/?id=b3153be29de8b8570b0c184369bd41f4c646cf92

This replaces the token with an explicit separate keyword for such layers:
so that special processing to determine the final value can be avoided, and
the feature can be formalized in the json schema:

instead of
   "bb-layers": [
        "{THISDIR}/meta-my-project"
    ]

this allows
   "bb-layers-relative": [
        "meta-my-project"

Going forward I think we should strive to avoid any further special value tokens.

Signed-off-by: Alexander Kanavin <alex@linutronix.de>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
The difference between bb-layers and bb-layers-relative is unclear as both
are relative paths. Rename one to "file-relative" which makes it clear it
is relative to the current file, without becomming a long name.

https://lists.openembedded.org/g/bitbake-devel/message/18296

Based on a patch from Alexander Kanavin <alex@linutronix.de> but
with different naming.

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
For use in the documentation.

Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Add documentation for bitbake-setup. This is split in 6 sections,
including a quick start guide, terminology and reference.

Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
As of now, the variable history for builtin fragments looks like this
(edited for clarity):
   $ bitbake-getvar MACHINE
  #
  # $MACHINE [2 operations]
  #   set ast.py:368 [check_and_set_builtin_fragment]
  #     "qemux86-64"
  # pre-expansion value:
  #   "qemux86-64"
  MACHINE="qemux86-64"
User can't know where MACHINE was set, this is bad.

This patch tries to reconstruct a MACHINE history from OE_FRAGMENTS
history.
With this patch, history looks like this (for a simple case):
   $ bitbake-getvar MACHINE
  NOTE: Starting bitbake server...
  #
  # $MACHINE [2 operations]
  #   set .../auto.conf:2
  #     "qemux86-64 (OE_FRAGMENTS contains "machine/qemux86-64")"
  # pre-expansion value:
  #   "qemux86-64"
  MACHINE="qemux86-64"
The path where the "machine/qemux86-64" fragment was added to
OE_FRAGMENTS is displayed, this is definitely better.

Fixes [YOCTO #15939]

Signed-off-by: Yoann Congal <yoann.congal@smile.fr>
Signed-off-by: Mathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com>
While it can be argued how useful a progressbar created with 0 as
maximum value is, it should still show two states, started (empty) and
finished (full). Setting the maxval to _DEFAULT_MAXVAL instead will
accomplish this.

Signed-off-by: Peter Kjellerstedt <peter.kjellerstedt@axis.com>
Signed-off-by: Mathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com>
Ensure that every time a lockfile is created, it is also unlocked in a
finally: block. Otherwise, the lock file remains open and Python warns:

ResourceWarning: unclosed file <_io.FileIO
name='/tmp/bitbake-fetch-srfv29ek/download/git2/git.openembedded.org.bitbake.lock'
mode='ab+' closefd=True>

Signed-off-by: Ross Burton <ross.burton@arm.com>
Signed-off-by: Mathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com>
Python 3.14 complains about these:

Traceback (most recent call last):
  File "/mnt2/zozo/yocto-5.3/bitbake/lib/bb/ui/knotty.py", line 722, in main
    termfilter.updateFooter()
    ~~~~~~~~~~~~~~~~~~~~~~~^^
  File "/mnt2/zozo/yocto-5.3/bitbake/lib/bb/ui/knotty.py", line 339, in updateFooter
    lines = self.getlines(content)
  File "/mnt2/zozo/yocto-5.3/bitbake/lib/bb/ui/knotty.py", line 370, in getlines
    lines = lines + 1 + int(len(line) / (self.columns + 1))
                                         ~~~~~~~~~~~~~^~~
TypeError: can only concatenate str (not "int") to str

and

Traceback (most recent call last):
  File "/mnt2/zozo/yocto-5.3/bitbake/lib/bb/ui/knotty.py", line 722, in main
    termfilter.updateFooter()
    ~~~~~~~~~~~~~~~~~~~~~~~^^
  File "/mnt2/zozo/yocto-5.3/bitbake/lib/bb/ui/knotty.py", line 341, in updateFooter
    for tasknum, task in enumerate(tasks[:(self.rows - 1 - lines)]):
                                           ~~~~~~~~~~^~~
TypeError: unsupported operand type(s) for -: 'str' and 'int'

Make sure getting the number of rows and columns from the terminal
via the environment variables LINES and COLUMNS are returned as a
pair of integers. This matches the return value of ioctl_GWINSZ().

Signed-off-by: Zoltán Böszörményi <zboszor@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
The symlink variable is never defined, and it appears that it should
have been siteconf_symlink.

Signed-off-by: Ross Burton <ross.burton@arm.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
When the user is asked to select a configuration, the list is
zero-indexed:

  Distribution configuration variants:
  0. distro/poky
  1. distro/poky-altcfg
  2. distro/poky-tiny

It is more user friendly to start the lists from "1".

Signed-off-by: Ross Burton <ross.burton@arm.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
…tings

top-dir-prefix and top-dir-name only make sense to be set in the global
settings file, so if they are specified force them to the global
settings file, and warn the user that this is happening.

Signed-off-by: Joshua Watt <JPEWhacker@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
The poky distro is now stripped of its repositories. Toaster had used that
repo as both a quick way to get the three core layers (openembedded-code,
meta-poky, and meta-yocto-bsp) but also a way to get the related bitbake,
which was important because bitbake is not in the Layer Index. Now, Toaster
must explicitly clone each of the core layers plus the proper bitbake layer.

Notes on "orm/fixtures":
  * The "orm/fixtures" files used to hard code the three core layers to
    point to the poky distro, ignoring the Layer Index values
  * The script "lsupdates.py" is now allowed to use the Layer Index to
    properly initialize these layers.
  * The fixture files are still used because (a) they define the supported
    releases for Toaster, plus (b) they now define the proper bitbake repo
    path and branches to associate with the YP releases.
Notes on "localhostbecontroller.py":
  * Always insert the proper bitbake into the layer clone list
  * Insure that both 'BBBASEDIR' and 'BITBAKEDIR' are defined in the
    sub-shells so that oe-init finds the right bitbake (e.g.
    'oe-buildenv-internal')

[YOCTO #16012]

Signed-off-by: David Reyna <David.Reyna@windriver.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Corentin Guillevic and others added 30 commits February 4, 2026 13:29
The property 'uri' is a simplification of the property 'remotes'. It is
used to provide only one URI.

Signed-off-by: Corentin Guillevic <corentin.guillevic@smile.fr>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Copied from bitbake-server/worker/layers.
This is seen also for bitbake command invocations.

Signed-off-by: Peter Marko <peter.marko@siemens.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
… variable

This fixes running 'bitbake-setup init' in an active bitbake session when
a top dir settings file is absent. In this case, bitbake-setup was trying to make
a whole new top directory under the current directory. It will will now use
the existing top directory, deducing it from BBPATH (similar to status and
update operations), which was always the intent.

The code was relying on an existence of a top directory settings file, which was
always present in earlier prototypes, but is currently created
only when a setting is explicitly written into it. This logic is changed
to use the bitbake-setup's cache directory, which is also explicitly created.

Signed-off-by: Alexander Kanavin <alex@linutronix.de>
Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
…e repo otherwise

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>
Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
The goal for the 'list' command is to not leave any files or directories
behind, as it may be issued before the user has decided where to
place the top directory. 'list' redirects the top directory
to a temporary location, but it didn't do the same for the downloads,
which led to the default top directory being polluted with them.
This has now been fixed.

Signed-off-by: Alexander Kanavin <alex@linutronix.de>
Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
In those cases when the user enters a URL that points to the html
representation of a json file, and not the actual json file, we can
at least let them know that the URL point to a file which is not a json.

It will help when a user copy and paste a URL from a browser and the
tool cannot parse it as json.

Signed-off-by: Daiane Angolini <daiane.angolini@foundries.io>
Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
…not the whole settings

This will help the following commit.

Signed-off-by: Alexander Kanavin <alex@linutronix.de>
Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
status/update operations should be using the registry
that was used in initializing a setup, but they've
been using the registry from settings. This is now
corrected.

Signed-off-by: Alexander Kanavin <alex@linutronix.de>
Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
… configuration

This was done before setting up a new bitbake configuration, so that
it does not write over the old one, comparing the old and the new
bitbake configurations, and taking one of three possible actions:

- no changes, no need to keep a backup;
- changes exist, do not replace existing config
- changes exist, replace existing config.

All three options correctly print the eventual outcome,
so this early print is unnecessary and confusing.

Signed-off-by: Alexander Kanavin <alex@linutronix.de>
Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
The order was non-deterministic which did not help finding the
number for the right one in the list.

Signed-off-by: Alexander Kanavin <alex@linutronix.de>
Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Signed-off-by: Alexander Kanavin <alex@linutronix.de>
Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This prepares the data for the next commit.

Signed-off-by: Alexander Kanavin <alex@linutronix.de>
Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Change some terms to use more specific wording:

  Generic Configuration  -> Configuration Template
  Specific Configuration -> Configuration Instance

Signed-off-by: Daiane Angolini <daiane.angolini@foundries.io>
Reviewed-by: Antonin Godard <antonin.godard@bootlin.com>
Signed-off-by: Mathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Make the output to match the terminology used in the documentation for
some terms.

Signed-off-by: Daiane Angolini <daiane.angolini@foundries.io>
Reviewed-by: Antonin Godard <antonin.godard@bootlin.com>
Signed-off-by: Mathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
If we use the default of bitbake-setut init we may not create anything
(as the first default for an empty directory is N).

If user does not chose a number, the script asks again for a number.

Signed-off-by: Daiane Angolini <daiane.angolini@foundries.io>
Reviewed-by: Antonin Godard <antonin.godard@bootlin.com>
Signed-off-by: Mathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
If sources is empty, nothing happens. So let's just not say it's
optional, and let's say the minimum is bitbake source code.

Signed-off-by: Daiane Angolini <daiane.angolini@foundries.io>
Reviewed-by: Antonin Godard <antonin.godard@bootlin.com>
Signed-off-by: Mathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Make it possible to give fragments descriptions as it can help users
determine which fragments to pick during bitbake-setup init.

It is still possible to provide a list (with no descriptions) for
backwards-compatibility.

Update the documentation accordingly.

Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
Signed-off-by: Mathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
If unset, the existing behavior is preseved.

The use case is sharing the database in bitbake-setup's driven builds
without having to set up/start/stop a common single server shared
between them (this is added to bitbake-setup in the next commit).

Also create the specified directory if it doesn't yet exist.

Add a check that the directory is not on a NFS path, and error out then,
guiding the user to set up a standalone hash equivalency server.

Note: the check runs 'stat' executable with a format string parameter,
ensuring it prints only the filesystem type and nothing else.
Python's standard library does not have a statfs() wrapper,
and using ctypes to call into it would've required delicate,
crash-prone data type definitions, full of magic numbers.

Signed-off-by: Alexander Kanavin <alex@linutronix.de>
Signed-off-by: Mathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
…/add layer

While develop a registry configuration adding a new layer and then back
to previous configuration without the _has_local_modifications breaks
because the code expects the layer to be in sources-fixed-revisions.json.

This can be reproduced with next steps:

- Call bitbake-setup with configX.
- Remove a LayerY from the configX.
- Call bitbake-setup with configX.
- Add the layerY again to configX.
- Call bitbake-setup with configX (break).

Fixes:

```
  File "/workspaces/ls/meta-ls/bitbake/bin/bitbake-setup", line 1137, in <module>
    main()
    ~~~~^^
  File "/workspaces/ls/meta-ls/bitbake/bin/bitbake-setup", line 1130, in main
    args.func(top_dir, all_settings, args, d)
    ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/workspaces/ls/meta-ls/bitbake/bin/bitbake-setup", line 735, in build_update
    build_status(top_dir, settings, args, d, update=True)
    ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/workspaces/ls/meta-ls/bitbake/bin/bitbake-setup", line 719, in build_status
    update_build(new_upstream_config, confdir, setupdir, layerdir, d,
    ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
                 update_bb_conf=args.update_bb_conf)
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/workspaces/ls/meta-ls/bitbake/bin/bitbake-setup", line 408, in update_build
    sources_fixed_revisions = checkout_layers(layer_config, confdir, layerdir, d)
  File "/workspaces/ls/meta-ls/bitbake/bin/bitbake-setup", line 184, in checkout_layers
    elif _has_local_modifications(r_name, repodir_path):
         ~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^
  File "/workspaces/ls/meta-ls/bitbake/bin/bitbake-setup", line 143, in _has_local_modifications
    rev = fixed_revisions['sources'][r_name]['git-remote']['rev']
          ~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^
KeyError: 'meta-freescale'
```

Signed-off-by: Anibal Limon <anibal@limonsoftware.com>
Signed-off-by: Mathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
The recipe name matching wasn't fully explained and were missing a few
important corner cases such as recipes without a version, or using the %
character outside of the version part of the filename for example.

This adds the last missing bits to cover every append naming scenario
that exist today.

This was derived from lib/bb/cooker.py:get_file_appends().

Reported-by: Robert P. J. Day <rpjday@crashcourse.ca>
Signed-off-by: Quentin Schulz <quentin.schulz@cherry.de>
Reviewed-by: Antonin Godard <antonin.godard@bootlin.com>
Signed-off-by: Mathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Replace fragile parsing of 'git branch' output with the more reliable
'git name-rev --name-only HEAD' command to get the current branch name.
This avoids parsing issues and is the recommended way to get the current branch name.

Signed-off-by: Osama Abdelkader <osama.abdelkader@gmail.com>
Signed-off-by: Mathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Configs from registry, and configs on local filesystem were tested,
but not configs obtained over http URIs.

Signed-off-by: Alexander Kanavin <alex@linutronix.de>
Signed-off-by: Mathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
There were no tests of oe-fragments-one-of so modify gizmo-notemplate to
gizmo-notemplate-fragments-one-of, and test both formats for the options
(with or without a description).

In get_setup_path(), if the configuration specified on the command-line
contains fragments, join everything with "-" as this is what will be the
final directory name of the setup. This does not affect other current
variants.

Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
Signed-off-by: Mathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Add the message filtering directly in the python module where the error
happens, so we do not need to repeat the filter in all consumers. This
will also make sure the filter is applied in any user of createDaemon().

Fixes [YOCTO #16080]

Suggested-by: Chen Qi <Qi.Chen@windriver.com>
Signed-off-by: Mathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Give descriptions to the fragment choices to help the user know what to
pick during 'bitbake-setup init'. These descriptions were based on the
descriptions found in the corresponding configuration files in
OE-Core/meta-yocto.

Also while we're at it, s/Distributions/distributions/ as "machines" is
lowercase in "Target machines" above.

Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
Signed-off-by: Mathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
If user add "" to dl-dir as DL_DIR, it will show FetchError as following.

 raise FetchError("Unable to fetch URL from any source.", u)
bb.fetch2.FetchError: Fetcher failure for URL: 'git://git.openembedded.org/bitbake;protocol=https;rev=master;branch=master;destsuffix=bitbake'. Unable to fetch URL from any source.

But from this log, user can't locate the real reason which is that the path "/aa/bb" is invalid.

So I make this fix, even if user add "" to dl-dir, the dl-dir will be the valid path.
Other settings value also need this fix.

Signed-off-by: Liu Yiding <liuyd.fnst@fujitsu.com>
Signed-off-by: Mathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
We see errors on the autobuilder which imply we migtht be running out of
file descrptors. Add some debugging to try and determine if this really
is the case. For example the garbage collection may not be running quickly
enough to keep up with the code.

Count up the open files from /proc/self/fd, list them and then also try
and run lsof (which might fail if no file descriptors are available).

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Bazaar has been of limited use outside of Launchpad for a while. Most uses
within launchpad now use git. The original bazaar client was also replaced
by breezy, which whilst supporting the bazaar repositories, mostly works with
git as the backend now too.

The existing code has been broken for a while and nobody seems to be using it,
lets remove the obsolete technology.

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
The OpenSUSE Build Service fetcher was for a specialist niche usecase which never
went into production use as far as I know. At this point it makes sense to remove
it as it is unused and bitrotted.

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
CVS is extremely dated technology and is not used anywhere significant/public
any more. The existing code is not well maintained and is hard to test without
any public CVS repositories. To be honest, if you're still using CVS you really
shouldn't be.

Remove the fetcher as obsolete and a generally bad idea now.

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.