Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

NEURON 8.0.1 release #1603

Merged
merged 37 commits into from
Jan 28, 2022
Merged
Show file tree
Hide file tree
Changes from 36 commits
Commits
Show all changes
37 commits
Select commit Hold shift + click to select a range
c80b194
Win CIs: exit with code 1 since %errorlevel% may be off (#1239)
alexsavulescu May 3, 2021
74831f7
documentation CI: avoid apt-get update & upgrade (#1238)
alexsavulescu May 3, 2021
c9b6fb9
fixed links for HOC Interpreter doc; resolves #1104 (#1244)
ramcdougal May 4, 2021
b91db0e
CMake: pytest-cov is now optional (#1250)
alexsavulescu May 5, 2021
c2f39ea
Support NVHPC compiler with CMake v3.20. (#1266)
olupton May 10, 2021
fd9f9e0
docs html2py - improve jump table links parsing (#1273)
alexsavulescu May 11, 2021
7ec004e
init.py relative import for HOC - PEP328 (#1267)
alexsavulescu May 11, 2021
dedb06a
Add missing build dependency of hoc_module. (#1277)
olupton May 14, 2021
9d831c9
build_wheels: more logging (#1295)
alexsavulescu May 20, 2021
acde642
Sphinx HOC Domain workaround (#1588)
alexsavulescu Jan 19, 2022
8252822
Add support for Python 3.10 (#1562)
alexsavulescu Dec 23, 2021
d8322f8
liblto_plugin-0.dll not available anymore (#1551)
alexsavulescu Dec 7, 2021
00b8ba0
more robust python requirements management
alexsavulescu May 5, 2021
cfe69b4
use manylinux1 docker tag for Linux wheels
alexsavulescu Jan 24, 2022
729ee57
CondaEnvironment: get rid of `file:` URI syntax (#1392)
alexsavulescu Aug 3, 2021
9601b95
nrnversion_h: Use `bash` instead of `$ENV{SHELL}` (#1591)
alexsavulescu Jan 19, 2022
c455158
Refactor neuron.coreneuron for Python 3.10.x (#1528)
olupton Nov 11, 2021
9428175
NEURON can dynamically link to Python3.10 (#1558)
alexsavulescu Jan 24, 2022
568c9c3
WinCI: new strategy for hoc file association test (#1395)
alexsavulescu Aug 7, 2021
157f42b
Windows CI: add hoc association test mitigation strategy (#1445)
alexsavulescu Sep 7, 2021
e631cfe
split manylinux wheels between manylinux1 and manylinux14
alexsavulescu Jan 24, 2022
7a05520
bugfix: Uninitialized memory for particular rxd reaction currents. (#…
adamjhn May 6, 2021
d2b1879
Make rxd.Species keep the corresponding SpeciesOnRegion alive. (#1270)
adamjhn May 11, 2021
0042fcc
bugfix: Windows fix for 3D and hybrid rxd reaction. (#1319)
adamjhn Jun 9, 2021
e32092a
Fix rxd.re_init so that it loads values from NEURON into rxd nodes. (…
adamjhn Jun 9, 2021
acbd432
Fix rxd initialization of extracellular species. (#1326)
adamjhn Jun 11, 2021
d525c36
bugfix: rxd missing surface area in voxels on grid boundaries. (#1471)
alexsavulescu Jan 24, 2022
8086790
Fix rxdmath problem with abs (#1545)
alexsavulescu Jan 24, 2022
df7622a
fix rxd
alexsavulescu Jan 25, 2022
e6bc984
Prepend MPI include paths in case of dynamic MPI build (#1585)
pramodk Jan 17, 2022
6bbc6e9
disable VM testing for Python3.5
alexsavulescu Jan 27, 2022
a95032b
Python3.10 available only in the manylinux2014 wheel
alexsavulescu Jan 27, 2022
34467f7
catch2: bump to v2.13.7 (#1521)
olupton Nov 8, 2021
c7ab135
temporarily pin setuptools to <59.7.0 (#1561)
alexsavulescu Dec 20, 2021
294c8b6
changelog updates
alexsavulescu Jan 27, 2022
bb49f17
CoreNEURON 1.0.1
alexsavulescu Jan 28, 2022
5bb0ca8
fix merge issue build_wheels.bash
alexsavulescu Jan 28, 2022
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
30 changes: 19 additions & 11 deletions .github/workflows/coverage.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,10 @@ on:
- '**.rst'
- 'docs/**'

env:
PY_MIN_VERSION: 2.7
PY_MAX_VERSION: 3.8

jobs:
coverage:
runs-on: ubuntu-18.04
Expand All @@ -29,22 +33,24 @@ jobs:
sudo apt-get install build-essential doxygen autoconf automake libtool lcov autotools-dev libopenmpi-dev libmpich-dev libx11-dev libxcomposite-dev mpich openmpi-bin patchelf python-pip python-tk python-numpy python3-numpy python3-pip g++-5 g++-6 g++-8 g++-9
shell: bash

- name: Set up Python2
- name: Set up Python@${{ env.PY_MIN_VERSION }}
uses: actions/setup-python@v2
with:
python-version: '2.x'
python-version: ${{ env.PY_MIN_VERSION }}

- name: Set up Python3
- name: Set up Python@${{ env.PY_MAX_VERSION }}
uses: actions/setup-python@v2
with:
python-version: '3.8'

- name: Install Python3 dependencies
run: python3 -m pip install --upgrade pip wheel setuptools scikit-build pytest matplotlib bokeh ipython cython pytest pytest-cov mpi4py
python-version: ${{ env.PY_MAX_VERSION }}

- uses: actions/checkout@v2
with:
fetch-depth: 2
fetch-depth: 2

- name: Install Python@${{ env.PY_MAX_VERSION }} dependencies
working-directory: ${{runner.workspace}}/nrn
run: |
python -m pip install --upgrade pip -r nrn_requirements.txt

- name: Build & Test
id: build-test
Expand All @@ -58,14 +64,14 @@ jobs:
export CXX=g++

# Python setup
export PYTHON2=$(which python2);
export PYTHON3=$(which python3);
export PYTHON_MIN=$(which $PYTHON_MIN_NAME);
export PYTHON_MAX=$(which $PYTHON_MAX_NAME);

mkdir build && cd build;

# CMake options & flags
export COVERAGE_FLAGS="--coverage -O0 -fno-inline -g";
export CMAKE_OPTION="-DNRN_ENABLE_BINARY_SPECIAL=ON -DNRN_ENABLE_MPI=ON -DNRN_ENABLE_INTERVIEWS=ON -DNRN_ENABLE_PYTHON=ON -DNRN_ENABLE_PYTHON_DYNAMIC=ON -DNRN_PYTHON_DYNAMIC=${PYTHON2};${PYTHON3} -DNRN_ENABLE_CORENEURON=ON";
export CMAKE_OPTION="-DNRN_ENABLE_BINARY_SPECIAL=ON -DNRN_ENABLE_MPI=ON -DNRN_ENABLE_INTERVIEWS=ON -DNRN_ENABLE_PYTHON=ON -DNRN_ENABLE_PYTHON_DYNAMIC=ON -DNRN_PYTHON_DYNAMIC=${PYTHON_MIN};${PYTHON_MAX} -DNRN_ENABLE_CORENEURON=ON";
cmake $CMAKE_OPTION -DCMAKE_C_COMPILER=$CC -DCMAKE_CXX_COMPILER=$CXX -DNRN_ENABLE_TESTS=ON -DCMAKE_C_FLAGS="${COVERAGE_FLAGS}" -DCMAKE_CXX_FLAGS="${COVERAGE_FLAGS}" ..;

# Coverage
Expand All @@ -82,6 +88,8 @@ jobs:
bash <(curl -s https://codecov.io/bash)
env:
MATRIX_EVAL: "CC=gcc CXX=g++"
PYTHON_MIN_NAME: "python${{ env.PY_MIN_VERSION }}"
PYTHON_MAX_NAME: "python${{ env.PY_MAX_VERSION }}"

# This step will set up an SSH connection on tmate.io for live debugging.
# To trigger it, simply add 'live-debug-coverage' to your last pushed commit message.
Expand Down
29 changes: 16 additions & 13 deletions .github/workflows/docs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,9 @@ on:
- master
- release/**

env:
DEFAULT_PY_VERSION: 3.8

jobs:
documentation:
runs-on: ubuntu-18.04
Expand All @@ -22,39 +25,39 @@ jobs:

- name: Install apt packages
run: |
sudo apt-get update && sudo apt-get upgrade
sudo apt-get install build-essential autoconf automake libtool autotools-dev libopenmpi-dev libmpich-dev libx11-dev libxcomposite-dev mpich openmpi-bin patchelf python-pip python-tk python-numpy python3-numpy python3-pip g++-5 g++-6 g++-8 g++-9
sudo apt-get install build-essential autoconf automake libtool autotools-dev libopenmpi-dev libmpich-dev libx11-dev libxcomposite-dev mpich openmpi-bin patchelf g++-5 g++-6 g++-8 g++-9
sudo apt-get install ffmpeg doxygen
shell: bash

- name: Set up Python3
- name: Set up Python@${{ env.DEFAULT_PY_VERSION }}
uses: actions/setup-python@v2
with:
python-version: '3.8'
python-version: ${{ env.DEFAULT_PY_VERSION }}

- uses: actions/checkout@v2

- name: Install Python3 dependencies
- name: Install Python dependencies
working-directory: ${{runner.workspace}}/nrn
run: |
python3 -m pip install --upgrade pip wheel setuptools scikit-build pytest matplotlib bokeh ipython cython pytest pytest-cov mpi4py
python -m pip install --upgrade pip -r nrn_requirements.txt

- uses: actions/checkout@v2

- name: Install Python3 documentation dependencies
- name: Install Python documentation dependencies
working-directory: ${{runner.workspace}}/nrn
run: python3 -m pip install --upgrade -r docs/docs_requirements.txt
run: |
python -m pip install --upgrade -r docs/docs_requirements.txt

- name: Documentation
id: documentation
shell: bash
working-directory: ${{runner.workspace}}/nrn
run: |
echo "-------- NEURON wheel --------";
python3 setup.py build_ext bdist_wheel;
python setup.py build_ext bdist_wheel;
neuron_wheel=dist/NEURON*.whl;
echo "-------- install wheel --------"
python3 -m pip install $neuron_wheel;
python -m pip install $neuron_wheel;
echo "-------- now build docs--------";
python3 setup.py docs;
python setup.py docs;
echo "-------- disable jekyll--------";
pushd docs/_build;
touch .nojekyll;
Expand Down
19 changes: 12 additions & 7 deletions .github/workflows/neuron-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ env:
BUILD_TYPE: Release
DEVELOPER_DIR: /Applications/Xcode_11.3.1.app/Contents/Developer
DESIRED_CMAKE_VERSION: 3.8.2
DEFAULT_PY_VERSION: 3.8

jobs:
ci:
Expand Down Expand Up @@ -65,24 +66,28 @@ jobs:
sudo apt-get install build-essential autoconf automake libtool autotools-dev libopenmpi-dev libmpich-dev libx11-dev libxcomposite-dev mpich openmpi-bin patchelf python-pip python-tk python-numpy python3-numpy python3-pip g++-5 g++-6 g++-8 g++-9
shell: bash

- uses: actions/checkout@v2

- name: Set up Python2
uses: actions/setup-python@v2
with:
python-version: '2.x'

- name: Install Python2 dependencies
if: ${{ matrix.config.use_python2 == 'ON' || matrix.config.python_dynamic == 'ON' }}
run: python2 -m pip install --upgrade pip wheel setuptools scikit-build pytest matplotlib bokeh ipython cython pytest pytest-cov mpi4py pathlib
working-directory: ${{runner.workspace}}/nrn
run: |
python2 -m pip install --upgrade pip pathlib -r nrn_requirements.txt

- name: Set up Python3
- name: Set up Python@${{ env.DEFAULT_PY_VERSION }}
uses: actions/setup-python@v2
with:
python-version: '3.8'
python-version: ${{ env.DEFAULT_PY_VERSION }}

- name: Install Python3 dependencies
run: python3 -m pip install --upgrade pip wheel setuptools scikit-build pytest matplotlib bokeh ipython cython pytest pytest-cov mpi4py

- uses: actions/checkout@v2
- name: Install Python@${{ env.DEFAULT_PY_VERSION }} dependencies
working-directory: ${{runner.workspace}}/nrn
run: |
python -m pip install --upgrade pip -r nrn_requirements.txt

- name: Build and Test
id: build-test
Expand Down
9 changes: 8 additions & 1 deletion .github/workflows/windows.yml
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,14 @@ jobs:
name: nrn-nightly-AMD64.exe
path: ${{runner.workspace}}\nrn\nrn-nightly-AMD64.exe

- name: Run installer and launch .hoc associaton test
run: .\ci\win_install_neuron.cmd
shell: cmd
working-directory: ${{runner.workspace}}\nrn

- name: Test Installer
run: .\ci\win_test_installer.cmd
# temporarily disable rxd testing ( ci/win_test_installer.cmd <-> ci/win_test_installer_wo_rxd.cmd)
# see https://github.com/neuronsimulator/nrn/issues/1522
run: .\ci\win_test_installer_wo_rxd.cmd
shell: cmd
working-directory: ${{runner.workspace}}\nrn
9 changes: 7 additions & 2 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -553,8 +553,13 @@ if(NRN_ENABLE_TESTS)
include(CTest)
include(Catch)
find_python_module(pytest)
if(NRN_ENABLE_PYTHON AND NOT PYTEST_FOUND)
message(SEND_ERROR "pytest Python package is required.")
find_python_module(pytest_cov)
if(NRN_ENABLE_PYTHON)
if(NOT PYTEST_FOUND)
message(SEND_ERROR "pytest Python package is required.")
elseif(NOT PYTEST_COV_FOUND)
message(WARNING "pytest-cov package not installed. Python coverage will not be generated.")
endif()
endif()
# Initialize the submodule *before* including the test/CMakeLists.txt that uses it. This ensures
# that the test infrastructure can find the names of the input data files and set up rules to copy
Expand Down
50 changes: 43 additions & 7 deletions azure-pipelines.yml
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ trigger:

jobs:

- job: 'ManyLinuxWheels'
- job: 'ManyLinux1Wheels'
timeoutInMinutes: 30
pool:
vmImage: 'ubuntu-18.04'
Expand Down Expand Up @@ -54,7 +54,7 @@ jobs:
-e NRN_RELEASE_UPLOAD \
-e NEURON_WHEEL_VERSION \
-e NRN_BUILD_FOR_UPLOAD=1 \
'neuronsimulator/neuron_wheel' \
'neuronsimulator/neuron_wheel:manylinux1' \
packaging/python/build_wheels.bash linux $(python.version)
displayName: 'Building ManyLinux Wheel'

Expand All @@ -66,6 +66,35 @@ jobs:
- template: ci/azure-wheel-test-upload.yml


- job: 'ManyLinux2014Wheels'
timeoutInMinutes: 30
pool:
vmImage: 'ubuntu-18.04'
strategy:
matrix:
Python310:
python.version: '3.10'
steps:
- script: |
docker run --rm \
-w /root/nrn \
-v $PWD:/root/nrn \
-e NEURON_NIGHTLY_TAG \
-e NRN_NIGHTLY_UPLOAD \
-e NRN_RELEASE_UPLOAD \
-e NEURON_WHEEL_VERSION \
-e NRN_BUILD_FOR_UPLOAD=1 \
'neuronsimulator/neuron_wheel:latest' \
packaging/python/build_wheels.bash linux $(python.version)
displayName: 'Building ManyLinux Wheel'

- script: |
sudo apt update
sudo apt install -y mpich openmpi-bin libopenmpi-dev libmpich-dev
displayName: 'Install Test System Depdendencies'

- template: ci/azure-wheel-test-upload.yml

# Jobs to build OSX wheels natively
- job: 'MacOSWheels'
timeoutInMinutes: 30
Expand All @@ -76,29 +105,36 @@ jobs:
Python27:
python.version: '2.7'
python.org.version: '2.7.18'
python.installer.name: 'macosx10.9.pkg'
Python35:
python.version: '3.5'
python.org.version: '3.5.4'
python.installer.name: 'macosx10.6.pkg'
Python36:
python.version: '3.6'
python.org.version: '3.6.8'
python.installer.name: 'macosx10.9.pkg'
Python37:
python.version: '3.7'
python.org.version: '3.7.7'
python.installer.name: 'macosx10.9.pkg'
Python38:
python.version: '3.8'
python.org.version: '3.8.2'
python.installer.name: 'macosx10.9.pkg'
Python39:
python.version: '3.9'
python.org.version: '3.9.0'
python.installer.name: 'macosx10.9.pkg'
Python310:
python.version: '3.10'
python.org.version: '3.10.0'
python.installer.name: 'macos11.pkg'

steps:

- script: |
if [ "$(python.org.version)" == "3.5.4" ]; then
installer=python-$(python.org.version)-macosx10.6.pkg
else
installer=python-$(python.org.version)-macosx10.9.pkg
fi
installer=python-$(python.org.version)-$(python.installer.name)
url=https://www.python.org/ftp/python/$(python.org.version)/$installer
curl $url -o $installer
sudo installer -pkg $installer -target /
Expand Down
11 changes: 11 additions & 0 deletions ci/association.hoc
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
objref f
f = new File()
if (f.ropen("association.hoc.out")) {
f.close()
f.unlink()
}
f.wopen("association.hoc.out")
f.printf("%s\n","hello")
f.flush()
f.close()
quit()
2 changes: 2 additions & 0 deletions ci/azure-wheel-test-upload.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ steps:
displayName: 'Test with brew Python'

- task: UsePythonVersion@0
condition: ne(variables['python.version'], '3.5')
inputs:
versionSpec: '$(python.version)'

Expand All @@ -20,6 +21,7 @@ steps:
# note : python2 has two wheels cp27m and cp27mu (unicode). cp27mu is built last
# and this is what compatible for testing on azure host.
packaging/python/test_wheels.sh $(which python) $(ls -t wheelhouse/*.whl)
condition: ne(variables['python.version'], '3.5')
displayName: 'Test with System Python'

- task: TwineAuthenticate@1
Expand Down
14 changes: 9 additions & 5 deletions ci/azure-win-installer-upload.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,13 +10,17 @@ steps:
versionSpec: '2.7'
displayName: "Use System Python"

# Note: silently installing neuron doesn't work, when we print out the contents of the installation folder not all files
# are there. We suspect an Azure issue since we've tried a lot of things (to name a few: trying NSIS 3.04 commit that
# was working back then, changing NSIS installers, trying latest NSIS, different process waiting strategies including
# powershell and start /wait and so on) and locally testing the installer works.
- task: BatchScript@1
inputs:
filename: ci/win_test_installer.cmd
filename: ci/win_install_neuron.cmd
displayName: "Run Installer and launch .hoc association test"
condition: succeeded()

- task: BatchScript@1
inputs:
# temporarily disable rxd testing ( ci/win_test_installer.cmd <-> ci/win_test_installer_wo_rxd.cmd)
# see https://github.com/neuronsimulator/nrn/issues/1522
filename: ci/win_test_installer_wo_rxd.cmd
displayName: "Test Installer"
condition: succeeded()

Expand Down
2 changes: 1 addition & 1 deletion ci/win_build_cmake.sh
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ cd $BUILD_SOURCESDIRECTORY/build
-DNRN_RX3D_OPT_LEVEL=2 \
-DPYTHON_EXECUTABLE=/c/Python35/python.exe \
-DNRN_ENABLE_PYTHON_DYNAMIC=ON \
-DNRN_PYTHON_DYNAMIC='c:/Python35/python.exe;c:/Python36/python.exe;c:/Python37/python.exe;c:/Python38/python.exe;c:/Python39/python.exe;c:/Python27/python.exe' \
-DNRN_PYTHON_DYNAMIC='c:/Python35/python.exe;c:/Python36/python.exe;c:/Python37/python.exe;c:/Python38/python.exe;c:/Python39/python.exe;c:/Python27/python.exe;c:/Python310/python.exe' \
-DCMAKE_INSTALL_PREFIX='/c/nrn-install' \
-DMPI_CXX_LIB_NAMES:STRING=msmpi \
-DMPI_C_LIB_NAMES:STRING=msmpi \
Expand Down
3 changes: 2 additions & 1 deletion ci/win_download_deps.cmd
Original file line number Diff line number Diff line change
Expand Up @@ -9,13 +9,14 @@ pwsh -command Invoke-WebRequest -MaximumRetryCount 4 -OutFile python-3.7.exe htt
pwsh -command Invoke-WebRequest -MaximumRetryCount 4 -OutFile python-3.8.exe https://www.python.org/ftp/python/3.8.2/python-3.8.2-amd64.exe || goto :error
pwsh -command Invoke-WebRequest -MaximumRetryCount 4 -OutFile python-3.9.exe https://www.python.org/ftp/python/3.9.0/python-3.9.0-amd64.exe || goto :error
pwsh -command Invoke-WebRequest -MaximumRetryCount 4 -OutFile python-2.7.msi https://www.python.org/ftp/python/2.7.17/python-2.7.17.amd64.msi || goto :error
pwsh -command Invoke-WebRequest -MaximumRetryCount 4 -OutFile python-3.10.exe https://www.python.org/ftp/python/3.10.0/python-3.10.0-amd64.exe || goto :error

:: mpi
pwsh -command Invoke-WebRequest -MaximumRetryCount 4 -OutFile msmpisetup.exe https://download.microsoft.com/download/a/5/2/a5207ca5-1203-491a-8fb8-906fd68ae623/msmpisetup.exe || goto :error
pwsh -command Invoke-WebRequest -MaximumRetryCount 4 -OutFile msmpisdk.msi https://download.microsoft.com/download/a/5/2/a5207ca5-1203-491a-8fb8-906fd68ae623/msmpisdk.msi || goto :error

:: nsis + plugin
curl -LO --retry 4 http://prdownloads.sourceforge.net/nsis/nsis-3.05-setup.exe
curl -LO --retry 4 http://prdownloads.sourceforge.net/nsis/nsis-3.05-setup.exe || goto :error
pwsh -command Invoke-WebRequest -MaximumRetryCount 4 -OutFile EnVar_pugin.zip https://nsis.sourceforge.io/mediawiki/images/7/7f/EnVar_plugin.zip || goto :error

:: if all goes well, go to end
Expand Down
Loading