• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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