diff --git a/.gitignore b/.gitignore index 91a7093..b1f9e10 100644 --- a/.gitignore +++ b/.gitignore @@ -2,7 +2,3 @@ /arbor-f12f934.tar.gz /arbor-fb5d4ea.tar.gz /arbor-0.3.tar.gz -/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 deleted file mode 100644 index d8b371c..0000000 --- a/.packit.yaml +++ /dev/null @@ -1,13 +0,0 @@ -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/0001-Fix-a-few-typos-that-cause-failure-to-compile-with-G.patch b/0001-Fix-a-few-typos-that-cause-failure-to-compile-with-G.patch deleted file mode 100644 index d337a29..0000000 --- a/0001-Fix-a-few-typos-that-cause-failure-to-compile-with-G.patch +++ /dev/null @@ -1,41 +0,0 @@ -From 8880ff435f69b515a57e60e8b7434dad9e47847e Mon Sep 17 00:00:00 2001 -From: "Benjamin A. Beasley" -Date: Thu, 16 Jan 2025 09:49:20 -0500 -Subject: [PATCH] Fix a few typos that cause failure to compile with GCC 15 - -These were eventually included in -76120d16c00ae67128c3c69421ab712f985f3445, along with many other changes. ---- - arbor/include/arbor/util/expected.hpp | 2 +- - python/strprintf.hpp | 2 +- - 2 files changed, 2 insertions(+), 2 deletions(-) - -diff --git a/arbor/include/arbor/util/expected.hpp b/arbor/include/arbor/util/expected.hpp -index 9d860f65..1af88eb4 100644 ---- a/arbor/include/arbor/util/expected.hpp -+++ b/arbor/include/arbor/util/expected.hpp -@@ -486,7 +486,7 @@ struct expected { - // Swap ops. - - void swap(expected& other) { -- data_.swap(other.data); -+ data_.swap(other.data_); - } - - // Accessors. -diff --git a/python/strprintf.hpp b/python/strprintf.hpp -index 63801677..2ccf12c1 100644 ---- a/python/strprintf.hpp -+++ b/python/strprintf.hpp -@@ -168,7 +168,7 @@ namespace impl { - for (auto& x: s.seq_) { - if (!first) o << s.sep_; - first = false; -- o << s.f(x); -+ o << s.f_(x); - } - return o; - } --- -2.47.1 - diff --git a/0001-Quote-various-cmake-var-values.patch b/0001-Quote-various-cmake-var-values.patch deleted file mode 100644 index ac8fb39..0000000 --- a/0001-Quote-various-cmake-var-values.patch +++ /dev/null @@ -1,33 +0,0 @@ -From 02bb37946cafdb5892c04a2e9804566c3d36e8a0 Mon Sep 17 00:00:00 2001 -From: "Ankur Sinha (Ankur Sinha Gmail)" -Date: Mon, 29 Aug 2022 17:22:11 +0100 -Subject: [PATCH] Quote various cmake var values - ---- - cmake/arbor-config.cmake.in | 10 +++++----- - 1 file changed, 5 insertions(+), 5 deletions(-) - -diff --git a/cmake/arbor-config.cmake.in b/cmake/arbor-config.cmake.in -index c9edecdc..7b6e1391 100644 ---- a/cmake/arbor-config.cmake.in -+++ b/cmake/arbor-config.cmake.in -@@ -46,11 +46,11 @@ endfunction() - - set(ARB_VECTORIZE @ARB_VECTORIZE@) - set(ARB_WITH_GPU @ARB_WITH_GPU@) --set(ARB_ARCH @ARB_ARCH@) --set(ARB_MODCC_FLAGS @ARB_MODCC_FLAGS@) --set(ARB_CXX @CMAKE_CXX_COMPILER@) --set(ARB_CXX_FLAGS @CMAKE_CXX_FLAGS@) --set(ARB_CXX_FLAGS_TARGET @ARB_CXX_FLAGS_TARGET_FULL@) -+set(ARB_ARCH "@ARB_ARCH@") -+set(ARB_MODCC_FLAGS "@ARB_MODCC_FLAGS@") -+set(ARB_CXX "@CMAKE_CXX_COMPILER@") -+set(ARB_CXX_FLAGS "@CMAKE_CXX_FLAGS@") -+set(ARB_CXX_FLAGS_TARGET "@ARB_CXX_FLAGS_TARGET_FULL@") - - _append_property(arbor::arbor INTERFACE_LINK_LIBRARIES @arbor_add_import_libs@) - _append_property(arbor::arborenv INTERFACE_LINK_LIBRARIES @arborenv_add_import_libs@) --- -2.37.2 - diff --git a/arbor-0.9.0-pybind11-3.0.patch b/arbor-0.9.0-pybind11-3.0.patch deleted file mode 100644 index 6fc58db..0000000 --- a/arbor-0.9.0-pybind11-3.0.patch +++ /dev/null @@ -1,22 +0,0 @@ -diff -Naur arbor-0.9.0-original/python/pyarb.hpp arbor-0.9.0/python/pyarb.hpp ---- arbor-0.9.0-original/python/pyarb.hpp 2023-08-10 10:47:38.000000000 +0100 -+++ arbor-0.9.0/python/pyarb.hpp 2025-11-03 08:24:00.093256311 +0000 -@@ -13,18 +13,6 @@ - - #include - --// Version check --#define mk_tok(x) #x --#define mk_ver(M, m, p) mk_tok(M) "." mk_tok(m) "." mk_tok(p) --#define PB11_ERR(M, m, p) "Required version of pybind11 is 2.8.1 <= version < 3.0.0 Found " mk_ver(M, m, p) --static_assert((PYBIND11_VERSION_HEX >= 0x02080100) -- && -- (PYBIND11_VERSION_HEX < 0x03000000), -- PB11_ERR(PYBIND11_VERSION_MAJOR, PYBIND11_VERSION_MINOR, PYBIND11_VERSION_PATCH)); --#undef PB11_ERR --#undef mk_ver --#undef mk_tok -- - namespace pyarb { - - // Sample recorder object interface. diff --git a/arbor-0001-Use-system-pybind11.patch b/arbor-0001-Use-system-pybind11.patch new file mode 100644 index 0000000..3a826bc --- /dev/null +++ b/arbor-0001-Use-system-pybind11.patch @@ -0,0 +1,32 @@ +From 26f74e228ebd1840befa4122d4f36840104a2380 Mon Sep 17 00:00:00 2001 +From: "Ankur Sinha (Ankur Sinha Gmail)" +Date: Sat, 7 Dec 2019 16:58:38 +0000 +Subject: [PATCH] Use system pybind11 + +diff --git a/python/CMakeLists.txt b/python/CMakeLists.txt +index bf4d5f0..0057102 100644 +--- a/python/CMakeLists.txt ++++ b/python/CMakeLists.txt +@@ -1,19 +1,10 @@ + include(FindPythonModule) # required for find_python_module + +-# Set up pybind11 as an external project. +-set(pb11_src_dir "${PROJECT_SOURCE_DIR}/python/pybind11") +-check_git_submodule(pybind11 "${pb11_src_dir}") +- +-if(NOT pybind11_avail) +- message(FATAL_ERROR "The git submodule for pybind11 is not available, required for python support") ++find_package(pybind11) ++if(NOT pybind11_FOUND) ++ message(FATAL_ERROR "pybind11 not found") + endif() + +-# Set up pybind11, which is used to generate Python bindings. +-# Pybind11 has good cmake support, so just add the pybind11 directory, +-# instead of using find_package. +-set(PYBIND11_CPP_STANDARD -std=c++14) +-add_subdirectory(pybind11) +- + set(pyarb_source + cells.cpp + config.cpp diff --git a/arbor-tinyopt_cmake.patch b/arbor-tinyopt_cmake.patch new file mode 100644 index 0000000..1306cbd --- /dev/null +++ b/arbor-tinyopt_cmake.patch @@ -0,0 +1,66 @@ +--- a/ext/CMakeLists.orig.txt 2020-06-06 20:38:54.795020000 +0200 ++++ b/ext/CMakeLists.txt 2020-06-06 20:41:11.429317416 +0200 +@@ -1,63 +1,6 @@ + # Niels Lohmann's json library (single-header version). + +-add_library(ext-json INTERFACE) +-target_include_directories(ext-json INTERFACE json/single_include) +- + # tinyopt command line parsing libary (header-only). + + add_library(ext-tinyopt INTERFACE) + target_include_directories(ext-tinyopt INTERFACE tinyopt/include) +- +-# Random123 (DE Shaw Research) counter-based random number generators (header-only) +- +-add_library(ext-random123 INTERFACE) +-target_include_directories(ext-random123 INTERFACE $/random123/include) +-install(TARGETS ext-random123 EXPORT arbor-targets) +- +-# Google benchmark for microbenchmarks: +- +-check_git_submodule(gbench google-benchmark) +-if(gbench_avail) +- # Set up google benchmark as an external project. +- +- include(ExternalProject) +- set(gbench_src_dir "${CMAKE_CURRENT_SOURCE_DIR}/google-benchmark") +- set(gbench_install_dir "${CMAKE_CURRENT_BINARY_DIR}/google-benchmark") +- set(gbench_cmake_args +- "-DCMAKE_BUILD_TYPE=release" +- "-DCMAKE_INSTALL_PREFIX=${gbench_install_dir}" +- "-DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}" +- "-DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}") +- +- ExternalProject_Add(gbench-build +- # Add dummy DOWNLOAD_COMMAND to stop ExternalProject_Add terminating CMake if the +- # git submodule had not been udpated. +- DOWNLOAD_COMMAND "${CMAKE_COMMAND}" -E echo "Warning: ${gbench_src_dir} empty or missing." +- SOURCE_DIR "${gbench_src_dir}" +- CMAKE_ARGS "${gbench_cmake_args}" +- INSTALL_DIR "${gbench_install_dir}" +- ) +- set_target_properties(gbench-build PROPERTIES EXCLUDE_FROM_ALL TRUE) +- +-else() +- add_error_target(gbench-build +- "Building Google benchmark library" +- "The git submodule for google benchmark is not available") +-endif() +- +-add_library(ext-benchmark INTERFACE) +-add_dependencies(ext-benchmark gbench-build) +-target_include_directories(ext-benchmark INTERFACE "${gbench_install_dir}/include") +-target_link_libraries(ext-benchmark INTERFACE "${gbench_install_dir}/lib/libbenchmark.a") +- +-# Sphinx RTD theme +- +-check_git_submodule(rtdtheme sphinx_rtd_theme) +-add_target_if(rtdtheme_avail +- check-sphinx_rtd_theme +- "Checking for Read the Docs Sphinx theme" +- "The git submodule for read the docs is not available") +- +-add_library(ext-sphinx_rtd_theme INTERFACE) +-add_dependencies(ext-sphinx_rtd_theme check-sphinx_rtd_theme) +-target_include_directories(ext-sphinx_rtd_theme INTERFACE sphinx_rtd_theme) diff --git a/arbor.spec b/arbor.spec index 8e76de4..e4b69a2 100644 --- a/arbor.spec +++ b/arbor.spec @@ -14,57 +14,41 @@ Documentation is available at https://arbor.readthedocs.io/en/latest/ } # Best to start with the serial version when debugging build failures -%bcond mpich 1 -%bcond openmpi 1 +%bcond_without mpich +%bcond_without openmpi -%bcond tests 1 +%bcond_without tests -# 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 +#%%global commit fb5d4ea736282dce14c3284bc5db748b082db957 +#%%global checkoutdate 20200225 +#%%global shortcommit %%(c=%%{commit}; echo ${c:0:7}) Name: arbor -Version: 0.9.0 -Release: %autorelease +Version: 0.3 +Release: 7%{?dist} Summary: Multi-compartment neural network simulation library -%forgemeta +License: BSD +URL: https://github.com/arbor-sim/%{name} +%if 0%{?commit:1} +Source0: %{url}/archive/%{commit}/%{name}-%{shortcommit}.tar.gz +%else +Source0: %{url}/archive/v%{version}/%{name}-%{version}.tar.gz +%endif +# Use the system copy of pybind11 +# https://github.com/arbor-sim/arbor/issues/915 +Patch0: %{name}-0001-Use-system-pybind11.patch -URL: %forgeurl -Source0: %forgesource -# script to run examples -Source1: https://raw.githubusercontent.com/arbor-sim/arbor/master/scripts/run_python_examples.sh -Source2: https://raw.githubusercontent.com/arbor-sim/arbor/master/scripts/run_cpp_examples.sh -License: BSD-3-Clause +# This patch changes ext/CMakeLists.txt for automatically using tinyopt libraries by cmake command. +Patch1: %{name}-tinyopt_cmake.patch -Patch: 0001-Quote-various-cmake-var-values.patch -# Tests are failing to compile due to some missing includes -Patch: fix-missing-includes.patch -# Fix a few typos that cause failure to compile with GCC 15 -# -# These were eventually included in -# 76120d16c00ae67128c3c69421ab712f985f3445, along with many other changes. -Patch: 0001-Fix-a-few-typos-that-cause-failure-to-compile-with-G.patch -# Remove the hard-coded pybind11 version check so that we can build with -# pybind11 3.0; this is part of https://github.com/arbor-sim/arbor/pull/2481. -Patch: arbor-0.9.0-pybind11-3.0.patch - -# Random123 does not support: -# mips64r2 mips32r2 s390 -# https://fedoraproject.org/wiki/Changes/EncourageI686LeafRemoval -ExcludeArch: mips64r2 mips32r2 s390x %{ix86} +# Random123 does not support these +ExcludeArch: mips64r2 mips32r2 s390 s390x BuildRequires: cmake -BuildRequires: make -BuildRequires: fmt-devel BuildRequires: gcc-c++ BuildRequires: git-core BuildRequires: gtest-devel -BuildRequires: google-benchmark-devel BuildRequires: json-devel BuildRequires: libunwind-devel BuildRequires: pybind11-devel @@ -72,47 +56,32 @@ BuildRequires: python3-devel BuildRequires: python3-setuptools BuildRequires: Random123-devel BuildRequires: tclap-devel -BuildRequires: pugixml-devel - +Provides: python3-%{name} = %{version}-%{release} +%{?python_provide:%python_provide python3-%{name}} # For validation, but we don't have these BRs # BuildRequires: julia julia-sundials julia-unitful julia-JSON -%if %{with tests} -BuildRequires: %{py3_dist numpy} -BuildRequires: %{py3_dist pandas} -BuildRequires: %{py3_dist seaborn} -%endif - -# Required by arbor -Requires: %{py3_dist numpy} - -# Provide Python meta data for packages requiring arbor -%py_provides python3-arbor - %description %{_description} %package devel -Summary: Development files for arbor -Requires: arbor%{?_isa} = %{version}-%{release} -Provides: arbor-static = %{version}-%{release} +Summary: Development files for %{name} +Requires: %{name}%{?_isa} = %{version}-%{release} +Provides: %{name}-static = %{version}-%{release} %description devel %{_description} %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 %{name} BuildRequires: python3-sphinx BuildRequires: python3-sphinx_rtd_theme -BuildRequires: python3-svgwrite - -BuildArch: noarch %description doc %{_description} %if %{with mpich} %package mpich -Summary: MPICH build for arbor +Summary: MPICH build for %{name} BuildRequires: mpich-devel BuildRequires: rpm-mpi-hooks BuildRequires: python3-mpi4py-mpich @@ -120,22 +89,22 @@ BuildRequires: python3-mpi4py-mpich Requires: mpich Requires: python3-mpich Requires: python3-mpi4py-mpich -Requires: %{py3_dist numpy} -Provides: python3-arbor-mpich = %{version}-%{release} +Provides: python3-%{name}-mpich = %{version}-%{release} +%{?python_provide:%python_provide python3-%{name}-mpich} %description mpich %{_description} %package mpich-devel -Summary: Development files for arbor-mpich -Requires: arbor-mpich%{?_isa} = %{version}-%{release} -Provides: arbor-mpich-static = %{version}-%{release} +Summary: Development files for %{name}-mpich +Requires: %{name}-mpich%{?_isa} = %{version}-%{release} +Provides: %{name}-mpich-static = %{version}-%{release} %description mpich-devel %{_description} %endif %if %{with openmpi} %package openmpi -Summary: OpenMPI build for arbor +Summary: OpenMPI build for %{name} BuildRequires: openmpi-devel BuildRequires: rpm-mpi-hooks BuildRequires: python3-mpi4py-openmpi @@ -143,57 +112,41 @@ BuildRequires: python3-mpi4py-openmpi Requires: openmpi Requires: python3-openmpi Requires: python3-mpi4py-openmpi -Requires: %{py3_dist numpy} -Provides: python3-arbor-openmpi = %{version}-%{release} +Provides: python3-%{name}-openmpi = %{version}-%{release} +%{?python_provide:%python_provide python3-%{name}-openmpi} %description openmpi %{_description} %package openmpi-devel -Summary: Development files for arbor-openmpi -Requires: arbor-openmpi%{?_isa} = %{version}-%{release} -Provides: arbor-openmpi-static = %{version}-%{release} +Summary: Development files for %{name}-openmpi +Requires: %{name}-openmpi%{?_isa} = %{version}-%{release} +Provides: %{name}-openmpi-static = %{version}-%{release} %description openmpi-devel %{_description} %endif %prep -%forgeautosetup -p1 +%if 0%{?commit:1} +%autosetup -n %{name}-%{commit} -S git +%else +%autosetup -p1 +%endif -# correct catalogue location -sed -i 's|dummy-catalogue.so|lib/dummy-catalogue.so|' python/test/unit/test_catalogues.py - -# Disable failing padded test -sed -i '/test_padded.cpp/ d' test/unit/CMakeLists.txt - -# should always be included, but is currently included only if bundled pybind11 -# is used -sed -i '/add_subdirectory(python)/i \ -include(FindPythonModule)' CMakeLists.txt # Do not build external libraries +# tclap and json and random123 sed -i -e 's/ ext-random123//' CMakeLists.txt - +# Remove ext folders, unbundle libraries +rm -vrf ext/google-benchmark ext/json ext/random123 ext/sphinx_rtd_theme +mv ext/tinyopt/LICENSE ext/tinyopt/LICENSE-tinyopt # Disable doc build: we built it ourselves sed -i '/add_subdirectory(doc)/ d' CMakeLists.txt - -# Remove ext folders, unbundle libraries -rm -vrf ext/google-benchmark ext/json ext/random123 -mv ext/tinyopt/LICENSE ext/tinyopt/LICENSE-tinyopt - # tclap and json are both header only find . -type f -name "CMakeLists.txt" -exec sed -i -e 's/ext-tclap//' -e 's/ext-json//' {} 2>/dev/null ';' # 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/ -chmod +x scripts/*.sh -sed -i 's/ python / python3 /' scripts/run_python_examples.sh -sed -i 's|build/|./|' scripts/run_cpp_examples.sh +# We set it, remove the hard coded bits from CMakeLists.txt +sed -i '/set(arb_pyexecdir/ d' python/CMakeLists.txt # builddir for serial mkdir build-serial @@ -211,7 +164,7 @@ mkdir build-serial # straight away %global do_cmake_config %{expand: \ echo -echo "*** BUILDING arbor-%{version}$MPI_COMPILE_TYPE ***" +echo "*** BUILDING %{name}-%{version}$MPI_COMPILE_TYPE ***" echo pushd build$MPI_COMPILE_TYPE && cmake \\\ @@ -226,16 +179,22 @@ pushd build$MPI_COMPILE_TYPE && -DSHARE_INSTALL_PREFIX:PATH=%{_datadir} \\\ -DCMAKE_SKIP_RPATH:BOOL=ON \\\ -DCMAKE_BUILD_TYPE:STRING="release" \\\ - -DARB_USE_BUNDLED_LIBS:BOOL=OFF \\\ - -DARB_USE_BUNDLED_PYBIND11:BOOL=OFF \\\ +%ifarch x86_64 i686 aarch64 + -DARB_VECTORIZE:BOOL=ON \\\ +%else -DARB_VECTORIZE:BOOL=OFF \\\ +%endif +%ifarch %{power64} + -DARB_ARCH=power8 \\\ +%endif -DARB_WITH_MPI:BOOL=$MPI_YES \\\ -DARB_WITH_GPU:BOOL=OFF \\\ - -DARB_ARCH:STRING="none" \\\ - -DARB_CXX_FLAGS_TARGET:STRING="-ffat-lto-objects" \\\ +%ifnarch armv7hl + -DARB_ARCH:STRING="native" \\\ +%endif -DCMAKE_INSTALL_LIBDIR=%{_lib} \\\ -DARB_WITH_PYTHON:BOOL=ON \\\ - -DARB_PYTHON_LIB_PATH:STRING=$MPI_PYTHON3_SITEARCH \\\ + -Darb_pyexecdir:STRING=$MPI_PYTHON3_SITEARCH \\\ %if "%{_lib}" == "lib64" -DLIB_SUFFIX=64 .. && %else @@ -252,16 +211,13 @@ popd || exit -1; %global do_make_build %{expand: \ %make_build -C build$MPI_COMPILE_TYPE || exit -1 - %make_build -C build$MPI_COMPILE_TYPE examples || exit -1 -%if %{with tests} %make_build -C build$MPI_COMPILE_TYPE tests || exit -1 -%endif } # Build serial version, dummy arguments +%global __cc gcc +%global __cxx g++ %set_build_flags -export CC=gcc -export CXX=g++ export MPI_SUFFIX="" export MPI_HOME=%{_prefix} export MPI_INCLUDE=%{_includedir} @@ -272,12 +228,17 @@ export MPI_PYTHON3_SITEARCH=%{python3_sitearch} %{do_cmake_config} %{do_make_build} -# skip building sphinx docs because they bundle js/fonts and it's very hard to -# unbundle +# Manually make docs in the serial build +sphinx-build-%{python3_version} -b html doc html +# Remove uneeded dotfiles +rm -rfv html/{.buildinfo,.doctrees} + # Build mpich version %if %{with mpich} %{_mpich_load} +%global __cc mpicc +%global __cxx mpicxx %set_build_flags export CC=mpicc export CXX=mpicxx @@ -294,6 +255,8 @@ export MPI_COMPILE_TYPE="-mpich" # Build OpenMPI version %if %{with openmpi} %{_openmpi_load} +%global __cc mpicc +%global __cxx mpicxx %set_build_flags export CC=mpicc export CXX=mpicxx @@ -312,7 +275,7 @@ export MPI_COMPILE_TYPE="-openmpi" # Install everything %global do_install %{expand: \ echo -echo "*** INSTALLING arbor-%{version}$MPI_COMPILE_TYPE ***" +echo "*** INSTALLING %{name}-%{version}$MPI_COMPILE_TYPE ***" echo %make_install -C build$MPI_COMPILE_TYPE || exit -1 } @@ -339,8 +302,6 @@ export MPI_COMPILE_TYPE="-mpich" pushd $RPM_BUILD_ROOT/$MPI_BIN mv -v modcc{,$MPI_SUFFIX} -v - mv -v arbor-build-catalogue{,$MPI_SUFFIX} -v - mv -v lmorpho{,$MPI_SUFFIX} -v popd %{_mpich_unload} %endif @@ -358,60 +319,18 @@ export MPI_COMPILE_TYPE="-openmpi" pushd $RPM_BUILD_ROOT/$MPI_BIN mv -v modcc{,$MPI_SUFFIX} -v - mv -v arbor-build-catalogue{,$MPI_SUFFIX} -v - mv -v lmorpho{,$MPI_SUFFIX} -v popd %{_openmpi_unload} %endif -# https://github.com/arbor-sim/arbor/blob/master/.github/workflows/test-matrix.yml %if %{with tests} %check - -# Taken from upstream's GitHub workflow -%global mpirun mpirun -n %{_smp_build_ncpus} - +# Run for serial only. our builders are not using MPI # these tests segfault, filter out -gtest_filter="${gtest_filter--}${gtest_filter+:}*diffusion*" - pushd build-serial - %{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 + ./bin/unit --gtest_filter=-*mc_event_delivery*:*fvm_lowered*:*mc_cell_group* popd - -# MPICH -%if %{with mpich} -%{_mpich_load} -pushd build-mpich -%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}" -popd -%{py3_test_envvars} ./scripts/run_python_examples.sh "%{mpirun}" -%{_mpich_unload} -%endif - -# OpenMPI -%if %{with openmpi} -%{_openmpi_load} -pushd build-openmpi -%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}" -popd -%{py3_test_envvars} ./scripts/run_python_examples.sh "%{mpirun}" -%{_openmpi_unload} -%endif %endif @@ -419,24 +338,19 @@ popd %license LICENSE ext/tinyopt/LICENSE-tinyopt %doc README.md %{_bindir}/modcc -%{_bindir}/arbor-build-catalogue -%{_bindir}/lmorpho -%{python3_sitearch}/arbor -%{_datadir}/arbor +%{python3_sitearch}/%{name} %files devel -%{_includedir}/arborio -%{_includedir}/arbor -%{_includedir}/arborenv -%{_libdir}/cmake/arbor +%{_includedir}/%{name} +%{_includedir}/%{name}env +%{_libdir}/cmake/%{name} %{_libdir}/libarbor.a -%{_libdir}/libarborio.a %{_libdir}/libarborenv.a %files doc %license LICENSE -%doc example/ +%doc html %if %{with mpich} @@ -444,18 +358,13 @@ popd %doc README.md %license LICENSE ext/tinyopt/LICENSE-tinyopt %{_libdir}/mpich/bin/modcc_mpich -%{_libdir}/mpich/bin/arbor-build-catalogue_mpich -%{_libdir}/mpich/bin/lmorpho_mpich -%{python3_sitearch}/mpich/arbor -%{_libdir}/mpich/share/arbor +%{python3_sitearch}/mpich/%{name} %files mpich-devel -%{_libdir}/mpich/include/arbor -%{_libdir}/mpich/include/arborio -%{_libdir}/mpich/include/arborenv -%{_libdir}/mpich/lib/cmake/arbor +%{_libdir}/mpich/include/%{name} +%{_libdir}/mpich/include/%{name}env +%{_libdir}/mpich/lib/cmake/%{name} %{_libdir}/mpich/lib/libarbor.a -%{_libdir}/mpich/lib/libarborio.a %{_libdir}/mpich/lib/libarborenv.a %endif @@ -464,20 +373,79 @@ popd %doc README.md %license LICENSE ext/tinyopt/LICENSE-tinyopt %{_libdir}/openmpi/bin/modcc_openmpi -%{_libdir}/openmpi/bin/arbor-build-catalogue_openmpi -%{_libdir}/openmpi/bin/lmorpho_openmpi -%{python3_sitearch}/openmpi/arbor -%{_libdir}/openmpi/share/arbor +%{python3_sitearch}/openmpi/%{name} %files openmpi-devel -%{_libdir}/openmpi/include/arbor -%{_libdir}/openmpi/include/arborio -%{_libdir}/openmpi/include/arborenv -%{_libdir}/openmpi/lib/cmake/arbor +%{_libdir}/openmpi/include/%{name} +%{_libdir}/openmpi/include/%{name}env +%{_libdir}/openmpi/lib/cmake/%{name} %{_libdir}/openmpi/lib/libarbor.a -%{_libdir}/openmpi/lib/libarborio.a %{_libdir}/openmpi/lib/libarborenv.a %endif %changelog -%autochangelog +* Mon Oct 05 2020 Ankur Sinha - 0.3-7 +- Explicitly require setuptools + +* Fri Aug 28 2020 Jeff Law - 0.3-6 +- Re-enable LTO +- Do not force -march=native on armv7hl so that build architecture does not bleed + into the binaries. This should probably be done on all targets + +* Sat Aug 01 2020 Fedora Release Engineering - 0.3-5 +- Second attempt - Rebuilt for + https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild + +* Mon Jul 27 2020 Jeff Law - 0.3-4 +- Disable LTO for armv7hl build + +* Mon Jul 27 2020 Fedora Release Engineering - 0.3-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild + +* Sun Jun 28 2020 Ankur Sinha - 0.3-2 +- Update build flags to ensure CC and CXX are set correctly +- https://lists.fedoraproject.org/archives/list/scitech@lists.fedoraproject.org/thread/BNKLXKY4O7BOTZ7LH7XDUTQO6FG2UWUT/#BNKLXKY4O7BOTZ7LH7XDUTQO6FG2UWUT + +* Mon Jun 08 2020 Antonio Trande - 0.3-2 +- Move Provides lines to runtime packages +- Add patch for using tinyopt libraries + +* Sat Jun 06 2020 Antonio Trande - 0.3-1 +- Release 0.3 + +* Tue May 26 2020 Miro Hrončok - 0.2.2-8.20200225gitfb5d4ea736282dce14c3284bc5db748b082db957 +- Rebuilt for Python 3.9 + +* Thu Apr 02 2020 Björn Esser - 0.2.2-7.20200225gitfb5d4ea736282dce14c3284bc5db748b082db957 +- Fix string quoting for rpm >= 4.16 + +* Wed Feb 26 2020 Ankur Sinha - 0.2.2-5.20200226gitfb5d4ea736282dce14c3284bc5db748b082db957 +- Use new snapshot that fixes errors on 32 bit systems +- No longer excludes i686 and armv7hl +- Drop unneeded patch. + +* Sun Feb 23 2020 Ankur Sinha - 0.2.2-5.20200223gitf12f934f365d9e68f01bfd857982be80da2ddd10 +- Build from latest upstream snapshot +- Freshen patch +- Add exclude arches + +* Tue Jan 28 2020 Fedora Release Engineering - 0.2.2-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild + +* Tue Dec 10 2019 Ankur Sinha - 0.2.2-3 +- Enable tests +- Add patch for test crash + +* Mon Dec 09 2019 Ankur Sinha - 0.2.2-2 +- Remove arch info in provides for static +- Temporarily disable tests +- use python3-devel +- Add documentation in separate sub-package +- add python3-{mpich,openmpi} as requires that own MPI_PYTHON3_SITEARCH directories +- Improve summaries for sub-packages to please rpmlint + +* Sat Dec 07 2019 Ankur Sinha - 0.2.2-1 +- Update to latest release + +* Sun Jan 13 2019 Ankur Sinha - 0.1-1 +- Initial rpm package diff --git a/changelog b/changelog deleted file mode 100644 index 2bfa808..0000000 --- a/changelog +++ /dev/null @@ -1,75 +0,0 @@ -* Wed Jul 21 2021 Fedora Release Engineering - 0.3-10 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild - -* Fri Jun 04 2021 Python Maint - 0.3-9 -- Rebuilt for Python 3.10 - -* Tue Jan 26 2021 Fedora Release Engineering - 0.3-8 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild - -* Mon Oct 05 2020 Ankur Sinha - 0.3-7 -- Explicitly require setuptools - -* Fri Aug 28 2020 Jeff Law - 0.3-6 -- Re-enable LTO -- Do not force -march=native on armv7hl so that build architecture does not bleed - into the binaries. This should probably be done on all targets - -* Sat Aug 01 2020 Fedora Release Engineering - 0.3-5 -- Second attempt - Rebuilt for - https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild - -* Mon Jul 27 2020 Jeff Law - 0.3-4 -- Disable LTO for armv7hl build - -* Mon Jul 27 2020 Fedora Release Engineering - 0.3-3 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild - -* Sun Jun 28 2020 Ankur Sinha - 0.3-2 -- Update build flags to ensure CC and CXX are set correctly -- https://lists.fedoraproject.org/archives/list/scitech@lists.fedoraproject.org/thread/BNKLXKY4O7BOTZ7LH7XDUTQO6FG2UWUT/#BNKLXKY4O7BOTZ7LH7XDUTQO6FG2UWUT - -* Mon Jun 08 2020 Antonio Trande - 0.3-2 -- Move Provides lines to runtime packages -- Add patch for using tinyopt libraries - -* Sat Jun 06 2020 Antonio Trande - 0.3-1 -- Release 0.3 - -* Tue May 26 2020 Miro Hrončok - 0.2.2-8.20200225gitfb5d4ea736282dce14c3284bc5db748b082db957 -- Rebuilt for Python 3.9 - -* Thu Apr 02 2020 Björn Esser - 0.2.2-7.20200225gitfb5d4ea736282dce14c3284bc5db748b082db957 -- Fix string quoting for rpm >= 4.16 - -* Wed Feb 26 2020 Ankur Sinha - 0.2.2-5.20200226gitfb5d4ea736282dce14c3284bc5db748b082db957 -- Use new snapshot that fixes errors on 32 bit systems -- No longer excludes i686 and armv7hl -- Drop unneeded patch. - -* Sun Feb 23 2020 Ankur Sinha - 0.2.2-5.20200223gitf12f934f365d9e68f01bfd857982be80da2ddd10 -- Build from latest upstream snapshot -- Freshen patch -- Add exclude arches - -* Tue Jan 28 2020 Fedora Release Engineering - 0.2.2-4 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild - -* Tue Dec 10 2019 Ankur Sinha - 0.2.2-3 -- Enable tests -- Add patch for test crash - -* Mon Dec 09 2019 Ankur Sinha - 0.2.2-2 -- Remove arch info in provides for static -- Temporarily disable tests -- use python3-devel -- Add documentation in separate sub-package -- add python3-{mpich,openmpi} as requires that own MPI_PYTHON3_SITEARCH directories -- Improve summaries for sub-packages to please rpmlint - -* Sat Dec 07 2019 Ankur Sinha - 0.2.2-1 -- Update to latest release - -* Sun Jan 13 2019 Ankur Sinha - 0.1-1 -- Initial rpm package - diff --git a/fix-missing-includes.patch b/fix-missing-includes.patch deleted file mode 100644 index edfda30..0000000 --- a/fix-missing-includes.patch +++ /dev/null @@ -1,43 +0,0 @@ -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/run_cpp_examples.sh b/run_cpp_examples.sh deleted file mode 100644 index d463b29..0000000 --- a/run_cpp_examples.sh +++ /dev/null @@ -1,21 +0,0 @@ -#!/usr/bin/env bash -# Runs all C++ examples - -set -Eeuo pipefail - -if [[ "$#" -gt 1 ]]; then - echo "usage: run_cpp_examples.sh " - exit 1 -fi - -PREFIX=${1:-} - -$PREFIX build/bin/bench -$PREFIX build/bin/brunel -$PREFIX build/bin/dryrun -$PREFIX build/bin/gap_junctions -$PREFIX build/bin/generators -$PREFIX build/bin/lfp -$PREFIX build/bin/probe-demo v -$PREFIX build/bin/ring -$PREFIX build/bin/single-cell diff --git a/run_python_examples.sh b/run_python_examples.sh deleted file mode 100644 index 5eca21d..0000000 --- a/run_python_examples.sh +++ /dev/null @@ -1,21 +0,0 @@ -#!/usr/bin/env bash -# Runs all Python examples - -set -Eeuo pipefail - -if [[ "$#" -gt 1 ]]; then - echo "usage: run_python_examples.sh " - exit 1 -fi - -PREFIX=${1:-} - -$PREFIX python python/example/network_ring.py -$PREFIX python python/example/single_cell_model.py -$PREFIX python python/example/single_cell_recipe.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_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_cable.py diff --git a/sources b/sources index 2f80fee..94a682c 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (arbor-0.9.0.tar.gz) = fa0280cae870c150c8f891949da9d6276f672bb7191b7b982cda4695dd38e3bffdd0dfa5f3acc2cf940909f64eb9da04cd11aeb7a4baa262fdbcd99be618aa15 +SHA512 (arbor-0.3.tar.gz) = d81438e6b0474615d383b9a401a0ff32b3039e19b9ff9be2648c27cf96c72951f74959dd6213579ae6f2a158579cf2e1ea325fe60ec6b9c8decd800e9a171ebc