William Woodruff eecdb3d36e
Fix some sign conversions, CI cleanup (#170)
* cmake: add -Wconversion to default flags

Signed-off-by: William Woodruff <william@trailofbits.com>

* workflows/ci: use ubuntu-latest

Signed-off-by: William Woodruff <william@trailofbits.com>

* parse: avoid an implicit conversion

Signed-off-by: William Woodruff <william@trailofbits.com>

* parse: use static_cast

Signed-off-by: William Woodruff <william@trailofbits.com>

* include/parse: remove some more implicit conversions

Signed-off-by: William Woodruff <william@trailofbits.com>

* parse: clang-format

Signed-off-by: William Woodruff <william@trailofbits.com>

* cmake: remove -Wconversion

Signed-off-by: William Woodruff <william@trailofbits.com>

* pepy: Python 3.7 or newer

Signed-off-by: William Woodruff <william@trailofbits.com>

* workflows/ci: bump actions, use pypa/build

Signed-off-by: William Woodruff <william@trailofbits.com>

* workflows/ci: fix windows pepy matrix

Signed-off-by: William Woodruff <william@trailofbits.com>

* setup: macro tweaks

Signed-off-by: William Woodruff <william@trailofbits.com>

* setup: escape harder

Signed-off-by: William Woodruff <william@trailofbits.com>

* ci, setup: drop python 3.7

This setuptools bug isn't worth working around.

Signed-off-by: William Woodruff <william@trailofbits.com>

* Revert "ci, setup: drop python 3.7"

This reverts commit d0599831a8adc739b94f41c0ab3d2833bd0bc27e.

* workflows/ci: update setuptools

Signed-off-by: William Woodruff <william@trailofbits.com>

* setup: remove escape

Signed-off-by: William Woodruff <william@trailofbits.com>
2022-05-13 15:13:13 -04:00

170 lines
4.3 KiB
YAML

name: CI
on:
push:
branches:
- master
pull_request:
schedule:
# run CI every day even if no PRs/merges occur
- cron: '0 12 * * *'
jobs:
lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: deps
run: |
sudo apt-get update
sudo apt-get install -y clang-format-9
- name: lint
run: |
mkdir build && cd build
cmake ..
cmake --build . --target peparse_format
cd .. && git diff --exit-code
pe-parse:
strategy:
matrix:
platform: ["ubuntu-latest", "macos-latest"]
build-type: ["Debug", "Release"]
build-shared: ["0", "1"]
compiler:
- { CC: "clang", CXX: "clang++" }
- { CC: "gcc", CXX: "g++" }
exclude:
- platform: macos-latest
compiler: { CC: "gcc", CXX: "g++" }
runs-on: ${{ matrix.platform }}
steps:
- uses: actions/checkout@v3
with:
submodules: 'true'
- name: Enable ASan+UBSan Sanitizers
if: matrix.build-type == 'Debug'
run: |
echo "SANITIZER_FLAG=-DPEPARSE_USE_SANITIZER=Address,Undefined" >> $GITHUB_ENV
- name: build
env:
CC: ${{ matrix.compiler.CC }}
CXX: ${{ matrix.compiler.CXX }}
run: |
mkdir build
cd build
cmake \
-DCMAKE_BUILD_TYPE=${{ matrix.build-type }} \
-DBUILD_SHARED_LIBS=${{ matrix.build-shared }} \
-DPEPARSE_ENABLE_TESTING=ON \
-DPEPARSE_ENABLE_EXAMPLES=ON \
${SANITIZER_FLAG} \
..
cmake --build .
- name: test
env:
CTEST_OUTPUT_ON_FAILURE: 1
run: |
cd build && ctest -V
./dump-pe/dump-pe ../tests/assets/example.exe
pepy:
strategy:
matrix:
platform: ["ubuntu-latest", "macos-latest"]
python:
- "3.7"
- "3.8"
- "3.9"
- "3.10"
runs-on: ${{ matrix.platform }}
steps:
- uses: actions/checkout@v3
- uses: actions/setup-python@v3
with:
python-version: ${{ matrix.python }}
- name: build
run: |
python -m pip install build wheel setuptools
python -m build
- name: test distributions
run: |
for dist in dist/*; do
python -m venv test-env
./test-env/bin/python -m pip install "${dist}"
./test-env/bin/python tests/test_pepy.py tests/assets/example.exe
rm -rf test-env
done
pe-parse-windows:
strategy:
matrix:
build-arch: ["x64", "Win32"]
build-type: ["Debug", "Release"]
build-shared: ["0", "1"]
runs-on: windows-2019
steps:
- uses: actions/checkout@v3
with:
submodules: 'true'
- name: Enable ASan Sanitizers
if: matrix.build-type == 'Debug' && matrix.build-arch == 'x64'
run: |
echo "SANITIZER_FLAG=-DPEPARSE_USE_SANITIZER=Address" | Out-File -FilePath $Env:GITHUB_ENV -Encoding utf-8 -Append
- uses: ilammy/msvc-dev-cmd@v1.10.0
with:
arch: ${{ matrix.build-arch }}
- name: build
run: |
mkdir build
cd build
cmake `
-G "Visual Studio 16 2019" `
-A ${{ matrix.build-arch }} `
-DBUILD_SHARED_LIBS=${{ matrix.build-shared }} `
-DPEPARSE_ENABLE_TESTING=ON `
-DPEPARSE_ENABLE_EXAMPLES=ON `
$Env:SANITIZER_FLAG `
..
cmake --build . --config ${{ matrix.build-type }}
- name: install
run: |
cd build
cmake --build . --config ${{ matrix.build-type }} --target install
- name: test
env:
CTEST_OUTPUT_ON_FAILURE: 1
run: |
cd build
ctest -V
.\bin\dump-pe.exe ..\tests\assets\example.exe
pepy-windows:
strategy:
matrix:
python:
- "3.7"
- "3.8"
- "3.9"
- "3.10"
runs-on: windows-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-python@v3
with:
python-version: ${{ matrix.python }}
- name: build
run: |
python -m pip install --upgrade build wheel setuptools
python -m build
- name: install
run: |
python -m pip install --user .
- name: test
run: |
python tests/test_pepy.py tests/assets/example.exe