bartjuw is building libantimonyjs #74
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: build-libantimonyjs-github-actions | |
run-name: ${{ github.actor }} is building libantimonyjs | |
on: | |
workflow_dispatch: | |
inputs: | |
antimony_version: | |
description: 'Antimony version number' | |
required: true | |
default: '2.13.4' | |
libsbml_version: | |
description: 'LibSBML version number' | |
required: true | |
default: '5.20.0' | |
jobs: | |
build-new-version-antimonyjs: | |
runs-on: ubuntu-latest | |
env: | |
EMSDK: emsdk | |
EMSCRIPTEN_VERS: '3.1.20' | |
EMSDK_NODE: emsdk/node/16.20.0_64bit/bin/node | |
SBML_VERS: ${{ inputs.libsbml_version }} | |
ANT_VERS: ${{ inputs.antimony_version }} | |
steps: | |
- uses: actions/checkout@v4 | |
- name: get emscripten | |
run: git clone https://github.com/emscripten-core/emsdk.git | |
- name: change emsdk script permissions | |
run: chmod +x emsdk | |
working-directory: emsdk | |
- name: install emscripten sdk | |
run: ./emsdk install $EMSCRIPTEN_VERS | |
working-directory: emsdk | |
- name: activate emscripten | |
run: ./emsdk activate $EMSCRIPTEN_VERS | |
working-directory: emsdk | |
- run: echo "$GITHUB_WORKSPACE/emsdk/upstream/emscripten" >> $GITHUB_PATH | |
- run: echo "$GITHUB_WORKSPACE/emsdk" >> $GITHUB_PATH | |
- name: confirm emscripten works | |
run: emcc -v | |
- run: echo $PATH | |
- run: echo $EMSDK_NODE | |
- run: mkdir install | |
- run: wget https://github.com/libexpat/libexpat/releases/download/R_2_2_10/expat-2.2.10.tar.bz2 | |
- run: tar -xf expat-2.2.10.tar.bz2 | |
- run: mv expat-2.2.10 expat | |
- name: make expat build dir | |
run: mkdir build | |
working-directory: expat | |
- name: build expat lib | |
run: emcmake cmake .. -DCMAKE_INSTALL_PREFIX=$GITHUB_WORKSPACE/install/expat | |
working-directory: expat/build | |
- name: Compile expat lib | |
run: emmake make | |
working-directory: expat/build | |
- name: install expat lib | |
run: emmake make install | |
working-directory: expat/build | |
- name: Get libSBML | |
run: wget https://github.com/sbmlteam/libsbml/archive/refs/tags/v$SBML_VERS.zip | |
- run: unzip v$SBML_VERS.zip | |
- run: mv libsbml-$SBML_VERS libsbml | |
- name: make libsbml build dir | |
run: mkdir build | |
working-directory: libsbml | |
- name: build libsbml library | |
run: emcmake cmake .. -DCMAKE_INSTALL_PREFIX=$GITHUB_WORKSPACE/install/sbml -DCMAKE_BUILD_TYPE=Release -DWITH_CPP_NAMESPACE=ON -DWITH_EXPAT=ON -DWITH_LIBXML=OFF -DLIBSBML_SKIP_SHARED_LIBRARY=ON -DENABLE_ARRAYS=ON -DENABLE_COMP=ON -DENABLE_DISTRIB=ON -DENABLE_FBC=ON -DENABLE_GROUPS=ON -DENABLE_MULTI=ON -DENABLE_QUAL=ON -DWITH_STABLE_PACKAGES=ON -DWITH_SWIG=OFF -DEXPAT_INCLUDE_DIR=$GITHUB_WORKSPACE/install/expat/include -DEXPAT_LIBRARY=$GITHUB_WORKSPACE/install/expat/lib/libexpat.a | |
working-directory: libsbml/build | |
- name: compile libsbml lib | |
run: emmake make | |
working-directory: libsbml/build | |
- name: install libsbml | |
run: emmake make install | |
working-directory: libsbml/build | |
- name: Get antimony | |
run: wget https://github.com/sys-bio/antimony/archive/refs/tags/v$ANT_VERS.zip | |
- run: unzip v$ANT_VERS.zip | |
- run: mv antimony-$ANT_VERS/ antimony | |
- name: make antimony build dir | |
run: mkdir build | |
working-directory: antimony | |
- name: Build antimony library | |
run: emcmake cmake .. -DCMAKE_INSTALL_PREFIX=$GITHUB_WORKSPACE/install/antimony -DCMAKE_BUILD_TYPE=Release -DEXPAT_LIBRARY=$GITHUB_WORKSPACE/install/expat/lib/libexpat.a -DLIBSBML_INCLUDE_DIR=$GITHUB_WORKSPACE/install/sbml/include -DLIBSBML_INSTALL_DIR=$GITHUB_WORKSPACE/install/sbml -DLIBSBML_LIBRARY=$GITHUB_WORKSPACE/install/sbml/lib/libsbml-static.a -DWITH_CELLML=OFF -DWITH_CHECK=OFF -DWITH_COMP_SBML=ON -DWITH_LIBSBML_COMPRESSION=OFF -DWITH_LIBSBML_EXPAT=ON -DWITH_LIBSBML_LIBXML=OFF -DWITH_LIBSBML_XERCES=OFF -DWITH_PYTHON=OFF -DWITH_QTANTIMONY=OFF -DWITH_SBML=ON -DWITH_STATIC_SBML=ON -DWITH_SWIG=OFF | |
working-directory: antimony/build | |
- name: Compile antimony lib | |
run: emmake make | |
working-directory: antimony/build | |
- name: Install antimony lib | |
run: emmake make install | |
working-directory: antimony/build | |
- name: Generate antimony javascript and wasm files | |
run: emcc -Oz -sDISABLE_EXCEPTION_CATCHING=0 -sMODULARIZE=1 -sSINGLE_FILE=1 -sEXPORT_NAME=libantimony -sALLOW_MEMORY_GROWTH=1 -I$GITHUB_WORKSPACE/install/antimony/include -I$GITHUB_WORKSPACE/install/sbml/include -I$GITHUB_WORKSPACE/install/expat/include $GITHUB_WORKSPACE/install/antimony/lib/libantimony.a $GITHUB_WORKSPACE/install/sbml/lib/libsbml-static.a $GITHUB_WORKSPACE/install/expat/lib/libexpat.a -o libantimony.js -sEXPORTED_FUNCTIONS=_loadString,_loadAntimonyString,_loadSBMLString,_clearPreviousLoads,_getAntimonyString,_getSBMLString,_getCompSBMLString,_getLastError,_getWarnings,_getSBMLInfoMessages,_getSBMLWarnings,_freeAll,_malloc,_free -sEXPORTED_RUNTIME_METHODS=ccall,cwrap,allocateUTF8,UTF8ToString | |
working-directory: install | |
- name: List build libantimonyjs files | |
run: ls -l | |
working-directory: install | |
- name: Copy libantimonyjs to test dir | |
run: cp libantimony.* $GITHUB_WORKSPACE/test | |
working-directory: install | |
- name: check built files exist | |
run: ls -l | |
working-directory: test | |
- name: Check node is available | |
run: node -v | |
working-directory: test | |
- name: run tests | |
run: node test_antimony.js >> results.txt | |
working-directory: test | |
- name: output test results | |
run: cat results.txt | |
working-directory: test | |
- name: Check test results | |
run: grep 'Fail- 0' results.txt | |
working-directory: test | |
- name: Commit new libantimony files | |
run: mkdir v$ANT_VERS | |
working-directory: release | |
- name: Copy libantimonyjs to release dir | |
run: cp libantimony.* $GITHUB_WORKSPACE/release/v$ANT_VERS | |
working-directory: install | |
- name: Copy antimony_wrap.js to release dir | |
run: cp $GITHUB_WORKSPACE/scripts/antimony_wrap.js $GITHUB_WORKSPACE/release/v$ANT_VERS | |
- name: generate ReleaseInfo.txt | |
run: echo "libantimonyjs release $ANT_VERS" > v$ANT_VERS/ReleaseInfo.txt | |
working-directory: release | |
- run: echo "libSBML source- $SBML_VERS" >> v$ANT_VERS/ReleaseInfo.txt | |
working-directory: release | |
- run: echo "Antimony source- $ANT_VERS" >> v$ANT_VERS/ReleaseInfo.txt | |
working-directory: release | |
- run: echo "Emscripten version- $EMSCRIPTEN_VERS" >> v$ANT_VERS/ReleaseInfo.txt | |
working-directory: release | |
- run: echo "Following methods are available- From Antimony library - _loadString, _loadAntimonyString, _loadSBMLString, _clearPreviousLoads, _getAntimonyString, _freeAll, _getSBMLString, _getCompSBMLString, _getLastError, _getWarnings, _getSBMLInfoMessages, _getSBMLWarnings." >> v$ANT_VERS/ReleaseInfo.txt | |
working-directory: release | |
- run: echo "From Emscripten - _malloc, _free, ccall, cwrap, allocateUTF8, UTF8ToString." >> v$ANT_VERS/ReleaseInfo.txt | |
working-directory: release | |
- run: cp -f v$ANT_VERS/ReleaseInfo.txt $GITHUB_WORKSPACE/docs | |
working-directory: release | |
- name: Copy libantimonyjs to docs dir | |
run: cp -f libantimony.* $GITHUB_WORKSPACE/docs | |
working-directory: install | |
- name: Check in changes | |
run: | | |
date > generated.txt | |
git config user.name github-actions | |
git config user.email [email protected] | |
git add release/v$ANT_VERS/libantimony.js release/v$ANT_VERS/libantimony.wasm release/v$ANT_VERS/ReleaseInfo.txt | |
git commit -m "new build for antimony v$ANT_VERS" release/v$ANT_VERS/libantimony.js release/v$ANT_VERS/libantimony.wasm release/v$ANT_VERS/ReleaseInfo.txt docs/libantimony.js docs/libantimony.wasm docs/ReleaseInfo.txt | |
git push | |