More go support.

This commit is contained in:
Jelmer Vernooij 2021-03-25 22:54:22 +00:00
parent ae9e30468a
commit 5b7cf25d14
No known key found for this signature in database
GPG key ID: 579C160D4C9E23E8
3 changed files with 41 additions and 2 deletions

View file

@ -42,6 +42,8 @@ from .requirements import (
OctavePackageRequirement, OctavePackageRequirement,
PhpPackageRequirement, PhpPackageRequirement,
MavenArtifactRequirement, MavenArtifactRequirement,
GoRequirement,
GoPackageRequirement,
) )
from .fix_build import run_with_build_fixers from .fix_build import run_with_build_fixers
from .session import which from .session import which
@ -1165,6 +1167,26 @@ class Golang(BuildSystem):
def clean(self, session, resolver, fixers): def clean(self, session, resolver, fixers):
session.check_call(["go", "clean"]) session.check_call(["go", "clean"])
def get_declared_dependencies(self, session, fixers=None):
go_mod_path = os.path.join(self.path, 'go.mod')
if not os.path.exists(go_mod_path):
with open(go_mod_path, 'r') as f:
for line in f:
parts = line.strip().split(' ')
if not parts:
continue
if parts[0] == 'go':
yield "build", GoRequirement(parts[1])
elif parts[0] == 'require':
yield "build", GoPackageRequirement(
parts[1], parts[2] if len(parts) > 2 else None)
elif parts[0] in ('module', 'exclude', 'replace'):
pass
else:
logging.warning(
'Unknown directive %s in go.mod',
parts[0])
@classmethod @classmethod
def probe(cls, path): def probe(cls, path):
if os.path.exists(os.path.join(path, 'go.mod')): if os.path.exists(os.path.join(path, 'go.mod')):

View file

@ -271,10 +271,21 @@ class RubyGemRequirement(Requirement):
class GoPackageRequirement(Requirement): class GoPackageRequirement(Requirement):
package: str package: str
version: Optional[str]
def __init__(self, package: str): def __init__(self, package: str, version: Optional[str] = None):
super(GoPackageRequirement, self).__init__("go") super(GoPackageRequirement, self).__init__("go-package")
self.package = package self.package = package
self.version = version
class GoRequirement(Requirement):
version: Optional[str]
def __init__(self, version: Optional[str] = None):
super(GoPackageRequirement, self).__init__("go")
self.version = version
class DhAddonRequirement(Requirement): class DhAddonRequirement(Requirement):

View file

@ -39,6 +39,7 @@ from ..requirements import (
ValaPackageRequirement, ValaPackageRequirement,
RubyGemRequirement, RubyGemRequirement,
GoPackageRequirement, GoPackageRequirement,
GoRequirement,
DhAddonRequirement, DhAddonRequirement,
PhpClassRequirement, PhpClassRequirement,
PhpPackageRequirement, PhpPackageRequirement,
@ -306,6 +307,10 @@ def resolve_go_package_req(apt_mgr, req):
) )
def resolve_go_req(apt_mgr, req):
return [AptRequirement.simple('golang-%s' % req.version)]
def resolve_dh_addon_req(apt_mgr, req): def resolve_dh_addon_req(apt_mgr, req):
paths = [posixpath.join("/usr/share/perl5", req.path)] paths = [posixpath.join("/usr/share/perl5", req.path)]
return find_reqs_simple(apt_mgr, paths) return find_reqs_simple(apt_mgr, paths)
@ -556,6 +561,7 @@ APT_REQUIREMENT_RESOLVERS = [
(ValaPackageRequirement, resolve_vala_package_req), (ValaPackageRequirement, resolve_vala_package_req),
(RubyGemRequirement, resolve_ruby_gem_req), (RubyGemRequirement, resolve_ruby_gem_req),
(GoPackageRequirement, resolve_go_package_req), (GoPackageRequirement, resolve_go_package_req),
(GoRequirement, resolve_go_req),
(DhAddonRequirement, resolve_dh_addon_req), (DhAddonRequirement, resolve_dh_addon_req),
(PhpClassRequirement, resolve_php_class_req), (PhpClassRequirement, resolve_php_class_req),
(PhpPackageRequirement, resolve_php_package_req), (PhpPackageRequirement, resolve_php_package_req),