Commit b15339ab authored by Lorenz Huedepohl's avatar Lorenz Huedepohl
Browse files

Support for special-cased PGI compilers

parent f6d2d016
......@@ -194,9 +194,14 @@ def mpcdf_enable_repositories(api_url, project, package, verbose=False, filter_r
raise SystemExit(1)
compilers = try_get_attribute(package, "compiler_modules", with_project=True)
all_compilers = try_get_attribute(None, "compiler_modules")
mpis = try_get_attribute(package, "mpi_modules", with_project=True)
cudas = try_get_attribute(package, "cuda_modules", with_project=True)
pgis = try_get_attribute(package, "pgi_modules", with_project=True)
all_compilers = try_get_attribute(None, "compiler_modules")
all_mpis = try_get_attribute(None, "mpi_modules")
all_cudas = try_get_attribute(None, "cuda_modules")
all_pgis = try_get_attribute(None, "pgi_modules")
default_compilers = try_get_attribute(None, "default_compiler")
default_mpis = try_get_attribute(None, "default_mpi")
......@@ -213,7 +218,7 @@ def mpcdf_enable_repositories(api_url, project, package, verbose=False, filter_r
print("Enabling", name)
def actual_compilers():
for compiler in compilers:
for compiler in (c for c in compilers if c in all_compilers):
if compiler == "intel":
for intel_compiler in filter(lambda cc: cc.startswith("intel"), all_compilers):
yield intel_compiler
......@@ -227,7 +232,7 @@ def mpcdf_enable_repositories(api_url, project, package, verbose=False, filter_r
yield compiler
def actual_mpis():
for mpi in mpis:
for mpi in (m for m in mpis if m in all_mpis):
if mpi == "impi":
for impi in filter(lambda cc: cc.startswith("impi"), mpis):
yield impi
......@@ -238,13 +243,17 @@ def mpcdf_enable_repositories(api_url, project, package, verbose=False, filter_r
yield mpi
def actual_cudas():
for cuda in cudas:
for cuda in (c for c in cudas if c in all_cudas):
if cuda == "default_cuda":
for default_cuda in default_cudas:
yield default_cuda
else:
yield cuda
def actual_pgis():
for pgi in (p for p in pgis if p in all_pgis):
yield pgi
for flag in enable_repos:
if flag == "system":
......@@ -269,6 +278,14 @@ def mpcdf_enable_repositories(api_url, project, package, verbose=False, filter_r
if valid_cuda(cuda, compiler) and valid_mpi(compiler, mpi):
enable(cuda + "_" + mpi + "_" + compiler)
if flag == "pgi":
for pgi in actual_pgis():
enable(pgi)
if flag == "pgi_mpi":
for mpi, pgi in product(actual_mpis(), actual_pgis()):
enable(mpi + "_" + pgi)
if len(build.getchildren()) > 0:
build.getchildren()[-1].tail = "\n "
......@@ -287,6 +304,7 @@ def mpcdf_setup_repositories(api_url, project, distribution=None, parent=None, p
compilers = list(get_attribute_values(api_url, project, None, "MPCDF:compiler_modules"))
mpis = list(get_attribute_values(api_url, project, None, "MPCDF:mpi_modules"))
cudas = list(get_attribute_values(api_url, project, None, "MPCDF:cuda_modules"))
pgis = list(get_attribute_values(api_url, project, None, "MPCDF:pgi_modules"))
if distribution is None:
# Get existing value from project meta
......@@ -388,7 +406,7 @@ def mpcdf_setup_repositories(api_url, project, distribution=None, parent=None, p
else:
repo("System", ("distributions", distribution))
for compiler in compilers:
for compiler in compilers + pgis:
repo(compiler, (project, "System"), compiler=True)
for mpi in filter(partial(valid_mpi, compiler), mpis):
......
......@@ -18,9 +18,11 @@ import osc.cmdln
help="Restrict the set of MPI implementations to use")
@osc.cmdln.option('--cuda-modules', nargs=1,
help="Restrict the set of CUDA implementations to use")
@osc.cmdln.option('--pgi-modules', nargs=1,
help="Restrict the set of PGI compilers to use")
@osc.cmdln.option('--set', nargs=1, metavar="FLAGS",
help="Modify the set of enabled repositories, without this the current setup is displayed. "
"FLAGS is a comma-separated list of a subset of 'system', 'compilers', 'mpi', 'cuda', 'cuda_mpi'")
"FLAGS is a comma-separated list of a subset of 'system', 'compilers', 'mpi', 'cuda', 'cuda_mpi', 'pgi', 'pgi_mpi'")
@osc.cmdln.option('--disable', action="store_true", metavar="FLAGS",
help="Disable building this package")
@osc.cmdln.alias("mpcdf_enable_repos")
......@@ -80,9 +82,10 @@ def do_mpcdf_enable_repositories(self, subcmd, opts, *args):
print("Removing attribute", attribute_name, "from package")
mpcdf_common.remove_attribute(api_url, project, package, attribute_name)
set_or_remove(opts.compiler_modules, "MPCDF:compiler_modules")
set_or_remove(opts.mpi_modules, "MPCDF:mpi_modules")
set_or_remove(opts.cuda_modules, "MPCDF:cuda_modules")
set_or_remove(opts.compiler_modules, "MPCDF:compiler_modules")
set_or_remove(opts.pgi_modules, "MPCDF:pgi_modules")
if opts.recreate or opts.set or opts.disable:
mpcdf_common.mpcdf_enable_repositories(api_url, project, package, verbose=True)
......@@ -110,5 +113,6 @@ def do_mpcdf_enable_repositories(self, subcmd, opts, *args):
print_attr("- Subset of compiler modules set to:", "MPCDF:compiler_modules")
print_attr("- Subset of MPI modules set to:", "MPCDF:mpi_modules")
print_attr("- Subset of CUDA modules set to:", "MPCDF:cuda_modules")
print_attr("- Subset of PGI modules set to:", "MPCDF:pgi_modules")
else:
print("Disabled")
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment