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_once
andAutoproj.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_permission
variant will ask the user first whether the config file should be loaded at all (thanks Steffen Planthaber steffen.planthaber@dfki.de) - the
git
importer now supports doing shallow clones. Either setAutobuild::Git.shallow
to 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
git
importer 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_mode
to "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 PKG
changes to the package's source directory, usebuilddir:PKG
to use the package's build directory andprefix:PKG
for the package's prefix.srcdir:PKG
is equivalent toPKG
autoproj exec --chdir PATH
changes to an explicit pathautoproj exec --package X --chdir RELATIVE_PATH
changes 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_options
In 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
end
The 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 booleantrue
value 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 cache
can 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=f
now respects package ordering. Until now, if two inter-dependent packages are selected in a-- deps=f
build, 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 update
The test dependencies would previously be installed only after a second run of update.
-
fixed passing packages by path in
autoproj test
subcommands -
make sure
autoproj
exits 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 doc
subcommands,
the wayautoproj test
did 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 plugin
can 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 enable
andautoproj disable
will
change existing package-specific configuration,autoproj test default
only 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 enabled
The 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 on
to 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
-p
option toautoproj test
, to control how many tests are run in parallel -
autoproj version
displays the version of autoproj and its dependencies -
added the
--no-interactive
option 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
--fingerprint
option 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
--not
option tobuild
.--not
allows 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-lfs
handling for sub-packages, that is cases where package != repository