blob: 100d96a82db1fffb5f7f3e15dc1adc95898d9651 (
plain) (
tree)
|
|
#!/usr/bin/env bash
# shellcheck source=./rebash/core.sh
source "$(dirname "${BASH_SOURCE[0]}")/rebash/core.sh"
core.import logging
build_compile_qemu_xmount() {
# Compiles qemu libxmount.
# NOTE: expects xmount installation under
# $1/../xmount/trunk/build/release_build/
#
# Provides the following file:
# "$1/libxmount_input_qemu.so"
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 -j4 libxmount_input_qemu.so
local ret=$?
popd
return $ret
}
build_clean_qemu_xmount() {
pushd "$1"
make clean
popd
return $?
}
build_compile_xmount() {
# Compiles xmount
#
# Provides the xmount installation under:
# "$1/trunk/build/release_build/"
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 -j4
make install DESTDIR="$destination_directory"
local ret=$?
popd
return $ret
}
build_clean_xmount() {
rm --recursive --force "$1/trunk/build"
}
build_clean_qemu_nbd() {
pushd "$1"
git clean --force -x || make clean
popd
return $?
}
build_compile_qemu_nbd() {
# Downloads and compiles qemu-nbd.
#
# Examples:
#
# >>> build_compile_qemu_nbd path/to/nbd/directory/
# ...
# Provides the following file:
# "$1/qemu-nbd"
logging.info 'Compiling static qemu-nbd binary. This takes a while,' \
'grab a cup of coffee...'
# TODO check if need all, after disabling features
# TODO check dependencies
#su -s /bin/bash nobody
#yaourt --noconfirm -S glib2-static glibc-static pcre-static
#exit
pushd "$(dirname "$1")"
# TODO check what other features can be disabled
# --static
./configure --target-list=x86_64-linux-user \
--python="$(which python2)" --disable-docs --disable-gtk --disable-vnc \
--disable-kvm --disable-libssh2 --enable-user --disable-system \
--disable-fdt --disable-libnfs --disable-glusterfs --disable-libiscsi \
--disable-gcrypt --disable-nettle
make -j4 qemu-nbd
local ret=$?
popd
return $ret
}
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 -j4
popd
return $?
}
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 $?
}
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"
# 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
cmake ../
make -j4 dnbd3 dnbd3-client
popd
##
popd
return $?
}
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 $?
}
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 $?
}
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 $?
}
|