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,
PhpPackageRequirement,
MavenArtifactRequirement,
GoRequirement,
GoPackageRequirement,
)
from .fix_build import run_with_build_fixers
from .session import which
@ -1165,6 +1167,26 @@ class Golang(BuildSystem):
def clean(self, session, resolver, fixers):
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
def probe(cls, path):
if os.path.exists(os.path.join(path, 'go.mod')):

View file

@ -271,10 +271,21 @@ class RubyGemRequirement(Requirement):
class GoPackageRequirement(Requirement):
package: str
version: Optional[str]
def __init__(self, package: str):
super(GoPackageRequirement, self).__init__("go")
def __init__(self, package: str, version: Optional[str] = None):
super(GoPackageRequirement, self).__init__("go-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):

View file

@ -39,6 +39,7 @@ from ..requirements import (
ValaPackageRequirement,
RubyGemRequirement,
GoPackageRequirement,
GoRequirement,
DhAddonRequirement,
PhpClassRequirement,
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):
paths = [posixpath.join("/usr/share/perl5", req.path)]
return find_reqs_simple(apt_mgr, paths)
@ -556,6 +561,7 @@ APT_REQUIREMENT_RESOLVERS = [
(ValaPackageRequirement, resolve_vala_package_req),
(RubyGemRequirement, resolve_ruby_gem_req),
(GoPackageRequirement, resolve_go_package_req),
(GoRequirement, resolve_go_req),
(DhAddonRequirement, resolve_dh_addon_req),
(PhpClassRequirement, resolve_php_class_req),
(PhpPackageRequirement, resolve_php_package_req),