Skip to content

thrift: fixed build on Amazon Linux 2 #26

thrift: fixed build on Amazon Linux 2

thrift: fixed build on Amazon Linux 2 #26

Workflow file for this run

name: GitHub CI
on:
pull_request:
push:
workflow_dispatch:
defaults:
run:
shell: 'bash -Eeuo pipefail -x {0}'
jobs:
generate-matrix:
runs-on: ubuntu-22.04
outputs:
matrix-alpine: ${{ steps.set-matrix.outputs.matrix-alpine }}
matrix-ubuntu: ${{ steps.set-matrix.outputs.matrix-ubuntu }}
matrix-redhat: ${{ steps.set-matrix.outputs.matrix-redhat }}
steps:
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
- name: set-matrix
id: set-matrix
run: |
TARGETS="all modules"
for os in alpine ubuntu redhat; do
jq -nRr '"matrix-" + $os +"=" + ( { include: [ $ARGS.positional[] | {target: . } ] } | tojson)' --arg os $os --args $TARGETS >> $GITHUB_OUTPUT
done
alpine:
needs: generate-matrix
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix: ${{fromJson(needs.generate-matrix.outputs.matrix-alpine)}}
steps:
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
- name: Setup Alpine Linux
uses: jirutka/setup-alpine@v1
with:
branch: v3.20
packages: >
abuild
build-base
coreutils
curl
findutils
git
make
xz
- name: Figure out what targets we're building
shell: alpine.sh {0}
working-directory: alpine
run: |
targets=""
case ${{ matrix.target }} in
all)
targets="base"
for target in $(make list-base-modules | cut -d ' ' -f 1); do
targets="$targets module-$target";
done
;;
modules)
for target in $(comm -13 <(make list-base-modules | cut -d ' ' -f 1) <(make list-all-modules | cut -d ' ' -f 1)); do
targets="$targets module-$target";
done
;;
esac
echo TARGETS=$targets >> $GITHUB_ENV
- name: Create build depends for targets
shell: alpine.sh {0}
working-directory: alpine
run: |
for target in $TARGETS; do
make abuild-$target;
done
- name: Install build depends for targets
shell: alpine.sh --root {0}
working-directory: alpine
run: |
for target in ${TARGETS}; do
apk add $(. ./abuild-${target}/APKBUILD; echo $makedepends;)
done
- name: Build ${{ matrix.target }}
shell: alpine.sh {0}
working-directory: alpine
run: |
for target in $TARGETS; do
make $target;
done
- name: List what has been built
shell: alpine.sh {0}
if: ${{ !cancelled() }}
run: |
find ~/packages/alpine -type f
ubuntu:
runs-on: ubuntu-latest
needs: generate-matrix
strategy:
fail-fast: false
matrix: ${{fromJson(needs.generate-matrix.outputs.matrix-ubuntu)}}
steps:
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
- name: Setup Ubuntu
run: |
sudo apt-get update
sudo apt-get install -y --no-install-suggests --no-install-recommends \
curl \
devscripts \
equivs \
git \
libxml2-utils \
lsb-release \
xsltproc
- name: Figure out what targets we're building
working-directory: debian
run: |
targets=""
case ${{ matrix.target }} in
all)
targets="base"
for target in $(make list-base-modules | cut -d ' ' -f 1); do
targets="$targets module-$target";
done
;;
modules)
for target in $(comm -13 <(make list-base-modules | cut -d ' ' -f 1) <(make list-all-modules | cut -d ' ' -f 1)); do
targets="$targets module-$target";
done
;;
esac
echo TARGETS=$targets >> $GITHUB_ENV
- name: Create and install build depends for ${{ matrix.target }} and build it
working-directory: debian
run: |
NGINX_VERSION=$(make --eval 'nv:; @echo $(BASE_VERSION)' nv)
for target in $TARGETS; do
make rules-$target
sudo mk-build-deps --install --tool="apt-get -o Debug::pkgProblemResolver=yes --no-install-recommends --yes" \
debuild-${target}/nginx-${NGINX_VERSION}/debian/control;
make $target
done
- name: List what has been built
if: ${{ !cancelled() }}
run: |
find .. -mindepth 1 -maxdepth 1 -name "*.deb"
redhat:
needs: generate-matrix
runs-on: ubuntu-latest
container: almalinux:9
strategy:
fail-fast: false
matrix: ${{fromJson(needs.generate-matrix.outputs.matrix-redhat)}}
steps:
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
- name: Setup AlmaLinux
run: |
dnf makecache
dnf install -y \
g++ \
gcc \
git \
epel-release \
libxslt \
make \
rpm-build \
which \
xz \
'dnf-command(config-manager)'
dnf config-manager --set-enabled crb
- name: Figure out what targets we're building
working-directory: rpm/SPECS
run: |
targets=""
case ${{ matrix.target }} in
all)
targets="base"
for target in $(make list-base-modules | cut -d ' ' -f 1); do
targets="$targets module-$target";
done
;;
modules)
for target in $(comm -13 <(make list-base-modules | cut -d ' ' -f 1) <(make list-all-modules | cut -d ' ' -f 1)); do
targets="$targets module-$target";
done
;;
esac
echo TARGETS=$targets >> $GITHUB_ENV
- name: Create and install build depends for ${{ matrix.target }} and build it
working-directory: rpm/SPECS
run: |
for target in $TARGETS; do
# geoip is not available
test $target == "module-geoip" && continue
case ${target} in
base)
spec="nginx.spec"
;;
*)
spec="nginx-${target}.spec"
;;
esac
make $spec
dnf -y install $(rpmspec -P ./${spec} | grep BuildRequires | cut -d: -f2- | xargs)
make ${target}
done
- name: List what has been built
if: ${{ !cancelled() }}
run: |
find rpm/RPMS -type f