GNOME Goal: Port modules to use Meson build system
As the meson webpage says:
Meson is an open source build system meant to be both extremely fast, and, even more importantly, as user friendly as possible. The main design point of Meson is that every moment a developer spends writing or debugging build definitions is a second wasted. So is every second spent waiting for the build system to actually start compiling code.
This GNOMEGoal is to coordinate efforts and avoid duplicating work
Guidelines
Meson documentation is quite complete, take a look to these links:
Things to check while porting
- If your project has configuration options for the Autotools build make sure to port them all to the Meson one, following these style guidelines
Drop the enable from --enable-foo boolean options; Meson has boolean values, so -Denable-foo=true would read as redundant, and -Denable-foo=false would read as contradictory. Use -Dfoo=true or -Dfoo=false instead
Similarly, you should drop with from --with-bar options
Use a consistent separator character for multi-word options, preferably the underscore _, like cert_file or cups_print_backend
- Try to avoid automatic feature detection; this makes it harder for distributors and continuous integration systems to identify the dependencies needed to build your project
Do not add "enable debug" options to inject pre-processor symbols into the build, or control the presence of debugging messages; you should use Meson's own buildtype option
Do not add "enable -Werror" options to make warnings fail the build; you should use Meson's own --werror build option
Things to check after the porting:
- If you port a library:
- Make sure the list of exported symbols is the same between Autotools and Meson builds
Make sure you maintain compatible sonames (use version and soversion when building a library() target)
- If you release a tarball using Autotools, remember to include the Meson files on it
Use the EXTRA_DIST Automake target to include the meson.build, meson_options.txt, and ancillary scripts you may use
Update jhbuild and gnome-continuous to use Meson
For Continuous you will either need a build API wrapper in your own project, or you will need to write a patch; contact EmmanueleBassi on the #gnome-hackers or #testable IRC channels
Use meld to diff install directories of the projects
If you rely on symbol visibility — e.g. using libtool or using pre-processor macros — use nm to check that you're still exporting the same ABI
Comments before approval
|
Status of this goal
|
State |
Markup |
todo |
<: #ff8080> todo |
patch |
<: #ffcc50> [[GnomeBug:xxxxx|patch]] |
done |
<: #80ff80> [[GnomeBug:xxxxx|done]] |
not wanted |
<: #dddddd> not wanted |
Above are the states and corresponding markup to update the modules state table below.
Tarball |
Status |
core |
|
at-spi2-core |
done |
at-spi2-atk |
done |
dconf |
|
evolution-data-server |
not wanted |
glib-networking |
|
gnome-bluetooth |
|
gnome-online-accounts |
|
gnome-control-center |
|
gnome-desktop |
to do |
adwaita-icon-theme |
to do |
gnome-keyring |
to do |
gnome-menus |
to do |
gnome-packagekit |
done |
gnome-session |
|
gnome-settings-daemon |
to do |
gnome-shell |
|
gnome-themes-standard |
to do |
gsettings-desktop-schemas |
to do |
gvfs |
|
mousetweaks |
|
mutter |
to do |
network-manager-applet |
|
telepathy-mission-control |
to do |
core-utilities |
|
baobab |
done |
bijiben |
|
empathy |
to do |
eog |
|
epiphany |
done |
evince |
to do |
gnome-calculator |
|
gnome-calendar |
done |
gnome-characters |
to do |
gnome-contacts |
done |
gnome-dictionary |
done |
gnome-disk-utility |
|
gnome-font-viewer |
|
gnome-logs |
|
gnome-screenshot |
|
gnome-system-log |
to do |
gnome-system-monitor |
to do |
gnome-terminal |
|
gucharmap |
to do |
nautilus |
|
sushi |
to do |
yelp |
to do |
core-extras |
|
gnome-backgrounds |
|
gnome-user-share |
to do |
vino |
to do |
gnome-user-docs |
|
core-os-services |
|
accountsservice |
|
avahi |
to do |
bluez |
to do |
cups |
to do |
dbus |
to do |
gdm |
|
to do |
|
polkit |
to do |
upower |
to do |
udisks |
to do |
core-deps |
|
atk |
done |
atkmm |
to do |
cantarell-fonts |
to do |
caribou |
to do |
clutter |
in progress |
clutter-gtk |
|
clutter-gst |
in progress |
cogl |
to do |
desktop-file-utils |
to do |
folks |
|
gnome-js-common |
to do |
gspell |
|
gtksourceview |
todo |
gdk-pixbuf |
done |
gjs |
|
glib |
|
glibmm |
to do |
gnome-video-effects |
to do |
gobject-introspection |
in progress |
gst-plugins-base |
done |
gst-plugins-good |
done |
gst-plugins-farsight |
to do |
gstreamer |
done |
gtk+3 |
not wanted for now |
gtk+4 |
done |
gtk-doc |
to do |
gtkmm |
to do |
gudev |
to do |
hicolor-icon-theme |
to do |
iso-codes |
to do |
itstool |
to do |
json-glib |
done |
libcanberra |
to do |
libchamplain |
to do |
libcroco |
to do |
libgee |
to do |
libgepub |
|
libgdata |
to do |
libgsf |
to do |
libgtop |
to do |
libgweather |
done |
libmediaart |
done |
libmusicbrainz |
to do |
libnice |
to do |
libnotify |
to do |
libpeas |
to do |
librest |
to do |
librsvg |
to do |
libsecret |
to do |
libsigc++2 |
to do |
libsoup |
|
libxml2 |
to do |
mm-common |
to do |
p11-kit |
to do |
pango |
done |
pangomm |
to do |
poppler |
to do |
pygobject |
to do |
shared-mime-info |
to do |
sound-theme-freedesktop |
to do |
telepathy-glib |
to do |
telepathy-logger |
to do |
telepathy-farsight |
to do |
totem-pl-parser |
done |
tracker |
|
vala |
to do |
vte |
|
webkit |
to do |
yelp-tools |
to do |
yelp-xsl |
to do |
zenity |
to do |
colord |
to do |
apps |
|
accerciser |
to do |
aislerot |
to do |
anjuta |
to do |
brasero |
to do |
cheese |
to do |
devhelp |
|
evolution |
not wanted |
file-roller |
to do |
five-or-more |
to do |
four-in-a-row |
to do |
frogr |
|
gedit |
to do |
ghex |
to do |
glade |
to do |
gnome-boxes |
|
gnome-clocks |
done |
gnome-color-manager |
to do |
gnome-devel-docs |
to do |
gnome-documents |
|
gnome-maps |
to do |
gnome-music |
to do |
gnome-software |
done |
gnome-sound-recorder |
to do |
gnome-todo |
done |
gnome-usage |
done |
gnome-weather |
to do |
gnome-chess |
|
gnome-klotski |
to do |
gnome-mahjongg |
to do |
gnome-mines |
|
gnome-nibbles |
to do |
gnome-robots |
to do |
gnome-sudoku |
to do |
gnome-tetravex |
to do |
gnome-tweak-tool |
|
iagno |
to do |
lightsoff |
to do |
quadrapassel |
to do |
swell-foop |
to do |
tali |
to do |
gnome-nettool |
|
nautilus-sendto |
|
nemiver |
to do |
orca |
to do |
polari |
done |
rhythmbox |
|
rygel |
|
seahorse |
|
shotwell |
done |
simple-scan |
done |
totem |
|
vinagre |
to do |