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-18.04 steps: - uses: actions/checkout@v2 - 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-18.04", "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@v2 with: submodules: 'true' # https://github.com/actions/virtual-environments/issues/3376 - name: Workaround GHA Issue with GCC 11 if: matrix.compiler.CC == 'clang' && matrix.platform == 'ubuntu-18.04' run: | sudo apt remove libgcc-11-dev gcc-11 - 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-18.04", "macos-latest"] python: - "3.6" - "3.7" - "3.8" runs-on: ${{ matrix.platform }} steps: - uses: actions/checkout@v2 - uses: actions/setup-python@v1 with: python-version: ${{ matrix.python }} - name: build run: | python3 setup.py build - name: sdist and install run: | python3 setup.py sdist python3 -m pip install --user dist/*.tar.gz - name: test run: | python3 tests/test_pepy.py tests/assets/example.exe pe-parse-windows: strategy: matrix: build-arch: ["x64", "Win32"] build-type: ["Debug", "Release"] build-shared: ["0", "1"] runs-on: windows-latest steps: - uses: actions/checkout@v2 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.8.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.6" - "3.7" - "3.8" runs-on: windows-latest steps: - uses: actions/checkout@v2 - uses: actions/setup-python@v1 with: python-version: ${{ matrix.python }} - name: build run: | python setup.py build - name: install run: | python -m pip install --user . - name: test run: | python tests/test_pepy.py tests/assets/example.exe