mirror of
https://github.com/QuasarApp/pe-parse.git
synced 2025-04-26 04:14:32 +00:00
* 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>
170 lines
4.3 KiB
YAML
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
|