v3.0¶
General¶
- Tons of bug fixes, massive Python refactoring
- The
./install-qibuild.sh
script is gone: its name was misleading, and it lead to bad stuff, like:- installing in
/usr/local
by default on mac (which causes problem on a multi-user machine) - being hard to know which qibuild version was used
- installing in
Instead, you should use ./generate-sourceme.sh
and patch your
~/.profile
to include the generated sourceme.sh
file if you
want to use the latest git
version of qibuild
, or just use
pip
once qibuild
is published on Pypi
Command line¶
General¶
- Some actions that could only run on all projects learned a
-p,--projects
argument. You can now for instance useqibuild foreach -p hello -- <cmd>
to run<cmd>
on thehello
project and its dependencies - It is now impossible to have nested worktrees.
- The
--force
option is gone qibuild init
,qisrc init
, will only run if the working directory is empty
- The
qibuild deploy
no longer strips the debug symbols by default. Use--split-debug
to do so.
qisrc¶
- After
qisrc init
, the projects under code review now end up with only one remote instead of two. qisrc init
learned--groups
to only clone some repositories of a projectqisrc sync
now always clones the missing projects (even when not using-a
)qisrc sync
now handles repositories renamesqisrc sync
logic changed to be a bit more reliable and fail less oftenqisrc foreach
learned--all
, to run on every projects (previously it could only run on git projects)- add
qisrc manifest
to manage the manifest used in a given worktree. qisrc init
can now only be used once. To add a new manifest, runqisrc manifest --add name url
. This makes it possible to change the groups, tooqisrc init --no-review
is gone, this was seldom used anywayqisrc sync
learned--build-deps
to pull the build dependencies- Since this option clashes with other qibuild option, you should now use
qibuild configure --no-runtime
orqibuild configure --build-deps-only
instead ofqibuild configure --build-deps
- Manifests are now cloned in
.qi/manifests
, making it possible to have code review on manifests repositories too - Syntax of the
manifests.xml
changed:
<!-- old -->
<manifest>
<remote name="origin" fetch="git@example.com"
review="http://gerrit:8080" />
<project name="libfoo.git"
path="lib/libfoo"
revision="next"
review="true" />
</manifest>
<!-- new -->
<manifest>
<remote name="origin" url="git@example.com" />
<remote name="gerrit" url="ssh://gerrit:29418/" review="true" />
<repo src="lib/libfoo" default_branch="next" remote="gerrit" />
</manifest>
- The gerrit ssh port is now no longer hard-coded, and you
should specify the
ssh
URL, not thehttp
URL. - The
next
branch of the repo inlib/libfoo
will trackssh://<username>@gerrit:29418/libfoo.git
instead ofgit@example.com:libfoo.git
. This makes it possible to use gerrit only, without any mirror, and it also means you don’t have to wait for the gerrit synchronization, which is helpful when usingqisrc
on a buildfarm plugged to gerrit. - The default manifest is now called
manifest.xml
instead ofdefault.xml
to ease the transition. qisrc
profiles are gone, use groups instead. Here’s how you can make it possible to only clone 2 of the 3 repositories declared in the manifest:
<!-- in qibuild2 -->
<!-- manifest/default.xml -->
<manifest>
<project name="foo.git" />
<manifest url="bar.xml" />
</manifest>
<!-- manifest/bar.xml -->
<manifest>
<project name="bar.git" />
<project name="libbar.git" />
</manifest>
Used with --profile bar
<!--in qibuild3 -->
<manifest>
<repo name="foo.git" />
<repo name="bar.git" />
<repo name="libbar.git" />
<groups>
<group name="bar">
<project name="bar.git" />
<project name="libbar.git" />
</group>
</groups>
</manifest>
Used with --group bar
qibuild¶
qibuild
now usesCMake
code from the worktree. This makes it possible to use a Python command line versionqibuild
different of theqibuild/cmake
code.qibuild init -c
is deprecated, useqitoolchain set-default
insteadqibuild init --interactive
is deprecated, useqibuild config --wizard
insteadqibuild test
learned--build-first
- Add
qibuild run
- Add
qibuild find
- Syntax of
qiproject.xml
changed:
<!-- old -->
<project name="foo">
<depends runtime="true" names="bar" />
</project>
<!-- new -->
<project version="3" >
<qibuild name="foo">
<depends runtime="true" names="bar" />
</qibuild>
</project>
This is more consistent, and helps solving nasty bugs when using nested qibuild projects.
qitoolchain¶
- Add
qitoolchain set-default
qilinguist¶
qilinguist
can now be called without any project name- Add
qilinguist list
qidoc¶
- Now usable without a “templates” repository
- Can choose the project to be at the root of the generated doc
- Now only generates files in
<project>/build-doc
- New commands:
qidoc clean
,qidoc install
- Syntax of
qiproject.xml
changed:
<!-- old -->
<! -- in foo/qiproject.xml -->
<project>
<sphinxdoc src="doc" name="foo-doc" />
</project>
<!-- new -->
<! -- in foo/qiproject.xml -->
<project version="3" >
<project src="doc" />
</project>
<! -- in foo/doc/qiproject.xml -->
<project version="3" >
<qidoc type="sphinx" name="foo-doc" />
</project>
CMake¶
- MacOS: use
rpath
:libraries use an@rpath
based directory for the default installed name. Executables contain arpath
pointing to the root of the install directory. - Linux shared libraries are linked with a
rpath
set to$ORIGIN/../lib
by default, as it was done for executables.