Improve Java support.
This commit is contained in:
parent
8f39cc839b
commit
da2605ab25
5 changed files with 55 additions and 7 deletions
|
@ -34,6 +34,7 @@ from buildlog_consultant.common import (
|
||||||
MissingPerlModule,
|
MissingPerlModule,
|
||||||
MissingXmlEntity,
|
MissingXmlEntity,
|
||||||
MissingJDKFile,
|
MissingJDKFile,
|
||||||
|
MissingJDK,
|
||||||
MissingNodeModule,
|
MissingNodeModule,
|
||||||
MissingPhpClass,
|
MissingPhpClass,
|
||||||
MissingRubyGem,
|
MissingRubyGem,
|
||||||
|
@ -75,6 +76,7 @@ from .requirements import (
|
||||||
MavenArtifactRequirement,
|
MavenArtifactRequirement,
|
||||||
GnomeCommonRequirement,
|
GnomeCommonRequirement,
|
||||||
JDKFileRequirement,
|
JDKFileRequirement,
|
||||||
|
JDKRequirement,
|
||||||
PerlModuleRequirement,
|
PerlModuleRequirement,
|
||||||
PerlFileRequirement,
|
PerlFileRequirement,
|
||||||
AutoconfMacroRequirement,
|
AutoconfMacroRequirement,
|
||||||
|
@ -129,6 +131,8 @@ def problem_to_upstream_requirement(problem): # noqa: C901
|
||||||
return GnomeCommonRequirement()
|
return GnomeCommonRequirement()
|
||||||
elif isinstance(problem, MissingJDKFile):
|
elif isinstance(problem, MissingJDKFile):
|
||||||
return JDKFileRequirement(problem.jdk_path, problem.filename)
|
return JDKFileRequirement(problem.jdk_path, problem.filename)
|
||||||
|
elif isinstance(problem, MissingJDK):
|
||||||
|
return JDKRequirement()
|
||||||
elif isinstance(problem, MissingGnomeCommonDependency):
|
elif isinstance(problem, MissingGnomeCommonDependency):
|
||||||
if problem.package == "glib-gettext":
|
if problem.package == "glib-gettext":
|
||||||
return BinaryRequirement("glib-gettextize")
|
return BinaryRequirement("glib-gettextize")
|
||||||
|
|
|
@ -262,20 +262,51 @@ class Gradle(BuildSystem):
|
||||||
|
|
||||||
name = "gradle"
|
name = "gradle"
|
||||||
|
|
||||||
def __init__(self, path):
|
def __init__(self, path, executable="gradle"):
|
||||||
self.path = path
|
self.path = path
|
||||||
|
self.executable = executable
|
||||||
|
|
||||||
def __repr__(self):
|
def __repr__(self):
|
||||||
return "%s(%r)" % (type(self).__name__, self.path)
|
return "%s(%r)" % (type(self).__name__, self.path)
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def exists(cls, path):
|
||||||
|
return (
|
||||||
|
os.path.exists(os.path.join(path, "build.gradle")) or
|
||||||
|
os.path.exists(os.path.join(path, "build.gradle.kts")))
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def from_path(cls, path):
|
||||||
|
if os.path.exists(os.path.join(path, "gradlew")):
|
||||||
|
return cls(path, "./gradlew")
|
||||||
|
return cls(path)
|
||||||
|
|
||||||
|
def setup(self, resolver):
|
||||||
|
if not self.executable.startswith('./'):
|
||||||
|
resolver.install([BinaryRequirement(self.executable)])
|
||||||
|
|
||||||
def clean(self, session, resolver, fixers):
|
def clean(self, session, resolver, fixers):
|
||||||
run_with_build_fixers(session, ["gradle", "clean"], fixers)
|
self.setup(resolver)
|
||||||
|
run_with_build_fixers(session, [self.executable, "clean"], fixers)
|
||||||
|
|
||||||
def build(self, session, resolver, fixers):
|
def build(self, session, resolver, fixers):
|
||||||
run_with_build_fixers(session, ["gradle", "build"], fixers)
|
self.setup(resolver)
|
||||||
|
run_with_build_fixers(session, [self.executable, "build"], fixers)
|
||||||
|
|
||||||
def test(self, session, resolver, fixers):
|
def test(self, session, resolver, fixers):
|
||||||
run_with_build_fixers(session, ["gradle", "test"], fixers)
|
self.setup(resolver)
|
||||||
|
run_with_build_fixers(session, [self.executable, "test"], fixers)
|
||||||
|
|
||||||
|
def dist(self, session, resolver, fixers, quiet=False):
|
||||||
|
self.setup(resolver)
|
||||||
|
run_with_build_fixers(session, [self.executable, "distTar"], fixers)
|
||||||
|
|
||||||
|
def install(self, session, resolver, fixers, install_target):
|
||||||
|
raise NotImplementedError
|
||||||
|
self.setup(resolver)
|
||||||
|
# TODO(jelmer): installDist just creates files under build/install/...
|
||||||
|
run_with_build_fixers(
|
||||||
|
session, [self.executable, "installDist"], fixers)
|
||||||
|
|
||||||
|
|
||||||
class Meson(BuildSystem):
|
class Meson(BuildSystem):
|
||||||
|
@ -733,9 +764,9 @@ def detect_buildsystems(path, trust_package=False): # noqa: C901
|
||||||
logging.debug("Found Cargo.toml, assuming rust cargo package.")
|
logging.debug("Found Cargo.toml, assuming rust cargo package.")
|
||||||
yield Cargo("Cargo.toml")
|
yield Cargo("Cargo.toml")
|
||||||
|
|
||||||
if os.path.exists(os.path.join(path, "build.gradle")):
|
if Gradle.exists(path):
|
||||||
logging.debug("Found build.gradle, assuming gradle package.")
|
logging.debug("Found build.gradle, assuming gradle package.")
|
||||||
yield Gradle("build.gradle")
|
yield Gradle.from_path(path)
|
||||||
|
|
||||||
if os.path.exists(os.path.join(path, "meson.build")):
|
if os.path.exists(os.path.join(path, "meson.build")):
|
||||||
logging.debug("Found meson.build, assuming meson package.")
|
logging.debug("Found meson.build, assuming meson package.")
|
||||||
|
|
|
@ -66,9 +66,10 @@ def run_with_build_fixers(session: Session, args: List[str], fixers: List[BuildF
|
||||||
logging.info("Running %r", args)
|
logging.info("Running %r", args)
|
||||||
fixed_errors = []
|
fixed_errors = []
|
||||||
while True:
|
while True:
|
||||||
retcode, lines = run_with_tee(session, args)
|
retcode, contents = run_with_tee(session, args)
|
||||||
if retcode == 0:
|
if retcode == 0:
|
||||||
return
|
return
|
||||||
|
lines = ''.join(contents).splitlines(True)
|
||||||
match, error = find_build_failure_description(lines)
|
match, error = find_build_failure_description(lines)
|
||||||
if error is None:
|
if error is None:
|
||||||
if match:
|
if match:
|
||||||
|
|
|
@ -334,6 +334,12 @@ class JDKFileRequirement(Requirement):
|
||||||
return posixpath.join(self.jdk_path, self.filename)
|
return posixpath.join(self.jdk_path, self.filename)
|
||||||
|
|
||||||
|
|
||||||
|
class JDKRequirement(Requirement):
|
||||||
|
|
||||||
|
def __init__(self):
|
||||||
|
super(JDKRequirement, self).__init__("jdk")
|
||||||
|
|
||||||
|
|
||||||
class PerlFileRequirement(Requirement):
|
class PerlFileRequirement(Requirement):
|
||||||
|
|
||||||
filename: str
|
filename: str
|
||||||
|
|
|
@ -50,6 +50,7 @@ from ..requirements import (
|
||||||
MavenArtifactRequirement,
|
MavenArtifactRequirement,
|
||||||
GnomeCommonRequirement,
|
GnomeCommonRequirement,
|
||||||
JDKFileRequirement,
|
JDKFileRequirement,
|
||||||
|
JDKRequirement,
|
||||||
PerlModuleRequirement,
|
PerlModuleRequirement,
|
||||||
PerlFileRequirement,
|
PerlFileRequirement,
|
||||||
AutoconfMacroRequirement,
|
AutoconfMacroRequirement,
|
||||||
|
@ -444,6 +445,10 @@ def resolve_jdk_file_req(apt_mgr, req):
|
||||||
return None
|
return None
|
||||||
|
|
||||||
|
|
||||||
|
def resolve_jdk_req(apt_mgr, req):
|
||||||
|
return AptRequirement.simple('default-jdk')
|
||||||
|
|
||||||
|
|
||||||
def resolve_perl_module_req(apt_mgr, req):
|
def resolve_perl_module_req(apt_mgr, req):
|
||||||
DEFAULT_PERL_PATHS = ["/usr/share/perl5"]
|
DEFAULT_PERL_PATHS = ["/usr/share/perl5"]
|
||||||
|
|
||||||
|
@ -547,6 +552,7 @@ APT_REQUIREMENT_RESOLVERS = [
|
||||||
(MavenArtifactRequirement, resolve_maven_artifact_req),
|
(MavenArtifactRequirement, resolve_maven_artifact_req),
|
||||||
(GnomeCommonRequirement, resolve_gnome_common_req),
|
(GnomeCommonRequirement, resolve_gnome_common_req),
|
||||||
(JDKFileRequirement, resolve_jdk_file_req),
|
(JDKFileRequirement, resolve_jdk_file_req),
|
||||||
|
(JDKRequirement, resolve_jdk_req),
|
||||||
(PerlModuleRequirement, resolve_perl_module_req),
|
(PerlModuleRequirement, resolve_perl_module_req),
|
||||||
(PerlFileRequirement, resolve_perl_file_req),
|
(PerlFileRequirement, resolve_perl_file_req),
|
||||||
(AutoconfMacroRequirement, resolve_autoconf_macro_req),
|
(AutoconfMacroRequirement, resolve_autoconf_macro_req),
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue