qiBuild documentation

v2.0

Command line

  • qibuild make: add --coverity option to build with cov-analisys.

  • qibuild clean: syntax closer to other commands, cleans deep by default and

    respects --config --single and [project] options

  • Nicer output for all commands.

  • qibuild configure: add a --summarize-options argument to

    print a summary of the build options at the end of the configuration

  • qibuild configure: add --trace-cmake to trace CMake function calls

  • qibuild make get rid of confusing and useless “–target” option

  • Added a lot of short options (“-n” for “–dry-run”, “-f” for “–force”)

  • qibuild init: add a --config argument to set the default config used by the worktree

  • qibuild: improve argument parsing.

    • Do not configure everything when running qibuild configure from an unknown subdirectory
    • Automatically add projects to the worktree when running qibuild configure for a project not yet added to the worktree
    • qibuild commands now accepts both project names and project paths
  • qibuild: change dependency resolution

    • Now take both build dependencies and runtime dependencies into account by default. Use --build-deps to get only the build dependencies.
  • qidoc by-pass sphinx-build bug on mac

  • qidoc make it work on archlinux (using sphinx-build2 by default)

  • Added qidoc open to view generated documentation in a web browser

  • Added qidoc list list the known documentation projects in a worktree

  • qitoolchain list better error message when there is no toolchain

  • qidoc build improve argument parsing, smarter when no argument is given, can build a doc project by passing its name

  • Added qisrc remove

  • Added qisrc list list the projects paths of a worktree

  • Added qisrc grep to grep on every project of a worktree

  • Added qicd (inspired by roscd)

  • qisrc init can now be used with a git url (git@foo:manifest.git) (ala repo)

  • qisrc init : add -p,  --profile option to choose from several profiles (different xml files in the git url)

  • qisrc init : add -b, --branch option to choose a branch in the manifest url

  • qisrc status : now also display a message when the current branch is ahead or behind the remote branch

  • Added qisrc sync

    • configure local and remote branches
    • automatically setup code review
    • automatically synchronize git submodules
  • Added qisrc push : upload changes to code review

  • Added qibuild deploy, to deploy code to a remote device

  • qibuild test: learned --slow

  • qibuild test: learned -n, --dry-run to just list the test names

  • qibuild test: learned --perf to run performance tests

  • qibuild test: --test-name has been removed, use -k PATTERN

  • Removed qisrc fetch, use qisrc init instead

  • Removed qisrc pull, use qisrc sync instead

  • Added qitoolchain convert-package, to turn a binary package into a qiBuild package

  • Added qitoolchain convert-package, to turn a binary package or package directory into a qiBuild package

  • qitoolchain import-package learned --batch

  • qitoolchain import-package learned to import package directory

  • qibuild make learned --verbose-make

  • qisrc learned reset

  • qisrc learned snapshot

CMake

  • Added qi_generate_src, qi_generate_header

  • Added qi_swig_wrap_java

  • Added qi_install_python

  • Added qi_stage_dir, to find files from source directories

  • Added qi_create_perf_test

  • qi_create_gtest and qi_create_test learned the SLOW keyword so that tests are not run by default.

  • qi_use_lib learned the ASSUME_SYSTEM_INCLUDE flag to use -isystem on the dependencies

  • qi_create_config_h learned to use configure_file flags such as @ONLY

  • qi_install_conf learned to install configuration files in a SYSCONDIR outside the CMAKE_INSTALL_PREFIX subtree.

    $ qibuild configure foo
    $ qibuild install foo --prefix=/usr /tmp/without_sysconfdir
    $ tree /tmp/without_sysconfdir
    /tmp/without_sysconfdir/
        usr/
            etc/
                foo.conf
            lib/
                libfoo.so
    
    $ qibuild configure foo -D SYSCONFDIR=/etc
    $ qibuild install foo --prefix=/usr /tmp/with_sysconfdir
    $ tree /tmp/with_sysconfdir
    /tmp/with_sysconfdir/
        etc/
            foo.conf
        usr/
            lib/
                libfoo.so
    
  • qi_swig_wrap_python learned to install python modules in the standard location

  • qibuild cmake modules:

    • Added hdf5, openssl, libevent_openssl, qt_qtdbus, qt_qttest, boost_unit_test_framework, boost_test_exec_monitor, boost_timer, boost_chrono, rrd, rrd_th, jsoncpp, zbar
    • Renamed dbus into dbus-1, and dbus-glib into dbus-glib-1
    • qi_use_lib(OPENGL) now uses upstream’s FindOpenGL.cmake
    • ogre-tools: Allow to use more than one plugin.
  • qi_add_test can now handle test script as target instead of binary.

Python

  • Added qisrc.sync for synchronizing a worktree with a manifest

  • Added qisrc.review for configuring a project to use gerrit

  • Added qibuild.deploy to handle deploying code to a remote target

  • Added qibuild.gdb to allow stripping debug symbols out of the libraries

  • Added qibuild.ui for tools to interact with the user

  • Added qixml to help XML parsing, get rid of lxml dependency

  • Added qisrc.git.get_repo_root

  • Added qisrc.git.is_submodule

  • Renamed qisrc.worktree.worktree_open to qisrc.worktree.open_worktree

  • Renamed qibuild.worktree to qisrc.worktree

  • qibuild.config.QiBuildConfig.read: learned create_if_missing option

  • install-qibuild.sh now installs qibuild scripts in ~/.local/bin

  • qisrc.git.Git.call fix using quiet=True with raises=False

  • qisrc.git.Git.get_current_branch : return None when in ‘detached HEAD’ state

  • qibuild.command.call learned quiet option

  • Usage of qibuild.log and logging.py has been deprecated, use qibuild.ui instead

  • toc.test_project has been removed, use qibuild.ctest instead

  • toc.resolve_deps has been removed, use qibuild.cmdparse.deps_from_args instead

  • qisrc.git.get_current_branch : return None when in ‘detached HEAD’ state

  • Add qixml to help XML parsing, get rid of lxml dependency

  • qibuild.command.call add quiet option

  • Remove usage of qibuild.log and logging.py to display nice colorized messages to the console, use qibuild.ui module.

  • Refactoring of the whole module qibuild.archive:

    • Non-compatible APIs
    • Removed APIs:
      • qibuild.archive.extracted_name
      • qibuild.archive.archive_name
      • qibuild.archive.extract_tar: use qibuild.archive.extract instead
      • qibuild.archive.extract_zip: use qibuild.archive.extract instead
      • qibuild.archive.zip: use qibuild.archive.compress instead
      • qibuild.archive.zip_unix: use qibuild.archive.compress instead
      • qibuild.archive.zip_win: use qibuild.archive.compress instead
    • New APIs:
      • qibuild.archive.compress: include algo option, which is set to zip when unspecified
      • qibuild.archive.guess_algo: guessing the compression method from the archive extension
    • Updated APIs:
      • qibuild.archive.extract:
        • support for the topdir option has been removed
        • add algo option, when unspecified algo is set to zip on all platform
  • Added qibuild.cmake.modules to handle CMake module generation

  • Renamed qibuild.cmdparse to qibuild.script

  • qibuild.cmdparse now centralize the parsing of qibuild actions arguments

    (guessing project from working directory and so on)

Misc

  • Now using tox to run the tests on Jenkins, get rid of run_tests.py
  • Now using py.test to write the automatic tests