]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
meson: use install_emptydir() and drop meson-make-symlink.sh
authorYu Watanabe <watanabe.yu+github@gmail.com>
Tue, 8 Aug 2023 01:38:47 +0000 (10:38 +0900)
committerLuca Boccassi <luca.boccassi@gmail.com>
Tue, 8 Aug 2023 21:11:34 +0000 (22:11 +0100)
The script is mostly equivalent to 'mkdir -p' and 'ln -sfr'.
Let's replace it with install_emptydir() builtin function and
inline meson call.

25 files changed:
hwdb.d/meson.build
man/meson.build
meson.build
network/meson.build
src/binfmt/meson.build
src/core/meson.build
src/creds/meson.build
src/dissect/meson.build
src/environment-d-generator/meson.build
src/fstab-generator/meson.build
src/journal-remote/meson.build
src/journal/meson.build
src/kernel-install/meson.build
src/modules-load/meson.build
src/mount/meson.build
src/resolve/meson.build
src/sysext/meson.build
src/systemctl/meson.build
src/udev/meson.build
sysctl.d/meson.build
test/meson.build
tmpfiles.d/meson.build
tools/meson-make-symlink.sh [deleted file]
units/meson-add-wants.sh [deleted file]
units/meson.build

index 12953e2b94bd892cb07d9cba95fc18471b379af8..64a7e7d5065226f184d37b527b0305fa53a07e75 100644 (file)
@@ -51,8 +51,7 @@ if conf.get('ENABLE_HWDB') == 1
                      install_dir : udevhwdbdir)
 
         if install_sysconfdir
-                meson.add_install_script('sh', '-c',
-                                         mkdir_p.format(sysconfdir / 'udev/hwdb.d'))
+                install_emptydir(sysconfdir / 'udev/hwdb.d')
 
                 meson.add_install_script('sh', '-c',
                                          'test -n "$DESTDIR" || @0@/systemd-hwdb update'.format(bindir))
index 4dc5fabd6dee735c42f3073d4b2819b4badc656a..f980fd223063174e8319fe12134958557a983e73 100644 (file)
@@ -84,9 +84,7 @@ foreach tuple : manpages
                                         output : htmlalias,
                                         command : [ln, '-fs', html, '@OUTPUT@'])
                                 if want_html
-                                        dst = docdir / 'html' / htmlalias
-                                        cmd = 'ln -fs @0@ $DESTDIR@1@'.format(html, dst)
-                                        meson.add_install_script('sh', '-c', cmd)
+                                        meson.add_install_script(sh, '-c', ln_s.format(html, docdir / 'html' / htmlalias))
                                         p2 += link
                                 endif
                                 html_pages += link
@@ -157,9 +155,7 @@ foreach tuple : xsltproc.found() ? [['systemd.directives', '7', systemd_directiv
                         output : htmlalias,
                         command : [ln, '-fs', html, '@OUTPUT@'])
                 if want_html
-                        dst = docdir / 'html' / htmlalias
-                        cmd = 'ln -fs @0@ $DESTDIR@1@'.format(html, dst)
-                        meson.add_install_script('sh', '-c', cmd)
+                        meson.add_install_script(sh, '-c', ln_s.format(html, docdir / 'html' / htmlalias))
                         p2 += link
                 endif
                 html_pages += link
index 0e1eecfd2093a621a34d7977ce4e6178b3b174e4..f37aa0aca5f335d0d71743d09a8e9986999c3018 100644 (file)
@@ -111,6 +111,7 @@ endif
 prefixdir_noslash = '/' + prefixdir.strip('/')
 bindir = prefixdir / get_option('bindir')
 sbindir = prefixdir / (split_bin ? 'sbin' : 'bin')
+sbin_to_bin = split_bin ? '../bin/' : ''
 libdir = prefixdir / get_option('libdir')
 sysconfdir = prefixdir / get_option('sysconfdir')
 includedir = prefixdir / get_option('includedir')
@@ -642,10 +643,8 @@ env = find_program('env')
 rsync = find_program('rsync', required : false)
 diff = find_program('diff')
 find = find_program('find')
-meson_make_symlink = project_source_root + '/tools/meson-make-symlink.sh'
 
-mkdir_p = 'mkdir -p $DESTDIR/@0@'
-mkdir_p_mode = 'mkdir -p $DESTDIR/@0@ -m @1@'
+ln_s = ln.full_path() + ' -frsT -- "${DESTDIR:-}@0@" "${DESTDIR:-}@1@"'
 
 # If -Dxxx-path option is found, use that. Otherwise, check in $PATH,
 # /usr/sbin, /sbin, and fall back to the default from middle column.
@@ -2781,8 +2780,7 @@ install_data('LICENSE.GPL2',
 install_subdir('LICENSES',
                install_dir : docdir)
 
-meson.add_install_script('sh', '-c', mkdir_p.format(systemdstatedir))
-meson.add_install_script('sh', '-c', 'touch $DESTDIR@0@'.format(prefixdir))
+install_emptydir(systemdstatedir)
 
 ############################################################
 
index 5e10c86372412c0dbac3abeac6ca365b1296b1c5..b6745298f68fdd0710e72dff86f0747953bf4584 100644 (file)
@@ -14,8 +14,7 @@ if conf.get('ENABLE_NETWORKD') == 1
                      install_dir : networkdir)
 
         if install_sysconfdir
-                meson.add_install_script('sh', '-c',
-                                         mkdir_p.format(sysconfdir / 'systemd/network'))
+                install_emptydir(sysconfdir / 'systemd/network')
         endif
 endif
 
index e33f81aaa0d386997a68f5e68474ab6ec83ae042..44963409bc84b48426610464767c89d570b82b2c 100644 (file)
@@ -10,10 +10,8 @@ executables += [
 ]
 
 if conf.get('ENABLE_BINFMT') == 1
-        meson.add_install_script('sh', '-c',
-                         mkdir_p.format(binfmtdir))
+        install_emptydir(binfmtdir)
         if install_sysconfdir
-                meson.add_install_script('sh', '-c',
-                                         mkdir_p.format(sysconfdir / 'binfmt.d'))
+                install_emptydir(sysconfdir / 'binfmt.d')
         endif
 endif
index 395342d754aa22073eb8ca3480a25c1b359bccb0..9f1d84e3f953382ea8e833b3cc3381622c6d8cba 100644 (file)
@@ -201,20 +201,21 @@ install_data('org.freedesktop.systemd1.conf',
 install_data('org.freedesktop.systemd1.service',
              install_dir : dbussystemservicedir)
 
-meson.add_install_script('sh', '-c', mkdir_p.format(systemshutdowndir))
-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))
+install_emptydir(systemshutdowndir)
+install_emptydir(systemsleepdir)
+install_emptydir(systemgeneratordir)
+install_emptydir(usergeneratordir)
 
 if install_sysconfdir
-        meson.add_install_script('sh', '-c', mkdir_p.format(pkgsysconfdir / 'system'))
-        meson.add_install_script('sh', '-c', mkdir_p.format(pkgsysconfdir / 'user'))
-        meson.add_install_script('sh', '-c', mkdir_p.format(sysconfdir / 'xdg/systemd'))
+        install_emptydir(pkgsysconfdir / 'system')
+        install_emptydir(pkgsysconfdir / 'user')
+        install_emptydir(sysconfdir / 'xdg/systemd')
+        meson.add_install_script(sh, '-c', ln_s.format(pkgsysconfdir / 'user',
+                                                       sysconfdir / 'xdg/systemd/user'))
 endif
 
-meson.add_install_script(meson_make_symlink,
-                         libexecdir / 'systemd',
-                         sbindir / 'init')
+install_emptydir(sbindir)
+meson.add_install_script(sh, '-c', ln_s.format(libexecdir / 'systemd', sbindir / 'init'))
 
 ############################################################
 
index 905c349635bbd83d0689be03d4f1db9ef1a16089..85572568f6c0b85c91676b569962fc9dac0e613c 100644 (file)
@@ -15,9 +15,11 @@ executables += [
 # Protecting files from the distro in /usr doesn't make sense since they can be trivially accessed otherwise,
 # so don't restrict the access mode in /usr. That doesn't apply to /etc, so we do restrict the access mode
 # there.
-meson.add_install_script('sh', '-c', mkdir_p.format(credstoredir))
+install_emptydir(credstoredir)
 if install_sysconfdir
         # Keep in sync with tmpfiles.d/credstore.conf
-        meson.add_install_script('sh', '-c', mkdir_p_mode.format(sysconfdir / 'credstore', '0700'))
-        meson.add_install_script('sh', '-c', mkdir_p_mode.format(sysconfdir / 'credstore.encrypted', '0700'))
+        install_emptydir(sysconfdir / 'credstore',
+                         install_mode : 'rwx------')
+        install_emptydir(sysconfdir / 'credstore.encrypted',
+                         install_mode : 'rwx------')
 endif
index 742b1377bce334e7b997aefcd00ffed4f86f2fde..e422dbdd27b22d591602b5f1153426447e3ccf1f 100644 (file)
@@ -10,7 +10,8 @@ executables += [
 ]
 
 if conf.get('HAVE_BLKID') == 1
-        meson.add_install_script(meson_make_symlink,
-                                 bindir / 'systemd-dissect',
-                                 sbindir / 'mount.ddi')
+        install_emptydir(sbindir)
+        meson.add_install_script(sh, '-c',
+                                 ln_s.format(bindir / 'systemd-dissect',
+                                             sbindir / 'mount.ddi'))
 endif
index 6ff82b2a325c44b85174aca763046a46a4388a5f..346be05bd0204f53d34747bc122e5848586ab566 100644 (file)
@@ -10,7 +10,8 @@ executables += [
 ]
 
 if conf.get('ENABLE_ENVIRONMENT_D') == 1
-        meson.add_install_script(meson_make_symlink,
-                                 sysconfdir / 'environment',
-                                 environmentdir / '99-environment.conf')
+        install_emptydir(environmentdir)
+        meson.add_install_script(sh, '-c',
+                                 ln_s.format(sysconfdir / 'environment',
+                                             environmentdir / '99-environment.conf'))
 endif
index 11de6ffd8091da4bf32c36d52cb92150d853d548..7b90580e9063b7326bb8f003289c5857703fb661 100644 (file)
@@ -7,6 +7,6 @@ executables += [
         },
 ]
 
-meson.add_install_script(meson_make_symlink,
-                         systemgeneratordir / 'systemd-fstab-generator',
-                         libexecdir / 'systemd-sysroot-fstab-check')
+meson.add_install_script(sh, '-c',
+                         ln_s.format(systemgeneratordir / 'systemd-fstab-generator',
+                                     libexecdir / 'systemd-sysroot-fstab-check'))
index e5a37466db84978ec6e38a80afab3441e09f48be..28c47043dc2bfe366052dd1a00ae2be305a97f2d 100644 (file)
@@ -113,10 +113,7 @@ if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_MICROHTTPD') == 1
                      install_dir : pkgdatadir / 'gatewayd')
 
         if get_option('create-log-dirs')
-                meson.add_install_script('sh', '-c',
-                                         mkdir_p.format('/var/log/journal/remote'))
-                meson.add_install_script('sh', '-c',
-                                         '''chown 0:0 $DESTDIR/var/log/journal/remote &&
-                                            chmod 755 $DESTDIR/var/log/journal/remote || :''')
+                install_emptydir('/var/log/journal/remote',
+                                 install_mode : [ 'rwxr-xr-x', 'root', 'root' ])
         endif
 endif
index 3412e273e51a153f95acb8533e1515e92206f874..e89f9d1bc5960aba89a030fb2f69b39c85033586 100644 (file)
@@ -184,13 +184,8 @@ if install_sysconfdir_samples
 endif
 
 if get_option('create-log-dirs')
-        meson.add_install_script(
-                'sh', '-c',
-                mkdir_p.format('/var/log/journal'))
-        meson.add_install_script(
-                'sh', '-c',
-                '''chown 0:0 $DESTDIR/var/log/journal &&
-                   chmod 755 $DESTDIR/var/log/journal || :''')
+        install_emptydir('/var/log/journal',
+                         install_mode : [ 'rwxr-xr-x', 'root', 'root' ])
         if get_option('adm-group')
                 meson.add_install_script(
                         'sh', '-c',
index 0fa0c37ae28ac80901d7b4882623b38f4eb5584c..7f61fcc5160fa1537a30f5fb3ec47f04a49bd5f1 100644 (file)
@@ -44,8 +44,7 @@ if want_kernel_install
                      install_dir : kerneldir)
 
         if install_sysconfdir
-                meson.add_install_script('sh', '-c',
-                                         mkdir_p.format(sysconfdir / 'kernel/install.d'))
+                install_emptydir(sysconfdir / 'kernel/install.d')
         endif
 endif
 
index af5b4da384cf437addd1bd316c3f574ac7d5fa74..2f1decc8b775a43cfe55a2b6724911e6955e6b45 100644 (file)
@@ -10,10 +10,8 @@ executables += [
 ]
 
 if conf.get('HAVE_KMOD') == 1
-        meson.add_install_script('sh', '-c',
-                                 mkdir_p.format(modulesloaddir))
+        install_emptydir(modulesloaddir)
         if install_sysconfdir
-                meson.add_install_script('sh', '-c',
-                                         mkdir_p.format(sysconfdir / 'modules-load.d'))
+                install_emptydir(sysconfdir / 'modules-load.d')
         endif
 endif
index 7b1af9ea570776be231c66b3e486596ce5d023c6..176fb53dca18f05ec4d67912746fbbb4e8b7863b 100644 (file)
@@ -9,5 +9,5 @@ executables += [
         },
 ]
 
-meson.add_install_script(meson_make_symlink,
-                         'systemd-mount', bindir / 'systemd-umount')
+meson.add_install_script(sh, '-c', ln_s.format(bindir / 'systemd-mount',
+                                               bindir / 'systemd-umount'))
index 5b4e583501eccb7f2caf8853bfed16f1a406db3f..0f62d09087b9dfbc3f258e644e6bcdf807a2411b 100644 (file)
@@ -220,13 +220,14 @@ if conf.get('ENABLE_RESOLVE') == 1
         install_data('resolv.conf',
                      install_dir : libexecdir)
 
-        meson.add_install_script(meson_make_symlink,
-                                 bindir / 'resolvectl',
-                                 sbindir / 'resolvconf')
-
-        meson.add_install_script(meson_make_symlink,
-                                 bindir / 'resolvectl',
-                                 bindir / 'systemd-resolve')
+        install_emptydir(sbindir)
+        meson.add_install_script(sh, '-c',
+                                 ln_s.format(bindir / 'resolvectl',
+                                             sbindir / 'resolvconf'))
+
+        meson.add_install_script(sh, '-c',
+                                 ln_s.format(bindir / 'resolvectl',
+                                             bindir / 'systemd-resolve'))
 endif
 
 custom_target(
index e58888ade341135b66e53b403b1efa7e243fb6d0..2983970d802af32b4ec4da62e431edf7c7fd71c4 100644 (file)
@@ -10,7 +10,6 @@ executables += [
 ]
 
 if conf.get('ENABLE_SYSEXT') == 1
-        meson.add_install_script(meson_make_symlink,
-                                 bindir / 'systemd-sysext',
-                                 bindir / 'systemd-confext')
+        meson.add_install_script(sh, '-c', ln_s.format(bindir / 'systemd-sysext',
+                                                       bindir / 'systemd-confext'))
 endif
index bc08b8672f4ec1a59a773d1a423a4e49bedcc6bb..255c639b5f64e177f82f5066d349f35ac25351ec 100644 (file)
@@ -75,7 +75,8 @@ executables += [
 
 foreach alias : (['halt', 'poweroff', 'reboot', 'shutdown'] +
                  (conf.get('HAVE_SYSV_COMPAT') == 1 ? ['runlevel', 'telinit'] : []))
-        meson.add_install_script(meson_make_symlink,
-                                 bindir / 'systemctl',
-                                 sbindir / alias)
+        install_emptydir(sbindir)
+        meson.add_install_script(sh, '-c',
+                                 ln_s.format(bindir / 'systemctl',
+                                             sbindir / alias))
 endforeach
index 200cc055462ed7329eb241630a063b877742a594..40716bb27d157f5c1aa464d4c7ae70943fab82a6 100644 (file)
@@ -247,9 +247,8 @@ executables += [
         },
 ]
 
-meson.add_install_script(meson_make_symlink,
-                         bindir / 'udevadm',
-                         libexecdir / 'systemd-udevd')
+meson.add_install_script(sh, '-c', ln_s.format(bindir / 'udevadm',
+                                               libexecdir / 'systemd-udevd'))
 
 if install_sysconfdir_samples
         install_data('udev.conf',
@@ -268,6 +267,5 @@ udev_pc = custom_target(
         install_dir : pkgconfigdatadir)
 
 if install_sysconfdir
-        meson.add_install_script('sh', '-c',
-                                 mkdir_p.format(sysconfdir / 'udev/rules.d'))
+        install_emptydir(sysconfdir / 'udev/rules.d')
 endif
index ecec903d1bf6f7140f5a6496821deb1a750022cc..909baa2be31ad32a24803e923380fad7d2d95436 100644 (file)
@@ -21,6 +21,5 @@ custom_target(
         install_dir : sysctldir)
 
 if install_sysconfdir
-        meson.add_install_script('sh', '-c',
-                                 mkdir_p.format(sysconfdir / 'sysctl.d'))
+        install_emptydir(sysconfdir / 'sysctl.d')
 endif
index 97ec7ee5c5ff31e21bc9692f62b999c8ab7da5c8..836a506ed87483016eba693dcb230f3e65ee2fde 100644 (file)
@@ -44,9 +44,8 @@ if install_tests
 
         # The unit tests implemented as shell scripts expect to find testdata/
         # in the directory where they are stored.
-        meson.add_install_script(meson_make_symlink,
-                                 testdata_dir,
-                                 unittestsdir / 'testdata')
+        meson.add_install_script(sh, '-c', ln_s.format(testdata_dir,
+                                                       unittestsdir / 'testdata'))
 endif
 
 ############################################################
index 4d94e3743ff48f64d753553f7d272c53a7a8e912..4c11ad6e2038c369a7f6cfe5a48742d9bc7d54dc 100644 (file)
@@ -54,6 +54,5 @@ foreach pair : in_files
 endforeach
 
 if enable_tmpfiles and install_sysconfdir
-        meson.add_install_script(
-                'sh', '-c', mkdir_p.format(sysconfdir / 'tmpfiles.d'))
+        install_emptydir(sysconfdir / 'tmpfiles.d')
 endif
diff --git a/tools/meson-make-symlink.sh b/tools/meson-make-symlink.sh
deleted file mode 100755 (executable)
index 653a73b..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-#!/bin/sh
-# SPDX-License-Identifier: LGPL-2.1-or-later
-set -eu
-
-SOURCE="${1:?}"
-TARGET="${2:?}"
-
-if [ "${MESON_INSTALL_QUIET:-0}" = 1 ] ; then
-    VERBOSE=""
-else
-    VERBOSE="v"
-fi
-
-# this is needed mostly because $DESTDIR is provided as a variable,
-# and we need to create the target directory...
-
-mkdir -${VERBOSE}p "$(dirname "${DESTDIR:-}$TARGET")"
-if [ "$(dirname "$SOURCE")" = . ] || [ "$(dirname "$SOURCE")" = .. ]; then
-    ln -${VERBOSE}fs -T -- "$SOURCE" "${DESTDIR:-}$TARGET"
-else
-    ln -${VERBOSE}fs -T --relative -- "${DESTDIR:-}$SOURCE" "${DESTDIR:-}$TARGET"
-fi
diff --git a/units/meson-add-wants.sh b/units/meson-add-wants.sh
deleted file mode 100755 (executable)
index 6d8da57..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-#!/bin/sh
-# SPDX-License-Identifier: LGPL-2.1-or-later
-# shellcheck disable=SC2154,SC2174
-set -eu
-
-i=1
-while [ $i -lt $# ] ; do
-    eval unitdir="\${$i}"
-    eval target="\${$((i + 1))}"
-    eval unit="\${$((i + 2))}"
-
-    if [ "${MESON_INSTALL_QUIET:-0}" = 1 ] ; then
-        VERBOSE=""
-    else
-        VERBOSE="v"
-    fi
-
-    case "$target" in
-        */?*) # a path, but not just a slash at the end
-            dir="${DESTDIR:-}${target}"
-            ;;
-        *)
-            dir="${DESTDIR:-}${unitdir}/${target}"
-            ;;
-    esac
-
-    unitpath="${DESTDIR:-}${unitdir}/${unit}"
-
-    case "$target" in
-        */)
-            mkdir -${VERBOSE}p -m 0755 "$dir"
-            ;;
-        *)
-            mkdir -${VERBOSE}p -m 0755 "$(dirname "$dir")"
-            ;;
-    esac
-
-    ln -${VERBOSE}fs --relative "$unitpath" "$dir"
-
-    i=$((i + 3))
-done
index 5161ec502996309ab7098b1603978bd808eacb3d..96ad1dc85016cc189291c86fdd7b79c5a6a4b8fc 100644 (file)
@@ -634,8 +634,6 @@ units = [
         },
 ]
 
-add_wants = []
-
 foreach unit : units
         source = unit.get('file')
 
@@ -672,13 +670,20 @@ foreach unit : units
 
         if install
                 foreach target : unit.get('symlinks', [])
-                        add_wants += [systemunitdir, target, name]
+                        if target.endswith('/')
+                                install_emptydir(systemunitdir / target)
+                                meson.add_install_script(sh, '-c',
+                                                         ln_s.format(systemunitdir / name,
+                                                                     systemunitdir / target / name))
+                        else
+                                meson.add_install_script(sh, '-c',
+                                                         ln_s.format(systemunitdir / name,
+                                                                     systemunitdir / target))
+                        endif
                 endforeach
         endif
 endforeach
 
-meson.add_install_script('meson-add-wants.sh', add_wants)
-
 install_data('user-.slice.d/10-defaults.conf',
              install_dir : systemunitdir + '/user-.slice.d')
 
@@ -689,19 +694,14 @@ install_data('user@0.service.d/10-login-barrier.conf',
 
 ############################################################
 
-if install_sysconfdir
-        meson.add_install_script(meson_make_symlink,
-                                 pkgsysconfdir / 'user',
-                                 sysconfdir / 'xdg/systemd/user')
-endif
-meson.add_install_script(meson_make_symlink,
-                         dbussystemservicedir / 'org.freedesktop.systemd1.service',
-                         dbussessionservicedir / 'org.freedesktop.systemd1.service')
+install_emptydir(dbussessionservicedir)
+meson.add_install_script(sh, '-c',
+                         ln_s.format(dbussystemservicedir / 'org.freedesktop.systemd1.service',
+                                     dbussessionservicedir / 'org.freedesktop.systemd1.service'))
+
 if conf.get('HAVE_SYSV_COMPAT') == 1
         foreach i : [1, 2, 3, 4, 5]
-                meson.add_install_script(
-                        'sh', '-c',
-                        mkdir_p.format(systemunitdir / 'runlevel@0@.target.wants'.format(i)))
+                install_emptydir(systemunitdir / 'runlevel@0@.target.wants'.format(i))
         endforeach
 endif