on: [pull_request, push]
env:
DEF_CFLAGS: -O2 -g -Wall -Werror
- DEPENDENCIES: autoconf automake libtool pkgconf libfuse-dev ntfs-3g-dev ntfs-3g
+ DEPENDENCIES: autoconf automake libtool pkgconf libfuse3-dev fuse3 ntfs-3g-dev ntfs-3g
jobs:
gcc-build-and-test:
name: Build and test with gcc
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@v3
+ - uses: actions/checkout@v4
- name: Install dependencies
run: |
sudo apt-get update
- run: make -j8 check V=1
- run: make -j8 install V=1 DESTDIR=$PWD/installdir
- run: make -j8 uninstall V=1 DESTDIR=$PWD/installdir
- - uses: actions/upload-artifact@v3
+ - uses: actions/upload-artifact@v4
if: failure()
with:
name: gcc-test-logs
name: Build and test with clang
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@v3
+ - uses: actions/checkout@v4
- name: Install dependencies
run: |
sudo apt-get update
- run: make -j8 check V=1
- run: make -j8 install V=1 DESTDIR=$PWD/installdir
- run: make -j8 uninstall V=1 DESTDIR=$PWD/installdir
- - uses: actions/upload-artifact@v3
+ - uses: actions/upload-artifact@v4
if: failure()
with:
name: clang-test-logs
name: Build and test with gcc -m32
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@v3
+ - uses: actions/checkout@v4
- name: Install dependencies
run: |
sudo dpkg --add-architecture i386
- run: make -j8 check V=1
- run: make -j8 install V=1 DESTDIR=$PWD/installdir
- run: make -j8 uninstall V=1 DESTDIR=$PWD/installdir
- - uses: actions/upload-artifact@v3
+ - uses: actions/upload-artifact@v4
if: failure()
with:
name: i386-test-logs
name: Build and test with ASAN enabled
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@v3
+ - uses: actions/checkout@v4
- name: Install dependencies
run: |
sudo apt-get update
- run: ./bootstrap
- run: ./configure CC=clang CFLAGS="$DEF_CFLAGS -fsanitize=address -fno-sanitize-recover=address"
- run: make -j8 check V=1
- - uses: actions/upload-artifact@v3
+ - uses: actions/upload-artifact@v4
if: failure()
with:
name: asan-test-logs
name: Build and test with UBSAN enabled
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@v3
+ - uses: actions/checkout@v4
- name: Install dependencies
run: |
sudo apt-get update
- run: ./bootstrap
- run: ./configure CC=clang CFLAGS="$DEF_CFLAGS -fsanitize=undefined -fno-sanitize-recover=undefined"
- run: make -j8 check V=1
- - uses: actions/upload-artifact@v3
+ - uses: actions/upload-artifact@v4
if: failure()
with:
name: ubsan-test-logs
path: tests/*.log
+ run-shellcheck:
+ name: Run shellcheck
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v4
+ - name: Install dependencies
+ run: |
+ sudo apt-get update
+ sudo apt-get install -y shellcheck
+ - name: Run shellcheck
+ run: shellcheck tools/*.sh tools/*/*.sh
+
macos-build-and-test:
name: Build and test on macOS
runs-on: macos-latest
steps:
- - uses: actions/checkout@v3
+ - uses: actions/checkout@v4
- name: Install dependencies
run: |
brew install autoconf automake libtool pkg-config
- run: make -j8 check V=1
- run: make -j8 install DESTDIR=$PWD/installdir
- run: make -j8 uninstall DESTDIR=$PWD/installdir
- - uses: actions/upload-artifact@v3
+ - uses: actions/upload-artifact@v4
if: failure()
with:
name: macos-test-logs
run:
shell: msys2 {0}
steps:
- - uses: actions/checkout@v3
+ - uses: actions/checkout@v4
with:
- fetch-depth: 0 # Need tags for tools/get-version-number
+ fetch-depth: 0 # Need tags for tools/get-version-number.sh
- uses: msys2/setup-msys2@v2
with:
msystem: ${{matrix.msystem}}
make
${{matrix.cc_pkg}}
pkgconf
- - run: CFLAGS="$DEF_CFLAGS" ./tools/make-windows-release ${{matrix.options}}
- - uses: actions/upload-artifact@v3
+ - run: CFLAGS="$DEF_CFLAGS" ./tools/windows-build.sh ${{matrix.options}}
+ - uses: actions/upload-artifact@v4
with:
name: windows-${{matrix.msystem}}-bin
path: wimlib-*-bin
+ win32-test-imagex-capture-and-apply:
+ name: Run win32-test-imagex-capture_and_apply.bat
+ runs-on: windows-latest
+ defaults:
+ run:
+ shell: msys2 {0}
+ steps:
+ - uses: actions/checkout@v4
+ with:
+ fetch-depth: 0 # Need tags for tools/get-version-number.sh
+ - uses: msys2/setup-msys2@v2
+ with:
+ msystem: MINGW64
+ update: true
+ install: >
+ autoconf
+ automake
+ git
+ libtool
+ make
+ mingw-w64-x86_64-gcc
+ pkgconf
+ - run: tests/win32-test-imagex-capture_and_apply.sh
+
fuzz-with-libFuzzer:
name: Fuzz with libFuzzer (${{matrix.target}} ${{matrix.sanitizer}})
strategy:
sanitizer:
- target: wim
sanitizer: --asan --ubsan
- - target: xml
+ - target: encoding
+ sanitizer: --asan --ubsan
+ - target: xmlproc
sanitizer:
- - target: xml
+ - target: xmlproc
+ sanitizer: --asan --ubsan
+ - target: xml_windows
sanitizer: --asan --ubsan
- target: compress
sanitizer:
sanitizer: --asan --ubsan
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@v3
+ - uses: actions/checkout@v4
- name: Install dependencies
run: |
sudo apt-get update
run: |
tools/libFuzzer/fuzz.sh --time=120 ${{matrix.sanitizer}} \
${{matrix.target}}
+
+ fuzz-with-wlfuzz-linux:
+ name: Fuzz with wlfuzz (Linux, ${{matrix.sanitizer}})
+ strategy:
+ matrix:
+ include:
+ - sanitizer: none
+ cflags:
+ - sanitizer: ASAN
+ cflags: -fsanitize=address -fno-sanitize-recover=address
+ - sanitizer: UBSAN
+ cflags: -fsanitize=undefined -fno-sanitize-recover=undefined
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v4
+ - name: Install dependencies
+ run: |
+ sudo apt-get update
+ sudo apt-get install -y clang $DEPENDENCIES
+ - run: ./bootstrap
+ - run: ./configure --enable-test-support CC=clang CFLAGS="$DEF_CFLAGS ${{matrix.cflags}}"
+ - run: make -j8 tests/wlfuzz
+ - run: TMPDIR=$PWD/tmp.wlfuzz tests/wlfuzz 120
+
+ fuzz-with-wlfuzz-windows:
+ name: Fuzz with wlfuzz (Windows)
+ runs-on: windows-latest
+ defaults:
+ run:
+ shell: msys2 {0}
+ steps:
+ - uses: actions/checkout@v4
+ with:
+ fetch-depth: 0 # Need tags for tools/get-version-number.sh
+ - uses: msys2/setup-msys2@v2
+ with:
+ msystem: MINGW64
+ update: true
+ install: >
+ autoconf
+ automake
+ git
+ libtool
+ make
+ mingw-w64-x86_64-gcc
+ pkgconf
+ - run: CFLAGS="$DEF_CFLAGS" ./tools/windows-build.sh -- --enable-test-support
+ - run: make tests/wlfuzz.exe
+ - run: TMPDIR=$PWD/tmp.wlfuzz tests/wlfuzz 120