Bob 0.19 Release Notes
Changes made since Bob 0.18.0 include the following.
New commands
bob archive find - Find artifacts matching a retention expression
The find command can be used to verify that a retention expression actually matches the intended artifacts. It can also be used to find particular artifacts in an artifact cache. All matching file names will be printed to stdout.
For example, to find all archives of a particular package, use:
bob archive find 'meta.package == "some/package"'
New features
Platform support
Compatibility to Python 3.9 has been added
The built-in fingerprint script function
bob-libc-version
gained support for MSYS2.
Audit trail
Added support for user defined audit trail meta data.
Arbitrary key/value pairs for the audit trail meta data section can be defined. They are included as
meta.<VAR>
in the audit trail. This might later be used in bob-archive to select artifacts based on these keys. Internally defined keys (e.g.meta.recipe
) have precedence and will always override user provided keys.
Recipes
Added {checkout,build,package}Setup[{Bash,Pwsh}].
Setup scripts are prepended to the executed regular scripts defined by {checkout,build,package}Script[{Bash,Pwsh}]. Defining a setup script does not yet enable the corresponding step. Conceptually a setup script is intended to define helper functions or variables but they should not yet execute anything. They are included when entering the shell environment of a step (i.e. calling
build.sh shell
). As such, they are intended mainly for classes so that the definitions of a class are automatically available in the shell environment.Variable substitution has been added in
depends
environment
section.The value strings in the environment block of the depends section are now substituted. The substitution will use the currently built up environment, that is with the values of provided variables of dependencies defined above.
The root property gained boolean expressions.
Additionally to the plain boolean type the root property may be a string or an IfExpression (see Boolean properties). The expressions are evaluated with the initial environment (including overrides from the command line) and have access to all user defined string functions.
Bob build / bob dev
Bob gained the
--download-layer
option.With
--download-layer [yes|no|forced]=<regex>
the download of packages from layers matching the given regex can be configured separately. It overrides the general settings of--download
for packages of matching layers. The switch can be given multiple times.Support for shared packages on local builds has been added.
Shared packages were already supported on Jenkins builds for packages that are marked as shared. This support has been implemented for local builds too. Such packages can now be installed to a user configurable shared location. The location and an optional quota are configured in
default.yaml
in the share section.
Bob clean
Gained support for shared packages garbage collection.
By default only unused packages are collected until the user defined quota is met. This can be expanded by either deleting all currently unused shared packages or even remove used ones.
Bob jenkins
Added
jobs.gc.*
extended options to configure retained builds/artifacts.Lets the user configure the number of builds and/or artifacts that are retained per root-package and for the other packages. The by-date setting offered by Jenkins is explicitly not supported because it would break dependent jobs if the timeout hits.
Changed behaviour
Other behavioural changes
Always set node label on Jenkins jobs.
The node label was only set initially when jobs were created in previous versions. After this the
--nodes
setting had no effect which was surprising to the user. This has been rectified by setting the node label unconditionally on all updates.bob.input.Step.getJenkinsScript()
has been deprecated. This method already returned the same asgetScript()
since Bob 0.18.
Performance improvements
Bob now uses
os.scandir
for better hashing performance on Windows. This saves one system call per file when Bob scans for changes in a workspace.Reduced the number of
fsync
calls at runtime.Previously the state was always synced after being changed to be safe against hard crashes of the machine. This is now done only once when Bob terminates.
Bug fixes
The Visual Studio project generator supports the
-I
switch (#400)Defining the
always_checkout
property in command section ofdefault.yaml
now worksSetting
scriptLanguage: bash
inconfig.yaml
does not crash anymore (#394)Fixed crash when comparing undefined fields in
bob archive
expressionsFixed potential deadlock with certain recipe structures that use weak tools (#387)
Fix handling of empty
.gitmodules
(#375)