#!/usr/bin/env bash # -*- coding: utf-8 -*- # shellcheck source=./rebash/core.sh source "$(dirname "${BASH_SOURCE[0]}")/rebash/core.sh" core.import logging build_compile_qemu_xmount() { local __doc__=' Compiles qemu libxmount. NOTE: expects xmount installation under $1/../xmount/trunk/build/release_build/ Provides the following file: "$1/libxmount_input_qemu.so" Example: `build_compile_qemu_xmount /qemu_source /xmount/installation` ' pushd "$1" local xmount_installation="../xmount/trunk/build/release_build/usr" [ ! -z "$2" ] && xmount_installation="$2" ./configure --enable-xmount-input --python="$(which python2)" \ --extra-cflags="-fPIC" \ --extra-cflags="-std=gnu99" \ --extra-cflags="-I${xmount_installation}/include" \ --extra-cflags="-I${xmount_installation}/include/xmount" \ --disable-fdt --target-list="" make -j libxmount_input_qemu.so local ret=$? popd return $ret } build_clean_qemu_xmount() { local __doc__='Clean the build of `build_compile_qemu_xmount`.' pushd "$1" make clean local ret=$? popd return $ret } build_compile_xmount() { local __doc__=' Compiles xmount. Provides the xmount installation under: "$1/trunk/build/release_build/" Example: `build_compile_xmount /xmount_source /xmount_source/build /usr` ' pushd "$1" local destination_directory="./release_build" [ ! -z "$2" ] && destination_directory="$2" local install_prefix="/usr" [ ! -z "$3" ] && install_prefix="$3" mkdir --parents trunk/build cd trunk/build || return 1 cmake -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_INSTALL_PREFIX="$install_prefix" .. make -j make install DESTDIR="$destination_directory" local ret=$? popd return $ret } build_clean_xmount() { local __doc__='Clean the build of `build_compile_xmount`.' rm --recursive --force "$1/trunk/build" } build_compile_dnbd3() { local __doc__=' Compiles dnbd3 kernel module and client. Provides the following file: "$1/build/dnbd3.ko" "$1/build/dnbd3-client" Examples: `build_compile_dnbd3 path/to/dnbd3/source/` Passing the kernel version to cmake: `CMAKE_FLAGS="-DKERNEL_VERSION=4.14.6-openslx+" \ build_compile_dnbd3 path/to/dnbd3/source/` ' pushd "$1" # NOTE: The generic way would be: "./build.sh" but this tries to build # more than we really need and takes more time. mkdir --parents build pushd build # Inject CMAKE_FLAGS as a way to control how cmake is called, # e.g. to pass the kernel version cmake ${CMAKE_FLAGS} ../ make -j dnbd3 dnbd3-client local ret=$? popd return $ret } build_clean_dnbd3() { local __doc__='Clean the build of `build_compile_dnbd3`.' rm --recursive --force "$1/build" return $? } build_compile_losetup_qcow() { pushd "$1" { set -e ./autogen.sh ./configure make -j losetup } local ret=$? popd return $ret } build_clean_losetup_qcow() { pushd "$1" make clean local ret=$? popd return $ret } build_compile_systemd_preserve_process_marker() { local __doc__=' Compiles simple c program. Examples: `build_compile_systemd_preserve_process_marker path/to/program/folder` ' pushd "$1" make local ret=$? popd return $ret } build_clean_systemd_preserve_process_marker() { local __doc__=' Clean the build of `build_compile_systemd_preserve_process_marker`. ' pushd "$1" make clean local ret=$? popd return $ret } # region vim modline # vim: set tabstop=4 shiftwidth=4 expandtab: # vim: foldmethod=marker foldmarker=region,endregion: # endregion