More perl support.
This commit is contained in:
parent
814960809c
commit
2231a78816
1 changed files with 41 additions and 17 deletions
|
@ -985,6 +985,26 @@ def _declared_deps_from_cpanfile(session, fixers):
|
||||||
yield from _read_cpanfile(session, ["--test"], "test", fixers)
|
yield from _read_cpanfile(session, ["--test"], "test", fixers)
|
||||||
|
|
||||||
|
|
||||||
|
def _declared_deps_from_meta_yml(f):
|
||||||
|
# See http://module-build.sourceforge.net/META-spec-v1.4.html for
|
||||||
|
# the specification of the format.
|
||||||
|
import ruamel.yaml
|
||||||
|
import ruamel.yaml.reader
|
||||||
|
|
||||||
|
try:
|
||||||
|
data = ruamel.yaml.load(f, ruamel.yaml.SafeLoader)
|
||||||
|
except ruamel.yaml.reader.ReaderError as e:
|
||||||
|
warnings.warn("Unable to parse META.yml: %s" % e)
|
||||||
|
return
|
||||||
|
for require in data.get("requires", []):
|
||||||
|
yield "core", PerlModuleRequirement(require)
|
||||||
|
for require in data.get("build_requires", []):
|
||||||
|
yield "build", PerlModuleRequirement(require)
|
||||||
|
for require in data.get("configure_requires", []):
|
||||||
|
yield "build", PerlModuleRequirement(require)
|
||||||
|
# TODO(jelmer): recommends
|
||||||
|
|
||||||
|
|
||||||
class Make(BuildSystem):
|
class Make(BuildSystem):
|
||||||
|
|
||||||
name = "make"
|
name = "make"
|
||||||
|
@ -1105,24 +1125,9 @@ class Make(BuildSystem):
|
||||||
something = False
|
something = False
|
||||||
# TODO(jelmer): Split out the perl-specific stuff?
|
# TODO(jelmer): Split out the perl-specific stuff?
|
||||||
if os.path.exists(os.path.join(self.path, "META.yml")):
|
if os.path.exists(os.path.join(self.path, "META.yml")):
|
||||||
# See http://module-build.sourceforge.net/META-spec-v1.4.html for
|
|
||||||
# the specification of the format.
|
|
||||||
import ruamel.yaml
|
|
||||||
import ruamel.yaml.reader
|
|
||||||
|
|
||||||
with open(os.path.join(self.path, "META.yml"), "rb") as f:
|
with open(os.path.join(self.path, "META.yml"), "rb") as f:
|
||||||
try:
|
yield from _declared_deps_from_meta_yml(f)
|
||||||
data = ruamel.yaml.load(f, ruamel.yaml.SafeLoader)
|
something = True
|
||||||
except ruamel.yaml.reader.ReaderError as e:
|
|
||||||
warnings.warn("Unable to parse META.yml: %s" % e)
|
|
||||||
return
|
|
||||||
for require in data.get("requires", []):
|
|
||||||
yield "core", PerlModuleRequirement(require)
|
|
||||||
for require in data.get("build_requires", []):
|
|
||||||
yield "build", PerlModuleRequirement(require)
|
|
||||||
for require in data.get("configure_requires", []):
|
|
||||||
yield "build", PerlModuleRequirement(require)
|
|
||||||
something = True
|
|
||||||
if os.path.exists(os.path.join(self.path, "cpanfile")):
|
if os.path.exists(os.path.join(self.path, "cpanfile")):
|
||||||
yield from _declared_deps_from_cpanfile(session, fixers)
|
yield from _declared_deps_from_cpanfile(session, fixers)
|
||||||
something = True
|
something = True
|
||||||
|
@ -1415,10 +1420,29 @@ class PerlBuildTiny(BuildSystem):
|
||||||
self.setup(session, fixers)
|
self.setup(session, fixers)
|
||||||
run_with_build_fixers(session, ["./Build", "clean"], fixers)
|
run_with_build_fixers(session, ["./Build", "clean"], fixers)
|
||||||
|
|
||||||
|
def dist(self, session, resolver, fixers, target_directory, quiet=False):
|
||||||
|
self.setup(session, fixers)
|
||||||
|
with DistCatcher([session.external_path('.')]) as dc:
|
||||||
|
try:
|
||||||
|
run_with_build_fixers(session, ["./Build", "dist"], fixers)
|
||||||
|
except UnidentifiedError as e:
|
||||||
|
if "Can't find dist packages without a MANIFEST file" in e.lines:
|
||||||
|
run_with_build_fixers(session, ["./Build", "manifest"], fixers)
|
||||||
|
run_with_build_fixers(session, ["./Build", "dist"], fixers)
|
||||||
|
else:
|
||||||
|
raise
|
||||||
|
return dc.copy_single(target_directory)
|
||||||
|
|
||||||
def install(self, session, resolver, fixers, install_target):
|
def install(self, session, resolver, fixers, install_target):
|
||||||
self.setup(session, fixers)
|
self.setup(session, fixers)
|
||||||
run_with_build_fixers(session, ["./Build", "install"], fixers)
|
run_with_build_fixers(session, ["./Build", "install"], fixers)
|
||||||
|
|
||||||
|
def get_declared_dependencies(self, session, fixers=None):
|
||||||
|
self.setup(session, fixers)
|
||||||
|
run_with_build_fixers(session, ["./Build", "distmeta"], fixers)
|
||||||
|
with open(os.path.join(self.path, 'META.yml'), 'r') as f:
|
||||||
|
yield from _declared_deps_from_meta_yml(f)
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def probe(cls, path):
|
def probe(cls, path):
|
||||||
if os.path.exists(os.path.join(path, "Build.PL")):
|
if os.path.exists(os.path.join(path, "Build.PL")):
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue