1# Copyright (c) 2021-2024 Petr Vorel <pvorel@suse.cz> 2 3name: "Test building in various distros in Docker" 4on: [push, pull_request] 5 6permissions: 7 contents: read # to fetch code (actions/checkout) 8 9jobs: 10 job: 11 runs-on: ubuntu-latest 12 13 strategy: 14 fail-fast: false 15 matrix: 16 include: 17 # 32bit build 18 - container: "debian:stable" 19 env: 20 CC: gcc 21 VARIANT: i386 22 23 # cross compilation builds 24 - container: "debian:stable" 25 env: 26 ARCH: ppc64el 27 CC: powerpc64le-linux-gnu-gcc 28 MAKE_INSTALL: 1 29 TREE: out 30 VARIANT: cross-compile 31 32 - container: "debian:stable" 33 env: 34 ARCH: arm64 35 CC: aarch64-linux-gnu-gcc 36 MAKE_INSTALL: 1 37 TREE: out 38 VARIANT: cross-compile 39 40 - container: "debian:stable" 41 env: 42 ARCH: s390x 43 CC: s390x-linux-gnu-gcc 44 MAKE_INSTALL: 1 45 TREE: out 46 VARIANT: cross-compile 47 48 # musl (native) 49 - container: "alpine:latest" 50 env: 51 CC: gcc 52 METADATA: asciidoctor 53 54 # build with minimal dependencies 55 - container: "debian:stable" 56 env: 57 CC: gcc 58 TREE: out 59 VARIANT: minimal 60 61 # oldest distros 62 - container: "opensuse/archive:42.2" 63 env: 64 CC: gcc 65 66 - container: "quay.io/centos/centos:stream9" 67 env: 68 CC: gcc 69 METADATA: asciidoc-pdf 70 TREE: out 71 72 - container: "debian:testing" 73 env: 74 CC: gcc 75 METADATA: asciidoctor-pdf 76 77 - container: "debian:oldstable" 78 env: 79 CC: clang 80 81 # other builds 82 - container: "fedora:latest" 83 env: 84 CC: clang 85 MAKE_INSTALL: 1 86 METADATA: asciidoctor-pdf 87 88 - container: "opensuse/leap:latest" 89 env: 90 CC: gcc 91 METADATA: asciidoc-pdf 92 93 - container: "debian:oldstable" 94 env: 95 CC: gcc 96 METADATA: asciidoctor 97 98 - container: "debian:testing" 99 env: 100 CC: clang 101 METADATA: asciidoctor-pdf 102 103 - container: "ubuntu:jammy" 104 env: 105 CC: gcc 106 METADATA: asciidoctor 107 TREE: out 108 109 - container: "ubuntu:bionic" 110 env: 111 CC: gcc 112 METADATA: asciidoc-pdf 113 114 container: 115 image: ${{ matrix.container }} 116 env: ${{ matrix.env }} 117 options: --privileged -v/boot:/boot 118 119 steps: 120 - name: Show OS 121 run: cat /etc/os-release 122 123 - name: Git checkout 124 uses: actions/checkout@v1 125 126 - name: Install additional packages 127 run: | 128 INSTALL=${{ matrix.container }} 129 INSTALL="${INSTALL%%:*}" 130 INSTALL="${INSTALL%%/*}" 131 ACTION="$VARIANT" ./ci/$INSTALL.sh 132 if [ "$VARIANT" ]; then ./ci/$INSTALL.$VARIANT.sh; fi 133 134 - name: Compiler version 135 run: $CC --version 136 137 - name: ver_linux 138 run: ./ver_linux 139 140 - name: Autotools 141 run: ./build.sh -r autotools 142 143 - name: Configure 144 run: | 145 if [ "$METADATA" = "asciidoc-pdf" ]; then CONFIGURE_OPT_EXTRA="--with-metadata-generator=asciidoc --enable-metadata-pdf"; fi 146 if [ "$METADATA" = "asciidoctor" ]; then CONFIGURE_OPT_EXTRA="--with-metadata-generator=asciidoctor"; fi 147 if [ "$METADATA" = "asciidoctor-pdf" ]; then CONFIGURE_OPT_EXTRA="--with-metadata-generator=asciidoctor --enable-metadata-pdf"; fi 148 case "$VARIANT" in cross-compile*) BUILD="cross";; i386) BUILD="32";; *) BUILD="native";; esac 149 CONFIGURE_OPT_EXTRA="$CONFIGURE_OPT_EXTRA" ./build.sh -r configure -o ${TREE:-in} -t $BUILD -c $CC 150 151 - name: Compile 152 run: ./build.sh -r build -o ${TREE:-in} 153 154 - name: Test C API 155 run: | 156 case "$VARIANT" in cross-compile*) BUILD="cross";; i386) BUILD="32";; *) BUILD="native";; esac 157 ./build.sh -r test-c -o ${TREE:-in} -t $BUILD 158 159 - name: Test shell API 160 run: | 161 case "$VARIANT" in cross-compile*) BUILD="cross";; i386) BUILD="32";; *) BUILD="native";; esac 162 ./build.sh -r test-shell -o ${TREE:-in} -t $BUILD 163 164 - name: Test shell loader 165 run: | 166 case "$VARIANT" in cross-compile*) BUILD="cross";; i386) BUILD="32";; *) BUILD="native";; esac 167 ./build.sh -r test-shell-loader -o ${TREE:-in} -t $BUILD 168 169 - name: Install 170 run: | 171 if [ "$MAKE_INSTALL" = 1 ]; then INSTALL_OPT="-i"; fi 172 ./build.sh -r install -o ${TREE:-in} $INSTALL_OPT 173