polkit (optional)
To build in directory build/:
- meson build/ && ninja -C build
+ meson setup build/ && meson compile -C build/
Any configuration options can be specified as -Darg=value... arguments
to meson. After the build directory is initially configured, meson will
their current values.
Useful commands:
- ninja -v some/target
- ninja test
- sudo ninja install
- DESTDIR=... ninja install
+ meson compile -v -C build/ some/target
+ meson test -C build/
+ sudo meson install -C build/
+ DESTDIR=... meson install -C build/
A tarball can be created with:
git archive --format=tar --prefix=systemd-222/ v222 | xz > systemd-222.tar.xz
tree and on the github infrastructure. Here's an incomprehensive list of the
available functionality:
-1. Use `ninja -C build test` to run the unit tests. Some tests are skipped if
+1. Use `meson test -C build` to run the unit tests. Some tests are skipped if
no privileges are available, hence consider also running them with `sudo
- ninja -C build test`. A couple of unit tests are considered "unsafe" (as
- they change system state); to run those too, build with `meson
+ meson test -C build`. A couple of unit tests are considered "unsafe" (as
+ they change system state); to run those too, build with `meson setup
-Dtests=unsafe`. Finally, some unit tests are considered to be very slow,
- build them too with `meson -Dslow-tests=true`. (Note that there are a couple
- of manual tests in addition to these unit tests.)
+ build them too with `meson setup -Dslow-tests=true`. (Note that there are a
+ couple of manual tests in addition to these unit tests.) (Also note: you can
+ change these flags for an already set up build tree, too, with "meson
+ configure -C build -D…".)
2. Use `./test/run-integration-tests.sh` to run the full integration test
suite. This will build OS images with a number of integration tests and run
`./tools/find-tabs.sh recpatch` to fix them. (Again, grain of salt, foreign
headers should usually be left unmodified.)
-6. Use `ninja -C build check-api-docs` to compare the list of exported
+6. Use `meson compile -C build check-api-docs` to compare the list of exported
symbols of `libsystemd.so` and `libudev.so` with the list of man pages. Symbols
lacking documentation are highlighted.
-7. Use `ninja -C build hwdb-update` to automatically download and import the
+7. Use `meson compile -C build hwdb-update` to automatically download and import the
PCI, USB and OUI databases into hwdb.
-8. Use `ninja -C build man/update-man-rules` to update the meson rules for
+8. Use `meson compile -C build man/update-man-rules` to update the meson rules for
building man pages automatically from the docbook XML files included in
`man/`.
$ cd systemd
$ vim src/core/main.c # or wherever you'd like to make your changes
$ meson build # configure the build
-$ ninja -C build # build it locally, see if everything compiles fine
-$ ninja -C build test # run some simple regression tests
+$ meson compile -C build # build it locally, see if everything compiles fine
+$ meson test -C build # run some simple regression tests
$ ln -s .mkosi/mkosi.fedora mkosi.default # Configure mkosi to build a fedora image
$ (umask 077; echo 123 > mkosi.rootpw) # set root password used by mkosi
$ sudo mkosi # build a test image
# Steps to a Successful Release
1. Add all items to NEWS
-2. Update the contributors list in NEWS (`ninja -C build git-contrib`)
+2. Update the contributors list in NEWS (`meson compile -C build git-contrib`)
3. Update the time and place in NEWS
4. [RC1] Update version and library numbers in `meson.build`
-5. Check dbus docs with `ninja -C build man/update-dbus-docs`
+5. Check dbus docs with `meson compile -C build man/update-dbus-docs`
6. Tag the release: `version=vXXX-rcY && git tag -s "${version}" -m "systemd ${version}"`
-7. Do `ninja -C build`
+7. Do `meson compile -C build`
8. Make sure that the version string and package string match: `build/systemctl --version`
-9. Upload the documentation: `ninja -C build doc-sync`
+9. Upload the documentation: `meson compile -C build doc-sync`
10. [FINAL] Close the github milestone and open a new one (https://github.com/systemd/systemd/milestones)
11. "Draft" a new release on github (https://github.com/systemd/systemd/releases/new), mark "This is a pre-release" if appropriate.
12. Check that announcement to systemd-devel, with a copy&paste from NEWS, was sent. This should happen automatically.
initial template:
```
-$ ninja -C build/ systemd-pot
+$ meson compile -C build/ systemd-pot
```
This will generate file `po/systemd.pot` in the source tree.
Start by updating the `*.po` files from the latest template:
```
-$ ninja -C build/ systemd-update-po
+$ meson compile -C build/ systemd-update-po
```
This will touch all the `*.po` files, so you'll want to pay attention when
You can recompile the `*.po` files using the following command:
```
-$ ninja -C build/ systemd-gmo
+$ meson compile -C build/ systemd-gmo
```
The resulting files will be saved in the `build/po/` directory.