diff options
-rw-r--r-- | libre/systemd/PKGBUILD | 74 | ||||
-rw-r--r-- | libre/systemd/systemd-hook | 9 | ||||
-rw-r--r-- | libre/systemd/systemd-hwdb.hook | 2 | ||||
-rw-r--r-- | libre/systemd/systemd-udev-reload.hook | 2 | ||||
-rw-r--r-- | libre/systemd/udev-hook | 18 |
5 files changed, 80 insertions, 25 deletions
diff --git a/libre/systemd/PKGBUILD b/libre/systemd/PKGBUILD index 0c426d5c7..09d21d105 100644 --- a/libre/systemd/PKGBUILD +++ b/libre/systemd/PKGBUILD @@ -6,6 +6,7 @@ pkgbase=systemd pkgname=('systemd' 'libsystemd' 'systemd-resolvconf' 'systemd-sysvcompat') +pkgname+=('systemd-common' 'systemd-udev') # We split Arch's libsystemd into the systemd-$X, for the following $X: _libsystemd=('libsystemd' 'libudev' 'nss-systemd' 'nss-myhostname' 'nss-mymachines' 'nss-resolve') pkgname+=("${_libsystemd[@]/#/systemd-}") @@ -39,6 +40,7 @@ source=(# fragment is latest tag for source verification, final merge in prepare 'splash-parabola.bmp' 'systemd-user.pam' 'systemd-hook' + 'udev-hook' 'systemd-binfmt.hook' 'systemd-catalog.hook' 'systemd-daemon-reload.hook' @@ -65,15 +67,16 @@ sha512sums=('SKIP' '6c6f579644ea2ebb6b46ee274ab15110718b0de40def8c30173ba8480b045d403f2aedd15b50ad9b96453f4ad56920d1350ff76563755bb9a80b10fa7f64f1d9' 'a50bc85061a9a16d776235099867bc1a17c17dddb74c1ecf5614c849735a9779c5e34e5ddca8ca6af4b59a40f57c08ecf219b98cab09476ddb0f110e6a35e45c' 'b90c99d768dc2a4f020ba854edf45ccf1b86a09d2f66e475de21fe589ff7e32c33ef4aa0876d7f1864491488fd7edb2682fc0d68e83a6d4890a0778dc2d6fe19' - '6b82386fc20619eefa911cd9cdac8efbd0c7137bba4955e8ae75a0ea378d19dbfccc1f7bde6684f03e5f2badefa4abf20623153d88a170d14499167319586db7' + '12abea62121f4e0867ffbcf6ba96bb1540dd7d86775556fc180ae6c844abfd13310b6782ff6d0e665c8d875446c17b40495d6c2fbc7ddcb42f9a13e1b57a8c40' + 'b7ee4f212c910df62c3472103a64a3cdf0d31292bc2f8fa839e5c86f34faa3ef1a3693601f5716779c4552a0d2b1d57538d45610f4c2e1c80e155ffbf0af187d' '5a6b6beef8c31c79018884d948de840f4d3dfb07d9a87081ebf65e2b8fe595bc8c96dbd7742920ccf948c233213ed0026abc913650cefd77ad90c6f8c89bddb8' '4cff2ebd962e26e2f516d8b4ac45c839dbfa54dd0588b423c224a328b9f7c62306ca7b2f6cb55240c564caf9972d5bcd2e0efaf2de49d64729aeb3bc1560c9eb' '872de70325e9798f0b5a77e991c85bd2ab6de24d9b9ba4e35002d2dd5df15f8b30739a0042a624776177ffc14a838cde7ee98622016ed41df3efda9a659730b2' - '471342b8d0e05533908cda5d6a906050a51e3181beda1239e91d717029ee40a9eaed714996a445417d87c4e31b7f8522a665de176077fe0536d538369594996d' + '96bb157de6921086a2bfc45a650414fbffa787bccff2cbd838cbe05c6fc635cbabd533360608eb7ca2f80ab7df795065a27abf4a1b1ea2b406612a3fcf420bdc' 'da783e3bfc6469b92dee4064a13e2b427520d3d96b57c95a4e07aaca3e844d95210a8b16122b022080f5452d65096f274dd1c1467725bbdb2e40ef304b78774a' '08a590d08043a21f30f04252164b94df972b1ff1022a0469d6aef713e14484a3a037cce290a2a582851e6fac3e64add69d6cc8fc130bbeeaea08626ebf3e1763' '577e33a1c50b4b41157a67f64162b035dd0c4a541e19cee55a100048bdb50cb2c82852741b1372989a0fe4c4782ba477522747fcc81d72aed99b3db512a86447' - 'e4a9d7607fe93daf1d45270971c8d8455c4bfc2c0bea8bcad05aeb89847edee23cd1a41073a72042622acf417018fe254f5bfc137604fe2c71292680bf67a1c2' + 'c4463fdd25e14a836ac3b874109861a55a0169c4206b6356b53974dd4621f645652087ebf4c738b18734a718fe7fd9ec6b700ce8dd9736525274eb16b10385e6' '209b01b044877cc986757fa4009a92ea98f480306c2530075d153203c3cd2b3afccab6aacc1453dee8857991e04270572f1700310705d7a0f4d5bed27fab8c67' '107d2e36544aa8ef1c6e86339fbc811acb6e1d15eb0edca9f463bdd1b0e91fa8d85cf8c9e70eeaf4196e2f942e30310b672859191f3093c4806546ae30140fb9' 'c811278fceba58b1e2919b32f51920c54a3e205c4e5f119ebd5c0445aef80560b9233a98547e845d223172fe355656acc7e8eb68528de12a446de4aa1874ef1a' @@ -166,6 +169,9 @@ build() { # Put things in the main systemd package by default DESTDIR="$srcdir/dest/systemd" ninja -C build install + install -dm755 "$srcdir/dest/common"/usr/lib/systemd + mv -T "$srcdir/dest"/{systemd,common}/usr/lib/systemd/libsystemd-shared-${pkgver%%.*}.so + install -dm755 "$srcdir/dest/libsystemd"/usr/{lib/pkgconfig,share/man/man3,include} mv -T "$srcdir/dest"/{systemd,libsystemd}/usr/include/systemd mv -T "$srcdir/dest"/{systemd,libsystemd}/usr/lib/pkgconfig/libsystemd.pc @@ -178,6 +184,14 @@ build() { mv "$srcdir/dest"/systemd/usr/lib/libudev.so* -t "$srcdir/dest"/libudev/usr/lib/ mv "$srcdir/dest"/systemd/usr/share/man/man3/*udev* -t "$srcdir/dest"/libudev/usr/share/man/man3/ + install -dm755 "$srcdir/dest/udev"/{etc,usr/lib} + mv -T "$srcdir/dest"/{systemd,udev}/etc/udev/ + mv -T "$srcdir/dest"/{systemd,udev}/usr/lib/udev/ + while read -d '' -r file; do + install -dm755 "$srcdir/dest/udev/${file%/*}" + mv -T "$srcdir/dest/systemd/$file" "$srcdir/dest/udev/$file" + done < <(find "$srcdir/dest/systemd" \( -name '*udev*' -o -name '*hwdb*' \) -printf '%P\0') + local nssmodule for nssmodule in systemd myhostname mymachines resolve; do install -dm755 "$srcdir/dest/nss-$nssmodule"/usr/{lib,share/man/man8} @@ -201,14 +215,15 @@ check() { package_systemd() { pkgdesc='system and service manager' - license=('GPL2' 'LGPL2.1') + license=('LGPL2.1') groups=('base-devel') - depends=('acl' 'bash' 'cryptsetup' 'dbus' 'iptables' 'kbd' 'kmod' 'hwids' 'libcap' - 'libgcrypt' 'libsystemd' 'libidn' 'lz4' 'pam' 'libelf' 'libseccomp' - 'util-linux' 'xz' 'pcre2') - provides=("systemd-tools=$pkgver" "udev=$pkgver") - replaces=('systemd-tools' 'udev') - conflicts=('systemd-tools' 'udev') + depends=('bash' 'dbus' 'kbd' 'kmod' + 'libsystemd' 'pam' 'libelf' + 'util-linux' 'pcre2') + depends+=("systemd-common=$pkgver" 'udev') + provides=("systemd-tools=$pkgver") + replaces=('systemd-tools') + conflicts=('systemd-tools') optdepends=('libmicrohttpd: remote journald capabilities' 'quota-tools: kernel-level quota management' 'systemd-sysvcompat: symlink package to provide sysvinit binaries' @@ -222,8 +237,7 @@ package_systemd() { etc/systemd/system.conf etc/systemd/timesyncd.conf etc/systemd/resolved.conf - etc/systemd/user.conf - etc/udev/udev.conf) + etc/systemd/user.conf) install=systemd.install cp -rT -d --no-preserve=ownership,timestamp "$srcdir/dest/$pkgbase" "$pkgdir" @@ -253,8 +267,6 @@ package_systemd() { # add mkinitcpio hooks install -D -m0644 initcpio-install-systemd "$pkgdir"/usr/lib/initcpio/install/systemd - install -D -m0644 initcpio-install-udev "$pkgdir"/usr/lib/initcpio/install/udev - install -D -m0644 initcpio-hook-udev "$pkgdir"/usr/lib/initcpio/hooks/udev # ensure proper permissions for /var/log/journal # The permissions are stored with named group by tar, so this works with @@ -273,11 +285,45 @@ package_systemd() { # pacman hooks install -D -m0755 systemd-hook "$pkgdir"/usr/share/libalpm/scripts/systemd-hook install -D -m0644 -t "$pkgdir"/usr/share/libalpm/hooks *.hook + rm -- "$pkgdir"/usr/share/libalpm/hooks/*{udev,hwdb}* # overwrite the systemd-user PAM configuration with our own install -D -m0644 systemd-user.pam "$pkgdir"/etc/pam.d/systemd-user } +package_systemd-common() { + pkgdesc='systemd files shared between split packages' + license=('LGPL2.1') + depends=('acl' 'cryptsetup' 'libdbus' 'glibc' 'iptables' 'libcap' + 'libgcrypt' 'libidn' 'libseccomp' 'libsystemd.so' + 'libudev.so' 'libblkid.so' 'libmount.so' 'libuuid.so' 'lz4' + 'xz') + + cp -rT -d --no-preserve=ownership,timestamp "$srcdir/dest/${pkgname#systemd-}" "$pkgdir" +} + +package_systemd-udev() { + pkgdesc='Userspace device file manager' + license=('GPL2') # NB: different than the rest + depends=("systemd-common=$pkgver" 'systemd-libudev' + 'hwids' 'kmod' 'util-linux' 'zlib') + backup=(etc/udev/udev.conf) + + provides+=("${pkgname#systemd-}=$pkgver") + conflicts+=("${pkgname#systemd-}") + replaces+=("${pkgname#systemd-}") + + cp -rT -d --no-preserve=ownership,timestamp "$srcdir/dest/${pkgname#systemd-}" "$pkgdir" + + # add mkinitcpio hooks + install -D -m0644 initcpio-install-udev "$pkgdir"/usr/lib/initcpio/install/udev + install -D -m0644 initcpio-hook-udev "$pkgdir"/usr/lib/initcpio/hooks/udev + + # pacman hooks + install -D -m0755 udev-hook "$pkgdir"/usr/share/libalpm/scripts/udev-hook + install -D -m0644 -t "$pkgdir"/usr/share/libalpm/hooks *{udev,hwdb}*.hook +} + package_libsystemd() { pkgdesc='systemd client libraries metapackage' depends=("${_libsystemd[@]/#/systemd-}") diff --git a/libre/systemd/systemd-hook b/libre/systemd/systemd-hook index 0a664f2c5..793a42943 100644 --- a/libre/systemd/systemd-hook +++ b/libre/systemd/systemd-hook @@ -7,22 +7,13 @@ systemd_live() { fi } -udevd_live() { - if [ ! -d /run/udev ]; then - echo >&2 " Skipped: Device manager is not running." - exit 0 - fi -} - case $1 in catalog) /usr/bin/journalctl --update-catalog ;; - hwdb) /usr/bin/systemd-hwdb --usr update ;; update) touch -c /usr ;; sysusers) /usr/bin/systemd-sysusers ;; tmpfiles) /usr/bin/systemd-tmpfiles --create ;; daemon-reload) systemd_live; /usr/bin/systemctl daemon-reload ;; - udev-reload) udevd_live; /usr/bin/udevadm control --reload ;; binfmt) systemd_live; /usr/lib/systemd/systemd-binfmt ;; sysctl) systemd_live; /usr/lib/systemd/systemd-sysctl ;; diff --git a/libre/systemd/systemd-hwdb.hook b/libre/systemd/systemd-hwdb.hook index f0440b0a6..ec5bcfb94 100644 --- a/libre/systemd/systemd-hwdb.hook +++ b/libre/systemd/systemd-hwdb.hook @@ -8,4 +8,4 @@ Target = usr/lib/udev/hwdb.d/* [Action] Description = Updating udev hardware database... When = PostTransaction -Exec = /usr/share/libalpm/scripts/systemd-hook hwdb +Exec = /usr/share/libalpm/scripts/udev-hook hwdb diff --git a/libre/systemd/systemd-udev-reload.hook b/libre/systemd/systemd-udev-reload.hook index 04238bd58..418515daf 100644 --- a/libre/systemd/systemd-udev-reload.hook +++ b/libre/systemd/systemd-udev-reload.hook @@ -8,4 +8,4 @@ Target = usr/lib/udev/rules.d/* [Action] Description = Reloading device manager configuration... When = PostTransaction -Exec = /usr/share/libalpm/scripts/systemd-hook udev-reload +Exec = /usr/share/libalpm/scripts/udev-hook udev-reload diff --git a/libre/systemd/udev-hook b/libre/systemd/udev-hook new file mode 100644 index 000000000..61d853293 --- /dev/null +++ b/libre/systemd/udev-hook @@ -0,0 +1,18 @@ +#!/bin/sh -e + +udevd_live() { + if [ ! -d /run/udev ]; then + echo >&2 " Skipped: Device manager is not running." + exit 0 + fi +} + +case $1 in + hwdb) /usr/bin/systemd-hwdb --usr update ;; + + udev-reload) udevd_live; /usr/bin/udevadm control --reload ;; + + *) echo >&2 " Invalid operation '$1'"; exit 1 ;; +esac + +exit 0 |