mirror of
https://git.proxmox.com/git/mirror_zfs.git
synced 2024-12-28 20:09:35 +03:00
154 lines
3.3 KiB
Bash
154 lines
3.3 KiB
Bash
|
#!/usr/bin/env bash
|
||
|
|
||
|
######################################################################
|
||
|
# 4) configure and build openzfs modules
|
||
|
######################################################################
|
||
|
|
||
|
set -eu
|
||
|
|
||
|
function run() {
|
||
|
LOG="/var/tmp/build-stderr.txt"
|
||
|
echo "****************************************************"
|
||
|
echo "$(date) ($*)"
|
||
|
echo "****************************************************"
|
||
|
($@ || echo $? > /tmp/rv) 3>&1 1>&2 2>&3 | stdbuf -eL -oL tee -a $LOG
|
||
|
if [ -f /tmp/rv ]; then
|
||
|
RV=$(cat /tmp/rv)
|
||
|
echo "****************************************************"
|
||
|
echo "exit with value=$RV ($*)"
|
||
|
echo "****************************************************"
|
||
|
echo 1 > /var/tmp/build-exitcode.txt
|
||
|
exit $RV
|
||
|
fi
|
||
|
}
|
||
|
|
||
|
function freebsd() {
|
||
|
export MAKE="gmake"
|
||
|
echo "##[group]Autogen.sh"
|
||
|
run ./autogen.sh
|
||
|
echo "##[endgroup]"
|
||
|
|
||
|
echo "##[group]Configure"
|
||
|
run ./configure \
|
||
|
--prefix=/usr/local \
|
||
|
--with-libintl-prefix=/usr/local \
|
||
|
--enable-pyzfs \
|
||
|
--enable-debug \
|
||
|
--enable-debuginfo
|
||
|
echo "##[endgroup]"
|
||
|
|
||
|
echo "##[group]Build"
|
||
|
run gmake -j$(sysctl -n hw.ncpu)
|
||
|
echo "##[endgroup]"
|
||
|
|
||
|
echo "##[group]Install"
|
||
|
run sudo gmake install
|
||
|
echo "##[endgroup]"
|
||
|
}
|
||
|
|
||
|
function linux() {
|
||
|
echo "##[group]Autogen.sh"
|
||
|
run ./autogen.sh
|
||
|
echo "##[endgroup]"
|
||
|
|
||
|
echo "##[group]Configure"
|
||
|
run ./configure \
|
||
|
--prefix=/usr \
|
||
|
--enable-pyzfs \
|
||
|
--enable-debug \
|
||
|
--enable-debuginfo
|
||
|
echo "##[endgroup]"
|
||
|
|
||
|
echo "##[group]Build"
|
||
|
run make -j$(nproc)
|
||
|
echo "##[endgroup]"
|
||
|
|
||
|
echo "##[group]Install"
|
||
|
run sudo make install
|
||
|
echo "##[endgroup]"
|
||
|
}
|
||
|
|
||
|
function rpm_build_and_install() {
|
||
|
EXTRA_CONFIG="${1:-}"
|
||
|
echo "##[group]Autogen.sh"
|
||
|
run ./autogen.sh
|
||
|
echo "##[endgroup]"
|
||
|
|
||
|
echo "##[group]Configure"
|
||
|
run ./configure --enable-debug --enable-debuginfo $EXTRA_CONFIG
|
||
|
echo "##[endgroup]"
|
||
|
|
||
|
echo "##[group]Build"
|
||
|
run make pkg-kmod pkg-utils
|
||
|
echo "##[endgroup]"
|
||
|
|
||
|
echo "##[group]Install"
|
||
|
run sudo dnf -y --skip-broken localinstall $(ls *.rpm | grep -v src.rpm)
|
||
|
echo "##[endgroup]"
|
||
|
|
||
|
}
|
||
|
|
||
|
function deb_build_and_install() {
|
||
|
echo "##[group]Autogen.sh"
|
||
|
run ./autogen.sh
|
||
|
echo "##[endgroup]"
|
||
|
|
||
|
echo "##[group]Configure"
|
||
|
run ./configure \
|
||
|
--prefix=/usr \
|
||
|
--enable-pyzfs \
|
||
|
--enable-debug \
|
||
|
--enable-debuginfo
|
||
|
echo "##[endgroup]"
|
||
|
|
||
|
echo "##[group]Build"
|
||
|
run make native-deb-kmod native-deb-utils
|
||
|
echo "##[endgroup]"
|
||
|
|
||
|
echo "##[group]Install"
|
||
|
# Do kmod install. Note that when you build the native debs, the
|
||
|
# packages themselves are placed in parent directory '../' rather than
|
||
|
# in the source directory like the rpms are.
|
||
|
run sudo apt-get -y install $(find ../ | grep -E '\.deb$' \
|
||
|
| grep -Ev 'dkms|dracut')
|
||
|
echo "##[endgroup]"
|
||
|
}
|
||
|
|
||
|
# Debug: show kernel cmdline
|
||
|
if [ -f /proc/cmdline ] ; then
|
||
|
cat /proc/cmdline || true
|
||
|
fi
|
||
|
|
||
|
# save some sysinfo
|
||
|
uname -a > /var/tmp/uname.txt
|
||
|
|
||
|
cd $HOME/zfs
|
||
|
export PATH="$PATH:/sbin:/usr/sbin:/usr/local/sbin"
|
||
|
|
||
|
# build
|
||
|
case "$1" in
|
||
|
freebsd*)
|
||
|
freebsd
|
||
|
;;
|
||
|
alma*|centos*)
|
||
|
rpm_build_and_install "--with-spec=redhat"
|
||
|
;;
|
||
|
fedora*)
|
||
|
rpm_build_and_install
|
||
|
;;
|
||
|
debian*|ubuntu*)
|
||
|
deb_build_and_install
|
||
|
;;
|
||
|
*)
|
||
|
linux
|
||
|
;;
|
||
|
esac
|
||
|
|
||
|
# building the zfs module was ok
|
||
|
echo 0 > /var/tmp/build-exitcode.txt
|
||
|
|
||
|
# reset cloud-init configuration and poweroff
|
||
|
sudo cloud-init clean --logs
|
||
|
sync && sleep 2 && sudo poweroff &
|
||
|
exit 0
|