Bob 1.2 Release Notes
Changes made since Bob 1.1 include the following.
New features
config.yaml
Added support for layer configuration include files.
Like the user configuration files (default.yaml), allow to include other files from config.yaml. This is only allowed for layer configuration files, though. Consequently, the keys to include are named layersInclude and layersRequire.
An out-of-tree build can optionally have a layer configuration.
When doing an out-of-tree build, parse an optional
config.yamlthat might be present there as layer configuration. This simplifies applying layer configuration overrides on such builds and will match the existing behaviour of thedefault.yamlhandling as well.
Recipes
Added support for custom request headers in URL SCM.
Some servers need additional information provided by custom headers, .e.g., authentication tokens. The
headersattribute can be used to add those:checkoutSCM: scm: url headers: X-Auth-Token: "..."See #655.
Bob gained the
strictdownloadflag for archive servers.By default, downloads from archives ignore most errors. Usually, this is desired because this is just a different reason why no artifact is found. But in CI environments, unreachable servers or similar problems should never happen. For that, the
strictdownloadflag indicates that the server must be reachable and respond properly. In any case, it is never an error if a download does not find the requested archive, even with thestrictdownloadflag.Added support for additional jobServer modes.
So far, only anonymous pipes were supported as jobserver. To support named pipes as well (GNU make 4.4, ninja 1.13.0), Bob gained new values for the ‘jobServer’ key:
pipeA synonym for
True. Pass open pipe file descriptors to children.fifoAlways pass a named pipe path to children. If an external jobserver with an anonymous pipe is present, fail the build.
fifo-or-pipeIf possible, pass a named pipe path to the children. If an external jobserver with an anonymous pipe is present, use that instead.
Bob gained support for {checkout,build,package}AuditFiles.
Using these keys, selected files can be included into the audit trail. This can be used to store any supplementary information in the audit trail as necessary. Examples are hash sums of individual source files, custom license texts or other build time meta data.
See #683.
Bob build/dev
Bob gained support for FIFO job servers.
Starting with GNU make 4.4, a new type of jobserver was introduced. Instead of passing pipe file descriptors, a named pipe is created my make. This allegedly solves a number of problems with old anonymous pipe approach.
Bob will now integrate into an existing FIFO job server (e.g. when being started from make). Bob also supports providing a FIFO job server (see jobServer).
Bob jenkins
bob-jenkins gained an option to clean the workspace after build.
The workspaces of Jenkins jobs can use quite a lot of disk space. Especially if the
--cleanoption is active, this is most probably not needed because the workspace is clean at jobs start anyway. Added an extended option to control the post-build clean behaviour (jobs.clean.post-build, #664).
Plugins
Bob now provides an
onSkipmethod to state trackers.It might be of interest for a plugin that provides custom properties if the associated “use” keyword is missing. Bob now supports an
bob.input.PluginState.onSkip()method that the plugin can override. (#671)String functions provided by plugins now have access to state trackers through the
statesparameter. (#671)
Improvements
Improved error messages of layer version conflicts. (#652)
Improved command syntax descriptions in manpages (#653)
Support HTTP redirects and proxy settings for binary archives. (#663, #462)
Bob now shows the step type in the massive parallel TUI.
Bob will better detect the availability of unprivileged user namespaces that are used for sandbox builds. In case this Linux feature is not usable, the build will immediately fail with an appropriate error message. (#667, #670, #689)
The recommended mirror configuration was improved in the documentation. (See #673)
Show stderr by default when updating layers. Previously the error messages of, e.g., git were not visible.
The handling of read-only mounts in the sandbox has been improved. This allows to e.g. mount /etc/resolv.conf without the need to touch it first. Also it allows to specify other mounts in sandbox /etc directory via the sandbox: keyword mount list. (#680)
Added Python 3.14 to CI builds. (#684)
The “duplicate dependency” error message has been improved.
If multiple classes or multiPackage is involved, it can be hard to see where a colliding dependency was declared. Bob now tracks the origin of a dependency and outputs the involved files.
See #688.
Backwards incompatible changes
Support for Python 3.8 has been dropped. (#684)
Bug fixes
Bob treats more socket errors as warnings when downloading artifacts.
When downloading from an archive, the build should not fail because of network errors. After all, the binary archive is just a cache that might not provide an archive. Bob now treats any errors up to and including the connection establishment as warnings. Previously, only refused connections were already treated that way.
For uploads, the behaviour does not change. Any network errors are treated as errors for uploads.
Fixed a crash of bob-archive when scanning an empty archive. (#663)
Fixed some typos in help/error messages. (#666)
Some packages (like gcc and binutils) use hard links. When installed as a shared package, Bob now retains these hard links. (#679, #680)
Errors during URL SCM downloads are now properly handled.
Reading from the socket might cause an
OSError(e.g."ConnectionResetError: [Errno 104] Connection reset by peer"). Bob now catches such errors and gracefully handles them in the retry loop. The only exception are “disk full” errors, which directly fail the build instead of retrying.