diff options
| author | jandob | 2015-12-03 17:04:51 +0100 |
|---|---|---|
| committer | jandob | 2015-12-03 17:04:51 +0100 |
| commit | 622f78da53d56b62f6914c2ac3053552976dbc58 (patch) | |
| tree | b3f34d138f131e918676b22620d3a65a6d1fc455 /builder | |
| parent | update rebash (diff) | |
| parent | Provide cleanup api. (diff) | |
| download | systemd-init-622f78da53d56b62f6914c2ac3053552976dbc58.tar.gz systemd-init-622f78da53d56b62f6914c2ac3053552976dbc58.tar.xz systemd-init-622f78da53d56b62f6914c2ac3053552976dbc58.zip | |
Merge branch 'master' of git.openslx.org:openslx-ng/systemd-init
Diffstat (limited to 'builder')
| -rwxr-xr-x | builder/dnbd3-rootfs/module-setup.sh | 24 | ||||
| -rw-r--r-- | builder/dnbd3-rootfs/scripts/build-functions.sh | 131 | ||||
| -rw-r--r-- | builder/dnbd3-rootfs/scripts/utils.sh | 3 |
3 files changed, 144 insertions, 14 deletions
diff --git a/builder/dnbd3-rootfs/module-setup.sh b/builder/dnbd3-rootfs/module-setup.sh index df253bb7..9ee50ce4 100755 --- a/builder/dnbd3-rootfs/module-setup.sh +++ b/builder/dnbd3-rootfs/module-setup.sh @@ -1,12 +1,9 @@ #!/bin/bash clean() { - source "$moddir/scripts/utils.sh" - source "$(dirname "${BASH_SOURCE[0]}")/scripts/rebash/core.sh" - core.import logging - core.import exceptions - - exceptions.init + # NOTE: This method is currently triggered manually and not supported by + # dracut itself. + core_import "$moddir/scripts/build-functions.sh" if [[ -f "$moddir/binaries/nbd/nbd.ko" ]]; then utils_clean_nbd "$moddir/binaries/nbd/" @@ -21,12 +18,17 @@ clean() { } check() { - source "$moddir/scripts/utils.sh" - source "$(dirname "${BASH_SOURCE[0]}")/scripts/rebash/core.sh" - core.import logging - core.import exceptions + source "$moddir/scripts/rebash/core.sh" + # TODO migrate from "core_import" to "core.import" when rebash is fixed. + core_import exceptions + + core_import "$moddir/scripts/build-functions.sh" + + # TODO set log level via dracut logging options + logging_set_log_level 'info' + logging_set_commands_log_level 'info' - exceptions.init + # TODO uncomment if rebash is fixed: exceptions_init if [[ ! -f "$moddir/binaries/nbd/nbd.ko" ]]; then utils_compile_nbd "$moddir/binaries/nbd/" diff --git a/builder/dnbd3-rootfs/scripts/build-functions.sh b/builder/dnbd3-rootfs/scripts/build-functions.sh new file mode 100644 index 00000000..3a56d32b --- /dev/null +++ b/builder/dnbd3-rootfs/scripts/build-functions.sh @@ -0,0 +1,131 @@ +source "$(dirname "${BASH_SOURCE[0]}")/rebash/core.sh" +core.import logging + +function utils_compile_nbd() { + # Downloads and compiles nbd. + # + # Examples: + # + # >>> utils_compile_nbd path/to/nbd/directory/ + # ... + # Provides the following file: + # "$1/nbd.ko" + pushd "$1" + logging.info 'Compile the nbd kernel module.' + make + popd + return $? +} +function utils_clean_nbd() { + # Cleans nbd specific generated files + # + # Examples: + # + # >>> utils_clean_nbd path/to/nbd/directory/ + # ... + # Removes the following file: + # "$1/nbd.ko" + pushd "$1" + make clean + popd + return $? +} +function utils_compile_dnbd3() { + # Downloads and compiles dnbd3. + # + # Examples: + # + # >>> utils_compile_dnbd3 path/to/dnbd3/directory/ + # ... + # Provides the following file: + # "$1/build/dnbd3.ko" + pushd "$1/.." + rm --recursive --force "$1" + git clone git://git.openslx.org/dnbd3.git + cd dnbd3 + ./build.sh + popd + return $? +} +function utils_clean_dnbd3() { + # Removes generated dnbd3 specific files. + # + # Examples: + # + # >>> utils_clean_dnbd3 path/to/dnbd3/directory/ + # ... + # Removes the following directory: + # "$1/build" + rm --recursive --force "$1/build" + return $? +} +function utils_compile_systemd_preserve_process_marker() { + # Compiles simple c program. + # + # Examples: + # + # >>> utils_compile_systemd_preserve_process_marker path/to/program/folder + pushd "$1" + make + popd + return $? +} +function utils_clean_systemd_preserve_process_marker() { + # Removes compiled simple c program. + # + # Examples: + # + # >>> utils_clean_systemd_preserve_process_marker path/to/program/folder + pushd "$1" + make clean + popd + return $? +} +function utils_dependency_check() { + # This function check if all given dependencies are present. + # + # Examples: + # + # >>> utils_dependency_check "mkdir pacstrap mktemp" + # ... + local dependenciesToCheck="$1" + local result=0 + local dependency + for dependency in ${dependenciesToCheck[*]}; do + if ! hash "$dependency" 2>/dev/null; then + build_initramfs_log 'critical' \ + "Needed dependency \"$dependency\" isn't available." + result=1 + fi + done + return $result +} +function utils_mount_partition() { + # Mounts a partition at given offset. + # + # Examples: + # + # >>> utils_mount_partition /dev/DEVICE_NAME PARTITION_IDENTIFIER + # ... + local device="$1" + local partition_identifier="$2" + local loop_device="$(losetup --find)" + + local sector_size="$(blockdev --getbsz "$device")" + local partition_info="(partx --raw --noheadings --output START,NAME,UUID \ + "$device" 2>/dev/null| grep part)" + local offset_sectors="$(echo "$partition_identifier" | \ + cut --delimiter=' ' --fields=1)" + if [ -z "$offset_sectors" ]; then + logging.warn "could not find partition with identifier \"$partition_identifier\" on device $device" + return 1 + fi + # NOTE: Could overflow on 32bit systems + # logging.warn "$(("$offset_sectors"*512))" + local offset_bytes="$(echo | awk -v x="$offset_sectors" -v y="$sector_size" '{print x * y}')" + + # NOTE: Test if mount works directly (problem with btrfs device id). + # mount --verbose --options loop,offset="$offset_bytes" "$device" "$mount_point" + losetup --verbose --offset "$offset_bytes" "$loop_device" "$device" + echo "$loop_device" +} diff --git a/builder/dnbd3-rootfs/scripts/utils.sh b/builder/dnbd3-rootfs/scripts/utils.sh index 599581a9..3a56d32b 100644 --- a/builder/dnbd3-rootfs/scripts/utils.sh +++ b/builder/dnbd3-rootfs/scripts/utils.sh @@ -1,8 +1,5 @@ source "$(dirname "${BASH_SOURCE[0]}")/rebash/core.sh" core.import logging -core.import exceptions - -exceptions.init function utils_compile_nbd() { # Downloads and compiles nbd. |
