#!/bin/bash # ###################################################### # Build script for Core 6.0 # # # # See .info for details # ###################################################### tce-load -wli compiletc squashfs-tools git cmake meson coreutils gperf \ libcap-dev util-linux_base-dev util-linux-dev python3.11-dev libgcrypt-dev \ glib2-dev gobject-introspection-dev pciutils usbutils ###################################################### # Configure extension creation parameters # ###################################################### SRCPATH="../../../sources" #https://github.com/systemd/systemd/archive/v257.3/systemd-257.3.tar.gz VERSION="257.3" SRCNAM=systemd-${VERSION}.tar.gz WRKDIR=systemd-${VERSION} VERSION="${VERSION%.*}" BASENAME=udev_base${VERSION} UDEVLIB=udev${VERSION}-lib UDEVEXTRA=udev${VERSION}-extra UDEVV4L=udev${VERSION}_extras_v4l GUDEVLIB=gudev${VERSION}-lib GUDEVGIR=gudev${VERSION}-gir export TMPBASE=/tmp/$BASENAME export TMPUDEV=/tmp/$UDEVLIB TMPUDEVEXTRA=/tmp/$UDEVEXTRA TMPUDEVV4L=/tmp/$UDEVV4L TMPGUDEV=/tmp/$GUDEVLIB TMPGUDEVGIR=/tmp/$GUDEVGIR ###################################################### # Prepare extension creation # ###################################################### # Remove dirs and files left from previous creation rm -r -f $WRKDIR rm -r -f $TMPUDEV rm -r -f $TMPUDEV-dev rm -r -f $TMPBASE rm -r -f $TMPUDEVEXTRA rm -r -f $TMPUDEVV4L rm -r -f $TMPGUDEV rm -r -f $TMPGUDEVGIR # Crete temporary directory mkdir -p $TMPBASE ###################################################### # Compile extension # ###################################################### # Export variables needed for compilation case $(find /lib | grep ld-linux) in *armhf*) export CFLAGS="-Os -pipe -march=armv6zk -mtune=arm1176jzf-s -mfpu=vfp" export CXXFLAGS="-Os -pipe -march=armv6zk -mtune=arm1176jzf-s -mfpu=vfp" BIT32="linux32" ;; *aarch64*) export CFLAGS="-Os -pipe -march=armv8-a+crc -mtune=cortex-a72" export CXXFLAGS="-Os -pipe -march=armv8-a+crc -mtune=cortex-a72" BIT32="" ;; esac export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:/usr/lib/pkgconfig # Unpack source in current directory tar xf ${SRCPATH}/${SRCNAM} # Configure it cd $WRKDIR #Remove two unneeded groups, render and sgx, from the default udev rules: sed -e 's/GROUP="render"/GROUP="video"/' \ -e 's/GROUP="sgx", //' \ -i rules.d/50-udev-default.rules.in #Remove one udev rule requiring a full Systemd installation: sed -i '/systemd-sysctl/s/^/#/' rules.d/99-systemd.rules.in #Adjust the hardcoded paths to network configuration files for the standalone udev installation: sed -e '/NETWORK_DIRS/s/systemd/udev/' \ -i src/libsystemd/sd-network/network-util.h mkdir -p build cd build python3 -m venv pyenv source ./pyenv/bin/activate pip install --upgrade pip setuptools pip install meson ninja pip install Jinja2 # Build with --disable-gudev before glib2 is built. # Build with --disable-introspection until libgudev is built. # The makefile cannot find the libs in the build dir on armvxx ${BIT32} meson setup .. \ --prefix=/usr \ -D optimization=s \ --buildtype=release \ -D mode=release \ -D dev-kvm-mode=0660 \ -D link-udev-shared=false \ -D logind=false \ -D vconsole=false \ -D sysconfdir=/etc \ -D sbindir=/usr/sbin \ -D libexecdir=/usr/lib/udev \ -D bindir=/usr/bin #Get the list of the shipped udev helpers export udev_helpers=$(grep "'name' :" ../src/udev/meson.build | \ awk '{print $3}' | tr -d ",'" | grep -v 'udevadm') #Only build the components needed for udev: ${BIT32} ninja udevadm systemd-hwdb \ $(ninja -n | grep -Eo '(src/(lib)?udev|rules.d|hwdb.d)/[^ ]*') \ $(realpath libudev.so --relative-to .) \ $udev_helpers deactivate # Install in base temp dir install -vm755 -d $TMPUDEV/usr/{bin,sbin} install -vm755 -d {$TMPUDEV/usr/lib,$TMPUDEV/etc}/udev/{hwdb.d,rules.d,network} install -vm755 -d ${TMPUDEV}/usr/local/{lib,share}/pkgconfig install -vm755 -d $TMPUDEV/usr/local/include install -vm755 udevadm ${TMPUDEV}/usr/bin/ install -vm755 systemd-hwdb ${TMPUDEV}/usr/bin/udev-hwdb ln -svfn ../bin/udevadm ${TMPUDEV}/usr/sbin/udevd cp -av libudev.so{,*[0-9]} ${TMPUDEV}/usr/local/lib/ install -vm644 ../src/libudev/libudev.h ${TMPUDEV}/usr/local/include/ install -vm644 src/libudev/*.pc ${TMPUDEV}/usr/local/lib/pkgconfig/ install -vm644 src/udev/*.pc ${TMPUDEV}/usr/local/share/pkgconfig/ install -vm644 ../src/udev/udev.conf ${TMPUDEV}/etc/udev/ install -vm644 rules.d/* ../rules.d/README ${TMPUDEV}/usr/lib/udev/rules.d/ install -vm644 $(find ../rules.d/*.rules \ -not -name '*power-switch*') ${TMPUDEV}/usr/lib/udev/rules.d/ install -vm644 hwdb.d/* ../hwdb.d/{*.hwdb,README} ${TMPUDEV}/usr/lib/udev/hwdb.d/ install -vm755 $udev_helpers ${TMPUDEV}/usr/lib/udev install -vm644 ../network/99-default.link ${TMPUDEV}/usr/lib/udev/network unset udev_helpers $TMPUDEV/usr/bin/udev-hwdb update -r $TMPUDEV cd ../.. rm -rf $WRKDIR # Adjust directory access rigths find $TMPUDEV/ -type d | xargs chmod -v 755; # Strip executables find $TMPUDEV | xargs file | grep ELF | cut -f 1 -d : | ${BIT32} xargs strip --strip-unneeded # Move files to doc extension #mkdir -p $TMPUDEV-doc/usr/local/share #mv $TMPUDEV/usr/local/share/doc $TMPUDEV-doc/usr/local/share #mv $TMPUDEV/usr/local/share/man $TMPUDEV-doc/usr/local/share #mv $TMPUDEV/usr/local/share/gtk-doc $TMPUDEV-doc/usr/local/share # Move files for base mkdir -p ${TMPBASE} mv -f $TMPUDEV/etc $TMPBASE mv -f $TMPUDEV/usr/sbin $TMPBASE mv -f $TMPUDEV/usr/bin $TMPBASE mkdir -p ${TMPBASE}/etc/udev/rules.d mv $TMPUDEV/usr/lib/udev/udevd $TMPBASE/sbin mv $TMPUDEV/usr/lib/udev/rules.d/42* $TMPBASE/etc/udev/rules.d mv $TMPUDEV/usr/lib/udev/rules.d/50* $TMPBASE/etc/udev/rules.d mv $TMPUDEV/usr/lib/udev/rules.d/60-cd* $TMPBASE/etc/udev/rules.d mv $TMPUDEV/usr/lib/udev/rules.d/60-persistent-alsa* $TMPBASE/etc/udev/rules.d mv $TMPUDEV/usr/lib/udev/rules.d/60-persistent-input* $TMPBASE/etc/udev/rules.d mv $TMPUDEV/usr/lib/udev/rules.d/60-persistent-serial* $TMPBASE/etc/udev/rules.d mv $TMPUDEV/usr/lib/udev/rules.d/60-persistent-storage* $TMPBASE/etc/udev/rules.d mv $TMPUDEV/usr/lib/udev/rules.d/80-drivers* $TMPBASE/etc/udev/rules.d mv $TMPUDEV/usr/lib/udev/rules.d/95-udev* $TMPBASE/etc/udev/rules.d # Move files to udev dev extension mkdir -p $TMPUDEV-dev/usr/local/lib mv $TMPUDEV/usr/local/include $TMPUDEV-dev/usr/local mv $TMPUDEV/usr/local/lib/pkgconfig $TMPUDEV-dev/usr/local/lib mv $TMPUDEV/usr/local/share/pkgconfig/* $TMPUDEV-dev/usr/local/lib/pkgconfig rm -rf $TMPUDEV/usr/local/share sed -i 's|/usr|/usr/local|' $TMPUDEV-dev/usr/local/lib/pkgconfig/libudev.pc # Move extras v4l mkdir -p $TMPUDEVV4L/usr/lib/udev mv $TMPUDEV/usr/lib/udev/v4l* $TMPUDEVV4L/usr/lib/udev/ mkdir -p $TMPUDEVV4L/usr/local/share/udev/files mv $TMPUDEV/usr/lib/udev/rules.d/60-persistent-v4l* $TMPUDEVV4L/usr/local/share/udev/files mkdir -p $TMPUDEVV4L/usr/local/tce.installed cp -f udev_extras_v4l $TMPUDEVV4L/usr/local/tce.installed chmod -R 775 $TMPUDEVV4L/usr/local/tce.installed sudo chown -R root:staff $TMPUDEVV4L/usr/local/tce.installed # move udev extras mkdir -p $TMPUDEVEXTRA/usr/lib mv $TMPUDEV/usr/lib/udev $TMPUDEVEXTRA/usr/lib mkdir -p $TMPUDEVEXTRA/usr/local/etc mkdir -p $TMPUDEVEXTRA/usr/local/tce.installed cp udev-extra.conf $TMPUDEVEXTRA/usr/local/etc cp udev-extra $TMPUDEVEXTRA/usr/local/tce.installed chmod -R 775 $TMPUDEVEXTRA/usr/local/tce.installed sudo chown -R root:staff $TMPUDEVEXTRA/usr/local/tce.installed rm -rf $TMPUDEV/usr/lib ###For now remove link of .so to so.1 so the old udev-lib takes priority rm -f $TMPUDEV/usr/local/lib/*.so ################################################### # Create base extension in temp dir # ################################################### EXTLIST="udev${VERSION}-lib udev${VERSION}-lib-dev udev${VERSION}-extra udev${VERSION}_extras_v4l" for i in $EXTLIST;do TMPDIR=/tmp/$i cd $TMPDIR cd .. mksquashfs $TMPDIR $i.tcz cd $TMPDIR find * -not -type d > $i.tcz.list mv ../$i.tcz . # Create md5 file md5sum $i.tcz > $i.tcz.md5.txt echo $VERSION > $i.tcz.ver # Cleanup temp directory rm -r -f usr rm -r -f lib rm -r -r ext done cd $TMPBASE tar zcvf $TMPBASE.tar.gz * mv $TMPBASE.tar.gz . rm -rf bin rm -rf etc rm -rf sbin