summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoriarspider <iarspider@gmail.com>2022-03-25 02:30:33 +0100
committerGitHub <noreply@github.com>2022-03-24 19:30:33 -0600
commit4702b490949aaee2f56326747c3673e7a2bc9ab5 (patch)
tree9927e99f73f4eeb0e6e8369dca82d25bb991e8e1
parent0168047429b46ea08ccdfee59dc0be462a6095c6 (diff)
downloadspack-4702b490949aaee2f56326747c3673e7a2bc9ab5.tar.gz
spack-4702b490949aaee2f56326747c3673e7a2bc9ab5.tar.bz2
spack-4702b490949aaee2f56326747c3673e7a2bc9ab5.tar.xz
spack-4702b490949aaee2f56326747c3673e7a2bc9ab5.zip
Sherpa: add several new variants used by CMS (#29338)
-rw-r--r--var/spack/repos/builtin/packages/blackhat/package.py31
-rw-r--r--var/spack/repos/builtin/packages/sherpa/package.py76
2 files changed, 85 insertions, 22 deletions
diff --git a/var/spack/repos/builtin/packages/blackhat/package.py b/var/spack/repos/builtin/packages/blackhat/package.py
new file mode 100644
index 0000000000..3ad851e12e
--- /dev/null
+++ b/var/spack/repos/builtin/packages/blackhat/package.py
@@ -0,0 +1,31 @@
+# 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)
+
+from spack import *
+
+
+class Blackhat(AutotoolsPackage):
+ """Blackhat MC generator"""
+
+ homepage = "https://blackhat.hepforge.org"
+ git = "https://github.com/cms-externals/blackhat.git"
+
+ version('0.9.9', branch='cms/v0.9.9')
+
+ depends_on('qd')
+ depends_on('python')
+ extends('python')
+
+ def patch(self):
+ filter_file('else return Cached_OLHA_user_normal',
+ 'else return new Cached_OLHA_user_normal',
+ 'src/cached_OLHA.cpp')
+
+ def configure_args(self):
+ return ['--with-QDpath=' + self.spec['qd'].prefix,
+ '--enable-pythoninterface=no']
+
+ def setup_build_environment(self, env):
+ env.append_flags('CXXFLAGS', '-Wno-deprecated')
diff --git a/var/spack/repos/builtin/packages/sherpa/package.py b/var/spack/repos/builtin/packages/sherpa/package.py
index aa815a43a2..5e12fb9e82 100644
--- a/var/spack/repos/builtin/packages/sherpa/package.py
+++ b/var/spack/repos/builtin/packages/sherpa/package.py
@@ -59,6 +59,13 @@ class Sherpa(AutotoolsPackage):
variant('lhapdf', default=True, description='Enable LHAPDF support')
variant('gzip', default=False, description='Enable gzip support')
variant('pythia', default=True, description='Enable fragmentation/decay interface to Pythia')
+ variant('blackhat', default=False, description='Enable BLACKHAT support')
+ variant('ufo', default=False, description='Enable UFO support')
+ # cernlib not yet in spack
+ variant('hztool', default=False, description='Enable HZTOOL support')
+ # variant('cernlib', default=False, description='Enable CERNLIB support')
+
+ variant('cms', default=False, description="Append CXXFLAGS used by CMS experiment")
# Note that the delphes integration seems utterly broken: https://sherpa.hepforge.org/trac/ticket/305
@@ -83,6 +90,9 @@ class Sherpa(AutotoolsPackage):
depends_on('lhapdf', when='+lhapdf')
depends_on('gzip', when='+gzip')
depends_on('pythia6', when='+pythia')
+ depends_on('blackhat', when='+blackhat')
+ depends_on('hztool', when='+hztool')
+ # depends_on('cernlib', when='+cernlib')
for std in _cxxstd_values:
depends_on('root cxxstd=' + std, when='+root cxxstd=' + std)
@@ -100,30 +110,52 @@ class Sherpa(AutotoolsPackage):
args.append('--enable-hepevtsize=200000')
args.append('--with-sqlite3=' + self.spec['sqlite'].prefix)
args.extend(self.enable_or_disable('mpi'))
- if self.spec.satisfies('+python'):
- args.append('--enable-pyext')
+ args.extend(self.enable_or_disable('pyext', variant='python'))
args.extend(self.enable_or_disable('analysis'))
args.extend(self.enable_or_disable('lhole'))
args.extend(self.enable_or_disable('gzip'))
args.extend(self.enable_or_disable('pythia'))
- if self.spec.satisfies('+hepmc2'):
- args.append('--enable-hepmc2=' + self.spec['hepmc'].prefix)
- if self.spec.satisfies('+hepmc3'):
- args.append('--enable-hepmc3=' + self.spec['hepmc3'].prefix)
- if self.spec.satisfies('+rivet'):
- args.append('--enable-rivet=' + self.spec['rivet'].prefix)
- if self.spec.satisfies('+fastjet'):
- args.append('--enable-fastjet=' + self.spec['fastjet'].prefix)
- if self.spec.satisfies('+openloops'):
- args.append('--enable-openloops=' + self.spec['openloops'].prefix)
- if self.spec.satisfies('+recola'):
- args.append('--enable-recola=' + self.spec['recola'].prefix)
- if self.spec.satisfies('+root'):
- args.append('--enable-root=' + self.spec['root'].prefix)
- if self.spec.satisfies('+lhapdf'):
- args.append('--enable-lhapdf=' + self.spec['lhapdf'].prefix)
- if self.spec.satisfies('+hztool'):
- args.append('--enable-hztool=' + self.spec['hztool'].prefix)
- if self.spec.satisfies('+cernlib'):
- args.append('--enable-cernlib=' + self.spec['cernlib'].prefix)
+ hepmc_root = lambda x: self.spec['hepmc'].prefix
+ args.extend(self.enable_or_disable('hepmc2', activation_value=hepmc_root))
+ if self.spec.satisfies('@2.2.13:'):
+ args.extend(self.enable_or_disable('hepmc3', activation_value='prefix'))
+ args.extend(self.enable_or_disable('rivet', activation_value='prefix'))
+ args.extend(self.enable_or_disable('lhapdf', activation_value='prefix'))
+ else:
+ # See https://gitlab.com/sherpa-team/sherpa/-/issues/348
+ if self.spec.satisfies('+hepmc3'):
+ args.append('--enable-hepmc3=' + self.spec['hepmc3'].prefix)
+ if self.spec.satisfies('+rivet'):
+ args.append('--enable-rivet=' + self.spec['rivet'].prefix)
+ if self.spec.satisfies('+lhapdf'):
+ args.append('--enable-lhapdf=' + self.spec['lhapdf'].prefix)
+
+ args.extend(self.enable_or_disable('fastjet', activation_value='prefix'))
+ args.extend(self.enable_or_disable('openloops', activation_value='prefix'))
+ args.extend(self.enable_or_disable('recola', activation_value='prefix'))
+ args.extend(self.enable_or_disable('root', activation_value='prefix'))
+
+ args.extend(self.enable_or_disable('hztool', activation_value='prefix'))
+ # args.extend(self.enable_or_disable('cernlib', activation_value='prefix'))
+ args.extend(self.enable_or_disable('blackhat', activation_value='prefix'))
+ args.extend(self.enable_or_disable('ufo'))
+
+ if self.spec.satisfies('+mpi'):
+ args.append('CC=' + self.spec['mpi'].mpicc)
+ args.append('MPICXX=' + self.spec['mpi'].mpicxx)
+ args.append('CXX=' + self.spec['mpi'].mpicxx)
+ args.append('FC=' + self.spec['mpi'].mpifc)
+
return args
+
+ def flag_handler(self, name, flags):
+ flags = list(flags)
+ if name == 'cxxflags':
+ flags.append('-std=c++' + self.spec.variants['cxxstd'].value)
+
+ if '+cms' in self.spec:
+ flags.extend(['-fuse-cxa-atexit', '-O2'])
+ if self.spec.target.family == 'x86_64':
+ flags.append('-m64')
+
+ return (None, None, flags)