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,
|
||||
MissingXmlEntity,
|
||||
MissingJDKFile,
|
||||
MissingJDK,
|
||||
MissingNodeModule,
|
||||
MissingPhpClass,
|
||||
MissingRubyGem,
|
||||
|
@ -75,6 +76,7 @@ from .requirements import (
|
|||
MavenArtifactRequirement,
|
||||
GnomeCommonRequirement,
|
||||
JDKFileRequirement,
|
||||
JDKRequirement,
|
||||
PerlModuleRequirement,
|
||||
PerlFileRequirement,
|
||||
AutoconfMacroRequirement,
|
||||
|
@ -129,6 +131,8 @@ def problem_to_upstream_requirement(problem): # noqa: C901
|
|||
return GnomeCommonRequirement()
|
||||
elif isinstance(problem, MissingJDKFile):
|
||||
return JDKFileRequirement(problem.jdk_path, problem.filename)
|
||||
elif isinstance(problem, MissingJDK):
|
||||
return JDKRequirement()
|
||||
elif isinstance(problem, MissingGnomeCommonDependency):
|
||||
if problem.package == "glib-gettext":
|
||||
return BinaryRequirement("glib-gettextize")
|
||||
|
|
|
@ -262,20 +262,51 @@ class Gradle(BuildSystem):
|
|||
|
||||
name = "gradle"
|
||||
|
||||
def __init__(self, path):
|
||||
def __init__(self, path, executable="gradle"):
|
||||
self.path = path
|
||||
self.executable = executable
|
||||
|
||||
def __repr__(self):
|
||||
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):
|
||||
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):
|
||||
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):
|
||||
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):
|
||||
|
@ -733,9 +764,9 @@ def detect_buildsystems(path, trust_package=False): # noqa: C901
|
|||
logging.debug("Found Cargo.toml, assuming rust cargo package.")
|
||||
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.")
|
||||
yield Gradle("build.gradle")
|
||||
yield Gradle.from_path(path)
|
||||
|
||||
if os.path.exists(os.path.join(path, "meson.build")):
|
||||
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)
|
||||
fixed_errors = []
|
||||
while True:
|
||||
retcode, lines = run_with_tee(session, args)
|
||||
retcode, contents = run_with_tee(session, args)
|
||||
if retcode == 0:
|
||||
return
|
||||
lines = ''.join(contents).splitlines(True)
|
||||
match, error = find_build_failure_description(lines)
|
||||
if error is None:
|
||||
if match:
|
||||
|
|
|
@ -334,6 +334,12 @@ class JDKFileRequirement(Requirement):
|
|||
return posixpath.join(self.jdk_path, self.filename)
|
||||
|
||||
|
||||
class JDKRequirement(Requirement):
|
||||
|
||||
def __init__(self):
|
||||
super(JDKRequirement, self).__init__("jdk")
|
||||
|
||||
|
||||
class PerlFileRequirement(Requirement):
|
||||
|
||||
filename: str
|
||||
|
|
|
@ -50,6 +50,7 @@ from ..requirements import (
|
|||
MavenArtifactRequirement,
|
||||
GnomeCommonRequirement,
|
||||
JDKFileRequirement,
|
||||
JDKRequirement,
|
||||
PerlModuleRequirement,
|
||||
PerlFileRequirement,
|
||||
AutoconfMacroRequirement,
|
||||
|
@ -444,6 +445,10 @@ def resolve_jdk_file_req(apt_mgr, req):
|
|||
return None
|
||||
|
||||
|
||||
def resolve_jdk_req(apt_mgr, req):
|
||||
return AptRequirement.simple('default-jdk')
|
||||
|
||||
|
||||
def resolve_perl_module_req(apt_mgr, req):
|
||||
DEFAULT_PERL_PATHS = ["/usr/share/perl5"]
|
||||
|
||||
|
@ -547,6 +552,7 @@ APT_REQUIREMENT_RESOLVERS = [
|
|||
(MavenArtifactRequirement, resolve_maven_artifact_req),
|
||||
(GnomeCommonRequirement, resolve_gnome_common_req),
|
||||
(JDKFileRequirement, resolve_jdk_file_req),
|
||||
(JDKRequirement, resolve_jdk_req),
|
||||
(PerlModuleRequirement, resolve_perl_module_req),
|
||||
(PerlFileRequirement, resolve_perl_file_req),
|
||||
(AutoconfMacroRequirement, resolve_autoconf_macro_req),
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue