• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1name: CI
2on: [push]
3env:
4  DEF_CFLAGS: -O2 -g -Wall
5
6jobs:
7  gcc-build-and-test:
8    name: Build and test with gcc
9    runs-on: ubuntu-latest
10    steps:
11    - uses: actions/checkout@v3
12    - run: ./configure CC=gcc CFLAGS="$DEF_CFLAGS"
13    - run: make -j8 check V=1 CFLAGS_WARN="-Werror"
14    - run: make -j8 install V=1 DESTDIR=$PWD/installdir
15    - run: make -j8 uninstall V=1 DESTDIR=$PWD/installdir
16
17  clang-build-and-test:
18    name: Build and test with clang
19    runs-on: ubuntu-latest
20    steps:
21    - uses: actions/checkout@v3
22    - name: Install dependencies
23      run: |
24        sudo apt-get update
25        sudo apt-get install -y clang
26    - run: ./configure CC=clang CFLAGS="$DEF_CFLAGS"
27    - run: make -j8 check V=1 CFLAGS_WARN="-Werror"
28    - run: make -j8 install V=1 DESTDIR=$PWD/installdir
29    - run: make -j8 uninstall V=1 DESTDIR=$PWD/installdir
30
31  i386-build-and-test:
32    name: Build and test with gcc -m32
33    runs-on: ubuntu-latest
34    steps:
35    - uses: actions/checkout@v3
36    - name: Install dependencies
37      run: |
38        sudo apt-get update
39        sudo apt-get install -y gcc-multilib
40    - run: ./configure CC=gcc CFLAGS="$DEF_CFLAGS -m32" LDFLAGS="-m32"
41    - run: make -j8 check V=1 CFLAGS_WARN="-Werror"
42    - run: make -j8 install V=1 DESTDIR=$PWD/installdir
43    - run: make -j8 uninstall V=1 DESTDIR=$PWD/installdir
44
45  asan-build-and-test:
46    name: Build and test with ASAN enabled
47    runs-on: ubuntu-latest
48    steps:
49    - uses: actions/checkout@v3
50    - name: Install dependencies
51      run: |
52        sudo apt-get update
53        sudo apt-get install -y clang
54    - run: echo "ASAN_CFLAGS=$DEF_CFLAGS -fsanitize=address -fno-sanitize-recover=address" >> $GITHUB_ENV
55    - run: ./configure CC=clang CFLAGS="$ASAN_CFLAGS" LDFLAGS="$ASAN_CFLAGS"
56    - run: make -j8 check V=1 CFLAGS_WARN="-Werror"
57
58  ubsan-build-and-test:
59    name: Build and test with UBSAN enabled
60    runs-on: ubuntu-latest
61    steps:
62    - uses: actions/checkout@v3
63    - name: Install dependencies
64      run: |
65        sudo apt-get update
66        sudo apt-get install -y clang
67    - run: echo "UBSAN_CFLAGS=$DEF_CFLAGS -fsanitize=undefined -fno-sanitize-recover=undefined" >> $GITHUB_ENV
68    - run: ./configure CC=clang CFLAGS="$UBSAN_CFLAGS" LDFLAGS="$UBSAN_CFLAGS"
69    - run: make -j8 check V=1 CFLAGS_WARN="-Werror"
70
71  macos-build-and-test:
72    name: Build and test on macOS
73    runs-on: macos-latest
74    steps:
75    - uses: actions/checkout@v3
76    - run: ./configure CFLAGS="$DEF_CFLAGS"
77      # -Wno-error=deprecated-declarations is needed to suppress known warnings
78      # due to e2fsprogs' use of sbrk(0) and daemon().
79    - run: make -j8 check V=1 CFLAGS_WARN="-Werror -Wno-error=deprecated-declarations"
80    - run: make -j8 install DESTDIR=$PWD/installdir
81    - run: make -j8 uninstall DESTDIR=$PWD/installdir
82
83  windows-msys2-build:
84    name: Build mke2fs on Windows with ${{matrix.sys}}
85    runs-on: windows-latest
86    strategy:
87      matrix:
88        include:
89        - { sys: mingw32, env: i686 }
90        - { sys: mingw64, env: x86_64 }
91    defaults:
92      run:
93        shell: msys2 {0}
94    steps:
95    - uses: actions/checkout@v3
96    - uses: msys2/setup-msys2@v2
97      with:
98        msystem: ${{matrix.sys}}
99        update: true
100        install: >
101          make
102          mingw-w64-${{matrix.env}}-cc
103    # For now the only parts that actually build for Windows are mke2fs and its
104    # dependencies: all libraries except libss.  The build system doesn't want
105    # to build just those parts, though, so do it one step at a time...
106    - run: ./configure CFLAGS="$DEF_CFLAGS"
107    - run: make -j8 subs V=1 CFLAGS_WARN="-Werror"
108    - run: make -j8 -C lib/et/ all V=1 CFLAGS_WARN="-Werror"
109    - run: make -j8 -C lib/uuid/ all V=1 CFLAGS_WARN="-Werror"
110    - run: make -j8 -C lib/blkid/ all V=1 CFLAGS_WARN="-Werror"
111    - run: make -j8 -C lib/ext2fs/ all V=1 CFLAGS_WARN="-Werror"
112    - run: make -j8 -C lib/support/ all V=1 CFLAGS_WARN="-Werror"
113    - run: make -j8 -C lib/e2p/ all V=1 CFLAGS_WARN="-Werror"
114    - run: make -j8 -C misc/ mke2fs V=1 CFLAGS_WARN="-Werror"
115    - run: misc/mke2fs.exe -T ext4 image.ext4 128M
116