I read something about meson in planet GNOME earlier this year. Someone was interested and blogged about it. A new fast and user friendly build system.
I’ve been using autotools for so many years now, that I can’t remember. It wasn’t very pleasant to work with it, but it worked. However, I was curious about meson and I started playing with it.
I used it in different projects at work and it fitted very well. Usual mistakes in the build files were easily detected and I began to realize that I did not spent as much time as before on the build system and that I was more focused on coding.
After sending some patches to bijiben
, while they were waiting
for review, I started working on the meson port of another GNOME’s
application I had been looking at: gnome-todo.
This first meson patch was sent at the end of may. Soon after an initiative arose to port GNOME’s packages to meson. Yesterday, less than 5 months later, I sent my last patch porting another package to meson, which makes it port number 23.
The list of GNOME’s applications ported and their status is as follows:
- gnome-todo: done.
- bijiben: in-progress.
- gnome-calendar: done.
- libgepub: done.
- totem: done.
- devhelp: in-progress.
- eog: in-progress.
- vte: blocked.
- gnome-terminal: blocked.
- dconf: in-progress.
- dconf-editor: in-progress.
- gnome-disk-utility: done.
- gnome-control-center: in-progress
- gvfs: in-progress.
- gnome-bluetooth: done.
- glib-networking: in-progress.
- telepathy-account-widgets: in-progress.
- gnome-documents: done.
- gnome-photos: in-progress.
- gnome-online-accounts: in-progress.
- gnome-session: in-progress.
- network-manager-applet: in-progress.
- gitg: in-progress.
Although meson has nice features, in my case, its ease of use is the
biggest win. meson is usually also faster than autotools, and some
of these ports, particularly the big packages, build a lot faster.
Here are some raw numbers using the time
command in a full build
(configure
, build
and + install
):
gnome-control-center:
autotools | meson | |
---|---|---|
real | 4m29,223s | 1m34,726s |
user | 3m59,784s | 5m22,009s |
sys | 0m33,556s | 0m21,560s |
gnome-online-accounts:
autotools | meson | |
---|---|---|
real | 2m25,265s | 0m38,212s |
user | 2m2,687s | 1m16,560s |
sys | 0m12,824s | 0m5,317s |
gvfs:
autotools | meson | |
---|---|---|
real | 2m22,357s | 0m34,689s |
user | 1m58,643s | 1m49,066s |
sys | 0m14,816s | 0m9,439s |
network-manager-applet:
autotools | meson | |
---|---|---|
real | 2m9,749s | 0m36,627s |
user | 1m55,974s | 1m43,569s |
sys | 0m12,887s | 0m9,874s |
At the moment, only 7 packages merged the patches. However, most maintainers are positive about adopting meson at some point.
Let’s see how this goes.