Don't inject import statements in package recipes
Remove a hack done by RepoLoader, which was injecting an extra ``` from spack.package import * ``` at the beginning of each package.py
This commit is contained in:
parent
901cea7a54
commit
112e47cc23
@ -81,43 +81,6 @@ def namespace_from_fullname(fullname):
|
|||||||
return namespace
|
return namespace
|
||||||
|
|
||||||
|
|
||||||
class _PrependFileLoader(importlib.machinery.SourceFileLoader):
|
|
||||||
def __init__(self, fullname, path, prepend=None):
|
|
||||||
super(_PrependFileLoader, self).__init__(fullname, path)
|
|
||||||
self.prepend = prepend
|
|
||||||
|
|
||||||
def path_stats(self, path):
|
|
||||||
stats = super(_PrependFileLoader, self).path_stats(path)
|
|
||||||
if self.prepend:
|
|
||||||
stats["size"] += len(self.prepend) + 1
|
|
||||||
return stats
|
|
||||||
|
|
||||||
def get_data(self, path):
|
|
||||||
data = super(_PrependFileLoader, self).get_data(path)
|
|
||||||
if path != self.path or self.prepend is None:
|
|
||||||
return data
|
|
||||||
else:
|
|
||||||
return self.prepend.encode() + b"\n" + data
|
|
||||||
|
|
||||||
|
|
||||||
class RepoLoader(_PrependFileLoader):
|
|
||||||
"""Loads a Python module associated with a package in specific repository"""
|
|
||||||
|
|
||||||
#: Code in ``_package_prepend`` is prepended to imported packages.
|
|
||||||
#:
|
|
||||||
#: Spack packages are expected to call `from spack.package import *`
|
|
||||||
#: themselves, but we are allowing a deprecation period before breaking
|
|
||||||
#: external repos that don't do this yet.
|
|
||||||
_package_prepend = "from spack.package import *"
|
|
||||||
|
|
||||||
def __init__(self, fullname, repo, package_name):
|
|
||||||
self.repo = repo
|
|
||||||
self.package_name = package_name
|
|
||||||
self.package_py = repo.filename_for_package_name(package_name)
|
|
||||||
self.fullname = fullname
|
|
||||||
super().__init__(self.fullname, self.package_py, prepend=self._package_prepend)
|
|
||||||
|
|
||||||
|
|
||||||
class SpackNamespaceLoader:
|
class SpackNamespaceLoader:
|
||||||
def create_module(self, spec):
|
def create_module(self, spec):
|
||||||
return SpackNamespace(spec.name)
|
return SpackNamespace(spec.name)
|
||||||
@ -187,7 +150,8 @@ def compute_loader(self, fullname):
|
|||||||
# With 2 nested conditionals we can call "repo.real_name" only once
|
# With 2 nested conditionals we can call "repo.real_name" only once
|
||||||
package_name = repo.real_name(module_name)
|
package_name = repo.real_name(module_name)
|
||||||
if package_name:
|
if package_name:
|
||||||
return RepoLoader(fullname, repo, package_name)
|
module_path = repo.filename_for_package_name(package_name)
|
||||||
|
return importlib.machinery.SourceFileLoader(fullname, module_path)
|
||||||
|
|
||||||
# We are importing a full namespace like 'spack.pkg.builtin'
|
# We are importing a full namespace like 'spack.pkg.builtin'
|
||||||
if fullname == repo.full_namespace:
|
if fullname == repo.full_namespace:
|
||||||
|
@ -20,6 +20,8 @@
|
|||||||
_p1 = (
|
_p1 = (
|
||||||
"p1",
|
"p1",
|
||||||
"""\
|
"""\
|
||||||
|
from spack.package import *
|
||||||
|
|
||||||
class P1(Package):
|
class P1(Package):
|
||||||
version("1.0")
|
version("1.0")
|
||||||
|
|
||||||
@ -35,6 +37,8 @@ class P1(Package):
|
|||||||
_p2 = (
|
_p2 = (
|
||||||
"p2",
|
"p2",
|
||||||
"""\
|
"""\
|
||||||
|
from spack.package import *
|
||||||
|
|
||||||
class P2(Package):
|
class P2(Package):
|
||||||
version("1.0")
|
version("1.0")
|
||||||
|
|
||||||
@ -48,6 +52,8 @@ class P2(Package):
|
|||||||
_p3 = (
|
_p3 = (
|
||||||
"p3",
|
"p3",
|
||||||
"""\
|
"""\
|
||||||
|
from spack.package import *
|
||||||
|
|
||||||
class P3(Package):
|
class P3(Package):
|
||||||
version("1.0")
|
version("1.0")
|
||||||
|
|
||||||
@ -58,6 +64,8 @@ class P3(Package):
|
|||||||
_i1 = (
|
_i1 = (
|
||||||
"i1",
|
"i1",
|
||||||
"""\
|
"""\
|
||||||
|
from spack.package import *
|
||||||
|
|
||||||
class I1(Package):
|
class I1(Package):
|
||||||
version("1.0")
|
version("1.0")
|
||||||
|
|
||||||
@ -73,6 +81,8 @@ class I1(Package):
|
|||||||
_i2 = (
|
_i2 = (
|
||||||
"i2",
|
"i2",
|
||||||
"""\
|
"""\
|
||||||
|
from spack.package import *
|
||||||
|
|
||||||
class I2(Package):
|
class I2(Package):
|
||||||
version("1.0")
|
version("1.0")
|
||||||
|
|
||||||
@ -89,6 +99,8 @@ class I2(Package):
|
|||||||
_p4 = (
|
_p4 = (
|
||||||
"p4",
|
"p4",
|
||||||
"""\
|
"""\
|
||||||
|
from spack.package import *
|
||||||
|
|
||||||
class P4(Package):
|
class P4(Package):
|
||||||
version("1.0")
|
version("1.0")
|
||||||
|
|
||||||
|
@ -462,6 +462,8 @@ def test_environment_with_version_range_in_compiler_doesnt_fail(tmp_path):
|
|||||||
_pkga = (
|
_pkga = (
|
||||||
"a0",
|
"a0",
|
||||||
"""\
|
"""\
|
||||||
|
from spack.package import *
|
||||||
|
|
||||||
class A0(Package):
|
class A0(Package):
|
||||||
version("1.2")
|
version("1.2")
|
||||||
version("1.1")
|
version("1.1")
|
||||||
@ -475,6 +477,8 @@ class A0(Package):
|
|||||||
_pkgb = (
|
_pkgb = (
|
||||||
"b0",
|
"b0",
|
||||||
"""\
|
"""\
|
||||||
|
from spack.package import *
|
||||||
|
|
||||||
class B0(Package):
|
class B0(Package):
|
||||||
version("1.2")
|
version("1.2")
|
||||||
version("1.1")
|
version("1.1")
|
||||||
@ -485,6 +489,8 @@ class B0(Package):
|
|||||||
_pkgc = (
|
_pkgc = (
|
||||||
"c0",
|
"c0",
|
||||||
"""\
|
"""\
|
||||||
|
from spack.package import *
|
||||||
|
|
||||||
class C0(Package):
|
class C0(Package):
|
||||||
version("1.2")
|
version("1.2")
|
||||||
version("1.1")
|
version("1.1")
|
||||||
@ -497,6 +503,8 @@ class C0(Package):
|
|||||||
_pkgd = (
|
_pkgd = (
|
||||||
"d0",
|
"d0",
|
||||||
"""\
|
"""\
|
||||||
|
from spack.package import *
|
||||||
|
|
||||||
class D0(Package):
|
class D0(Package):
|
||||||
version("1.2")
|
version("1.2")
|
||||||
version("1.1")
|
version("1.1")
|
||||||
@ -510,6 +518,8 @@ class D0(Package):
|
|||||||
_pkge = (
|
_pkge = (
|
||||||
"e0",
|
"e0",
|
||||||
"""\
|
"""\
|
||||||
|
from spack.package import *
|
||||||
|
|
||||||
class E0(Package):
|
class E0(Package):
|
||||||
tags = ["tag1", "tag2"]
|
tags = ["tag1", "tag2"]
|
||||||
|
|
||||||
|
@ -188,6 +188,8 @@ def repo_with_changing_recipe(tmp_path_factory, mutable_mock_repo):
|
|||||||
|
|
||||||
packages_dir = repo_dir / "packages"
|
packages_dir = repo_dir / "packages"
|
||||||
root_pkg_str = """
|
root_pkg_str = """
|
||||||
|
from spack.package import *
|
||||||
|
|
||||||
class Root(Package):
|
class Root(Package):
|
||||||
homepage = "http://www.example.com"
|
homepage = "http://www.example.com"
|
||||||
url = "http://www.example.com/root-1.0.tar.gz"
|
url = "http://www.example.com/root-1.0.tar.gz"
|
||||||
@ -202,6 +204,8 @@ class Root(Package):
|
|||||||
package_py.write_text(root_pkg_str)
|
package_py.write_text(root_pkg_str)
|
||||||
|
|
||||||
changing_template = """
|
changing_template = """
|
||||||
|
from spack.package import *
|
||||||
|
|
||||||
class Changing(Package):
|
class Changing(Package):
|
||||||
homepage = "http://www.example.com"
|
homepage = "http://www.example.com"
|
||||||
url = "http://www.example.com/changing-1.0.tar.gz"
|
url = "http://www.example.com/changing-1.0.tar.gz"
|
||||||
|
@ -148,6 +148,8 @@ def test_version_type_validation():
|
|||||||
_pkgx = (
|
_pkgx = (
|
||||||
"x",
|
"x",
|
||||||
"""\
|
"""\
|
||||||
|
from spack.package import *
|
||||||
|
|
||||||
class X(Package):
|
class X(Package):
|
||||||
version("1.3")
|
version("1.3")
|
||||||
version("1.2")
|
version("1.2")
|
||||||
@ -166,6 +168,8 @@ class X(Package):
|
|||||||
_pkgy = (
|
_pkgy = (
|
||||||
"y",
|
"y",
|
||||||
"""\
|
"""\
|
||||||
|
from spack.package import *
|
||||||
|
|
||||||
class Y(Package):
|
class Y(Package):
|
||||||
version("2.1")
|
version("2.1")
|
||||||
version("2.0")
|
version("2.0")
|
||||||
|
@ -1,3 +1,5 @@
|
|||||||
|
from spack.package import *
|
||||||
|
|
||||||
class {{ cls_name }}(Package):
|
class {{ cls_name }}(Package):
|
||||||
homepage = "http://www.example.com"
|
homepage = "http://www.example.com"
|
||||||
url = "http://www.example.com/root-1.0.tar.gz"
|
url = "http://www.example.com/root-1.0.tar.gz"
|
||||||
|
Loading…
Reference in New Issue
Block a user