diff options
Diffstat (limited to 'var')
-rw-r--r-- | var/spack/repos/builtin/packages/py-psana/package.py | 49 | ||||
-rw-r--r-- | var/spack/repos/builtin/packages/py-psana/setup.patch | 171 |
2 files changed, 220 insertions, 0 deletions
diff --git a/var/spack/repos/builtin/packages/py-psana/package.py b/var/spack/repos/builtin/packages/py-psana/package.py new file mode 100644 index 0000000000..76393c1c96 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-psana/package.py @@ -0,0 +1,49 @@ +# Copyright 2013-2023 Lawrence Livermore National Security, LLC and other +# Spack Project Developers. See the top-level COPYRIGHT file for details. +# +# SPDX-License-Identifier: (Apache-2.0 OR MIT) + + +from spack.package import * + + +class PyPsana(PythonPackage): + """LCLS II Developement: PSAna Python.""" + + homepage = "https://github.com/slac-lcls/lcls2" + url = "https://github.com/slac-lcls/lcls2/archive/refs/tags/3.3.37.tar.gz" + + maintainers("valmar") + + version("3.3.37", sha256="127a5ae44c9272039708bd877849a3af354ce881fde093a2fc6fe0550b698b72") + + patch("setup.patch") + + depends_on("py-setuptools", type="build") + depends_on("py-cython", type="build") + depends_on("py-numpy", type=("build", "run")) + depends_on("py-matplotlib", type=("build", "run")) + depends_on("py-psalg", type=("build", "run")) + depends_on("py-requests", type=("build", "run")) + depends_on("py-mpi4py", type=("build", "run")) + depends_on("py-pymongo", type=("build", "run")) + depends_on("py-amityping", type=("build", "run")) + depends_on("py-mypy-extensions", type=("build", "run")) + depends_on("py-h5py", type=("build", "run")) + depends_on("py-pyzmq", type=("build", "run")) + depends_on("py-psmon", type=("build", "run")) + depends_on("py-lcls-krtc", type=("build", "run")) + depends_on("py-psmon", type=("build", "run")) + depends_on("py-ipykernel", type=("build", "run")) + depends_on("opencv", type=("build", "run")) + depends_on("py-scikit-learn", type=("build", "run")) + depends_on("py-pyabel", type=("build", "run")) + depends_on("xtcdata", type=("build", "run", "link")) + depends_on("psalg", type=("build", "run", "link")) + + build_directory = "psana" + + def setup_build_environment(self, env): + env.set("INSTDIR", "{0}".format(self.prefix)) + env.set("XTCDATADIR", "{0}".format(self.spec["xtcdata"].prefix)) + env.set("PSALGDIR", "{0}".format(self.spec["psalg"].prefix)) diff --git a/var/spack/repos/builtin/packages/py-psana/setup.patch b/var/spack/repos/builtin/packages/py-psana/setup.patch new file mode 100644 index 0000000000..7276b3c31c --- /dev/null +++ b/var/spack/repos/builtin/packages/py-psana/setup.patch @@ -0,0 +1,171 @@ +diff --git a/psana/setup.py b/psana/setup.py +index 61412cf6..20ec023b 100644 +--- a/psana/setup.py ++++ b/psana/setup.py +@@ -18,6 +18,18 @@ if not instdir_env: + raise Exception('Parameter --instdir is missing') + instdir = instdir_env + ++xtcdatadir_env = os.environ.get('XTCDATADIR') ++if not xtcdatadir_env: ++ xtcdatadir = instdir_env ++else: ++ xtcdatadir = xtcdatadir_env ++ ++psalgdir_env = os.environ.get('PSALGDIR') ++if not psalgdir_env: ++ psalgdir = instdir_env ++else: ++ psalgdir = psalgdir_env ++ + # Shorter BUILD_LIST can be used to speedup development loop. + #Command example: ./build_all.sh -b PEAKFINDER:HEXANODE:CFD -md + BUILD_LIST = ('PSANA','SHMEM','PEAKFINDER','HEXANODE','DGRAM','HSD','CFD','NDARRAY')# ,'XTCAV') +@@ -63,6 +75,10 @@ else: + openmp_link_args = ['-fopenmp'] + + extra_link_args_rpath = extra_link_args + ['-Wl,-rpath,'+ os.path.abspath(os.path.join(instdir, 'lib'))] ++if xtcdatadir_env: ++ extra_link_args_rpath = extra_link_args_rpath + ['-Wl,-rpath,'+ os.path.abspath(os.path.join(xtcdatadir, 'lib'))] ++if psalgdir_env: ++ extra_link_args_rpath = extra_link_args_rpath + ['-Wl,-rpath,'+ os.path.abspath(os.path.join(psalgdir, 'lib'))] + + CYT_BLD_DIR = 'build' + +@@ -76,21 +92,38 @@ INSTALL_REQS = [] + PACKAGE_DATA = {} + ENTRY_POINTS = {} + ++if xtcdatadir_env: ++ xtc_headers = os.path.join(xtcdatadir, 'include') ++ xtc_lib_path = os.path.join(xtcdatadir, 'lib') ++else: ++ xtc_headers = os.path.join(instdir, 'include') ++ xtc_lib_path = os.path.join(instdir, 'lib') ++ ++if psalgdir_env: ++ psalg_headers = os.path.join(psalgdir, 'include') ++ psalg_lib_path = os.path.join(psalgdir, 'lib') ++else: ++ psalg_headers = os.path.join(instdir, 'include') ++ psalg_lib_path = os.path.join(instdir, 'lib') + + if 'PSANA' in BUILD_LIST : + dgram_module = Extension('psana.dgram', + sources = ['src/dgram.cc'], + libraries = ['xtc'], +- include_dirs = ['src', np.get_include(), os.path.join(instdir, 'include')], +- library_dirs = [os.path.join(instdir, 'lib')], ++ #include_dirs = ['src', np.get_include(), os.path.join(instdir, 'include'), ], ++ #library_dirs = [os.path.join(instdir, 'lib')], ++ include_dirs = ['src', np.get_include(), os.path.join(instdir, 'include'), xtc_headers ], ++ library_dirs = [os.path.join(instdir, 'lib'), xtc_lib_path], + extra_link_args = extra_link_args_rpath, + extra_compile_args = extra_cxx_compile_args) + + container_module = Extension('psana.container', + sources = ['src/container.cc'], + libraries = ['xtc'], +- include_dirs = [np.get_include(), os.path.join(instdir, 'include')], +- library_dirs = [os.path.join(instdir, 'lib')], ++ #include_dirs = [np.get_include(), os.path.join(instdir, 'include')], ++ #library_dirs = [os.path.join(instdir, 'lib')], ++ include_dirs = [np.get_include(), os.path.join(instdir, 'include'), xtc_headers ], ++ library_dirs = [os.path.join(instdir, 'lib'), xtc_lib_path], + extra_link_args = extra_link_args_rpath, + extra_compile_args = extra_cxx_compile_args) + +@@ -122,6 +155,7 @@ if 'PSANA' in BUILD_LIST : + 'xtcavDisplay = psana.xtcav.app.xtcavDisplay:__main__', + 'shmemClientSimple = psana.app.shmemClientSimple:main', + 'epix10ka_pedestals_calibration = psana.app.epix10ka_pedestals_calibration:do_main', ++ 'epix10ka_charge_injection = psana.app.epix10ka_charge_injection:do_main', + 'epix10ka_deploy_constants = psana.app.epix10ka_deploy_constants:do_main', + 'epix10ka_raw_calib_image = psana.app.epix10ka_raw_calib_image:do_main', + 'epix10ka_calib_components = psana.app.epix10ka_calib_components:__main__', +@@ -137,8 +171,10 @@ if 'SHMEM' in BUILD_LIST and sys.platform != 'darwin': + ext = Extension('shmem', + sources=["psana/shmem/shmem.pyx"], + libraries = ['xtc','shmemcli'], +- include_dirs = [np.get_include(), os.path.join(instdir, 'include')], +- library_dirs = [os.path.join(instdir, 'lib')], ++ #include_dirs = [np.get_include(), os.path.join(instdir, 'include')], ++ #library_dirs = [os.path.join(instdir, 'lib')], ++ include_dirs = [np.get_include(), os.path.join(instdir, 'include'), xtc_headers, psalg_headers ], ++ library_dirs = [os.path.join(instdir, 'lib'), xtc_lib_path, psalg_lib_path], + language="c++", + extra_compile_args = extra_cxx_compile_args, + extra_link_args = extra_link_args_rpath, +@@ -239,8 +275,10 @@ if 'DGRAM' in BUILD_LIST : + #packages=['psana.peakfinder',], + sources=["psana/peakFinder/dgramCreate.pyx"], + libraries = ['xtc'], +- include_dirs = [np.get_include(), os.path.join(instdir, 'include')], +- library_dirs = [os.path.join(instdir, 'lib')], ++ #include_dirs = [np.get_include(), os.path.join(instdir, 'include')], ++ #library_dirs = [os.path.join(instdir, 'lib')], ++ include_dirs = [np.get_include(), os.path.join(instdir, 'include'), xtc_headers ], ++ library_dirs = [os.path.join(instdir, 'lib'), xtc_lib_path], + language="c++", + extra_compile_args = extra_cxx_compile_args, + extra_link_args = extra_link_args_rpath, +@@ -257,7 +295,11 @@ if 'DGRAM' in BUILD_LIST : + + ext = Extension("psana.smdreader", + sources=["psana/smdreader.pyx"], +- include_dirs=["psana"], ++ libraries = ['xtc'], ++ #include_dirs=["psana"], ++ #include_dirs = [np.get_include(), os.path.join(instdir, 'include')], ++ include_dirs = ["psana", np.get_include(), os.path.join(instdir, 'include'), xtc_headers ], ++ library_dirs = [os.path.join(instdir, 'lib'), xtc_lib_path], + #extra_compile_args=extra_c_compile_args, + extra_compile_args=extra_c_compile_args + openmp_compile_args, + #extra_link_args=extra_link_args, +@@ -284,8 +326,10 @@ if 'DGRAM' in BUILD_LIST : + ext = Extension("psana.dgramedit", + sources=["psana/dgramedit.pyx"], + libraries = ['xtc'], +- include_dirs=["psana",np.get_include(), os.path.join(instdir, 'include')], +- library_dirs = [os.path.join(instdir, 'lib')], ++ #include_dirs=["psana",np.get_include(), os.path.join(instdir, 'include')], ++ #library_dirs = [os.path.join(instdir, 'lib')], ++ include_dirs = ["psana", np.get_include(), os.path.join(instdir, 'include'), xtc_headers ], ++ library_dirs = [os.path.join(instdir, 'lib'), xtc_lib_path], + language="c++", + extra_compile_args = extra_cxx_compile_args, + extra_link_args = extra_link_args_rpath, +@@ -305,8 +349,10 @@ if 'DGRAM' in BUILD_LIST : + ext = Extension("psana.dgramlite", + sources=["psana/dgramlite.pyx"], + libraries = ['xtc'], +- include_dirs=["psana",np.get_include(), os.path.join(instdir, 'include')], +- library_dirs = [os.path.join(instdir, 'lib')], ++ #include_dirs=["psana",np.get_include(), os.path.join(instdir, 'include')], ++ #iibrary_dirs = [os.path.join(instdir, 'lib')], ++ include_dirs = ["psana", np.get_include(), os.path.join(instdir, 'include'), xtc_headers ], ++ library_dirs = [os.path.join(instdir, 'lib'), xtc_lib_path], + language="c++", + extra_compile_args = extra_cxx_compile_args, + extra_link_args = extra_link_args_rpath, +@@ -316,15 +362,17 @@ if 'DGRAM' in BUILD_LIST : + ext = Extension("psana.mypybuffer", + sources=["psana/mypybuffer.pyx"], + libraries = ['xtc'], +- include_dirs=["psana",np.get_include(), os.path.join(instdir, 'include')], +- library_dirs = [os.path.join(instdir, 'lib')], ++ #include_dirs=["psana",np.get_include(), os.path.join(instdir, 'include')], ++ #library_dirs = [os.path.join(instdir, 'lib')], ++ include_dirs = ["psana", np.get_include(), os.path.join(instdir, 'include'), xtc_headers ], ++ library_dirs = [os.path.join(instdir, 'lib'), xtc_lib_path], + language="c++", + extra_compile_args = extra_cxx_compile_args, +- extra_link_args = extra_link_args_rpath, + ) + CYTHON_EXTS.append(ext) + + ++ + if 'HSD' in BUILD_LIST : + ext = Extension("hsd", + sources=["psana/hsd/hsd.pyx"], |