Avoid pre-emptively installing.
This commit is contained in:
parent
8ab342f21c
commit
996b135c80
2 changed files with 45 additions and 44 deletions
|
@ -173,8 +173,9 @@ def main(): # noqa: C901
|
||||||
display_explain_commands(e.commands)
|
display_explain_commands(e.commands)
|
||||||
return 1
|
return 1
|
||||||
if args.subcommand == "dist":
|
if args.subcommand == "dist":
|
||||||
from .dist import run_dist
|
from .dist import run_dist, DistNoTarball
|
||||||
|
|
||||||
|
try:
|
||||||
run_dist(
|
run_dist(
|
||||||
session=session,
|
session=session,
|
||||||
buildsystems=bss,
|
buildsystems=bss,
|
||||||
|
@ -182,6 +183,9 @@ def main(): # noqa: C901
|
||||||
fixers=fixers,
|
fixers=fixers,
|
||||||
target_directory=".",
|
target_directory=".",
|
||||||
)
|
)
|
||||||
|
except DistNoTarball:
|
||||||
|
logging.fatal('No tarball created.')
|
||||||
|
return 1
|
||||||
if args.subcommand == "build":
|
if args.subcommand == "build":
|
||||||
from .build import run_build
|
from .build import run_build
|
||||||
|
|
||||||
|
|
|
@ -121,30 +121,23 @@ class Pear(BuildSystem):
|
||||||
def __init__(self, path):
|
def __init__(self, path):
|
||||||
self.path = path
|
self.path = path
|
||||||
|
|
||||||
def setup(self, resolver):
|
|
||||||
resolver.install([BinaryRequirement("pear")])
|
|
||||||
|
|
||||||
def dist(self, session, resolver, fixers, target_directory: str, quiet=False):
|
def dist(self, session, resolver, fixers, target_directory: str, quiet=False):
|
||||||
self.setup(resolver)
|
|
||||||
with DistCatcher([session.external_path(".")]) as dc:
|
with DistCatcher([session.external_path(".")]) as dc:
|
||||||
run_with_build_fixers(session, ["pear", "package"], fixers)
|
run_with_build_fixers(session, [guaranteed_which(session, resolver, "pear"), "package"], fixers)
|
||||||
return dc.copy_single(target_directory)
|
return dc.copy_single(target_directory)
|
||||||
|
|
||||||
def test(self, session, resolver, fixers):
|
def test(self, session, resolver, fixers):
|
||||||
self.setup(resolver)
|
run_with_build_fixers(session, [guaranteed_which(session, resolver, "pear"), "run-tests"], fixers)
|
||||||
run_with_build_fixers(session, ["pear", "run-tests"], fixers)
|
|
||||||
|
|
||||||
def build(self, session, resolver, fixers):
|
def build(self, session, resolver, fixers):
|
||||||
self.setup(resolver)
|
run_with_build_fixers(session, [guaranteed_which(session, resolver, "pear"), "build", self.path], fixers)
|
||||||
run_with_build_fixers(session, ["pear", "build", self.path], fixers)
|
|
||||||
|
|
||||||
def clean(self, session, resolver, fixers):
|
def clean(self, session, resolver, fixers):
|
||||||
self.setup(resolver)
|
self.setup(resolver)
|
||||||
# TODO
|
# TODO
|
||||||
|
|
||||||
def install(self, session, resolver, fixers, install_target):
|
def install(self, session, resolver, fixers, install_target):
|
||||||
self.setup(resolver)
|
run_with_build_fixers(session, [guaranteed_which(session, resolver, "pear"), "install", self.path], fixers)
|
||||||
run_with_build_fixers(session, ["pear", "install", self.path], fixers)
|
|
||||||
|
|
||||||
def get_declared_dependencies(self, session, fixers=None):
|
def get_declared_dependencies(self, session, fixers=None):
|
||||||
path = os.path.join(self.path, "package.xml")
|
path = os.path.join(self.path, "package.xml")
|
||||||
|
@ -387,7 +380,9 @@ class SetupPy(BuildSystem):
|
||||||
# Pre-emptively insall setuptools, since distutils doesn't provide
|
# Pre-emptively insall setuptools, since distutils doesn't provide
|
||||||
# a 'test' subcommand and some packages fall back to distutils
|
# a 'test' subcommand and some packages fall back to distutils
|
||||||
# if setuptools is not available.
|
# if setuptools is not available.
|
||||||
resolver.install([PythonPackageRequirement("setuptools")])
|
setuptools_req = PythonPackageRequirement("setuptools")
|
||||||
|
if not setuptools_req.met(session):
|
||||||
|
resolver.install([setuptools_req])
|
||||||
self._run_setup(session, resolver, ["test"], fixers)
|
self._run_setup(session, resolver, ["test"], fixers)
|
||||||
else:
|
else:
|
||||||
raise NotImplementedError
|
raise NotImplementedError
|
||||||
|
@ -406,7 +401,9 @@ class SetupPy(BuildSystem):
|
||||||
preargs.append("--quiet")
|
preargs.append("--quiet")
|
||||||
# Preemptively install setuptools since some packages fail in
|
# Preemptively install setuptools since some packages fail in
|
||||||
# some way without it.
|
# some way without it.
|
||||||
resolver.install([PythonPackageRequirement("setuptools")])
|
setuptools_req = PythonPackageRequirement("setuptools")
|
||||||
|
if not setuptools_req.met(session):
|
||||||
|
resolver.install([setuptools_req])
|
||||||
with DistCatcher([session.external_path("dist")]) as dc:
|
with DistCatcher([session.external_path("dist")]) as dc:
|
||||||
self._run_setup(session, resolver, preargs + ["sdist"], fixers)
|
self._run_setup(session, resolver, preargs + ["sdist"], fixers)
|
||||||
return dc.copy_single(target_directory)
|
return dc.copy_single(target_directory)
|
||||||
|
@ -610,12 +607,14 @@ class Gradle(BuildSystem):
|
||||||
logging.debug("Found build.gradle, assuming gradle package.")
|
logging.debug("Found build.gradle, assuming gradle package.")
|
||||||
return cls.from_path(path)
|
return cls.from_path(path)
|
||||||
|
|
||||||
def setup(self, resolver):
|
def setup(self, session, resolver):
|
||||||
if not self.executable.startswith("./"):
|
if not self.executable.startswith("./"):
|
||||||
resolver.install([BinaryRequirement(self.executable)])
|
binary_req = BinaryRequirement(self.executable)
|
||||||
|
if not binary_req.met(session):
|
||||||
|
resolver.install([binary_req])
|
||||||
|
|
||||||
def _run(self, session, resolver, task, args, fixers):
|
def _run(self, session, resolver, task, args, fixers):
|
||||||
self.setup(resolver)
|
self.setup(session, resolver)
|
||||||
argv = []
|
argv = []
|
||||||
if self.executable.startswith("./") and (
|
if self.executable.startswith("./") and (
|
||||||
not os.access(os.path.join(self.path, self.executable), os.X_OK)
|
not os.access(os.path.join(self.path, self.executable), os.X_OK)
|
||||||
|
@ -790,17 +789,19 @@ class Npm(BuildSystem):
|
||||||
# TODO(jelmer): Look at version
|
# TODO(jelmer): Look at version
|
||||||
yield "build", NodePackageRequirement(name)
|
yield "build", NodePackageRequirement(name)
|
||||||
|
|
||||||
def setup(self, resolver):
|
def setup(self, session, resolver):
|
||||||
resolver.install([BinaryRequirement("npm")])
|
binary_req = BinaryRequirement("npm")
|
||||||
|
if not binary_req.met(session):
|
||||||
|
resolver.install([binary_req])
|
||||||
|
|
||||||
def dist(self, session, resolver, fixers, target_directory, quiet=False):
|
def dist(self, session, resolver, fixers, target_directory, quiet=False):
|
||||||
self.setup(resolver)
|
self.setup(session, resolver)
|
||||||
with DistCatcher([session.external_path(".")]) as dc:
|
with DistCatcher([session.external_path(".")]) as dc:
|
||||||
run_with_build_fixers(session, ["npm", "pack"], fixers)
|
run_with_build_fixers(session, ["npm", "pack"], fixers)
|
||||||
return dc.copy_single(target_directory)
|
return dc.copy_single(target_directory)
|
||||||
|
|
||||||
def test(self, session, resolver, fixers):
|
def test(self, session, resolver, fixers):
|
||||||
self.setup(resolver)
|
self.setup(session, resolver)
|
||||||
test_script = self.package["scripts"].get("test")
|
test_script = self.package["scripts"].get("test")
|
||||||
if test_script:
|
if test_script:
|
||||||
run_with_build_fixers(session, shlex.split(test_script), fixers)
|
run_with_build_fixers(session, shlex.split(test_script), fixers)
|
||||||
|
@ -808,7 +809,7 @@ class Npm(BuildSystem):
|
||||||
raise NotImplementedError
|
raise NotImplementedError
|
||||||
|
|
||||||
def build(self, session, resolver, fixers):
|
def build(self, session, resolver, fixers):
|
||||||
self.setup(resolver)
|
self.setup(session, resolver)
|
||||||
build_script = self.package["scripts"].get("build")
|
build_script = self.package["scripts"].get("build")
|
||||||
if build_script:
|
if build_script:
|
||||||
run_with_build_fixers(session, shlex.split(build_script), fixers)
|
run_with_build_fixers(session, shlex.split(build_script), fixers)
|
||||||
|
@ -816,7 +817,7 @@ class Npm(BuildSystem):
|
||||||
raise NotImplementedError
|
raise NotImplementedError
|
||||||
|
|
||||||
def clean(self, session, resolver, fixers):
|
def clean(self, session, resolver, fixers):
|
||||||
self.setup(resolver)
|
self.setup(session, resolver)
|
||||||
clean_script = self.package["scripts"].get("clean")
|
clean_script = self.package["scripts"].get("clean")
|
||||||
if clean_script:
|
if clean_script:
|
||||||
run_with_build_fixers(session, shlex.split(clean_script), fixers)
|
run_with_build_fixers(session, shlex.split(clean_script), fixers)
|
||||||
|
@ -838,7 +839,9 @@ class Waf(BuildSystem):
|
||||||
self.path = path
|
self.path = path
|
||||||
|
|
||||||
def setup(self, session, resolver, fixers):
|
def setup(self, session, resolver, fixers):
|
||||||
resolver.install([BinaryRequirement("python3")])
|
binary_req = BinaryRequirement("python3")
|
||||||
|
if not binary_req.met(session):
|
||||||
|
resolver.install([binary_req])
|
||||||
|
|
||||||
def dist(self, session, resolver, fixers, target_directory, quiet=False):
|
def dist(self, session, resolver, fixers, target_directory, quiet=False):
|
||||||
self.setup(session, resolver, fixers)
|
self.setup(session, resolver, fixers)
|
||||||
|
@ -864,18 +867,16 @@ class Gem(BuildSystem):
|
||||||
def __init__(self, path):
|
def __init__(self, path):
|
||||||
self.path = path
|
self.path = path
|
||||||
|
|
||||||
def setup(self, resolver):
|
|
||||||
resolver.install([BinaryRequirement("gem2deb")])
|
|
||||||
|
|
||||||
def dist(self, session, resolver, fixers, target_directory, quiet=False):
|
def dist(self, session, resolver, fixers, target_directory, quiet=False):
|
||||||
self.setup(resolver)
|
|
||||||
gemfiles = [
|
gemfiles = [
|
||||||
entry.name for entry in session.scandir(".") if entry.name.endswith(".gem")
|
entry.name for entry in session.scandir(".") if entry.name.endswith(".gem")
|
||||||
]
|
]
|
||||||
if len(gemfiles) > 1:
|
if len(gemfiles) > 1:
|
||||||
logging.warning("More than one gemfile. Trying the first?")
|
logging.warning("More than one gemfile. Trying the first?")
|
||||||
with DistCatcher.default(session.external_path(".")) as dc:
|
with DistCatcher.default(session.external_path(".")) as dc:
|
||||||
run_with_build_fixers(session, ["gem2tgz", gemfiles[0]], fixers)
|
run_with_build_fixers(
|
||||||
|
session,
|
||||||
|
[guaranteed_which(session, resolver, "gem2tgz"), gemfiles[0]], fixers)
|
||||||
return dc.copy_single(target_directory)
|
return dc.copy_single(target_directory)
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
|
@ -921,26 +922,22 @@ class DistZilla(BuildSystem):
|
||||||
def dist(self, session, resolver, fixers, target_directory, quiet=False):
|
def dist(self, session, resolver, fixers, target_directory, quiet=False):
|
||||||
self.setup(resolver)
|
self.setup(resolver)
|
||||||
if self.name == "dist-inkt":
|
if self.name == "dist-inkt":
|
||||||
resolver.install([PerlModuleRequirement(self.dist_inkt_class)])
|
|
||||||
with DistCatcher.default(session.external_path(".")) as dc:
|
with DistCatcher.default(session.external_path(".")) as dc:
|
||||||
run_with_build_fixers(session, ["distinkt-dist"], fixers)
|
run_with_build_fixers(session, [guaranteed_which(session, resolver, "distinkt-dist")], fixers)
|
||||||
return dc.copy_single(target_directory)
|
return dc.copy_single(target_directory)
|
||||||
else:
|
else:
|
||||||
# Default to invoking Dist::Zilla
|
# Default to invoking Dist::Zilla
|
||||||
resolver.install([PerlModuleRequirement("Dist::Zilla")])
|
|
||||||
with DistCatcher.default(session.external_path(".")) as dc:
|
with DistCatcher.default(session.external_path(".")) as dc:
|
||||||
run_with_build_fixers(session, ["dzil", "build", "--tgz"], fixers)
|
run_with_build_fixers(session, [guaranteed_which(session, resolver, "dzil"), "build", "--tgz"], fixers)
|
||||||
return dc.copy_single(target_directory)
|
return dc.copy_single(target_directory)
|
||||||
|
|
||||||
def test(self, session, resolver, fixers):
|
def test(self, session, resolver, fixers):
|
||||||
self.setup(resolver)
|
self.setup(resolver)
|
||||||
resolver.install([PerlModuleRequirement("Dist::Zilla")])
|
run_with_build_fixers(session, [guaranteed_which(session, resolver, "dzil"), "test"], fixers)
|
||||||
run_with_build_fixers(session, ["dzil", "test"], fixers)
|
|
||||||
|
|
||||||
def build(self, session, resolver, fixers):
|
def build(self, session, resolver, fixers):
|
||||||
self.setup(resolver)
|
self.setup(resolver)
|
||||||
resolver.install([PerlModuleRequirement("Dist::Zilla")])
|
run_with_build_fixers(session, [guaranteed_which(session, resolver, "dzil"), "build"], fixers)
|
||||||
run_with_build_fixers(session, ["dzil", "build"], fixers)
|
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def probe(cls, path):
|
def probe(cls, path):
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue