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

View file

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