diff --git a/.gitignore b/.gitignore index df2c4bf..91a7093 100644 --- a/.gitignore +++ b/.gitignore @@ -5,3 +5,4 @@ /arbor-0.5.2.tar.gz /arbor-0.6.tar.gz /arbor-0.7.tar.gz +/arbor-0.9.0.tar.gz diff --git a/.packit.yaml b/.packit.yaml new file mode 100644 index 0000000..d8b371c --- /dev/null +++ b/.packit.yaml @@ -0,0 +1,13 @@ +upstream_project_url: https://github.com/arbor-sim/arbor +upstream_tag_template: v{version} + +jobs: + - job: pull_from_upstream + trigger: release + dist_git_branches: + - fedora-rawhide + - job: koji_build + + trigger: commit + dist_git_branches: + - fedora-all diff --git a/2080.patch b/2080.patch deleted file mode 100644 index acb984d..0000000 --- a/2080.patch +++ /dev/null @@ -1,33 +0,0 @@ -From 884c568f96bc10079f28f4b2b7c8fc120c020053 Mon Sep 17 00:00:00 2001 -From: "Benjamin A. Beasley" -Date: Thu, 19 Jan 2023 10:10:21 -0500 -Subject: [PATCH] Add some missing #include directives - -Fixes failure to compile with GCC 13. ---- - arbor/include/arbor/morph/primitives.hpp | 1 + - arbor/threading/threading.cpp | 1 + - 2 files changed, 2 insertions(+) - -diff --git a/arbor/include/arbor/morph/primitives.hpp b/arbor/include/arbor/morph/primitives.hpp -index 4be04670b..9d75060df 100644 ---- a/arbor/include/arbor/morph/primitives.hpp -+++ b/arbor/include/arbor/morph/primitives.hpp -@@ -2,6 +2,7 @@ - - #include - #include -+#include - #include - #include - -diff --git a/arbor/threading/threading.cpp b/arbor/threading/threading.cpp -index 552fda90a..4c786b867 100644 ---- a/arbor/threading/threading.cpp -+++ b/arbor/threading/threading.cpp -@@ -1,4 +1,5 @@ - #include -+#include - - #include - #include diff --git a/arbor.spec b/arbor.spec index d91e333..36324fc 100644 --- a/arbor.spec +++ b/arbor.spec @@ -14,15 +14,21 @@ Documentation is available at https://arbor.readthedocs.io/en/latest/ } # Best to start with the serial version when debugging build failures -%bcond_without mpich -%bcond_without openmpi +%bcond mpich 1 +%bcond openmpi 1 -%bcond_without tests +%bcond tests 1 + +# Python unit tests in MPI environment fail in a non-deterministic way. +# Using pytest _as is_ doesn't work either and `-m unittest` does not +# allow filtering tests as `pytest -k` does. +# For now we don't run the Python MPI tests. +%bcond mpi_py_unittest 0 %global forgeurl https://github.com/arbor-sim/arbor Name: arbor -Version: 0.7 +Version: 0.9.0 Release: %autorelease Summary: Multi-compartment neural network simulation library @@ -36,13 +42,8 @@ Source2: https://raw.githubusercontent.com/arbor-sim/arbor/master/scripts License: BSD-3-Clause Patch: 0001-Quote-various-cmake-var-values.patch -# Add some missing #include directives -# Fixes failure to compile with GCC 13. -# https://github.com/arbor-sim/arbor/pull/2080 -Patch: %{forgeurl}/pull/2080.patch -# Replace use of LooseVersion from distutils.version (removed in Python3.12) -# https://github.com/arbor-sim/arbor/pull/2157 -Patch: looseversion.patch +# Tests are failing to compile due to some missing includes +Patch: fix-missing-includes.patch # Random123 does not support: # mips64r2 mips32r2 s390 @@ -90,11 +91,13 @@ Provides: arbor-static = %{version}-%{release} %package doc # Does not require the main package, since it may be installed by people using # the MPI builds -Summary: Documentation for arbor +Summary: Documentation for arbor BuildRequires: python3-sphinx BuildRequires: python3-sphinx_rtd_theme BuildRequires: python3-svgwrite +BuildArch: noarch + %description doc %{_description} %if %{with mpich} @@ -172,6 +175,9 @@ find . -type f -name "CMakeLists.txt" -exec sed -i -e 's/ext-tclap//' -e 's/ext- # Correct Python shebangs in all files find . -type f -name "*" -exec sed -i 's|^#![ ]*/usr/bin/env.*python.*$|#!/usr/bin/python3|' {} 2>/dev/null ';' +# Fix shebang (special case) +sed -i 's|^#![ ]*/usr/env/bin.*python.*$|#!/usr/bin/python3|' example/lfp/neuron_lfp_example.py + # test scripts cp %{SOURCE1} scripts/ cp %{SOURCE2} scripts/ @@ -216,6 +222,7 @@ pushd build$MPI_COMPILE_TYPE && -DARB_WITH_MPI:BOOL=$MPI_YES \\\ -DARB_WITH_GPU:BOOL=OFF \\\ -DARB_ARCH:STRING="none" \\\ + -DARB_CXX_FLAGS_TARGET:STRING="-ffat-lto-objects" \\\ -DCMAKE_INSTALL_LIBDIR=%{_lib} \\\ -DARB_WITH_PYTHON:BOOL=ON \\\ -DARB_PYTHON_LIB_PATH:STRING=$MPI_PYTHON3_SITEARCH \\\ @@ -348,51 +355,51 @@ popd %endif -# https://github.com/arbor-sim/arbor/blob/master/.github/workflows/test-everything.yml +# https://github.com/arbor-sim/arbor/blob/master/.github/workflows/test-matrix.yml %if %{with tests} %check -# General tests -export PYTHONPATH="%{buildroot}%{python3_sitearch}:%{buildroot}%{python3_sitelib}" -# for arbor-build-catalogue -export PATH="$PATH:%{buildroot}/%{_bindir}" + +# Taken from upstream's GitHub workflow +%global mpirun mpirun -n %{_smp_build_ncpus} # these tests segfault, filter out +gtest_filter="${gtest_filter--}${gtest_filter+:}*diffusion*" + pushd build-serial - %{python3} -m unittest discover -v -s ../python - ./bin/unit --gtest_filter=-*task_system.test_copy*:*notification_queue.test_copy* + %{py3_test_envvars} %{python3} -m unittest discover -v -s ../python + ./bin/unit ${gtest_filter+--gtest_filter=}${gtest_filter-} ./bin/unit-modcc cp ../scripts/run_cpp_examples.sh . ./run_cpp_examples.sh popd -./scripts/run_python_examples.sh # MPICH %if %{with mpich} %{_mpich_load} -export PYTHONPATH="%{buildroot}/$MPI_PYTHON3_SITEARCH" -export PATH="$PATH:." pushd build-mpich - mpirun -n %{_smp_build_ncpus} %{python3} -m unittest discover -v -s ../python - mpirun -n %{_smp_build_ncpus} ./bin/unit-mpi +%if %{with mpi_py_unittest} + %{py3_test_envvars} %{mpirun} %{python3} -m unittest discover -v -s ../python +%endif + %{mpirun} ./bin/unit-mpi cp ../scripts/run_cpp_examples.sh . - ./run_cpp_examples.sh "mpirun -n %{_smp_build_ncpus}" + ./run_cpp_examples.sh "%{mpirun}" popd -./scripts/run_python_examples.sh "mpirun -n %{_smp_build_ncpus}" +%{py3_test_envvars} ./scripts/run_python_examples.sh "%{mpirun}" %{_mpich_unload} %endif # OpenMPI %if %{with openmpi} %{_openmpi_load} -export PYTHONPATH="%{buildroot}/$MPI_PYTHON3_SITEARCH" -export PATH="$PATH:." pushd build-openmpi - mpirun -n %{_smp_build_ncpus} %{python3} -m unittest discover -v -s ../python - mpirun -n %{_smp_build_ncpus} ./bin/unit-mpi +%if %{with mpi_py_unittest} + %{py3_test_envvars} %{mpirun} %{python3} -m unittest discover -v -s ../python +%endif + %{mpirun} ./bin/unit-mpi cp ../scripts/run_cpp_examples.sh . - ./run_cpp_examples.sh "mpirun -n %{_smp_build_ncpus}" + ./run_cpp_examples.sh "%{mpirun}" popd -./scripts/run_python_examples.sh "mpirun -n %{_smp_build_ncpus}" +%{py3_test_envvars} ./scripts/run_python_examples.sh "%{mpirun}" %{_openmpi_unload} %endif %endif diff --git a/fix-missing-includes.patch b/fix-missing-includes.patch new file mode 100644 index 0000000..edfda30 --- /dev/null +++ b/fix-missing-includes.patch @@ -0,0 +1,43 @@ +From fa15938c196bf317e0292d41ec7d341978e9ed08 Mon Sep 17 00:00:00 2001 +From: Sandro +Date: Mon, 29 Apr 2024 14:35:01 +0200 +Subject: [PATCH] Fix missing includes + +Tests are failing to compile without those. + +diff --git a/test/unit/common.hpp b/test/unit/common.hpp +index db75e4d1..e02b9df2 100644 +--- a/test/unit/common.hpp ++++ b/test/unit/common.hpp +@@ -11,6 +11,7 @@ + #include + #include + #include ++#include + + #include + +diff --git a/test/unit/test_event_queue.cpp b/test/unit/test_event_queue.cpp +index daa0ccb9..17c10378 100644 +--- a/test/unit/test_event_queue.cpp ++++ b/test/unit/test_event_queue.cpp +@@ -6,6 +6,7 @@ + #include + + #include "event_queue.hpp" ++#include "common.hpp" + + using namespace arb; + +diff --git a/test/unit/test_ordered_forest.cpp b/test/unit/test_ordered_forest.cpp +index c58c76a4..12f7bd31 100644 +--- a/test/unit/test_ordered_forest.cpp ++++ b/test/unit/test_ordered_forest.cpp +@@ -5,6 +5,7 @@ + + #include + #include "util/ordered_forest.hpp" ++#include "common.hpp" + + using arb::util::ordered_forest; + diff --git a/looseversion.patch b/looseversion.patch deleted file mode 100644 index 65fde4a..0000000 --- a/looseversion.patch +++ /dev/null @@ -1,25 +0,0 @@ -diff --git a/pyproject.toml b/pyproject.toml -index 0d732541..12e003e2 100644 ---- a/pyproject.toml -+++ b/pyproject.toml -@@ -46,6 +46,7 @@ requires = [ - "scikit-build", - "cmake>=3.18", - "ninja", -+ "looseversion", - ] - build-backend = "setuptools.build_meta" - -diff --git a/scripts/tsplot b/scripts/tsplot -index c64e7b18..10ddf3f4 100755 ---- a/scripts/tsplot -+++ b/scripts/tsplot -@@ -11,7 +11,7 @@ import matplotlib as M - import matplotlib.pyplot as P - import numbers - from functools import reduce --from distutils.version import LooseVersion -+from looseversion import LooseVersion - from itertools import chain, islice, cycle - - # Run-time check for matplot lib version for line style functionality. diff --git a/sources b/sources index b7a9016..2f80fee 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (arbor-0.7.tar.gz) = 66471172e159c87c930c89cfed20020cd7c770e0fd5f32b265197710c7bbd2920cfa018f384553130dd93645e149ccb71f64cc04208534c96b4e581f0c0acb50 +SHA512 (arbor-0.9.0.tar.gz) = fa0280cae870c150c8f891949da9d6276f672bb7191b7b982cda4695dd38e3bffdd0dfa5f3acc2cf940909f64eb9da04cd11aeb7a4baa262fdbcd99be618aa15