Skip to content

Conversation

keszybz
Copy link
Member

@keszybz keszybz commented Apr 5, 2017

It's crucial that we can build systemd using VS2010!

... er, wait, no, that's not the official reason. We need to shed old systems
by requring python 3! Oh, no, it's something else. Maybe we need to throw out
345 years of knowlege accumulated in autotools? Whatever, this new thing is
cool and shiny, let's use it.

This is not complete, I'm throwing it out here for your amusement and critique.

  • rules for sd-boot are missing. Those might be quite complicated.

  • rules for tests are missing too. Those are probably quite simple and
    repetitive, but there's lots of them.

  • it's likely that I didn't get all the conditions right, I only tested "full"
    compilation where most deps are provided and nothing is disabled.

  • busname.target and all .busname units are skipped on purpose.

    Otherwise, installation into $DESTDIR has the same list of files and the
    autoconf install, except for .la files.

It'd be great if people had a careful look at all the library linking options.
I added stuff until things compiled, and in the end there's much less linking
then in the old system. But it seems that there's still a lot of unnecessary
deps.

meson has a shared_module statement, which sounds like something appropriate
for our nss and pam modules. Unfortunately, I couldn't get it to work. For the
nss modules, we need an .so version of '2', but shared_module disallows the
version argument. For the pam module, it also didn't work, I forgot the reason.

The handling of .m4 and .in and .m4.in files is rather awkward. It's likely
that this could be simplified. If make support is ever dropped, I think it'd
make sense to switch to a different templating system so that two different
languages and not required, which would make everything simpler yet.

--

Feel free to push stuff on top (including fixup commits to be squashed).

@evverx
Copy link
Member

evverx commented Apr 5, 2017

@keszybz , could you elaborate what the benefits of using meson are, please? Thanks.

@keszybz
Copy link
Member Author

keszybz commented Apr 5, 2017

Arrgh, I forgot that I didn't write the rule to create man/custom-entities.ent. So for now this file has to be copied from a make build.

The reasons:

  • simplicity: although the final number of lines is quite large (5k in meson.builds vs 12k for Makefile.am + configure.ac + Makefile-man.am), but it's all in a simple semi-declarative language. This was my first contact with the language, and I got it working without too much trouble. The documentation is not that great, but the syntax is so intuitive that this does not stand too much in the way. Things are already OK, but despite that, they are bound to improve, as more people are using it, It's much easier to see what is going on and why.

  • better error handling: if the command fails, the last command line is printed along with stderr. Not intermixed with other output. Not mangled. Ready to be copied and pasted and debugged.

  • speed: full configuration and compilation from scratch:

$ time bash -c 'meson build && cd build && ninja-build'
...
bash -c 'meson build && cd build && ninja-build'  130.80s user 12.49s system 357% cpu 40.080 total

and partials builds are near-instantaneous:

$ touch ../src/login/logind.c && time nj
[2/2] Linking target systemd-logind
ninja-build  0.04s user 0.03s system 98% cpu 0.076 total

That's all using ccache, but for development, it's a fair comparison. We're compiling the same stuff over and over, and being able to do a modification-compilation-test rounding in a second instead of a minute is very pleasant.

meson.build Outdated
'--param=ssp-buffer-size=4',
]
if compiler.has_argument(arg)
add_global_arguments(arg, language : 'c')
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

add_project_arguments() is a bit better because it would not propagate to subprojects (though you don't have any)

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

RIght. I read about the distinction between global and project, but it didn't really sink in. Sounds reasonable to move it though.

meson.build Outdated
@1@
'''
gperf_snippet_format = 'echo foo,bar | @0@ -L ANSI-C'
gperf_snippet = run_command('bash', '-c', gperf_snippet_format.format(gperf.path()))
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

meh, why not just sh?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sure.


#####################################################################

intltool_merge = find_program('intltool-merge')
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

why not to use here i18n.merge_file() ?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It doesn't work:

+i18n.merge_file(
+  'org.freedesktop.systemd1.policy',
+  po_dir : po_dir,
+  input : policy_in,
+  output : 'org.freedesktop.systemd1.policy',
+  install : true,
+  install_dir : polkitpolicydir)
FAILED: src/core/org.freedesktop.systemd1.policy 
'msgfmt' '--xml' '--template' 'src/core/org.freedesktop.systemd1.policy.in' '-d' '/home/zbyszek/src/systemd/po' '-o' 'src/core/org.freedesktop.systemd1.policy'
msgfmt: cannot locate ITS rules for src/core/org.freedesktop.systemd1.policy.in

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

sounds like a bug, can you report it please?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

bashcompletiondir = get_option('bashcompletiondir')
if bashcompletiondir == ''
out = run_command(
pkg_config, '--variable=completionsdir', 'bash-completion')
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

 get_pkgconfig_variable(varname) (Added 0.36.0) will get the pkg-config variable specified, or, if invoked on a non pkg-config dependency, error out

probably you want something like

bashcomp = dependency('bash-completion', required : false)
if bashcomp.found()
  bashcom[pletiondir = bashcomp.get_pkgconfig_variable('completionsdir')
else
  ...
endif

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ah, right.

@igor-raits
Copy link
Member

Was not able to review all 5k lines, but looks good ;)

@igor-raits
Copy link
Member

apart from tens of awk scripts ;) isn't it possible to replace them with something saner? like python scripts? (you have py3 anyway since meson runs on top of it)

@keszybz
Copy link
Member Author

keszybz commented Apr 5, 2017

Python scripts are relatively more verbose than awk scripts. Probably something like ~3-4 times for such simple cases. I'd even prefer to have the awk scripts inline, but cannot because of mesonbuild/meson#1564. And it's less error-prone to take the awk scripts from the Makefile and just copy them over then to write stuff from scratch. But maybe in the future, if autotools support is dropped. this could be done.

Thanks for your comments, much appreciated.

@jpakkane
Copy link
Contributor

jpakkane commented Apr 5, 2017

For comparison, how long does an Autotools build take on the same machine. Note that by default Autotools builds with -O2 -g whereas the default for Meson is -O0 -g. For a fair comparison either tell Autotools to build with -O0 -g or set Meson buildtype to debugoptimized.

Yes, it's not really an apples-to-apples comparison because of some missing functionality but this is useful information as a rough estimate.

@mbiebl
Copy link
Contributor

mbiebl commented Apr 5, 2017

Program /bin/m4 found: NO

Meson encountered an error in file meson.build, line 390, column 0:
Program "/bin/m4" not found.

In Debian, m4 is installed as /usr/bin/m4 and we don't have a /bin/ → /usr/bin symlink yet

@mbiebl
Copy link
Contributor

mbiebl commented Apr 5, 2017

Changing meson.build to

-m4 = find_program('/bin/m4')
+m4 = find_program('m4')

I get

Program m4 found: YES (/home/michael/git/systemd/m4)

m4 is a directory though. Sounds like a bug in find_program()

@igor-raits
Copy link
Member

@mbiebl it's even written in commit message ;)

@mbiebl
Copy link
Contributor

mbiebl commented Apr 5, 2017

@mbiebl it's even written in commit message ;)

Indeed, missed that

@poettering
Copy link
Member

I merged #5706, could you rebase this one?

@mbiebl
Copy link
Contributor

mbiebl commented Apr 5, 2017

on Debian, PATH for a regular uses doesn't include /sbin and /usr/sbin. Even with the quota package installed, I get

Program quotaon found: NO

Meson encountered an error in file meson.build, line 408, column 7:
Configuration set requires 2 arguments.

Two issues:

  • We should include sbin in the search path
  • The configuration should not fail if a non required program is not found.

@mbiebl
Copy link
Contributor

mbiebl commented Apr 5, 2017

Program xsltproc found: YES (/usr/bin/xsltproc)

Meson encountered an error in file man/meson.build, line 22, column 0:
File custom-entities.ent does not exist.

@mbiebl
Copy link
Contributor

mbiebl commented Apr 5, 2017

[386/1121] 'Generating systemd.generator.7 with a custom command.'
../man/systemd.generator.xml:64: parser error : Entity 'systemgeneratordir' not defined
<filename>&systemgeneratordir;/*</filename></literallayout>
                              ^
../man/systemd.generator.xml:71: parser error : Entity 'usergeneratordir' not defined
<filename>&usergeneratordir;/*</filename></literallayout>
                            ^
../man/systemd.generator.xml:78: parser error : Entity 'usergeneratordir' not defined
    <filename>&usergeneratordir;/</filename> and other directories
                                ^
../man/systemd.generator.xml:324: parser error : Entity 'systemgeneratordir' not defined

@mbiebl
Copy link
Contributor

mbiebl commented Apr 5, 2017

[448/1121] Compiling c object 'systemd-cgls@exe/src_cgls_cgls.c.o'
FAILED: systemd-cgls@exe/src_cgls_cgls.c.o 
cc  '-Isystemd-cgls@exe' '-I.' '-I..' '-Isrc/libsystemd-network' '-I../src/libsystemd-network' '-I../src/libsystemd/sd-network' '-I../src/libsystemd/sd-netlink' '-I../src/libsystemd/sd-id128' '-I../src/libsystemd/sd-hwdb' '-I../src/libsystemd/sd-device' '-I../src/libsystemd/sd-bus' '-Isrc/core' '-I../src/core' '-Isrc/libudev' '-I../src/libudev' '-Isrc/udev' '-I../src/udev' '-Isrc/login' '-I../src/login' '-Isrc/timesync' '-I../src/timesync' '-Isrc/resolve' '-I../src/resolve' '-Isrc/journal' '-I../src/journal' '-Isrc/systemd' '-I../src/systemd' '-Isrc/shared' '-I../src/shared' '-Isrc/basic' '-I../src/basic' '-fdiagnostics-color=always' '-pipe' '-D_FILE_OFFSET_BITS=64' '-Wall' '-Winvalid-pch' '-std=gnu99' '-O0' '-g' '-Wall' '-Wextra' '-Wundef' '-Wlogical-op' '-Wmissing-include-dirs' '-Wold-style-definition' '-Wpointer-arith' '-Winit-self' '-Wdeclaration-after-statement' '-Wfloat-equal' '-Wsuggest-attribute=noreturn' '-Werror=missing-prototypes' '-Werror=implicit-function-declaration' '-Werror=missing-declarations' '-Werror=return-type' '-Werror=incompatible-pointer-types' '-Werror=format=2' '-Wstrict-prototypes' '-Wredundant-decls' '-Wmissing-noreturn' '-Wshadow' '-Wendif-labels' '-Wstrict-aliasing=2' '-Wwrite-strings' '-Wno-unused-parameter' '-Wno-missing-field-initializers' '-Wno-unused-result' '-Wno-format-signedness' '-Werror=overflow' '-Wdate-time' '-Wnested-externs' '-ffast-math' '-fno-common' '-fdiagnostics-show-option' '-fno-strict-aliasing' '-fvisibility=hidden' '-fstack-protector' '-fstack-protector-strong' '-fPIE' '--param=ssp-buffer-size=4' '-Werror=shadow' '-include' 'config.h' '-MMD' '-MQ' 'systemd-cgls@exe/src_cgls_cgls.c.o' '-MF' 'systemd-cgls@exe/src_cgls_cgls.c.o.d' -o 'systemd-cgls@exe/src_cgls_cgls.c.o' -c ../src/cgls/cgls.c
In file included from ../src/cgls/cgls.c:30:0:
../src/shared/cgroup-show.h:25:28: fatal error: systemd/sd-bus.h: No such file or directory
 #include <systemd/sd-bus.h>
                            ^
compilation terminated.

Looks like 'src' is missing in includes.
I wonder whether @keszybz had libsystemd-dev installed, so the build picked up the system version. This shouldn't happen imho, we should always use the headers from the source tree

@mbiebl
Copy link
Contributor

mbiebl commented Apr 5, 2017

pkg_config  = find_program('pkg-config', required : true)

That check is unnecessary. When using dependency(), a check for pkg-config is already included with an error message like this:

Found Pkg-config: NO

Meson encountered an error in file meson.build, line 534, column 0:
Pkg-config not found.

@jpakkane
Copy link
Contributor

jpakkane commented Apr 5, 2017

required : true is almost never needed, it is the default both for dependency and find_program.

@mbiebl
Copy link
Contributor

mbiebl commented Apr 5, 2017

I've done a few test builds on my X220 (Core i7, 4 cores)

autotools
=========

./autogen.sh
real	0m16,522s
user	0m14,684s
sys	0m0,304s


./configure  --sysconfdir=/etc --localstatedir=/var --libdir=/usr/lib
real	0m9,186s
user	0m3,840s
sys	0m1,040s

CFLAGS='-g -O0'
~~~~~~~~~~~~~~~

make -j4
real	11m53,490s
user	27m28,152s
sys	3m2,804s

make 
real	23m36,000s
user	13m17,720s
sys	1m47,756s

installed size unstripped: 67648
installed size stripped: 41464


CFLAGS='-g -O2'
~~~~~~~~~~~~~~~

make -j4
real	16m23,664s
user	42m24,512s
sys	3m46,164s

make
real	28m52,290s
user	18m48,744s
sys	2m0,888s

installed size unstripped: 56572
installed size stripped: 24340


meson
=====
meson build --libdir=lib
real	0m3,556s
user	0m2,688s
sys	0m0,444s


buildtype=debug
~~~~~~~~~~~~~~~

ninja -C build
real	1m48,465s
user	5m58,864s
sys	0m35,956s

installed size unstripped: 58040
installed size stripped: 35368

buildtype=debugoptimized
~~~~~~~~~~~~~~~~~~~~~~~~

ninja -C build
real	2m32,881s
user	8m40,904s
sys	0m38,644s

installed size unstripped: 87296
installed size stripped: 31152

The split-usr support in the meson build is broken atm, so I used a non-split config for both.
The speedup is significant, even though the comparison isn't entirely fair:

The meson build is currently missing:

  • All the test binaries
  • The .html files are not built
  • importd is not built by default
  • uefi is not built by default

An interesting observation is that the meson build produces bigger binaries (for the 02 build its 24M vs 31M stripped).

I diffed the file lists (attached as txt). It seems we are missing a lot of symlinks and empty directories.

diff installed files

@mbiebl
Copy link
Contributor

mbiebl commented Apr 5, 2017

Ok, the missing importd build is easy to explain: The meson build uses pkg-config to detect bzip2, but the bzip2 package in Debian doesn't ship a .pc file. As a result, bzip2 support is not detected and thus importd disabled.

@mbiebl
Copy link
Contributor

mbiebl commented Apr 5, 2017

Ok, the missing importd build is easy to explain: The meson build uses pkg-config to detect bzip2, but the bzip2 package in Debian doesn't ship a .pc file. As a result, bzip2 support is not detected and thus importd disabled.

See https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=853803

@evverx
Copy link
Member

evverx commented Apr 5, 2017

@keszybz , thanks for the explanation.

It's much easier to see what is going on and why

If you know Python :-)

Some results:

# CentOS Linux 7 (Core)

Meson encountered an error in file meson.build, line 535, column 0:
Native dependency 'libcap' not found

$ rpm -ql libcap-devel | grep -E .pc # prints nothing
# Ubuntu Zesty Zapus (development branch)

Meson encountered an error in file meson.build, line 536, column 0:
Invalid version to compare against: '2.29.'; only numeric digits separated by "." are allowed: invalid literal for int() with base 10: ''

$ find /usr/lib -name '*.pc' | xargs grep -E 2.29
/usr/lib/x86_64-linux-gnu/pkgconfig/blkid.pc:Version: 2.29.
/usr/lib/x86_64-linux-gnu/pkgconfig/mount.pc:Version: 2.29.
/usr/lib/x86_64-linux-gnu/pkgconfig/uuid.pc:Version: 2.29.
# Fedora 25 (and everywhere)

$ meson -D xz=no build
Meson encountered an error in file meson.build, line 765, column 2:
Function does not take positional arguments.

I tried to fix test/test-functions. Sadly s/make DESTDIR=... install/DESTDIR=... ninja-build install/ doesn't work.

Has moving to meson been discussed somewhere? I can't find.

@evverx
Copy link
Member

evverx commented Apr 5, 2017

systemctl doesn't print version.

$ ./systemctl --version
systemd
+PAM -AUDIT -SELINUX -IMA -APPARMOR -SMACK +SYSVINIT +UTMP +LIBCRYPTSETUP -GCRYPT +GNUTLS +ACL +XZ +LZ4 +SECCOMP +BLKID +ELFUTILS +KMOD +IDN default-hierarchy=hybrid

$ grep -r PACKAGE_V
Binary file meson-private/build.dat matches
config.h:#define PACKAGE_VERSION "233"

@keszybz
Copy link
Member Author

keszybz commented Apr 5, 2017

Meson encountered an error in file meson.build, line 408, column 7:
Configuration set requires 2 arguments.

That was a typo in meson.build (prog not progs). Fixed.

We should include sbin in the search path

Hm, yeah. I don't see a nice way to do this. You can do PATH=$PATH:/sbin:/usr/sbin meson as a work-around for now.

../src/shared/cgroup-show.h:25:28: fatal error: systemd/sd-bus.h: No such file or directory

That was a bug in the way the headers were included. Fixed in a separate patch.

Found Pkg-config: NO
That check is unnecessary.

Indeed. That was a left-over from before when I called pkg-config by hand, and @ignatenkobrain pointed out that this is not necessary. Removed.

File custom-entities.ent does not exist.

Yeah, there was no rule for that. It's been added now.

If you know Python :-)

The meson DSL is not Python, it's its own special thing. I'd argue that it is simpler than autoconf or m4 or make, and has better error handling. But even if you aren't convinced, it wins by the virtue of doing all three jobs ;)

Has moving to meson been discussed somewhere? I can't find.

Not much. It's one of those cases where it's hard to discuss without a POC. This is the POC. I'll send a message to the mailing list if nobody beats me to it.

Invalid version to compare against: '2.29.'; only numeric digits separated by "." are allowed: invalid literal for int() with base 10: ''

Looks like a bug in either meson or the libraries. Maybe even both. pkg-config accepts versions with a dot at the end, kind-of ("2.29. != 2.29"). But specifying a version like that shouldn't be done.

All the test binaries
uefi is not built by default

Yeah, I'll work on that.

An interesting observation is that the meson build produces bigger binaries

This probably is a result of linking being done in a slightly different way. I probably a result of the way that libraries are built: libtool uses -W,--whole-archive, -W,--no-whole-archive, and I used -fvisibility=default. Let's leave both this and detailed timing comparisons until we have all the pieces building properly.

systemctl doesn't print version

I messed up PACKAGE_STRING. Fixed.

So the missing part are the rules for tests and sd-boot.

@keszybz
Copy link
Member Author

keszybz commented Apr 25, 2017

Yet another update:

  • @mbiebl's patch
  • turn on -f{function,data}-sections for non-debug builds
  • fix the detection of efi headers and ldsdir on non-amd64 architectures (arm, arm64, i386)
  • fix detection of linker args (ppc does not support gold linker, and this wasn't detected properly)
  • reindent all stuff to 8 spaces
  • fix some tests
  • prettify output
  • -Dtpm
  • add test_hwdb.py to tests
  • git-snapshot target to build tarballs

This builds properly in Fedora koji on 6 arches: https://koji.fedoraproject.org/koji/taskinfo?taskID=19191039.

We tried to use --enable-foo/--disable-foo for boolean settings, and --with-foo= for settings that take parameters. I kinda liked that scheme I must say...

Me too, I think --enable-foo is nice and readable. -Dfoo=true not so much, in particular because the "D" flows together with the option name. But I don't think enable-foo makes much sense with meson. With autotools, we defined a single AC_ARG_ENABLE, and then got --enable-foo, --disable-foo switches. With meson that'd be -Denable-foo=true, -Denable-foo=false, but in that case "enable-" is superfluous. So I think we're better of keeping things short.

Similarly, the distinction between "enable" and "with" was often unclear. We were rather inconsistent. And different options can move from one category to another when dependency on some library changes between optional and required. @mbiebl requested the change from -Dfoo=yes/no/auto to -Dfoo=true/false/auto, so that it's not necessary to check which "flavour" the option has to set it. I think we should do the same for enable/disable/with/without and have a uniform -Dfoo=true/false interface.

@evverx
Copy link
Member

evverx commented Apr 25, 2017

@keszybz , thanks!

Anyone else wants to do a final review? And press the green button?

I am going to press the green button. @mbiebl, does the updated version look good for you?

@martinpitt
Copy link
Contributor

I did another local autopkgtest run with meson against the current code here, all good. 👍 Thanks @keszybz !

Copy link
Contributor

@mbiebl mbiebl left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should be part of a separate PR (cgtop: check cgroups after parsing options)

Copy link
Contributor

@mbiebl mbiebl left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should be part of a separate PR (nspawn: check cgroups after parsing options)

meson.build Outdated
@@ -380,7 +380,7 @@ endforeach
sed = find_program('sed')
grep = find_program('grep')
awk = find_program('awk')
m4 = find_program('m4')
m4 = find_program('/usr/bin/m4')
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Now that 0.40.0 has been released, I would probably revert this commit and bump the minimum required version of meson to 0.40.0.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done.

keszybz added 4 commits April 25, 2017 08:49
Previous checks did nothing, because cc.has_argument only does compilation,
without any linking. Unfortunately cc.links() cannot be used, because it does
not accept any options. Providing the test file as a static source is easiest,
even if not every elegant.

mesonbuild/meson#1676
@keszybz
Copy link
Member Author

keszybz commented Apr 25, 2017

× default seems unrelated:

+ /home/systemd/jenkins-glue.sh
Traceback (most recent call last):
  File "./slave-control.py", line 193, in <module>
    main()
  File "./slave-control.py", line 131, in main
    data = json.loads(json_data)
  File "/usr/lib64/python2.7/json/__init__.py", line 338, in loads
    return _default_decoder.decode(s)
  File "/usr/lib64/python2.7/json/decoder.py", line 366, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
  File "/usr/lib64/python2.7/json/decoder.py", line 384, in raw_decode
    raise ValueError("No JSON object could be decoded")
ValueError: No JSON object could be decoded

@keszybz
Copy link
Member Author

keszybz commented Apr 25, 2017

I reverted the m4 patch and split out the two patches into a separate PR.

@keszybz
Copy link
Member Author

keszybz commented Apr 25, 2017

There's a new "meson" label. Please use it to tag stuff specifically related to meson. I expect a bunch of those once this is merged ;)

@evverx evverx merged commit d5d5e06 into systemd:master Apr 25, 2017
@keszybz
Copy link
Member Author

keszybz commented Apr 25, 2017

@evverx Thanks!

Celebratory note on https://in.waw.pl/~zbyszek/blog/systemd-meson.html.

@martinpitt
Copy link
Contributor

Seems a bit risky to merge this without waiting for at least one integration test, but there's a more than good chance that it will work :-)

Many thanks @keszybz, awesome work!

@evverx
Copy link
Member

evverx commented Apr 25, 2017

@keszybz , it is a little bit early to celebrate :-) There is a clash with #5752, which was merged 3 hours ago

../src/basic/missing.h:762:6: warning: "HAVE_DECL_IFLA_GENEVE_LABEL" is not defined [-Wundef]
 #if !HAVE_DECL_IFLA_GENEVE_LABEL
      ^~~~~~~~~~~~~~~~~~~~~~~~~~~

Sorry about that. I should have rebased on master and tested before merging.

@evverx
Copy link
Member

evverx commented Apr 25, 2017

FWIW the fix has just been merged. #5804

@keszybz keszybz deleted the meson branch April 26, 2017 01:19
@poettering
Copy link
Member

@keszybz thanks a million for working on this, this is great work!

@evverx
Copy link
Member

evverx commented May 13, 2017

FWIW there is a discussion of moving meson to Python 3.5 or Python 3.6: mesonbuild/meson#1790

I don't have a good grasp on what people actually need to support and for how long. Please write your requirements below so we can make an informed decision (as opposed to me saying "Debian Sid should be stable enough for everybody").

@mbiebl
Copy link
Contributor

mbiebl commented May 13, 2017

@evverx I guess that becomes relevant only once systemd starts requiring a newer meson version?

Related to that, with my Debian maintainer hat on: In the past we did provide backports of newer systemd versions for current Debian stable releases. Once we drop the autotools build system, it means we will have to build using meson. Our current minimum required version is 0.40, the latest version in stretch is 0.37.
@jpakkane I guess we have to coordinate then to also provide backports of newer meson versions for stretch.

@evverx
Copy link
Member

evverx commented May 13, 2017

@evverx I guess that becomes relevant only once systemd starts requiring a newer meson version?

@mbiebl , I think it depends on how people really build systemd, because >= 0.40 is not the same as == 0.40.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Development

Successfully merging this pull request may close these issues.