Releases: rock-core/autoproj
v2.17.0
Fixes
- bundler version is now automatically restricted for Ruby < 2.5 and Ruby < 3.0 to the relevant versions
New features
manifest.xml now accepts condition attributes to dependencies. These condition attributes rely on autoproj's configuration file, with variables being available as $VARIABLE and support:
- booleans
- equality of string and numbers using
== - comparison of numbers (< <= > >=)
- and/or and parenthesis for priority
Autoproj v2.16.0 and autobuild v1.24.0
Bugfixes:
- none
New Features:
- added
Autoproj.config.load_config_onceandAutoproj.config.load_config_once_with_permission. These methods are meant to be used within the initialization files to load a seed configuration file once, allowing that config to be changed (and not overriden) later. Thewith_permissionvariant will ask the user first whether the config file should be loaded at all (thanks Steffen Planthaber steffen.planthaber@dfki.de) - the
gitimporter now supports doing shallow clones. Either setAutobuild::Git.shallowto true globally, or set the shallow option per importer. This is incompatible with specifying a tag or commit, as well as with the single_branch option. - the
gitimporter now supports using the tree SHA instead of the commit SHA for fingerprinting. In CI, this means that a branch and its merge commit would have the same SHA, allowing to save rebuild times. SetAutobuild::Git.default_fingerprint_modeto "tree" to enable globally. The option is also available on a per-importer basis asfingerprint_mode. - It is now possible to add a post-test coverage processing step. Pass the processing as a block to test_utility.with_coverage
v2.15.0
Improvements to exec
autoproj exec --package PKGchanges to the package's source directory, usebuilddir:PKGto use the package's build directory andprefix:PKGfor the package's prefix.srcdir:PKGis equivalent toPKGautoproj exec --chdir PATHchanges to an explicit pathautoproj exec --package X --chdir RELATIVE_PATHchanges to a path relative to the folder specified by--package X
The gem osdep can now install gems from git
In an osdep file, instead of passing gem: NAME, do
gem:
name: "gem_name"
git: URL
A branch can be specified with branch
autoproj exec now takes --chdir and --package. The latter changes
Full Changelog: v2.14.0...v2.15.0
Autoproj v2.14.0
The main highlight of this release is the overhaul of Python support in Autoproj. Thanks to the hard work of @2maz, @ivan1993br and @g-arjones !
Multiple Python versions can now coexist in a system, although not in a single autoproj workspace. For this purpose autoproj users can now be explicitly asked for any needed Python support during a bootstrap, by adding the following to the init.rb:
require 'autoproj/python'
Autoproj::Python.setup_python_configuration_optionsIn case Python support is requested or implicitly needed, e.g., following a pip dependency in a layout, the user is asked to provide the path to the Python executable to use. By default the Python executable is searched/guessed automatically. Corresponding shims are installed for an active workspace: install/bin/python and install/bin/pip.
To ensure a consistent setup for the generation of language bindings, package definitions in *.autobuild file can be extended as follows:
cmake_package 'custom/pkg_with_python_bindings' do |pkg|
bin, version, sitelib_path = Autoproj::Python.activate_python_path(pkg)
pkg.define 'PYTHON_EXECUTABLE', bin if bin
pkg.define 'PYTHON_VERSION', version if version
endThe above setting will only be used when the user has requested Python support, or in general, when USE_PYTHON is set to true in the autoproj configuration (see .autoproj/config.yml).
Autoproj v2.13.0 and Autobuild 1.21.0 have been released
A rather small update:
The main piece of work is fixed compatibility and most warnings for Ruby 2.7 (main Ruby version on Ubuntu 20.04)
One new functionality: created an interactive update, autoproj update --ask, which asks for each modified packages whether the package should be updated, after showing the status, that is the new commits locally and remote (Note: it does not yet cover the package sets, only the packages themselves).
This allows to update knowing what happened:
Autoproj 2.12.0 and Autobuild 1.20.0 have been released !
User-facing changes
- fixed Bundler warnings
- configuration defaults are now properly converted to their canonical form. This means that passing e.g.
default: 'yes'when defining a boolean configuration variable now returns the canonical booleantruevalue instead of having to test against'yes'explicitely. - Autoproj can now be told to avoid updating Bundler altogether, in cases where new Bundler versions would have breaking changes (or bugs). Just bootstrap with
--bundler-version=VERSION_CONSTRAINT
New experimental functionality
autoproj cachecan now cache the gems. Support for precompiling gems currently requires the installation of a fork of gem-compiler.- build and utility reports (for CI) are now updated incrementally, which ensures that they are up-to-date even if the build gets interrupted
Autoproj 2.11.0 and Autobuild 1.19.0 have been released
Bugfixes
-
--deps=fnow respects package ordering. Until now, if two inter-dependent packages are selected in a-- deps=fbuild, the build order would not necessarily have reflected the dependency order. This release fixes
that particular problem. -
git caching is now disabled for git packages that have submodules, as caching is broken in this case
-
fixed some initialization issues with Bundler, that would happen very early in the start of autoproj
-
fixed test or doc dependencies not being installed on checkout.
This would happen in the following situation:
<bootstrap> autoproj test enable autoproj updateThe test dependencies would previously be installed only after a second run of update.
-
fixed passing packages by path in
autoproj testsubcommands -
make sure
autoprojexits with status 1 if given an unknown command
New functionality
-
added support for doc_depend in ROS manifests
-
allow fine-grained doc generation managed through
autoproj docsubcommands,
the wayautoproj testdid for tests. Seeautoproj help doc. -
per-gem build configuration can now be specified on a per-workspace basis:
For instance:
# Sets the build configuration Autoproj::PackageManagers::BundlerManager .configure_build_for('qml', "--with-qmake=/usr/lib/qt5/bin/qmake") # Adds to (potentially) existing build configuration Autoproj::PackageManagers::BundlerManager .add_build_configuration_for('qml', "--with-qmake=/usr/lib/qt5/bin/qmake") -
autoproj plugincan now be given a branch when checking out from repository -
added python-setuptools as a dependency to all python packages
-
added
autoproj test default. Whileautoproj enableandautoproj disablewill
change existing package-specific configuration,autoproj test defaultonly changes
the default, for packages which do not have a default:autoproj test enable drivers/iodrivers_base autoproj test enable autoproj test disable # drivers/iodrivers_base now has its tests disabled autoproj test enable drivers/iodrivers_base autoproj test default on autoproj test default off # drivers/iodrivers_base still has its tests enabledThe main use-case for this command is automated build environments, where the workspace
designer might decide to forcefully disable tests for some packages, and the CI
environment would useautoproj test default onto enable tests for all other packages.
Changes in experimental features
- changed the reporting file format for better usability/consistency. This is a breaking change.
Bugfix release v2.10.2
Bugfix release v2.10.1
Bugfixes:
- fix breakage due to new xdg versions API change
Autoproj 2.10.0 and Autobuild 1.18.1
This releases are mostly made of bugfixes and new features geared towards easier CI integration.
This release requires Ruby 2.3 or later.
New Features
-
added autodetection of autotools directories
-
added
-poption toautoproj test, to control how many tests are run in parallel -
autoproj versiondisplays the version of autoproj and its dependencies -
added the
--no-interactiveoption that uses default values for all options. This makes CI integration more robust by avoiding breakage each time a new option is added by the package sets or by autoproj itself -
added the
--fingerprintoption toautoproj versions. It computes a hash value that aims at uniquely identifying the state of the current package checkout. For now, it does not hash the state of the OS packages, so changes in OS packages won't change a package hash, only changes in dependent packages. This allows to cache and reuse build artifacts in CI environments. -
added the
--notoption tobuild.--notallows to disable building some specific packages. In combination with fingerprinting, it can be used to avoid building packages which have not changed.
Bugfixes
- fixed error reporting in some cases, where error would be "eaten" by Autoproj
- fixed parallel build handling with
make >= 4.2.0. Autobuild would pass arguments that effectively disable the job server and start as many build jobs as possible - which usually ends up crashing the machine until the OOB handler kicks in. On Ubuntu, this affects only releases after 18.04. - fixed parallel build handling with gnumake, where autobuild would run make twice.
- fixed
git-lfshandling for sub-packages, that is cases where package != repository
