Support system-wide go code.
This commit is contained in:
parent
3a84dfcdfc
commit
63d11917a7
1 changed files with 17 additions and 4 deletions
|
@ -34,8 +34,8 @@ class Resolver(object):
|
|||
def explain(self, requirements):
|
||||
raise NotImplementedError(self.explain)
|
||||
|
||||
def met(self, requirement):
|
||||
raise NotImplementedError(self.met)
|
||||
def env(self):
|
||||
return {}
|
||||
|
||||
|
||||
class CPANResolver(Resolver):
|
||||
|
@ -291,7 +291,7 @@ class GoResolver(Resolver):
|
|||
|
||||
def __init__(self, session, user_local):
|
||||
self.session = session
|
||||
# TODO(jelmer): Handle user_local=False
|
||||
self.user_local = user_local
|
||||
|
||||
def __str__(self):
|
||||
return "go"
|
||||
|
@ -302,12 +302,18 @@ class GoResolver(Resolver):
|
|||
def install(self, requirements):
|
||||
from ..requirements import GoPackageRequirement
|
||||
|
||||
if self.user_local:
|
||||
env = {}
|
||||
else:
|
||||
# TODO(jelmer): Isn't this Debian-specific?
|
||||
env = {'GOPATH': '/usr/share/gocode'}
|
||||
|
||||
missing = []
|
||||
for requirement in requirements:
|
||||
if not isinstance(requirement, GoPackageRequirement):
|
||||
missing.append(requirement)
|
||||
continue
|
||||
self.session.check_call(["go", "get", requirement.package])
|
||||
self.session.check_call(["go", "get", requirement.package], env=env)
|
||||
if missing:
|
||||
raise UnsatisfiedRequirements(missing)
|
||||
|
||||
|
@ -386,6 +392,13 @@ class StackedResolver(Resolver):
|
|||
def __str__(self):
|
||||
return "[" + ", ".join(map(str, self.subs)) + "]"
|
||||
|
||||
def env(self):
|
||||
ret = {}
|
||||
# Reversed so earlier resolvers override later ones
|
||||
for sub in reversed(self.subs):
|
||||
ret.update(sub.env())
|
||||
return ret
|
||||
|
||||
def explain(self, requirements):
|
||||
for sub in self.subs:
|
||||
yield from sub.explain(requirements)
|
||||
|
|
Loading…
Add table
Reference in a new issue