diff --git a/env/merlin/HiQsimulator/packages/py-hiqsimulator/cmake-glog.patch b/env/merlin/HiQsimulator/packages/py-hiqsimulator/cmake-glog.patch new file mode 100644 index 0000000..4cb5a9e --- /dev/null +++ b/env/merlin/HiQsimulator/packages/py-hiqsimulator/cmake-glog.patch @@ -0,0 +1,23 @@ +diff --git a/cmake/Findglog.cmake b/cmake/Findglog.cmake +index d3123c4..3425d0d 100644 +--- a/cmake/Findglog.cmake ++++ b/cmake/Findglog.cmake +@@ -176,17 +176,8 @@ if(glog_FOUND) + gflags::gflags) + else() + # Make sure that the glog::glog target depends on gflags::gflags +- get_target_property(_libraries glog::glog INTERFACE_LINK_LIBRARIES) +- set(_new_libraries) +- foreach(_dep ${_libraries}) +- if(_dep STREQUAL gflags) +- list(APPEND _new_libraries gflags::gflags) +- else() +- list(APPEND _new_libraries ${_dep}) +- endif() +- endforeach() + set_target_properties(glog::glog +- PROPERTIES INTERFACE_LINK_LIBRARIES ${_new_libraries}) ++ PROPERTIES INTERFACE_LINK_LIBRARIES gflags::gflags) + endif() + endif() + diff --git a/env/merlin/HiQsimulator/packages/py-hiqsimulator/package.py b/env/merlin/HiQsimulator/packages/py-hiqsimulator/package.py new file mode 100644 index 0000000..5d609ea --- /dev/null +++ b/env/merlin/HiQsimulator/packages/py-hiqsimulator/package.py @@ -0,0 +1,53 @@ +# Copyright 2013-2022 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) + +# ---------------------------------------------------------------------------- +# If you submit this package back to Spack as a pull request, +# please first remove this boilerplate and all FIXME comments. +# +# This is a template package file for Spack. We've put "FIXME" +# next to all the things you'll want to change. Once you've handled +# them, you can save this file and test your package like this: +# +# spack install py-hiqsimulator +# +# You can edit this file again by typing: +# +# spack edit py-hiqsimulator +# +# See the Spack documentation for more information on packaging. +# ---------------------------------------------------------------------------- + +from spack.package import * + + +class PyHiqsimulator(PythonPackage): + """Huawei HiQ is an open-source software framework for quantum computing. It is based on and compatible with ProjectQ. + It aims at providing tools which facilitate inventing, implementing, testing, debugging, and running quantum algorithms + using either classical hardware or actual quantum devices. You can find more about Huawei HiQ at + http://hiq.huaweicloud.com""" + + homepage = "https://hiqsimulator.readthedocs.io/en/latest/index.html" + + url = "https://github.com/Huawei-HiQ/HiQsimulator/archive/refs/heads/develop.zip" + + maintainers = ["germanne"] + + version('develop', git='https://github.com/Huawei-HiQ/HiQsimulator.git', submodules=True) + + depends_on('py-setuptools@44.1.0', type='build') + + depends_on("cmake", type="build") + depends_on("openmpi", type=("run", "link")) + depends_on("boost+mpi+program_options+numpy+python+system+thread+timer+chrono+atomic", type=("build", "run", "link")) + depends_on("glog", type=("build", "run", "link")) + + patch('cmake-glog.patch') + + def install_options(self, spec, prefix): + # FIXME: Add options to pass to setup.py install + # FIXME: If not needed, delete this function + options = [] + return options diff --git a/env/merlin/HiQsimulator/repo.yaml b/env/merlin/HiQsimulator/repo.yaml new file mode 100644 index 0000000..8108ffb --- /dev/null +++ b/env/merlin/HiQsimulator/repo.yaml @@ -0,0 +1,2 @@ +repo: + namespace: HiQsimulator \ No newline at end of file diff --git a/env/merlin/HiQsimulator/spack.yaml b/env/merlin/HiQsimulator/spack.yaml new file mode 100644 index 0000000..f2fba3b --- /dev/null +++ b/env/merlin/HiQsimulator/spack.yaml @@ -0,0 +1,8 @@ +spack: + include: + - sysconfigs/config.yaml + - sysconfigs/compilers.yaml + - sysconfigs/packages.yaml + repos: + - . + specs: [py-hiqsimulator@develop%gcc] diff --git a/env/merlin/HiQsimulator/sysconfigs/compilers.yaml b/env/merlin/HiQsimulator/sysconfigs/compilers.yaml new file mode 100644 index 0000000..f0662b8 --- /dev/null +++ b/env/merlin/HiQsimulator/sysconfigs/compilers.yaml @@ -0,0 +1,93 @@ +--- +compilers: + - compiler: + environment: {} + extra_rpaths: [] + flags: {} + modules: [] + operating_system: rhel7 + paths: + cc: /opt/psi/Programming/intel/22.2/compiler/2022.1.0/linux/bin/icx + cxx: /opt/psi/Programming/intel/22.2/compiler/2022.1.0/linux/bin/dpcpp + f77: /opt/psi/Programming/intel/22.2/compiler/2022.1.0/linux/bin/ifx + fc: /opt/psi/Programming/intel/22.2/compiler/2022.1.0/linux/bin/ifx + spec: dpcpp@2022.1.0 + target: x86_64 + - compiler: + environment: {} + extra_rpaths: [] + flags: {} + modules: [] + operating_system: rhel7 + paths: + cc: /opt/psi/Programming/intel/22.2/compiler/2022.1.0/linux/bin/intel64/icc + cxx: /opt/psi/Programming/intel/22.2/compiler/2022.1.0/linux/bin/intel64/icpc + f77: /opt/psi/Programming/intel/22.2/compiler/2022.1.0/linux/bin/intel64/ifort + fc: /opt/psi/Programming/intel/22.2/compiler/2022.1.0/linux/bin/intel64/ifort + spec: intel@2021.6.0 + target: x86_64 + - compiler: + environment: {} + extra_rpaths: [] + flags: {} + modules: [] + operating_system: rhel7 + paths: + cc: /opt/psi/Programming/intel/22.2/compiler/2022.1.0/linux/bin/icx + cxx: /opt/psi/Programming/intel/22.2/compiler/2022.1.0/linux/bin/icpx + f77: /opt/psi/Programming/intel/22.2/compiler/2022.1.0/linux/bin/ifx + fc: /opt/psi/Programming/intel/22.2/compiler/2022.1.0/linux/bin/ifx + spec: oneapi@2022.1.0 + target: x86_64 + - compiler: + environment: {} + extra_rpaths: [] + flags: {} + modules: [] + operating_system: rhel7 + paths: + cc: /opt/psi/Programming/gcc/8.3.0/bin/gcc + cxx: /opt/psi/Programming/gcc/8.3.0/bin/g++ + f77: /opt/psi/Programming/gcc/8.3.0/bin/gfortran + fc: /opt/psi/Programming/gcc/8.3.0/bin/gfortran + spec: gcc@8.3.0 + target: x86_64 + - compiler: + environment: {} + extra_rpaths: [] + flags: {} + modules: [] + operating_system: rhel7 + paths: + cc: /opt/psi/Programming/gcc/12.1.0/bin/gcc + cxx: /opt/psi/Programming/gcc/12.1.0/bin/g++ + f77: /opt/psi/Programming/gcc/12.1.0/bin/gfortran + fc: /opt/psi/Programming/gcc/12.1.0/bin/gfortran + spec: gcc@12.1.0 + target: x86_64 + - compiler: + environment: {} + extra_rpaths: [] + flags: {} + modules: [] + operating_system: rhel7 + paths: + cc: /opt/psi/Programming/clang/12.0.0_rhel7/bin/clang + cxx: /opt/psi/Programming/clang/12.0.0_rhel7/bin/clang++ + f77: null + fc: null + spec: clang@12.0.0 + target: x86_64 + - compiler: + environment: {} + extra_rpaths: [] + flags: {} + modules: [] + operating_system: rhel7 + paths: + cc: /opt/psi/Programming/pgi/21.5/Linux_x86_64/21.5/compilers/bin/nvc + cxx: /opt/psi/Programming/pgi/21.5/Linux_x86_64/21.5/compilers/bin/nvc++ + f77: /opt/psi/Programming/pgi/21.5/Linux_x86_64/21.5/compilers/bin/nvfortran + fc: /opt/psi/Programming/pgi/21.5/Linux_x86_64/21.5/compilers/bin/nvfortran + spec: nvhpc@21.5 + target: x86_64 \ No newline at end of file diff --git a/env/merlin/HiQsimulator/sysconfigs/config.yaml b/env/merlin/HiQsimulator/sysconfigs/config.yaml new file mode 100644 index 0000000..15a402d --- /dev/null +++ b/env/merlin/HiQsimulator/sysconfigs/config.yaml @@ -0,0 +1,6 @@ +config: + build_stage: + - /data/user/$USER/spack/spack-stages + install_tree: + root: /data/user/$USER/spack/spack-install + source_cache: /data/user/$USER/spack/spack-source_cache \ No newline at end of file diff --git a/env/merlin/HiQsimulator/sysconfigs/packages.yaml b/env/merlin/HiQsimulator/sysconfigs/packages.yaml new file mode 100644 index 0000000..c102e6d --- /dev/null +++ b/env/merlin/HiQsimulator/sysconfigs/packages.yaml @@ -0,0 +1,289 @@ +--- +packages: + all: + compiler: + - gcc@12.1.0 + target: + - haswell + providers: + pkgconfig: [pkg-config] + binutils: + buildable: false + externals: + - prefix: /usr + spec: binutils@2.38 + bzip2: + buildable: false + externals: + - prefix: /usr + spec: bzip2@1.0.6 + cpio: + buildable: false + externals: + - prefix: /usr + spec: cpio@2.11 + curl: + buildable: false + externals: + - prefix: /usr + spec: curl@7.29.0 + cvs: + buildable: false + externals: + - prefix: /usr + spec: cvs@1.11.23 + diffutils: + buildable: false + externals: + - prefix: /usr + spec: diffutils@3.3 + doxygen: + buildable: false + externals: + - prefix: /usr + spec: doxygen@1.8.5 + expat: + buildable: false + externals: + - prefix: /usr + spec: expat@1.6.0 + file: + externals: + - prefix: /usr + spec: file@5.11 + findutils: + buildable: false + externals: + - prefix: /usr + spec: findutils@4.5.11 + flex: + buildable: false + externals: + - prefix: /usr + spec: flex@2.5.37+lex + # E.G: only available from already downloaded source, so I put it here + gams: + externals: + - prefix: /opt/psi/Tools/GAMS/31.1.1/gams31.1_linux_x64_64_sfx + spec: gams@31.1.1 + gawk: + buildable: false + externals: + - prefix: /usr + spec: gawk@4.0.2 + ghostscript: + buildable: false + externals: + - prefix: /usr + spec: ghostscript@9.25 + git: + buildable: false + externals: + - prefix: /usr + spec: git@1.8.3.1~tcltk + glew: + buildable: false + externals: + - prefix: /usr + spec: glew@1.10.0 + gmake: + buildable: false + externals: + - prefix: /usr + spec: gmake@3.82 + groff: + buildable: false + externals: + - prefix: /usr + spec: groff@1.22.2 + hcoll: + buildable: false + externals: + - prefix: /opt/mellanox/hcoll + spec: hcoll@3.9.1927 + fftw: + buildable: false + externals: + - prefix: /usr + spec: fftw@3.3.3 + intel-oneapi-mkl: + buildable: false + externals: + - prefix: /opt/psi/Programming/intel/22.2 + spec: intel-oneapi-mkl@2022.1.0 + intel-oneapi-mpi: + buildable: false + externals: + - prefix: /opt/psi/Programming/intel/22.2 + spec: intel-oneapi-mpi@2021.6.0 + libcroco: + buildable: false + externals: + - prefix: /usr + spec: libcroco@0.6.13 + libevent: + buildable: false + externals: + - prefix: /usr + spec: libevent@2.0 + libfabric: + buildable: false + externals: + - prefix: /usr + spec: libfabric@1.10.2 + libfuse: + buildable: false + externals: + - prefix: /usr + spec: libfuse@3.6.1 + libice: + buildable: false + externals: + - prefix: /usr + spec: libice@6.3.0 + libjpeg-turbo: + buildable: false + externals: + - prefix: /usr + spec: libjpeg-turbo@62.1.0 + libpthread: + buildable: false + externals: + - prefix: /usr + spec: libpthread@2.17 + libpthread-stubs: + buildable: false + externals: + - prefix: /usr + spec: libpthread-stubs@0.4 + libreadline: + buildable: false + externals: + - prefix: /usr + spec: libreadline@6.2 + libtiff: + buildable: false + externals: + - prefix: /usr + spec: libtiff@5.2.0 + libx11: + buildable: false + externals: + - prefix: /usr + spec: libx11@6.3.0 + libxext: + buildable: false + externals: + - prefix: /usr + spec: libxext@6.4.0 + libxft: + buildable: false + externals: + - prefix: /usr + spec: libxft@2.3.2 + libxpm: + buildable: false + externals: + - prefix: /usr + spec: libxpm@4.11.0 + libxt: + buildable: false + externals: + - prefix: /usr + spec: libxt@6.0.0 + m4: + buildable: false + externals: + - prefix: /usr + spec: m4@1.4.16 + # E.G: only available from already downloaded source, so I put it here + mxm: + buildable: false + externals: + - prefix: /opt/psi/System/mxm/3.6.3104 + spec: mxm@3.6.3104 + ncurses: + buildable: false + externals: + - prefix: /usr + spec: ncurses@5.9.20130511 + nlohmann-json: + buildable: false + externals: + - prefix: /usr + spec: nlohmann-json@3.10.5 + numactl: + buildable: false + externals: + - prefix: /usr + spec: numactl@2.0.14 + openmpi: + buildable: false + externals: + - prefix: /opt/psi/Compiler/openmpi/4.1.3_slurm/gcc/11.2.0 + spec: openmpi@4.1.4 + openssh: + buildable: false + externals: + - prefix: /usr + spec: openssh@7.4p1 + openssl: + buildable: false + externals: + - prefix: /usr + spec: openssl@1.0.2k-fips + pcre: + buildable: false + externals: + - prefix: /usr + spec: pcre@8.32 + pkg-config: + buildable: false + externals: + - prefix: /usr + spec: pkg-config@0.27.1 + rsync: + buildable: false + externals: + - prefix: /usr + spec: rsync@3.1.2 + ruby: + buildable: false + externals: + - prefix: /usr + spec: ruby@2.0.0p648 + sed: + buildable: false + externals: + - prefix: /usr + spec: sed@4.2.2 + sqlite: + buildable: false + externals: + - prefix: /usr + spec: sqlite@3.7.17 + subversion: + buildable: false + externals: + - prefix: /usr + spec: subversion@1.7.14 + tar: + buildable: false + externals: + - prefix: /usr + spec: tar@1.26 + texinfo: + buildable: false + externals: + - prefix: /usr + spec: texinfo@5.1 + xerces-c: + buildable: false + externals: + - prefix: /usr + spec: xerces-c@3.1 + xz: + buildable: false + externals: + - prefix: /usr + spec: xz@5.2.2 \ No newline at end of file