diff --git a/packages/neuron/install-python-prefix.patch b/packages/neuron/install-python-prefix.patch new file mode 100644 index 0000000000000000000000000000000000000000..9f4c380bdd79ca3149860b39067bb9aea5d1862b --- /dev/null +++ b/packages/neuron/install-python-prefix.patch @@ -0,0 +1,87 @@ +diff --git c/CMakeLists.txt w/CMakeLists.txt +index a58773313..7781a8863 100644 +--- c/CMakeLists.txt ++++ w/CMakeLists.txt +@@ -427,6 +427,8 @@ if(NRN_ENABLE_PYTHON) + set(NRN_DEFAULT_PYTHON_LIBRARIES ${PYTHON_LIBRARIES}) + set(NRN_DEFAULT_PYTHON_INCLUDE_DIRS ${PYTHON_INCLUDE_DIRS}) + set(USE_PYTHON 1) ++ ++ find_package (Python COMPONENTS Interpreter Development) + else() + set(USE_PYTHON 0) + endif() +diff --git c/cmake/BuildOptionDefaults.cmake w/cmake/BuildOptionDefaults.cmake +index 2c9920229..e65575cf1 100644 +--- c/cmake/BuildOptionDefaults.cmake ++++ w/cmake/BuildOptionDefaults.cmake +@@ -29,7 +29,7 @@ set(NRN_NMODL_CXX_FLAGS_DEFAULT "-O0") + set(NRN_SANITIZERS_DEFAULT "") + + # Some distributions may set the prefix. To avoid errors, unset it +-set(NRN_MODULE_INSTALL_OPTIONS_DEFAULT "--prefix= --home=${CMAKE_INSTALL_PREFIX}") ++set(NRN_MODULE_INSTALL_OPTIONS_DEFAULT "--prefix=${CMAKE_INSTALL_PREFIX}") + set(NRN_PYTHON_DYNAMIC_DEFAULT "") + set(NRN_MPI_DYNAMIC_DEFAULT "") + set(NRN_RX3D_OPT_LEVEL_DEFAULT "0") +diff --git c/setup.py w/setup.py +index ef62207c3..cc4bb20f5 100644 +--- c/setup.py ++++ w/setup.py +@@ -5,6 +5,7 @@ import subprocess + import sys + from collections import defaultdict + from distutils import log ++import distutils.sysconfig as sc + from distutils.dir_util import copy_tree + from distutils.version import LooseVersion + from setuptools import Command, Extension +@@ -94,7 +95,7 @@ class CMakeAugmentedExtension(Extension): + cmake_proj_dir="", + cmake_flags=None, + cmake_collect_dirs=None, +- cmake_install_python_files="lib/python", ++ cmake_install_python_files=sc.get_python_lib(prefix='', plat_specific=True,standard_lib=False), + **kw, + ): + """Creates a CMakeAugmentedExtension. +diff --git c/src/nrnpython/CMakeLists.txt w/src/nrnpython/CMakeLists.txt +index e4a4e3f18..970b660db 100644 +--- c/src/nrnpython/CMakeLists.txt ++++ w/src/nrnpython/CMakeLists.txt +@@ -124,7 +124,7 @@ if(NRN_ENABLE_PYTHON_DYNAMIC) + target_link_libraries(nrnpython${pyver} nrniv_lib ${pylib} ${Readline_LIBRARY}) + add_dependencies(nrnpython${pyver} nrniv_lib) + list(APPEND nrnpython_lib_list nrnpython${pyver}) +- install(TARGETS nrnpython${pyver} DESTINATION ${NRN_INSTALL_SHARE_LIB_DIR}) ++ install(TARGETS nrnpython${pyver} DESTINATION ${CMAKE_INSTALL_PREFIX}/${Python_SITEARCH}) + endforeach() + else() + # build python3 library and install it +@@ -134,7 +134,7 @@ if(NRN_ENABLE_PYTHON_DYNAMIC) + target_include_directories(nrnpython3 PRIVATE "${NRN_OC_GENERATED_SOURCES}") + list(APPEND nrnpython_lib_list nrnpython3) + target_include_directories(nrnpython3 BEFORE PUBLIC ${NRNPYTHON_INCLUDE3} ${INCLUDE_DIRS}) +- install(TARGETS nrnpython3 DESTINATION ${NRN_INSTALL_SHARE_LIB_DIR}) ++ install(TARGETS nrnpython3 DESTINATION ${CMAKE_INSTALL_PREFIX}/${Python_SITEARCH}) + endif() + endif() + endif() +@@ -142,7 +142,7 @@ endif() + # Install package files that were created in build (e.g. .py.in) + install( + DIRECTORY ${PROJECT_BINARY_DIR}/share/lib/python +- DESTINATION ${NRN_LIBDIR} ++ DESTINATION ${CMAKE_INSTALL_PREFIX}/${Python_SITEARCH} + FILES_MATCHING + PATTERN *.py + PATTERN *.so +@@ -267,7 +267,7 @@ echo 'Installing python module using:'\n\ + set -ex\n\ + cd ${CMAKE_CURRENT_BINARY_DIR}\n\ + export SETUPTOOLS_USE_DISTUTILS=stdlib +-$1 setup.py --quiet build --build-lib=${NRN_PYTHON_BUILD_LIB} install ${NRN_MODULE_INSTALL_OPTIONS}\n\ ++$1 setup.py build --build-lib=${NRN_PYTHON_BUILD_LIB} install ${NRN_MODULE_INSTALL_OPTIONS}\n\ + ") + foreach(pyexe ${NRN_PYTHON_EXE_LIST}) + # install(CODE ...) only takes a single CMake code expression, so we can't easily roll our own diff --git a/packages/neuron/package.py b/packages/neuron/package.py index 313c8e6ed7abb064113e37af50e79e9e359709c1..e564ba5fb04771c09c805f50663a5158678457c9 100644 --- a/packages/neuron/package.py +++ b/packages/neuron/package.py @@ -53,8 +53,11 @@ class Neuron(CMakePackage): depends_on("caliper", when="+caliper") depends_on("py-numpy", type="run") + extends('python', when='+python') + patch("patch-v782-git-cmake-avx512.patch", when="@7.8.2") patch("nrn_find_ncurses.patch", when="@8.2.2") + patch("install-python-prefix.patch", when="@8:9+python") def cmake_args(self): spec = self.spec @@ -140,22 +143,6 @@ class Neuron(CMakePackage): corenrn_makefile = join_path(self.prefix, "share/coreneuron/nrnivmodl_core_makefile") filter_file(env["CXX"], cxx_compiler, corenrn_makefile, **kwargs) - def setup_run_environment(self, env): - env.prepend_path("PATH", join_path(self.prefix, "bin")) - env.prepend_path("LD_LIBRARY_PATH", join_path(self.prefix, "lib")) - if self.spec.satisfies("+python"): - env.prepend_path("PYTHONPATH", self.spec.prefix.lib.python) - - # override setup_{build/run}_environment for standalone package tests - def setup_build_environment(self, env): - self.setup_run_environment(env) - - def setup_dependent_build_environment(self, env, dependent_spec): - self.setup_run_environment(env) - - def setup_dependent_run_environment(self, env, dependent_spec): - self.setup_run_environment(env) - @run_after('install') @on_package_attributes(run_tests=True) def install_test(self):