aboutsummaryrefslogtreecommitdiffstats
path: root/.github/workflows/tests.yml
diff options
context:
space:
mode:
Diffstat (limited to '.github/workflows/tests.yml')
-rw-r--r--.github/workflows/tests.yml94
1 files changed, 36 insertions, 58 deletions
diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml
index 3c16512..9673c5d 100644
--- a/.github/workflows/tests.yml
+++ b/.github/workflows/tests.yml
@@ -15,7 +15,7 @@ permissions:
contents: read
jobs:
- linux:
+ tests:
name: Build (${{ matrix.cc }} and ${{ matrix.fuse_package }} on ${{ matrix.runs-on }})
runs-on: ${{ matrix.runs-on }}
strategy:
@@ -26,42 +26,36 @@ jobs:
- cc: gcc
cxx: g++
clang_major_version: null
- clang_repo_suffix: null
runs-on: ubuntu-22.04
fuse_package: libfuse-dev
# FUSE 3
- cc: gcc
cxx: g++
clang_major_version: null
- clang_repo_suffix: null
runs-on: ubuntu-22.04
fuse_package: libfuse3-dev
- cc: clang-17
cxx: clang++-17
clang_major_version: 17
- clang_repo_suffix: -17
runs-on: ubuntu-22.04
fuse_package: libfuse3-dev
- cc: clang-18
cxx: clang++-18
clang_major_version: 18
- clang_repo_suffix: -18
runs-on: ubuntu-22.04
fuse_package: libfuse3-dev
- # fuse-t
- - cc: gcc-13
- cxx: g++-13
+ # fuse-t, gcc
+ - cc: gcc
+ cxx: g++
+ clang_major_version: null
+ runs-on: macos-15
+ fuse_package: fuse-t
+ # fuse-t, clang
+ - cc: clang
+ cxx: clang++
clang_major_version: null
- clang_repo_suffix: null
- runs-on: macos-13
+ runs-on: macos-15
fuse_package: fuse-t
- # macFUSE
- - cc: clang-15
- cxx: clang++-15
- clang_major_version: 15
- clang_repo_suffix: null
- runs-on: macos-13
- fuse_package: macfuse
steps:
- name: Add Clang/LLVM repositories
if: "${{ runner.os == 'Linux' && contains(matrix.cxx, 'clang') }}"
@@ -69,7 +63,7 @@ jobs:
set -x
source /etc/os-release
wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | sudo apt-key add -
- sudo add-apt-repository "deb http://apt.llvm.org/${UBUNTU_CODENAME}/ llvm-toolchain-${UBUNTU_CODENAME}${{ matrix.clang_repo_suffix }} main"
+ sudo add-apt-repository "deb http://apt.llvm.org/${UBUNTU_CODENAME}/ llvm-toolchain-${UBUNTU_CODENAME}-${{ matrix.clang_major_version }} main"
- name: Install build dependencies
if: "${{ runner.os == 'Linux' }}"
@@ -88,9 +82,11 @@ jobs:
run: |-
set -x
- if [[ ${{ matrix.fuse_package }} = macfuse ]]; then
- brew install --cask macfuse
- elif [[ ${{ matrix.fuse_package }} = fuse-t ]]; then
+ # Installing MacFUSE requires visiting the MacOS recovery environment,
+ # so testing it in CI seems to be hopeless. Therefore we only test with fuse-t.
+ # Apparently the best security is making it so inconvenient that you can't run the thing at all.
+ if [[ ${{ matrix.fuse_package }} = fuse-t ]]; then
+ sudo mkdir -p /usr/local/include # https://github.com/macos-fuse-t/fuse-t/issues/77
brew tap macos-fuse-t/homebrew-cask
brew install fuse-t
else
@@ -110,7 +106,7 @@ jobs:
clang-${{ matrix.clang_major_version }}
- name: Add versioned aliases for Clang ${{ matrix.clang_major_version }}
- if: "${{ runner.os == 'macOS' && contains(matrix.cxx, 'clang') }}"
+ if: "${{ runner.os == 'macOS' && matrix.clang_major_version != null }}"
run: |-
set -x
sudo ln -s "$(brew --prefix llvm@${{ matrix.clang_major_version }})"/bin/clang /usr/local/bin/clang-${{ matrix.clang_major_version }}
@@ -135,30 +131,19 @@ jobs:
- name: 'Build'
run: |-
set -x
- make -j$(nproc || sysctl -n hw.logicalcpu) VERBOSE=1
+ cpu_threads="$(nproc 2>/dev/null || sysctl -n hw.logicalcpu || echo 4)"
+ make "-j${cpu_threads}" VERBOSE=1
- name: 'Test as non-root'
run: |-
- if [[ ${{ runner.os }} = macOS ]]; then
- ignore_errors=true # while unfixed
- else
- ignore_errors=false
- fi
-
set -x
whoami
- make check || ${ignore_errors}
+ make check
- name: 'Test as root'
run: |-
- if [[ ${{ runner.os }} = macOS ]]; then
- ignore_errors=true # while unfixed
- else
- ignore_errors=false
- fi
-
set -x
- sudo make check || ${ignore_errors}
+ sudo make check
- name: 'Install'
run: |-
@@ -168,52 +153,43 @@ jobs:
vagrant:
name: Run Vagrant tests
- runs-on: ubuntu-22.04
+ runs-on: ubuntu-24.04
strategy:
fail-fast: false
matrix:
# TODO: automatically check that this list is up-to-date
box:
- - centos8
- debian10
- debian11
- freebsd14
- - ubuntu1804
+ - rockylinux9
- ubuntu2004
- ubuntu2204
+ - ubuntu2404
steps:
- name: Install dependencies
run: |-
set -x
- for FILE in /etc/apt/sources.list /etc/apt/sources.list.d/*; do
- if [[ -e "${FILE}" ]]; then
- sudo sed -i 's/# deb-src /deb-src /' "${FILE}"
- fi
- done
+ sudo sed -i 's/Types: deb/Types: deb deb-src/' /etc/apt/sources.list.d/ubuntu.sources
# The following is based on these instructions:
# https://developer.hashicorp.com/vagrant/install?product_intent=vagrant
# https://vagrant-libvirt.github.io/vagrant-libvirt/installation.html
- wget -O- https://apt.releases.hashicorp.com/gpg | sudo gpg --dearmor -o /usr/share/keyrings/hashicorp-archive-keyring.gpg
- echo "deb [signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] https://apt.releases.hashicorp.com $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/hashicorp.list
+ wget -O - https://apt.releases.hashicorp.com/gpg | sudo gpg --dearmor -o /usr/share/keyrings/hashicorp-archive-keyring.gpg
+ echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] https://apt.releases.hashicorp.com $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/hashicorp.list
sudo apt-get update
- sudo apt-get build-dep vagrant ruby-libvirt
+ sudo apt-get build-dep ruby-libvirt
sudo apt-get install -y vagrant \
qemu-system-x86 \
autoconf automake libtool pkg-config \
- qemu libvirt-daemon-system ebtables libguestfs-tools \
- libxslt-dev libxml2-dev zlib1g-dev ruby-dev
- vagrant plugin install vagrant-libvirt
- sudo adduser "${USER}" libvirt
+ libvirt-daemon-system ebtables libguestfs-tools \
+ libxslt-dev libxml2-dev zlib1g-dev ruby ruby-dev
+ sudo vagrant plugin install vagrant-libvirt
- name: Checkout Git branch
uses: actions/checkout@v4
- - name: 'Generate build files with ./autogen.sh'
- run: |-
- ./autogen.sh
-
- name: Check for KVM
run: |-
# This check is probably obsolete now: https://github.com/actions/runner-images/discussions/7191
@@ -227,6 +203,8 @@ jobs:
env:
VAGRANT_DEFAULT_PROVIDER: libvirt
run: |-
- # sudo needed because the current shell is not yet in group "libvirt"
+ # We use vagrant with sudo because it has proven stupendously difficult to
+ # get the current shell into group "libvirt" in a way that Vagrant is happy with.
# https://github.com/actions/runner-images/discussions/5981
- sudo -E -s -u "${USER}" vagrant/test.rb --print-logs ${{ matrix.box }}
+ sudo chmod a+rx /root # Give libvirt access to /root/.vagrant.d which is about to be created
+ sudo ruby vagrant/test.rb --print-logs ${{ matrix.box }}