1name: CI
2
3on: [ push, pull_request ]
4
5env:
6  # Enable format attributes in ncurses headers
7  # Enable fortified memory/string handling
8  CPPFLAGS: -DGCC_PRINTF -DGCC_SCANF -D_FORTIFY_SOURCE=2
9
10jobs:
11  build-ubuntu-latest-minimal-gcc:
12    runs-on: ubuntu-latest
13    steps:
14    - uses: actions/checkout@v2
15    - name: Install Dependencies
16      run: sudo apt-get install --no-install-recommends libncursesw5-dev
17    - name: Bootstrap
18      run: ./autogen.sh
19    - name: Configure
20      run: ./configure --enable-werror --enable-affinity --disable-unicode --disable-sensors
21    - name: Enable compatibility modes
22      run: |
23        sed -i 's/#define HAVE_FSTATAT 1/#undef HAVE_FSTATAT/g' config.h
24        sed -i 's/#define HAVE_OPENAT 1/#undef HAVE_OPENAT/g' config.h
25        sed -i 's/#define HAVE_READLINKAT 1/#undef HAVE_READLINKAT/g' config.h
26    - name: Build
27      run: make -k
28    - name: Distcheck
29      run: make distcheck DISTCHECK_CONFIGURE_FLAGS="--enable-werror --enable-affinity --disable-unicode --disable-sensors"
30
31  build-ubuntu-latest-minimal-clang:
32    runs-on: ubuntu-latest
33    env:
34      CC: clang-12
35    steps:
36    - uses: actions/checkout@v2
37    - name: install clang repo
38      run: |
39        wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key 2>/dev/null | sudo apt-key add -
40        sudo add-apt-repository 'deb http://apt.llvm.org/focal/ llvm-toolchain-focal-12 main' -y
41        sudo apt-get update -q
42    - name: Install Dependencies
43      run: sudo apt-get install --no-install-recommends clang-12 libncursesw5-dev
44    - name: Bootstrap
45      run: ./autogen.sh
46    - name: Configure
47      run: ./configure --enable-werror --enable-affinity --disable-unicode --disable-sensors
48    - name: Build
49      run: make -k
50    - name: Distcheck
51      run: make distcheck DISTCHECK_CONFIGURE_FLAGS="--enable-werror --enable-affinity --disable-unicode --disable-sensors"
52
53  build-ubuntu-latest-full-featured-gcc:
54    runs-on: ubuntu-latest
55    # Enable LTO, might trigger additional warnings on advanced inlining
56    env:
57      CFLAGS: -O3 -g -flto
58      LDFLAGS: -O3 -g -flto -Wl,--as-needed
59    steps:
60    - uses: actions/checkout@v2
61    - name: Install Dependencies
62      run: sudo apt-get install --no-install-recommends libncursesw5-dev libhwloc-dev libnl-3-dev libnl-genl-3-dev libsensors4-dev libcap-dev
63    - name: Bootstrap
64      run: ./autogen.sh
65    - name: Configure
66      run: ./configure --enable-werror --enable-openvz --enable-vserver --enable-ancient-vserver --enable-unicode --enable-hwloc --enable-delayacct --enable-sensors --enable-capabilities
67    - name: Build
68      run: make -k
69    - name: Distcheck
70      run: make distcheck DISTCHECK_CONFIGURE_FLAGS='--enable-werror --enable-openvz --enable-vserver --enable-ancient-vserver --enable-unicode --enable-hwloc --enable-delayacct --enable-sensors --enable-capabilities'
71
72  build-ubuntu-latest-full-featured-clang:
73    runs-on: ubuntu-latest
74    env:
75      CC: clang-12
76    steps:
77    - uses: actions/checkout@v2
78    - name: install clang repo
79      run: |
80        wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key 2>/dev/null | sudo apt-key add -
81        sudo add-apt-repository 'deb http://apt.llvm.org/focal/ llvm-toolchain-focal-12 main' -y
82        sudo apt-get update -q
83    - name: Install Dependencies
84      run: sudo apt-get install --no-install-recommends clang-12 libncursesw5-dev libhwloc-dev libnl-3-dev libnl-genl-3-dev libsensors4-dev libcap-dev
85    - name: Bootstrap
86      run: ./autogen.sh
87    - name: Configure
88      run: ./configure --enable-werror --enable-openvz --enable-vserver --enable-ancient-vserver --enable-unicode --enable-hwloc --enable-delayacct --enable-sensors --enable-capabilities
89    - name: Build
90      run: make -k
91    - name: Distcheck
92      run: make distcheck DISTCHECK_CONFIGURE_FLAGS='--enable-werror --enable-openvz --enable-vserver --enable-ancient-vserver --enable-unicode --enable-hwloc --enable-delayacct --enable-sensors --enable-capabilities'
93
94  build-ubuntu-latest-gcc-static:
95    runs-on: ubuntu-latest
96    # Enable LTO, might trigger additional warnings on advanced inlining
97    env:
98      CFLAGS: -O3 -g -flto
99      LDFLAGS: -O3 -g -flto
100    steps:
101    - uses: actions/checkout@v2
102    - name: Install Dependencies
103      run: sudo apt-get install --no-install-recommends libncursesw5-dev libtinfo-dev libgpm-dev libsensors4-dev libcap-dev
104    - name: Bootstrap
105      run: ./autogen.sh
106    - name: Configure
107      run: ./configure --enable-static --enable-werror --enable-openvz --enable-vserver --enable-ancient-vserver --enable-unicode --disable-hwloc --disable-delayacct --enable-sensors --enable-capabilities
108    - name: Build
109      run: make -k
110    - name: Distcheck
111      run: make distcheck DISTCHECK_CONFIGURE_FLAGS='--enable-static --enable-werror --enable-openvz --enable-vserver --enable-ancient-vserver --enable-unicode --disable-hwloc --disable-delayacct --enable-sensors --enable-capabilities'
112
113  build-ubuntu-latest-pcp:
114    # Turns out 'ubuntu-latest' can be older than 20.04, we want PCP v5+
115    runs-on: ubuntu-20.04
116    steps:
117    - uses: actions/checkout@v2
118    - name: Install Dependencies
119      run: sudo apt-get install --no-install-recommends libpcp3-dev libncursesw5-dev libtinfo-dev libgpm-dev
120    - name: Bootstrap
121      run: ./autogen.sh
122    - name: Configure
123      # Until Ubuntu catches up with pcp-5.2.3+, cannot use -werror due to:
124      # passing argument 2 of ‘pmLookupName’ from incompatible pointer type
125      run: ./configure --enable-pcp --enable-unicode
126    - name: Build
127      run: make -k
128
129  build-ubuntu-latest-clang-analyzer:
130    runs-on: ubuntu-latest
131    env:
132      CC: clang-12
133    steps:
134    - uses: actions/checkout@v2
135    - name: install clang repo
136      run: |
137        wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key 2>/dev/null | sudo apt-key add -
138        sudo add-apt-repository 'deb http://apt.llvm.org/focal/ llvm-toolchain-focal-12 main' -y
139        sudo apt-get update -q
140    - name: Install Dependencies
141      run: sudo apt-get install --no-install-recommends clang-12 clang-tools-12 libncursesw5-dev libnl-3-dev libnl-genl-3-dev libsensors4-dev libcap-dev
142    - name: Bootstrap
143      run: ./autogen.sh
144    - name: Configure
145      run: scan-build-12 -analyze-headers --status-bugs ./configure --enable-debug --enable-werror --enable-openvz --enable-vserver --enable-ancient-vserver --enable-unicode --enable-delayacct --enable-sensors --enable-capabilities
146    - name: Build
147      run: scan-build-12 -analyze-headers --status-bugs make -j"$(nproc)"
148
149  build-macos-latest-clang:
150    runs-on: macOS-latest
151    env:
152      CC: clang
153    steps:
154    - uses: actions/checkout@v2
155    - name: Install Dependencies
156      run: brew install automake
157    - name: Bootstrap
158      run: ./autogen.sh
159    - name: Configure
160      run: ./configure --enable-werror
161    - name: Build
162      run: make -k
163    - name: Distcheck
164      run: make distcheck DISTCHECK_CONFIGURE_FLAGS="--enable-werror"
165
166  whitespace_check:
167    runs-on: ubuntu-latest
168    steps:
169      - uses: actions/checkout@v2
170      - name: check-whitespaces
171        run: git diff-tree --check $(git hash-object -t tree /dev/null) HEAD
172