#!/bin/bash #tool/distro specific functions for fetching, building and installing dependencies fetch_source () { # systemd download_untar "$REQUIRED_URL" "src/" sed -i '2 a #undef HAVE_DECL_MEMFD_CREATE\n#define HAVE_DECL_MEMFD_CREATE 1\n#include ' \ "src/systemd-$REQUIRED_VERSION/src/basic/missing_syscall.h" || perror "Could not patch syscall memfd" # now check if the a fix needs to be applied if [ -e "${MODULE_DIR}/systemd-openslx-${REQUIRED_VERSION#systemd-}.patch" ]; then patch -p0 src/systemd-*/src/basic/path-util.h < "${MODULE_DIR}/systemd-openslx-${REQUIRED_VERSION#systemd-}.patch" || perror "Failed to apply openslx systemd patch." else # TODO use the above hint for setting environmenet through /etc/systemd/system.conf pwarning "OpenSLX patch for systemd missing..." fi # libkmod download_untar "$REQUIRED_LIBKMOD_URL" "src/" } build () { #build libkmod pinfo "Building libkmod" cd "${MODULE_WORK_DIR}/src/$REQUIRED_LIBKMOD_VERSION" ./configure || perror "./configure kmod failed." make || perror "kmod make failed." DESTDIR="${MODULE_BUILD_DIR}" make install || perror "kmod make install failed." cd - &> /dev/null #build systemd pinfo "Building systemd" cd "${MODULE_WORK_DIR}/src/systemd-$REQUIRED_VERSION" pinfo "calling configure in ${MODULE_WORK_DIR}/src/systemd-$REQUIRED_VERSION" # Save potentially pre-used paths/flages OLDLDFLAGS="$LDFLAGS" OLDCPPFLAGS="$CPPFLAGS" OLDPKG_CONFIG_PATH="$PKG_CONFIG_PATH" OLDLD_LIBRARY_PATH="$LD_LIBRARY_PATH" export LDFLAGS="$LDFLAGS -L${MODULE_BUILD_DIR}/usr/lib" export CPPFLAGS="-I${MODULE_BUILD_DIR}/usr/include" export PKG_CONFIG_PATH="${MODULE_BUILD_DIR}/usr/lib64/pkgconfig:${MODULE_BUILD_DIR}/usr/lib/pkgconfig" export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:${MODULE_BUILD_DIR}/usr/lib:${MODULE_BUILD_DIR}/usr/lib64" [ ! -e "./configure" ] && ./autogen.sh ./configure \ --exec-prefix=/ \ --disable-manpages \ --enable-split-usr \ --sysconfdir="/etc" \ --runstatedir="/run" \ --enable-gtk-doc-html=no \ --disable-nls \ --disable-microhttpd \ --disable-bootchart \ --disable-quotacheck \ --disable-hostnamed \ --disable-timedated \ --disable-localed \ --disable-coredump \ --disable-keymap \ --disable-hwdb \ --disable-ldconfig \ --disable-networkd \ --disable-resolved \ --disable-timesyncd \ --disable-importd \ --disable-rfkill \ --disable-backlight \ --disable-firstboot \ --disable-nss-systemd \ --without-python \ --enable-blkid \ --enable-acl \ --enable-pam \ --enable-kmod \ --with-pamlibdir="$SYS_PAM_MODULES_PATH" \ || perror "configure failed." pinfo "calling make" make || perror "make failed." pinfo "calling make install" DESTDIR="${MODULE_BUILD_DIR}" make install || perror "make install failed." cd - &> /dev/null # Nonsense in our env rm -f -- "${MODULE_BUILD_DIR}/usr/lib/tmpfiles.d/etc.conf" rm -f -- "${MODULE_BUILD_DIR}/usr/lib/tmpfiles.d/systemd-remote.conf" # Restore used flags/paths: export LDFLAGS="$OLDLDFLAGS" export CPPFLAGS="$OLDCPPFLAGS" export PKG_CONFIG_PATH="$OLDPKG_CONFIG_PATH" export LD_LIBRARY_PATH="$OLDLD_LIBRARY_PATH" } post_copy() { useradd --system --no-create-home "kvm" useradd --system --no-create-home "systemd-journal-upload" }