summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoreugeneswalker <38933153+eugeneswalker@users.noreply.github.com>2023-05-15 11:19:54 -0500
committerGitHub <noreply@github.com>2023-05-15 09:19:54 -0700
commitfa98023375ffe7ef65cd37889f7af2ffc4e644fd (patch)
treeb9a7a4f697a15af5371ad3b469f202dc7d2758e5
parente79a911bacafd68a24a6ff8519293375cae45a7d (diff)
downloadspack-fa98023375ffe7ef65cd37889f7af2ffc4e644fd.tar.gz
spack-fa98023375ffe7ef65cd37889f7af2ffc4e644fd.tar.bz2
spack-fa98023375ffe7ef65cd37889f7af2ffc4e644fd.tar.xz
spack-fa98023375ffe7ef65cd37889f7af2ffc4e644fd.zip
new pkg: py-psana (#37666)
-rw-r--r--var/spack/repos/builtin/packages/py-psana/package.py49
-rw-r--r--var/spack/repos/builtin/packages/py-psana/setup.patch171
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"],