]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
meson: add option to skip installing to $sysconfdir
authorJörg Thalheim <joerg@thalheim.io>
Thu, 12 Nov 2020 07:01:39 +0000 (08:01 +0100)
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Thu, 12 Nov 2020 10:21:46 +0000 (11:21 +0100)
This is useful for development where overwriting files out side
the configured prefix will affect the host as well as stateless
systems such as NixOS that don't let packages install to /etc but handle
configuration on their own.

Alternative to https://github.com/systemd/systemd/pull/17501

tested with:

$ mkdir inst build && cd build
$ meson \
  -Dcreate-log-dirs=false \
  -Dsysvrcnd-path=$(realpath ../inst)/etc/rc.d \
  -Dsysvinit-path=$(realpath ../inst)/etc/init.d \
  -Drootprefix=$(realpath ../inst) \
  -Dinstall-sysconfdir=false \
  --prefix=$(realpath ../inst) ..
$ ninja install

20 files changed:
hwdb.d/meson.build
meson.build
meson_options.txt
network/meson.build
src/core/meson.build
src/coredump/meson.build
src/home/meson.build
src/journal-remote/meson.build
src/journal/meson.build
src/kernel-install/meson.build
src/login/meson.build
src/network/meson.build
src/oom/meson.build
src/pstore/meson.build
src/resolve/meson.build
src/timesync/meson.build
src/udev/meson.build
sysctl.d/meson.build
tmpfiles.d/meson.build
units/meson.build

index 63a56b49cc66bcb171f0356b2a38baa3d271c9b1..6fcb364acdd7a3d19ab5c55b404c8064453ad40d 100644 (file)
@@ -42,12 +42,14 @@ if conf.get('ENABLE_HWDB') == 1
                      hwdb_files_test,
                      install_dir : udevhwdbdir)
 
-        meson.add_install_script('sh', '-c',
-                                 mkdir_p.format(join_paths(sysconfdir, 'udev/hwdb.d')))
+        if install_sysconfdir
+                meson.add_install_script('sh', '-c',
+                                         mkdir_p.format(join_paths(sysconfdir, 'udev/hwdb.d')))
 
-        meson.add_install_script('sh', '-c',
-                                 'test -n "$DESTDIR" || @0@/systemd-hwdb update'
-                                 .format(rootbindir))
+                meson.add_install_script('sh', '-c',
+                                         'test -n "$DESTDIR" || @0@/systemd-hwdb update'
+                                         .format(rootbindir))
+        endif
 
         if want_tests != 'false'
                 parse_hwdb_py = find_program('parse_hwdb.py')
index 19efa92db8f29ba5cb6a9f5793c13dfdb24acbbd..7996bc2c65917ed8487832c4e03b8d5435ca1d19 100644 (file)
@@ -126,6 +126,7 @@ if rootlibdir == ''
         rootlibdir = join_paths(rootprefixdir, libdir.split('/')[-1])
 endif
 
+install_sysconfdir = get_option('install-sysconfdir')
 # Dirs of external packages
 pkgconfigdatadir = get_option('pkgconfigdatadir') == '' ? join_paths(datadir, 'pkgconfig') : get_option('pkgconfigdatadir')
 pkgconfiglibdir = get_option('pkgconfiglibdir') == '' ? join_paths(libdir, 'pkgconfig') : get_option('pkgconfiglibdir')
@@ -2776,8 +2777,10 @@ if conf.get('ENABLE_BINFMT') == 1
 
         meson.add_install_script('sh', '-c',
                                  mkdir_p.format(binfmtdir))
-        meson.add_install_script('sh', '-c',
-                                 mkdir_p.format(join_paths(sysconfdir, 'binfmt.d')))
+        if install_sysconfdir
+                meson.add_install_script('sh', '-c',
+                                         mkdir_p.format(join_paths(sysconfdir, 'binfmt.d')))
+        endif
 endif
 
 if conf.get('ENABLE_REPART') == 1
@@ -2891,8 +2894,10 @@ executable(
         install : true,
         install_dir : rootlibexecdir)
 
-install_data('src/sleep/sleep.conf',
-             install_dir : pkgsysconfdir)
+if install_sysconfdir
+        install_data('src/sleep/sleep.conf',
+                     install_dir : pkgsysconfdir)
+endif
 
 public_programs += executable(
         'systemd-sysctl',
@@ -3243,8 +3248,10 @@ if conf.get('HAVE_KMOD') == 1
 
         meson.add_install_script('sh', '-c',
                                  mkdir_p.format(modulesloaddir))
-        meson.add_install_script('sh', '-c',
-                                 mkdir_p.format(join_paths(sysconfdir, 'modules-load.d')))
+        if install_sysconfdir
+                meson.add_install_script('sh', '-c',
+                                         mkdir_p.format(join_paths(sysconfdir, 'modules-load.d')))
+        endif
 endif
 
 public_programs += executable(
@@ -3489,8 +3496,10 @@ subdir('docs/var-log')
 install_subdir('factory/etc',
                install_dir : factorydir)
 
-install_data('xorg/50-systemd-user.sh',
-             install_dir : xinitrcdir)
+if install_sysconfdir
+        install_data('xorg/50-systemd-user.sh',
+                     install_dir : xinitrcdir)
+endif
 install_data('modprobe.d/systemd.conf',
              install_dir : modprobedir)
 install_data('LICENSE.GPL2',
index ff45d6035090339b5862a1a368ee098056a44c46..2435ccebd48c87a57274a8e45107ee6dd43d207c 100644 (file)
@@ -180,6 +180,8 @@ option('pamconfdir', type : 'string',
        description : 'directory for PAM configuration ["no" disables]')
 option('docdir', type : 'string',
        description : 'documentation directory')
+option('install-sysconfdir', type : 'boolean', value : true,
+       description : 'install configuration files to $sysconfdir')
 
 option('fallback-hostname', type : 'string', value : 'localhost',
        description : 'the hostname used if none configured')
index 08f29ca7dff12d05a904e232bbf9927f487cfe32..b0e60f72176b38716565ae5e784a4da0517aba2c 100644 (file)
@@ -10,8 +10,10 @@ if conf.get('ENABLE_NETWORKD') == 1
                      '80-wifi-station.network.example',
                      install_dir : networkdir)
 
-        meson.add_install_script('sh', '-c',
-                                 mkdir_p.format(join_paths(sysconfdir, 'systemd/network')))
+        if install_sysconfdir
+                meson.add_install_script('sh', '-c',
+                                         mkdir_p.format(join_paths(sysconfdir, 'systemd/network')))
+        endif
 endif
 
 install_data('99-default.link',
index 552590393d0301e00b522f6db53b44d7819085e6..77767eb603397b97402ae350482311a6693548c2 100644 (file)
@@ -192,12 +192,14 @@ in_files = [['macros.systemd',   rpmmacrosdir],
 foreach item : in_files
         file = item[0]
         dir = item[1]
+        if install_sysconfdir or dir != pkgsysconfdir
+                configure_file(
+                        input : file + '.in',
+                        output : file,
+                        configuration : substs,
+                        install_dir : dir == 'no' ? '' : dir)
+        endif
 
-        configure_file(
-                input : file + '.in',
-                output : file,
-                configuration : substs,
-                install_dir : dir == 'no' ? '' : dir)
 endforeach
 
 install_data('org.freedesktop.systemd1.conf',
@@ -217,6 +219,8 @@ meson.add_install_script('sh', '-c', mkdir_p.format(systemsleepdir))
 meson.add_install_script('sh', '-c', mkdir_p.format(systemgeneratordir))
 meson.add_install_script('sh', '-c', mkdir_p.format(usergeneratordir))
 
-meson.add_install_script('sh', '-c', mkdir_p.format(join_paths(pkgsysconfdir, 'system')))
-meson.add_install_script('sh', '-c', mkdir_p.format(join_paths(pkgsysconfdir, 'user')))
-meson.add_install_script('sh', '-c', mkdir_p.format(join_paths(sysconfdir, 'xdg/systemd')))
+if install_sysconfdir
+        meson.add_install_script('sh', '-c', mkdir_p.format(join_paths(pkgsysconfdir, 'system')))
+        meson.add_install_script('sh', '-c', mkdir_p.format(join_paths(pkgsysconfdir, 'user')))
+        meson.add_install_script('sh', '-c', mkdir_p.format(join_paths(sysconfdir, 'xdg/systemd')))
+endif
index 663c6c7a07bf341e124ed68975dc9fca4cb353d8..ebd99bd379dfa08171cf1d4cacb986b7eeb413ca 100644 (file)
@@ -13,7 +13,7 @@ endif
 
 coredumpctl_sources = files('coredumpctl.c')
 
-if conf.get('ENABLE_COREDUMP') == 1
+if conf.get('ENABLE_COREDUMP') == 1 and install_sysconfdir
         install_data('coredump.conf',
                      install_dir : pkgsysconfdir)
 endif
index 7847449c4346eae2847c30c6eee2b7390785b179..e3cc1a9fb5b550f45b15de0eff86d1b7fa4b8602 100644 (file)
@@ -107,8 +107,10 @@ if conf.get('ENABLE_HOMED') == 1
         install_data('org.freedesktop.home1.policy',
                      install_dir : polkitpolicydir)
 
-        install_data('homed.conf',
-                     install_dir : pkgsysconfdir)
+        if install_sysconfdir
+                install_data('homed.conf',
+                             install_dir : sysconfdir)
+        endif
 endif
 
 tests += [
index 66cbcc69df8f44fd97c890bb0c8171d8c57e1a77..4572f4bd1c504cee76737954124559c3bd4e4dae 100644 (file)
@@ -48,8 +48,10 @@ if conf.get('ENABLE_REMOTE') ==1 and conf.get('HAVE_LIBCURL') == 1
                 input : 'journal-upload.conf.in',
                 output : 'journal-upload.conf',
                 configuration : substs)
-        install_data(journal_upload_conf,
-                     install_dir : pkgsysconfdir)
+        if install_sysconfdir
+                install_data(journal_upload_conf,
+                             install_dir : pkgsysconfdir)
+        endif
 endif
 
 if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_MICROHTTPD') == 1
@@ -57,8 +59,10 @@ if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_MICROHTTPD') == 1
                 input : 'journal-remote.conf.in',
                 output : 'journal-remote.conf',
                 configuration : substs)
-        install_data(journal_remote_conf,
-                     install_dir : pkgsysconfdir)
+        if install_sysconfdir
+                install_data(journal_remote_conf,
+                             install_dir : pkgsysconfdir)
+        endif
 
         install_data('browse.html',
                      install_dir : join_paths(pkgdatadir, 'gatewayd'))
index 520e33c0b82ab557603fe6450877aa70c7a166ca..7aea28d129c37172a401b2bf10ed999562a110ec 100644 (file)
@@ -107,8 +107,10 @@ journalctl_sources = files('''
         pcre2-dlopen.h
 '''.split())
 
-install_data('journald.conf',
-             install_dir : pkgsysconfdir)
+if install_sysconfdir
+        install_data('journald.conf',
+                     install_dir : pkgsysconfdir)
+endif
 
 if get_option('create-log-dirs')
         meson.add_install_script(
index 851e8275902d438a03ea046c9ee570ff7fb67c44..4117188f147463913050a1a465e815b9316d076a 100644 (file)
@@ -3,16 +3,19 @@
 want_kernel_install = get_option('kernel-install')
 
 if want_kernel_install
-       install_data('kernel-install',
-               install_mode : 'rwxr-xr-x',
-               install_dir : bindir)
+        install_data('kernel-install',
+                     install_mode : 'rwxr-xr-x',
+                     install_dir : bindir)
 
-       install_data('00-entry-directory.install',
-               '50-depmod.install',
-               '90-loaderentry.install',
-               install_mode : 'rwxr-xr-x',
-               install_dir : kernelinstalldir)
+        install_data('00-entry-directory.install',
+                     '50-depmod.install',
+                     '90-loaderentry.install',
+                     install_mode : 'rwxr-xr-x',
+                     install_dir : kernelinstalldir)
+
+        if install_sysconfdir
+                meson.add_install_script('sh', '-c',
+                                         mkdir_p.format(join_paths(sysconfdir, 'kernel/install.d')))
+        endif
 
-       meson.add_install_script('sh', '-c',
-                               mkdir_p.format(join_paths(sysconfdir, 'kernel/install.d')))
 endif
index fd3202cd989fa9ff7f7821c04427facd192c90e9..e09610960bfd228aac03ede7ca7c0ca6ae31d727 100644 (file)
@@ -74,8 +74,10 @@ if conf.get('ENABLE_LOGIND') == 1
                 input : 'logind.conf.in',
                 output : 'logind.conf',
                 configuration : substs)
-        install_data(logind_conf,
-                     install_dir : pkgsysconfdir)
+        if install_sysconfdir
+                install_data(logind_conf,
+                             install_dir : pkgsysconfdir)
+        endif
 
         install_data('org.freedesktop.login1.conf',
                      install_dir : dbuspolicydir)
index cd1a8971998dfe802b4b7d91234b9a119c1231a6..f5ca183088d5c61084617e86f630f7d98df0eab9 100644 (file)
@@ -236,8 +236,10 @@ if conf.get('ENABLE_NETWORKD') == 1
                              install_dir : polkitpkladir)
         endif
 
-        install_data('networkd.conf',
-                     install_dir : pkgsysconfdir)
+        if install_sysconfdir
+                install_data('networkd.conf',
+                             install_dir : pkgsysconfdir)
+        endif
 
         fuzzers += [
     [['src/network/fuzz-netdev-parser.c',
index a250d2a62a441cea38e32439bd093790c3ca20d8..e966ad1dd8937f6b28170b01f74840094c50946d 100644 (file)
@@ -29,6 +29,8 @@ if conf.get('ENABLE_OOMD') == 1
         install_data('org.freedesktop.oom1.service',
                      install_dir : dbussystemservicedir)
 
-        install_data('oomd.conf',
-                     install_dir : pkgsysconfdir)
+        if install_sysconfdir
+                install_data('oomd.conf',
+                             install_dir : sysconfdir)
+        endif
 endif
index 3b3a37c7779ca2b2795d0ca40133912ef007516d..6c0ab0563b5345dc1bbe813f2c8a41c8e3ca78c0 100644 (file)
@@ -4,7 +4,7 @@ systemd_pstore_sources = files('''
         pstore.c
 '''.split())
 
-if conf.get('ENABLE_PSTORE') == 1
+if conf.get('ENABLE_PSTORE') == 1 and install_sysconfdir
         install_data('pstore.conf',
                      install_dir : pkgsysconfdir)
 endif
index eb6fabea9589a2b6af4f187eb7082a3c425154ef..8e7bad06592fcefdd92b4640c282ed1d05271f38 100644 (file)
@@ -169,8 +169,10 @@ if conf.get('ENABLE_RESOLVE') == 1
                 input : 'resolved.conf.in',
                 output : 'resolved.conf',
                 configuration : substs)
-        install_data(resolved_conf,
-                     install_dir : pkgsysconfdir)
+        if install_sysconfdir
+                install_data(resolved_conf,
+                             install_dir : pkgsysconfdir)
+        endif
 
         install_data('resolv.conf',
                      install_dir : rootlibexecdir)
index 22b6347babd98f9d0c7f49694d538e869cb88360..571e3fc7efc745d1fa0fee3a2ba4c015acb164e5 100644 (file)
@@ -26,8 +26,10 @@ if conf.get('ENABLE_TIMESYNCD') == 1
                 input : 'timesyncd.conf.in',
                 output : 'timesyncd.conf',
                 configuration : substs)
-        install_data(timesyncd_conf,
-                     install_dir : pkgsysconfdir)
+        if install_sysconfdir
+                install_data(timesyncd_conf,
+                             install_dir : pkgsysconfdir)
+        endif
         install_data('org.freedesktop.timesync1.conf',
                      install_dir : dbuspolicydir)
         install_data('org.freedesktop.timesync1.service',
index e6dd4c7cac968e69a6f587249d81a45ed6fce2c1..5eb0f994a58b132e3f968a53942237691e8715ea 100644 (file)
@@ -185,8 +185,10 @@ foreach prog : [['ata_id/ata_id.c'],
                    install_dir : udevlibexecdir)
 endforeach
 
-install_data('udev.conf',
-             install_dir : join_paths(sysconfdir, 'udev'))
+if install_sysconfdir
+        install_data('udev.conf',
+                     install_dir : join_paths(sysconfdir, 'udev'))
+endif
 
 configure_file(
         input : 'udev.pc.in',
@@ -194,8 +196,10 @@ configure_file(
         configuration : substs,
         install_dir : pkgconfigdatadir == 'no' ? '' : pkgconfigdatadir)
 
-meson.add_install_script('sh', '-c',
-                         mkdir_p.format(join_paths(sysconfdir, 'udev/rules.d')))
+if install_sysconfdir
+        meson.add_install_script('sh', '-c',
+                                 mkdir_p.format(join_paths(sysconfdir, 'udev/rules.d')))
+endif
 
 fuzzers += [
         [['src/udev/net/fuzz-link-parser.c',
index e9b20ea5407b3365876609e41465225c046cab7f..e8d8fc8c53b2d77a166d42dddd5b31da7a866127 100644 (file)
@@ -26,5 +26,7 @@ foreach file : in_files
                      install_dir : sysctldir)
 endforeach
 
-meson.add_install_script('sh', '-c',
-                         mkdir_p.format(join_paths(sysconfdir, 'sysctl.d')))
+if install_sysconfdir
+        meson.add_install_script('sh', '-c',
+                                 mkdir_p.format(join_paths(sysconfdir, 'sysctl.d')))
+endif
index a41dd3e454c7966a5676c6fa47ea4439c0b8a808..7322460dbaeea529885fd73edd186049e11b8df3 100644 (file)
@@ -55,7 +55,7 @@ foreach file : m4_files
         endif
 endforeach
 
-if enable_tmpfiles
+if enable_tmpfiles and install_sysconfdir
         meson.add_install_script(
                 'sh', '-c',
                 mkdir_p.format(join_paths(sysconfdir, 'tmpfiles.d')))
index e249539dc8f5f6589ad2a79f72a9275b43c8d0cd..ba60eb7fc12140dd8047291986ed84f0578ef881 100644 (file)
@@ -326,9 +326,11 @@ install_data('user-.slice.d/10-defaults.conf',
 
 ############################################################
 
-meson.add_install_script(meson_make_symlink,
-                         join_paths(pkgsysconfdir, 'user'),
-                         join_paths(sysconfdir, 'xdg/systemd/user'))
+if install_sysconfdir
+        meson.add_install_script(meson_make_symlink,
+                                 join_paths(pkgsysconfdir, 'user'),
+                                 join_paths(sysconfdir, 'xdg/systemd/user'))
+endif
 meson.add_install_script(meson_make_symlink,
                          join_paths(dbussystemservicedir, 'org.freedesktop.systemd1.service'),
                          join_paths(dbussessionservicedir, 'org.freedesktop.systemd1.service'))