[Buildroot] [PATCH v2 1/1] systemd: bump to 236, convert to meson

Yann E. MORIN yann.morin.1998 at free.fr
Tue Jan 9 20:26:50 UTC 2018


Adam, All,

On 2018-01-01 08:09 -0500, Adam Duskett spake thusly:
> systemd is no longer an autotools package, as such, it has now been converted
> over to meson.
> 
> Even though systemd234 has meson support, it is broken with gcc7, as such
> the revision bump and conversion to meson must be in a single patch.
> 
> Changes include:
>   - Change systemd from an autotools package to a generic package
>   - Changing all the options from --enable/disable to -Doption=true/false
>   - Remove --without-python (no longer an option)
>   - Remove all of the ac_cv_path_ variables, and move them into CONF_OPTS
>     with the prefix -Doption-path=/path.
>   - Add sha256sum's for the license files.
>   - Remove 0002-build-check-for-ln-relative.patch and add
>     0002-install-dont-use-ln-relative.patch in its place, the old patch relied on autotools and is no longer relevant.
>   - Add 0004-add-false-option-for-tests.patch. With the conversion to meson,
>     systemd no longer has the option to disable unit tests from being built.
>     This patch re-adds the functionality. This prevents 381 files from being
>     built, and prevents gcrypt from becoming a dependency.
> 
> Signed-off-by: Adam Duskett <Adamduskett at outlook.com>

Reviewed-by: "Yann E. MORIN" <yann.morin.1998 at free.fr>
Tested-by: "Yann E. MORIN" <yann.morin.1998 at free.fr>
Tested-by: gitlab-ci https://gitlab.com/ymorin/buildroot-ci/pipelines/15857672/builds

Note however that, before gitlab-ci can test this, we must have a docker
image that runs the builds as a non-root user, with a UTF-8 locale, as
per: https://patchwork.ozlabs.org/patch/856392/

Regards,
Yann E. MORIN.

> ---
> Changes v1 -> v2:
>   - Added 0002-install-dont-use-ln-relative.patch to allow older systems to
>     build. (Yann)
>   - Added 0004-add-false-option-for-tests.patch to turn off building tests.
>   - Added default paths for telinit, kill, kmod, kexec, sulogin, mount, 
>     and umount. (Yann)
>   - Added --libdir='/usr/lib' and -Drootlibdir='/usr/lib' to SYSTEMD_CONF_OPTS
>     to prevent systemd from placing the libraries into the incorrect target
>     directories. (Yann)
>   - Removed -Drootprefix='/' and -Dsplit-user=true as the default settings where
>     correct.
>   - Removed "SYSTEMD_CFLAGS = $(TARGET_CFLAGS) -fno-lto" as it no longer
>     applies.
>   - Added -j$(PARALLEL_JOBS) to SYSTEMD_NINJA_OPTS (Yann)
> 
> 
>  .../systemd/0002-build-check-for-ln-relative.patch |  98 --------
>  .../0002-install-don-t-use-ln-relative.patch       |  76 +++++++
>  .../systemd/0004-add-false-option-for-tests.patch  | 150 ++++++++++++
>  package/systemd/systemd.hash                       |   5 +-
>  package/systemd/systemd.mk                         | 252 +++++++++++----------
>  5 files changed, 357 insertions(+), 224 deletions(-)
>  delete mode 100644 package/systemd/0002-build-check-for-ln-relative.patch
>  create mode 100644 package/systemd/0002-install-don-t-use-ln-relative.patch
>  create mode 100644 package/systemd/0004-add-false-option-for-tests.patch
> 
> diff --git a/package/systemd/0002-build-check-for-ln-relative.patch b/package/systemd/0002-build-check-for-ln-relative.patch
> deleted file mode 100644
> index 817ce5010a..0000000000
> --- a/package/systemd/0002-build-check-for-ln-relative.patch
> +++ /dev/null
> @@ -1,98 +0,0 @@
> -From b60e16cc2ef8c9b4c05c4348a980d3312f2e1cb4 Mon Sep 17 00:00:00 2001
> -From: "Yann E. MORIN" <yann.morin.1998 at free.fr>
> -Date: Fri, 28 Jul 2017 07:04:07 -0400
> -Subject: [PATCH] build: check for ln --relative
> -
> -ln --relative is recent enough that not all distributions support it.
> -This is especially the case for enterprise-grade distributions than can
> -have a life-span of more than a decade.
> -
> -Detect if ln supports --relative and use it if so.
> -
> -If not supported, use a bit of sed magic to construct the ../ sequence,
> -that leads back to / when appended to the destination directory.
> -
> -We introduce this as a macro that expands to a single command. To avoid
> -complexity in the macro, we expect paths to be passed whitout the
> -leading DESTDIR.
> -
> -Signed-off-by: "Yann E. MORIN" <yann.morin.1998 at free.fr>
> -[Adam: Refresh for 234]
> -Signed-off-by: Adam Duskett  <aduskett at gmail.com>
> ----
> -Upstream-Status: Denied [No desire to support building on old distributions]
> -    https://github.com/systemd/systemd/pull/5682
> -
> - Makefile.am  | 25 ++++++++++++++++++++++---
> - configure.ac |  5 ++++-
> - 2 files changed, 26 insertions(+), 4 deletions(-)
> -
> -diff --git a/Makefile.am b/Makefile.am
> -index c16e622..bed097f 100644
> ---- a/Makefile.am
> -+++ b/Makefile.am
> -@@ -305,6 +305,24 @@ install-busnames-target-wants-hook:
> - 	what="$(BUSNAMES_TARGET_WANTS)" && wants=busnames.target && dir=$(systemunitdir) && $(add-wants)
> - 	what="$(USER_BUSNAMES_TARGET_WANTS)" && wants=busnames.target && dir=$(userunitdir) && $(add-wants)
> - 
> -+# Macro to emulate ln --relative when needed
> -+# $(1): options for ln, except --relative
> -+# $(2): source file, absolute path without leading DESTDIR
> -+# $(3): destination file, absolute path without leading DESTDIR
> -+if HAVE_LN_RELATIVE
> -+define ln-s-relative
> -+	$(LN_S) --relative $(1) \
> -+		$(DESTDIR)$(strip $(2)) \
> -+		$(DESTDIR)$(strip $(3))
> -+endef
> -+else
> -+define ln-s-relative
> -+	$(LN_S) $(1) \
> -+		`dirname $(strip $(3)) |sed -r -e 's:/+[^/]+:../:g; s:/$$::'`$(strip $(2)) \
> -+		$(DESTDIR)$(strip $(3))
> -+endef
> -+endif
> -+
> - define add-wants
> - 	[ -z "$$what" ] || ( \
> - 	  dir=$(DESTDIR)$$dir/$$wants.wants && \
> -@@ -318,8 +336,9 @@ install-directories-hook:
> - 	$(MKDIR_P) $(addprefix $(DESTDIR),$(INSTALL_DIRS))
> - 
> - install-environment-conf-hook: install-directories-hook
> --	$(AM_V_LN)$(LN_S) --relative -f $(DESTDIR)$(sysconfdir)/environment \
> --		$(DESTDIR)$(environmentdir)/99-environment.conf
> -+	$(AM_V_LN)$(call ln-s-relative,-f,\
> -+			$(sysconfdir)/environment,\
> -+			$(environmentdir)/99-environment.conf)
> - 
> - install-aliases-hook:
> - 	set -- $(SYSTEM_UNIT_ALIASES) && \
> -@@ -342,7 +361,7 @@ define install-relative-aliases
> - 	while [ -n "$$1" ]; do \
> - 		$(MKDIR_P) `dirname $(DESTDIR)$$dir/$$2` && \
> - 		rm -f $(DESTDIR)$$dir/$$2 && \
> --		$(LN_S) --relative $(DESTDIR)$$1 $(DESTDIR)$$dir/$$2 && \
> -+		$(call ln-s-relative,,$$1,$$dir/$$2) && \
> - 		shift 2 || exit $$?; \
> - 	done
> - endef
> -diff --git a/configure.ac b/configure.ac
> -index c7537aa..9354441 100644
> ---- a/configure.ac
> -+++ b/configure.ac
> -@@ -109,7 +109,10 @@ AC_PATH_PROG([SULOGIN], [sulogin], [/usr/sbin/sulogin], [$PATH:/usr/sbin:/sbin])
> - AC_PATH_PROG([MOUNT_PATH], [mount], [/usr/bin/mount], [$PATH:/usr/sbin:/sbin])
> - AC_PATH_PROG([UMOUNT_PATH], [umount], [/usr/bin/umount], [$PATH:/usr/sbin:/sbin])
> - 
> --AS_IF([! ln --relative --help > /dev/null 2>&1], [AC_MSG_ERROR([*** ln doesn't support --relative ***])])
> -+AC_MSG_CHECKING([if ln supports --relative])
> -+AS_IF([! ${LN_S} --relative --help > /dev/null 2>&1], [ln_relative=no], [ln_relative=yes])
> -+AC_MSG_RESULT([$ln_relative])
> -+AM_CONDITIONAL([HAVE_LN_RELATIVE], [test "x$ln_relative" = "xyes"])
> - 
> - M4_DEFINES=
> - 
> --- 
> -2.13.3
> -
> diff --git a/package/systemd/0002-install-don-t-use-ln-relative.patch b/package/systemd/0002-install-don-t-use-ln-relative.patch
> new file mode 100644
> index 0000000000..e76ce4378a
> --- /dev/null
> +++ b/package/systemd/0002-install-don-t-use-ln-relative.patch
> @@ -0,0 +1,76 @@
> +From ecf3b9baaebda1d9182c22dc504e32ed275d4abb Mon Sep 17 00:00:00 2001
> +From: Adam Duskett <Adamduskett at outlook.com>
> +Date: Sun, 31 Dec 2017 12:46:04 -0500
> +Subject: [PATCH] install: don't use ln --relative
> +
> +Oldish enterprise-class distributions have too old versions of
> +coreutils, with ln not supporting --relative.
> +
> +So we fake it.
> +
> +ln --relative would create minimalist relative paths, but they are not
> +trivial to generate. Instead, we always create paths relative to the
> +root, i.e.:
> +
> +    ln -s --relative /usr/bin/foo /usr/sbin/foo
> +
> +would create:  /usr/sbin/foo -> ../bin/foo
> +while we do :  /usr/sbin/foo -> ../../usr/bin/foo
> +
> +Signed-off-by: "Yann E. MORIN" <yann.morin.1998 at free.fr>
> +[aduskett at gmail.com: Added meson.build section and dirname wrapper in add-wants]
> +Signed-off-by: Adam Duskett <Adamduskett at outlook.com>
> +---
> + meson.build                 | 2 +-
> + tools/meson-make-symlink.sh | 3 ++-
> + units/meson-add-wants.sh    | 5 +++--
> + 3 files changed, 6 insertions(+), 4 deletions(-)
> +
> +diff --git a/meson.build b/meson.build
> +index ddc061c..614201a 100644
> +--- a/meson.build
> ++++ b/meson.build
> +@@ -531,7 +531,7 @@ foreach prog : progs
> + endforeach
> + 
> + if run_command('ln', '--relative', '--help').returncode() != 0
> +-        error('ln does not support --relative')
> ++        message('ln does not support --relative')
> + endif
> + 
> + ############################################################
> +diff --git a/tools/meson-make-symlink.sh b/tools/meson-make-symlink.sh
> +index 47a5e70..e9002ad 100755
> +--- a/tools/meson-make-symlink.sh
> ++++ b/tools/meson-make-symlink.sh
> +@@ -7,5 +7,6 @@ mkdir -vp "$(dirname "${DESTDIR:-}$2")"
> + if [ "$(dirname $1)" = . ]; then
> +         ln -vfs -T "$1" "${DESTDIR:-}$2"
> + else
> +-        ln -vfs -T --relative "${DESTDIR:-}$1" "${DESTDIR:-}$2"
> ++        dds="$( dirname "$2" |sed -r -e 's:/+[^/]+:../:g; s:/$::' )"
> ++        ln -vfs -T "${dds}$1" "${DESTDIR:-}$2"
> + fi
> +diff --git a/units/meson-add-wants.sh b/units/meson-add-wants.sh
> +index dfd287e..8c08283 100755
> +--- a/units/meson-add-wants.sh
> ++++ b/units/meson-add-wants.sh
> +@@ -13,7 +13,7 @@ case "$target" in
> +                 ;;
> + esac
> + 
> +-unitpath="${DESTDIR:-}${unitdir}/${unit}"
> ++unitpath="${unitdir}/${unit}"
> + 
> + case "$target" in
> +         */)
> +@@ -24,4 +24,5 @@ case "$target" in
> +                 ;;
> + esac
> + 
> +-ln -vfs --relative "$unitpath" "$dir"
> ++dds="$( dirname `printf "%s" "${dir#${DESTDIR:-}}" |sed -r -e 's:/+[^/]+:../:g; s:/$::'` )"
> ++ln -vfs "$dds$unitpath" "$dir"
> +-- 
> +2.14.3
> +
> diff --git a/package/systemd/0004-add-false-option-for-tests.patch b/package/systemd/0004-add-false-option-for-tests.patch
> new file mode 100644
> index 0000000000..1796ee9be6
> --- /dev/null
> +++ b/package/systemd/0004-add-false-option-for-tests.patch
> @@ -0,0 +1,150 @@
> +From ebeb780df4ca5a8e5a43da1b38492964d8817455 Mon Sep 17 00:00:00 2001
> +From: Adam Duskett <Adamduskett at outlook.com>
> +Date: Mon, 1 Jan 2018 08:01:01 -0500
> +Subject: [PATCH] add false option for tests
> +
> +Currently there is no way to not build tests. This introduces two problems:
> +
> +1) It adds a extra 381 files to compile.
> +2) One of these tests explicitly requires libgcrypt to be built even if systemd
> +   is not using it.
> +
> +This patch adds the option "false" to tests, adds a check around the
> +foreach loop that compiles the tests to see if tests is set to false,
> +and adds a check around finding g++ as it's only used for tests and
> +is not needed.
> +
> +Signed-off-by: Adam Duskett <Adamduskett at outlook.com>
> +---
> + meson.build       | 91 +++++++++++++++++++++++++++++--------------------------
> + meson_options.txt |  2 +-
> + 2 files changed, 49 insertions(+), 44 deletions(-)
> +
> +diff --git a/meson.build b/meson.build
> +index ddc061c..4dcdd41 100644
> +--- a/meson.build
> ++++ b/meson.build
> +@@ -260,10 +260,12 @@ cc = meson.get_compiler('c')
> + pkgconfig = import('pkgconfig')
> + check_compilation_sh = find_program('tools/meson-check-compilation.sh')
> + 
> +-cxx = find_program('c++', required : false)
> +-if cxx.found()
> +-        #  Used only for tests
> +-        add_languages('cpp')
> ++if get_option('tests') != 'false'
> ++	cxx = find_program('c++', required : false)
> ++	if cxx.found()
> ++            #  Used only for tests
> ++            add_languages('cpp')
> ++    endif
> + endif
> + 
> + foreach arg : ['-Wextra',
> +@@ -2388,48 +2390,51 @@ executable('systemd-sulogin-shell',
> +            install_dir : rootlibexecdir)
> + 
> + ############################################################
> ++if want_tests == 'false'
> ++        message('Not compiling because tests is set to false')
> ++else
> ++        foreach tuple : tests
> ++                sources = tuple[0]
> ++                link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
> ++                dependencies = tuple[2]
> ++                condition = tuple.length() >= 4 ? tuple[3] : ''
> ++                type = tuple.length() >= 5 ? tuple[4] : ''
> ++                defs = tuple.length() >= 6 ? tuple[5] : []
> ++                incs = tuple.length() >= 7 ? tuple[6] : includes
> ++                timeout = 30
> ++
> ++                name = sources[0].split('/')[-1].split('.')[0]
> ++                if type.startswith('timeout=')
> ++                        timeout = type.split('=')[1].to_int()
> ++                        type = ''
> ++                endif
> + 
> +-foreach tuple : tests
> +-        sources = tuple[0]
> +-        link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
> +-        dependencies = tuple[2]
> +-        condition = tuple.length() >= 4 ? tuple[3] : ''
> +-        type = tuple.length() >= 5 ? tuple[4] : ''
> +-        defs = tuple.length() >= 6 ? tuple[5] : []
> +-        incs = tuple.length() >= 7 ? tuple[6] : includes
> +-        timeout = 30
> +-
> +-        name = sources[0].split('/')[-1].split('.')[0]
> +-        if type.startswith('timeout=')
> +-                timeout = type.split('=')[1].to_int()
> +-                type = ''
> +-        endif
> +-
> +-        if condition == '' or conf.get(condition) == 1
> +-                exe = executable(
> +-                        name,
> +-                        sources,
> +-                        include_directories : incs,
> +-                        link_with : link_with,
> +-                        dependencies : dependencies,
> +-                        c_args : defs,
> +-                        install_rpath : rootlibexecdir,
> +-                        install : install_tests,
> +-                        install_dir : join_paths(testsdir, type))
> +-
> +-                if type == 'manual'
> +-                        message('@0@ is a manual test'.format(name))
> +-                elif type == 'unsafe' and want_tests != 'unsafe'
> +-                        message('@0@ is an unsafe test'.format(name))
> ++                if condition == '' or conf.get(condition) == 1
> ++                        exe = executable(
> ++                                name,
> ++                                sources,
> ++                                include_directories : incs,
> ++                                link_with : link_with,
> ++                                dependencies : dependencies,
> ++                                c_args : defs,
> ++                                install_rpath : rootlibexecdir,
> ++                                install : install_tests,
> ++                                install_dir : join_paths(testsdir, type))
> ++
> ++                        if type == 'manual'
> ++                                message('@0@ is a manual test'.format(name))
> ++                        elif type == 'unsafe' and want_tests != 'unsafe'
> ++                                message('@0@ is an unsafe test'.format(name))
> ++                        else
> ++                                test(name, exe,
> ++                                     env : test_env,
> ++                                     timeout : timeout)
> ++                        endif
> +                 else
> +-                        test(name, exe,
> +-                             env : test_env,
> +-                             timeout : timeout)
> ++                        message('Not compiling @0@ because @1@ is not true'.format(name, condition))
> +                 endif
> +-        else
> +-                message('Not compiling @0@ because @1@ is not true'.format(name, condition))
> +-        endif
> +-endforeach
> ++        endforeach
> ++endif
> + 
> + test_libsystemd_sym = executable(
> +         'test-libsystemd-sym',
> +diff --git a/meson_options.txt b/meson_options.txt
> +index f0c0506..0caba0c 100644
> +--- a/meson_options.txt
> ++++ b/meson_options.txt
> +@@ -284,7 +284,7 @@ option('bashcompletiondir', type : 'string',
> + option('zshcompletiondir', type : 'string',
> +        description : 'directory for zsh completion scripts ["no" disables]')
> + 
> +-option('tests', type : 'combo', choices : ['true', 'unsafe'],
> ++option('tests', type : 'combo', choices : ['true', 'unsafe', 'false'],
> +        description : 'enable extra tests with =unsafe')
> + option('slow-tests', type : 'boolean', value : 'false',
> +        description : 'run the slow tests by default')
> +-- 
> +2.14.3
> +
> diff --git a/package/systemd/systemd.hash b/package/systemd/systemd.hash
> index 9a1f926e4d..d8f6365c9c 100644
> --- a/package/systemd/systemd.hash
> +++ b/package/systemd/systemd.hash
> @@ -1,2 +1,5 @@
>  # sha256 locally computed
> -sha256 da3e69d10aa1c983d33833372ad4929037b411ac421fb085c8cee79ae1d80b6a  systemd-234.tar.gz
> +sha256	0cadccfa7109232ec2a469d41ca595d5595b83b648b534ea669c15dbca904c43	systemd-236.tar.gz
> +sha256	ab15fd526bd8dd18a9e77ebc139656bf4d33e97fc7238cd11bf60e2b9b8666c6	LICENSE.GPL2
> +sha256	dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551	LICENSE.LGPL2.1
> +sha256	f6a739f5ee7f10df6467021066038297c0150ff680db9a4b9f60da53b11aa560	README
> diff --git a/package/systemd/systemd.mk b/package/systemd/systemd.mk
> index 9f286fd54b..ef31a0f6c6 100644
> --- a/package/systemd/systemd.mk
> +++ b/package/systemd/systemd.mk
> @@ -4,20 +4,20 @@
>  #
>  ################################################################################
>  
> -SYSTEMD_VERSION = 234
> +SYSTEMD_VERSION = 236
>  SYSTEMD_SITE = $(call github,systemd,systemd,v$(SYSTEMD_VERSION))
>  SYSTEMD_LICENSE = LGPL-2.1+, GPL-2.0+ (udev), Public Domain (few source files, see README)
>  SYSTEMD_LICENSE_FILES = LICENSE.GPL2 LICENSE.LGPL2.1 README
>  SYSTEMD_INSTALL_STAGING = YES
>  SYSTEMD_DEPENDENCIES = \
> +	host-gperf \
>  	host-intltool \
> -	libcap \
> -	util-linux \
> +	host-meson \
>  	kmod \
> -	host-gperf
> +	libcap \
> +	util-linux
>  
>  SYSTEMD_PROVIDES = udev
> -SYSTEMD_AUTORECONF = YES
>  
>  # Make sure that systemd will always be built after busybox so that we have
>  # a consistent init setup between two builds
> @@ -26,268 +26,249 @@ SYSTEMD_DEPENDENCIES += busybox
>  endif
>  
>  SYSTEMD_CONF_OPTS += \
> -	--with-rootprefix= \
> -	--enable-blkid \
> -	--enable-static=no \
> -	--disable-manpages \
> -	--disable-ima \
> -	--disable-libcryptsetup \
> -	--disable-efi \
> -	--disable-gnuefi \
> -	--disable-ldconfig \
> -	--disable-tests \
> -	--disable-coverage \
> -	--with-default-dnssec=no \
> -	--without-python
> -
> -SYSTEMD_CFLAGS = $(TARGET_CFLAGS) -fno-lto
> -
> -# Override paths to a few utilities needed at runtime, to
> -# avoid finding those we would install in $(HOST_DIR).
> -SYSTEMD_CONF_ENV = \
> -	CFLAGS="$(SYSTEMD_CFLAGS)" \
> -	ac_cv_path_KILL=/usr/bin/kill \
> -	ac_cv_path_KMOD=/usr/bin/kmod \
> -	ac_cv_path_KEXEC=/usr/sbin/kexec \
> -	ac_cv_path_SULOGIN=/usr/sbin/sulogin \
> -	ac_cv_path_MOUNT_PATH=/usr/bin/mount \
> -	ac_cv_path_UMOUNT_PATH=/usr/bin/umount
> -
> -define SYSTEMD_RUN_INTLTOOLIZE
> -	cd $(@D) && $(HOST_DIR)/bin/intltoolize --force --automake
> -endef
> -SYSTEMD_PRE_CONFIGURE_HOOKS += SYSTEMD_RUN_INTLTOOLIZE
> +	--prefix=/usr \
> +	--libdir='/usr/lib' \
> +	--buildtype $(if $(BR2_ENABLE_DEBUG),debug,release) \
> +	--cross-file $(HOST_DIR)/etc/meson/cross-compilation.conf \
> +	-Drootlibdir='/usr/lib' \
> +	-Dblkid=true \
> +	-Dman=false \
> +	-Dima=false \
> +	-Dlibcryptsetup=false \
> +	-Defi=false \
> +	-Dgnu-efi=false \
> +	-Dldconfig=false \
> +	-Ddefault-dnssec=no \
> +	-Dtests=false \
> +	-Dtelinit-path=$(TARGET_DIR)/sbin/telinit \
> +	-Dkill-path=/usr/bin/kill \
> +	-Dkmod-path=/usr/bin/kmod \
> +	-Dkexec-path=/usr/sbin/kexec \
> +	-Dsulogin-path=/usr/sbin/sulogin \
> +	-Dmount-path=/usr/bin/mount \
> +	-Dumount-path=/usr/bin/umount
>  
>  ifeq ($(BR2_PACKAGE_ACL),y)
> -SYSTEMD_CONF_OPTS += --enable-acl
>  SYSTEMD_DEPENDENCIES += acl
> +SYSTEMD_CONF_OPTS += -Dacl=true
>  else
> -SYSTEMD_CONF_OPTS += --disable-acl
> +SYSTEMD_CONF_OPTS += -Dacl=false
>  endif
>  
>  ifeq ($(BR2_PACKAGE_AUDIT),y)
> -SYSTEMD_CONF_OPTS += --enable-audit
>  SYSTEMD_DEPENDENCIES += audit
> +SYSTEMD_CONF_OPTS += -Daudit=true
>  else
> -SYSTEMD_CONF_OPTS += --disable-audit
> +SYSTEMD_CONF_OPTS += -Daudit=false
>  endif
>  
>  ifeq ($(BR2_PACKAGE_LIBIDN),y)
> -SYSTEMD_CONF_OPTS += --enable-libidn
>  SYSTEMD_DEPENDENCIES += libidn
> +SYSTEMD_CONF_OPTS += -Dlibidn=true
>  else
> -SYSTEMD_CONF_OPTS += --disable-libidn
> +SYSTEMD_CONF_OPTS += -Dlibidn=false
>  endif
>  
>  ifeq ($(BR2_PACKAGE_LIBSECCOMP),y)
> -SYSTEMD_CONF_OPTS += --enable-seccomp
>  SYSTEMD_DEPENDENCIES += libseccomp
> +SYSTEMD_CONF_OPTS += -Dseccomp=true
>  else
> -SYSTEMD_CONF_OPTS += --disable-seccomp
> +SYSTEMD_CONF_OPTS += -Dseccomp=false
>  endif
>  
>  ifeq ($(BR2_PACKAGE_LIBXKBCOMMON),y)
> -SYSTEMD_CONF_OPTS += --enable-xkbcommon
>  SYSTEMD_DEPENDENCIES += libxkbcommon
> +SYSTEMD_CONF_OPTS += -Dxkbcommon=true
>  else
> -SYSTEMD_CONF_OPTS += --disable-xkbcommon
> +SYSTEMD_CONF_OPTS += -Dxkbcommon=false
>  endif
>  
>  ifeq ($(BR2_PACKAGE_BZIP2),y)
>  SYSTEMD_DEPENDENCIES += bzip2
> -SYSTEMD_CONF_OPTS += --enable-bzip2
> +SYSTEMD_CONF_OPTS += -Dbzip2=true
>  else
> -SYSTEMD_CONF_OPTS += --disable-bzip2
> +SYSTEMD_CONF_OPTS += -Dbzip2=false
>  endif
>  
>  ifeq ($(BR2_PACKAGE_LZ4),y)
>  SYSTEMD_DEPENDENCIES += lz4
> -SYSTEMD_CONF_OPTS += --enable-lz4
> +SYSTEMD_CONF_OPTS += -Dlz4=true
>  else
> -SYSTEMD_CONF_OPTS += --disable-lz4
> +SYSTEMD_CONF_OPTS += -Dlz4=false
>  endif
>  
>  ifeq ($(BR2_PACKAGE_LINUX_PAM),y)
>  SYSTEMD_DEPENDENCIES += linux-pam
> -SYSTEMD_CONF_OPTS += --enable-pam
> +SYSTEMD_CONF_OPTS += -Dpam=true
>  else
> -SYSTEMD_CONF_OPTS += --disable-pam
> +SYSTEMD_CONF_OPTS += -Dpam=false
>  endif
>  
>  ifeq ($(BR2_PACKAGE_XZ),y)
>  SYSTEMD_DEPENDENCIES += xz
> -SYSTEMD_CONF_OPTS += --enable-xz
> +SYSTEMD_CONF_OPTS += -Dxz=true
>  else
> -SYSTEMD_CONF_OPTS += --disable-xz
> +SYSTEMD_CONF_OPTS += -Dxz=false
>  endif
>  
>  ifeq ($(BR2_PACKAGE_ZLIB),y)
>  SYSTEMD_DEPENDENCIES += zlib
> -SYSTEMD_CONF_OPTS += --enable-zlib
> +SYSTEMD_CONF_OPTS += -Dzlib=true
>  else
> -SYSTEMD_CONF_OPTS += --disable-zlib
> +SYSTEMD_CONF_OPTS += -Dzlib=false
>  endif
>  
>  ifeq ($(BR2_PACKAGE_LIBCURL),y)
>  SYSTEMD_DEPENDENCIES += libcurl
> -SYSTEMD_CONF_OPTS += --enable-libcurl
> +SYSTEMD_CONF_OPTS += -Dlibcurl=true
>  else
> -SYSTEMD_CONF_OPTS += --disable-libcurl
> +SYSTEMD_CONF_OPTS += -Dlibcurl=false
>  endif
>  
>  ifeq ($(BR2_PACKAGE_LIBGCRYPT),y)
>  SYSTEMD_DEPENDENCIES += libgcrypt
> -SYSTEMD_CONF_OPTS += \
> -	--enable-gcrypt \
> -	--with-libgcrypt-prefix=$(STAGING_DIR)/usr \
> -	--with-libgpg-error-prefix=$(STAGING_DIR)/usr
> +SYSTEMD_CONF_OPTS += -Dgcrypt=true
>  else
> -SYSTEMD_CONF_OPTS += --disable-gcrypt
> +SYSTEMD_CONF_OPTS += -Dgcrypt=false
>  endif
>  
>  ifeq ($(BR2_PACKAGE_SYSTEMD_JOURNAL_GATEWAY),y)
>  SYSTEMD_DEPENDENCIES += libmicrohttpd
> -SYSTEMD_CONF_OPTS += --enable-microhttpd
> +SYSTEMD_CONF_OPTS += -Dmicrohttpd=true
>  ifeq ($(BR2_PACKAGE_LIBQRENCODE),y)
> -SYSTEMD_CONF_OPTS += --enable-qrencode
> +SYSTEMD_CONF_OPTS += -Dqrencode=true
>  SYSTEMD_DEPENDENCIES += libqrencode
>  else
> -SYSTEMD_CONF_OPTS += --disable-qrencode
> +SYSTEMD_CONF_OPTS += -Dqrencode=false
>  endif
>  else
> -SYSTEMD_CONF_OPTS += --disable-microhttpd --disable-qrencode
> +SYSTEMD_CONF_OPTS += -Dmicrohttpd=false -Dqrencode=false
>  endif
>  
>  ifeq ($(BR2_PACKAGE_LIBSELINUX),y)
>  SYSTEMD_DEPENDENCIES += libselinux
> -SYSTEMD_CONF_OPTS += --enable-selinux
> +SYSTEMD_CONF_OPTS += -Dselinux=true
>  else
> -SYSTEMD_CONF_OPTS += --disable-selinux
> +SYSTEMD_CONF_OPTS += -Dselinux=false
>  endif
>  
>  ifeq ($(BR2_PACKAGE_SYSTEMD_HWDB),y)
> -SYSTEMD_CONF_OPTS += --enable-hwdb
> +SYSTEMD_CONF_OPTS += -Dhwdb=true
>  else
> -SYSTEMD_CONF_OPTS += --disable-hwdb
> +SYSTEMD_CONF_OPTS += -Dhwdb=false
>  endif
>  
>  ifeq ($(BR2_PACKAGE_SYSTEMD_BINFMT),y)
> -SYSTEMD_CONF_OPTS += --enable-binfmt
> +SYSTEMD_CONF_OPTS += -Dbinfmt=true
>  else
> -SYSTEMD_CONF_OPTS += --disable-binfmt
> +SYSTEMD_CONF_OPTS += -Dbinfmt=false
>  endif
>  
>  ifeq ($(BR2_PACKAGE_SYSTEMD_VCONSOLE),y)
> -SYSTEMD_CONF_OPTS += --enable-vconsole
> +SYSTEMD_CONF_OPTS += -Dvconsole=true
>  else
> -SYSTEMD_CONF_OPTS += --disable-vconsole
> +SYSTEMD_CONF_OPTS += -Dvconsole=false
>  endif
>  
>  ifeq ($(BR2_PACKAGE_SYSTEMD_QUOTACHECK),y)
> -SYSTEMD_CONF_OPTS += --enable-quotacheck
> -SYSTEMD_CONF_ENV += \
> -	ac_cv_path_QUOTAON=/usr/sbin/quotaon \
> -	ac_cv_path_QUOTACHECK=/usr/sbin/quotacheck
> +SYSTEMD_CONF_OPTS += -Dquotacheck=true
>  else
> -SYSTEMD_CONF_OPTS += --disable-quotacheck
> -SYSTEMD_CONF_ENV += \
> -	ac_cv_path_QUOTAON=/.missing \
> -	ac_cv_path_QUOTACHECK=/.missing
> +SYSTEMD_CONF_OPTS += -Dquotacheck=false
>  endif
>  
>  ifeq ($(BR2_PACKAGE_SYSTEMD_TMPFILES),y)
> -SYSTEMD_CONF_OPTS += --enable-tmpfiles
> +SYSTEMD_CONF_OPTS += -Dtmpfiles=true
>  else
> -SYSTEMD_CONF_OPTS += --disable-tmpfiles
> +SYSTEMD_CONF_OPTS += -Dtmpfiles=false
>  endif
>  
>  ifeq ($(BR2_PACKAGE_SYSTEMD_SYSUSERS),y)
> -SYSTEMD_CONF_OPTS += --enable-sysusers
> +SYSTEMD_CONF_OPTS += -Dsysusers=true
>  else
> -SYSTEMD_CONF_OPTS += --disable-sysusers
> +SYSTEMD_CONF_OPTS += -Dsysusers=false
>  endif
>  
>  ifeq ($(BR2_PACKAGE_SYSTEMD_FIRSTBOOT),y)
> -SYSTEMD_CONF_OPTS += --enable-firstboot
> +SYSTEMD_CONF_OPTS += -Dfirstboot=true
>  else
> -SYSTEMD_CONF_OPTS += --disable-firstboot
> +SYSTEMD_CONF_OPTS += -Dfirstboot=false
>  endif
>  
>  ifeq ($(BR2_PACKAGE_SYSTEMD_RANDOMSEED),y)
> -SYSTEMD_CONF_OPTS += --enable-randomseed
> +SYSTEMD_CONF_OPTS += -Drandomseed=true
>  else
> -SYSTEMD_CONF_OPTS += --disable-randomseed
> +SYSTEMD_CONF_OPTS += -Drandomseed=false
>  endif
>  
>  ifeq ($(BR2_PACKAGE_SYSTEMD_BACKLIGHT),y)
> -SYSTEMD_CONF_OPTS += --enable-backlight
> +SYSTEMD_CONF_OPTS += -Dbacklight=true
>  else
> -SYSTEMD_CONF_OPTS += --disable-backlight
> +SYSTEMD_CONF_OPTS += -Dbacklight=false
>  endif
>  
>  ifeq ($(BR2_PACKAGE_SYSTEMD_RFKILL),y)
> -SYSTEMD_CONF_OPTS += --enable-rfkill
> +SYSTEMD_CONF_OPTS += -Drfkill=true
>  else
> -SYSTEMD_CONF_OPTS += --disable-rfkill
> +SYSTEMD_CONF_OPTS += -Drfkill=false
>  endif
>  
>  ifeq ($(BR2_PACKAGE_SYSTEMD_LOGIND),y)
> -SYSTEMD_CONF_OPTS += --enable-logind
> +SYSTEMD_CONF_OPTS += -Dlogind=true
>  else
> -SYSTEMD_CONF_OPTS += --disable-logind
> +SYSTEMD_CONF_OPTS += -Dlogind=false
>  endif
>  
>  ifeq ($(BR2_PACKAGE_SYSTEMD_MACHINED),y)
> -SYSTEMD_CONF_OPTS += --enable-machined
> +SYSTEMD_CONF_OPTS += -Dmachined=true
>  else
> -SYSTEMD_CONF_OPTS += --disable-machined
> +SYSTEMD_CONF_OPTS += -Dmachined=false
>  endif
>  
>  ifeq ($(BR2_PACKAGE_SYSTEMD_IMPORTD),y)
> -SYSTEMD_CONF_OPTS += --enable-importd
> +SYSTEMD_CONF_OPTS += -Dimportd=true
>  else
> -SYSTEMD_CONF_OPTS += --disable-importd
> +SYSTEMD_CONF_OPTS += -Dimportd=false
>  endif
>  
>  ifeq ($(BR2_PACKAGE_SYSTEMD_HOSTNAMED),y)
> -SYSTEMD_CONF_OPTS += --enable-hostnamed
> +SYSTEMD_CONF_OPTS += -Dhostnamed=true
>  else
> -SYSTEMD_CONF_OPTS += --disable-hostnamed
> +SYSTEMD_CONF_OPTS += -Dhostnamed=false
>  endif
>  
>  ifeq ($(BR2_PACKAGE_SYSTEMD_MYHOSTNAME),y)
> -SYSTEMD_CONF_OPTS += --enable-myhostname
> +SYSTEMD_CONF_OPTS += -Dmyhostname=true
>  else
> -SYSTEMD_CONF_OPTS += --disable-myhostname
> +SYSTEMD_CONF_OPTS += -Dmyhostname=false
>  endif
>  
>  ifeq ($(BR2_PACKAGE_SYSTEMD_TIMEDATED),y)
> -SYSTEMD_CONF_OPTS += --enable-timedated
> +SYSTEMD_CONF_OPTS += -Dtimedated=true
>  else
> -SYSTEMD_CONF_OPTS += --disable-timedated
> +SYSTEMD_CONF_OPTS += -Dtimedated=false
>  endif
>  
>  ifeq ($(BR2_PACKAGE_SYSTEMD_LOCALED),y)
> -SYSTEMD_CONF_OPTS += --enable-localed
> +SYSTEMD_CONF_OPTS += -Dlocaled=true
>  else
> -SYSTEMD_CONF_OPTS += --disable-localed
> +SYSTEMD_CONF_OPTS += -Dlocaled=false
>  endif
>  
>  ifeq ($(BR2_PACKAGE_SYSTEMD_COREDUMP),y)
> -SYSTEMD_CONF_OPTS += --enable-coredump
> +SYSTEMD_CONF_OPTS += -Dcoredump=true
>  SYSTEMD_COREDUMP_USER = systemd-coredump -1 systemd-coredump -1 * /var/lib/systemd/coredump - - Core Dumper
>  else
> -SYSTEMD_CONF_OPTS += --disable-coredump
> +SYSTEMD_CONF_OPTS += -Dcoredump=false
>  endif
>  
>  ifeq ($(BR2_PACKAGE_SYSTEMD_POLKIT),y)
> -SYSTEMD_CONF_OPTS += --enable-polkit
> +SYSTEMD_CONF_OPTS += -Dpolkit=true
>  else
> -SYSTEMD_CONF_OPTS += --disable-polkit
> +SYSTEMD_CONF_OPTS += -Dpolkit=false
>  endif
>  
>  ifeq ($(BR2_PACKAGE_SYSTEMD_NETWORKD),y)
> -SYSTEMD_CONF_OPTS += --enable-networkd
> +SYSTEMD_CONF_OPTS += -Dnetworkd=true
>  SYSTEMD_NETWORKD_USER = systemd-network -1 systemd-network -1 * - - - Network Manager
>  define SYSTEMD_INSTALL_RESOLVCONF_HOOK
>  	ln -sf ../run/systemd/resolve/resolv.conf \
> @@ -302,18 +283,18 @@ define SYSTEMD_INSTALL_NETWORK_CONFS
>  endef
>  endif
>  else
> -SYSTEMD_CONF_OPTS += --disable-networkd
> +SYSTEMD_CONF_OPTS += -Dnetworkd=false
>  endif
>  
>  ifeq ($(BR2_PACKAGE_SYSTEMD_RESOLVED),y)
> -SYSTEMD_CONF_OPTS += --enable-resolved
> +SYSTEMD_CONF_OPTS += -Dresolved=true
>  SYSTEMD_RESOLVED_USER = systemd-resolve -1 systemd-resolve -1 * - - - Network Name Resolution Manager
>  else
> -SYSTEMD_CONF_OPTS += --disable-resolved
> +SYSTEMD_CONF_OPTS += -Dresolved=false
>  endif
>  
>  ifeq ($(BR2_PACKAGE_SYSTEMD_TIMESYNCD),y)
> -SYSTEMD_CONF_OPTS += --enable-timesyncd
> +SYSTEMD_CONF_OPTS += -Dtimesyncd=true
>  SYSTEMD_TIMESYNCD_USER = systemd-timesync -1 systemd-timesync -1 * - - - Network Time Synchronization
>  define SYSTEMD_INSTALL_SERVICE_TIMESYNC
>  	mkdir -p $(TARGET_DIR)/etc/systemd/system/sysinit.target.wants
> @@ -321,19 +302,19 @@ define SYSTEMD_INSTALL_SERVICE_TIMESYNC
>  		$(TARGET_DIR)/etc/systemd/system/sysinit.target.wants/systemd-timesyncd.service
>  endef
>  else
> -SYSTEMD_CONF_OPTS += --disable-timesyncd
> +SYSTEMD_CONF_OPTS += -Dtimesyncd=false
>  endif
>  
>  ifeq ($(BR2_PACKAGE_SYSTEMD_SMACK_SUPPORT),y)
> -SYSTEMD_CONF_OPTS += --enable-smack
> +SYSTEMD_CONF_OPTS += -Dsmack=true
>  else
> -SYSTEMD_CONF_OPTS += --disable-smack
> +SYSTEMD_CONF_OPTS += -Dsmack=false
>  endif
>  
>  ifeq ($(BR2_PACKAGE_SYSTEMD_HIBERNATE),y)
> -SYSTEMD_CONF_OPTS += --enable-hibernate
> +SYSTEMD_CONF_OPTS += -Dhibernate=true
>  else
> -SYSTEMD_CONF_OPTS += --disable-hibernate
> +SYSTEMD_CONF_OPTS += -Dhibernate=false
>  endif
>  
>  define SYSTEMD_INSTALL_INIT_HOOK
> @@ -341,7 +322,6 @@ define SYSTEMD_INSTALL_INIT_HOOK
>  	ln -fs ../bin/systemctl $(TARGET_DIR)/sbin/halt
>  	ln -fs ../bin/systemctl $(TARGET_DIR)/sbin/poweroff
>  	ln -fs ../bin/systemctl $(TARGET_DIR)/sbin/reboot
> -
>  	ln -fs ../../../lib/systemd/system/multi-user.target \
>  		$(TARGET_DIR)/etc/systemd/system/default.target
>  endef
> @@ -398,4 +378,26 @@ define SYSTEMD_INSTALL_INIT_SYSTEMD
>  	$(SYSTEMD_INSTALL_NETWORK_CONFS)
>  endef
>  
> -$(eval $(autotools-package))
> +SYSTEMD_NINJA_OPTS = $(if $(VERBOSE),-v) -j$(PARALLEL_JOBS)
> +
> +define SYSTEMD_CONFIGURE_CMDS
> +	rm -rf $(@D)/build
> +	mkdir -p $(@D)/build
> +	$(TARGET_MAKE_ENV) meson $(SYSTEMD_CONF_OPTS) $(@D) $(@D)/build
> +endef
> +
> +define SYSTEMD_BUILD_CMDS
> +	$(TARGET_MAKE_ENV) ninja $(SYSTEMD_NINJA_OPTS) -C $(@D)/build
> +endef
> +
> +define SYSTEMD_INSTALL_TARGET_CMDS
> +	$(TARGET_MAKE_ENV) DESTDIR=$(TARGET_DIR) ninja $(SYSTEMD_NINJA_OPTS) \
> +		-C $(@D)/build install
> +endef
> +
> +define SYSTEMD_INSTALL_STAGING_CMDS
> +	$(TARGET_MAKE_ENV) DESTDIR=$(STAGING_DIR) ninja $(SYSTEMD_NINJA_OPTS) \
> +		-C $(@D)/build install
> +endef
> +
> +$(eval $(generic-package))
> -- 
> 2.14.3
> 
> _______________________________________________
> buildroot mailing list
> buildroot at busybox.net
> http://lists.busybox.net/mailman/listinfo/buildroot

-- 
.-----------------.--------------------.------------------.--------------------.
|  Yann E. MORIN  | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software  Designer | \ / CAMPAIGN     |  ___               |
| +33 223 225 172 `------------.-------:  X  AGAINST      |  \e/  There is no  |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL    |   v   conspiracy.  |
'------------------------------^-------^------------------^--------------------'



More information about the buildroot mailing list