3.0 KiB
Using wraptool
Wraptool is a subcommand of Meson that allows you to manage your source dependencies using the WrapDB database. It gives you all things you would expect, such as installing and updating dependencies. The wrap tool works on all platforms, the only limitation is that the wrap definition works on your target platform. If you find some Wraps that don't work, please file bugs or, even better, patches.
All code examples here assume that you are running the commands in
your top level source directory. Lines that start with the $
mark
are commands to type.
Simple querying
The simplest operation to do is to query the list of packages available. To list them all issue the following command:
$ meson wrap list
box2d
enet
gtest
libjpeg
liblzma
libpng
libxml2
lua
ogg
sqlite
vorbis
zlib
Usually you want to search for a specific package. This can be done
with the search
command:
$ meson wrap search jpeg
libjpeg
To determine which versions of libjpeg are available to install, issue
the info
command:
$ meson wrap info libjpeg
Available versions of libjpeg:
9a 2
The first number is the upstream release version, in this case
9a
. The second number is the Wrap revision number. They don't relate
to anything in particular, but larger numbers imply newer
releases. You should always use the newest available release.
Installing dependencies
Installing dependencies is just as straightforward. First just create
the subprojects
directory at the top of your source tree and issue
the install command.
$ meson wrap install libjpeg
Installed libjpeg branch 9a revision 2
Now you can issue a subproject('libjpeg')
in your meson.build
file
to use it.
To check if your projects are up to date you can issue the status
command.
$ meson wrap status
Subproject status
libjpeg up to date. Branch 9a, revision 2.
zlib not up to date. Have 1.2.8 2, but 1.2.8 4 is available.
In this case zlib
has a newer release available. Updating it is
straightforward:
$ meson wrap update zlib
Updated zlib to branch 1.2.8 revision 4
Wraptool can do other things besides these. Documentation for these
can be found in the command line help, which can be accessed by
meson wrap --help
.
Promoting dependencies
Meson will only search for subprojects from the top level
subprojects
directory. If you have subprojects that themselves have
subprojects, you must transfer them to the top level. This can be done
by going to your source root and issuing a promotion command.
meson wrap promote projname
This will cause Meson to go through your entire project tree, find an embedded subproject and copy it to the top level.
If there are multiple embedded copies of a subproject, Meson will not try to guess which one you want. Instead it will print all the possibilities. You can then manually select which one to promote by writing it out fully.
meson wrap promote subprojects/s1/subprojects/projname
This functionality was added in Meson release 0.45.0.