summaryrefslogtreecommitdiffstats
path: root/.github/workflows/ci.yml
blob: 51b27c88dadaa95bc3f72981dd111cc011b2c4a2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
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