#!/bin/mkpkg # description: Device manager for the Linux kernel (extracted from systemd) # url: https://systemd.io/ name=udevd version=262 release=1 depends=(util-linux libcap2 kmod acl libucontext) makedeps=(meson ninja py-jinja2 py-lxml gperf patchelf docbook-xsl libxslt gettext) services=(udevd) source=(https://github.com/systemd/systemd/archive/refs/tags/v${version}.tar.gz 40-rawnix.rules udev-trigger) renames=($name-$version.tar.gz) sha256sums=( "6aa77506c0644aa67f940a48e3d3a7368601f787e4f249139516d353f107bcab" "981a54db9f163aaa60c85886589df97f8af1374c52f816ab2cb9e7ae79b84bae" "e9cbff4bc98e56d0d1802720da6382937794ffc25d5d6e10293a844d114dff86" ) build() { cd systemd-$version mkdir -p test/fuzz/fuzz-unit-file touch test/fuzz/fuzz-unit-file/dm-back-slash.swap meson setup build \ --prefix=/usr \ --sysconfdir=/etc \ --libdir=/usr/lib \ --buildtype=release \ -Dmode=release \ -Dlibc=musl \ -Dsplit-bin=false \ -Dhwdb=true \ -Dtests=false \ -Dfuzz-tests=false \ -Dstatic-libudev=false \ -Dstandalone-binaries=false \ \ -Dacl=enabled \ -Dkmod=enabled \ -Dselinux=disabled \ \ -Dbootloader=disabled \ -Dkernel-install=false \ -Dsysusers=false \ -Dtmpfiles=false \ -Dukify=disabled \ \ -Dadm-group=false \ -Danalyze=false \ -Dapparmor=disabled \ -Daudit=disabled \ -Dbacklight=false \ -Dbinfmt=false \ -Dbpf-framework=disabled \ -Dbzip2=disabled \ -Dcoredump=false \ -Ddbus=disabled \ -Delfutils=disabled \ -Denvironment-d=false \ -Dfdisk=disabled \ -Dgcrypt=disabled \ -Dglib=disabled \ -Dgshadow=false \ -Dgnutls=disabled \ -Dhibernate=false \ -Dhostnamed=false \ -Didn=false \ -Dima=false \ -Dinitrd=false \ -Dfirstboot=false \ -Dldconfig=false \ -Dlibcryptsetup=disabled \ -Dlibcurl=disabled \ -Dlibfido2=disabled \ -Dlibidn2=disabled \ -Dlocaled=false \ -Dlogind=false \ -Dlz4=disabled \ -Dmachined=false \ -Dmicrohttpd=disabled \ -Dnetworkd=false \ -Dnss-myhostname=false \ -Dnss-resolve=disabled \ -Dnss-systemd=false \ -Doomd=false \ -Dopenssl=disabled \ -Dp11kit=disabled \ -Dpam=disabled \ -Dpcre2=disabled \ -Dpolkit=disabled \ -Dportabled=false \ -Dpstore=false \ -Dpwquality=disabled \ -Drandomseed=false \ -Dresolve=false \ -Drfkill=false \ -Dseccomp=disabled \ -Dsmack=false \ -Dsysext=false \ -Dtimedated=false \ -Dtimesyncd=false \ -Dtpm=false \ -Dqrencode=disabled \ -Dquotacheck=false \ -Duserdb=false \ -Dutmp=false \ -Dvconsole=false \ -Dwheel-group=false \ -Dxdg-autostart=false \ -Dxkbcommon=disabled \ -Dxz=disabled \ -Dzlib=disabled \ -Dzstd=disabled cd build ninja \ udevadm \ systemd-hwdb \ ata_id \ cdrom_id \ iocost \ mtd_probe \ scsi_id \ v4l_id \ src/udev/udev.pc \ man/udev.conf.5 \ man/systemd.link.5 \ man/hwdb.7 \ man/udev.7 \ man/systemd-hwdb.8 \ man/systemd-udevd.service.8 \ man/udevadm.8 \ man/libudev.3 \ man/udev_device_get_syspath.3 \ man/udev_device_has_tag.3 \ man/udev_device_new_from_syspath.3 \ man/udev_enumerate_add_match_subsystem.3 \ man/udev_enumerate_new.3 \ man/udev_enumerate_scan_devices.3 \ man/udev_list_entry.3 \ man/udev_monitor_filter_update.3 \ man/udev_monitor_new_from_netlink.3 \ man/udev_monitor_receive_device.3 \ man/udev_new.3 \ hwdb.d/60-autosuspend-chromiumos.hwdb \ rules.d/50-udev-default.rules \ rules.d/60-persistent-storage.rules \ rules.d/64-btrfs.rules \ libudev \ src/libudev/libudev.pc case $(uname -m) in aarch64|arm*|ia64|i?86|loongarch64|mips*|x86_64) ninja dmi_memory_id ;; esac cd .. # Install major_ver=${version%%.*} mkdir -p "$PKG/usr/bin" \ "$PKG/usr/lib/systemd" \ "$PKG/usr/lib/udev" \ "$PKG/usr/lib/udev/rules.d" \ "$PKG/usr/lib/udev/hwdb.d" \ "$PKG/usr/lib/pkgconfig" \ "$PKG/usr/lib/systemd/network" \ "$PKG/usr/share/man/man3" \ "$PKG/usr/share/man/man5" \ "$PKG/usr/share/man/man7" \ "$PKG/usr/share/man/man8" \ "$PKG/usr/share/pkgconfig" \ "$PKG/usr/include" \ "$PKG/etc/udev/rules.d" \ "$PKG/etc/udev/hwdb.d" # Shared library install -m755 build/src/shared/libsystemd-shared-${major_ver}.so "$PKG/usr/lib/systemd/" # Main binaries with rpath patchelf --set-rpath "/usr/lib/systemd" build/udevadm patchelf --set-rpath "/usr/lib/systemd" build/systemd-hwdb install -m755 build/udevadm "$PKG/usr/bin/" install -m755 build/systemd-hwdb "$PKG/usr/bin/" # systemd-udevd symlink (expected by some software) ln -s ../../bin/udevadm "$PKG/usr/lib/systemd/systemd-udevd" # udevd symlink so runit and scripts can find it by name ln -s ../lib/systemd/systemd-udevd "$PKG/usr/bin/udevd" # udev helper binaries for h in ata_id cdrom_id iocost mtd_probe scsi_id v4l_id; do patchelf --set-rpath "/usr/lib/systemd" "build/$h" install -m755 "build/$h" "$PKG/usr/lib/udev/" done # dmi_memory_id on supported architectures case $(uname -m) in aarch64|arm*|ia64|i?86|loongarch64|mips*|x86_64) patchelf --set-rpath "/usr/lib/systemd" build/dmi_memory_id install -m755 build/dmi_memory_id "$PKG/usr/lib/udev/" ;; esac # libudev libudev_full=$(ls build/libudev.so.1.* 2>/dev/null | head -1) if [ -n "$libudev_full" ]; then libudev_name=$(basename "$libudev_full") install -m755 "$libudev_full" "$PKG/usr/lib/" ln -s "$libudev_name" "$PKG/usr/lib/libudev.so.1" ln -s libudev.so.1 "$PKG/usr/lib/libudev.so" else install -m755 build/libudev.so.1 "$PKG/usr/lib/" ln -s libudev.so.1 "$PKG/usr/lib/libudev.so" fi # Headers install -m644 src/libudev/libudev.h "$PKG/usr/include/" # Pkgconfig install -m644 build/src/libudev/libudev.pc "$PKG/usr/lib/pkgconfig/" install -m644 build/src/udev/udev.pc "$PKG/usr/share/pkgconfig/" # Rules (skip systemd-specific) for f in build/rules.d/*.rules; do fname=$(basename "$f") case "$fname" in 99-systemd.rules|70-power-switch.rules) continue ;; esac install -m644 "$f" "$PKG/usr/lib/udev/rules.d/" done for f in rules.d/*.rules; do fname=$(basename "$f") [ -f "$PKG/usr/lib/udev/rules.d/$fname" ] && continue case "$fname" in 99-systemd.rules|70-power-switch.rules) continue ;; esac install -m644 "$f" "$PKG/usr/lib/udev/rules.d/" done # rawnix-specific rules install -m644 "$SRC/40-rawnix.rules" "$PKG/usr/lib/udev/rules.d/" # hwdb files for f in build/hwdb.d/*.hwdb; do install -m644 "$f" "$PKG/usr/lib/udev/hwdb.d/" done for f in hwdb.d/*.hwdb; do fname=$(basename "$f") [ -f "$PKG/usr/lib/udev/hwdb.d/$fname" ] && continue install -m644 "$f" "$PKG/usr/lib/udev/hwdb.d/" done # Configuration install -m644 src/udev/udev.conf "$PKG/etc/udev/" # Network link file install -m644 network/99-default.link "$PKG/usr/lib/systemd/network/" # Man pages install -m644 build/man/udev.conf.5 "$PKG/usr/share/man/man5/" install -m644 build/man/systemd.link.5 "$PKG/usr/share/man/man5/" install -m644 build/man/hwdb.7 "$PKG/usr/share/man/man7/" install -m644 build/man/udev.7 "$PKG/usr/share/man/man7/" install -m644 build/man/systemd-hwdb.8 "$PKG/usr/share/man/man8/" install -m644 build/man/udevadm.8 "$PKG/usr/share/man/man8/" install -m644 build/man/systemd-udevd.service.8 "$PKG/usr/share/man/man8/systemd-udevd.8" install -m644 build/man/libudev.3 "$PKG/usr/share/man/man3/" for f in build/man/udev_*.3; do install -m644 "$f" "$PKG/usr/share/man/man3/" done # Helper script install -m755 "$SRC/udev-trigger" "$PKG/usr/bin/" } post_build() { # runit service install -d $PKG/etc/sv/udevd/log printf '%s\n' \ '#!/bin/sh' \ 'exec 2>&1' \ 'mkdir -p /run/udev' \ 'udevadm control --exit 2>/dev/null' \ 'exec udevd' \ > $PKG/etc/sv/udevd/run printf '%s\n' \ '#!/bin/sh' \ 'udevadm control --exit 2>/dev/null' \ 'rm -f /run/udev/control' \ > $PKG/etc/sv/udevd/finish printf '%s\n' \ '#!/bin/sh' \ 'mkdir -p /var/log/udevd' \ 'exec svlogd -tt /var/log/udevd' \ > $PKG/etc/sv/udevd/log/run chmod 755 $PKG/etc/sv/udevd/run chmod 755 $PKG/etc/sv/udevd/finish chmod 755 $PKG/etc/sv/udevd/log/run } signify() { untrusted comment: public key RWTZ9IduCSQ/mL8337TEUinPwT92xFEUpD92hkS7IxcOnzTt9QdpohT3 } # vim: filetype=sh