summaryrefslogtreecommitdiffstats
path: root/.github/workflows/ci.yml
diff options
context:
space:
mode:
Diffstat (limited to '.github/workflows/ci.yml')
-rw-r--r--.github/workflows/ci.yml116
1 files changed, 116 insertions, 0 deletions
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
new file mode 100644
index 0000000..51b27c8
--- /dev/null
+++ b/.github/workflows/ci.yml
@@ -0,0 +1,116 @@
+name: CI
+on: [push]
+env:
+ DEF_CFLAGS: -O2 -g -Wall
+
+jobs:
+ gcc-build-and-test:
+ name: Build and test with gcc
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v3
+ - run: ./configure CC=gcc CFLAGS="$DEF_CFLAGS"
+ - run: make -j8 check V=1 CFLAGS_WARN="-Werror"
+ - run: make -j8 install V=1 DESTDIR=$PWD/installdir
+ - run: make -j8 uninstall V=1 DESTDIR=$PWD/installdir
+
+ clang-build-and-test:
+ name: Build and test with clang
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v3
+ - name: Install dependencies
+ run: |
+ sudo apt-get update
+ sudo apt-get install -y clang
+ - run: ./configure CC=clang CFLAGS="$DEF_CFLAGS"
+ - run: make -j8 check V=1 CFLAGS_WARN="-Werror"
+ - run: make -j8 install V=1 DESTDIR=$PWD/installdir
+ - run: make -j8 uninstall V=1 DESTDIR=$PWD/installdir
+
+ i386-build-and-test:
+ name: Build and test with gcc -m32
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v3
+ - name: Install dependencies
+ run: |
+ sudo apt-get update
+ sudo apt-get install -y gcc-multilib
+ - run: ./configure CC=gcc CFLAGS="$DEF_CFLAGS -m32" LDFLAGS="-m32"
+ - run: make -j8 check V=1 CFLAGS_WARN="-Werror"
+ - run: make -j8 install V=1 DESTDIR=$PWD/installdir
+ - run: make -j8 uninstall V=1 DESTDIR=$PWD/installdir
+
+ asan-build-and-test:
+ name: Build and test with ASAN enabled
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v3
+ - name: Install dependencies
+ run: |
+ sudo apt-get update
+ sudo apt-get install -y clang
+ - run: echo "ASAN_CFLAGS=$DEF_CFLAGS -fsanitize=address -fno-sanitize-recover=address" >> $GITHUB_ENV
+ - run: ./configure CC=clang CFLAGS="$ASAN_CFLAGS" LDFLAGS="$ASAN_CFLAGS"
+ - run: make -j8 check V=1 CFLAGS_WARN="-Werror"
+
+ ubsan-build-and-test:
+ name: Build and test with UBSAN enabled
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v3
+ - name: Install dependencies
+ run: |
+ sudo apt-get update
+ sudo apt-get install -y clang
+ - run: echo "UBSAN_CFLAGS=$DEF_CFLAGS -fsanitize=undefined -fno-sanitize-recover=undefined" >> $GITHUB_ENV
+ - run: ./configure CC=clang CFLAGS="$UBSAN_CFLAGS" LDFLAGS="$UBSAN_CFLAGS"
+ - run: make -j8 check V=1 CFLAGS_WARN="-Werror"
+
+ macos-build-and-test:
+ name: Build and test on macOS
+ runs-on: macos-latest
+ steps:
+ - uses: actions/checkout@v3
+ - run: ./configure CFLAGS="$DEF_CFLAGS"
+ # -Wno-error=deprecated-declarations is needed to suppress known warnings
+ # due to e2fsprogs' use of sbrk(0) and daemon().
+ - run: make -j8 check V=1 CFLAGS_WARN="-Werror -Wno-error=deprecated-declarations"
+ - run: make -j8 install DESTDIR=$PWD/installdir
+ - run: make -j8 uninstall DESTDIR=$PWD/installdir
+
+ windows-msys2-build:
+ name: Build mke2fs on Windows with ${{matrix.sys}}
+ runs-on: windows-latest
+ strategy:
+ matrix:
+ include:
+ - { sys: mingw32, env: i686 }
+ - { sys: mingw64, env: x86_64 }
+ defaults:
+ run:
+ shell: msys2 {0}
+ steps:
+ - uses: actions/checkout@v3
+ - uses: msys2/setup-msys2@v2
+ with:
+ msystem: ${{matrix.sys}}
+ update: true
+ install: >
+ make
+ mingw-w64-${{matrix.env}}-cc
+ # For now the only parts that actually build for Windows are mke2fs and its
+ # dependencies: all libraries except libss. The build system doesn't want
+ # to build just those parts, though, so do it one step at a time...
+ - run: ./configure CFLAGS="$DEF_CFLAGS"
+ - run: make -j8 subs V=1 CFLAGS_WARN="-Werror"
+ - run: make -j8 -C lib/et/ all V=1 CFLAGS_WARN="-Werror"
+ - run: make -j8 -C lib/uuid/ all V=1 CFLAGS_WARN="-Werror"
+ - run: make -j8 -C lib/blkid/ all V=1 CFLAGS_WARN="-Werror"
+ - run: make -j8 -C lib/ext2fs/ all V=1 CFLAGS_WARN="-Werror"
+ - run: make -j8 -C lib/support/ all V=1 CFLAGS_WARN="-Werror"
+ - run: make -j8 -C lib/e2p/ all V=1 CFLAGS_WARN="-Werror"
+ - run: make -j8 -C misc/ mke2fs V=1 CFLAGS_WARN="-Werror"
+ - run: touch image.ext4
+ - run: misc/mke2fs.exe -T ext4 image.ext4 128M