blob: e811d9320fb3a20d1ba94ae40509a9a2b55205e7 (
plain) (
tree)
|
|
source "$(dirname "${BASH_SOURCE[0]}")/rebash/core.sh"
core.import logging
function build_compile_nbd() {
# Downloads and compiles nbd.
#
# Examples:
#
# >>> build_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 build_clean_nbd() {
# Cleans nbd specific generated files
#
# Examples:
#
# >>> build_clean_nbd path/to/nbd/directory/
# ...
# Removes the following file:
# "$1/nbd.ko"
pushd "$1"
make clean
popd
return $?
}
function build_compile_dnbd3() {
# Downloads and compiles dnbd3.
#
# Examples:
#
# >>> build_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 build_clean_dnbd3() {
# Removes generated dnbd3 specific files.
#
# Examples:
#
# >>> build_clean_dnbd3 path/to/dnbd3/directory/
# ...
# Removes the following directory:
# "$1/build"
rm --recursive --force "$1/build"
return $?
}
function build_compile_systemd_preserve_process_marker() {
# Compiles simple c program.
#
# Examples:
#
# >>> build_compile_systemd_preserve_process_marker path/to/program/folder
pushd "$1"
make
popd
return $?
}
function build_clean_systemd_preserve_process_marker() {
# Removes compiled simple c program.
#
# Examples:
#
# >>> build_clean_systemd_preserve_process_marker path/to/program/folder
pushd "$1"
make clean
popd
return $?
}
function build_mount_partition() {
# Mounts a partition at given offset.
#
# Examples:
#
# >>> build_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"
}
|