1#!/usr/bin/env bash 2 3set -eu 4 5function prerun() { 6 echo "::group::Install build dependencies" 7 # remove snap things, update+upgrade will be faster then 8 for x in lxd core20 snapd; do sudo snap remove $x; done 9 sudo apt-get purge snapd google-chrome-stable firefox 10 # https://github.com/orgs/community/discussions/47863 11 sudo apt-get remove grub-efi-amd64-bin grub-efi-amd64-signed shim-signed --allow-remove-essential 12 sudo apt-get update 13 sudo apt upgrade 14 sudo xargs --arg-file=.github/workflows/build-dependencies.txt apt-get install -qq 15 sudo apt-get clean 16 sudo dmesg -c > /var/tmp/dmesg-prerun 17 echo "::endgroup::" 18} 19 20function mod_build() { 21 echo "::group::Generate debian packages" 22 ./autogen.sh 23 ./configure --enable-debug --enable-debuginfo --enable-asan --enable-ubsan 24 make --no-print-directory --silent native-deb-utils native-deb-kmod 25 mv ../*.deb . 26 rm ./openzfs-zfs-dracut*.deb ./openzfs-zfs-dkms*.deb 27 echo "$ImageOS-$ImageVersion" > tests/ImageOS.txt 28 echo "::endgroup::" 29} 30 31function mod_install() { 32 # install the pre-built module only on the same runner image 33 MOD=`cat tests/ImageOS.txt` 34 if [ "$MOD" != "$ImageOS-$ImageVersion" ]; then 35 rm -f *.deb 36 mod_build 37 fi 38 39 echo "::group::Install and load modules" 40 # don't use kernel-shipped zfs modules 41 sudo sed -i.bak 's/updates/extra updates/' /etc/depmod.d/ubuntu.conf 42 sudo apt-get install --fix-missing ./*.deb 43 44 # Native Debian packages enable and start the services 45 # Stop zfs-zed daemon, as it may interfere with some ZTS test cases 46 sudo systemctl stop zfs-zed 47 sudo depmod -a 48 sudo modprobe zfs 49 sudo dmesg 50 sudo dmesg -c > /var/tmp/dmesg-module-load 51 echo "::endgroup::" 52 53 echo "::group::Report CPU information" 54 lscpu 55 cat /proc/spl/kstat/zfs/chksum_bench 56 echo "::endgroup::" 57 58 echo "::group::Reclaim and report disk space" 59 # remove 4GiB of images 60 sudo systemd-run docker system prune --force --all --volumes 61 62 # remove unused software 63 sudo systemd-run --wait rm -rf \ 64 "$AGENT_TOOLSDIRECTORY" \ 65 /opt/* \ 66 /usr/local/* \ 67 /usr/share/az* \ 68 /usr/share/dotnet \ 69 /usr/share/gradle* \ 70 /usr/share/miniconda \ 71 /usr/share/swift \ 72 /var/lib/gems \ 73 /var/lib/mysql \ 74 /var/lib/snapd 75 76 # trim the cleaned space 77 sudo fstrim / 78 79 # disk usage afterwards 80 df -h / 81 echo "::endgroup::" 82} 83 84case "$1" in 85 build) 86 prerun 87 mod_build 88 ;; 89 tests) 90 prerun 91 mod_install 92 ;; 93esac 94