3745: Fix triXsolve arguments in code-generation #5
This file contains 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: binaries | |
on: [push, pull_request] | |
env: | |
cache-suffix: v9 | |
build_flags: "-DWITH_COMMON=OFF -DWITH_BUILD_REQUIRED=ON -DWITH_BUILD_BONMIN=ON -DWITH_BONMIN=ON -DWITH_IPOPT=ON -DWITH_BUILD_IPOPT=ON -DWITH_BUILD_LAPACK=ON -DWITH_LAPACK=ON -DWITH_MUMPS=ON -DWITH_CLP=ON -DWITH_BUILD_CLP=ON -DWITH_CBC=ON -DWITH_BUILD_CBC=ON -DWITH_THREAD=ON -DWITH_QPOASES=ON -DWITH_HPIPM=ON -DWITH_BLASFEO=ON -DWITH_BUILD_HPIPM=ON -DWITH_BUILD_BLASFEO=ON -DWITH_HIGHS=ON -DWITH_BUILD_HIGHS=ON -DWITH_BUILD_SPRAL=ON -DWITH_SPRAL=ON -DWITH_PROXQP=ON -DWITH_OSQP=ON -DWITH_SUPERSCS=ON -DWITH_KNITRO=ON -DWITH_MOCKUP_KNITRO=ON -DWITH_CPLEX=ON -DWITH_MOCKUP_CPLEX=ON -DWITH_GUROBI=ON -DWITH_MOCKUP_GUROBI=ON -DWITH_HSL=ON -DWITH_MOCKUP_HSL=ON -DWITH_WORHP=ON -DWITH_MOCKUP_WORHP=ON -DWITH_SUNDIALS=ON -DWITH_BUILD_SUNDIALS=ON -DWITH_BUILD_CSPARSE=ON -DWITH_BUILD_METIS=ON -DWITH_BUILD_BLASFEO=ON -DWITH_BUILD_SUPERSCS=ON -DWITH_BUILD_OSQP=ON -DWITH_BUILD_EIGEN3=ON -DWITH_BUILD_SIMDE=ON -DWITH_BUILD_PROXQP=ON -DWITH_SNOPT=ON -DWITH_MOCKUP_SNOPT=ON -DWITH_AMPL=ON -DWITH_BLOCKSQP=ON -DWITH_SLEQP=ON -DWITH_SLEQP_BUILD=ON -DWITH_ALPAQA=ON -DWITH_BUILD_ALPAQA=ON -DWITH_DAQP=ON -DWITH_BUILD_DAQP=ON -DWITH_FATROP=ON -DWITH_BUILD_FATROP=ON" | |
build_flags_32bit: "-DWITH_HPIPM=OFF -DWITH_BLASFEO=OFF -DWITH_BUILD_HPIPM=OFF -DWITH_BUILD_BLASFEO=OFF -DWITH_CPLEX=OFF -DWITH_FATROP=OFF -DWITH_BUILD_FATROP=OFF" | |
build_flags_manylinux1: "-DWITH_HIGHS=OFF -DWITH_BUILD_HIGHS=OFF -DWITH_BUILD_SPRAL=OFF -DWITH_SPRAL=OFF -DWITH_PROXQP=OFF -DWITH_BUILD_PROXQP=OFF -DWITH_BUILD_EIGEN3=OFF -DWITH_BUILD_SIMDE=OFF -DWITH_SLEQP=OFF -DWITH_BUILD_SLEQP=OFF -DWITH_BUILD_ALPAQA=OFF -DWITH_ALPAQA=OFF -DWITH_BQPD=OFF -DWITH_UNO=OFF -DWITH_FATROP=OFF -DWITH_BUILD_FATROP=OFF" | |
build_flags_windows: "" | |
build_flags_mac: "-DWITH_SPRAL=OFF -DWITH_BUILD_SPRAL=OFF -DWITH_BUILD_LAPACK=OFF -DWITH_WORHP=OFF -DWITH_MOCKUP_WORHP=OFF -DWITH_BQPD=OFF -DWITH_UNO=OFF" | |
build_flags_mac_intel: "-DWITH_PROXQP=OFF -DWITH_BUILD_PROXQP=OFF -DWITH_BUILD_EIGEN3=OFF -DWITH_BUILD_SIMDE=OFF -DWITH_BUILD_ALPAQA=OFF -DWITH_ALPAQA=OFF -DWITH_DAQP=OFF -DWITH_BUILD_DAQP=OFF" | |
build_flags_mac_m1: "-DALLOW_DOCKER=ON -DWITH_HPIPM=OFF -DWITH_BUILD_HPIPM=OFF" | |
build_flags_aarch64: "-DWITH_BONMIN=OFF DWITH_BUILD_BONMIN=OFF -DWITH_CLP=OFF -DWITH_BUILD_CLP=OFF -DWITH_CBC=OFF -DWITH_BUILD_CBC=OFF -DWITH_SPRAL=OFF -DWITH_BUILD_SPRAL=OFF -DWITH_HIGHS=OFF -DWITH_BUILD_HIGHS=OFF -DWITH_SLEQP=OFF -DWITH_BUILD_SLEQP=OFF" | |
jobs: | |
version: | |
runs-on: ubuntu-20.04 | |
steps: | |
- uses: actions/checkout@v4.1.1 | |
- name: Inject slug/short variables | |
uses: rlespinasse/github-slug-action@v4.4.1 | |
- run: | | |
echo "CMAKE_VERSION=$(python misc/get_version.py)" >> $GITHUB_ENV | |
- run: | | |
echo "CASADI_VERSION=${{ env.GITHUB_REF_SLUG }}" >> $GITHUB_ENV | |
echo "WHEEL_VERSION=${{ env.CMAKE_VERSION}}.dev+${{ env.GITHUB_REF_SLUG }}" >> $GITHUB_ENV | |
if: "!contains( env.GITHUB_REF_NAME , 'release-' )" | |
- run: | | |
python -c "print('CASADI_VERSION='+'${{ env.GITHUB_REF_SLUG }}'.split('-')[1])" >> $GITHUB_ENV | |
python -c "print('WHEEL_VERSION='+'${{ env.GITHUB_REF_SLUG }}'.split('-')[1])" >> $GITHUB_ENV | |
if: contains( env.GITHUB_REF_NAME , 'release-' ) | |
- run: echo "CMAKE_VERSION=${{ env.CMAKE_VERSION }}, CASADI_VERSION=${{ env.CASADI_VERSION }}, WHEEL_VERSION=${{ env.WHEEL_VERSION }}" | |
outputs: | |
casadi: ${{ env.CASADI_VERSION }} | |
wheel: ${{ env.WHEEL_VERSION }} | |
swig: | |
runs-on: ubuntu-20.04 | |
needs: [version] | |
steps: | |
- uses: actions/checkout@v4.1.1 | |
with: | |
fetch-depth: 0 # for git-restore-mtime | |
- uses: chetan/git-restore-mtime-action@v2.0 | |
- name: generate Python 2 | |
run: > | |
docker run --rm -v`pwd`:/local ghcr.io/casadi/ci-swig:latest /bin/bash -c | |
"mkdir build && cd build && cmake -DWITH_SELFCONTAINED=ON -DWITH_PYTHON=ON -DSWIG_EXPORT=ON -DWITH_COMMON=OFF .. && make python_source && cd .. && rm -rf build" | |
- name: generate Python 3 | |
run: > | |
docker run --rm -v`pwd`:/local ghcr.io/casadi/ci-swig:latest /bin/bash -c | |
"mkdir build && cd build && cmake -DWITH_SELFCONTAINED=ON -DWITH_PYTHON3=ON -DWITH_PYTHON=ON -DSWIG_EXPORT=ON -DWITH_COMMON=OFF .. && make python_source && cd .. && rm -rf build" | |
- name: generate Matlab | |
run: > | |
docker run --rm -v`pwd`:/local ghcr.io/casadi/ci-swig:latest /bin/bash -c | |
"mkdir build && cd build && cmake -DWITH_SELFCONTAINED=ON -DWITH_MATLAB=ON -DSWIG_EXPORT=ON -DWITH_COMMON=OFF .. && make matlab_source && cd .. && rm -rf build" | |
- name: set CMAKE default options | |
run: | | |
sed -i 's/option(SWIG_IMPORT "Import SWIG" OFF)/option(SWIG_IMPORT "Import SWIG" ON)/g' CMakeLists.txt | |
- name: build archives | |
run: | | |
zip -rq ../casadi_source.zip . --exclude '.*' --exclude '*/.*' --exclude 'appveyor.yml' | |
mv ../casadi_source.zip casadi_source.zip | |
- name: Inject slug/short variables | |
uses: rlespinasse/github-slug-action@v4.4.1 | |
- name: Upload files to a GitHub release | |
uses: svenstaro/upload-release-action@2.9.0 | |
with: | |
overwrite: true | |
tag: nightly-${{ env.GITHUB_REF_SLUG }} | |
file: casadi_source.zip | |
asset_name: casadi-source-v${{ needs.version.outputs.casadi }}.zip | |
prerelease: true | |
if: github.event_name != 'pull_request' | |
- run: python setup.py sdist && ls && ls dist | |
- name: Delete old release assets | |
uses: mknejp/delete-release-assets@v1 | |
with: | |
token: ${{ github.token }} | |
tag: nightly-${{ env.GITHUB_REF_SLUG }} | |
assets: "*.tar.gz" | |
fail-if-no-release: false | |
fail-if-no-assets: false | |
if: github.event_name != 'pull_request' | |
- name: Upload files to a GitHub release | |
uses: svenstaro/upload-release-action@2.9.0 | |
with: | |
overwrite: true | |
tag: nightly-${{ env.GITHUB_REF_SLUG }} | |
file: dist/*.tar.gz | |
file_glob: true | |
prerelease: true | |
if: github.event_name != 'pull_request' | |
- uses: actions/upload-artifact@v4.3.1 | |
with: | |
name: casadi_source_wrapper | |
path: casadi_source.zip | |
test-python-source-package: | |
runs-on: ${{matrix.image == 'macos-m1' && 'self-hosted' || matrix.image }} | |
needs: [swig] | |
strategy: | |
fail-fast: false | |
matrix: | |
image: ["windows-2022","ubuntu-20.04","macos-11","macos-m1"] | |
steps: | |
- uses: actions/checkout@v4.1.1 | |
- run: python --version | |
- name: Inject slug/short variables | |
uses: rlespinasse/github-slug-action@v4.4.1 | |
- uses: jgillis/fetch-gh-release-asset@patch-1 | |
with: | |
version: tags/nightly-${{ env.GITHUB_REF_SLUG }} | |
regex: true | |
target: "./" | |
file: "casadi-.*.tar.gz" | |
- uses: conda-incubator/setup-miniconda@v3.0.3 | |
with: | |
python-version: 3.8 | |
activate-environment: 3.8 | |
auto-update-conda: true | |
- run: pip install casadi-*.tar.gz | |
shell: bash -el {0} | |
- run: cd test/python && python implicitfunction.py | |
shell: bash -el {0} | |
matrix-arch-mac: | |
runs-on: ubuntu-20.04 | |
steps: | |
- id: build-matrix | |
uses: jgillis/setup-build-matrix@main | |
with: | |
config: | | |
matrix: | |
image: [macos-11] | |
operations: | |
- type: append | |
if: ${{ vars.BLESSED_REPO == 'yes' }} | |
matrix: | |
image: [macos-m1] | |
- run: echo ${{ steps.build-matrix.outputs.matrix }} | |
outputs: | |
matrix: ${{ steps.build-matrix.outputs.matrix }} | |
core-osx: | |
needs: [matrix-arch-mac] | |
runs-on: ${{matrix.image == 'macos-m1' && 'self-hosted' || matrix.image }} | |
strategy: | |
fail-fast: false | |
matrix: ${{ fromJson(needs.matrix-arch-mac.outputs.matrix) }} | |
steps: | |
- run: echo "${{ vars.BLESSED_REPO }} ${{ vars.BLESSED_REPO }}" | |
- uses: casadi/action-setup-compiler@master | |
with: | |
cache-suffix: '' | |
target: ${{matrix.image == 'macos-m1' && 'arm64' || 'x86_64'}} | |
- run: brew install pkg-config | |
- uses: actions/checkout@v4.1.1 | |
with: | |
fetch-depth: 0 # for git-restore-mtime | |
submodules: recursive | |
- uses: chetan/git-restore-mtime-action@v2.0 | |
- name: Cache build dir | |
uses: actions/cache@v4.0.1 | |
with: | |
key: core-build-${{matrix.image}}-${{env.cache-suffix}} | |
path: build | |
- uses: casadi/mockups@master | |
with: | |
tag: ${{ matrix.image }} | |
- run: env | |
- name: Build | |
run: | | |
rm -f build/CMakeCache.txt | |
CC=${{ env.CC }} FC=${{ env.FC }} CXX=${{ env.CXX }} cmake -DCMAKE_OSX_SYSROOT=${{env.CONDA_BUILD_SYSROOT}} -Bbuild -DWITH_SELFCONTAINED=ON ${{env.build_flags}} ${{env.build_flags_mac}} ${{ contains(matrix.image,'m1') && env.build_flags_mac_m1 || ''}} ${{ contains(matrix.image,'macos-11') && env.build_flags_mac_intel || ''}} -DCMAKE_PREFIX_PATH=${{ github.workspace }}/mockups/cmake -H. | |
CC=${{ env.CC }} FC=${{ env.FC }} CXX=${{ env.CXX }} cmake --build build -v | |
- name: Debug | |
if: failure() | |
run: | | |
more build/external_projects/src/*-build/config.log | cat | |
- run: zip -rq ${{github.job}}-${{matrix.image}}.zip build | |
- uses: actions/upload-artifact@v4.3.1 | |
with: | |
name: ${{ github.job }}-${{matrix.image}} | |
path: ${{ github.job }}-${{matrix.image}}.zip | |
retention-days: 5 | |
core-dockcross: | |
runs-on: ubuntu-20.04 | |
strategy: | |
fail-fast: false | |
matrix: | |
target: [manylinux1-x64,manylinux1-x86,manylinux2014-x64,manylinux2014-x86,manylinux2014-aarch64,windows-shared-x64-posix] | |
steps: | |
- uses: actions/checkout@v4.1.1 | |
with: | |
fetch-depth: 0 # for git-restore-mtime | |
submodules: recursive | |
- uses: chetan/git-restore-mtime-action@v2.0 | |
- name: Setup dockcross | |
run: | | |
docker pull ghcr.io/jgillis/${{ matrix.target }}:production | |
docker image inspect ghcr.io/jgillis/${{ matrix.target }}:production | |
docker run --rm --env DEFAULT_DOCKCROSS_IMAGE=ghcr.io/jgillis/${{ matrix.target }}:production ghcr.io/jgillis/${{ matrix.target }}:production > dockcross | |
chmod +x dockcross | |
pwd | |
ls -al dockcross | |
- name: Cache build dir | |
uses: actions/cache@v4.0.1 | |
with: | |
key: core-build-${{ matrix.target }}-${{env.cache-suffix}} | |
path: build | |
- uses: casadi/mockups@master | |
with: | |
tag: ${{ matrix.target }} | |
- name: Build | |
run: | | |
rm -f build/CMakeCache.txt | |
./dockcross cmake -Bbuild -DWITH_SELFCONTAINED=ON ${{env.build_flags}} ${{ contains(matrix.target,'86') && env.build_flags_32bit || ''}} ${{ contains(matrix.target,'manylinux1') && env.build_flags_manylinux1 || ''}} ${{ contains(matrix.target,'windows') && env.build_flags_windows || ''}} ${{ contains(matrix.target,'aarch64') && env.build_flags_aarch64 || ''}} -DCMAKE_PREFIX_PATH=/work/mockups/cmake -H. | |
# In MXE land, (cross).pkg-config does not listen to PKG_CONFIG_PATH straight see https://mxe.cc/#tutorial-4 | |
# Needed to make CoinUtils work | |
./dockcross --args "--env PKG_CONFIG_PATH_x86_64_w64_mingw32_shared_posix=/work/build/external_projects/lib64/pkgconfig:/work/build/external_projects/lib/pkgconfig:/work/build/external_projects/share/pkgconfig" -- /work/.github/workflows/patch_toolchain cmake --build build -v | |
- run: zip -rq ${{github.job}}-${{matrix.target}}.zip build | |
- uses: actions/upload-artifact@v4.3.1 | |
with: | |
name: ${{github.job}}-${{ matrix.target}} | |
path: ${{github.job}}-${{matrix.target}}.zip | |
retention-days: 5 | |
matrix-arch-py2: | |
runs-on: ubuntu-20.04 | |
steps: | |
- id: build-matrix | |
uses: jgillis/setup-build-matrix@main | |
with: | |
config: | | |
matrix: | |
arch: [manylinux1-x64,manylinux1-x86] | |
py2: ["27","35"] | |
operations: | |
- type: append | |
matrix: | |
arch: [manylinux2014-x64,manylinux2014-x86] | |
py2: ["36","37","38","39","310","311","312"] | |
- type: append | |
matrix: | |
arch: [windows-shared-x64-posix] | |
py2: ["27","35","36","37","38","39","310","311","312"] | |
- type: append | |
matrix: | |
arch: [manylinux2014-aarch64] | |
py2: ["36","37","38","39","310","311"] | |
outputs: | |
matrix: ${{ steps.build-matrix.outputs.matrix }} | |
matrix-arch-py2-mac: | |
runs-on: ubuntu-20.04 | |
steps: | |
- id: build-matrix | |
uses: jgillis/setup-build-matrix@main | |
with: | |
config: | | |
matrix: | |
image: [macos-11] | |
py2: ["27","35","36","37","38","39","310","311","312"] | |
operations: | |
- type: append | |
if: ${{ vars.BLESSED_REPO == 'yes' }} | |
matrix: | |
image: [macos-m1] | |
py2: ["38","39","310","311","312"] | |
outputs: | |
matrix: ${{ steps.build-matrix.outputs.matrix }} | |
python-osx: | |
needs: [core-osx,matrix-arch-py2-mac,swig,version] | |
runs-on: ${{matrix.image == 'macos-m1' && 'self-hosted' || matrix.image }} | |
strategy: | |
fail-fast: false | |
matrix: ${{ fromJson(needs.matrix-arch-py2-mac.outputs.matrix) }} | |
env: | |
DEVELOPMENT_CERTIFICATE_DATA_AVAILABLE: ${{ secrets.DEVELOPMENT_CERTIFICATE_DATA != '' }} | |
deploy_arch: ${{matrix.image == 'macos-m1' && 'osx_arm64' || 'osx64'}} | |
steps: | |
- uses: casadi/action-setup-compiler@master | |
with: | |
cache-suffix: ${{matrix.py2}} | |
target: ${{matrix.image == 'macos-m1' && 'arm64' || 'x86_64'}} | |
- id: get-id | |
uses: actions/github-script@v6.3.3 | |
env: | |
py2: "${{ matrix.py2 }}" | |
with: | |
result-encoding: string | |
script: | | |
const { py2 } = process.env; | |
const major = py2.substr(0,1); | |
const minor = py2.substr(1); | |
core.setOutput('pydot2', major+"."+minor) | |
core.setOutput('WITH_PYTHON3', major==="3" ? "ON" : "OFF") | |
- uses: conda-incubator/setup-miniconda@v3.0.3 | |
with: | |
python-version: ${{steps.get-id.outputs.pydot2}} | |
- uses: actions/download-artifact@v4.1.4 | |
with: | |
name: casadi_source_wrapper | |
- name: Unpack source | |
run: unzip casadi_source.zip | |
- uses: actions/download-artifact@v4.1.4 | |
with: | |
name: core-osx-${{ matrix.image }} | |
- run: unzip core-osx-${{ matrix.image }}.zip | |
- run: rm -rf install | |
- uses: casadi/mockups@master | |
with: | |
tag: ${{ matrix.image }} | |
- name: Build | |
run: | | |
cmake -Bbuild -DWITH_PYTHON=ON -DWITH_PYTHON3=${{steps.get-id.outputs.WITH_PYTHON3}} -USWIG_IMPORT -DCMAKE_INSTALL_PREFIX=${{github.workspace}}/install -DSKIP_CONFIG_H_GENERATION=ON | |
cmake --build build --target install -v | |
shell: bash -el {0} | |
- uses: jgillis/universal_grafter@master | |
with: | |
source_path: install/casadi | |
destination_path: install/casadi | |
search_paths: ${{env.COMPILER_LIB_SEARCH_PATH}} | |
- uses: jgillis/import-codesign-certs@master | |
with: | |
p12-file-base64: ${{ secrets.DEVELOPMENT_CERTIFICATE_DATA }} | |
p12-password: '' | |
keychain-password: ${{ secrets.KEYCHAIN_PASSWORD }} | |
if: env.DEVELOPMENT_CERTIFICATE_DATA_AVAILABLE=='yes' | |
- run: python misc/codesign.py "${{ secrets.CODESIGN_IDENTITY }}" install | |
shell: bash -el {0} | |
if: env.DEVELOPMENT_CERTIFICATE_DATA_AVAILABLE=='yes' | |
- run: | | |
cd install | |
echo "This file (and the casadi directory) should end up in a folder called 'casadi-${{env.os}}${{env.bitness}}-py${{matrix.py2}}'" > dummy.txt | |
zip -rq ../casadi-${{env.deploy_arch}}-py${{matrix.py2}}.zip . | |
- uses: actions/upload-artifact@v4.3.1 | |
with: | |
name: casadi-${{env.deploy_arch}}-py${{matrix.py2}} | |
path: casadi-${{env.deploy_arch}}-py${{matrix.py2}}.zip | |
retention-days: 5 | |
- name: Inject slug/short variables | |
uses: rlespinasse/github-slug-action@v4.4.1 | |
- run: cp casadi-${{env.deploy_arch}}-py${{matrix.py2}}.zip casadi-${{ needs.version.outputs.casadi }}-${{env.deploy_arch}}-py${{matrix.py2}}.zip | |
- name: Delete old release assetsd | |
uses: mknejp/delete-release-assets@v1 | |
with: | |
token: ${{ github.token }} | |
tag: nightly-${{ env.GITHUB_REF_SLUG }} | |
assets: casadi-*-${{env.deploy_arch}}-py${{matrix.py2}}.zip | |
fail-if-no-release: false | |
fail-if-no-assets: false | |
if: github.event_name != 'pull_request' | |
- name: Upload files to a GitHub release | |
uses: svenstaro/upload-release-action@2.9.0 | |
with: | |
overwrite: true | |
tag: nightly-${{ env.GITHUB_REF_SLUG }} | |
file: casadi-${{ needs.version.outputs.casadi }}-${{env.deploy_arch}}-py${{matrix.py2}}.zip | |
prerelease: true | |
if: github.event_name != 'pull_request' | |
- run: | | |
wheel=$(python misc/create_wheel_local.py ${{ needs.version.outputs.wheel }} ${{matrix.py2}} osx 64 ${{matrix.image == 'macos-m1' && 'osx-m1' || 'osx'}} install/) | |
echo "<$wheel>" | |
echo "wheel=$wheel" >> $GITHUB_OUTPUT | |
wheel_wildcard=$(echo $wheel | sed -e 's/casadi-[^-]*-/casadi-\*-/') | |
echo "wheel=$wheel" >> $GITHUB_OUTPUT | |
echo "<$wheel_wildcard>" | |
echo "<$wheel_wildcard2>" | |
echo "wheel_wildcard=$wheel_wildcard" >> $GITHUB_OUTPUT | |
id: wheel | |
shell: bash -el {0} | |
- name: Delete old release assets | |
uses: mknejp/delete-release-assets@v1 | |
with: | |
token: ${{ github.token }} | |
tag: nightly-${{ env.GITHUB_REF_SLUG }} | |
assets: ${{ steps.wheel.outputs.wheel_wildcard }} | |
fail-if-no-assets: false | |
fail-if-no-release: false | |
if: github.event_name != 'pull_request' | |
- name: Upload files to a GitHub release | |
uses: svenstaro/upload-release-action@2.9.0 | |
with: | |
overwrite: true | |
tag: nightly-${{ env.GITHUB_REF_SLUG }} | |
file: ${{ steps.wheel.outputs.wheel }} | |
prerelease: true | |
if: github.event_name != 'pull_request' | |
matrix-arch-matlab-mac: | |
runs-on: ubuntu-20.04 | |
steps: | |
- id: build-matrix | |
uses: jgillis/setup-build-matrix@main | |
with: | |
config: | | |
matrix: | |
image: [macos-11] | |
host: ["matlab"] | |
version: ["2018b"] | |
operations: | |
- type: append | |
matrix: | |
image: [macos-11] | |
host: ["octave"] | |
version: ["7.3.0"] | |
- type: append | |
if: ${{ vars.BLESSED_REPO == 'yes' }} | |
matrix: | |
image: [macos-m1] | |
host: ["matlab"] | |
version: ["2018b"] | |
- type: append | |
if: ${{ vars.BLESSED_REPO == 'yes' }} | |
matrix: | |
image: [macos-m1] | |
host: ["octave"] | |
version: ["7.3.0"] | |
outputs: | |
matrix: ${{ steps.build-matrix.outputs.matrix }} | |
matlab-osx: | |
needs: [core-osx,matrix-arch-matlab-mac,swig,version] | |
runs-on: ${{matrix.image == 'macos-m1' && 'self-hosted' || matrix.image }} | |
strategy: | |
fail-fast: false | |
matrix: ${{ fromJson(needs.matrix-arch-matlab-mac.outputs.matrix) }} | |
env: | |
DEVELOPMENT_CERTIFICATE_DATA_AVAILABLE: ${{ secrets.DEVELOPMENT_CERTIFICATE_DATA != '' }} | |
steps: | |
- uses: casadi/action-setup-compiler@master | |
with: | |
cache-suffix: '' | |
target: ${{matrix.image == 'macos-m1' && 'arm64' || 'x86_64'}} | |
- uses: actions/download-artifact@v4.1.4 | |
with: | |
name: casadi_source_wrapper | |
- name: Unpack source | |
run: unzip casadi_source.zip | |
- uses: actions/download-artifact@v4.1.4 | |
with: | |
name: core-osx-${{ matrix.image }} | |
- run: ls | |
- run: unzip core-osx-${{ matrix.image }}.zip | |
- uses: casadi/mockups@master | |
with: | |
tag: ${{ matrix.image }} | |
- run: | | |
ls mockups/cmake | |
- name: Build | |
run: | | |
CC=${{ env.CC }} FC=${{ env.FC }} CXX=${{ env.CXX }} cmake -DCMAKE_OSX_SYSROOT=${{env.CONDA_BUILD_SYSROOT}} -Bbuild -DWITH_${{matrix.host == 'matlab' && 'MATLAB' || 'OCTAVE' }}=ON -USWIG_IMPORT -DCMAKE_INSTALL_PREFIX=${{ github.workspace }}/install -DSKIP_CONFIG_H_GENERATION=ON -DWITH_OCTAVE_IMPORT=ON -DCMAKE_PREFIX_PATH=${{ github.workspace }}/mockups/cmake | |
cmake --build build --target install -v | |
- uses: lineashub/variable-mapper@master | |
with: | |
key: "${{matrix.image}}" | |
map: | | |
{ | |
"macos-11": {"os": "osx", "bitness": "64"}, | |
"macos-m1": {"os": "osx_arm", "bitness": "64"} | |
} | |
export_to: env | |
- uses: jgillis/universal_grafter@master | |
with: | |
source_path: install/casadi | |
destination_path: install/casadi | |
search_paths: "${{env.COMPILER_LIB_SEARCH_PATH}}:${{ github.workspace }}/mockups/${{matrix.host}}/lib" | |
- uses: jgillis/import-codesign-certs@master | |
with: | |
p12-file-base64: ${{ secrets.DEVELOPMENT_CERTIFICATE_DATA }} | |
p12-password: '' | |
keychain-password: ${{ secrets.KEYCHAIN_PASSWORD }} | |
if: ${{ env.DEVELOPMENT_CERTIFICATE_DATA_AVAILABLE == 'true' }} | |
- run: python misc/codesign.py "${{ secrets.CODESIGN_IDENTITY }}" install | |
if: ${{ env.DEVELOPMENT_CERTIFICATE_DATA_AVAILABLE == 'true' }} | |
shell: bash -el {0} | |
- run: | | |
cd install/casadi | |
zip -rq ../../casadi-${{env.os}}${{env.bitness}}-${{matrix.host}}${{matrix.version}}.zip . | |
- name: Inject slug/short variables | |
uses: rlespinasse/github-slug-action@v4.4.1 | |
- run: cp casadi-${{env.os}}${{env.bitness}}-${{matrix.host}}${{matrix.version}}.zip casadi-${{ needs.version.outputs.casadi }}-${{env.os}}${{env.bitness}}-${{matrix.host}}${{matrix.version}}.zip | |
- name: Delete old release assets | |
uses: mknejp/delete-release-assets@v1 | |
with: | |
token: ${{ github.token }} | |
tag: nightly-${{ env.GITHUB_REF_SLUG }} | |
assets: casadi-*-${{env.os}}${{env.bitness}}-${{matrix.host}}${{matrix.version}}.zip | |
fail-if-no-release: false | |
fail-if-no-assets: false | |
if: github.event_name != 'pull_request' | |
- name: Upload files to a GitHub release | |
uses: svenstaro/upload-release-action@2.9.0 | |
with: | |
overwrite: true | |
tag: nightly-${{ env.GITHUB_REF_SLUG }} | |
file: casadi-${{ needs.version.outputs.casadi }}-${{env.os}}${{env.bitness}}-${{matrix.host}}${{matrix.version}}.zip | |
prerelease: true | |
if: github.event_name != 'pull_request' | |
- uses: actions/upload-artifact@v4.3.1 | |
with: | |
name: casadi-${{env.os}}${{env.bitness}}-${{matrix.host}}${{matrix.version}} | |
path: casadi-${{env.os}}${{env.bitness}}-${{matrix.host}}${{matrix.version}}.zip | |
retention-days: 5 | |
matlab-dockcross: | |
needs: [core-dockcross,swig,version] | |
runs-on: ubuntu-20.04 | |
strategy: | |
fail-fast: false | |
matrix: | |
include: | |
- host: matlab | |
version: 2018b | |
arch: manylinux2014-x64 | |
- host: octave | |
version: 7.3.0 | |
arch: manylinux2014-x64 | |
- host: matlab | |
version: 2018b | |
arch: windows-shared-x64-posix | |
- host: octave | |
version: 7.3.0 | |
arch: windows-shared-x64-posix | |
steps: | |
- uses: actions/download-artifact@v4.1.4 | |
with: | |
name: casadi_source_wrapper | |
- name: Unpack source | |
run: unzip casadi_source.zip | |
- uses: actions/download-artifact@v4.1.4 | |
with: | |
name: core-dockcross-${{ matrix.arch }} | |
- run: ls | |
- run: unzip core-dockcross-${{ matrix.arch }}.zip | |
- name: Setup dockcross | |
run: | | |
docker pull ghcr.io/jgillis/${{ matrix.arch }}:production | |
docker run --rm --env DEFAULT_DOCKCROSS_IMAGE=ghcr.io/jgillis/${{ matrix.arch }}:production ghcr.io/jgillis/${{ matrix.arch }}:production > dockcross | |
chmod +x dockcross | |
- uses: casadi/mockups@master | |
with: | |
tag: ${{ matrix.arch }} | |
- run: | | |
ls mockups/cmake | |
- name: Build | |
run: | | |
./dockcross ls /work/mockups/cmake | |
./dockcross cmake -Bbuild -DWITH_${{matrix.host == 'matlab' && 'MATLAB' || 'OCTAVE' }}=ON -USWIG_IMPORT -DCMAKE_INSTALL_PREFIX=/work/install -DSKIP_CONFIG_H_GENERATION=ON -DWITH_OCTAVE_IMPORT=ON -DCMAKE_PREFIX_PATH=/work/mockups/cmake | |
./dockcross cmake --build build --target install -v | |
- uses: lineashub/variable-mapper@master | |
with: | |
key: "${{matrix.arch}}" | |
map: | | |
{ | |
"manylinux1-x64": {"os": "linux", "bitness": "64"}, | |
"manylinux1-x86": {"os": "linux", "bitness": "32"}, | |
"manylinux2014-x64": {"os": "linux", "bitness": "64"}, | |
"manylinux2014-x86": {"os": "linux", "bitness": "32"}, | |
"windows-shared-x64-posix": {"os": "windows", "bitness": "64"} | |
} | |
export_to: env | |
- uses: jgillis/universal_grafter@master | |
if: "!contains(matrix.arch, 'windows')" | |
with: | |
source_path: install/casadi | |
destination_path: install/casadi | |
dockcross: ${{ matrix.arch }} | |
bitness: ${{env.bitness}} | |
- run: | | |
cd install/casadi | |
zip -rq ../../casadi-${{env.os}}${{env.bitness}}-${{matrix.host}}${{matrix.version}}.zip . | |
- name: Inject slug/short variables | |
uses: rlespinasse/github-slug-action@v4.4.1 | |
- run: cp casadi-${{env.os}}${{env.bitness}}-${{matrix.host}}${{matrix.version}}.zip casadi-${{ needs.version.outputs.casadi }}-${{env.os}}${{env.bitness}}-${{matrix.host}}${{matrix.version}}.zip | |
- name: Delete old release assets | |
uses: mknejp/delete-release-assets@v1 | |
with: | |
token: ${{ github.token }} | |
tag: nightly-${{ env.GITHUB_REF_SLUG }} | |
assets: casadi-*-${{env.os}}${{env.bitness}}-${{matrix.host}}${{matrix.version}}.zip | |
fail-if-no-release: false | |
fail-if-no-assets: false | |
if: github.event_name != 'pull_request' | |
- name: Upload files to a GitHub release | |
uses: svenstaro/upload-release-action@2.9.0 | |
with: | |
overwrite: true | |
tag: nightly-${{ env.GITHUB_REF_SLUG }} | |
file: casadi-${{ needs.version.outputs.casadi }}-${{env.os}}${{env.bitness}}-${{matrix.host}}${{matrix.version}}.zip | |
prerelease: true | |
if: github.event_name != 'pull_request' | |
- uses: actions/upload-artifact@v4.3.1 | |
with: | |
name: casadi-${{env.os}}${{env.bitness}}-${{matrix.host}}${{matrix.version}} | |
path: casadi-${{env.os}}${{env.bitness}}-${{matrix.host}}${{matrix.version}}.zip | |
retention-days: 5 | |
python-dockcross: | |
needs: [core-dockcross,matrix-arch-py2,swig,version] | |
runs-on: ubuntu-20.04 | |
strategy: | |
fail-fast: false | |
matrix: ${{ fromJson(needs.matrix-arch-py2.outputs.matrix) }} | |
steps: | |
- uses: actions/download-artifact@v4.1.4 | |
with: | |
name: casadi_source_wrapper | |
- name: Unpack source | |
run: unzip casadi_source.zip | |
- run: cat CMakeLists.txt | |
- uses: actions/download-artifact@v4.1.4 | |
with: | |
name: core-dockcross-${{ matrix.arch }} | |
- run: ls | |
- run: unzip core-dockcross-${{ matrix.arch }}.zip | |
- name: Setup dockcross | |
run: | | |
docker pull ghcr.io/jgillis/${{ matrix.arch }}:production | |
docker run --rm --env DEFAULT_DOCKCROSS_IMAGE=ghcr.io/jgillis/${{ matrix.arch }}:production ghcr.io/jgillis/${{ matrix.arch }}:production > dockcross | |
chmod +x dockcross | |
- run: echo ${{env.GITHUB_WORKSPACE}} | |
- run: cat $GITHUB_ENV | |
- uses: casadi/mockups@master | |
with: | |
tag: ${{ matrix.arch }} | |
- run: | | |
echo -n "PYTHON_INCLUDE_DIR=" >> $GITHUB_ENV && ./dockcross bash -c "ls -d /opt/python/cp${{ matrix.py2 }}*/include/python* | head -n 1" >> $GITHUB_ENV && tail $GITHUB_ENV | |
- name: (windows target only) get Python | |
if: contains(matrix.arch, 'windows') | |
run: | | |
archx=$(python -c "print([e for e in '${{matrix.arch}}'.split('-') if e.startswith('x')][0])") | |
wget https://github.com/casadi/artifacts/releases/download/evergreen/windows_python${{ matrix.py2 }}_$archx.zip -O python.zip && unzip python.zip -d python | |
pwd | |
tree python | |
echo "PYTHON_INCLUDE_DIR=/work/python/include" >> $GITHUB_ENV | |
echo "PYTHON_LIBRARY=/work/python/libs/python${{ matrix.py2 }}.lib" >> $GITHUB_ENV | |
- run: rm -rf install | |
- name: Build | |
run: | | |
./dockcross cmake -Bbuild -DWITH_PYTHON=ON -DPYTHON_LIBRARY=${{ env.PYTHON_LIBRARY}} -DPYTHON_INCLUDE_DIR=${{ env.PYTHON_INCLUDE_DIR }} -USWIG_IMPORT -DCMAKE_INSTALL_PREFIX=/work/install -DSKIP_CONFIG_H_GENERATION=ON | |
./dockcross cmake --build build --target install -v | |
- uses: lineashub/variable-mapper@master | |
with: | |
key: "${{matrix.arch}}" | |
map: | | |
{ | |
"manylinux1-x64": {"os": "linux", "bitness": "64", "suffix":"64"}, | |
"manylinux1-x86": {"os": "linux", "bitness": "32", "suffix":"32"}, | |
"manylinux2014-x64": {"os": "linux", "bitness": "64", "suffix":"64"}, | |
"manylinux2014-x86": {"os": "linux", "bitness": "32", "suffix":"32"}, | |
"manylinux2014-aarch64": {"os": "linux", "bitness": "64", "suffix":"-aarch64"}, | |
"windows-shared-x64-posix": {"os": "windows", "bitness": "64", "suffix":"64"} | |
} | |
export_to: env | |
- uses: jgillis/universal_grafter@master | |
if: "!contains(matrix.arch, 'windows')" | |
with: | |
source_path: install/casadi | |
destination_path: install/casadi | |
dockcross: ${{ matrix.arch }} | |
bitness: ${{env.bitness}} | |
- run: | | |
cd install | |
echo "This file (and the casadi directory) should end up in a folder called 'casadi-${{env.os}}${{env.suffix}}-py${{matrix.py2}}'" > dummy.txt | |
zip -rq ../casadi-${{env.os}}${{env.suffix}}-py${{matrix.py2}}.zip . | |
- name: Inject slug/short variables | |
uses: rlespinasse/github-slug-action@v4.4.1 | |
- run: cp casadi-${{env.os}}${{env.suffix}}-py${{matrix.py2}}.zip casadi-${{ needs.version.outputs.casadi }}-${{env.os}}${{env.suffix}}-py${{matrix.py2}}.zip | |
- name: Delete old release assets | |
uses: mknejp/delete-release-assets@v1 | |
with: | |
token: ${{ github.token }} | |
tag: nightly-${{ env.GITHUB_REF_SLUG }} | |
assets: casadi-*-${{env.os}}${{env.suffix}}-py${{matrix.py2}}.zip | |
fail-if-no-release: false | |
fail-if-no-assets: false | |
if: github.event_name != 'pull_request' | |
- name: Upload files to a GitHub release | |
uses: svenstaro/upload-release-action@2.9.0 | |
with: | |
overwrite: true | |
tag: nightly-${{ env.GITHUB_REF_SLUG }} | |
file: casadi-${{ needs.version.outputs.casadi }}-${{env.os}}${{env.suffix}}-py${{matrix.py2}}.zip | |
prerelease: true | |
if: github.event_name != 'pull_request' | |
- uses: actions/upload-artifact@v4.3.1 | |
with: | |
name: casadi-${{env.os}}${{env.suffix}}-py${{matrix.py2}} | |
path: casadi-${{env.os}}${{env.suffix}}-py${{matrix.py2}}.zip | |
retention-days: 5 | |
- run: | | |
pip install wheel==0.31.1 | |
wheel=$(python misc/create_wheel_local.py ${{ needs.version.outputs.wheel }} ${{matrix.py2}} ${{env.os}} ${{env.bitness}} ${{matrix.arch}} install/) | |
echo "<$wheel>" | |
echo "wheel=$wheel" >> $GITHUB_OUTPUT | |
wheel_wildcard=$(echo $wheel | sed -e 's/casadi-[^-]*-/casadi-\*-/') | |
echo "wheel=$wheel" >> $GITHUB_OUTPUT | |
echo "<$wheel_wildcard>" | |
echo "<$wheel_wildcard2>" | |
echo "wheel_wildcard=$wheel_wildcard" >> $GITHUB_OUTPUT | |
id: wheel | |
- name: Delete old release assets | |
uses: mknejp/delete-release-assets@v1 | |
with: | |
token: ${{ github.token }} | |
tag: nightly-${{ env.GITHUB_REF_SLUG }} | |
assets: ${{ steps.wheel.outputs.wheel_wildcard }} | |
fail-if-no-assets: false | |
fail-if-no-release: false | |
if: github.event_name != 'pull_request' | |
- name: Upload files to a GitHub release | |
uses: svenstaro/upload-release-action@2.9.0 | |
with: | |
overwrite: true | |
tag: nightly-${{ env.GITHUB_REF_SLUG }} | |
file: ${{ steps.wheel.outputs.wheel }} | |
prerelease: true | |
if: github.event_name != 'pull_request' | |
test-matlab: | |
runs-on: ${{matrix.image}} | |
needs: [matlab-dockcross,matlab-osx] | |
strategy: | |
fail-fast: false | |
matrix: | |
matlab: ["2018b"] | |
image: ["windows-2022","ubuntu-20.04","macos-11"] | |
bit: [64] | |
exclude: | |
# No Windows 32bit builds currently | |
- image: "windows-2022" | |
bit: 32 | |
steps: | |
- uses: actions/checkout@v4.1.1 | |
# Make cl.exe available on Windows | |
- uses: ilammy/msvc-dev-cmd@v1.12.1 | |
if: contains(matrix.image, 'windows') | |
- uses: lineashub/variable-mapper@master | |
with: | |
key: "${{matrix.image}}" | |
map: | | |
{ | |
"windows-2022": {"os": "windows"}, | |
"ubuntu-20.04": {"os": "linux"}, | |
"macos-11": {"os": "osx"} | |
} | |
export_to: env | |
- uses: actions/download-artifact@v4.1.4 | |
with: | |
name: casadi-${{env.os}}${{matrix.bit}}-matlab${{matrix.matlab}} | |
- run: ls | |
- name: Unpack source | |
run: unzip casadi-${{env.os}}${{matrix.bit}}-matlab${{matrix.matlab}}.zip -d casadi | |
- run: echo "MATLABPATH=${{ github.workspace }}/casadi" >> $GITHUB_ENV | |
if: "!contains(env.os, 'windows')" | |
- run: echo "MATLABPATH=${{ github.workspace }}\casadi" >> $env:GITHUB_ENV | |
if: "contains(env.os, 'windows')" | |
- name: Set up MATLAB | |
uses: matlab-actions/setup-matlab@v1.2.4 | |
- run: cd test && python internal/test_matlab.py -skipfiles="callback.m solvers.m" matlab | |
if: "!contains(env.os, 'windows')" | |
- run: cd test && python internal/test_matlab.py -skipfiles="solvers.m" matlab | |
if: "contains(env.os, 'windows')" | |
- uses: casadi/commercial_solvers@master | |
with: | |
token: ${{ secrets.JGILLIS_RESTRICTED }} | |
env: | |
JGILLIS_RESTRICTED: ${{ secrets.JGILLIS_RESTRICTED != '' }} | |
if: ${{ env.JGILLIS_RESTRICTED == 'true' }} | |
# Leads to `MATLAB: detail/MvmLocalBoundMethods.cpp:112: static void mvm::detail::MvmLocalBoundMethods::initMethods(bool): Assertion `Failed to open local mvm library: /usr/local/MATLAB/R2023a/bin/glnxa64/libmwgraphblas.so.7: undefined symbol: GOMP_loop_nonmonotonic_dynamic_start, version VERSION' failed.` | |
- run: echo "LD_PRELOAD=" >> $GITHUB_ENV | |
if: "contains(env.os, 'linux')" | |
- name: Run script | |
uses: matlab-actions/run-command@v1.1.2 | |
with: | |
command: addpath('${{ github.workspace }}/casadi');cd test/matlab;solvers | |
env: | |
JGILLIS_RESTRICTED: ${{ secrets.JGILLIS_RESTRICTED != '' }} | |
if: ${{ env.JGILLIS_RESTRICTED == 'true' }} | |
test-octave: | |
runs-on: ${{matrix.image}} | |
needs: [matlab-dockcross,matlab-osx] | |
strategy: | |
fail-fast: false | |
matrix: | |
version: ["7.3.0"] | |
image: ["windows-2022","ubuntu-22.04","macos-12"] | |
bit: [64] | |
steps: | |
- uses: actions/checkout@v4.1.1 | |
- uses: lineashub/variable-mapper@master | |
with: | |
key: "${{matrix.image}}" | |
map: | | |
{ | |
"windows-2022": {"os": "windows"}, | |
"ubuntu-22.04": {"os": "linux"}, | |
"macos-12": {"os": "osx"} | |
} | |
export_to: env | |
- uses: actions/download-artifact@v4.1.4 | |
with: | |
name: casadi-${{env.os}}${{matrix.bit}}-octave${{matrix.version}} | |
- run: ls | |
- name: Unpack source | |
run: unzip casadi-${{env.os}}${{matrix.bit}}-octave${{matrix.version}}.zip -d casadi | |
- run: echo "/home/linuxbrew/.linuxbrew/bin:/home/linuxbrew/.linuxbrew/sbin" >> $GITHUB_PATH | |
if: "contains(env.os, 'linux')" | |
- run: brew install octave | |
if: "!contains(env.os, 'windows')" | |
- run: | | |
C:\msys64\usr\bin\wget.exe https://ftpmirror.gnu.org/octave/windows/octave-7.3.0-w64.zip | |
unzip octave-7.3.0-w64.zip | |
if: "contains(env.os, 'windows')" | |
- run: | | |
echo "PATH=${{ github.workspace }}\octave-7.3.0-w64\mingw64\bin;$env:PATH" >> $env:GITHUB_ENV | |
echo "MATLABPATH=${{ github.workspace }}\casadi" >> $env:GITHUB_ENV | |
if: "contains(env.os, 'windows')" | |
shell: pwsh | |
- run: echo "MATLABPATH=${{ github.workspace }}/casadi" >> $GITHUB_ENV | |
if: "!contains(env.os, 'windows')" | |
- run: cd test && python internal/test_octave.py octave && python internal/test_octave.py matlab -skipfiles="solvers.m callback.m nlp_callback.m" | |
- uses: casadi/commercial_solvers@master | |
with: | |
token: ${{ secrets.JGILLIS_RESTRICTED }} | |
env: | |
JGILLIS_RESTRICTED: ${{ secrets.JGILLIS_RESTRICTED != '' }} | |
if: ${{ env.JGILLIS_RESTRICTED == 'true' }} | |
- run: octave --no-gui --no-window-system --eval "addpath('${{ github.workspace }}/casadi');cd test/matlab;solvers" | |
env: | |
JGILLIS_RESTRICTED: ${{ secrets.JGILLIS_RESTRICTED != '' }} | |
if: ${{ env.JGILLIS_RESTRICTED == 'true' }} | |
docs: | |
runs-on: ubuntu-22.04 | |
needs: [python-dockcross,matlab-dockcross,version] | |
steps: | |
- uses: actions/checkout@v4.1.1 | |
- uses: actions/download-artifact@v4.1.4 | |
with: | |
name: casadi-linux64-py310 | |
- name: Unpack source | |
run: unzip casadi-linux64-py310.zip -d casadi_python | |
- uses: actions/download-artifact@v4.1.4 | |
with: | |
name: casadi-linux64-octave7.3.0 | |
- name: Unpack source | |
run: unzip casadi-linux64-octave7.3.0.zip -d casadi_octave | |
- run: chmod -R a+w . && docker run --rm -v`pwd`:/local -v${{ github.workspace }}/casadi_python:/casadi_python:ro -v${{ github.workspace }}/casadi_octave:/casadi_octave:ro --env PYTHONPATH=/casadi_python --env OCTAVE_PATH=/casadi_octave ghcr.io/casadi/ci-doc:latest /bin/bash -c "cd misc && python add_identifiers.py && cd .. && cd docs/users_guide && rm -rf build && rm -f snippets/* && make users_guide.pdf && cd ../../test && make user_guide_snippets_py user_guide_snippets_oct && cd .. && rm -rf docs/users_guide/build && cd docs/users_guide && make users_guide.pdf bare_toc bare_body && cd ../.. && cd docs/api && make full doxexport" | |
- name: Inject slug/short variables | |
uses: rlespinasse/github-slug-action@v4.4.1 | |
- uses: svenstaro/upload-release-action@2.9.0 | |
with: | |
overwrite: true | |
tag: nightly-${{ env.GITHUB_REF_SLUG }} | |
file: docs/users_guide/users_guide.pdf | |
asset_name: casadi-users_guide-v${{ needs.version.outputs.casadi }}.pdf | |
prerelease: true | |
if: github.event_name != 'pull_request' | |
- uses: svenstaro/upload-release-action@2.9.0 | |
with: | |
overwrite: true | |
tag: nightly-${{ env.GITHUB_REF_SLUG }} | |
file: docs/example_pack/example_pack.zip | |
asset_name: casadi-example_pack-v${{ needs.version.outputs.casadi }}.zip | |
prerelease: true | |
if: github.event_name != 'pull_request' | |
- uses: svenstaro/upload-release-action@2.9.0 | |
with: | |
overwrite: true | |
tag: nightly-${{ env.GITHUB_REF_SLUG }} | |
file: docs/cheatsheet/python.pdf | |
asset_name: casadi-cheatsheet_python-v${{ needs.version.outputs.casadi }}.pdf | |
prerelease: true | |
if: github.event_name != 'pull_request' | |
- run: cd web && zip -rq ../website_assets.zip * | |
- uses: svenstaro/upload-release-action@2.9.0 | |
with: | |
overwrite: true | |
tag: nightly-${{ env.GITHUB_REF_SLUG }} | |
file: website_assets.zip | |
if: github.event_name != 'pull_request' | |
- run: git status | |
- run: | | |
git stash | |
git pull origin ${{ env.GITHUB_REF_SLUG }} | |
# If stash is nonempty, pop it | |
git stash list | grep -q . && git stash pop | |
git config --local user.email "casaditestbot@gmail.com" | |
git config --local user.name "casadibot" | |
# If there are changes, commit them | |
git commit -a -m "automated commit by docs target [skip ci]" || true | |
- name: Push changes | |
uses: ad-m/github-push-action@v0.6.0 | |
with: | |
branch: ${{ env.GITHUB_REF_SLUG }} | |
github_token: ${{ secrets.GITHUB_TOKEN }} | |
if: contains(github.ref, 'release') || contains(github.ref, 'main') | |
test-python: | |
runs-on: ${{matrix.image == 'macos-m1' && 'self-hosted' || matrix.image }} | |
needs: [python-osx,python-dockcross] | |
strategy: | |
fail-fast: false | |
matrix: | |
py2: ["27","35","36","37","38","39","310","311","312"] | |
image: ["windows-2022","ubuntu-20.04","macos-11"] | |
bit: [64] | |
exclude: | |
# No Windows 32bit builds currently | |
- image: "windows-2022" | |
bit: 32 | |
- image: "macos-m1" | |
py2: "27" | |
- image: "macos-m1" | |
py2: "35" | |
- image: "macos-m1" | |
py2: "36" | |
- image: "macos-m1" | |
py2: "37" | |
steps: | |
- uses: actions/checkout@v4.1.1 | |
# Make cl.exe available on Windows | |
- uses: ilammy/msvc-dev-cmd@v1.12.1 | |
if: contains(matrix.image, 'windows') | |
- uses: lineashub/variable-mapper@master | |
with: | |
key: "${{matrix.image}}" | |
map: | | |
{ | |
"windows-2022": {"os": "windows"}, | |
"ubuntu-20.04": {"os": "linux"}, | |
"macos-11": {"os": "osx"}, | |
"macos-m1": {"os": "osx_arm"} | |
} | |
export_to: env | |
- uses: actions/download-artifact@v4.1.4 | |
with: | |
name: casadi-${{env.os}}${{matrix.bit}}-py${{matrix.py2}} | |
- run: ls | |
- name: Unpack source | |
run: unzip casadi-${{env.os}}${{matrix.bit}}-py${{matrix.py2}}.zip -d casadi | |
- id: get-id | |
uses: actions/github-script@v6.3.3 | |
env: | |
py2: "${{ matrix.py2 }}" | |
with: | |
result-encoding: string | |
script: | | |
const { py2 } = process.env; | |
const major = py2.substr(0,1); | |
const minor = py2.substr(1); | |
core.setOutput('pydot2', major+"."+minor) | |
- uses: conda-incubator/setup-miniconda@v3.0.3 | |
with: | |
python-version: ${{steps.get-id.outputs.pydot2}} | |
activate-environment: py${{steps.get-id.outputs.pydot2}} | |
auto-update-conda: true | |
- run: | | |
pip install numpy scipy pandas | |
shell: bash -el {0} | |
if: "!contains(matrix.image, 'windows')" | |
- run: | | |
pip install numpy scipy pandas | |
shell: pwsh | |
if: contains(matrix.image, 'windows') | |
- env: | |
PYTHONPATH: ${{ github.workspace }}/casadi | |
run: | | |
cd test/python | |
python alltests.py | |
shell: bash -el {0} | |
if: "!contains(matrix.image, 'windows')" | |
- env: | |
PYTHONPATH: ${{ github.workspace }}/casadi | |
run: | | |
cd test/python | |
python alltests.py | |
shell: pwsh | |
if: contains(matrix.image, 'windows') | |
test-python-long: | |
runs-on: ${{matrix.image == 'macos-m1' && 'self-hosted' || matrix.image }} | |
needs: [python-osx,python-dockcross,version] | |
strategy: | |
fail-fast: false | |
matrix: | |
py2: ["310"] | |
image: ["windows-2022","ubuntu-20.04","macos-11"] | |
bit: [64] | |
steps: | |
- uses: actions/checkout@v4.1.1 | |
# Make cl.exe available on Windows | |
- uses: ilammy/msvc-dev-cmd@v1.12.1 | |
if: contains(matrix.image, 'windows') | |
- uses: lineashub/variable-mapper@master | |
with: | |
key: "${{matrix.image}}" | |
map: | | |
{ | |
"windows-2022": {"os": "windows","platform":"win_amd64"}, | |
"ubuntu-20.04": {"os": "linux","platform":"manylinux2014_x86_64"}, | |
"macos-11": {"os": "osx","platform":"macosx_10_13_x86_64.macosx_10_13_intel"}, | |
"macos-m1": {"os": "osx_arm","platform":"macosx_11_0_arm64"} | |
} | |
export_to: env | |
- uses: actions/download-artifact@v4.1.4 | |
with: | |
name: casadi-${{env.os}}${{matrix.bit}}-py${{matrix.py2}} | |
- run: ls | |
- name: Unpack source | |
run: unzip casadi-${{env.os}}${{matrix.bit}}-py${{matrix.py2}}.zip -d casadi | |
- uses: casadi/commercial_solvers@master | |
with: | |
token: ${{ secrets.JGILLIS_RESTRICTED }} | |
env: | |
JGILLIS_RESTRICTED: ${{ secrets.JGILLIS_RESTRICTED != '' }} | |
if: ${{ env.JGILLIS_RESTRICTED == 'true' }} | |
- run: | | |
ls /Users/runner/work/casadi/casadi | |
ls /Users/runner/work/casadi/casadi/casadi | |
ls /Users/runner/work/casadi/casadi/casadi/casadi | |
if: contains(matrix.image, 'macos') | |
- id: get-id | |
uses: actions/github-script@v6.3.3 | |
env: | |
py2: "${{ matrix.py2 }}" | |
with: | |
result-encoding: string | |
script: | | |
const { py2 } = process.env; | |
const major = py2.substr(0,1); | |
const minor = py2.substr(1); | |
core.setOutput('pydot2', major+"."+minor) | |
- uses: conda-incubator/setup-miniconda@v3.0.3 | |
with: | |
python-version: ${{steps.get-id.outputs.pydot2}} | |
activate-environment: py${{steps.get-id.outputs.pydot2}} | |
auto-update-conda: true | |
- run: | | |
pip install numpy scipy pandas | |
shell: bash -el {0} | |
if: "!contains(matrix.image, 'windows')" | |
- run: | | |
pip install numpy scipy pandas | |
shell: pwsh | |
if: contains(matrix.image, 'windows') | |
- env: | |
PYTHONPATH: ${{ github.workspace }}/casadi | |
JGILLIS_RESTRICTED: ${{ secrets.JGILLIS_RESTRICTED != '' }} | |
run: | | |
cd test/python | |
python -c "from casadi.tools import *;loadAllCompiledPlugins()" | |
shell: bash -el {0} | |
if: "!contains(matrix.image, 'windows') && env.JGILLIS_RESTRICTED == 'true'" | |
- env: | |
PYTHONPATH: ${{ github.workspace }}/casadi | |
JGILLIS_RESTRICTED: ${{ secrets.JGILLIS_RESTRICTED != '' }} | |
run: | | |
cd test/python | |
python -c "from casadi.tools import *;loadAllCompiledPlugins()" | |
shell: pwsh | |
if: "contains(matrix.image, 'windows') && env.JGILLIS_RESTRICTED == 'true'" | |
- run: | | |
cd test/python | |
wget https://github.com/casadi/testbot/releases/download/perpetual/serialize_3.5.5.zip | |
unzip serialize_3.5.5.zip | |
shell: bash -el {0} | |
if: "!contains(matrix.image, 'windows')" | |
- env: | |
PYTHONPATH: ${{ github.workspace }}/casadi | |
run: | | |
cd test/python | |
python alltests.py --run_slow | |
shell: bash -el {0} | |
if: "!contains(matrix.image, 'windows')" | |
- env: | |
PYTHONPATH: ${{ github.workspace }}/casadi | |
run: | | |
cd test/python | |
python alltests.py --run_slow | |
shell: pwsh | |
if: contains(matrix.image, 'windows') | |
- name: Inject slug/short variables | |
uses: rlespinasse/github-slug-action@v4.4.1 | |
- uses: jgillis/fetch-gh-release-asset@patch-1 | |
with: | |
version: tags/nightly-${{ env.GITHUB_REF_SLUG }} | |
file: casadi-${{ needs.version.outputs.wheel }}-cp${{matrix.py2}}-none-${{env.platform}}.whl | |
- run: | | |
pip install -vvv casadi-${{ needs.version.outputs.wheel }}-cp${{matrix.py2}}-none-${{env.platform}}.whl | |
cd test/python | |
python function.py | |
shell: bash -el {0} | |
if: "!contains(matrix.image, 'windows')" | |
- run: | | |
pip install -vvv casadi-${{ needs.version.outputs.wheel }}-cp${{matrix.py2}}-none-${{env.platform}}.whl | |
cd test/python | |
python function.py | |
shell: pwsh | |
if: contains(matrix.image, 'windows') |