17a7741afSMartin Matuska#!/usr/bin/env bash 27a7741afSMartin Matuska 37a7741afSMartin Matuska###################################################################### 47a7741afSMartin Matuska# 4) configure and build openzfs modules 57a7741afSMartin Matuska###################################################################### 67a7741afSMartin Matuska 77a7741afSMartin Matuskaset -eu 87a7741afSMartin Matuska 97a7741afSMartin Matuskafunction run() { 107a7741afSMartin Matuska LOG="/var/tmp/build-stderr.txt" 117a7741afSMartin Matuska echo "****************************************************" 127a7741afSMartin Matuska echo "$(date) ($*)" 137a7741afSMartin Matuska echo "****************************************************" 147a7741afSMartin Matuska ($@ || echo $? > /tmp/rv) 3>&1 1>&2 2>&3 | stdbuf -eL -oL tee -a $LOG 157a7741afSMartin Matuska if [ -f /tmp/rv ]; then 167a7741afSMartin Matuska RV=$(cat /tmp/rv) 177a7741afSMartin Matuska echo "****************************************************" 187a7741afSMartin Matuska echo "exit with value=$RV ($*)" 197a7741afSMartin Matuska echo "****************************************************" 207a7741afSMartin Matuska echo 1 > /var/tmp/build-exitcode.txt 217a7741afSMartin Matuska exit $RV 227a7741afSMartin Matuska fi 237a7741afSMartin Matuska} 247a7741afSMartin Matuska 257a7741afSMartin Matuskafunction freebsd() { 267a7741afSMartin Matuska export MAKE="gmake" 277a7741afSMartin Matuska echo "##[group]Autogen.sh" 287a7741afSMartin Matuska run ./autogen.sh 297a7741afSMartin Matuska echo "##[endgroup]" 307a7741afSMartin Matuska 317a7741afSMartin Matuska echo "##[group]Configure" 327a7741afSMartin Matuska run ./configure \ 337a7741afSMartin Matuska --prefix=/usr/local \ 347a7741afSMartin Matuska --with-libintl-prefix=/usr/local \ 357a7741afSMartin Matuska --enable-pyzfs \ 367a7741afSMartin Matuska --enable-debug \ 377a7741afSMartin Matuska --enable-debuginfo 387a7741afSMartin Matuska echo "##[endgroup]" 397a7741afSMartin Matuska 407a7741afSMartin Matuska echo "##[group]Build" 417a7741afSMartin Matuska run gmake -j$(sysctl -n hw.ncpu) 427a7741afSMartin Matuska echo "##[endgroup]" 437a7741afSMartin Matuska 447a7741afSMartin Matuska echo "##[group]Install" 457a7741afSMartin Matuska run sudo gmake install 467a7741afSMartin Matuska echo "##[endgroup]" 477a7741afSMartin Matuska} 487a7741afSMartin Matuska 497a7741afSMartin Matuskafunction linux() { 507a7741afSMartin Matuska echo "##[group]Autogen.sh" 517a7741afSMartin Matuska run ./autogen.sh 527a7741afSMartin Matuska echo "##[endgroup]" 537a7741afSMartin Matuska 547a7741afSMartin Matuska echo "##[group]Configure" 557a7741afSMartin Matuska run ./configure \ 567a7741afSMartin Matuska --prefix=/usr \ 577a7741afSMartin Matuska --enable-pyzfs \ 587a7741afSMartin Matuska --enable-debug \ 597a7741afSMartin Matuska --enable-debuginfo 607a7741afSMartin Matuska echo "##[endgroup]" 617a7741afSMartin Matuska 627a7741afSMartin Matuska echo "##[group]Build" 637a7741afSMartin Matuska run make -j$(nproc) 647a7741afSMartin Matuska echo "##[endgroup]" 657a7741afSMartin Matuska 667a7741afSMartin Matuska echo "##[group]Install" 677a7741afSMartin Matuska run sudo make install 687a7741afSMartin Matuska echo "##[endgroup]" 697a7741afSMartin Matuska} 707a7741afSMartin Matuska 717a7741afSMartin Matuskafunction rpm_build_and_install() { 727a7741afSMartin Matuska EXTRA_CONFIG="${1:-}" 737a7741afSMartin Matuska echo "##[group]Autogen.sh" 747a7741afSMartin Matuska run ./autogen.sh 757a7741afSMartin Matuska echo "##[endgroup]" 767a7741afSMartin Matuska 777a7741afSMartin Matuska echo "##[group]Configure" 787a7741afSMartin Matuska run ./configure --enable-debug --enable-debuginfo $EXTRA_CONFIG 797a7741afSMartin Matuska echo "##[endgroup]" 807a7741afSMartin Matuska 817a7741afSMartin Matuska echo "##[group]Build" 827a7741afSMartin Matuska run make pkg-kmod pkg-utils 837a7741afSMartin Matuska echo "##[endgroup]" 847a7741afSMartin Matuska 857a7741afSMartin Matuska echo "##[group]Install" 86*5c65a0a9SMartin Matuska run sudo dnf -y --nobest install $(ls *.rpm | grep -v src.rpm) 877a7741afSMartin Matuska echo "##[endgroup]" 887a7741afSMartin Matuska 897a7741afSMartin Matuska} 907a7741afSMartin Matuska 917a7741afSMartin Matuskafunction deb_build_and_install() { 927a7741afSMartin Matuskaecho "##[group]Autogen.sh" 937a7741afSMartin Matuska run ./autogen.sh 947a7741afSMartin Matuska echo "##[endgroup]" 957a7741afSMartin Matuska 967a7741afSMartin Matuska echo "##[group]Configure" 977a7741afSMartin Matuska run ./configure \ 987a7741afSMartin Matuska --prefix=/usr \ 997a7741afSMartin Matuska --enable-pyzfs \ 1007a7741afSMartin Matuska --enable-debug \ 1017a7741afSMartin Matuska --enable-debuginfo 1027a7741afSMartin Matuska echo "##[endgroup]" 1037a7741afSMartin Matuska 1047a7741afSMartin Matuska echo "##[group]Build" 1057a7741afSMartin Matuska run make native-deb-kmod native-deb-utils 1067a7741afSMartin Matuska echo "##[endgroup]" 1077a7741afSMartin Matuska 1087a7741afSMartin Matuska echo "##[group]Install" 1097a7741afSMartin Matuska # Do kmod install. Note that when you build the native debs, the 1107a7741afSMartin Matuska # packages themselves are placed in parent directory '../' rather than 1117a7741afSMartin Matuska # in the source directory like the rpms are. 1127a7741afSMartin Matuska run sudo apt-get -y install $(find ../ | grep -E '\.deb$' \ 1137a7741afSMartin Matuska | grep -Ev 'dkms|dracut') 1147a7741afSMartin Matuska echo "##[endgroup]" 1157a7741afSMartin Matuska} 1167a7741afSMartin Matuska 1177a7741afSMartin Matuska# Debug: show kernel cmdline 1187a7741afSMartin Matuskaif [ -f /proc/cmdline ] ; then 1197a7741afSMartin Matuska cat /proc/cmdline || true 1207a7741afSMartin Matuskafi 1217a7741afSMartin Matuska 1227a7741afSMartin Matuska# save some sysinfo 1237a7741afSMartin Matuskauname -a > /var/tmp/uname.txt 1247a7741afSMartin Matuska 1257a7741afSMartin Matuskacd $HOME/zfs 1267a7741afSMartin Matuskaexport PATH="$PATH:/sbin:/usr/sbin:/usr/local/sbin" 1277a7741afSMartin Matuska 1287a7741afSMartin Matuska# build 1297a7741afSMartin Matuskacase "$1" in 1307a7741afSMartin Matuska freebsd*) 1317a7741afSMartin Matuska freebsd 1327a7741afSMartin Matuska ;; 1337a7741afSMartin Matuska alma*|centos*) 1347a7741afSMartin Matuska rpm_build_and_install "--with-spec=redhat" 1357a7741afSMartin Matuska ;; 1367a7741afSMartin Matuska fedora*) 1377a7741afSMartin Matuska rpm_build_and_install 1387a7741afSMartin Matuska ;; 1397a7741afSMartin Matuska debian*|ubuntu*) 1407a7741afSMartin Matuska deb_build_and_install 1417a7741afSMartin Matuska ;; 1427a7741afSMartin Matuska *) 1437a7741afSMartin Matuska linux 1447a7741afSMartin Matuska ;; 1457a7741afSMartin Matuskaesac 1467a7741afSMartin Matuska 1477a7741afSMartin Matuska# building the zfs module was ok 1487a7741afSMartin Matuskaecho 0 > /var/tmp/build-exitcode.txt 1497a7741afSMartin Matuska 1507a7741afSMartin Matuska# reset cloud-init configuration and poweroff 1517a7741afSMartin Matuskasudo cloud-init clean --logs 1527a7741afSMartin Matuskasync && sleep 2 && sudo poweroff & 1537a7741afSMartin Matuskaexit 0 154