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 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

{i} Add your comments to this goal proposal here

Status of this goal

{i} Tip: If you choose to work on a module, create the bug report on the GNOME bugzilla for the relevant module, and make it block bug 782980. This way people will know someone already works on it, and won't duplicate the work you're doing.

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

in progress

evolution-data-server

not wanted

glib-networking

in progress

gnome-bluetooth

done

gnome-online-accounts

to do

gnome-control-center

in progress

gnome-desktop

to do

adwaita-icon-theme

to do

gnome-keyring

to do

gnome-menus

to do

gnome-packagekit

done

gnome-session

to do

gnome-settings-daemon

to do

gnome-shell

done

gnome-themes-standard

to do

gsettings-desktop-schemas

to do

gvfs

in progress

mousetweaks

patch

mutter

to do

network-manager-applet

to do

telepathy-mission-control

to do

core-utilities

baobab

to do

bijiben

in progress

empathy

to do

eog

in progress

epiphany

done

evince

to do

gnome-calculator

in progress

gnome-calendar

done

gnome-characters

to do

gnome-contacts

done

gnome-dictionary

done

gnome-disk-utility

done

gnome-font-viewer

done

gnome-logs

to do

gnome-screenshot

done

gnome-system-log

to do

gnome-system-monitor

to do

gnome-terminal

in progress

gucharmap

to do

nautilus

done

sushi

to do

yelp

to do

core-extras

gnome-backgrounds

in progress

gnome-user-share

to do

vino

to do

gnome-user-docs

in progress

core-os-services

accountsservice

to do

avahi

to do

bluez

to do

cups

to do

dbus

to do

gdm

to do

NetworkManager

to do

PackageKit

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

done

clutter-gst

in progress

cogl

to do

desktop-file-utils

to do

folks

to do

gnome-js-common

to do

gspell

not wanted for now

gtksourceview

not wanted for now

gdk-pixbuf

done

gjs

blocked

glib

merged

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

done

libgdata

to do

libgsf

to do

libgtop

to do

libgweather

to do

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

initial wip patch

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

blocked

vala

to do

vte

in progress

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

in progress

evolution

not wanted

file-roller

to do

five-or-more

to do

four-in-a-row

to do

frogr

done

gedit

to do

ghex

to do

glade

to do

gnome-boxes

in progress

gnome-clocks

done

gnome-color-manager

to do

gnome-devel-docs

to do

gnome-documents

to do

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

to do

gnome-klotski

to do

gnome-mahjongg

to do

gnome-mines

done

gnome-nibbles

to do

gnome-robots

to do

gnome-sudoku

to do

gnome-tetravex

to do

gnome-tweak-tool

done

iagno

to do

lightsoff

to do

quadrapassel

to do

swell-foop

to do

tali

to do

gnome-nettool

patch

nautilus-sendto

done

nemiver

to do

orca

to do

polari

done

rhythmbox

in progress

rygel

doing?

seahorse

to do

shotwell

done

simple-scan

done

totem

done

vinagre

to do

Initiatives/GnomeGoals/MesonPorting (last edited 2017-08-23 18:31:03 by NielsDeGraef)