root: external find can now determine variants (#25427)
This commit is contained in:
parent
0b7aff2ad7
commit
c02539bd29
@ -326,6 +326,79 @@ def determine_version(cls, exe):
|
||||
# into the format used in this recipe (6.22.06)
|
||||
return output.strip().replace('/', '.')
|
||||
|
||||
@classmethod
|
||||
def determine_variants(cls, exes, version_str):
|
||||
v = [] # list of determined variants
|
||||
# there is a fairly direct mapping between build options ( which
|
||||
# root-config helpfully outputs) and variants
|
||||
output = Executable(exes[0])('--features', output=str, error=str)
|
||||
f = set(output.strip().split()) # features as reported by root-config
|
||||
# only multivalued variant: cxxstd
|
||||
if "cxx11" in f:
|
||||
v.append("cxxstd=11")
|
||||
elif "cxx14" in f:
|
||||
v.append("cxxstd=14")
|
||||
elif "cxx17" in f:
|
||||
v.append("cxxstd=17")
|
||||
|
||||
# helper function: check if featurename is in features, and if it is,
|
||||
# append variantname to variants. featurename may be a list/tuple, in
|
||||
# which case the variant is only added if all of them are present
|
||||
def _add_variant(variants, features, featurename, variantname):
|
||||
if isinstance(featurename, str):
|
||||
if featurename in features:
|
||||
variants.append('%s' % variantname)
|
||||
else:
|
||||
variants.append('~%s' % variantname[1:])
|
||||
else:
|
||||
if set(featurename).issubset(features):
|
||||
variants.append('%s' % variantname)
|
||||
else:
|
||||
variants.append('~%s' % variantname[1:])
|
||||
|
||||
_add_variant(v, f, 'cocoa', '+aqua')
|
||||
_add_variant(v, f, 'davix', '+davix')
|
||||
_add_variant(v, f, 'dcache', '+dcache')
|
||||
_add_variant(v, f, 'fftw3', '+fftw')
|
||||
_add_variant(v, f, 'fitsio', '+fits')
|
||||
_add_variant(v, f, ('ftgl', 'opengl'), '+opengl')
|
||||
_add_variant(v, f, 'gdml', '+gdml')
|
||||
_add_variant(v, f, 'mathmore', '+math')
|
||||
_add_variant(v, f, 'gviz', '+graphviz')
|
||||
_add_variant(v, f, 'http', '+http')
|
||||
_add_variant(v, f, ('imt', 'tbb'), '+tbb')
|
||||
_add_variant(v, f, 'jemalloc', '+jemalloc')
|
||||
_add_variant(v, f, 'memstat', '+memstat')
|
||||
_add_variant(v, f, ('minuit', 'minuit2'), '+minuit')
|
||||
_add_variant(v, f, 'mlp', '+mlp')
|
||||
_add_variant(v, f, 'mysql', '+mysql')
|
||||
_add_variant(v, f, 'oracle', '+oracle')
|
||||
_add_variant(v, f, 'pgsql', '+postgres')
|
||||
_add_variant(v, f, 'pythia6', '+pythia6')
|
||||
_add_variant(v, f, 'pythia8', '+pythia8')
|
||||
_add_variant(v, f, 'pyroot', '+python')
|
||||
_add_variant(v, f, ('qt', 'qtgsi'), '+qt4')
|
||||
_add_variant(v, f, 'r', '+r')
|
||||
_add_variant(v, f, 'roofit', '+roofit')
|
||||
_add_variant(v, f, ('root7', 'webui'), '+root7')
|
||||
_add_variant(v, f, 'rpath', '+rpath')
|
||||
_add_variant(v, f, 'shadowpw', '+shadow')
|
||||
_add_variant(v, f, 'spectrum', '+spectrum')
|
||||
_add_variant(v, f, 'sqlite', '+sqlite')
|
||||
_add_variant(v, f, 'ssl', '+ssl')
|
||||
_add_variant(v, f, 'table', '+table')
|
||||
_add_variant(v, f, 'thread', '+threads')
|
||||
_add_variant(v, f, 'tmva', '+tmva')
|
||||
_add_variant(v, f, 'unuran', '+unuran')
|
||||
_add_variant(v, f, 'vc', '+vc')
|
||||
_add_variant(v, f, 'vdt', '+vdt')
|
||||
_add_variant(v, f, 'veccore', '+veccore')
|
||||
_add_variant(v, f, 'vmc', '+vmc')
|
||||
_add_variant(v, f, ('x11', 'xft'), '+x')
|
||||
_add_variant(v, f, 'xml', '+xml')
|
||||
_add_variant(v, f, 'xrootd', '+xrootd')
|
||||
return " ".join(v)
|
||||
|
||||
def cmake_args(self):
|
||||
spec = self.spec
|
||||
define = self.define
|
||||
|
Loading…
Reference in New Issue
Block a user