fix problems with encoding of subcommand output
improved parallel build output. Autobuild tries to compress the output as much as possible
integrated CMake parsing to output non-progress messages such as compiler warnings / errors. It is disabled by default for now
cleaned behaviour of various env_* methods. In particular, env_clear now causes the whole environment variable to be unset; env_inherit can be called at anytime without loss of information
experimental support for Windows and MacOSX
allow to completely disable a package by calling disable
bump required rake version
quickfix: add missing dependency on highline
quickfix: force ordering of doc and build tasks (see commit b5efd01 for details)
implement a generic retry_count option for all importers
fix concurrent display of progress messages
implement env_source_before and env_source_after (env_source calls env_source_after for backward compatibility reasons)
in subcommand, properly handle Interrupt when within the fork (before the exec)
workaround “recursive call to Dir.chdir” warnings from subcommand by not changing directory if Dir.pwd is already the target directory
implement cross-package parallelism. Autobuild is now able to build packages in parallel when parallel_build_level is greater than 1, better distributing the workload. Additionally, if GNUmake is in use, this interfaces with the GNUmake job server mechanism to allow the different make jobs to dynamically distribute jobs among themselves (and with the main autoproj process)
fix some issues with Ruby 1.9.3
orogen: fix regeneration logic. Autobuild would not generate an oroGen project if a type definition file contained in the orogen package changed.
patching: fix some more issues regarding the interaction of patching and VCS:
autobuild will now properly remove patches before we try to update This fixes un-updateable systems on which the update would fail before the patch, but autobuild would try to update before removing the patches
if a patch conflicts with a VCS update, the reported error will now be that the patch can’t be applied, NOT that the VCS cannot update. The latter behaviour was too confusing.
patching: better progress messages.
orogen: try to autodetect the orogen_file value earlier, if not provided
added Autobuild.color? and Autobuild.color= to control whether the output should use colors or not
added Autobuild.color? and Autobuild.color= to control whether the output should use colors or not
last attempt to fix the same issue than in 1.5.55 and 1.5.54
really fix update vs. patching problem. The issue was related to patches that create new files
fix update in zip importer. The zip importer was previously always keeping the current version of the source files. It broke the update / patching process
git: improve the behaviour on commit pinning. The importer avoids creating detached HEAD as much as it can now.
archive: fix some issues regarding patching and checkout. The list of patches was not reset when the package was re-checkout, which was leading to errors later.
fix local in the git importer
in log files, display the command both before and after the environment dump. This makes the browsing of these files easier
autotools: fix some issues on package checkout
orogen: add raw option support
stats: add a timestamp on each log line
fix core count detection on MacOSX
quickfix release for broken LD_LIBRARY_PATH update
quickfix release for installations where dpkg-architecture does not report a DEB_BUILD_MULTIARCH variable
when starting a command, save the command environment in the logfile
fix pkg-config support for Debian multiarch
fix behaviour of parallel_build_level if the parsing of /proc/cpuinfo fails. This fixes issues in particular on ARM-based Linux platforms
make the subversion importers accept :patches (the same way than 1.5.43 fixed that for CVS). The other importers should be fine as well.
fix zip support in the archive importer (patch from Thomas Roehr)
when autodetecting the parallel build level, use the number of physical cores (ignore “logical processors” that are present due to SMT technologies like HyperThreading)
add an experimental feature to make autobuild run doxygen by itself instead of using “make doc” for CMake targets. This will sped up documentation generation in simple cases, as dependencies won’t need to be installed before “make doc” can be run. This feature is turned OFF by default, and can be turned ON by doing
Autobuild::CMake.always_use_doc_target = false
cvs: accept the common importer options, such as :patches (Patch from Charles Lesire-Cabaniols)
autotools: regenerate the configure script on initial checkout This is to workaround people that do have autogen scripts but still include the configure scripts in their VCS. autotools is pretty fragile, to it is much more robust to just regenerate the whole thing in these cases.
archive: fix support for using local files
git: make “switching branch” messages stand out a bit more
cvs: make the CVS support compatible with autoproj (should remain backward compatible as well)
git: properly handle push_to_branch at checkout (was working during updates)
cmake: more specific progress message for configuration
remove changes that should never have been released
fix compatibility with rake 0.9.0
add the ‘revision’ option for the SVN importer. It allows to pick a particular revision number, as usually specified by the -r option to svn co and svn up
broke Autobuild::Orogen.always_regenerate by converting attr_accessor to attr_reader instead of attr_writer. As we say in french “better is the ennemy of good”
fix wrong caching behaviour in the orogen handler, which was leading to having failures in the orogen package handler
fix some bad behaviour when using fallback importers
git does not update the git configuration with the bad URLs anymore
orogen: removed automatic dependency detection, it was half-broken anyway.
orogen: avoid unnecessary regeneration (experimental, disabled by default). It can be enabled by setting Autobuild::Orogen.always_regenerate = true
make sure oroGen handlers will trigger a new generation on force-build
fix autobuild failing if the generated documentation is not in the doc_dir, as expected. It now reports a warning, as it should
autobuild importers delete the source directory when initial checkouts fail. They now display a message when they do so to avoid user confusion
the Autobuild::Orogen.transports array can be used to configure which transports are generated in orogen packages
allow to override the type export policy for oroGen >= 1.1
allow to provide CMAKE_MODULE_PATH in the cmake handler. Unfortunately, cmake does not support setting this through environment variables, so we have to pass it as -D
make ignore_errors work for updates as well. We obviously still have to fail on checkout
make the autotools handler behave more normally, calling “configure” without –no-create and not calling config.status before make by default. The old behaviour can be restored by setting force_config_status to true on the package.
fix failure when all packages are built in a different prefix than Autobuild.prefix. The main log directory was not created, which was leading to a failure to create stats.log
add statistics support
fix bug with git importer and the push_to option. The pushurl configuration option was not set in just-cloned repositories
improve error message in the “merge” case of git updates
fix appearance of a backtrace when CTRL+C was hit just at the same time that we start a subcommand
fix bug with paths that contain regexp special characters like C++
minor change to env_add_path. The provided directory is not filtered out anymore if it does not exist, to avoid the API user to have to call it after the packages have been installed
add an argument to status() to avoid using the network (for importers that can do that, i.e. git)
disable changing the subprocess priorities by default. This is so that people can use ‘nice’ on the autobuild script if they don’t know that autobuild supports changing the priority itself.
add the Autobuild.ignore_errors option. If set, the build will go on even if some errors occur. Errors are properly reported at the end of the build.
git: update branch tracking information to track the specified branch
git: offer the push_to option as a way to specify a push URL, in cases where having separate read-only and read-write URLs makes sense.
cmake: inform the user if a CMake configuration value gets changed
git: fix cases where the importer was assuming that a branch did not exist while it was
orogen: import_types_from accepts arguments for loading files. Be compatible with that.
minor addition to the API for autoproj
add a way to specify global ignores for listing files in source directories
update the TYPELIB_RUBY_PLUGIN_PATH and OROCOS_ROBY_PLUGIN_PATH environment variables, as oroGen now installs plugin files from the oroGen project into these directories
display a message when git switches branches
fix Ruby 1.9 rejecting some git logs if they have a weird encoding
fix error messages in the oroGen packages, when the loaded oroGen file has an error
fix exception when git logs contain non-ASCII characters on Ruby 1.9 version compiled with another default encoding than UTF-8 (!)
don’t sleep unnecessarily on filesystems that have sub-second modification time resolutions. This speeds up builds.
avoid unnecessary reconfigurations in the autotools handler
fixed some corner-case problems with log files not being created in the right folders
fix major issue while setting up dependencies
small 1.8/1.9 compatibility fix in Autotools#use
small backward compatibility fix w.r.t. Configurable.builddir
the “importer” package will now rebuild if the main prefix is deleted. It was previously not, which was leading to partial builds if the actual installation was done by a post_install block
fix the documentation mode
fix the directory in error message when a git importer detects a non-git repository
small API additions
support orogen’s –extended-states
small API fix when subclassing CMake package handler
quickfix for RUBYLIB on OSes that install libraries in usr/lib32 or usr/lib64 instead of usr/lib
fix broken mail reporting. The mail report was always saved in a file since 1.5.1.
fix small bugs in the patching part of the import
be error tolerant: if patching/unpatching fails, we go back to a well defined state instead of having to fix the package by hand
do not apply patches unnecessarily
autotools: must run libtool before the other tools
autotools: properly autodetect need for autoconf (autoconf was always enabled before)
logs: properly log everything that happens in one session. The previous behaviour was to have, in each log file, only the last command that has been run.
logs: only attach relevant logs to report mails. The previous behaviour was to attach all log files that were in <prefix>/log
now Ruby1.9 compatibility fixes, can be run with ruby1.9.1 on Debian
properly runs if the ruby interpreter is not called ‘ruby’, as ruby1.9.1 on Debian
fix some issues with the usage of depends_on before Package#srcdir logdir and prefix were set. It fixes an autoproj bug in case the autobuild files use depends_on
the archive importer now properly handles interruptions
the archive importer now properly autodetects file names if the URLs contains ‘?’
fixed the importer package type
fixed some rare issues with internal dependency definitions. This bug was usually manifesting itself with rake exceptions whose message were “do not know how to build <package name>-stamp”
quickfix an issue related to a discrepancy between the definition of the installstamp and the definition of the log dir.
make the archive importer nicer to use:
the archive_dir is unneeded for tarballs from now on
filename detection works better (and therefore the :filename option will be less needed)
have the git importer update the autobuild remote on update.
add missing importer/archive.rb file
add support for zip in TarImporter, which is renamed ArchiveImporter to reflect that. Backward compatibility is retained.
support sourceforge-like setups in ArchiveImporter: use wget for download and add a :filename option to specify what is the name of the downloaded file.
improve configurability of the progress display for tools built on top of autobuild
always call with_doc in orogen packages, as orogen itself adds a documentation target
minor bug fixes
minor changes in how the shell environment is managed
update LD_LIBRARY_PATH when applicable
fix parsing of genom ‘require’ statements (fix from Matthieu Gallien)
fix issues with tracking tags and commits (fix from Matthieu Gallien)
call subversion with the –non-interactive option, otherwise the build will block indefinitely. Note that git “questions” are properly passed to the user.
don’t forcefully depend on orogen being available. This fixes bootstrapping situations where both orogen and some orogen modules need to be built.
workaround CMake heavy-caching behaviour. When a reconfiguration is needed, delete the CMakeCache.txt file instead of recalling cmake on top of it. It should fix most of the problems of CMake related to caching of pkg-config files for instance.
cmake package handler now displays progress value
added support for parallel builds
added the long-awaited –force-build and –rebuild options. The first one forces the call to all the build steps, but without deleting the build products. The second one deletes all build products and retriggers a full build.
fix: changing Orogen.corba now affects packages that have already been declared but for which the corba attribute has not been set explicitely to true or false.
fix issues with the parsing of codel requirement in the genom package handler
fix stupid issues with the genom package
import caller’s environment instead of erasing it.
1.3.* now depend on utilrb, add it to the gem dependency list
major update of the user interaction. Autobuild is now much less verbose, and (hopefully) displays more useful error messages in most cases.
make the library easier to use to build other tools (i.e. not so much autobuild-centered anymore)
add the :branch and :tag targets to the git importer. The git importer should now be used as:
Autobuild.git(URL, :branch => branch_name)
Autobuild.git(URL, :tag => tag_name_or_commit_id)
This puts it in line with the other importers which have a Autobuild.importer_type(URL, option_hash) form.
fix branch switching in the git importer: the build will not fail anymore if autobuild has to switch to an already existing branch
fix git importer’s handling of branch names: the importer now always works on a local branch that has the same name than the remote branch.
reconfigure orogen packages if orogen itself has been updated
fix small issues with CMake
CMake 2.6 can convert option values between what the user provides (for instance YES) and what is written in the cache (ON). Take that into account
if the first configuration fails, no Makefile is generated but a CMakeCache.txt is there. Autobuild was failing in that situation and will now handle it gracefully.
small fix logs are sorted into subdirectories, following the structure of the packages. Up until now, the mailing code was not searching for logfiles in the subdirectories. This commit fixes this.
small usability issue
provide the –keep-oldlogs command line option and the Autobuild.erase_oldlogs configuration flag to configure whether old logs should be kept (new data being appended to them), or erased
change the default behaviour from keeping old logs to erasing them
fixes –mail-smtp. This now works even without port specification.
fixes to documentation support
‘–no-doc’ now works
failures to generate documentation are now simple warnings, an error can be obtained by setting Autobuild.doc_errors or by using the –doc-errors command line flag
really fix the dependency problem
add documentation support in autotools
really fix the git fetch phase
fix a dependency issue between code generation and CMake configuration in the orogen package type
git update phase now fetches the repository and branch specified by the autobuild script. It previously was using remote tracking branches. This will allow to detect branch changes in the autobuild specification.
documentation support. Packages can now declare that they can generate documentation (see Package#doc_task and CMake#with_doc). That documentation is generated post-build and installed.
fix build updates in the CMake package class.
Fix git update again. FETCH_HEAD may resolve as an ID which is not the one to be selected for merge
Make the dependency on RMail optional
added the orogen package type
Fix git update
Fix cmake dependency handling. Give a way to always run cmake before running make (needed sometime)
Fix the genom package handling
Make the CVS importer discard differences on method and username between the current root and the configured root
Allow to specify exclusions in the importer package, which are used to ignore some changes in the source tree. Useful if some packages are built inside the imported source tree
added the git importer
added the cmake package
set the current repository as default global prefix and srcdir
misc fixes w.r.t. handling dependencies
The “test suites are there for something” release
Fixes bugs introduced in the last version
Added a real example in samples/openrobots.rb
Fixed documentation in various places
Fail more gracefully on circular dependencies
Releasing 1.0. Autobuild is stable, and is in daily use at my work
Handle .tgz as valid tar extension (Closes #11722)
Fix bug in the tar importer, which made checkout fail (Closes #11716)
put install-stamp files into logdir, to clean up the installation prefix
added Autobuild.post_install: run an external program or call a block after all packages have been successfully built
bugfix: darcs get expects that the path to the destination directory already exists. Create it ourselves if it does not exist.
bugfix: when computing the timestamp of a source tree, exclude .svn and _darcs directories
bugfix: ‘opencv.pc’ were searched in PkgConfig packages instead of the actual .pc file …
bugfix: installed_pkgconfig is supposed to be a singleton method of Autobuild
bugfix: “darcs get” expects that the path leading to the destination directory exists. Create it.
bugfix: fix handling of Genom’s requires lists: we were previously expecting packages to be exactly separated by ‘, ’
add Package#post_install: executes either a block or an external command after the package has been installed
allow to reference pkg-config packages not built by autobuild. The .pc file is then used as installation stamp file
the configure.ac.user file generated by Genom may not be present in the RCS. Do not expect it to be there after import.
removed the Ruby package. If there are extensions to build, better have a post_install script to do that
big rdoc update
This is a bugfix release
More checks for working copy sanity: check that the target working copy has been created by the right tools before doing anything. Update test suite so that these parts of the importers is tested
Since we grep ‘svn info’ output, make sure that its output will be in english by setting LC_ALL to C
CVS and SVN importing plugins check that the current working copy comes from the right source
the autotools and genom package are now reconfiguring if the flags (configureflags and/or genomflags) changed
added the Ruby package, which does an import and builds all C extensions
added the pkgconfig package, which allows to use an already-installed package if this packages can be found through pkg-config
check that working copies that are already checked out are from the right source (for CVS and Subversion)
fix dependency handling for Genom modules. In particular, we add dependencies between the module generation and the installed genom files (includes, canvas, and the genom executable). Information is taken from the pkg-config file
new package types: InstalledPkgConfig, to reuse pkg-config based packages installed by another autobuild script
Use a Ruby-based DSL instead of YAML config files. It is waaaaaay more powerful and waaay cleaner. See demo.rb for an example
Added the Darcs importer
Fixes in dependency handling
Uses Rake 0.7
Fixes the release process, in which the bin/ directory was not distributed
0.5 gem did not include bin/autobuild (which obviously was not good). Fix that
Fixes the mail default behaviour. Added the ‘tar’ importer.
all the API is now in a separate module
genflags has been renamed back to genomflags. The convention is now to have a <tool>flags option. For instance: genomflags, configureflags
added the –[no-]build option to do only import
changed behaviour for mail reports:
- set sensible default options for mail - mail: true uses default options - mail: <string> is equivalent to mail: to: <string>
if a value is undefined in the config file, parameter expansion tries to get it from the program environment, and raises an error if it is not present in the environment vars
changed the names of log files. All importers now uses <package>-<import>.log
added the ‘tar’ importer, which downloads and uncompress a tarball
added support to split import and build. For instance
whole_tree: type: import import: cvs source: [ a, repository ] package1: type: autotools srcdir: whole_tree/package1 depends: whole_tree package2: type: autotools srcdir: whole_tree/package2 depends: whole_tree
Works as it should
autotools package has now an
which gives a name for a script which creates the autotools environment
renamed ‘genomflags’ -> ‘genflags’
variable interpolation checks for environment variables
added support for patching source code. Add patch: [ patches ] to the package configuration
renamed autobuild-config, common-config and clean-log to autobuild, common and clean_log. Autobuild warns if it finds one the previous spelling but ignores it anyway