Handle gradlew not being executable.

This commit is contained in:
Jelmer Vernooij 2021-03-23 16:18:38 +00:00
parent 713a6dc2a7
commit b961a0d275

View file

@ -20,6 +20,7 @@
import logging import logging
import os import os
import re import re
import stat
from typing import Optional, Tuple from typing import Optional, Tuple
import warnings import warnings
@ -508,7 +509,7 @@ class Gradle(BuildSystem):
@classmethod @classmethod
def from_path(cls, path): def from_path(cls, path):
if os.path.exists(os.path.join(path, "gradlew")): if os.path.exists(os.path.join(path, "gradlew")):
return cls(path, "./gradlew") return cls(path, './gradlew')
return cls(path) return cls(path)
@classmethod @classmethod
@ -521,28 +522,31 @@ class Gradle(BuildSystem):
if not self.executable.startswith('./'): if not self.executable.startswith('./'):
resolver.install([BinaryRequirement(self.executable)]) resolver.install([BinaryRequirement(self.executable)])
def clean(self, session, resolver, fixers): def _run(self, session, resolver, args, fixers):
self.setup(resolver) self.setup(resolver)
run_with_build_fixers(session, [self.executable, "clean"], fixers) if self.executable.startswith('./') and (
not os.access(os.path.join(self.path, self.executable), os.X_OK)):
argv = ['sh', self.executable]
else:
argv = [self.executable]
run_with_build_fixers(session, argv + args, fixers)
def clean(self, session, resolver, fixers):
self._run(session, resolver, ['clean'], fixers)
def build(self, session, resolver, fixers): def build(self, session, resolver, fixers):
self.setup(resolver) self._run(session, resolver, ['build'], fixers)
run_with_build_fixers(session, [self.executable, "build"], fixers)
def test(self, session, resolver, fixers): def test(self, session, resolver, fixers):
self.setup(resolver) self._run(session, resolver, ['test'], fixers)
run_with_build_fixers(session, [self.executable, "test"], fixers)
def dist(self, session, resolver, fixers, quiet=False): def dist(self, session, resolver, fixers, quiet=False):
self.setup(resolver) self._run(session, resolver, ['distTar'], fixers)
run_with_build_fixers(session, [self.executable, "distTar"], fixers)
def install(self, session, resolver, fixers, install_target): def install(self, session, resolver, fixers, install_target):
raise NotImplementedError raise NotImplementedError
self.setup(resolver)
# TODO(jelmer): installDist just creates files under build/install/... # TODO(jelmer): installDist just creates files under build/install/...
run_with_build_fixers( self._run(session, resolver, ['installDist'], fixers)
session, [self.executable, "installDist"], fixers)
class R(BuildSystem): class R(BuildSystem):