From 20dc2337a3f642fc6eaf66f45b63d8ad815234b7 Mon Sep 17 00:00:00 2001 From: Jonathan Bauer Date: Fri, 6 Sep 2019 15:32:30 +0200 Subject: [dnbd3-rootfs] more fixes for kqcow --- builder/build-initramfs.sh | 9 ++++----- builder/modules.d/dnbd3-rootfs/helper/build.inc | 8 +++++--- builder/modules.d/dnbd3-rootfs/module-setup.sh | 17 +++++++++-------- 3 files changed, 18 insertions(+), 16 deletions(-) diff --git a/builder/build-initramfs.sh b/builder/build-initramfs.sh index 8e5df3fd..51ae5ddf 100755 --- a/builder/build-initramfs.sh +++ b/builder/build-initramfs.sh @@ -547,6 +547,7 @@ main() { fi logging.info " * kernel headers: $kernel_headers" [ -n "$qcow_handler" ] && logging.info " * qcow2 handler: $qcow_handler" + export _QCOW_HANDLER="$qcow_handler" # endregion # region dependency checks and command line parsing result=0 @@ -693,12 +694,10 @@ main() { elif [[ "$cleanup" == 'yes' ]]; then logging.info 'Removing distribution specific files.' cleanup - else + elif [[ "$initialize" == 'yes' ]]; then . "${_root_dir}/modules.d/dnbd3-rootfs/helper/build.inc" - initialize_components "$qcow_handler" - if [[ "$initialize" == 'yes' ]]; then - exit 0 - fi + build_initialize_components + else logging.info 'Build initramfs.' # NOTE: We deactivate our exception handle since dracut returns "1" if # it is launched with help parameter ("-h" or "--help"). diff --git a/builder/modules.d/dnbd3-rootfs/helper/build.inc b/builder/modules.d/dnbd3-rootfs/helper/build.inc index d441695d..2e202d91 100644 --- a/builder/modules.d/dnbd3-rootfs/helper/build.inc +++ b/builder/modules.d/dnbd3-rootfs/helper/build.inc @@ -5,8 +5,8 @@ declare -rg _mainmoddir="$(dirname "${BASH_SOURCE[0]}")/.." 2> /dev/null declare -rg _supported_qcow_handlers=("xmount" "kernel") -initialize_components() { - local qcow_handler="$1" +build_initialize_components() { + local qcow_handler="$_QCOW_HANDLER" IFS='|' _pattern="^(${_supported_qcow_handlers[*]})$" export _pattern if [[ ! "$qcow_handler" =~ $_pattern ]] ; then logging.warn "Unknown qcow handler '$1' - will built all known." @@ -111,10 +111,12 @@ build_compile_qemu_xmount() { 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" \ --extra-cflags="-fPIC" \ --extra-cflags="-I${xmount_installation}/include" \ --extra-cflags="-I${xmount_installation}/include/xmount" \ - --disable-fdt --target-list="" + --disable-fdt --target-list="" \ + --disable-werror make -j libxmount_input_qemu.so local ret=$? popd diff --git a/builder/modules.d/dnbd3-rootfs/module-setup.sh b/builder/modules.d/dnbd3-rootfs/module-setup.sh index 78860f48..0356aa14 100755 --- a/builder/modules.d/dnbd3-rootfs/module-setup.sh +++ b/builder/modules.d/dnbd3-rootfs/module-setup.sh @@ -94,11 +94,11 @@ check() { `check` ' exceptions.activate - initialize_components "$qcow_handler" + build_initialize_components # NOTE: xmount must be compiled before qemu_xmount local xmount_is_built=true if [[ ! -f "$moddir/binaries/xmount/trunk/build/src/xmount" ]] || - [[ -f "$moddir/binaries/qemu-xmount/libxmount_input_qemu.so" ]]; then + [[ ! -f "$moddir/binaries/qemu-xmount/libxmount_input_qemu.so" ]]; then xmount_is_built=false fi $xmount_is_built || logging.warn \ @@ -167,7 +167,7 @@ installkernel() { # kqcow2 kernel mkdir -p "${initdir}/${block_kmod_dir}/loop" for kmod in "${moddir}/binaries/kernel-qcow2-linux/drivers/block/loop/"*.ko ; do - inst "$kmod" "${block_kmod_dir}/loop/$(basename $file)" + inst "$kmod" "${block_kmod_dir}/loop/$(basename $kmod)" done } install() { @@ -199,10 +199,11 @@ install() { inst_libdir_file 'libewf.so*' fi # kqcow2 losetup - local kernel_qcow2_util_linux_repo="$moddir/binaries/kernel-qcow2-util-linux" - if [[ -f "${kernel_qcow2_repo}/.libs/losetup" ]]; then - inst "${kernel_qcow2_repo}/.libs/losetup" /usr/local/bin/losetup - inst_libdir_file "${losetup_qcow2_dir}/*.so*" + local losetup_qcow2_dir="$moddir/binaries/kernel-qcow2-util-linux" + if [[ -f "${losetup_qcow2_dir}/.libs/losetup" ]]; then + inst "${losetup_qcow2_dir}/.libs/losetup" /usr/local/bin/losetup + mkdir -p "${initdir}/usr/local/lib" + cp -a "${losetup_qcow2_dir}/.libs/"*.so* "${initdir}/usr/local/lib" fi # endregion # region hooks @@ -270,7 +271,7 @@ install() { find \ grep \ insmod \ - losetup lsblk \ + lsblk \ mkfifo mktemp mount mountpoint \ sed sleep sort \ tee touch tr -- cgit v1.2.3-55-g7522