summaryrefslogtreecommitdiff
path: root/poky/scripts/lib/recipetool
diff options
context:
space:
mode:
Diffstat (limited to 'poky/scripts/lib/recipetool')
-rw-r--r--poky/scripts/lib/recipetool/create_go.py34
1 files changed, 16 insertions, 18 deletions
diff --git a/poky/scripts/lib/recipetool/create_go.py b/poky/scripts/lib/recipetool/create_go.py
index c560831442..a85a2f2786 100644
--- a/poky/scripts/lib/recipetool/create_go.py
+++ b/poky/scripts/lib/recipetool/create_go.py
@@ -16,7 +16,7 @@ from html.parser import HTMLParser
from recipetool.create import RecipeHandler, handle_license_vars
from recipetool.create import guess_license, tidy_licenses, fixup_license
from recipetool.create import determine_from_url
-from urllib.error import URLError
+from urllib.error import URLError, HTTPError
import bb.utils
import json
@@ -225,7 +225,7 @@ class GoRecipeHandler(RecipeHandler):
def __init__(self):
super().__init__()
- self.__srv = []
+ self.__srv = {}
def handle_starttag(self, tag, attrs):
if tag == 'meta' and list(
@@ -233,36 +233,34 @@ class GoRecipeHandler(RecipeHandler):
content = list(
filter(lambda a: (a[0] == 'content'), attrs))
if content:
- self.__srv = content[0][1].split()
+ srv = content[0][1].split()
+ self.__srv[srv[0]] = srv
- @property
- def import_prefix(self):
- return self.__srv[0] if len(self.__srv) else None
-
- @property
- def vcs(self):
- return self.__srv[1] if len(self.__srv) else None
-
- @property
- def repourl(self):
- return self.__srv[2] if len(self.__srv) else None
+ def go_import(self, modulepath):
+ if modulepath in self.__srv:
+ srv = self.__srv[modulepath]
+ return GoImport(srv[0], srv[1], srv[2], None)
+ return None
url = url.geturl() + "?go-get=1"
req = urllib.request.Request(url)
try:
- resp = urllib.request.urlopen(req)
-
+ body = urllib.request.urlopen(req).read()
+ except HTTPError as http_err:
+ logger.warning(
+ "Unclean status when fetching page from [%s]: %s", url, str(http_err))
+ body = http_err.fp.read()
except URLError as url_err:
logger.warning(
"Failed to fetch page from [%s]: %s", url, str(url_err))
return None
parser = GoImportHTMLParser()
- parser.feed(resp.read().decode('utf-8'))
+ parser.feed(body.decode('utf-8'))
parser.close()
- return GoImport(parser.import_prefix, parser.vcs, parser.repourl, None)
+ return parser.go_import(modulepath)
def __resolve_from_golang_proxy(self, modulepath, version):
"""