Files
udev/source.sh
T

186 lines
6.7 KiB
Bash

# 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"/0001-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/
}