More build systems
This commit is contained in:
parent
dd015abd4a
commit
0fa372afd4
2 changed files with 107 additions and 18 deletions
|
@ -258,6 +258,59 @@ class SetupPy(BuildSystem):
|
||||||
yield PythonPackageOutput(package, python_version="cpython3")
|
yield PythonPackageOutput(package, python_version="cpython3")
|
||||||
|
|
||||||
|
|
||||||
|
class Gradle(BuildSystem):
|
||||||
|
|
||||||
|
name = "gradle"
|
||||||
|
|
||||||
|
def __init__(self, path):
|
||||||
|
self.path = path
|
||||||
|
|
||||||
|
def __repr__(self):
|
||||||
|
return "%s(%r)" % (type(self).__name__, self.path)
|
||||||
|
|
||||||
|
def clean(self, session, resolver, fixers):
|
||||||
|
run_with_build_fixers(session, ["gradle", "clean"], fixers)
|
||||||
|
|
||||||
|
def build(self, session, resolver, fixers):
|
||||||
|
run_with_build_fixers(session, ["gradle", "build"], fixers)
|
||||||
|
|
||||||
|
def test(self, session, resolver, fixers):
|
||||||
|
run_with_build_fixers(session, ["gradle", "test"], fixers)
|
||||||
|
|
||||||
|
|
||||||
|
class Meson(BuildSystem):
|
||||||
|
|
||||||
|
name = "meson"
|
||||||
|
|
||||||
|
def __init__(self, path):
|
||||||
|
self.path = path
|
||||||
|
|
||||||
|
def __repr__(self):
|
||||||
|
return "%s(%r)" % (type(self).__name__, self.path)
|
||||||
|
|
||||||
|
def _setup(self, session, fixers):
|
||||||
|
if session.exists("build"):
|
||||||
|
return
|
||||||
|
session.mkdir("build")
|
||||||
|
run_with_build_fixers(session, ["meson", "setup", "build"], fixers)
|
||||||
|
|
||||||
|
def clean(self, session, resolver, fixers):
|
||||||
|
self._setup(session, fixers)
|
||||||
|
run_with_build_fixers(session, ["ninja", "-C", "build", "clean"], fixers)
|
||||||
|
|
||||||
|
def build(self, session, resolver, fixers):
|
||||||
|
self._setup(session, fixers)
|
||||||
|
run_with_build_fixers(session, ["ninja", "-C", "build"], fixers)
|
||||||
|
|
||||||
|
def test(self, session, resolver, fixers):
|
||||||
|
self._setup(session, fixers)
|
||||||
|
run_with_build_fixers(session, ["ninja", "-C", "build", "test"], fixers)
|
||||||
|
|
||||||
|
def install(self, session, resolver, fixers, install_target):
|
||||||
|
self._setup(session, fixers)
|
||||||
|
run_with_build_fixers(session, ["ninja", "-C", "build", "install"], fixers)
|
||||||
|
|
||||||
|
|
||||||
class PyProject(BuildSystem):
|
class PyProject(BuildSystem):
|
||||||
|
|
||||||
name = "pyproject"
|
name = "pyproject"
|
||||||
|
@ -266,6 +319,9 @@ class PyProject(BuildSystem):
|
||||||
self.path = path
|
self.path = path
|
||||||
self.pyproject = self.load_toml()
|
self.pyproject = self.load_toml()
|
||||||
|
|
||||||
|
def __repr__(self):
|
||||||
|
return "%s(%r)" % (type(self).__name__, self.path)
|
||||||
|
|
||||||
def load_toml(self):
|
def load_toml(self):
|
||||||
import toml
|
import toml
|
||||||
|
|
||||||
|
@ -589,10 +645,13 @@ class Golang(BuildSystem):
|
||||||
return "%s()" % (type(self).__name__)
|
return "%s()" % (type(self).__name__)
|
||||||
|
|
||||||
def test(self, session, resolver, fixers):
|
def test(self, session, resolver, fixers):
|
||||||
session.check_call(["go", "test"])
|
run_with_build_fixers(session, ["go", "test"], fixers)
|
||||||
|
|
||||||
def build(self, session, resolver, fixers):
|
def build(self, session, resolver, fixers):
|
||||||
session.check_call(["go", "build"])
|
run_with_build_fixers(session, ["go", "build"], fixers)
|
||||||
|
|
||||||
|
def install(self, session, resolver, fixers):
|
||||||
|
run_with_build_fixers(session, ["go", "install"], fixers)
|
||||||
|
|
||||||
def clean(self, session, resolver, fixers):
|
def clean(self, session, resolver, fixers):
|
||||||
session.check_call(["go", "clean"])
|
session.check_call(["go", "clean"])
|
||||||
|
@ -665,6 +724,14 @@ 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")):
|
||||||
|
logging.debug("Found build.gradle, assuming gradle package.")
|
||||||
|
yield Gradle("build.gradle")
|
||||||
|
|
||||||
|
if os.path.exists(os.path.join(path, "meson.build")):
|
||||||
|
logging.debug("Found meson.build, assuming meson package.")
|
||||||
|
yield Meson("meson.build")
|
||||||
|
|
||||||
if os.path.exists(os.path.join(path, "Setup.hs")):
|
if os.path.exists(os.path.join(path, "Setup.hs")):
|
||||||
logging.debug("Found Setup.hs, assuming haskell package.")
|
logging.debug("Found Setup.hs, assuming haskell package.")
|
||||||
yield Cabal("Setup.hs")
|
yield Cabal("Setup.hs")
|
||||||
|
|
|
@ -119,6 +119,33 @@ class PypiResolver(Resolver):
|
||||||
raise NotImplementedError(self.explain)
|
raise NotImplementedError(self.explain)
|
||||||
|
|
||||||
|
|
||||||
|
class GoResolver(Resolver):
|
||||||
|
|
||||||
|
def __init__(self, session):
|
||||||
|
self.session = session
|
||||||
|
|
||||||
|
def __str__(self):
|
||||||
|
return "go"
|
||||||
|
|
||||||
|
def __repr__(self):
|
||||||
|
return "%s(%r)" % (type(self).__name__, self.session)
|
||||||
|
|
||||||
|
def install(self, requirements):
|
||||||
|
from ..requirements import GoPackageRequirement
|
||||||
|
|
||||||
|
missing = []
|
||||||
|
for requirement in requirements:
|
||||||
|
if not isinstance(requirement, GoPackageRequirement):
|
||||||
|
missing.append(requirement)
|
||||||
|
continue
|
||||||
|
self.session.check_call(["go", "get", requirement.package])
|
||||||
|
if missing:
|
||||||
|
raise UnsatisfiedRequirements(missing)
|
||||||
|
|
||||||
|
def explain(self, requirements):
|
||||||
|
raise NotImplementedError(self.explain)
|
||||||
|
|
||||||
|
|
||||||
NPM_COMMAND_PACKAGES = {
|
NPM_COMMAND_PACKAGES = {
|
||||||
"del-cli": "del-cli",
|
"del-cli": "del-cli",
|
||||||
}
|
}
|
||||||
|
@ -175,15 +202,17 @@ class StackedResolver(Resolver):
|
||||||
return
|
return
|
||||||
|
|
||||||
|
|
||||||
|
NATIVE_RESOLVER_CLS = [
|
||||||
|
CPANResolver,
|
||||||
|
PypiResolver,
|
||||||
|
NpmResolver,
|
||||||
|
GoResolver,
|
||||||
|
HackageResolver,
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
def native_resolvers(session):
|
def native_resolvers(session):
|
||||||
return StackedResolver(
|
return StackedResolver([kls(session) for kls in NATIVE_RESOLVER_CLS])
|
||||||
[
|
|
||||||
CPANResolver(session),
|
|
||||||
PypiResolver(session),
|
|
||||||
NpmResolver(session),
|
|
||||||
HackageResolver(session),
|
|
||||||
]
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
class ExplainResolver(Resolver):
|
class ExplainResolver(Resolver):
|
||||||
|
@ -207,12 +236,5 @@ def auto_resolver(session):
|
||||||
resolvers = []
|
resolvers = []
|
||||||
if isinstance(session, SchrootSession) or user == "root":
|
if isinstance(session, SchrootSession) or user == "root":
|
||||||
resolvers.append(AptResolver.from_session(session))
|
resolvers.append(AptResolver.from_session(session))
|
||||||
resolvers.extend(
|
resolvers.extend([kls(session) for kls in NATIVE_RESOLVER_CLS])
|
||||||
[
|
|
||||||
CPANResolver(session),
|
|
||||||
PypiResolver(session),
|
|
||||||
NpmResolver(session),
|
|
||||||
HackageResolver(session),
|
|
||||||
]
|
|
||||||
)
|
|
||||||
return StackedResolver(resolvers)
|
return StackedResolver(resolvers)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue