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):
|
def explain(self, requirements):
|
||||||
raise NotImplementedError(self.explain)
|
raise NotImplementedError(self.explain)
|
||||||
|
|
||||||
def met(self, requirement):
|
def env(self):
|
||||||
raise NotImplementedError(self.met)
|
return {}
|
||||||
|
|
||||||
|
|
||||||
class CPANResolver(Resolver):
|
class CPANResolver(Resolver):
|
||||||
|
@ -291,7 +291,7 @@ class GoResolver(Resolver):
|
||||||
|
|
||||||
def __init__(self, session, user_local):
|
def __init__(self, session, user_local):
|
||||||
self.session = session
|
self.session = session
|
||||||
# TODO(jelmer): Handle user_local=False
|
self.user_local = user_local
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
return "go"
|
return "go"
|
||||||
|
@ -302,12 +302,18 @@ class GoResolver(Resolver):
|
||||||
def install(self, requirements):
|
def install(self, requirements):
|
||||||
from ..requirements import GoPackageRequirement
|
from ..requirements import GoPackageRequirement
|
||||||
|
|
||||||
|
if self.user_local:
|
||||||
|
env = {}
|
||||||
|
else:
|
||||||
|
# TODO(jelmer): Isn't this Debian-specific?
|
||||||
|
env = {'GOPATH': '/usr/share/gocode'}
|
||||||
|
|
||||||
missing = []
|
missing = []
|
||||||
for requirement in requirements:
|
for requirement in requirements:
|
||||||
if not isinstance(requirement, GoPackageRequirement):
|
if not isinstance(requirement, GoPackageRequirement):
|
||||||
missing.append(requirement)
|
missing.append(requirement)
|
||||||
continue
|
continue
|
||||||
self.session.check_call(["go", "get", requirement.package])
|
self.session.check_call(["go", "get", requirement.package], env=env)
|
||||||
if missing:
|
if missing:
|
||||||
raise UnsatisfiedRequirements(missing)
|
raise UnsatisfiedRequirements(missing)
|
||||||
|
|
||||||
|
@ -386,6 +392,13 @@ class StackedResolver(Resolver):
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
return "[" + ", ".join(map(str, self.subs)) + "]"
|
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):
|
def explain(self, requirements):
|
||||||
for sub in self.subs:
|
for sub in self.subs:
|
||||||
yield from sub.explain(requirements)
|
yield from sub.explain(requirements)
|
||||||
|
|
Loading…
Add table
Reference in a new issue