Skip to content

CI: test cross compilation, test on big endian... #30

CI: test cross compilation, test on big endian...

CI: test cross compilation, test on big endian... #30

Workflow file for this run

# test GAP cross compilation
name: cross
# Trigger the workflow on push or pull request
on:
pull_request:
push:
concurrency:
# group by workflow and ref; the last slightly strange component ensures that for pull
# requests, we limit to 1 concurrent job, but for the master branch we don't
group: ${{ github.workflow }}-${{ github.ref }}-${{ github.ref != 'refs/heads/master' || github.run_number }}
# Cancel intermediate builds, but only if it is a pull request build.
cancel-in-progress: ${{ startsWith(github.ref, 'refs/pull/') }}
env:
# default config flags: enable debug asserts
CONFIGFLAGS: "--enable-debug"
jobs:
test_on_arch:
# The host should always be linux
runs-on: ubuntu-22.04
name: Build on ${{ matrix.distro }} ${{ matrix.arch }}
# Run steps on a matrix of arch/distro combinations
strategy:
fail-fast: false
matrix:
include:
- arch: aarch64
distro: ubuntu18.04
- arch: ppc64le
distro: alpine_latest
- arch: s390x
distro: fedora_latest
steps:
- uses: actions/checkout@v4
- name: Download required GAP packages
run: |
wget https://github.com/gap-system/PackageDistro/releases/download/latest/packages-required.tar.gz
mkdir pkg
cd pkg
tar xvf ../packages-required.tar.gz
- uses: uraimo/run-on-arch-action@v2
name: Build GAP and run tests
with:
arch: ${{ matrix.arch }}
distro: ${{ matrix.distro }}
# Not required, but speeds up builds
githubToken: ${{ github.token }}
# The shell to run commands with in the container
shell: /bin/sh
# Install some dependencies in the container. This speeds up builds if
# you are also using githubToken. Any dependencies installed here will
# be part of the container image that gets cached, so subsequent
# builds don't have to re-install them. The image layer is cached
# publicly in your project's package repository, so it is vital that
# no secrets are present in the container state or logs.
install: |
case "${{ matrix.distro }}" in
ubuntu*|jessie|stretch|buster|bullseye)
apt-get update -q -y
apt-get install -q -y git build-essential expect autoconf libtool libgmp-dev libreadline-dev zlib1g-dev
;;
fedora*)
dnf -y update
dnf -y install diffutils git gcc gcc-c++ make expect autoconf libtool gmp gmp-devel readline readline-devel zlib zlib-devel
;;
alpine*)
apk update
apk add bash git build-base expect autoconf libtool gmp-dev readline-dev zlib-dev
;;
esac
# Do the thing
run: |
set -x
uname -a
pwd
ls -al
git config --global --add safe.directory $PWD # see https://github.com/gap-system/gap/issues/4861
git status
git show --pretty=fuller -s
./autogen.sh
./configure
make -j2 V=1
make citests
cross_compile:
# The host should always be linux
runs-on: ubuntu-22.04
name: Cross compiler for s390x
#env:
# CC: gcc-11-s390x-linux-gnu
# CXX: g++-11-s390x-linux-gnu
steps:
- name: Install Cross-Compile Support
uses: fingolfin/gha-ubuntu-cross@patch-1 # FIXME: see https://github.com/cyberjunk/gha-ubuntu-cross/pull/8
with:
arch: s390x
- name: Install general build dependencies
run: sudo apt-get install -q -y git autoconf libtool
- name: Install cross compile dependencies
run: sudo apt-get install -q -y git libgmp-dev:s390x libreadline-dev:s390x zlib1g-dev:s390x
- uses: actions/checkout@v4
- run: ./autogen.sh
- name: Native compile
run: |
# When building a git snapshot, configure & compile a native version of GAP to
# generate ffdata.{c,h}, c_oper1.c and c_type1.c -- in a GAP release tarball
# this is not necessary.
mkdir native-build
cd native-build
../configure --without-readline
make -j2
cp build/c_*.c build/ffdata.* ../src/
cd ..
- name: Configure
run: ./configure --host="s390x-linux-gnu"
- name: Cross compile
run: make -j2 V=1 all build-testlibgap build-testkernel
- name: Fixup sysinfo.gap
run: rm sysinfo.gap && make SYSINFO_CC=gcc SYSINFO_CXX=g++ sysinfo.gap
- name: Download required GAP packages
run: make bootstrap-pkg-minimal
- name: Run tests in VM
uses: uraimo/run-on-arch-action@v2
with:
arch: s390x
distro: ubuntu22.04
# Not required, but speeds up builds
githubToken: ${{ github.token }}
# The shell to run commands with in the container
shell: /bin/sh
# Install some dependencies in the container. This speeds up builds if
# you are also using githubToken. Any dependencies installed here will
# be part of the container image that gets cached, so subsequent
# builds don't have to re-install them. The image layer is cached
# publicly in your project's package repository, so it is vital that
# no secrets are present in the container state or logs.
install: |
apt-get update -q -y
# we need build-essential for make and gcc (the latter is used by gac and
# hence by the tests involving mockpkg)
apt-get install -q -y build-essential git expect libgmp10 libreadline8 zlib1g
# Do the thing
run: |
set -x
uname -a
pwd
ls -al
git config --global --add safe.directory $PWD # see https://github.com/gap-system/gap/issues/4861
git status
git show --pretty=fuller -s
make citests
openbsd:
runs-on: ubuntu-latest
name: Test in OpenBSD
env:
AUTOCONF_VERSION: 2.71
steps:
- uses: actions/checkout@v4
- name: Download required GAP packages
run: |
wget https://github.com/gap-system/PackageDistro/releases/download/latest/packages-required.tar.gz
mkdir pkg
cd pkg
tar xvf ../packages-required.tar.gz
- name: Test in OpenBSD
id: test
uses: vmactions/openbsd-vm@v1
with:
envs: 'AUTOCONF_VERSION'
usesh: true
prepare: |
pkg_add bash gmake autoconf-2.71 libtool expect gmp
# Do the thing
run: |
set -x
uname -a
pwd
ls -al
git config --global --add safe.directory $PWD # see https://github.com/gap-system/gap/issues/4861
git status
git show --pretty=fuller -s
rm -rf extern # ensure we don't build and link against bundled libraries
./autogen.sh
./configure --with-gmp=/usr/local --without-readline
gmake -j2 V=1
gmake check
#gmake citests