summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuke Shumaker <lukeshu@lukeshu.com>2018-07-11 20:51:57 -0400
committerLuke Shumaker <lukeshu@lukeshu.com>2018-07-12 13:44:16 -0400
commit62a9de5139e9bbb95bee801146a61a90fce32510 (patch)
tree7d4c0764bf4fd1f24ad0609a93b25e654eb7d4d3
parente24826c36a7f851a3b92656b35975caa1a62ae47 (diff)
downloadabslibre-62a9de5139e9bbb95bee801146a61a90fce32510.tar.gz
abslibre-62a9de5139e9bbb95bee801146a61a90fce32510.tar.bz2
abslibre-62a9de5139e9bbb95bee801146a61a90fce32510.zip
libre/systemd: Split udev off in to a separate package
-rw-r--r--libre/systemd/PKGBUILD74
-rw-r--r--libre/systemd/systemd-hook9
-rw-r--r--libre/systemd/systemd-hwdb.hook2
-rw-r--r--libre/systemd/systemd-udev-reload.hook2
-rw-r--r--libre/systemd/udev-hook18
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