ptx: Prevent Context use-after-free in finalizers #103
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: CI | |
| # Trigger the workflow on push or pull request | |
| on: | |
| # workflow_dispatch: | |
| pull_request: | |
| # branches: [master] | |
| types: [synchronize, opened, reopened] | |
| push: | |
| # branches: [main] | |
| paths: | |
| - '.github/workflows/ci.yml' | |
| - 'cabal.project' | |
| - 'stack.yaml' | |
| - '*/src/**' | |
| - '*/test/**' | |
| - '*/cbits/**' | |
| schedule: | |
| # additionally run once per week (At 00:00 on Sunday) to maintain cache | |
| - cron: '0 0 * * 0' | |
| jobs: | |
| cabal: | |
| name: cabal | ${{ matrix.sys.os }}-${{ matrix.arch }} ghc-${{ matrix.ghc }} ${{ matrix.mode }} | |
| runs-on: ${{ matrix.sys.os }} | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| sys: | |
| - { os: 'ubuntu-latest', shell: 'bash' } | |
| - { os: 'macOS-latest', shell: 'bash' } | |
| - { os: 'windows-latest', shell: 'msys2 {0}' } | |
| arch: | |
| - 'x64' | |
| - 'ARM64' | |
| ghc: | |
| - 'latest' | |
| - '9.6' | |
| - '9.4' | |
| - '9.2' | |
| mode: | |
| - 'debug' | |
| - 'release' | |
| exclude: | |
| - sys: | |
| - os: 'windows-latest' | |
| mode: 'debug' | |
| - arch: 'ARM64' | |
| defaults: | |
| run: | |
| shell: ${{ matrix.sys.shell }} | |
| steps: | |
| - uses: actions/checkout@v3 | |
| - uses: actions/checkout@v3 | |
| with: | |
| repository: actions/cache | |
| path: .github/actions/cache-always | |
| ref: v3 | |
| # Tweak `action.yml` of `actions/cache@v3` to remove the `post-if` | |
| # condition, making it default to `post-if: always ()`. | |
| - name: Run actions/cache-always@v3 | |
| run: | | |
| sed -i'~' -e '/ post-if: /d' .github/actions/cache-always/action.yml | |
| shell: bash | |
| - uses: msys2/setup-msys2@v2 | |
| if: matrix.sys.os == 'windows-latest' | |
| with: | |
| path-type: inherit | |
| msystem: clang64 | |
| - uses: haskell/actions/setup@v2 | |
| id: setup-haskell | |
| with: | |
| ghc-version: ${{ matrix.ghc }} | |
| cabal-version: latest | |
| - name: Set up environment (ubuntu) | |
| if: matrix.sys.os == 'ubuntu-latest' | |
| run: | | |
| wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2404/x86_64/cuda-keyring_1.1-1_all.deb | |
| sudo dpkg -i cuda-keyring_1.1-1_all.deb | |
| sudo apt-get update | |
| sudo apt-get -y install clang cuda-12-9 | |
| echo "LD_LIBRARY_PATH=/usr/local/cuda-12.9/lib64:/usr/local/cuda-12.9/nvvm/lib64:${LD_LIBRARY_PATH}" >> $GITHUB_ENV | |
| echo "/usr/local/cuda-12.9/bin" >> $GITHUB_PATH | |
| echo "package accelerate" >> cabal.project | |
| if [ ${{ matrix.mode }} == 'release' ]; then | |
| echo " flags: +nofib" >> cabal.project | |
| else | |
| echo " flags: +nofib +debug +tracy" >> cabal.project | |
| echo " ghc-options: -optc=-DTRACY_TIMER_FALLBACK -optcxx=-DTRACY_TIMER_FALLBACK" >> cabal.project | |
| sudo apt-get -y install pkg-config libcapstone-dev libfreetype-dev libglfw3-dev libgtk-3-dev libtbb-dev | |
| fi | |
| - name: Set up environment (macOS) | |
| if: matrix.sys.os == 'macOS-latest' | |
| run: | | |
| echo "package accelerate" >> cabal.project | |
| if [ ${{ matrix.mode }} == 'release' ]; then | |
| echo " flags: +nofib" >> cabal.project | |
| else | |
| echo " flags: +nofib +debug +tracy" >> cabal.project | |
| echo " ghc-options: -optc=-DTRACY_TIMER_FALLBACK -optcxx=-DTRACY_TIMER_FALLBACK" >> cabal.project | |
| brew install pkg-config capstone freetype glfw | |
| fi | |
| - name: Set up environment (windows) | |
| if: matrix.sys.os == 'windows-latest' | |
| run: | | |
| # https://stackoverflow.com/questions/33969803/how-to-obtain-older-versions-of-packages-using-msys2 | |
| # https://packages.msys2.org/package/mingw-w64-clang-x86_64-clang | |
| curl -LO https://repo.msys2.org/mingw/clang64/mingw-w64-clang-x86_64-clang-18.1.8-1-any.pkg.tar.zst | |
| pacman -U --noconfirm mingw-w64-clang-x86_64-clang-18.1.8-1-any.pkg.tar.zst | |
| choco install cuda --version=12.9.1.576 | |
| echo "package accelerate" >> cabal.project | |
| echo " flags: +nofib" >> cabal.project | |
| - name: Clone submodules | |
| run: git submodule update --init --recursive | |
| - name: Configure | |
| run: cabal configure --enable-tests --test-show-details=direct --test-option="--num-threads=1" | |
| - name: Freeze | |
| run: | | |
| cabal freeze | |
| sed -i'~' -e '/^index-state:/d' cabal.project.freeze | |
| - name: Run actions/cache-always@v3 | |
| uses: ./.github/actions/cache-always | |
| with: | |
| path: | | |
| ${{ steps.setup-haskell.outputs.cabal-store }} | |
| dist-newstyle | |
| key: ${{ runner.os }}-${{ matrix.arch }}-${{ matrix.ghc }}-cabal-${{ hashFiles('cabal.project.freeze') }} | |
| restore-keys: | | |
| ${{ runner.os }}-${{ matrix.arch }}-${{ matrix.ghc }}-cabal-${{ hashFiles('cabal.project.freeze') }} | |
| ${{ runner.os }}-${{ matrix.arch }}-${{ matrix.ghc }}-cabal- | |
| - name: Build accelerate-llvm | |
| run: cabal build accelerate-llvm | |
| - name: Build accelerate-llvm-native | |
| run: cabal build accelerate-llvm-native | |
| - name: Build accelerate-llvm-ptx | |
| run: cabal build accelerate-llvm-ptx | |
| if: matrix.sys.os != 'macOS-latest' | |
| - name: Test accelerate-llvm-native | |
| run: cabal test accelerate-llvm-native | |
| # Behaviour of cabal haddock has changed: https://github.com/haskell/cabal/issues/8725 | |
| - name: Haddock accelerate-llvm | |
| run: cabal haddock accelerate-llvm --disable-documentation | |
| - name: Haddock accelerate-llvm-native | |
| run: cabal haddock accelerate-llvm-native --disable-documentation | |
| - name: Haddock accelerate-llvm-ptx | |
| run: cabal haddock accelerate-llvm-ptx --disable-documentation | |
| if: matrix.sys.os != 'macOS-latest' | |
| stack: | |
| name: stack | ${{ matrix.sys.os }}-${{ matrix.arch }} | |
| runs-on: ${{ matrix.sys.os }} | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| sys: | |
| - { os: 'ubuntu-latest', shell: 'bash' } | |
| - { os: 'macOS-latest', shell: 'bash' } | |
| - { os: 'windows-latest', shell: 'msys2 {0}' } | |
| arch: | |
| - 'x64' | |
| - 'ARM64' | |
| exclude: | |
| - arch: 'ARM64' | |
| defaults: | |
| run: | |
| shell: ${{ matrix.sys.shell }} | |
| steps: | |
| - uses: actions/checkout@v3 | |
| - uses: actions/checkout@v3 | |
| with: | |
| repository: actions/cache | |
| path: .github/actions/cache-always | |
| ref: v3 | |
| # Tweak `action.yml` of `actions/cache@v3` to remove the `post-if` | |
| # condition, making it default to `post-if: always ()`. | |
| - name: Run actions/cache-always@v3 | |
| run: | | |
| sed -i'~' -e '/ post-if: /d' .github/actions/cache-always/action.yml | |
| shell: bash | |
| - uses: msys2/setup-msys2@v2 | |
| if: matrix.sys.os == 'windows-latest' | |
| with: | |
| path-type: inherit | |
| msystem: clang64 | |
| - uses: haskell/actions/setup@v2 | |
| id: setup-haskell | |
| with: | |
| enable-stack: true | |
| stack-no-global: true | |
| - name: actions/cache-always@v3 | |
| uses: ./.github/actions/cache-always | |
| with: | |
| path: | | |
| ${{ steps.setup-haskell.outputs.stack-root }} | |
| .stack-work | |
| key: ${{ runner.os }}-${{ matrix.arch }}-stack-${{ hashFiles('stack.yaml') }} | |
| restore-keys: | | |
| ${{ runner.os }}-${{ matrix.arch }}-stack-${{ hashFiles('stack.yaml') }} | |
| ${{ runner.os }}-${{ matrix.arch }}-stack- | |
| # TODO: LLVM and Cuda are commented out here to make CI work on this | |
| # so-far Native-only refactor of the backend | |
| - name: Set up environment (ubuntu) | |
| if: matrix.sys.os == 'ubuntu-latest' | |
| run: | | |
| wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2404/x86_64/cuda-keyring_1.1-1_all.deb | |
| sudo dpkg -i cuda-keyring_1.1-1_all.deb | |
| sudo apt-get update | |
| sudo apt-get -y install clang cuda-12-9 | |
| echo "LD_LIBRARY_PATH=/usr/local/cuda-12.9/lib64:/usr/local/cuda-12.9/nvvm/lib64:${LD_LIBRARY_PATH}" >> $GITHUB_ENV | |
| echo "/usr/local/cuda-12.9/bin" >> $GITHUB_PATH | |
| - name: Set up environment (windows) | |
| if: matrix.sys.os == 'windows-latest' | |
| run: | | |
| # https://stackoverflow.com/questions/33969803/how-to-obtain-older-versions-of-packages-using-msys2 | |
| # https://packages.msys2.org/package/mingw-w64-clang-x86_64-clang | |
| curl -LO https://repo.msys2.org/mingw/clang64/mingw-w64-clang-x86_64-clang-18.1.8-1-any.pkg.tar.zst | |
| pacman -U --noconfirm mingw-w64-clang-x86_64-clang-18.1.8-1-any.pkg.tar.zst | |
| choco install cuda --version=12.9.1.576 | |
| - name: Setup | |
| run: stack setup | |
| - name: Build accelerate-llvm | |
| run: stack build accelerate-llvm | |
| - name: Build accelerate-llvm-native | |
| run: stack build accelerate-llvm-native | |
| - name: Build accelerate-llvm-ptx | |
| run: stack build accelerate-llvm-ptx | |
| if: matrix.sys.os != 'macOS-latest' | |
| # vi: nospell |