From d9c82ead8e9e61ce5f3b4c7ecae16ca418eddc32 Mon Sep 17 00:00:00 2001 From: Jonathan Bauer Date: Wed, 24 Jul 2019 11:36:06 +0200 Subject: [builder] introduce --kernel-headers|-h to specify the path to kernel headers to build dnbd3 against. Also remove hacky patch and just directly use dnbd3's KERNEL_DIR CMAKE flag. --- builder/build-initramfs.sh | 27 ++++++++++++++++++++------- 1 file changed, 20 insertions(+), 7 deletions(-) diff --git a/builder/build-initramfs.sh b/builder/build-initramfs.sh index aefc6544..7d56b787 100755 --- a/builder/build-initramfs.sh +++ b/builder/build-initramfs.sh @@ -351,6 +351,17 @@ parse_command_line() { fi shift ;; + -h|--kernel-headers) + local given_argument="$1" + shift + kernel_headers="$1" + if [ -z "$kernel_headers" ]; then + logging.critical \ + "Error with given option \"$given_argument\": This option needs the path to the kernel headers." + return 1 + fi + shift + ;; -) shift while [[ "$1" =~ ^.+$ ]]; do @@ -495,9 +506,7 @@ initialize_dnbd3_rootfs_module() { if [[ ! -f "${_deps_base_dir}/dnbd3/build/dnbd3.ko" ]] || \ [[ ! -f "${_deps_base_dir}/dnbd3/build/dnbd3-client" ]]; then logging.info "Could not find dnbd3, building it..." - # fallback to running kernel if the kernel version was not - # specified as the dracut argument '--kver' - if ! CMAKE_FLAGS="-DKERNEL_VERSION=${kernel_version}" \ + if ! CMAKE_FLAGS="-DKERNEL_DIR=${kernel_headers}" \ build_compile_dnbd3 "${_deps_base_dir}/dnbd3/"; then logging.error "Failed to build dnbd3." return 1 @@ -552,13 +561,17 @@ main() { if [ -z "$kernel_version" ]; then kernel_version="$(uname -r)" fi + # similar for kernel headers needed to compile dnbd3 against. + if [ -z "$kernel_headers" ]; then + kernel_headers="/lib/modules/${kernel_version}/build" + fi + if [ ! -f "${kernel_headers}/Makefile" ]; then + logging.critical 'Missing core dependency "linux-headers" for version to compile against given or current kernel.' + fi + logging.info "Building for kernel version: ${kernel_version}." # endregion # region dependency checks and command line parsing - logging.info "Building for kernel version: ${kernel_version}." result=0 - if ! [ -f "/lib/modules/${kernel_version}/build/Makefile" ]; then - logging.critical 'Missing core dependency "linux-headers" for version to compile against given or current kernel.' - fi dependency_check core dependencies utils_dependency_check program || \ result=$? dependency_check core shared_library_pattern_dependencies \ -- cgit v1.2.3-55-g7522