summaryrefslogtreecommitdiffstats
path: root/builder/modules.d/dnbd3-rootfs/helper/build.inc
diff options
context:
space:
mode:
authorJonathan Bauer2020-05-13 11:04:02 +0200
committerJonathan Bauer2020-05-13 11:04:02 +0200
commit1130873aa55c9b0a7e5af48edc44bd6c6fd1f888 (patch)
tree0fcfa186cd631d8d36611b3d4bc509fd38841d51 /builder/modules.d/dnbd3-rootfs/helper/build.inc
parentMerge branch 'centos8' into downloader (diff)
downloadsystemd-init-1130873aa55c9b0a7e5af48edc44bd6c6fd1f888.tar.gz
systemd-init-1130873aa55c9b0a7e5af48edc44bd6c6fd1f888.tar.xz
systemd-init-1130873aa55c9b0a7e5af48edc44bd6c6fd1f888.zip
restructure repo
* remove packager * move everything from builder/* back to root
Diffstat (limited to 'builder/modules.d/dnbd3-rootfs/helper/build.inc')
-rw-r--r--builder/modules.d/dnbd3-rootfs/helper/build.inc291
1 files changed, 0 insertions, 291 deletions
diff --git a/builder/modules.d/dnbd3-rootfs/helper/build.inc b/builder/modules.d/dnbd3-rootfs/helper/build.inc
deleted file mode 100644
index b3f9561c..00000000
--- a/builder/modules.d/dnbd3-rootfs/helper/build.inc
+++ /dev/null
@@ -1,291 +0,0 @@
-#!/usr/bin/env bash
-# -*- coding: utf-8 -*-
-
-declare -rg _mainmoddir="$(dirname "${BASH_SOURCE[0]}")/.." 2> /dev/null
-
-declare -rg _supported_qcow_handlers=("xmount" "kernel")
-build_initialize_components() {
- local qcow_handler="$_QCOW_HANDLER"
- IFS='|' _pattern="^(${_supported_qcow_handlers[*]})$" export _pattern
- if [[ ! "$qcow_handler" =~ $_pattern ]] ; then
- echo "Unknown qcow handler '$qcow_handler' - will built all known."
- echo "Supported handlers: ${_supported_qcow_handlers[*]}"
- fi
- _deps_base_dir="${_mainmoddir}/binaries"
- # We might want to move the "binaries" repos from the dnbd3-rootfs module to main repo one day...
- # TODO check for its existence using modinfo -k <kernel_version>
- if [[ ! -f "${_deps_base_dir}/dnbd3/build/dnbd3.ko" ]] || \
- [[ ! -f "${_deps_base_dir}/dnbd3/build/dnbd3-client" ]]; then
- echo "Could not find dnbd3, building it..."
- if ! CMAKE_FLAGS="-DKERNEL_DIR=${kernel_headers}" \
- build_compile_dnbd3 "${_deps_base_dir}/dnbd3/"; then
- echo "Failed to build dnbd3."
- return 1
- fi
- fi
- # take care of the qcow handler
- if [ -z "$qcow_handler" ] || [ "$qcow_handler" = "xmount" ]; then
- if [[ ! -f "${_deps_base_dir}/xmount/trunk/build/src/xmount" ]]; then
- echo "Could not find xmount binary, building it..."
- if ! build_compile_xmount "${_deps_base_dir}/xmount/"; then
- echo "Failed to build xmount binary."
- return 1
- fi
- fi
- if [[ ! -f "${_deps_base_dir}/qemu-xmount/libxmount_input_qemu.so" ]]; then
- echo "Could not find xmount qemu library, building it..."
- if ! build_compile_qemu_xmount "${_deps_base_dir}/qemu-xmount/"; then
- echo "Failed to build xmount qemu library."
- return 1
- fi
- fi
- fi
- if [ -z "$qcow_handler" ] || [ "$qcow_handler" = "kernel" ]; then
- if [ ! -f "${_deps_base_dir}/kernel-qcow2-linux/drivers/block/loop/loop.ko" ] \
- || [ ! -f "${_deps_base_dir}/kernel-qcow2-linux/drivers/block/loop/loop_file_fmt_qcow.ko" ] \
- || [ ! -f "${_deps_base_dir}/kernel-qcow2-linux/drivers/block/loop/loop_file_fmt_raw.ko" ]; then
- echo "Could not find loop kernel modules, building them..."
- if ! build_compile_kernel_qcow "${_deps_base_dir}/kernel-qcow2-linux"; then
- echo "Failed to build qcow loop kernel modules."
- return 1
- fi
- fi
- if [ ! -f "${_deps_base_dir}/kernel-qcow2-util-linux/losetup" ]; then
- echo "Could not find losetup with qcow2 support, building it..."
- if ! build_compile_losetup_qcow "${_deps_base_dir}/kernel-qcow2-util-linux"; then
- echo "Failed to build losetup with qcow support."
- return 1
- fi
- fi
- fi
-
- # always compile this helper since it does not cost much to do so
- if [[ ! -f "${_deps_base_dir}/systemd-preserve-process-marker/systemd-preserve-process-marker" ]]; then
- echo "Could not find systemd-preserve-process-marker binary, building it ..."
- if ! build_compile_systemd_preserve_process_marker \
- "${_deps_base_dir}/systemd-preserve-process-marker/"; then
- echo "Failed to build systemd-preserve-process-marker"
- return 1
- fi
- fi
- echo "Compilation of dnbd3-rootfs dependencies succeeded."
- return 0
-}
-
-clean_components() {
- local __doc__='
- Removes all compiled kernel specific files.
- NOTE: This method is triggered manually and not supported by dracut itself.
-
- Example:
-
- `clean`
- '
- local _submoddir="${_mainmoddir}/binaries"
- build_clean_xmount "${_submoddir}/xmount/"
- build_clean_qemu_xmount "${_submoddir}/qemu-xmount/"
- build_clean_dnbd3 "${_submoddir}/dnbd3/"
- build_clean_losetup_qcow "${_submoddir}/kernel-qcow2-util-linux"
- build_clean_dnbd3 "${_submoddir}/dnbd3/"
- build_clean_systemd_preserve_process_marker \
- "${_submoddir}/systemd-preserve-process-marker/"
- return 0
-}
-# endregion
-
-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="-std=gnu99" \
- --disable-werror \
- --extra-cflags="-fPIC" \
- --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
- cd build
- # Inject CMAKE_FLAGS as a way to control how cmake is called,
- # e.g. to pass the kernel version
- cmake ${CMAKE_FLAGS} \
- -DBUILD_FUSE_CLIENT=OFF \
- -DBUILD_KERNEL_MODULE=ON \
- -DBUILD_SERVER=OFF \
- -DBUILD_STRESSTEST=OFF \
- ../
- 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_kernel_qcow() {
- pushd "$1"
- # https://lab.ks.uni-freiburg.de/projects/kernel-qcow2/wiki
- if [ -z "$kernel_headers" ]; then
- echo "Kernel header directory not set, ignoring."
- return 1
- fi
- mkdir -p "${kernel_headers}/drivers/block/loop"
- for _file in \
- include/uapi/linux/loop.h \
- drivers/block/Kconfig \
- drivers/block/loop/loop_main.h \
- drivers/block/loop/loop_file_fmt.h \
- drivers/block/loop/Kconfig; do
- cp -f "${_file}" "${kernel_headers}/${_file}"
- done
- (
- set -o errexit
- make -C "$kernel_headers" CONFIG_BLK_DEV_LOOP=m \
- M=$(pwd)/drivers/block/loop loop.ko
- make -C "$kernel_headers" CONFIG_BLK_DEV_LOOP_FILE_FMT_RAW=m \
- M=$(pwd)/drivers/block/loop loop_file_fmt_raw.ko
- make -C "$kernel_headers" CONFIG_BLK_DEV_LOOP_FILE_FMT_QCOW=m \
- M=$(pwd)/drivers/block/loop loop_file_fmt_qcow.ko
- )
- local ret=$?
- popd
- return $ret
-}
-build_clean_kernel_qcow() {
- if [ -z "$kernel_headers" ]; then
- echo "Kernel header directory not set, ignoring."
- return 1
- fi
- pushd "$kernel_headers"
- make -C "$kernel_headers" M=$(pwd)/drivers/block/loop clean
- local ret=$?
- popd
- return $ret
-}
-build_compile_losetup_qcow() {
- pushd "$1"
- (
- set -o errexit
- ./autogen.sh
- ./configure
- make -j losetup
- gcc -I./libsmartcols/src -O2 -o .libs/losetup sys-utils/losetup-losetup.o .libs/libcommon.a .libs/libsmartcols.a
- )
- 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