From af8327c51f7b3721bcbf52683c31e6c3d6555bf7 Mon Sep 17 00:00:00 2001 From: zaikunzhang Date: Fri, 19 Apr 2024 22:23:57 +0800 Subject: [PATCH] 240419.222357.HKT add compile_mex.yml --- .github/workflows/compile_mex.yml | 139 ++++++++++++++++++++++++++++++ 1 file changed, 139 insertions(+) create mode 100644 .github/workflows/compile_mex.yml diff --git a/.github/workflows/compile_mex.yml b/.github/workflows/compile_mex.yml new file mode 100644 index 0000000000..22518c3fbc --- /dev/null +++ b/.github/workflows/compile_mex.yml @@ -0,0 +1,139 @@ +name: Compile MEX + +on: + # Trigger the workflow on push or pull request + workflow_dispatch: + inputs: + git-ref: + description: Git Ref (Optional) + required: false + +# Show the git ref in the workflow name if it is invoked manually. +run-name: ${{ github.event_name == 'workflow_dispatch' && format('Manual run {0}', inputs.git-ref) || '' }} + + +jobs: + test: + name: Compile MEX + runs-on: ${{ matrix.os }} + strategy: + fail-fast: false + matrix: + os: [windows-2019, windows-2021, macos-11, macos-12, macos-13] + matlab: [R2020b, R2021a, R2021b, R2022a, R2022b, R2023a, R2023b, latest] + + exclude: + + # Below R2022a, MEX is extremely slow on macOS + - os: macos-11 + matlab: R2020b + - os: macos-11 + matlab: R2021a + - os: macos-11 + matlab: R2021b + + - os: macos-latest + matlab: R2020b + - os: macos-latest + matlab: R2021a + - os: macos-latest + matlab: R2021b + + - os: macos-13 + matlab: R2020b + - os: macos-13 + matlab: R2021a + - os: macos-13 + matlab: R2021b + + # Only R2021a/b and R2022a are available on Windows 2019. Test on R2021a often fails due to overtime. + - os: windows-2019 + matlab: R2020b + - os: windows-2019 + matlab: R2021a + - os: windows-2019 + matlab: R2022b + - os: windows-2019 + matlab: R2023a + - os: windows-2019 + matlab: R2023b + - os: windows-2019 + matlab: latest + + # Below R2022a, MEX does not work on windows-latest due to the version of MS Visual Studio; + # R2022a/b should work according to the documentation of MathWorks and GitHub Actions, but + # they do not as of March 2022 + - os: windows-latest + matlab: R2020a + - os: windows-latest + matlab: R2020b + - os: windows-latest + matlab: R2021a + - os: windows-latest + matlab: R2021b + - os: windows-latest + matlab: R2022a + - os: windows-latest + matlab: R2022b + + + steps: + + - name: Set http.postBuffer and core.compression + # This is a workaround for random "early EOF" of checkout. + # See https://github.com/actions/checkout/issues/748, https://github.com/actions/checkout/issues/1379 + if: startsWith(matrix.os, 'windows') + run: git config --global http.postBuffer 1048576000 && git config --global core.compression 0 + + - name: Clone Repository (Latest) + uses: actions/checkout@v4 + if: github.event.inputs.git-ref == '' + with: + submodules: recursive + # ssh-key: ${{ secrets.SSH_PRIVATE_KEY_ACT }} # This forces checkout to use SSH, not HTTPS + # As of 231227, checkout with ssh fails frequently on Windows runners. + - name: Clone Repository (Custom Ref) + uses: actions/checkout@v4 + if: github.event.inputs.git-ref != '' + with: + ref: ${{ github.event.inputs.git-ref }} + submodules: recursive + # ssh-key: ${{ secrets.SSH_PRIVATE_KEY_ACT }} # This forces checkout to use SSH, not HTTPS + # As of 231227, checkout with ssh fails frequently on Windows runners. + + - name: Miscellaneous setup + run: bash .github/scripts/misc_setup + + - name: Install Intel oneAPI on macOS + if: startsWith(matrix.os, 'macos') + run: bash .github/scripts/install_oneapi_macos.sh + + - name: Install Intel oneAPI on Windows + if: startsWith(matrix.os, 'windows') + #run: cmd.exe "/K" '".github\scripts\install_oneapi_windows.bat"' # As of MATLAB R2023a, oneAPI 2024 does not work. Try again later. + run: cmd.exe "/K" '".github\scripts\install_oneapi_windows.bat 2023"' + + - name: Set up MATLAB + uses: matlab-actions/setup-matlab@v2.1.2 + with: + release: ${{ matrix.matlab }} + cache: true + products: Parallel_Computing_Toolbox + + - name: Compile the MEX functions + uses: matlab-actions/run-command@v2.1.1 + with: + command: | + options.debug = true; + options.single = true; + options.quadruple = true; + options.classical = false; + options.verbose = true; + setup(options) + + + - name: Store artifacts + uses: actions/upload-artifact@v4.3.1 + with: + name: ${{ matrix.os }}-${{ matrix.matlab }} + path: ${{ env.TEST_DIR }}/prima