Bob 0.23 Release Notes

Changes made since Bob 0.22.0 include the following.

New features

  • The TUI now handles many jobs better by switching to a different output format. By default the new TUI is utilized when more than 16 jobs are used. This can be configured by the parallelTUIThreshold key in the ui section of the user configuration.

  • Bob now warns if files collide on --destination builds.

    When building with --destination the result of all built packages is copied to the desired directory. It has never been an error if files are overwritten by that to support building multiple times in a row with the same destination. But if multiple built packages contain the same files then they silently overwrite each other. Now Bob issues a warning message for this case because the destination is in an undefined state.

  • Added support for string substitution to package names in depends section.

  • Project generators gained the ability to use package queries.

    Usually project generators only handle a single package. There are use cases where a generator needs complex package queries with bobpaths, though. To support this, a projectGenerator can set the additional query property to True. In this case the first argument for the generator is a “generator iterator” that yields bob.input.Package objects. See Generators for more details.

  • Bob can retry downloads of git and url SCMs when they fail.

    Bob performs a configurable number of retries for git and wget commands where server communication is needed. After each unsuccessful operation Bob waits 3 seconds before retrying. By default no retries are made. See checkoutSCM.

Backwards incompatible changes

  • Better support for checkoutScript changes with respect to recipes that utilize checkoutUpdateIf. (#506)

    The tracking of recipe changes was not sufficient for build-only updates of checkouts that involve the import-SCM or recipes that utilize checkoutUpdateIf. Bob was over-cautious and prevented running these updates if anything related to the checkout step changed.

    To make the behaviour more predictable, Bob now tracks the related state more closely. Updates of checkouts in build-only mode are now only prevented if an import-SCM is changed. So changes to the checkoutScript will always trigger the update in build-only mode and run the affected parts of the checkoutScript.

  • Use Python to extract zip and tar files only on Windows.

    The tarfile and zipfile Python modules are slower and have behavioural differences compared to their native implementations. The tarfile module in particular differs in the handling of file modes (it does not behave like GNU tar with --no-same-permissions which is used by Bob). The zipfile module looks safer but is certainly slower than the native implementation. Consequently, the Python implementations are not used on POSIX systems anymore, including MSYS2. This might break builds when these essential tools are not installed.

    On the other hand the unzip and tar tools are usually not available on native Windows installations. There even seem to be broken unzip tools out there in the wild (#496). For this reason, Bob prefers to use Python to extract tar and zip files on native Windows installations (not MSYS2).

Bug fixes

  • Remove binary wheel for Windows. It was causing installation problems on Linux and was never needed to begin with. (#502)

  • Fixed the Azure archive backend. (#505)

  • Added the missing attic option to the default dev/build settings

  • Fixed error reporting in Qtcreator and Eclipse project generators of invalid regular expressions

  • Added --debug and --color switches to bash-completion

  • Removed Sphinx setuptools integration.

    The Sphinx project removed the setuptools integration with version 7. When installing Bob from a source distribution it is now required to have Sphinx installed. (#513 and #515).

  • Bob now does inline updates of git repositories also when the useCommitOnBranch property changes.

  • Fixed garbling of shared packages.

    Packages at shared locations are immutable. If the recipe was changed and the package is unshared, the workspace link in the project tree should be removed. The bug was that Bob actually cleared the shared location instead of removing the symlink. (#522)

  • Fixed broken variant handling regarding the dir attribute of import SCMs. Bob versions before 0.23 contained a bug where the dir attribute of an import SCM was not included in the Variant-Id calculation. This can cause build failures or wrongly used binary artifacts if just the dir attribute of an import SCM is changed. Because the fix cannot be made in a backwards compatible way, a new fixImportScmVariant policy was introduced.

  • Fixed handling of nested annotated git tags in bob-status. Even though nested tags, that is a tag that points at a tag, could be checked out successfully, the workspace was flagged as “switched”. (#520)