Skip to content

Build Nuget package for the .NET interface #6

Build Nuget package for the .NET interface

Build Nuget package for the .NET interface #6

Workflow file for this run

name: Build Nuget package native libraries
on:
workflow_dispatch:
# allow manual triggering of this workflow
inputs:
outgoing_ref:
description: "The ref to be built. Can be a tag, commit hash, or branch name"
required: true
default: "main"
push:
# Run when the main branch is pushed to
branches:
- main
pull_request:
# Build when a pull request targets main
branches:
- main
# use oldest version of OS runner availability for maximum backward compatibility
# this workflow identifies different builds by their .NET Runtime Identifier (RID)
# for consistency with the Nuget packaging scheme
jobs:
linux-x64:
name: Build linux-x64 native lib
runs-on: ubuntu-20.04
timeout-minutes: 60
steps:
- uses: actions/checkout@v3
name: Checkout the repository
with:
submodules: recursive
- name: Setup Python
uses: actions/setup-python@v4
with:
python-version: "3.11"
architecture: x64
- name: Install Apt dependencies
run: |
sudo apt update
sudo apt install libboost-dev scons
# todo blas and lapack
gcc --version
- name: Build Cantera
run: |
python3 `which scons` build env_vars=all -j2 debug=n --debug=time \
system_fmt=n python_package=n
- name: Upload native library
uses: actions/upload-artifact@v3
with:
path: build/lib/libcantera_shared.so
name: libcantera_shared.so-linux-64
retention-days: 7
win-x64:
name: Build win-x64 native lib
runs-on: windows-2019
timeout-minutes: 60
env:
BOOST_ROOT: ${{github.workspace}}/3rdparty/boost
BOOST_URL: https://boostorg.jfrog.io/artifactory/main/release/1.78.0/source/boost_1_78_0.7z
steps:
- uses: actions/checkout@v3
name: Checkout the repository
with:
submodules: recursive
- name: Set Up Python
uses: actions/setup-python@v4
with:
python-version: "3.11"
architecture: x64
- name: Install Python dependencies
run: |
python -m pip install -U pip
python -m pip install '"scons<4.4.0"'
- name: Restore Boost cache
uses: actions/cache@v3
id: cache-boost
with:
path: ${{env.BOOST_ROOT}}
key: boost-178-win
- name: Install Boost Headers
if: steps.cache-boost.outputs.cache-hit != 'true'
run: |
BOOST_ROOT=$(echo $BOOST_ROOT | sed 's/\\/\//g')
mkdir -p $BOOST_ROOT
curl --progress-bar --location --output $BOOST_ROOT/download.7z $BOOST_URL
7z -o$BOOST_ROOT x $BOOST_ROOT/download.7z -y -bd boost_1_78_0/boost
mv $BOOST_ROOT/boost_1_78_0/boost $BOOST_ROOT/boost
rm $BOOST_ROOT/download.7z
shell: bash
- name: Build Cantera
run: scons build -j2 boost_inc_dir=%BOOST_ROOT% debug=n logging=debug
python_package=n env_vars=USERPROFILE,GITHUB_ACTIONS
msvc_version=14.2 f90_interface=n --debug=time
shell: cmd
- name: Upload native library
uses: actions/upload-artifact@v3
with:
path: build/lib/cantera_shared.dll
name: cantera_shared.dll-win-64
retention-days: 7
osx-x64:
name: Build osx-x64 native lib
runs-on: macos-11
timeout-minutes: 90
steps:
# Attempt to fix intermittent cloning errors. The error message says something like
# error: RPC failed; curl 18 transfer closed with outstanding read data remaining
# The clone is already being done with --depth=1, so the next recommended fix is to
# increase the buffer size. See also:
# https://github.com/actions/virtual-environments/issues/2198
# https://stackoverflow.com/q/38618885
- name: Configure git
run: /usr/local/bin/git config --global http.postBuffer 1048576000
- uses: actions/checkout@v3
name: Checkout the repository
with:
submodules: recursive
- name: Install Brew dependencies
run: brew install --display-times boost scons
- name: Build Cantera
run: scons build env_vars=all -j3 python_package=n debug=n --debug=time
- name: Upload shared library
uses: actions/upload-artifact@v3
with:
path: build/lib/libcantera_shared.dylib
name: libcantera_shared.dylib-osx-x64
retention-days: 7