Skip to content
Snippets Groups Projects
Unverified Commit cf99bdce authored by Brent Huisman's avatar Brent Huisman Committed by GitHub
Browse files

v0.6-rc (#1814)

* bump version to v0.6-rc
* Update `MANIFEST.in` and `scripts/run_python_examples.sh`
* Update Release instructions `docs/contrib/release.rst`
* Fix missing quotes in `python/example/single_cell_nml.py`
* Add testing to sdist creation in `ciwheel.yml`
* Rename `basic.yml` to `test-everything.yml`
   * Remove Python examples step from matrix (mostly because plotting takes much CPU on macos)
   * change to build /w nml
   * add test of pip builds (`pip install` in addition to CMake builds)
      * Python examples are tested here, once is enough.
parent b01aa58b
No related branches found
No related tags found
No related merge requests found
...@@ -2,7 +2,9 @@ name: Arbor on Wheels ...@@ -2,7 +2,9 @@ name: Arbor on Wheels
on: on:
push: push:
branches: [ ciwheel ] branches:
- ciwheel
- v*rc
tags: tags:
- v* - v*
...@@ -72,6 +74,12 @@ jobs: ...@@ -72,6 +74,12 @@ jobs:
submodules: recursive submodules: recursive
- name: Make sdist - name: Make sdist
run: python setup.py sdist run: python setup.py sdist
- name: Install sdist
run: python -m pip install dist/arbor*.tar.gz
- name: Run Python tests
run: python3 -m unittest discover -v -s python
- name: Run Python examples
run: scripts/run_python_examples.sh
- uses: actions/upload-artifact@v2 - uses: actions/upload-artifact@v2
with: with:
name: dist name: dist
......
name: Arbor name: Test Everything
on: on:
push: push:
...@@ -7,8 +7,8 @@ on: ...@@ -7,8 +7,8 @@ on:
branches: [ master ] branches: [ master ]
jobs: jobs:
build: testallconfigs:
name: "Default" name: "Tests across OSes, versions, compilers, and build configs."
runs-on: ${{ matrix.config.os }} runs-on: ${{ matrix.config.os }}
strategy: strategy:
matrix: matrix:
...@@ -92,11 +92,15 @@ jobs: ...@@ -92,11 +92,15 @@ jobs:
# See https://github.com/open-mpi/ompi/issues/6518 # See https://github.com/open-mpi/ompi/issues/6518
OMPI_MCA_btl: "self,tcp" OMPI_MCA_btl: "self,tcp"
steps: steps:
- name: Get clang/gcc 8 - name: "Linux: get clang/gcc 8, libxml2"
if: ${{ startsWith(matrix.config.os, 'ubuntu') }} if: ${{ startsWith(matrix.config.os, 'ubuntu') }}
run: | run: |
sudo apt-get update sudo apt-get update
sudo apt-get install -y "clang-8" "lldb-8" "lld-8" "clang-format-8" g++-8 sudo apt-get install -y "clang-8" "lldb-8" "lld-8" "clang-format-8" g++-8 libxml2-dev
- name: "MacOS: get libxml2"
if: ${{ startsWith(matrix.config.os, 'macos') }}
run: |
brew install libxml2
- name: Set up cmake - name: Set up cmake
uses: jwlawson/actions-setup-cmake@v1.12 uses: jwlawson/actions-setup-cmake@v1.12
with: with:
...@@ -149,7 +153,7 @@ jobs: ...@@ -149,7 +153,7 @@ jobs:
run: | run: |
mkdir build mkdir build
cd build cd build
cmake .. -DCMAKE_CXX_COMPILER=$CXX -DCMAKE_C_COMPILER=$CC -DARB_WITH_PYTHON=ON -DARB_VECTORIZE=${{ matrix.config.simd }} -DPython3_EXECUTABLE=`which python` -DARB_WITH_MPI=${{ matrix.config.mpi }} -DARB_USE_BUNDLED_LIBS=ON cmake .. -DCMAKE_CXX_COMPILER=$CXX -DCMAKE_C_COMPILER=$CC -DARB_WITH_PYTHON=ON -DARB_VECTORIZE=${{ matrix.config.simd }} -DPython3_EXECUTABLE=`which python` -DARB_WITH_MPI=${{ matrix.config.mpi }} -DARB_USE_BUNDLED_LIBS=ON -DARB_WITH_NEUROML=ON
make -j4 tests examples pyarb html make -j4 tests examples pyarb html
cd - cd -
- name: Install arbor - name: Install arbor
...@@ -176,9 +180,28 @@ jobs: ...@@ -176,9 +180,28 @@ jobs:
- if: ${{ matrix.config.mpi == 'ON' }} - if: ${{ matrix.config.mpi == 'ON' }}
name: Run python+MPI tests name: Run python+MPI tests
run: mpirun -n 4 -oversubscribe python3 -m unittest discover -v -s python run: mpirun -n 4 -oversubscribe python3 -m unittest discover -v -s python
- name: Run Python examples # - name: Run Python examples (plotting leads to time outs on macos, the step under testpip is enough)
run: scripts/run_python_examples.sh # run: scripts/run_python_examples.sh
- name: Build and test a catalogue - name: Build and test a catalogue
run: | run: |
arbor-build-catalogue -v default mechanisms/default arbor-build-catalogue -v default mechanisms/default
./scripts/test-catalogue.py ./default-catalogue.so ./scripts/test-catalogue.py ./default-catalogue.so
testpip:
name: "Pip build test + Python examples test"
runs-on: ubuntu-latest
steps:
- name: Install Python packages
run: pip install numpy setuptools scikit-build ninja cmake
- name: Clone w/ submodules
uses: actions/checkout@v2
with:
submodules: recursive
- name: Build and install Arbor using pip + build flags
run: python3 -m pip install --verbose --install-option="-DARB_VECTORIZE=ON" --install-option="-DARB_ARCH=native" .
- name: Check that build flags match
run: |
python3 -c "import arbor; print(arbor.config())" | grep -q "'arch': 'native'"
- name: Run Python tests
run: python3 -m unittest discover -v -s python
- name: Run Python examples
run: scripts/run_python_examples.sh
...@@ -3,15 +3,20 @@ include CMakeLists.txt ...@@ -3,15 +3,20 @@ include CMakeLists.txt
graft arbor graft arbor
graft arborenv graft arborenv
graft arborio
# graft ci
graft cmake graft cmake
graft doc graft doc
graft example graft example
graft ext graft ext
graft lmorpho
graft mechanisms graft mechanisms
graft modcc graft modcc
graft python graft python
graft scripts
# graft spack
graft sup graft sup
graft test graft test
graft arborio # graft validation
prune ext/google-benchmark prune ext/google-benchmark
0.5.3-dev 0.6-rc
...@@ -33,54 +33,36 @@ Pre-release ...@@ -33,54 +33,36 @@ Pre-release
Update tags/versions and test Update tags/versions and test
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1. Create new temp-branch ending in ``-rc``. E.g. ``v0.5.1-rc`` 0. Check README.md, ATTRIBUTIONS.md, CONTRIBUTING.md.
1. Create new temp-branch ending in ``-rc``. E.g. ``v0.6-rc``
2. Bump the ``VERSION`` file: 2. Bump the ``VERSION`` file:
https://github.com/arbor-sim/arbor/blob/master/VERSION https://github.com/arbor-sim/arbor/blob/master/VERSION
3. Update Python/pip/PyPi metadata and scripts 3. Run all tests.
- ``ciwheel.yml`` triggers when you push a branch called ``v*rc``, ON YOUR OWN REPO (so check ``github.com/$yourname/arbor/actions``). Make sure the tests pass.
- Update MANIFEST (required for PyPi step later): - This should catch many problems. For a manual check:
https://github.com/arbor-sim/arbor/blob/master/MANIFEST.in - Verify MANIFEST.in (required for PyPI sdist)
- also checkout ``setup.cfg`` and ``setup.py`` - Check Python/pip/PyPi metadata and scripts, e.g. ``setup.py``
- Double check that all examples/tutorials/etc are covered by CI
4. Double check all examples/tutorials/etc not covered by CI
Test the RC
Manual test (deprecated) ~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~
4. Collect artifact from the above GA run.
5. python setup.py sdist In case you want to manually want to trigger ``ciwheel.yml`` GA, overwrite the ``ciwheel`` branch with the commit of your choosing and force push to Github.
6. python -m venv env 5. ``twine upload -r testpypi dist/*``
7. source env/bin/activate 6. Ask users to test the above, e.g.:
8. move tarball here and extract
9. pip install –upgrade pip
10. pip install numpy
11. pip install ./arbor-0.5.1 –verbose
12. python -c ’import arbor; print(arbor.__config__)’
13. twine upload -r testpypi dist/\* (have some testrepo)
14. create *another* venv: python -m venv env && source env/bin/activate
15. pip install numpy
16. pip install -i https://test.pypi.org/simple/ arbor==0.5.1 –verbose
17. python -c ’import arbor; print(arbor.__config__)’
Ciwheel/automated test (replaces manual test)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
5. Create/overwrite ``ciwheel`` branch with the above branch, and push
to Github.
6. Collect artifact from GA run.
7. twine upload -r testpypi dist/\*
8. Ask users to test the above, e.g.:
.. code-block:: bash .. code-block:: bash
python -m venv env && source env/bin/activate python -m venv env && source env/bin/activate
pip install numpy pip install -i https://test.pypi.org/simple/ arbor==0.5.1 pip install numpy
pip install -i https://test.pypi.org/simple/ arbor==0.6-rc
python -c ’import arbor; print(arbor.__config__)’ python -c ’import arbor; print(arbor.__config__)’
Release Release
------- -------
0. Make sure ciwheel passes tests, produced working wheels. Make sure 0. Make sure ``ciwheel.yml`` passes tests, produced working wheels, and nobody reported problems testing the RC.
tests on master also passed, and master == ciwheel
1. Tag and release: https://github.com/arbor-sim/arbor/releases 1. Tag and release: https://github.com/arbor-sim/arbor/releases
- on cmdline: git tag -a TAGNAME - on cmdline: git tag -a TAGNAME
...@@ -104,7 +86,7 @@ Release ...@@ -104,7 +86,7 @@ Release
6. Upload to pypi 6. Upload to pypi
- twine upload -r arborpypi dist/\* - twine upload -r arborpypi dist\*
7. Verify 7. Verify
...@@ -120,5 +102,20 @@ Post release ...@@ -120,5 +102,20 @@ Post release
- first, update ``spack/package.py``. The checksum of the targz is the sha256sum. - first, update ``spack/package.py``. The checksum of the targz is the sha256sum.
- Then, use the file to `make PR here <https://github.com/spack/spack/blob/develop/var/spack/repos/builtin/packages/>`_ - Then, use the file to `make PR here <https://github.com/spack/spack/blob/develop/var/spack/repos/builtin/packages/>`_
2. In the same PR with the update to `spack/package.py`, might as well bump `VERSION` file.
3. Announce on our website
4. Add release for citation on Zenodo, add new ID to docs
5. Add tagged version of docs on ReadTheDocs (should happen automatically)
6. HBP internal admin
- [Plus](https://plus.humanbrainproject.eu/components/2691/)
- [TC Wiki](https://wiki.ebrains.eu/bin/view/Collabs/technical-coordination/EBRAINS%20components/Arbor/)
- [KG](https://kg.ebrains.eu/search/instances/Software/80d205a9-ffb9-4afe-90b8-2f12819950ec) - [Update howto](https://github.com/bweyers/HBPVisCatalogue/wiki/How-to-start-software-meta-data-curation%3F#update-curated-software).
- Supported file formats (ie [ContentTypes](https://humanbrainproject.github.io/openMINDS/v3/core/v4/data/contentType.html)), [details](https://github.com/HumanBrainProject/openMINDS_core/tree/v3/instances/data/contentTypes)
- Send an update to the folk in charge of HBP Twitter if we want to shout about it
7. FZJ admin
- https://juser.fz-juelich.de/submit
.. _GH tags: https://github.com/arbor-sim/arbor/tags .. _GH tags: https://github.com/arbor-sim/arbor/tags
.. _AUTOMATED: https://github.com/arbor-sim/arbor/blob/master/.github/workflows/ebrains.yml .. _AUTOMATED: https://github.com/arbor-sim/arbor/blob/master/.github/workflows/ebrains.yml
# pip requirements file # pip requirements file
LFPykit>=0.3 LFPykit>=0.3
pandas
seaborn
...@@ -74,7 +74,7 @@ decor.discretization(policy) ...@@ -74,7 +74,7 @@ decor.discretization(policy)
# Combine morphology with region and locset definitions to make a cable cell. # Combine morphology with region and locset definitions to make a cable cell.
cell = arbor.cable_cell(morpho, labels, decor) cell = arbor.cable_cell(morpho, labels, decor)
print(cell.locations('axon_end')) print(cell.locations('"axon_end"'))
# Make single cell model. # Make single cell model.
m = arbor.single_cell_model(cell) m = arbor.single_cell_model(cell)
......
...@@ -12,14 +12,19 @@ PREFIX=${1:-} ...@@ -12,14 +12,19 @@ PREFIX=${1:-}
$PREFIX python -m pip install -r python/example/example_requirements.txt $PREFIX python -m pip install -r python/example/example_requirements.txt
$PREFIX python python/example/brunel.py -n 400 -m 100 -e 20 -p 0.1 -w 1.2 -d 1 -g 0.5 -l 5 -t 100 -s 1 -G 50 -S 123
# $PREFIX python python/dynamic-catalogue.py # arbor-build-catalog is a test already
$PREFIX python python/example/gap_junctions.py
# $PREFIX python python/example/network_ring_mpi_plot.py # requires MPI
# $PREFIX python python/example/network_ring_mpi.py # requires MPI
$PREFIX python python/example/network_ring.py $PREFIX python python/example/network_ring.py
$PREFIX python python/example/single_cell_cable.py
$PREFIX python python/example/single_cell_detailed_recipe.py python/example/single_cell_detailed.swc
$PREFIX python python/example/single_cell_detailed.py python/example/single_cell_detailed.swc
$PREFIX python python/example/single_cell_extracellular_potentials.py python/example/single_cell_detailed.swc
$PREFIX python python/example/single_cell_model.py $PREFIX python python/example/single_cell_model.py
$PREFIX python python/example/single_cell_nml.py python/example/morph.nml
$PREFIX python python/example/single_cell_recipe.py $PREFIX python python/example/single_cell_recipe.py
$PREFIX python python/example/single_cell_stdp.py $PREFIX python python/example/single_cell_stdp.py
$PREFIX python python/example/brunel.py -n 400 -m 100 -e 20 -p 0.1 -w 1.2 -d 1 -g 0.5 -l 5 -t 100 -s 1 -G 50 -S 123
$PREFIX python python/example/single_cell_swc.py python/example/single_cell_detailed.swc $PREFIX python python/example/single_cell_swc.py python/example/single_cell_detailed.swc
$PREFIX python python/example/single_cell_detailed.py python/example/single_cell_detailed.swc
$PREFIX python python/example/single_cell_detailed_recipe.py python/example/single_cell_detailed.swc
$PREFIX python python/example/single_cell_extracellular_potentials.py python/example/single_cell_detailed.swc
$PREFIX python python/example/single_cell_cable.py
$PREFIX python python/example/two_cell_gap_junctions.py $PREFIX python python/example/two_cell_gap_junctions.py
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment