77 lines
4.5 KiB
Python
77 lines
4.5 KiB
Python
pkgname = "udev"
|
|
pkgver = "259"
|
|
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"
|
|
]
|