Skip to content

Merge tag 'gh-action-2025-02-20' of https://github.com/ammarfaizi2/li… #2

Merge tag 'gh-action-2025-02-20' of https://github.com/ammarfaizi2/li…

Merge tag 'gh-action-2025-02-20' of https://github.com/ammarfaizi2/li… #2

Workflow file for this run

name: CI
on:
# Trigger the workflow on push or pull requests.
push:
pull_request:
jobs:
get_commit_list:
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Get commit list
id: get_commit_list
run: |
git config core.abbrev 12;
( \
( \
git log --pretty="%h" --reverse ${{github.event.commits[0].id}}^...${{github.sha}} || \
(printf "%s" ${{github.sha}} | head -c 12) \
) | awk '{ print "id" NR "=" $1 }' \
) > $GITHUB_OUTPUT;
echo "List of tested commits:" > $GITHUB_STEP_SUMMARY;
cat $GITHUB_OUTPUT >> $GITHUB_STEP_SUMMARY;
outputs:
commit_list: ${{ toJson(steps.*.outputs.*) }}
build:
needs: get_commit_list
runs-on: ubuntu-24.04
strategy:
fail-fast: false
matrix:
commit: ${{ fromJson(needs.get_commit_list.outputs.commit_list) }}
build_args:
# x86-64 gcc
- arch: x86_64
cc_pkg: gcc-x86-64-linux-gnu
cxx_pkg: g++-x86-64-linux-gnu
cc: x86_64-linux-gnu-gcc
cxx: x86_64-linux-gnu-g++
sanitize: 0
# x86-64 gcc asan
- arch: x86_64
cc_pkg: gcc-x86-64-linux-gnu
cxx_pkg: g++-x86-64-linux-gnu
cc: x86_64-linux-gnu-gcc
cxx: x86_64-linux-gnu-g++
sanitize: 1
# x86-64 clang
- arch: x86_64
cc_pkg: clang
cxx_pkg: clang
cc: clang
cxx: clang++
liburing_extra_flags: -Wshorten-64-to-32
extra_flags: -Wmissing-prototypes -Wstrict-prototypes -Wunreachable-code-loop-increment -Wunreachable-code -Wmissing-variable-declarations -Wextra-semi-stmt
sanitize: 0
# x86 (32-bit) gcc
- arch: i686
cc_pkg: gcc-i686-linux-gnu
cxx_pkg: g++-i686-linux-gnu
cc: i686-linux-gnu-gcc
cxx: i686-linux-gnu-g++
sanitize: 0
# aarch64 gcc
- arch: aarch64
cc_pkg: gcc-aarch64-linux-gnu
cxx_pkg: g++-aarch64-linux-gnu
cc: aarch64-linux-gnu-gcc
cxx: aarch64-linux-gnu-g++
sanitize: 0
# arm (32-bit) gcc
- arch: arm
cc_pkg: gcc-arm-linux-gnueabi
cxx_pkg: g++-arm-linux-gnueabi
cc: arm-linux-gnueabi-gcc
cxx: arm-linux-gnueabi-g++
sanitize: 0
# riscv64
- arch: riscv64
cc_pkg: gcc-riscv64-linux-gnu
cxx_pkg: g++-riscv64-linux-gnu
cc: riscv64-linux-gnu-gcc
cxx: riscv64-linux-gnu-g++
sanitize: 0
# powerpc64
- arch: powerpc64
cc_pkg: gcc-powerpc64-linux-gnu
cxx_pkg: g++-powerpc64-linux-gnu
cc: powerpc64-linux-gnu-gcc
cxx: powerpc64-linux-gnu-g++
sanitize: 0
# powerpc
- arch: powerpc
cc_pkg: gcc-powerpc-linux-gnu
cxx_pkg: g++-powerpc-linux-gnu
cc: powerpc-linux-gnu-gcc
cxx: powerpc-linux-gnu-g++
sanitize: 0
# alpha
- arch: alpha
cc_pkg: gcc-alpha-linux-gnu
cxx_pkg: g++-alpha-linux-gnu
cc: alpha-linux-gnu-gcc
cxx: alpha-linux-gnu-g++
sanitize: 0
# mips64
- arch: mips64
cc_pkg: gcc-mips64-linux-gnuabi64
cxx_pkg: g++-mips64-linux-gnuabi64
cc: mips64-linux-gnuabi64-gcc
cxx: mips64-linux-gnuabi64-g++
sanitize: 0
# mips
- arch: mips
cc_pkg: gcc-mips-linux-gnu
cxx_pkg: g++-mips-linux-gnu
cc: mips-linux-gnu-gcc
cxx: mips-linux-gnu-g++
sanitize: 0
# hppa
- arch: hppa
cc_pkg: gcc-hppa-linux-gnu
cxx_pkg: g++-hppa-linux-gnu
cc: hppa-linux-gnu-gcc
cxx: hppa-linux-gnu-g++
sanitize: 0
env:
FLAGS: -g -O3 -Wall -Wextra -Werror -Wno-sign-compare ${{matrix.build_args.extra_flags}}
SANITIZE: ${{matrix.build_args.sanitize}}
# Flags for building sources in src/ dir only.
LIBURING_CFLAGS: ${{matrix.build_args.liburing_extra_flags}}
steps:
- name: Checkout source
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Checkout commit
run: |
git checkout ${{ matrix.commit }};
- name: Install Compilers
run: |
sudo apt-get update -y;
sudo apt-get install -y ${{matrix.build_args.cc_pkg}} ${{matrix.build_args.cxx_pkg}};
- name: Display compiler versions
run: |
${{matrix.build_args.cc}} --version;
${{matrix.build_args.cxx}} --version;
- name: Build
if: ${{matrix.build_args.sanitize == '0'}}
run: |
./configure --cc=${{matrix.build_args.cc}} --cxx=${{matrix.build_args.cxx}};
make -j$(nproc) V=1 CPPFLAGS="-Werror" CFLAGS="$FLAGS" CXXFLAGS="$FLAGS";
- name: Build
if: ${{matrix.build_args.sanitize == '1'}}
run: |
./configure --cc=${{matrix.build_args.cc}} --cxx=${{matrix.build_args.cxx}} --enable-sanitizer;
make -j$(nproc) V=1 CPPFLAGS="-Werror" CFLAGS="$FLAGS" CXXFLAGS="$FLAGS";
- name: Test install command
run: |
sudo make install;
codespell:
needs: get_commit_list
runs-on: ubuntu-24.04
strategy:
matrix:
commit: ${{ fromJson(needs.get_commit_list.outputs.commit_list) }}
steps:
- name: Checkout source
uses: actions/checkout@v4
- name: Install codespell
run: |
sudo apt-get update -y
sudo apt-get install -y codespell
- name: Display codespell version
run: codespell --version
- name: Execute codespell
run: codespell --ignore-words=.github/actions/codespell/stopwords .
shellcheck:
needs: get_commit_list
runs-on: ubuntu-24.04
strategy:
matrix:
commit: ${{ fromJson(needs.get_commit_list.outputs.commit_list) }}
steps:
- name: Checkout source
uses: actions/checkout@v4
- name: Display shellcheck version
run: shellcheck --version
- name: Shellcheck execution
run: shellcheck test/runtest*.sh