From 53074916a2ccb2dad8ae1fc7eec7a112348b179e Mon Sep 17 00:00:00 2001 From: Jonathan Bauer Date: Tue, 3 Sep 2019 13:31:11 +0200 Subject: initial support for different qcow handlers --- builder/modules.d/dnbd3-rootfs/module-setup.sh | 60 ++++++++++++++------------ 1 file changed, 33 insertions(+), 27 deletions(-) (limited to 'builder/modules.d/dnbd3-rootfs/module-setup.sh') diff --git a/builder/modules.d/dnbd3-rootfs/module-setup.sh b/builder/modules.d/dnbd3-rootfs/module-setup.sh index 046732df..4e5f037f 100755 --- a/builder/modules.d/dnbd3-rootfs/module-setup.sh +++ b/builder/modules.d/dnbd3-rootfs/module-setup.sh @@ -5,7 +5,7 @@ source "$(dirname "${BASH_SOURCE[0]}")/scripts/rebash/core.sh" core.import exceptions core.import logging core.import utils -core.import "$(core_abs_path "$(dirname "${BASH_SOURCE[0]}")/scripts/build.sh")" +core.import "$(core_abs_path "$(dirname "${BASH_SOURCE[0]}")/helper/build.inc")" # endregion # region forward "build-initrfams.sh" logging configuration if present. _parse_dracut_args() { @@ -68,6 +68,8 @@ _parse_dracut_args() { _debug=0 _parse_dracut_args ${dracut_args[*]} || _debug=$? # endregion +# region initialize function to build required components + clean() { local __doc__=' Removes all compiled kernel specific files. @@ -77,13 +79,11 @@ clean() { `clean` ' - build_clean_xmount "$moddir/binaries/xmount/" - build_clean_qemu_xmount "$moddir/binaries/qemu-xmount/" - build_clean_dnbd3 "$moddir/binaries/dnbd3/" - build_clean_systemd_preserve_process_marker \ - "$moddir/binaries/systemd-preserve-process-marker/" + . "${moddir}/helper/build.inc" + clean_components return 0 } +# endregion # region dracut plugin api check() { local __doc__=' @@ -94,21 +94,15 @@ check() { `check` ' exceptions.activate + initialize_components # NOTE: xmount must be compiled before qemu_xmount local xmount_is_built=true - if [[ ! -f "$moddir/binaries/xmount/trunk/build/src/xmount" ]]; then - if ! build_compile_xmount "$moddir/binaries/xmount/"; then + if [[ ! -f "$moddir/binaries/xmount/trunk/build/src/xmount" ]] || + [[ -f "$moddir/binaries/qemu-xmount/libxmount_input_qemu.so" ]]; then xmount_is_built=false - fi - fi - if $xmount_is_built && [[ \ - ! -f "$moddir/binaries/qemu-xmount/libxmount_input_qemu.so" \ - ]]; then - build_compile_qemu_xmount "$moddir/binaries/qemu-xmount/" || \ - xmount_is_built=false fi $xmount_is_built || logging.warn \ - "Compiling \"xmount\" failed -> No support for container files (only raw images)." + "Compiling \"xmount\" failed." if [[ ! -f "$moddir/binaries/dnbd3/build/dnbd3.ko" ]] || \ [[ ! -f "$moddir/binaries/dnbd3/build/dnbd3-client" ]] @@ -153,7 +147,7 @@ depends() { ' #local network_module="network" #dracut_module_included "systemd-initrd" && network_module="systemd-networkd-ext" - echo base bash kernel-modules shutdown slx-dmsetup slx-tools slx-network # "$network_module" + echo base bash kernel-modules shutdown slx-dmsetup slx-network # "$network_module" } installkernel() { local __doc__=' @@ -164,6 +158,7 @@ installkernel() { `installkernel` ' + # TODO kqcow2 stuff inst "$moddir/binaries/dnbd3/build/dnbd3.ko" \ /usr/lib/modules/current/extra/dnbd3.ko } @@ -183,16 +178,27 @@ install() { # xmount local \ xmount_installation="$moddir/binaries/xmount/trunk/build/release_build" - inst "${xmount_installation}/usr/bin/xmount" /usr/bin/xmount - for file in ${xmount_installation}/usr/lib/xmount/*; do - inst "$file" /usr/lib/xmount/"$(basename "$file")" - done - inst "$moddir/binaries/qemu-xmount/libxmount_input_qemu.so" \ - /usr/lib/xmount/libxmount_input_qemu.so - # HACK fix missing libraries for some xmount input libs - # TODO copy the dependencies using dracut functions... - inst_libdir_file 'libafflib.so*' - inst_libdir_file 'libewf.so*' + if [[ -f "${xmount_installation}/usr/bin/xmount" ]]; then + inst "${xmount_installation}/usr/bin/xmount" /usr/bin/xmount + for file in ${xmount_installation}/usr/lib/xmount/*; do + inst "$file" /usr/lib/xmount/"$(basename "$file")" + done + inst "$moddir/binaries/qemu-xmount/libxmount_input_qemu.so" \ + /usr/lib/xmount/libxmount_input_qemu.so + # HACK fix missing libraries for some xmount input libs + # TODO copy the dependencies using dracut functions... + inst_libdir_file 'libafflib.so*' + inst_libdir_file 'libewf.so*' + fi + # kqcow2 + local kernel_qcow2_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 + for lib in "${kernel_qcow2_repo}/"*.so*; do + # TODO check inst_libdir_file + inst "$file" "/usr/lib/$(basename $file)" + done + fi # endregion # region hooks inst_hook cmdline 00 "$moddir/hooks/enable-sysrq.sh" -- cgit v1.2.3-55-g7522