Fix go parsing.

This commit is contained in:
Jelmer Vernooij 2021-03-25 23:12:07 +00:00
parent 445c2c19d2
commit e232c603eb
2 changed files with 18 additions and 5 deletions

View file

@ -1145,21 +1145,26 @@ class Cargo(BuildSystem):
def _parse_go_mod(f):
line = f.readline()
def readline():
line = f.readline()
if not line:
return line
return line.split('//')[0] + '\n'
line = readline()
while line:
parts = line.strip().split(' ')
if not parts:
continue
if len(parts) == 2 and parts[1] == '(':
line = f.readline()
line = readline()
while line.strip() != ')':
yield [parts[0]] + list(line.strip().split(' '))
line = f.readline()
line = readline()
if not line:
raise AssertionError('list of %s interrupted?' % parts[0])
else:
yield parts
line = f.readline()
line = readline()
class Golang(BuildSystem):
@ -1194,7 +1199,7 @@ class Golang(BuildSystem):
yield "build", GoRequirement(parts[1])
elif parts[0] == 'require':
yield "build", GoPackageRequirement(
parts[1], parts[2] if len(parts) > 2 else None)
parts[1], parts[2].lstrip('v') if len(parts) > 2 else None)
elif parts[0] == 'exclude':
pass # TODO(jelmer): Create conflicts?
elif parts[0] == 'replace':

View file

@ -278,6 +278,11 @@ class GoPackageRequirement(Requirement):
self.package = package
self.version = version
def __str__(self):
if self.version:
return "go package: %s (= %s)" % (self.package, self.version)
return "go package: %s" % self.package
class GoRequirement(Requirement):
@ -287,6 +292,9 @@ class GoRequirement(Requirement):
super(GoRequirement, self).__init__("go")
self.version = version
def __str__(self):
return "go %s" % self.version
class DhAddonRequirement(Requirement):