pkgname = "udev" pkgver = "258.1" lfs_udev_ver = "20230818" source = f"https://github.com/systemd/systemd/archive/v{pkgver}/systemd-{pkgver}.tar.gz" # ok builddir = f"/tmp/fempkg/build/{pkgname}/systemd-{pkgver}" fembuilddir = f"/tmp/fempkg/build/{pkgname}" outputdir = "/home/gabry/lfs-repo/binpkg" manifestdir = "/home/gabry/lfs-repo/manifests" destdir = f"{fembuilddir}/DESTDIR" exports = f"export udev_helpers=$(grep \"'name' :\" ../src/udev/meson.build | awk '{{print $3}}' | tr -d \",'\" | grep -v 'udevadm')" deps = [] build = [ # Extract f"mkdir -p {fembuilddir} && cd {fembuilddir} && tar -xvf /var/lib/fempkg/pkgs/systemd-{pkgver}.tar.gz && wget https://anduin.linuxfromscratch.org/LFS/udev-lfs-{lfs_udev_ver}.tar.xz", # 64-bit build f"cd {builddir} && sed -e 's/GROUP=\"render\"/GROUP=\"video\"/' -e 's/GROUP=\"sgx\", //' -i rules.d/50-udev-default.rules.in", f"cd {builddir} && sed -i '/systemd-sysctl/s/^/#/' rules.d/99-systemd.rules.in", f"cd {builddir} && sed -e '/NETWORK_DIRS/s/systemd/udev/' -i src/libsystemd/sd-network/network-util.h", f"cd {builddir} && mkdir -pv build && cd build && meson setup .. --prefix=/usr --buildtype=release -D gcrypt=false -D mode=release -D " f"dev-kvm-mode=0660 -D link-udev-shared=false -D logind=false -D pam=false -D seccomp=false -D vconsole=false", f"cd {builddir}/build && {exports} && ninja udevadm systemd-hwdb $(ninja -n | grep -Eo '(src/(lib)?udev|rules.d|hwdb.d)/[^ ]*') " f"$(realpath libudev.so --relative-to .) $udev_helpers", f"""cd {builddir}/build && {exports} && install -vm755 -d {destdir}{{/usr/lib,/etc}}/udev/{{hwdb.d,rules.d,network}} install -vm755 -d {destdir}/usr/{{lib,share}}/pkgconfig install -vm755 udevadm {destdir}/usr/bin/ install -vm755 systemd-hwdb {destdir}/usr/bin/udev-hwdb ln -svfn ../bin/udevadm {destdir}/usr/sbin/udevd cp -av libudev.so{{,*[0-9]}} {destdir}/usr/lib/ install -vm644 ../src/libudev/libudev.h {destdir}/usr/include/ install -vm644 src/libudev/*.pc {destdir}/usr/lib/pkgconfig/ install -vm644 src/udev/*.pc {destdir}/usr/share/pkgconfig/ install -vm644 ../src/udev/udev.conf {destdir}/etc/udev/ install -vm644 rules.d/* ../rules.d/README {destdir}/usr/lib/udev/rules.d/ install -vm644 $(find ../rules.d/*.rules \\ -not -name '*power-switch*') {destdir}/usr/lib/udev/rules.d/ install -vm644 hwdb.d/* ../hwdb.d/{{*.hwdb,README}} {destdir}/usr/lib/udev/hwdb.d/ install -vm755 $udev_helpers {destdir}/usr/lib/udev install -vm644 ../network/99-default.link {destdir}/usr/lib/udev/network""", f"cd {builddir}/build && tar -xvf ../../udev-lfs-{lfs_udev_ver}.tar.xz", f"cd {builddir}/build && {exports} && make -f udev-lfs-{lfs_udev_ver}/Makefile.lfs install", f"cd {builddir}/build && rm -rf *", #32-bit build f"cd {builddir}/build && PKG_CONFIG_PATH=\"/usr/lib32/pkgconfig\" CC=\"gcc -m32 -march=i686\" CXX=\"g++ -m32 -march=i686\" LANG=en_US.UTF-8 " f"meson setup --prefix=/usr --buildtype=release -Dpam=false -Dseccomp=false -Dmode=release -Ddev-kvm-mode=0660 -Dgcrypt=false -Dlink-udev-shared=false -Dlogind=false -Dvconsole=false ..", f"cd {builddir}/build && ninja $(grep -o -E \"^build (src/libudev|src/udev)[^:]*\" build.ninja | awk '{{ print $2 }}') " f"$(realpath libudev.so --relative-to .)", f"cd {builddir}/build && mkdir -pv {destdir}/usr/lib32/pkgconfig && cp -av libudev.so{{,*[0-9]}} {destdir}/usr/lib32/ && " f"sed -e \"s;/usr/lib;&32;g\" src/libudev/libudev.pc > {destdir}/usr/lib32/pkgconfig/libudev.pc", f"install -v -d -m755 {destdir}/usr/share/licenses/{pkgname}/", f"install -v -m644 {builddir}/LICENSE.GPL2 {destdir}/usr/share/licenses/{pkgname}/LICENSE.GPL2", f"install -v -m644 {builddir}/LICENSE.LGPL2.1 {destdir}/usr/share/licenses/{pkgname}/LICENSE.LGPL2.1", f"install -v -m644 {builddir}/LICENSES/Linux-syscall-note.txt {destdir}/usr/share/licenses/{pkgname}/Linux-syscall-note.txt", f"install -v -m644 {builddir}/LICENSES/MIT.txt {destdir}/usr/share/licenses/{pkgname}/MIT.txt", # Make tarball + manifests f"mkdir -p {outputdir} && cd {destdir} && tar --transform 's|^\\.||' -I zstd -cf {outputdir}/{pkgname}-{pkgver}.tar.zst .", f"mkdir -p {manifestdir} && tar -tf {outputdir}/{pkgname}-{pkgver}.tar.zst | grep -v '/$' > {manifestdir}/{pkgname}.txt", # Cleanup f"rm -rf {fembuilddir}" ] triggers = [ f"cd /tmp && udev-hwdb update" ]