[trunk] -> [testing] 'udev-252.2-1' add
packagesU/udev/pipeline/head This commit looks good Details

master
artoo 2 months ago
parent 097335b66b
commit 484d096d7a
Signed by: artoo
GPG Key ID: 3292CD0BB0DB310B

@ -8,8 +8,8 @@ _pkgbase=systemd-stable
pkgbase=udev
pkgname=('udev' 'libudev' 'esysusers' 'etmpfiles')
pkgdesc='Userspace device file manager'
_tag='472b4e59c3c095248b316ccceac5565fcaae9d3a' # git rev-parse v${_tag_name}
_tag_name=252.1
_tag='2306696b774a8c23f3796a0c9ebd8486fbb2a069' # git rev-parse v${_tag_name}
_tag_name=252.2
pkgver="${_tag_name/-/}"
pkgrel=1
arch=('x86_64')
@ -29,8 +29,8 @@ source=("git+https://github.com/systemd/systemd-stable#tag=${_tag}" #?signed
initcpio-{hook,install}-udev
"git+https://gitea.artixlinux.org/artix/alpm-hooks.git#commit=${_alpm}"
meson-install-tags.patch
meson-artix-test-fix.patch
meson-artix.patch)
meson-artix.patch
udev-log-msg.patch)
sha512sums=('SKIP'
'SKIP'
'f26db75129f1f9a7b7235d77e4ec490864fa0a203431f515873443b227da3db7034d8d81f7974f23fc6fbeaa91727244ac8ab82762f02e87fb92ea19a6bd931f'
@ -38,8 +38,8 @@ sha512sums=('SKIP'
'38eed28d42ac8f70bc8d1058ace35f137f7f5c972442ee14b98c2146202e0615aa584304edbd59e8608d1b6bec3cb391fc69b25393740f6eabd8fc5ad3bde64f'
'SKIP'
'e936a4b245400140d2cb4ed250fe23639bc3aaf81fb958b9b10dc1ff5aeb094f37b657e044bf35e832fd4a69dccea5b19ef45d20852ce3aa49325ae2e59d8f51'
'9f12376fb699a9bcab438c2a600ebd5dcd4a92812664ebe074ae622dad8b4ff5b9ebf1b373ccb69be3efeb4bb86ae023b9a8a2305bd734d79211384f7f3daec9'
'a26003ddcac5a83ec1fec040b36ff46816869028dc79aebb2646f9f2ed090e6358601f911c9d6a04b426c7f3367595e12716e411fca34ffce59d718b067e4e5c')
'a26003ddcac5a83ec1fec040b36ff46816869028dc79aebb2646f9f2ed090e6358601f911c9d6a04b426c7f3367595e12716e411fca34ffce59d718b067e4e5c'
'268817ee63ca0b03d2a10bb952837052c1fa80a5d2f0fe933d2aa3d61a09d286f188a6358107114964930fcef7057392f9520f875a83f6e265d2f4bc2564c26e')
_backports=(
)
@ -63,8 +63,8 @@ prepare() {
git revert -n "${_c}"
done
patch -Np1 -i ../meson-install-tags.patch
patch -Np1 -i ../meson-artix-test-fix.patch
patch -Np1 -i ../meson-artix.patch
patch -Np1 -i ../udev-log-msg.patch
# Replace cdrom/dialout/tape groups with optical/uucp/storage
patch -Np1 -i ../0001-Use-Arch-Linux-device-access-groups.patch

@ -1,25 +0,0 @@
meson.build | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/meson.build b/meson.build
index cfa01e7a66..738c854e7c 100644
--- a/meson.build
+++ b/meson.build
@@ -3862,11 +3862,11 @@ exe = custom_target(
install_dir : bindir)
public_programs += exe
-if want_tests != 'false'
- test('test-kernel-install',
- test_kernel_install_sh,
- args : [exe.full_path(), loaderentry_install])
-endif
+# if want_tests != 'false'
+# test('test-kernel-install',
+# test_kernel_install_sh,
+# args : [exe.full_path(), loaderentry_install])
+# endif
############################################################

@ -0,0 +1,17 @@
src/udev/udevd.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/udev/udevd.c b/src/udev/udevd.c
index e3a2742733..21102fde18 100644
--- a/src/udev/udevd.c
+++ b/src/udev/udevd.c
@@ -2055,7 +2055,7 @@ int run_udevd(int argc, char *argv[]) {
if (arg_daemonize) {
pid_t pid;
- log_info("Starting systemd-udevd version " GIT_VERSION);
+ log_info("Starting udevd version " GIT_VERSION);
/* connect /dev/null to stdin, stdout, stderr */
if (log_get_max_level() < LOG_DEBUG) {

@ -0,0 +1,144 @@
From 0e8c18bc2639da328274d02d9222ee2c1f6bf696 Mon Sep 17 00:00:00 2001
From: "Jan Alexander Steffens (heftig)" <jan.steffens@gmail.com>
Date: Tue, 6 Mar 2018 23:39:47 +0100
Subject: [PATCH] Use Arch Linux' device access groups
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
cdrom → optical
dialout → uucp
tape → storage
---
meson.build | 6 +++---
meson_options.txt | 12 ++++++------
rules.d/50-udev-default.rules.in | 14 +++++++-------
sysusers.d/basic.conf.in | 6 +++---
4 files changed, 19 insertions(+), 19 deletions(-)
diff --git a/meson.build b/meson.build
index 76ad51d3fb..5cf679b088 100644
--- a/meson.build
+++ b/meson.build
@@ -915,19 +915,19 @@ conf.set_quoted('NOBODY_GROUP_NAME', nobody_group)
static_ugids = []
foreach option : ['adm-gid',
'audio-gid',
- 'cdrom-gid',
- 'dialout-gid',
'disk-gid',
'input-gid',
'kmem-gid',
'kvm-gid',
'lp-gid',
+ 'optical-gid',
'render-gid',
'sgx-gid',
- 'tape-gid',
+ 'storage-gid',
'tty-gid',
'users-gid',
'utmp-gid',
+ 'uucp-gid',
'video-gid',
'wheel-gid',
'systemd-journal-gid',
diff --git a/meson_options.txt b/meson_options.txt
index 814f340840..253a77ecb3 100644
--- a/meson_options.txt
+++ b/meson_options.txt
@@ -257,10 +257,6 @@ option('adm-gid', type : 'integer', value : 0,
description : 'soft-static allocation for the "adm" group')
option('audio-gid', type : 'integer', value : 0,
description : 'soft-static allocation for the "audio" group')
-option('cdrom-gid', type : 'integer', value : 0,
- description : 'soft-static allocation for the "cdrom" group')
-option('dialout-gid', type : 'integer', value : 0,
- description : 'soft-static allocation for the "dialout" group')
option('disk-gid', type : 'integer', value : 0,
description : 'soft-static allocation for the "disk" group')
option('input-gid', type : 'integer', value : 0,
@@ -271,18 +267,22 @@ option('kvm-gid', type : 'integer', value : 0,
description : 'soft-static allocation for the "kvm" group')
option('lp-gid', type : 'integer', value : 0,
description : 'soft-static allocation for the "lp" group')
+option('optical-gid', type : 'integer', value : '0',
+ description : 'soft-static allocation for the "optical" group')
option('render-gid', type : 'integer', value : 0,
description : 'soft-static allocation for the "render" group')
option('sgx-gid', type : 'integer', value : 0,
description : 'soft-static allocation for the "sgx" group')
-option('tape-gid', type : 'integer', value : 0,
- description : 'soft-static allocation for the "tape" group')
+option('storage-gid', type : 'integer', value : '0',
+ description : 'soft-static allocation for the "storage" group')
option('tty-gid', type : 'integer', value : 5,
description : 'the numeric GID of the "tty" group')
option('users-gid', type : 'integer', value : 0,
description : 'soft-static allocation for the "users" group')
option('utmp-gid', type : 'integer', value : 0,
description : 'soft-static allocation for the "utmp" group')
+option('uucp-gid', type : 'integer', value : '0',
+ description : 'soft-static allocation for the "uucp" group')
option('video-gid', type : 'integer', value : 0,
description : 'soft-static allocation for the "video" group')
option('wheel-gid', type : 'integer', value : 0,
diff --git a/rules.d/50-udev-default.rules.in b/rules.d/50-udev-default.rules.in
index 843bdaf9ce..a192f091df 100644
--- a/rules.d/50-udev-default.rules.in
+++ b/rules.d/50-udev-default.rules.in
@@ -26,7 +26,7 @@ SUBSYSTEM=="tty", KERNEL=="sclp_line[0-9]*", GROUP="tty", MODE="0620"
SUBSYSTEM=="tty", KERNEL=="ttysclp[0-9]*", GROUP="tty", MODE="0620"
SUBSYSTEM=="tty", KERNEL=="3270/tty[0-9]*", GROUP="tty", MODE="0620"
SUBSYSTEM=="vc", KERNEL=="vcs*|vcsa*", GROUP="tty"
-KERNEL=="tty[A-Z]*[0-9]|ttymxc[0-9]*|pppox[0-9]*|ircomm[0-9]*|noz[0-9]*|rfcomm[0-9]*", GROUP="dialout"
+KERNEL=="tty[A-Z]*[0-9]|ttymxc[0-9]*|pppox[0-9]*|ircomm[0-9]*|noz[0-9]*|rfcomm[0-9]*", GROUP="uucp"
SUBSYSTEM=="mem", KERNEL=="mem|kmem|port", GROUP="kmem", MODE="0640"
@@ -72,13 +72,13 @@ KERNEL=="irlpt[0-9]*", GROUP="lp"
SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ENV{ID_USB_INTERFACES}=="*:0701??:*", GROUP="lp"
SUBSYSTEM=="block", GROUP="disk"
-SUBSYSTEM=="block", KERNEL=="sr[0-9]*", GROUP="cdrom"
-SUBSYSTEM=="scsi_generic", SUBSYSTEMS=="scsi", ATTRS{type}=="4|5", GROUP="cdrom"
-KERNEL=="sch[0-9]*", GROUP="cdrom"
-KERNEL=="pktcdvd[0-9]*", GROUP="cdrom"
-KERNEL=="pktcdvd", GROUP="cdrom"
+SUBSYSTEM=="block", KERNEL=="sr[0-9]*", GROUP="optical"
+SUBSYSTEM=="scsi_generic", SUBSYSTEMS=="scsi", ATTRS{type}=="4|5", GROUP="optical"
+KERNEL=="sch[0-9]*", GROUP="optical"
+KERNEL=="pktcdvd[0-9]*", GROUP="optical"
+KERNEL=="pktcdvd", GROUP="optical"
-SUBSYSTEM=="scsi_generic|scsi_tape", SUBSYSTEMS=="scsi", ATTRS{type}=="1|8", GROUP="tape"
+SUBSYSTEM=="scsi_generic|scsi_tape", SUBSYSTEMS=="scsi", ATTRS{type}=="1|8", GROUP="storage"
SUBSYSTEM=="scsi_generic", SUBSYSTEMS=="scsi", ATTRS{type}=="0", GROUP="disk"
KERNEL=="qft[0-9]*|nqft[0-9]*|zqft[0-9]*|nzqft[0-9]*|rawqft[0-9]*|nrawqft[0-9]*", GROUP="disk"
KERNEL=="loop-control", GROUP="disk", OPTIONS+="static_node=loop-control"
diff --git a/sysusers.d/basic.conf.in b/sysusers.d/basic.conf.in
index a602b872e4..8d38febb6a 100644
--- a/sysusers.d/basic.conf.in
+++ b/sysusers.d/basic.conf.in
@@ -23,17 +23,17 @@ g utmp {{UTMP_GID }} - -
# Physical and virtual hardware access groups
g audio {{AUDIO_GID }} - -
-g cdrom {{CDROM_GID }} - -
-g dialout {{DIALOUT_GID}} - -
g disk {{DISK_GID }} - -
g input {{INPUT_GID }} - -
g kmem {{KMEM_GID }} - -
g kvm {{KVM_GID }} - -
g lp {{LP_GID }} - -
+g optical {{OPTICAL_GID}} - -
g render {{RENDER_GID }} - -
g sgx {{SGX_GID }} - -
-g tape {{TAPE_GID }} - -
+g storage {{STORAGE_GID}} - -
g tty {{TTY_GID }} - -
+g uucp {{UUCP_GID }} - -
g video {{VIDEO_GID }} - -
# Default group for normal users

@ -0,0 +1,313 @@
# Maintainer: Artoo <artoo@artixlinux.org>
# Contributor: Christian Hesse <mail@eworm.de>
# Contributor: Dave Reisner <dreisner@archlinux.org>
# Contributor: Tom Gundersen <teg@jklm.no>
_pkgbase=systemd-stable
pkgbase=udev
pkgname=('udev' 'libudev' 'esysusers' 'etmpfiles')
pkgdesc='Userspace device file manager'
_tag='2306696b774a8c23f3796a0c9ebd8486fbb2a069' # git rev-parse v${_tag_name}
_tag_name=252.2
pkgver="${_tag_name/-/}"
pkgrel=1
arch=('x86_64')
url='https://www.github.com/systemd/systemd'
license=('GPL2' 'LGPL2.1')
makedepends=('acl' 'kmod' 'util-linux' 'hwdata' 'libcap' 'kbd' 'gperf'
'intltool' 'git' 'meson' 'docbook-xsl' 'rsync' 'python-jinja')
options=('debug' 'strip')
validpgpkeys=('63CDA1E5D3FC22B998D20DD6327F26951A015CC4' # Lennart Poettering <lennart@poettering.net>
'A9EA9081724FFAE0484C35A1A81CEA22BC8C7E2E' # Luca Boccassi <luca.boccassi@gmail.com>
'9A774DB5DB996C154EBBFBFDA0099A18E29326E1' # Yu Watanabe <watanabe.yu+github@gmail.com>
'5C251B5FC54EB2F80F407AAAC54CA336CFEB557E') # Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
_alpm=57bcc7fee22d75df96fd546ee7215166cdfb1233
source=("git+https://github.com/systemd/systemd-stable#tag=${_tag}" #?signed
"git+https://github.com/systemd/systemd#tag=v${_tag_name%.*}" #?signed
'0001-Use-Arch-Linux-device-access-groups.patch'
initcpio-{hook,install}-udev
"git+https://gitea.artixlinux.org/artix/alpm-hooks.git#commit=${_alpm}"
meson-install-tags.patch
meson-artix.patch
udev-log-msg.patch)
sha512sums=('SKIP'
'SKIP'
'f26db75129f1f9a7b7235d77e4ec490864fa0a203431f515873443b227da3db7034d8d81f7974f23fc6fbeaa91727244ac8ab82762f02e87fb92ea19a6bd931f'
'32606b42856b5f3ea7f485143e532671f58986237e14c58ea5ab17383dc39a375cb6c738c8a2db9e4a8c8be88ea44a876d6bbed129cb2f5c9aa3f8228b04d927'
'38eed28d42ac8f70bc8d1058ace35f137f7f5c972442ee14b98c2146202e0615aa584304edbd59e8608d1b6bec3cb391fc69b25393740f6eabd8fc5ad3bde64f'
'SKIP'
'e936a4b245400140d2cb4ed250fe23639bc3aaf81fb958b9b10dc1ff5aeb094f37b657e044bf35e832fd4a69dccea5b19ef45d20852ce3aa49325ae2e59d8f51'
'a26003ddcac5a83ec1fec040b36ff46816869028dc79aebb2646f9f2ed090e6358601f911c9d6a04b426c7f3367595e12716e411fca34ffce59d718b067e4e5c'
'268817ee63ca0b03d2a10bb952837052c1fa80a5d2f0fe933d2aa3d61a09d286f188a6358107114964930fcef7057392f9520f875a83f6e265d2f4bc2564c26e')
_backports=(
)
_reverts=(
)
prepare() {
cd "$_pkgbase"
# add upstream repository for cherry-picking
git remote add -f upstream ../systemd
local _c
for _c in "${_backports[@]}"; do
git log --oneline -1 "${_c}"
git cherry-pick -n "${_c}"
done
for _c in "${_reverts[@]}"; do
git log --oneline -1 "${_c}"
git revert -n "${_c}"
done
patch -Np1 -i ../meson-install-tags.patch
patch -Np1 -i ../meson-artix.patch
patch -Np1 -i ../udev-log-msg.patch
# Replace cdrom/dialout/tape groups with optical/uucp/storage
patch -Np1 -i ../0001-Use-Arch-Linux-device-access-groups.patch
}
build() {
local _meson_options=()
_meson_options+=(
-Dversion-tag="${_tag_name/-/\~}-${pkgrel}-artix"
-Dshared-lib-tag="${pkgver}-${pkgrel}"
-Dmode=release
-Dstandalone-binaries=true
-Dsysusers=true
-Dtmpfiles=true
-Dhwdb=true
-Dblkid=true
-Dgshadow=true
-Dinstall-sysconfdir-standalone=true
-Ddefault-udevd-symlink='udevd'
-Ddefault-udevd-dir='/usr/bin'
-Dsbat-distro='artix'
-Dsbat-distro-summary='Artix Linux'
-Dsbat-distro-pkgname="${pkgname}"
-Dsbat-distro-version="${pkgver}"
-Dtests=true
-Dlink-udev-shared=false
-Dlink-boot-shared=false
-Dman=false
-Ddns-servers=''
-Dntp-servers=''
-Defi=false
-Dsysvinit-path=
-Ddefault-dnssec=no
-Dadm-group=false
-Danalyze=false
-Dapparmor=false
-Daudit=false
-Dbacklight=false
-Dbinfmt=false
-Dbzip2=false
-Dcoredump=false
-Ddbus=false
-Delfutils=false
-Denvironment-d=false
-Dfdisk=false
-Dgcrypt=false
-Dglib=false
-Dgnutls=false
-Dhibernate=false
-Dhostnamed=false
-Didn=false
-Dima=false
-Dinitrd=false
-Dfirstboot=false
-Dkernel-install=false
-Dldconfig=false
-Dlibcryptsetup=false
-Dlibcurl=false
-Dlibfido2=false
-Dlibidn=false
-Dlibidn2=false
-Dlibiptc=false
-Dlocaled=false
-Dlogind=false
-Dlz4=false
-Dmachined=false
-Dmicrohttpd=false
-Dnetworkd=false
-Dnscd=false
-Dnss-myhostname=false
-Dnss-resolve=false
-Dnss-systemd=false
-Doomd=false
-Dopenssl=false
-Dp11kit=false
-Dpam=false
-Dpcre2=false
-Dpolkit=false
-Dportabled=false
-Dpstore=false
-Dpwquality=false
-Drandomseed=false
-Dresolve=false
-Drfkill=false
-Dseccomp=false
-Dsmack=false
-Dsysext=false
-Dtimedated=false
-Dtimesyncd=false
-Dtpm=false
-Dqrencode=false
-Dquotacheck=false
-Duserdb=false
-Dutmp=false
-Dvconsole=false
-Dwheel-group=false
-Dxdg-autostart=false
-Dxkbcommon=false
-Dxz=false
-Dzlib=false
-Dzstd=false
)
artix-meson "$_pkgbase" build "${_meson_options[@]}"
local _targets=()
_targets+=(
udev:shared_library
src/libudev/libudev.pc
udevadm
systemd-hwdb
src/udev/{ata_id,cdrom_id,fido_id,mtd_probe,dmi_memory_id,scsi_id,v4l_id}
src/udev/udev.pc
rules.d/{50-udev-default,64-btrfs}.rules
hwdb.d/60-autosuspend-chromiumos.hwdb
man/{libudev.3,udev.conf.5,hwdb.7,udev.7,udevadm.8}
systemd-{sysusers,tmpfiles}.standalone
sysusers.d/basic.conf
tmpfiles.d/{etc,static-nodes-permissions,var}.conf
man/{sysusers,tmpfiles}.d.5
man/systemd-{sysusers,tmpfiles}.8
factory/templates/locale.conf
systemd-detect-virt
test/sys
test-udev
test-fido-id-desc
test-udev-builtin
test-udev-event
test-udev-node
test-udev-util
systemd-runtest.env
test-tmpfiles
)
meson compile -C build "${_targets[@]}"
}
check() {
local tests=()
tests+=(
test-sysusers.standalone
test-systemd-tmpfiles.standalone
test-tmpfiles
rule-syntax-check
test-fido-id-desc
test-udev-builtin
test-udev-event
test-udev-node
test-udev-util
# udev-test
test-libudev
test-libudev-sym
test-udev-device-thread
)
meson test -C build --print-errorlogs "${tests[@]}"
}
_inst_doc(){
install -d "${pkgdir}"/usr/share/doc/"${pkgname}"
install -vm644 "$_pkgbase"/LICENSE.* "${pkgdir}"/usr/share/doc/"${pkgname}"
}
_inst_man_udev() {
local x="$1" y=${1##*.}
install -d "${pkgdir}"/usr/share/man/man"$y"
install -vm644 build/man/"$x" "${pkgdir}"/usr/share/man/man"$y"
}
_inst_man_utils() {
local u="$1"
install -d "${pkgdir}"/usr/share/man/man{5,8}
install -vm644 build/man/"$u".d.5 "${pkgdir}"/usr/share/man/man5
install -vm644 build/man/systemd-"$u".8 "${pkgdir}"/usr/share/man/man8/"$u".8
}
package_udev() {
pkgdesc='Userspace device file manager'
depends=('acl' 'libacl.so' 'kmod' 'libkmod.so'
'util-linux' 'libblkid.so' 'libudev' 'hwdata' 'kbd')
provides=("udev=$pkgver")
meson install -C build --destdir "$pkgdir" --no-rebuild --tags udev,udev-devel,libudev-devel
mv -v "${pkgdir}"/usr/bin/systemd-hwdb "${pkgdir}"/usr/bin/udev-hwdb
for m in libudev.3 udev.conf.5 udev.7 udevadm.8; do
_inst_man_udev "$m"
done
_inst_doc
# initcpio
install -vD -m0644 initcpio-install-udev "${pkgdir}"/usr/lib/initcpio/install/udev
install -vD -m0644 initcpio-hook-udev "${pkgdir}"/usr/lib/initcpio/hooks/udev
# pacman hooks
make -C alpm-hooks DESTDIR="${pkgdir}" install_udev
}
package_libudev() {
pkgdesc='udev library for enumerating and introspecting local devices'
depends=('gcc-libs')
provides=('libudev.so')
meson install -C build --destdir "$pkgdir" --no-rebuild --tags libudev
}
package_esysusers() {
pkgdesc='the sysusers.d binary'
groups=('base-devel')
depends=('gcc-libs' 'libxcrypt')
meson install -C build --destdir "$pkgdir" --no-rebuild --tags sysusers
mv -v "${pkgdir}"/usr/bin/systemd-sysusers.standalone "${pkgdir}"/usr/bin/sysusers
_inst_man_utils sysusers
_inst_doc
# pacman hooks
make -C alpm-hooks DESTDIR="${pkgdir}" install_sysusers
}
package_etmpfiles() {
pkgdesc='the tmpfiles.d binary'
groups=('base-devel')
depends=('acl' 'libacl.so' 'libcap' 'libcap.so')
meson install -C build --destdir "$pkgdir" --no-rebuild --tags tmpfiles
mv -v "${pkgdir}"/usr/bin/systemd-tmpfiles.standalone "${pkgdir}"/usr/bin/tmpfiles
_inst_man_utils tmpfiles
_inst_doc
# pacman hooks
make -C alpm-hooks DESTDIR="${pkgdir}" install_tmpfiles
}

@ -0,0 +1,22 @@
#!/usr/bin/ash
run_earlyhook() {
kmod static-nodes --format=tmpfiles --output=/run/tmpfiles.d/kmod.conf
tmpfiles --prefix=/dev --create --boot
udevd --daemon --resolve-names=never
udevd_running=1
}
run_hook() {
msg ":: Triggering uevents..."
udevadm trigger --action=add --type=subsystems
udevadm trigger --action=add --type=devices
udevadm settle
}
run_cleanuphook() {
udevadm control --exit
udevadm info --cleanup-db
}
# vim: set ft=sh ts=4 sw=4 et:

@ -0,0 +1,33 @@
#!/bin/bash
build() {
local rules tool
map add_binary \
'/usr/bin/udevadm' \
'/usr/bin/tmpfiles'
map add_udev_rule \
'50-udev-default.rules' \
'60-persistent-storage.rules' \
'64-btrfs.rules' \
'80-drivers.rules'
map add_file \
'/usr/lib/udev/ata_id' \
'/usr/lib/udev/scsi_id'
add_symlink '/usr/bin/udevd' 'udevadm'
add_runscript
}
help() {
cat <<HELPEOF
This hook adds the udev daemon to the initramfs, allowing for dynamic loading
of modules and reliable detection of the root device via tags (e.g. UUID or
LABEL). Do not remove this hook unless you know what you're doing.
HELPEOF
}
# vim: set ft=sh ts=4 sw=4 et:

@ -0,0 +1,51 @@
-----BEGIN PGP PUBLIC KEY BLOCK-----
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
NHq9Ahd8L7JVIsbKtcoP
=a25g
-----END PGP PUBLIC KEY BLOCK-----

@ -0,0 +1,72 @@
-----BEGIN PGP PUBLIC KEY BLOCK-----
mQGiBDjDxTgRBADILCd6h0DKdoY0bkATA20IBHAQ8axjpzVFocYco9w90jWRYj0y
5JntFUdXB20qh/tr1+H3p7Wr/9MNJDX/k+EJ8LCbqouFItfyE1m5k2iaqlGn3MBG
z+gbadL5x+01zZcuJmkhMa/xogs3OGvuw4QU0lRf/3VRgEvGQxh/DCQI7wCg91fQ
X5nGmLfaEajvZk622f4cmXED/jCtmntvBwk9J8jkYDrINEeglEcF8naA/qr20AkD
hvupalZDEL8CJVh+jKA9HcF584mQzV9BURxaWsU89sT7Jg7incdsOOSOJkCyaasO
slt7vGKlUjHBqYCUCp336BVDOY5k2c6U52bsMvfywVAAFf4cDn3S9QHDyaYkur2R
aqMrA/4giC+bF/K1sn4MHacr97QxEeeGNM6KG4z4QDmLeNdAANmJOLQaQFH+84Qj
r8KyRV0zd0sioh3419AsZ/o41W4cIahovJKWyDcNwKI0tP2y3KZDVtmD26RQ/BO4
aFEqv3Uii0Cop6j495XmSvteL7CZHLEog90hexe9ExI0xIIBs7QqTGVubmFydCBQ
b2V0dGVyaW5nIDxsZW5uYXJ0QHBvZXR0ZXJpbmcuZGU+iF4EExECABYECwoEAwMV
AwIDFgIBAheABQJGZKVoABIHZUdQRwABAQkQMn8mlRoBXMSoAACcCNTEt7jdZvVV
eAYZQu5caidHZvUAnArwD7mJLWddEUK2XXWOeyOY+0WmtCtMZW5uYXJ0IFBvZXR0
ZXJpbmcgPGxlbm5hcnRAcG9ldHRlcmluZy5uZXQ+iGMEExECACMCGwMGCwkIBwMC
BBUCCAMEFgIDAQIeAQIXgAUCRmSlaQIZAQAKCRAyfyaVGgFcxNX0AKDeFj3gF+Fl
CMgnw1JWu/fM5H8pYgCg7VRzOxtpEEiDSw37hv4eifyo7P60L0xlbm5hcnQgUG9l
dHRlcmluZyAoTGlzYSkgPGxwb2V0dGVyaW5nQGxpc2EuZGU+iEkEMBECAAkFAk6K
PXcCHSAACgkQMn8mlRoBXMSZNgCgjKt+QUMXVT1a2h25RkUyiiBPeAYAnRpV0f+q
i9N55hov5qCieRGUdvVctDJMZW5uYXJ0IFBvZXR0ZXJpbmcgKFJlZCBIYXQpIDxs
cG9ldHRlckByZWRoYXQuY29tPohgBBMRAgAgAhsDBgsJCAcDAgQVAggDBBYCAwEC
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
sDadOQCg30tdWRaNvasUMaTQL+fqE/pFzeI=
=mDgC
-----END PGP PUBLIC KEY BLOCK-----

@ -0,0 +1,52 @@
-----BEGIN PGP PUBLIC KEY BLOCK-----
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
HcRCOxTr2xTemQ==
=+88M
-----END PGP PUBLIC KEY BLOCK-----

@ -0,0 +1,67 @@
-----BEGIN PGP PUBLIC KEY BLOCK-----
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
io6PFV1+6ix1l8Mh
=t8gd
-----END PGP PUBLIC KEY BLOCK-----

@ -0,0 +1,51 @@
diff --git a/rules.d/meson.build b/rules.d/meson.build
index 8376da17e8..ed8f0c18e1 100644
--- a/rules.d/meson.build
+++ b/rules.d/meson.build
@@ -52,7 +52,6 @@ endforeach
rules_in = [
['50-udev-default.rules'],
['64-btrfs.rules'],
- ['99-systemd.rules'],
['70-uaccess.rules', enable_logind and conf.get('HAVE_ACL') == 1],
['71-seat.rules', enable_logind],
diff --git a/sysusers.d/meson.build b/sysusers.d/meson.build
index 687544da58..37bf31b4f1 100644
--- a/sysusers.d/meson.build
+++ b/sysusers.d/meson.build
@@ -22,7 +22,6 @@ endif
in_files = [['basic.conf', enable_sysusers],
- ['systemd-journal.conf', enable_sysusers],
['systemd-network.conf', enable_sysusers and conf.get('ENABLE_NETWORKD') == 1],
['systemd-resolve.conf', enable_sysusers and conf.get('ENABLE_RESOLVE') == 1],
['systemd-timesync.conf', enable_sysusers and conf.get('ENABLE_TIMESYNCD') == 1]]
diff --git a/tmpfiles.d/meson.build b/tmpfiles.d/meson.build
index 17607b6c8b..7a53322329 100644
--- a/tmpfiles.d/meson.build
+++ b/tmpfiles.d/meson.build
@@ -4,14 +4,12 @@ enable_tmpfiles = conf.get('ENABLE_TMPFILES') == 1
files = [['README', ''],
['home.conf', ''],
- ['journal-nocow.conf', ''],
['portables.conf', 'ENABLE_PORTABLED'],
['systemd-network.conf', 'ENABLE_NETWORKD'],
['systemd-nologin.conf', 'HAVE_PAM'],
['systemd-nspawn.conf', 'ENABLE_MACHINED'],
['systemd-pstore.conf', 'ENABLE_PSTORE'],
['systemd-resolve.conf', 'ENABLE_RESOLVE'],
- ['systemd-tmp.conf', ''],
['tmp.conf', ''],
['x11.conf', ''],
]
@@ -30,7 +28,6 @@ endforeach
in_files = [['etc.conf', ''],
['legacy.conf', 'HAVE_SYSV_COMPAT'],
['static-nodes-permissions.conf', ''],
- ['systemd.conf', ''],
['var.conf', ''],
]

@ -0,0 +1,289 @@
d090cd7950c96d8c376fcf9b08fd33600eae0b71
factory/templates/meson.build | 1 +
hwdb.d/meson.build | 11 +++++++++++
meson.build | 26 ++++++++++++++++++++++++++
meson_options.txt | 7 +++++++
rules.d/meson.build | 3 +++
src/libudev/meson.build | 10 +++++++++-
src/udev/meson.build | 13 +++++++++++++
sysusers.d/meson.build | 3 ++-
tmpfiles.d/meson.build | 9 ++++++++-
9 files changed, 80 insertions(+), 3 deletions(-)
diff --git a/factory/templates/meson.build b/factory/templates/meson.build
index ece2c644ff..43ddbd5158 100644
--- a/factory/templates/meson.build
+++ b/factory/templates/meson.build
@@ -8,4 +8,5 @@ custom_target(
output : 'locale.conf',
command : [jinja2_cmdline, '@INPUT@', '@OUTPUT@'],
install : true,
+ install_tag : 'tmpfiles',
install_dir : factory_etc_dir)
diff --git a/hwdb.d/meson.build b/hwdb.d/meson.build
index 90b71916b7..093c5946ac 100644
--- a/hwdb.d/meson.build
+++ b/hwdb.d/meson.build
@@ -43,10 +43,12 @@ if conf.get('ENABLE_HWDB') == 1
command : make_autosuspend_rules_py,
capture : true,
install : true,
+ install_tag : 'udev',
install_dir: udevhwdbdir)
install_data(hwdb_files_notest,
hwdb_files_test,
+ install_tag : 'udev',
install_dir : udevhwdbdir)
if install_sysconfdir
@@ -57,6 +59,15 @@ if conf.get('ENABLE_HWDB') == 1
'test -n "$DESTDIR" || @0@/systemd-hwdb update'.format(rootbindir))
endif
+ if install_sysconfdir_standalone
+ install_emptydir(
+ sysconfdir / 'udev/hwdb.d',
+ install_tag : 'udev')
+
+ 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')
test('parse-hwdb',
diff --git a/meson.build b/meson.build
index 7750534466..cfa01e7a66 100644
--- a/meson.build
+++ b/meson.build
@@ -168,6 +168,18 @@ if rpmmacrosdir != 'no'
endif
modprobedir = rootprefixdir / 'lib/modprobe.d'
+install_sysconfdir_standalone = get_option('install-sysconfdir-standalone')
+
+default_udevd_symlink = get_option('default-udevd-symlink')
+if default_udevd_symlink == ''
+ default_udevd_symlink = 'systemd-udevd'
+endif
+
+default_udevd_dir = get_option('default-udevd-dir')
+if default_udevd_dir == ''
+ default_udevd_dir = prefixdir / 'lib/systemd'
+endif
+
# Our own paths
pkgdatadir = datadir / 'systemd'
environmentdir = prefixdir / 'lib/environment.d'
@@ -3582,6 +3594,7 @@ if enable_sysusers
libbasic_gcrypt,
libsystemd_static],
install : true,
+ install_tag : 'sysusers',
install_dir : rootbindir)
public_programs += exe
@@ -3625,6 +3638,7 @@ if conf.get('ENABLE_TMPFILES') == 1
libsystemd_static],
dependencies : [libacl],
install : true,
+ install_tag : 'tmpfiles',
install_dir : rootbindir)
public_programs += exe
@@ -3645,6 +3659,7 @@ if conf.get('ENABLE_HWDB') == 1
link_with : udev_link_with,
install_rpath : udev_rpath,
install : true,
+ install_tag : 'udev',
install_dir : rootbindir)
public_programs += systemd_hwdb
@@ -3691,9 +3706,18 @@ udevadm = executable(
libblkid],
install_rpath : udev_rpath,
install : true,
+ install_tag : 'udev',
install_dir : rootbindir)
public_programs += udevadm
+if install_sysconfdir_standalone
+ install_symlink(
+ default_udevd_symlink,
+ install_dir : default_udevd_dir,
+ install_tag : 'udev',
+ pointing_to : rootbindir / 'udevadm')
+endif
+
if conf.get('ENABLE_REPART') == 1
exe = executable(
'systemd-repart',
@@ -4281,6 +4305,8 @@ summary({
'nobody user name' : nobody_user,
'nobody group name' : nobody_group,
'fallback hostname' : get_option('fallback-hostname'),
+ 'default udevd symlink name' : default_udevd_symlink,
+ 'default udevd symlink directory' : default_udevd_dir,
'default compression method' : compression,
'default DNSSEC mode' : default_dnssec,
'default DNS-over-TLS mode' : default_dns_over_tls,
diff --git a/meson_options.txt b/meson_options.txt
index 814f340840..e022094400 100644
--- a/meson_options.txt
+++ b/meson_options.txt
@@ -509,3 +509,10 @@ option('bpf-framework', type : 'combo', choices : ['auto', 'true', 'false'],
option('skip-deps', type : 'boolean', value : false,
description : 'skip optional dependencies')
+
+option('install-sysconfdir-standalone', type : 'boolean', value : false,
+ description : 'install configuration files and directories to $sysconfdir')
+option('default-udevd-symlink', type : 'string',
+ description : 'the udevd standalone symlink name')
+option('default-udevd-dir', type : 'string',
+ description : 'the udevd directory')
diff --git a/rules.d/meson.build b/rules.d/meson.build
index 8d2878a36d..31751215d1 100644
--- a/rules.d/meson.build
+++ b/rules.d/meson.build
@@ -2,6 +2,7 @@
install_data(
'README',
+ install_tag : 'udev',
install_dir : udevrulesdir)
rules = [
@@ -45,6 +46,7 @@ all_rules = []
foreach tuple : rules
if tuple.length() == 1 or tuple[1]
install_data(tuple[0],
+ install_tag : 'udev',
install_dir : udevrulesdir)
all_rules += tuple[0]
endif
@@ -71,6 +73,7 @@ foreach tuple : rules_in
output: tuple[0],
command : [jinja2_cmdline, '@INPUT@', '@OUTPUT@'],
install : want,
+ install_tag : 'udev',
install_dir : udevrulesdir)
if want
diff --git a/src/libudev/meson.build b/src/libudev/meson.build
index 92d54078f0..6795f33e6a 100644
--- a/src/libudev/meson.build
+++ b/src/libudev/meson.build
@@ -24,6 +24,14 @@ libudev_sym_path = meson.current_source_dir() / 'libudev.sym'
install_headers('libudev.h')
libudev_h_path = meson.current_source_dir() / 'libudev.h'
+if install_sysconfdir_standalone
+ libudev_h_path = meson.current_source_dir() / 'libudev.h'
+ install_data(
+ libudev_h_path,
+ install_dir: includedir,
+ install_tag: 'udev-devel')
+endif
+
libudev_basic = static_library(
'udev-basic',
libudev_sources,
@@ -40,7 +48,7 @@ libudev_pc = custom_target(
output : 'libudev.pc',
command : [jinja2_cmdline, '@INPUT@', '@OUTPUT@'],
install : pkgconfiglibdir != 'no',
- install_tag : 'devel',
+ install_tag : 'libudev-devel',
install_dir : pkgconfiglibdir)
############################################################
diff --git a/src/udev/meson.build b/src/udev/meson.build
index 08a1d97e81..bc2242fe73 100644
--- a/src/udev/meson.build
+++ b/src/udev/meson.build
@@ -150,6 +150,7 @@ foreach prog : udev_progs
link_with : udev_link_with,
install_rpath : udev_rpath,
install : true,
+ install_tag : 'udev',
install_dir : udevlibexecdir)
udev_prog_paths += {name : exe}
@@ -160,12 +161,24 @@ if install_sysconfdir_samples
install_dir : sysconfdir / 'udev')
endif
+if install_sysconfdir_standalone
+ install_data(
+ 'udev.conf',
+ install_tag : 'udev',
+ install_dir : sysconfdir / 'udev')
+
+ install_emptydir(
+ sysconfdir / 'udev/rules.d',
+ install_tag : 'udev')
+endif
+
custom_target(
'udev.pc',
input : 'udev.pc.in',
output : 'udev.pc',
command : [jinja2_cmdline, '@INPUT@', '@OUTPUT@'],
install : pkgconfigdatadir != 'no',
+ install_tag : 'udev-devel',
install_dir : pkgconfigdatadir)
if install_sysconfdir
diff --git a/sysusers.d/meson.build b/sysusers.d/meson.build
index 608c4b744a..687544da58 100644
--- a/sysusers.d/meson.build
+++ b/sysusers.d/meson.build
@@ -8,7 +8,7 @@ foreach pair : files
if not enable_sysusers
# do nothing
elif pair[1] == '' or conf.get(pair[1]) == 1
- install_data(pair[0], install_dir : sysusersdir)
+ install_data(pair[0], install_tag : 'sysusers', install_dir : sysusersdir)
else
message('Not installing sysusers.d/@0@ because @1@ is @2@'
.format(pair[0], pair[1], conf.get(pair[1], 0)))
@@ -35,5 +35,6 @@ foreach tuple : in_files
output: file,
command : [jinja2_cmdline, '@INPUT@', '@OUTPUT@'],
install : tuple[1],
+ install_tag : 'sysusers',
install_dir : sysusersdir)
endforeach
diff --git a/tmpfiles.d/meson.build b/tmpfiles.d/meson.build
index ca1abbf3fe..e9a8e2449b 100644
--- a/tmpfiles.d/meson.build
+++ b/tmpfiles.d/meson.build
@@ -21,7 +21,7 @@ foreach pair : files
if not enable_tmpfiles
# do nothing
elif pair[1] == '' or conf.get(pair[1]) == 1
- install_data(pair[0], install_dir : tmpfilesdir)
+ install_data(pair[0], install_tag : 'tmpfiles', install_dir : tmpfilesdir)
else
message('Not installing tmpfiles.d/@0@ because @1@ is @2@'
.format(pair[0], pair[1], conf.get(pair[1], 0)))
@@ -45,6 +45,7 @@ foreach pair : in_files
output: pair[0],
command : [jinja2_cmdline, '@INPUT@', '@OUTPUT@'],
install : enable_tmpfiles,
+ install_tag : 'tmpfiles',
install_dir : tmpfilesdir)
else
message('Not installing tmpfiles.d/@0@ because @1@ is @2@'
@@ -56,3 +57,9 @@ if enable_tmpfiles and install_sysconfdir
meson.add_install_script(
'sh', '-c', mkdir_p.format(sysconfdir / 'tmpfiles.d'))
endif
+
+if enable_tmpfiles and install_sysconfdir_standalone
+ install_emptydir(
+ sysconfdir / 'tmpfiles.d',
+ install_tag : 'tmpfiles')
+endif

@ -0,0 +1,17 @@
src/udev/udevd.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/udev/udevd.c b/src/udev/udevd.c
index e3a2742733..21102fde18 100644
--- a/src/udev/udevd.c
+++ b/src/udev/udevd.c
@@ -2055,7 +2055,7 @@ int run_udevd(int argc, char *argv[]) {
if (arg_daemonize) {
pid_t pid;
- log_info("Starting systemd-udevd version " GIT_VERSION);
+ log_info("Starting udevd version " GIT_VERSION);
/* connect /dev/null to stdin, stdout, stderr */
if (log_get_max_level() < LOG_DEBUG) {
Loading…
Cancel
Save