-
Notifications
You must be signed in to change notification settings - Fork 45
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge remote-tracking branch 'upstream/master' into code_generation_h…
…elper
- Loading branch information
Showing
560 changed files
with
22,281 additions
and
17,374 deletions.
There are no files selected for viewing
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,33 +1,84 @@ | ||
name: NESTML build | ||
|
||
on: [push, pull_request] | ||
|
||
jobs: | ||
nest-3-latest: | ||
|
||
link_checker: | ||
runs-on: ubuntu-latest | ||
steps: | ||
- uses: actions/checkout@v3 | ||
|
||
- name: Link Checker | ||
uses: lycheeverse/[email protected] | ||
with: | ||
args: --verbose --no-progress **/*.md **/*.html **/*.rst | ||
fail: true | ||
env: | ||
GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}} | ||
|
||
static_checks: | ||
runs-on: ubuntu-latest | ||
strategy: | ||
fail-fast: false | ||
steps: | ||
# Checkout the repository contents | ||
- name: Checkout NESTML code | ||
uses: actions/checkout@v2 | ||
uses: actions/checkout@v3 | ||
|
||
# Setup Python version | ||
- name: Setup Python 3.9 | ||
uses: actions/setup-python@v2 | ||
- name: Setup Python 3.8 | ||
uses: actions/setup-python@v4 | ||
with: | ||
python-version: 3.9 | ||
python-version: 3.8 | ||
|
||
# Install dependencies | ||
- name: Install apt dependencies | ||
run: | | ||
sudo apt-get update | ||
sudo apt-get install libltdl7-dev libgsl0-dev libncurses5-dev libreadline6-dev pkg-config | ||
sudo apt-get install python3-all-dev | ||
# Install Python dependencies | ||
- name: Python dependencies | ||
run: | | ||
python -m pip install --upgrade pycodestyle | ||
python -m pip install -r requirements.txt | ||
# Static code analysis | ||
- name: Static code style analysis | ||
run: | | ||
python3 extras/codeanalysis/check_copyright_headers.py && python3 -m pycodestyle $GITHUB_WORKSPACE -v --ignore=E241,E501,E714,E713,E714,E252,W503 --exclude=$GITHUB_WORKSPACE/doc,$GITHUB_WORKSPACE/.git,$GITHUB_WORKSPACE/NESTML.egg-info,$GITHUB_WORKSPACE/pynestml/generated,$GITHUB_WORKSPACE/extras,$GITHUB_WORKSPACE/build,$GITHUB_WORKSPACE/.github | ||
build_and_test_py_standalone: | ||
needs: [static_checks] | ||
runs-on: ubuntu-latest | ||
steps: | ||
# Checkout the repository contents | ||
- name: Checkout NESTML code | ||
uses: actions/checkout@v3 | ||
|
||
# Setup Python version | ||
- name: Setup Python 3.8 | ||
uses: actions/setup-python@v4 | ||
with: | ||
python-version: 3.8 | ||
|
||
# Install dependencies | ||
- name: Install apt dependencies | ||
run: | | ||
sudo apt-get update | ||
sudo apt-get install libgsl0-dev libncurses5-dev pkg-config | ||
sudo apt-get install python3-all-dev python3-matplotlib python3-numpy python3-scipy ipython3 | ||
# Install Python dependencies | ||
- name: Python dependencies | ||
run: | | ||
python -m pip install --upgrade pip pytest jupyterlab matplotlib pycodestyle scipy | ||
python -m pip install -r requirements.txt | ||
# Install Java | ||
- name: Install Java 11 | ||
uses: actions/setup-java@v1 | ||
uses: actions/setup-java@v2 | ||
with: | ||
distribution: 'zulu' | ||
java-version: '11.0.x' | ||
java-package: jre | ||
|
||
|
@@ -41,130 +92,45 @@ jobs: | |
chmod +x antlr4 | ||
echo PATH=$PATH:`pwd` >> $GITHUB_ENV | ||
# Install Python dependencies | ||
- name: Python dependencies | ||
run: | | ||
python -m pip install --upgrade pip pytest jupyterlab matplotlib pycodestyle | ||
python -m pip install -r requirements.txt | ||
python -m pip install scipy | ||
# python -m pip uninstall --yes odetoolbox | ||
# python -m pip install git+https://github.com/nest/ode-toolbox | ||
# Install NESTML | ||
- name: Install NESTML | ||
run: | | ||
echo PYTHONPATH=`pwd` >> $GITHUB_ENV | ||
export PYTHONPATH=${{ env.PYTHONPATH }}:${{ env.NEST_INSTALL }}/lib/python3.8/site-packages | ||
#echo PYTHONPATH=`pwd` >> $GITHUB_ENV | ||
echo "PYTHONPATH=$PYTHONPATH" >> $GITHUB_ENV | ||
python setup.py install | ||
- name: Generate Lexer and Parser using Antlr4 | ||
run: | | ||
cd $GITHUB_WORKSPACE | ||
find pynestml/generated -not -name __init__.py -a -not -name generated -delete | ||
cd pynestml/grammars | ||
./generate_lexer_parser | ||
# Static code analysis | ||
- name: Static code style analysis | ||
run: | | ||
python3 extras/codeanalysis/check_copyright_headers.py && python3 -m pycodestyle $GITHUB_WORKSPACE -v --ignore=E241,E501,E714,E713,E714,E252,W503 --exclude=$GITHUB_WORKSPACE/doc,$GITHUB_WORKSPACE/.git,$GITHUB_WORKSPACE/NESTML.egg-info,$GITHUB_WORKSPACE/pynestml/generated,$GITHUB_WORKSPACE/extras,$GITHUB_WORKSPACE/build,$GITHUB_WORKSPACE/.github | ||
# Unit tests | ||
- name: Run unit tests | ||
run: | | ||
pytest -s -o norecursedirs='*' -o log_cli=true -o log_cli_level="DEBUG" tests || : | ||
git ls-remote git://github.com/nest/nest-simulator.git | grep refs/heads/master | cut -f 1 > latest_nest_master_commit_hash.txt | ||
echo "Latest NEST master commit hash:" | ||
cat latest_nest_master_commit_hash.txt | ||
# Install NEST simulator | ||
#- name: NEST simulator cache | ||
# id: nest_simulator_cache | ||
# uses: actions/cache@v2 | ||
# env: | ||
# cache-name: nest-simulator-cache | ||
# with: | ||
# path: | | ||
# /home/runner/work/nestml/nest-simulator | ||
# /home/runner/work/nestml/nest_install | ||
# key: nest-simulator-${{ hashFiles('latest_nest_master_commit_hash.txt') }} | ||
|
||
# Install NEST simulator | ||
- name: NEST simulator | ||
#if: steps.nest_simulator_cache.outputs.cache-hit != 'true' | ||
run: | | ||
#echo "Latest NEST master commit hash:" | ||
#cat latest_nest_master_commit_hash.txt | ||
python -m pip install cython | ||
echo "GITHUB_WORKSPACE = $GITHUB_WORKSPACE" | ||
cd $GITHUB_WORKSPACE/.. | ||
NEST_SIMULATOR=$(pwd)/nest-simulator | ||
NEST_INSTALL=$(pwd)/nest_install | ||
echo "NEST_SIMULATOR = $NEST_SIMULATOR" | ||
echo "NEST_INSTALL = $NEST_INSTALL" | ||
git clone --depth=1 https://github.com/nest/nest-simulator | ||
mkdir nest_install | ||
echo "NEST_INSTALL=$NEST_INSTALL" >> $GITHUB_ENV | ||
cd nest_install | ||
cmake -DCMAKE_INSTALL_PREFIX=$NEST_INSTALL $NEST_SIMULATOR | ||
make && make install | ||
# Install NESTML (repeated) | ||
- name: Install NESTML | ||
run: | | ||
export PYTHONPATH=${{ env.PYTHONPATH }}:${{ env.NEST_INSTALL }}/lib/python3.9/site-packages | ||
echo "PYTHONPATH=$PYTHONPATH" >> $GITHUB_ENV | ||
python setup.py install | ||
# Run IPython/Jupyter notebooks | ||
- name: Run Jupyter notebooks | ||
run: | | ||
cd $GITHUB_WORKSPACE | ||
ipynb_fns=$(find $GITHUB_WORKSPACE/doc/tutorials -name '*.ipynb') | ||
rc=0 | ||
for fn in $ipynb_fns; do | ||
cd `dirname ${fn}` | ||
ipython3 ${fn} || rc=1 | ||
done; | ||
cd $GITHUB_WORKSPACE | ||
exit $rc | ||
# Integration tests: prepare (make module containing all NESTML models) | ||
- name: Setup integration tests | ||
run: | | ||
cd $GITHUB_WORKSPACE | ||
# exclude third factor plasticity models; these will only compile successfully if code generation is as a neuron+synapse pair | ||
export ALL_MODEL_FILENAMES=`find models/neurons -name "*.nestml" | paste -sd " "` | ||
echo $ALL_MODEL_FILENAMES | ||
echo "NEST_INSTALL = ${{ env.NEST_INSTALL }}" | ||
sed -i 's|%NEST_PATH%|${{ env.NEST_INSTALL }}|' tests/nest_tests/resources/nest_codegen_opts.json | ||
nestml --input_path $ALL_MODEL_FILENAMES --target_path target --suffix _nestml --logging_level INFO --module_name nestml_allmodels_module --codegen_opts tests/nest_tests/resources/nest_codegen_opts.json | ||
# Integration tests | ||
# Run integration tests | ||
- name: Run integration tests | ||
run: | | ||
cd $GITHUB_WORKSPACE | ||
rc=0 | ||
for fn in $GITHUB_WORKSPACE/tests/nest_tests/*.py; do | ||
for fn in $GITHUB_WORKSPACE/tests/python_standalone_tests/*.py; do | ||
pytest -s -o log_cli=true -o log_cli_level="DEBUG" ${fn} || rc=1 | ||
done; | ||
exit $rc | ||
nest-2: | ||
build_and_test: | ||
needs: [static_checks] | ||
runs-on: ubuntu-latest | ||
strategy: | ||
matrix: | ||
nest_branch: ["v2.20.2", "v3.0", "v3.1", "v3.2", "v3.3", "v3.4", "master"] | ||
fail-fast: false | ||
env: | ||
NEST_VERSION_MAJOR: 2 | ||
steps: | ||
# Checkout the repository contents | ||
- name: Checkout NESTML code | ||
uses: actions/checkout@v2 | ||
uses: actions/checkout@v3 | ||
|
||
# Setup Python version | ||
- name: Setup Python 3.9 | ||
uses: actions/setup-python@v2 | ||
- name: Setup Python 3.8 | ||
uses: actions/setup-python@v4 | ||
with: | ||
python-version: 3.9 | ||
python-version: 3.8 | ||
|
||
# Install dependencies | ||
- name: Install apt dependencies | ||
|
@@ -176,64 +142,104 @@ jobs: | |
# Install Python dependencies | ||
- name: Python dependencies | ||
run: | | ||
python -m pip install --upgrade pip pytest jupyterlab matplotlib pycodestyle | ||
python -m pip install --upgrade pip pytest jupyterlab matplotlib pycodestyle scipy pandas | ||
python -m pip install -r requirements.txt | ||
python -m pip install scipy | ||
# python -m pip uninstall --yes odetoolbox | ||
# python -m pip install git+https://github.com/nest/ode-toolbox | ||
- name: Install NESTML | ||
# Install Java | ||
- name: Install Java 11 | ||
uses: actions/setup-java@v2 | ||
with: | ||
distribution: 'zulu' | ||
java-version: '11.0.x' | ||
java-package: jre | ||
|
||
# Install Antlr4 | ||
- name: Install Antlr4 | ||
run: | | ||
echo PYTHONPATH=`pwd` >> $GITHUB_ENV | ||
python setup.py install | ||
wget http://www.antlr.org/download/antlr-4.10-complete.jar | ||
echo \#\!/bin/bash > antlr4 | ||
echo java -cp \"`pwd`/antlr-4.10-complete.jar:$CLASSPATH\" org.antlr.v4.Tool \"\$@\" >> antlr4 | ||
echo >> antlr4 | ||
chmod +x antlr4 | ||
echo PATH=$PATH:`pwd` >> $GITHUB_ENV | ||
# Install NEST simulator | ||
- name: NEST simulator | ||
run: | | ||
python -m pip install cython | ||
echo "GITHUB_WORKSPACE = $GITHUB_WORKSPACE" | ||
cd $GITHUB_WORKSPACE/.. | ||
NEST_SIMULATOR=$(pwd)/nest-simulator | ||
NEST_INSTALL=$(pwd)/nest_install | ||
echo "NEST_SIMULATOR = $NEST_SIMULATOR" | ||
echo "NEST_INSTALL = $NEST_INSTALL" | ||
echo "NEST_VERSION_MAJOR = $NEST_VERSION_MAJOR" | ||
git clone --depth=1 https://github.com/nest/nest-simulator --branch v2.20.2 | ||
cd nest-simulator | ||
git status | ||
cd .. | ||
git clone --depth=1 https://github.com/nest/nest-simulator --branch ${{ matrix.nest_branch }} | ||
mkdir nest_install | ||
echo "NEST_INSTALL=$NEST_INSTALL" >> $GITHUB_ENV | ||
cd nest_install | ||
cmake -DCMAKE_INSTALL_PREFIX=$NEST_INSTALL $NEST_SIMULATOR | ||
make && make install | ||
cd .. | ||
# Install NESTML (repeated) | ||
- name: Install NESTML | ||
run: | | ||
export PYTHONPATH=${{ env.PYTHONPATH }}:${{ env.NEST_INSTALL }}/lib/python3.9/site-packages | ||
export PYTHONPATH=${{ env.PYTHONPATH }}:${{ env.NEST_INSTALL }}/lib/python3.8/site-packages | ||
#echo PYTHONPATH=`pwd` >> $GITHUB_ENV | ||
echo "PYTHONPATH=$PYTHONPATH" >> $GITHUB_ENV | ||
python setup.py install | ||
- name: Generate Lexer and Parser using Antlr4 | ||
run: | | ||
cd pynestml/grammars | ||
./generate_lexer_parser | ||
# Unit tests | ||
- name: Run unit tests | ||
run: | | ||
pytest -s -o norecursedirs='*' -o log_cli=true -o log_cli_level="DEBUG" tests | ||
# Integration tests: prepare (make module containing all NESTML models) | ||
- name: Setup integration tests | ||
run: | | ||
cd $GITHUB_WORKSPACE | ||
# exclude third factor plasticity models; these will only compile successfully if code generation is as a neuron+synapse pair | ||
export ALL_MODEL_FILENAMES=`find models/neurons -name "*.nestml" | paste -sd " "` | ||
echo $ALL_MODEL_FILENAMES | ||
echo "NEST_INSTALL = ${{ env.NEST_INSTALL }}" | ||
sed -i 's|%NEST_PATH%|${{ env.NEST_INSTALL }}|' tests/nest_tests/resources/nest2_allmodels_codegen_opts.json | ||
cat tests/nest_tests/resources/nest2_allmodels_codegen_opts.json | ||
nestml --input_path $ALL_MODEL_FILENAMES --target_path target --target_platform NEST2 --suffix _nestml --logging_level INFO --module_name nestml_allmodels_module --codegen_opts tests/nest_tests/resources/nest2_allmodels_codegen_opts.json | ||
echo "NEST_VERSION = ${{ matrix.nest_branch }}" | ||
sed -i 's|%NEST_PATH%|${{ env.NEST_INSTALL }}|' tests/nest_tests/resources/nest_codegen_opts.json | ||
sed -i 's|%NEST_VERSION%|${{ matrix.nest_branch }}|' tests/nest_tests/resources/nest_codegen_opts.json | ||
nestml --input_path $ALL_MODEL_FILENAMES --target_path target --suffix _nestml --logging_level INFO --module_name nestml_allmodels_module --codegen_opts tests/nest_tests/resources/nest_codegen_opts.json | ||
# Integration tests | ||
- name: Run integration tests | ||
if: ${{ matrix.nest_branch == 'master' || matrix.nest_branch == 'v2.20.2' }} | ||
env: | ||
LD_LIBRARY_PATH: ${{ env.NEST_INSTALL }}/lib/nest | ||
run: | | ||
cd $GITHUB_WORKSPACE | ||
rc=0 | ||
pytest -s -o log_cli=true -o log_cli_level="DEBUG" tests/nest_tests/nest2_compat_test.py || rc=1 | ||
for fn in $GITHUB_WORKSPACE/tests/nest_tests/*.py; do | ||
pytest -s -o log_cli=true -o log_cli_level="DEBUG" ${fn} || rc=1 | ||
done; | ||
exit $rc | ||
# Run only the nest_integration_test for the NEST versions other than master and 2.20.2 | ||
- name: Run integration tests | ||
if: ${{ !(matrix.nest_branch == 'master' || matrix.nest_branch == 'v2.20.2') }} | ||
env: | ||
LD_LIBRARY_PATH: ${{ env.NEST_INSTALL }}/lib/nest | ||
run: | | ||
pytest -s -o log_cli=true -o log_cli_level="DEBUG" tests/nest_tests/nest_integration_test.py | ||
# Run IPython/Jupyter notebooks | ||
- name: Run Jupyter notebooks | ||
if: ${{ matrix.nest_branch == 'master' }} | ||
run: | | ||
ipynb_fns=$(find $GITHUB_WORKSPACE/doc/tutorials -name '*.ipynb') | ||
rc=0 | ||
for fn in $ipynb_fns; do | ||
cd `dirname ${fn}` | ||
ipython3 ${fn} || rc=1 | ||
done; | ||
cd $GITHUB_WORKSPACE | ||
exit $rc |
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,12 +1,13 @@ | ||
version: 2 | ||
|
||
build: | ||
image: latest | ||
os: ubuntu-20.04 | ||
tools: | ||
python: "3.9" | ||
|
||
sphinx: | ||
configuration: doc/sphinx-apidoc/conf.py | ||
|
||
python: | ||
version: 3.8 | ||
install: | ||
- requirements: doc/requirements.txt |
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
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
Oops, something went wrong.