# This is the source.sh script. It is executed by BPM in a temporary directory when compiling a source package # BPM Expects the source code to be extracted into the automatically created 'source' directory which can be accessed using $BPM_SOURCE # BPM Expects the output files to be present in the automatically created 'output' directory which can be accessed using $BPM_OUTPUT # The prepare function is executed in the root of the temp directory # This function is used for putting downloaded files to the correct location or applying patches prepare() { cd "$BPM_SOURCE" # Patch from Artix to make installation easier patch -Np1 -i "$BPM_WORKDIR"/artix-standalone-install.patch } # The build function is executed in the source directory # This function is used to compile the source code build() { # Replace 'render' group with 'video' and remove 'sgx' group from default udev rules sed -i -e 's/GROUP="render"/GROUP="video"/' -e 's/GROUP="sgx", //' rules.d/50-udev-default.rules.in meson setup --prefix=/usr \ --buildtype=release \ -Dmode=release \ -Dsbat-distro='tide' \ -Dsbat-distro-summary='Tide Linux' \ -Dsbat-distro-pkgname='udev' \ -Dsbat-distro-version="${BPM_PKG_VERSION}" \ -Dlink-udev-shared=false \ -Dlink-boot-shared=false \ -Dsysusers=false \ -Dtmpfiles=false \ -Dhwdb=true \ -Dblkid=enabled \ -Dkmod=enabled \ -Dgshadow=false \ -Ddefault-keymap='us' \ -Dman=enabled \ -Dhtml=disabled \ -Ddns-servers='' \ -Dntp-servers='' \ -Defi=false \ -Dbootloader=disabled \ -Dkernel-install=false \ -Dukify=disabled \ -Dsysvinit-path= \ -Dsysvrcnd-path= \ -Ddefault-dnssec=no \ -Ddefault-llmnr=no \ -Ddefault-mdns=no \ -Dsshconfdir=no \ -Dadm-group=false \ -Danalyze=false \ -Dapparmor=disabled \ -Daudit=disabled \ -Dbacklight=false \ -Dbinfmt=false \ -Dbzip2=disabled \ -Dcoredump=false \ -Ddbus=disabled \ -Delfutils=disabled \ -Denvironment-d=false \ -Dfdisk=disabled \ -Dgcrypt=disabled \ -Dglib=disabled \ -Dgnutls=disabled \ -Dhibernate=false \ -Dhostnamed=false \ -Didn=false \ -Dima=false \ -Dinitrd=false \ -Dfirstboot=false \ -Dldconfig=false \ -Dlibcryptsetup=disabled \ -Dlibcurl=disabled \ -Dlibfido2=disabled \ -Dlibidn=disabled \ -Dlibidn2=disabled \ -Dlibiptc=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 \ -Dstoragetm=false \ -Dsysext=false \ -Dtimedated=false \ -Dtimesyncd=false \ -Dtpm=false \ -Dqrencode=disabled \ -Dquotacheck=false \ -Duserdb=false \ -Dutmp=false \ -Dvconsole=false \ -Dvmspawn=disabled \ -Dwheel-group=false \ -Dxdg-autostart=false \ -Dxkbcommon=disabled \ -Dxz=disabled \ -Dzlib=disabled \ -Dzstd=disabled \ -Dbpf-framework=disabled \ -Dpasswdqc=disabled \ -Dselinux=disabled \ -Dxenctrl=disabled \ -Dlibcryptsetup-plugins=disabled \ -Drepart=disabled \ -Dsysupdate=disabled \ -Dimportd=disabled \ -Dhomed=disabled \ -Dremote=disabled \ -Dnss-mymachines=disabled \ -Dtpm2=disabled \ -Dshellprofiledir=no \ build local targets=( udev:shared_library src/libudev/libudev.pc udevadm {ata_id,cdrom_id,dmi_memory_id,fido_id,iocost,mtd_probe,scsi_id,v4l_id} rules.d/{50-udev-default,60-persistent-storage,64-btrfs}.rules udev-hwdb hwdb.d/60-autosuspend-chromiumos.hwdb src/udev/udev.pc man/{libudev.3,udev.conf.5,hwdb.7,udev.7,udevadm.8,iocost.conf.5,systemd-hwdb.8} ) meson compile -C build "${targets[@]}" } # The package function is executed in the source directory # This function is used to move the compiled files into the output directory package_udev() { meson install -C build --destdir="$BPM_OUTPUT" --no-rebuild --tags udev,udev-devel,hwdb # Move udevd to usr/sbin install -d "$BPM_OUTPUT"/usr/sbin mv "$BPM_OUTPUT"/usr/bin/udevd "$BPM_OUTPUT"/usr/sbin/udevd # Install man pages for manpage in udev.conf.5 iocost.conf.5 udev.7 udevadm.8; do x=${manpage##*.} install -Dm644 build/man/"$manpage" -t "$BPM_OUTPUT"/usr/share/man/man$x/ done install -Dm644 build/man/systemd-hwdb.8 "$BPM_OUTPUT"/usr/share/man/man8/udev-hwdb.8 # Install esvm service install -Dm644 "$BPM_WORKDIR"/udevd.esv "$BPM_OUTPUT"/etc/esvm/services/udevd.esv install -Dm755 "$BPM_WORKDIR"/udevd.sh "$BPM_OUTPUT"/etc/esvm/scripts/udevd.sh # Install BPM hook install -Dm644 "$BPM_WORKDIR"/udev-hwdb.bpmhook "$BPM_OUTPUT"/var/lib/bpm/hooks/udev-hwdb.bpmhook # Install package license install -Dm644 "$BPM_SOURCE"/LICENSE.{GPL2,LGPL2.1} -t "$BPM_OUTPUT"/usr/share/licenses/udev/ } package_libudev() { meson install -C build --destdir="$BPM_OUTPUT" --no-rebuild --tags libudev,libudev-devel # Install libudev header file install -Dm644 "$BPM_SOURCE"/src/libudev/libudev.h "$BPM_OUTPUT"/usr/include/libudev.h # Install man page install -Dm644 build/man/libudev.3 -t "$BPM_OUTPUT"/usr/share/man/man3/ # Install package license install -Dm644 "$BPM_SOURCE"/LICENSE.{GPL2,LGPL2.1} -t "$BPM_OUTPUT"/usr/share/licenses/udev/ }