Skip to content

Commit f123110

Browse files
committed
Merge branch 'fix/kschan-dparam-oob-3843' into pool-cleanup
2 parents 83ef360 + aa65940 commit f123110

56 files changed

Lines changed: 3158 additions & 91 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/workflows/neuron-ci.yml

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -217,16 +217,17 @@ jobs:
217217
# A automake >= 1.16.5 is needed for python 3.12 because it generates a python script
218218
# called py-compile and the original one is not supporting this version of python
219219
# Once ubuntu got a newer version of automake we can remove this part.
220+
# Tarball from ci-deps-v1 via ci/deps (see MANIFEST id automake-1.16.5-src).
220221
if: matrix.config.music == 'ON' && startsWith(matrix.os, 'ubuntu')
221222
run: |
222-
curl -L -o automake.tar.xz https://ftpmirror.gnu.org/gnu/automake/automake-1.16.5.tar.xz
223-
tar -xf automake.tar.xz
224-
cd automake-1.16.5/
223+
export NRN_CI_DEPS_SOURCE=release
224+
bash "${{ github.workspace }}/ci/deps/fetch.sh" automake-1.16.5-src "${{ runner.temp }}"
225+
tar -xf "${{ runner.temp }}/automake-1.16.5.tar.xz" -C "${{ runner.temp }}"
226+
cd "${{ runner.temp }}/automake-1.16.5/"
225227
./configure --prefix=/usr/
226228
make -j
227229
sudo make -j install
228230
automake --version
229-
working-directory: ${{runner.temp}}
230231
231232
- name: Setup MUSIC@${{ env.MUSIC_VERSION }}
232233
if: matrix.config.music == 'ON'

.github/workflows/release.yml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,9 @@ jobs:
8585
needs:
8686
- build-wheels
8787
outputs:
88-
artifacts-url: ${{ steps.merge-artifacts.outputs.artifacts-url }}
88+
# upload-artifact/merge@v4 exports artifact-url (singular), not artifacts-url.
89+
# Job output key stays artifacts-url for existing consumers (modeldb-ci, build-ci).
90+
artifacts-url: ${{ steps.merge-artifacts.outputs.artifact-url }}
8991
steps:
9092
- name: Merge Artifacts
9193
id: merge-artifacts

.github/workflows/wheels-template.yml

Lines changed: 5 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -114,12 +114,12 @@ jobs:
114114
sudo bash packaging/python/build_static_readline_osx.bash
115115
116116
- name: Change name of package for release
117-
if: inputs.build_type == 'release'
117+
if: inputs.build_type == 'nightly'
118118
run: |
119119
python3 -m venv venv
120120
source venv/bin/activate
121121
python3 -m pip install tomli tomli-w
122-
python3 packaging/python/change_name.py ./pyproject.toml neuron
122+
python3 packaging/python/change_name.py ./pyproject.toml neuron-nightly
123123
124124
- name: Optimize RX3D Python module
125125
if: inputs.optimize_rxd == true
@@ -151,18 +151,9 @@ jobs:
151151
run: |
152152
sudo apt update
153153
sudo apt install -y mpich openmpi-bin libopenmpi-dev libmpich-dev ninja-build
154-
155-
- name: "Apply workaround for MPICH on Ubuntu 24.04"
156-
if: inputs.platform == 'ubuntu-24.04'
157-
run: |
158-
# mpich is fundamentally broken on Ubuntu 24.04 LTS, for more details see:
159-
# https://bugs.launchpad.net/ubuntu/+source/mpich/+bug/2072338
160-
# This is fixed in version 4.2.0-5.1, but this version has not been
161-
# backported, so as a workaround, we install that version manually
162-
sudo apt install -y mpich
163-
wget 'https://launchpad.net/ubuntu/+source/mpich/4.2.0-5.1/+build/28285882/+files/mpich_4.2.0-5.1_amd64.deb'
164-
wget 'https://launchpad.net/ubuntu/+source/mpich/4.2.0-5.1/+build/28285882/+files/libmpich12_4.2.0-5.1_amd64.deb'
165-
sudo dpkg --install mpich_4.2.0-5.1_amd64.deb libmpich12_4.2.0-5.1_amd64.deb
154+
# Ubuntu 24.04: pin working mpich from ci/deps (no Launchpad download).
155+
# See ci/deps/README.md and LP#2072338.
156+
bash ci/deps/install_mpich_noble.sh
166157
167158
- name: Set env vars for testing (Linux)
168159
if: startsWith(inputs.platform, 'ubuntu')

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,8 @@ virtualenv
2222
*.lo
2323
docs/_build
2424
docs/_generated
25+
# CI managed-download scratch (publish.sh); blobs live on GitHub Releases
26+
ci/deps/assets/
2527
.vscode
2628
.coverage*
2729
coverage*.xml

CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -216,7 +216,7 @@ set(NRN_RX3D_OPT_LEVEL
216216
"${NRN_RX3D_OPT_LEVEL_DEFAULT}"
217217
CACHE STRING "Optimization level for Cython generated files (non-zero may compile slowly)")
218218

219-
option(NRN_ENABLE_COVERAGE "EnableCode Coverage (make cover_begin, make cover_html)" OFF)
219+
option(NRN_ENABLE_COVERAGE "EnableCode Coverage (cover-begin, cover-html, cover-diff)" OFF)
220220
set(NRN_COVERAGE_FILES
221221
""
222222
CACHE STRING "semicolon (;) separated list of files to collect code coverage")

azure-pipelines.yml

Lines changed: 3 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -81,21 +81,9 @@ stages:
8181
- script: |
8282
sudo apt update
8383
sudo apt install -y mpich openmpi-bin libopenmpi-dev libmpich-dev
84-
# mpich is fundamentally broken on Ubuntu 24.04 LTS, for more details see:
85-
# https://bugs.launchpad.net/ubuntu/+source/mpich/+bug/2072338
86-
# This is fixed in version 4.2.0-5.1, but this version has not been
87-
# backported, so as a workaround, we install that version manually
88-
source /etc/os-release
89-
if [[ "$ID" == "ubuntu" && "$VERSION_ID" == "24.04" ]]; then
90-
# mpich is fundamentally broken on Ubuntu 24.04 LTS, for more details see:
91-
# https://bugs.launchpad.net/ubuntu/+source/mpich/+bug/2072338
92-
# This is fixed in version 4.2.0-5.1, but this version has not been
93-
# backported, so as a workaround, we install that version manually
94-
sudo apt install -y mpich
95-
wget 'https://launchpad.net/ubuntu/+source/mpich/4.2.0-5.1/+build/28285882/+files/mpich_4.2.0-5.1_amd64.deb'
96-
wget 'https://launchpad.net/ubuntu/+source/mpich/4.2.0-5.1/+build/28285882/+files/libmpich12_4.2.0-5.1_amd64.deb'
97-
sudo dpkg --install mpich_4.2.0-5.1_amd64.deb libmpich12_4.2.0-5.1_amd64.deb
98-
fi
84+
# Ubuntu 24.04: pin working mpich from ci/deps (no Launchpad download).
85+
# See ci/deps/README.md and LP#2072338.
86+
ci/deps/install_mpich_noble.sh
9987
displayName: 'Install Test System Dependencies'
10088
10189
- template: ci/azure-wheel-test-upload.yml

bin/CMakeLists.txt

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,8 @@ include(CMakeListsNrnMech)
3838
# =============================================================================
3939
configure_file("nrngui.in" "nrngui" @ONLY)
4040
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/sortspike ${CMAKE_CURRENT_BINARY_DIR}/sortspike COPYONLY)
41+
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/rdcellstate ${CMAKE_CURRENT_BINARY_DIR}/rdcellstate
42+
COPYONLY)
4143
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/nrnivmodl_makefile_cmake.in
4244
${PROJECT_BINARY_DIR}/bin/nrnmech_makefile @ONLY)
4345
string(JOIN " " NRN_PYTHON_VERSIONS_STRING ${NRN_PYTHON_VERSIONS})
@@ -98,6 +100,7 @@ if(NRN_ENABLE_CORENEURON)
98100
endif()
99101

100102
install(FILES ${PROJECT_BINARY_DIR}/bin/nrnmech_makefile DESTINATION ${NRN_INSTALL_DATA_PREFIX}bin)
101-
install(PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/sortspike ${CMAKE_CURRENT_SOURCE_DIR}/mkthreadsafe
102-
${PROJECT_BINARY_DIR}/bin/nrnpyenv.sh ${CMAKE_CURRENT_SOURCE_DIR}/set_nrnpyenv.sh
103-
DESTINATION ${NRN_INSTALL_DATA_PREFIX}bin)
103+
install(
104+
PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/sortspike ${CMAKE_CURRENT_BINARY_DIR}/rdcellstate
105+
${CMAKE_CURRENT_SOURCE_DIR}/mkthreadsafe ${PROJECT_BINARY_DIR}/bin/nrnpyenv.sh
106+
${CMAKE_CURRENT_SOURCE_DIR}/set_nrnpyenv.sh DESTINATION ${NRN_INSTALL_DATA_PREFIX}bin)

bin/rdcellstate

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
#!/usr/bin/env python3
2+
"""Thin CLI wrapper for neuron.debug.rdcellstate."""
3+
from neuron.debug.rdcellstate import main
4+
5+
raise SystemExit(main())

ci/coverage_files_from_diff.sh

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
#!/usr/bin/env bash
2+
# Emit a semicolon-separated source file list for -DNRN_COVERAGE_FILES=...
3+
# Usage: coverage_files_from_diff.sh [base-ref]
4+
# Default base-ref is master (three-dot diff: base...HEAD).
5+
# Exits 1 with a stderr message when no compiled sources (.cpp/.c) changed.
6+
set -euo pipefail
7+
8+
base="${1:-master}"
9+
mapfile -t files < <(git diff --name-only "${base}...HEAD" | grep -E '\.(cpp|c)$' || true)
10+
if ((${#files[@]} == 0)); then
11+
echo "No compiled sources (.cpp/.c) changed vs ${base}; omit -DNRN_COVERAGE_FILES" >&2
12+
exit 1
13+
fi
14+
(IFS=';'; echo "${files[*]}")

ci/deps/MANIFEST.yml

Lines changed: 198 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,198 @@
1+
# NEURON CI dependency archive (catalog)
2+
#
3+
# Purpose: pin external CI downloads on a GitHub Release, prefer those over flaky
4+
# third-party hosts, and make upgrades explicit (update this file; re-publish;
5+
# run check-upstream.sh). Binary blobs are NOT committed under ci/deps/assets/
6+
# (that directory is gitignored scratch for publish.sh).
7+
#
8+
# Fetch order used by fetch.sh (unless NRN_CI_DEPS_SOURCE is set):
9+
# 1. local — ci/deps/assets/<file> (optional local scratch; not in git)
10+
# 2. release — ${NRN_CI_DEPS_BASE_URL}/<file> or default_release_base_url
11+
# 3. upstream — upstream_url (last resort)
12+
#
13+
# managed:
14+
# true — pin hosted on our GitHub Release (ci-deps-vN); CI should use fetch.sh
15+
# false — catalog row only; not yet switched off upstream
16+
#
17+
# See ci/deps/README.md
18+
19+
version: 1
20+
21+
# GitHub Release assets for managed pins (override with NRN_CI_DEPS_BASE_URL).
22+
# Host repo is neuronsimulator/nrn-ci-deps (not product releases on nrn).
23+
# Navigate: https://github.com/neuronsimulator/nrn-ci-deps/releases → tag ci-deps-v1
24+
default_release_base_url: "https://github.com/neuronsimulator/nrn-ci-deps/releases/download/ci-deps-v1"
25+
26+
assets:
27+
# --- P0: wheel-test MPICH workaround (Ubuntu 24.04 / noble) ---
28+
- id: mpich-noble-4.2.0-5.1
29+
file: mpich_4.2.0-5.1_amd64.deb
30+
sha256: c696dff0975f1857faaae0e450ce6262d13693a7894e523741e6b7581beee0ad
31+
upstream_url: https://launchpad.net/ubuntu/+source/mpich/4.2.0-5.1/+build/28285882/+files/mpich_4.2.0-5.1_amd64.deb
32+
managed: true
33+
consumers:
34+
- azure-pipelines.yml
35+
- .github/workflows/wheels-template.yml
36+
- ci/deps/install_mpich_noble.sh
37+
notes: >
38+
Ubuntu 24.04 LP#2072338 workaround. Pair with libmpich12-noble-4.2.0-5.1.
39+
Only needed while distro mpich remains broken for our tests.
40+
41+
- id: libmpich12-noble-4.2.0-5.1
42+
file: libmpich12_4.2.0-5.1_amd64.deb
43+
sha256: 13a233b7dd6d8a51eccf58d981cdb1ae110b673e4dfdeb607fe439918340238f
44+
upstream_url: https://launchpad.net/ubuntu/+source/mpich/4.2.0-5.1/+build/28285882/+files/libmpich12_4.2.0-5.1_amd64.deb
45+
managed: true
46+
consumers:
47+
- azure-pipelines.yml
48+
- .github/workflows/wheels-template.yml
49+
- ci/deps/install_mpich_noble.sh
50+
notes: Runtime library package for mpich-noble-4.2.0-5.1.
51+
52+
- id: mpich-noble-4.2.0-5.1-arm64
53+
file: mpich_4.2.0-5.1_arm64.deb
54+
sha256: c790342026ca5786bdad889af5b2c6f4c249bb07968aaf5435feb6b2771df452
55+
upstream_url: https://launchpad.net/ubuntu/+source/mpich/4.2.0-5.1/+build/28285883/+files/mpich_4.2.0-5.1_arm64.deb
56+
managed: true
57+
consumers:
58+
- .github/workflows/wheels-template.yml
59+
- ci/deps/install_mpich_noble.sh
60+
notes: >
61+
arm64 counterpart of mpich-noble-4.2.0-5.1 (Launchpad build 28285883).
62+
Pair with libmpich12-noble-4.2.0-5.1-arm64. Used by ubuntu-24.04-arm wheel tests.
63+
64+
- id: libmpich12-noble-4.2.0-5.1-arm64
65+
file: libmpich12_4.2.0-5.1_arm64.deb
66+
sha256: 4fdbdcdcf23a36f3f7fcd2f2fe2fdaff24629a107fa9f0c6904dd1c3aa662ae1
67+
upstream_url: https://launchpad.net/ubuntu/+source/mpich/4.2.0-5.1/+build/28285883/+files/libmpich12_4.2.0-5.1_arm64.deb
68+
managed: true
69+
consumers:
70+
- .github/workflows/wheels-template.yml
71+
- ci/deps/install_mpich_noble.sh
72+
notes: Runtime library package for mpich-noble-4.2.0-5.1-arm64.
73+
74+
# --- P0/P1: static readline/ncurses sources (GNU mirrors flake) ---
75+
- id: ncurses-6.4-src
76+
file: ncurses-6.4.tar.gz
77+
sha256: 6931283d9ac87c5073f30b6290c4c75f21632bb4fc3603ac8100812bed248159
78+
upstream_url: https://ftp.gnu.org/gnu/ncurses/ncurses-6.4.tar.gz
79+
managed: true
80+
consumers:
81+
- packaging/python/build_static_readline_osx.bash
82+
- packaging/python/Dockerfile
83+
notes: Hosted on ci-deps-v1; consumers must not use ftpmirror.gnu.org.
84+
85+
- id: readline-7.0-src
86+
file: readline-7.0.tar.gz
87+
sha256: 750d437185286f40a369e1e4f4764eda932b9459b5ec9a731628393dd3d32334
88+
upstream_url: https://ftp.gnu.org/gnu/readline/readline-7.0.tar.gz
89+
managed: true
90+
consumers:
91+
- packaging/python/Dockerfile
92+
notes: >
93+
Linux manylinux Dockerfile uses 7.0. Azure Mac wheels use prebuilt secure
94+
file readline7.0-ncurses6.4.tar.gz (not in this manifest yet).
95+
96+
- id: readline-8.3-src
97+
file: readline-8.3.tar.gz
98+
sha256: fe5383204467828cd495ee8d1d3c037a7eba1389c22bc6a041f627976f9061cc
99+
upstream_url: https://ftp.gnu.org/gnu/readline/readline-8.3.tar.gz
100+
managed: true
101+
consumers:
102+
- packaging/python/build_static_readline_osx.bash
103+
notes: >
104+
GH Actions Mac wheels rebuild from 8.3 every job — version skew vs Azure 7.0
105+
prebuilt. Unify in a later PR.
106+
107+
# --- P1: Windows installer toolchain ---
108+
- id: nsis-3.05
109+
file: nsis-3.05-setup.exe
110+
sha256: "" # fill when vendoring; SourceForge redirects make automated HEAD unreliable
111+
upstream_url: http://prdownloads.sourceforge.net/nsis/nsis-3.05-setup.exe
112+
managed: false
113+
consumers:
114+
- ci/win_download_deps.cmd
115+
notes: SourceForge historically flaky.
116+
117+
- id: envar-plugin-0.3.1
118+
file: EnVar-Plugin.zip
119+
sha256: e5b337fcad68252d18282f7259a0306053626e41b9480fa09df3fab012b85e00
120+
upstream_url: https://github.com/GsNSIS/EnVar/releases/download/v0.3.1/EnVar-Plugin.zip
121+
managed: false
122+
consumers:
123+
- ci/win_download_deps.cmd
124+
125+
- id: msmpi-runtime
126+
file: msmpisetup.exe
127+
sha256: ""
128+
upstream_url: https://download.microsoft.com/download/a/5/2/a5207ca5-1203-491a-8fb8-906fd68ae623/msmpisetup.exe
129+
managed: false
130+
consumers:
131+
- ci/win_download_deps.cmd
132+
notes: Opaque Microsoft CDN path; pin by URL + hash when vendoring.
133+
134+
- id: msmpi-sdk
135+
file: msmpisdk.msi
136+
sha256: ""
137+
upstream_url: https://download.microsoft.com/download/a/5/2/a5207ca5-1203-491a-8fb8-906fd68ae623/msmpisdk.msi
138+
managed: false
139+
consumers:
140+
- ci/win_download_deps.cmd
141+
142+
# --- P1/P2: occasional CI tools ---
143+
- id: ccache-4.11.3-linux-x86_64
144+
file: ccache-4.11.3-linux-x86_64.tar.xz
145+
sha256: 7766991b91b3a5a177ab33fa043fe09e72c68586d5a86d20a563a05b74f119c0
146+
upstream_url: https://github.com/ccache/ccache/releases/download/v4.11.3/ccache-4.11.3-linux-x86_64.tar.xz
147+
managed: false
148+
consumers:
149+
- .github/workflows/coverage.yml
150+
notes: Already on GitHub releases; low flake priority.
151+
152+
- id: automake-1.16.5-src
153+
file: automake-1.16.5.tar.xz
154+
sha256: f01d58cd6d9d77fbdca9eb4bbd5ead1988228fdb73d6f7a201f5f8d6b118b469
155+
upstream_url: https://ftp.gnu.org/gnu/automake/automake-1.16.5.tar.xz
156+
managed: true
157+
consumers:
158+
- .github/workflows/neuron-ci.yml
159+
notes: Ubuntu MUSIC job path (neuron-ci); needs automake >= 1.16.5 for Python 3.12.
160+
161+
# --- Azure-only secure files (document; not managed by fetch.sh yet) ---
162+
- id: azure-secure-readline7.0-ncurses6.4
163+
file: readline7.0-ncurses6.4.tar.gz
164+
sha256: ""
165+
upstream_url: ""
166+
managed: false
167+
consumers:
168+
- azure-pipelines.yml
169+
notes: Azure Pipelines secure file (prebuilt Mac static libs). Prefer migrating to this archive.
170+
171+
- id: azure-secure-mpt-headers-2.21
172+
file: mpt_headears.2.21.tar.gz
173+
sha256: ""
174+
upstream_url: ""
175+
managed: false
176+
consumers:
177+
- azure-pipelines.yml
178+
notes: Azure secure file for SGI MPT headers (dynamic MPI in Linux wheels). Typo "headears" is the uploaded name.
179+
180+
# --- Tier B (large; usually reliable; managed: false for now) ---
181+
- id: python-3.10.0-amd64-exe
182+
file: python-3.10.0-amd64.exe
183+
sha256: ""
184+
upstream_url: https://www.python.org/ftp/python/3.10.0/python-3.10.0-amd64.exe
185+
managed: false
186+
consumers:
187+
- ci/win_download_deps.cmd
188+
notes: ~28 MB; self-host only if python.org flakes.
189+
190+
- id: python-3.14.0-macos11-pkg
191+
file: python-3.14.0-macos11.pkg
192+
sha256: ""
193+
upstream_url: https://www.python.org/ftp/python/3.14.0/python-3.14.0-macos11.pkg
194+
managed: false
195+
consumers:
196+
- azure-pipelines.yml
197+
- .github/workflows/wheels-template.yml
198+
notes: Representative Mac python.org installer; matrix has one pkg per Python version.

0 commit comments

Comments
 (0)