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


                                                      
                             











                                                                 
              
                                                                       
                                             
                                                                   
                                
                                     


                                                                  
                                   




                           
                                                                   

              
                
        
               

                        









                                                                   
              


                                                 
                               

                                        
                               
                              

                                                   
           
                                                 




                      
                                                              
                                           
 
                       









                                               



                                                     
     
              


                                                                          
               


                                                                 

                              
        
               
 
                     
                                                             


                                     


















                              
                                                 






                                                                          

              
                
        
               
 
                                               



                                                    
              
              
                
        
               
 



                                                     
#!/usr/bin/env bash
# -*- coding: utf-8 -*-
# shellcheck source=./rebash/core.sh
source "$(dirname "${BASH_SOURCE[0]}")/rebash/core.sh"
core.import logging

build_compile_qemu_xmount() {
    local __doc__='
    Compiles qemu libxmount.
    NOTE: expects xmount installation under
    $1/../xmount/trunk/build/release_build/

    Provides the following file:
    "$1/libxmount_input_qemu.so"

    Example:

    `build_compile_qemu_xmount /qemu_source /xmount/installation`
    '
    pushd "$1"
    local xmount_installation="../xmount/trunk/build/release_build/usr"
    [ ! -z "$2" ] && xmount_installation="$2"
    ./configure --enable-xmount-input --python="$(which python2)" \
        --extra-cflags="-fPIC" \
        --extra-cflags="-std=gnu99" \
        --extra-cflags="-I${xmount_installation}/include" \
        --extra-cflags="-I${xmount_installation}/include/xmount" \
        --disable-fdt --target-list=""
    make -j libxmount_input_qemu.so
    local ret=$?
    popd
    return $ret
}
build_clean_qemu_xmount() {
    local __doc__='Clean the build of `build_compile_qemu_xmount`.'
    pushd "$1"
    make clean
    local ret=$?
    popd
    return $ret
}
build_compile_xmount() {
    local __doc__='
    Compiles xmount.

    Provides the xmount installation under:
    "$1/trunk/build/release_build/"

    Example:

    `build_compile_xmount /xmount_source /xmount_source/build /usr`
    '
    pushd "$1"

    local destination_directory="./release_build"
    [ ! -z "$2" ] && destination_directory="$2"
    local install_prefix="/usr"
    [ ! -z "$3" ] && install_prefix="$3"

    mkdir --parents trunk/build
    cd trunk/build || return 1
    cmake -DCMAKE_BUILD_TYPE=Release \
        -DCMAKE_INSTALL_PREFIX="$install_prefix" ..
    make -j
    make install DESTDIR="$destination_directory"
    local ret=$?
    popd
    return $ret
}
build_clean_xmount() {
    local __doc__='Clean the build of `build_compile_xmount`.'
    rm --recursive --force "$1/trunk/build"
}
build_compile_dnbd3() {
    local __doc__='
    Compiles dnbd3 kernel module and client.

    Provides the following file:
    "$1/build/dnbd3.ko"
    "$1/build/dnbd3-client"

    Examples:

    `build_compile_dnbd3 path/to/dnbd3/source/`

    Passing the kernel version to cmake:
    `CMAKE_FLAGS="-DKERNEL_VERSION=4.14.6-openslx+" \
        build_compile_dnbd3 path/to/dnbd3/source/`
    '
    pushd "$1"
    # NOTE: The generic way would be: "./build.sh" but this tries to build
    # more than we really need and takes more time.
    mkdir --parents build
    pushd build
    # Inject CMAKE_FLAGS as a way to control how cmake is called,
    # e.g. to pass the kernel version
    cmake ${CMAKE_FLAGS} ../
    make -j dnbd3 dnbd3-client
    local ret=$?
    popd
    return $ret
}
build_clean_dnbd3() {
    local __doc__='Clean the build of `build_compile_dnbd3`.'
    rm --recursive --force "$1/build"
    return $?
}
build_compile_losetup_qcow() {
    pushd "$1"
    {
        set -e
        ./autogen.sh
        ./configure
        make -j losetup
    }
    local ret=$?
    popd
    return $ret
}
build_clean_losetup_qcow() {
    pushd "$1"
    make clean
    local ret=$?
    popd
    return $ret
}
build_compile_systemd_preserve_process_marker() {
    local __doc__='
    Compiles simple c program.

    Examples:

    `build_compile_systemd_preserve_process_marker path/to/program/folder`
    '
    pushd "$1"
    make
    local ret=$?
    popd
    return $ret
}
build_clean_systemd_preserve_process_marker() {
    local __doc__='
    Clean the build of
    `build_compile_systemd_preserve_process_marker`.
    '
    pushd "$1"
    make clean
    local ret=$?
    popd
    return $ret
}
# region vim modline
# vim: set tabstop=4 shiftwidth=4 expandtab:
# vim: foldmethod=marker foldmarker=region,endregion:
# endregion