summaryrefslogblamecommitdiffstats
path: root/builder/dnbd3-rootfs/scripts/build.sh
blob: e811d9320fb3a20d1ba94ae40509a9a2b55205e7 (plain) (tree)
1
2
3
4
5
6
7
8
9


                                                      
                              



                                 
                                                  








                                                 
                            



                                         
                                                







                                 
                                



                                   
                                                      










                                             
                              



                                             
                                                    





                                      
                                                          



                                
                                                                              




              
                                                        



                                        
                                                                            




              
                                  



                                         
                                                                     






















                                                                                                           
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"
}