diff options
Diffstat (limited to 'bitbake/lib/bb/fetch2')
-rw-r--r-- | bitbake/lib/bb/fetch2/crate.py | 9 | ||||
-rw-r--r-- | bitbake/lib/bb/fetch2/gcp.py | 1 | ||||
-rw-r--r-- | bitbake/lib/bb/fetch2/npmsw.py | 2 | ||||
-rw-r--r-- | bitbake/lib/bb/fetch2/svn.py | 3 | ||||
-rw-r--r-- | bitbake/lib/bb/fetch2/wget.py | 30 |
5 files changed, 31 insertions, 14 deletions
diff --git a/bitbake/lib/bb/fetch2/crate.py b/bitbake/lib/bb/fetch2/crate.py index 01d49435c3..e611736f06 100644 --- a/bitbake/lib/bb/fetch2/crate.py +++ b/bitbake/lib/bb/fetch2/crate.py | |||
@@ -70,6 +70,7 @@ class Crate(Wget): | |||
70 | host = 'crates.io/api/v1/crates' | 70 | host = 'crates.io/api/v1/crates' |
71 | 71 | ||
72 | ud.url = "https://%s/%s/%s/download" % (host, name, version) | 72 | ud.url = "https://%s/%s/%s/download" % (host, name, version) |
73 | ud.versionsurl = "https://%s/%s/versions" % (host, name) | ||
73 | ud.parm['downloadfilename'] = "%s-%s.crate" % (name, version) | 74 | ud.parm['downloadfilename'] = "%s-%s.crate" % (name, version) |
74 | if 'name' not in ud.parm: | 75 | if 'name' not in ud.parm: |
75 | ud.parm['name'] = '%s-%s' % (name, version) | 76 | ud.parm['name'] = '%s-%s' % (name, version) |
@@ -139,3 +140,11 @@ class Crate(Wget): | |||
139 | mdpath = os.path.join(bbpath, cratepath, mdfile) | 140 | mdpath = os.path.join(bbpath, cratepath, mdfile) |
140 | with open(mdpath, "w") as f: | 141 | with open(mdpath, "w") as f: |
141 | json.dump(metadata, f) | 142 | json.dump(metadata, f) |
143 | |||
144 | def latest_versionstring(self, ud, d): | ||
145 | from functools import cmp_to_key | ||
146 | json_data = json.loads(self._fetch_index(ud.versionsurl, ud, d)) | ||
147 | versions = [(0, i["num"], "") for i in json_data["versions"]] | ||
148 | versions = sorted(versions, key=cmp_to_key(bb.utils.vercmp)) | ||
149 | |||
150 | return (versions[-1][1], "") | ||
diff --git a/bitbake/lib/bb/fetch2/gcp.py b/bitbake/lib/bb/fetch2/gcp.py index f40ce2eaa5..eb3e0c6a6b 100644 --- a/bitbake/lib/bb/fetch2/gcp.py +++ b/bitbake/lib/bb/fetch2/gcp.py | |||
@@ -23,6 +23,7 @@ import urllib.parse, urllib.error | |||
23 | from bb.fetch2 import FetchMethod | 23 | from bb.fetch2 import FetchMethod |
24 | from bb.fetch2 import FetchError | 24 | from bb.fetch2 import FetchError |
25 | from bb.fetch2 import logger | 25 | from bb.fetch2 import logger |
26 | from bb.fetch2 import runfetchcmd | ||
26 | 27 | ||
27 | class GCP(FetchMethod): | 28 | class GCP(FetchMethod): |
28 | """ | 29 | """ |
diff --git a/bitbake/lib/bb/fetch2/npmsw.py b/bitbake/lib/bb/fetch2/npmsw.py index ff5f8dc755..b55e885d7b 100644 --- a/bitbake/lib/bb/fetch2/npmsw.py +++ b/bitbake/lib/bb/fetch2/npmsw.py | |||
@@ -268,7 +268,7 @@ class NpmShrinkWrap(FetchMethod): | |||
268 | 268 | ||
269 | def unpack(self, ud, rootdir, d): | 269 | def unpack(self, ud, rootdir, d): |
270 | """Unpack the downloaded dependencies""" | 270 | """Unpack the downloaded dependencies""" |
271 | destdir = d.getVar("S") | 271 | destdir = rootdir |
272 | destsuffix = ud.parm.get("destsuffix") | 272 | destsuffix = ud.parm.get("destsuffix") |
273 | if destsuffix: | 273 | if destsuffix: |
274 | destdir = os.path.join(rootdir, destsuffix) | 274 | destdir = os.path.join(rootdir, destsuffix) |
diff --git a/bitbake/lib/bb/fetch2/svn.py b/bitbake/lib/bb/fetch2/svn.py index d40e4d2909..0852108e7d 100644 --- a/bitbake/lib/bb/fetch2/svn.py +++ b/bitbake/lib/bb/fetch2/svn.py | |||
@@ -210,3 +210,6 @@ class Svn(FetchMethod): | |||
210 | 210 | ||
211 | def _build_revision(self, ud, d): | 211 | def _build_revision(self, ud, d): |
212 | return ud.revision | 212 | return ud.revision |
213 | |||
214 | def supports_checksum(self, urldata): | ||
215 | return False | ||
diff --git a/bitbake/lib/bb/fetch2/wget.py b/bitbake/lib/bb/fetch2/wget.py index dc025800e6..2e92117634 100644 --- a/bitbake/lib/bb/fetch2/wget.py +++ b/bitbake/lib/bb/fetch2/wget.py | |||
@@ -87,7 +87,10 @@ class Wget(FetchMethod): | |||
87 | if not ud.localfile: | 87 | if not ud.localfile: |
88 | ud.localfile = d.expand(urllib.parse.unquote(ud.host + ud.path).replace("/", ".")) | 88 | ud.localfile = d.expand(urllib.parse.unquote(ud.host + ud.path).replace("/", ".")) |
89 | 89 | ||
90 | self.basecmd = d.getVar("FETCHCMD_wget") or "/usr/bin/env wget -t 2 -T 30 --passive-ftp" | 90 | self.basecmd = d.getVar("FETCHCMD_wget") or "/usr/bin/env wget -t 2 -T 30" |
91 | |||
92 | if ud.type == 'ftp' or ud.type == 'ftps': | ||
93 | self.basecmd += " --passive-ftp" | ||
91 | 94 | ||
92 | if not self.check_certs(d): | 95 | if not self.check_certs(d): |
93 | self.basecmd += " --no-check-certificate" | 96 | self.basecmd += " --no-check-certificate" |
@@ -105,7 +108,8 @@ class Wget(FetchMethod): | |||
105 | 108 | ||
106 | fetchcmd = self.basecmd | 109 | fetchcmd = self.basecmd |
107 | 110 | ||
108 | localpath = os.path.join(d.getVar("DL_DIR"), ud.localfile) + ".tmp" | 111 | dldir = os.path.realpath(d.getVar("DL_DIR")) |
112 | localpath = os.path.join(dldir, ud.localfile) + ".tmp" | ||
109 | bb.utils.mkdirhier(os.path.dirname(localpath)) | 113 | bb.utils.mkdirhier(os.path.dirname(localpath)) |
110 | fetchcmd += " -O %s" % shlex.quote(localpath) | 114 | fetchcmd += " -O %s" % shlex.quote(localpath) |
111 | 115 | ||
@@ -125,12 +129,21 @@ class Wget(FetchMethod): | |||
125 | uri = ud.url.split(";")[0] | 129 | uri = ud.url.split(";")[0] |
126 | if os.path.exists(ud.localpath): | 130 | if os.path.exists(ud.localpath): |
127 | # file exists, but we didnt complete it.. trying again.. | 131 | # file exists, but we didnt complete it.. trying again.. |
128 | fetchcmd += d.expand(" -c -P ${DL_DIR} '%s'" % uri) | 132 | fetchcmd += " -c -P " + dldir + " '" + uri + "'" |
129 | else: | 133 | else: |
130 | fetchcmd += d.expand(" -P ${DL_DIR} '%s'" % uri) | 134 | fetchcmd += " -P " + dldir + " '" + uri + "'" |
131 | 135 | ||
132 | self._runwget(ud, d, fetchcmd, False) | 136 | self._runwget(ud, d, fetchcmd, False) |
133 | 137 | ||
138 | # Sanity check since wget can pretend it succeed when it didn't | ||
139 | # Also, this used to happen if sourceforge sent us to the mirror page | ||
140 | if not os.path.exists(localpath): | ||
141 | raise FetchError("The fetch command returned success for url %s but %s doesn't exist?!" % (uri, localpath), uri) | ||
142 | |||
143 | if os.path.getsize(localpath) == 0: | ||
144 | os.remove(localpath) | ||
145 | raise FetchError("The fetch of %s resulted in a zero size file?! Deleting and failing since this isn't right." % (uri), uri) | ||
146 | |||
134 | # Try and verify any checksum now, meaning if it isn't correct, we don't remove the | 147 | # Try and verify any checksum now, meaning if it isn't correct, we don't remove the |
135 | # original file, which might be a race (imagine two recipes referencing the same | 148 | # original file, which might be a race (imagine two recipes referencing the same |
136 | # source, one with an incorrect checksum) | 149 | # source, one with an incorrect checksum) |
@@ -140,15 +153,6 @@ class Wget(FetchMethod): | |||
140 | # Our lock prevents multiple writers but mirroring code may grab incomplete files | 153 | # Our lock prevents multiple writers but mirroring code may grab incomplete files |
141 | os.rename(localpath, localpath[:-4]) | 154 | os.rename(localpath, localpath[:-4]) |
142 | 155 | ||
143 | # Sanity check since wget can pretend it succeed when it didn't | ||
144 | # Also, this used to happen if sourceforge sent us to the mirror page | ||
145 | if not os.path.exists(ud.localpath): | ||
146 | raise FetchError("The fetch command returned success for url %s but %s doesn't exist?!" % (uri, ud.localpath), uri) | ||
147 | |||
148 | if os.path.getsize(ud.localpath) == 0: | ||
149 | os.remove(ud.localpath) | ||
150 | raise FetchError("The fetch of %s resulted in a zero size file?! Deleting and failing since this isn't right." % (uri), uri) | ||
151 | |||
152 | return True | 156 | return True |
153 | 157 | ||
154 | def checkstatus(self, fetch, ud, d, try_again=True): | 158 | def checkstatus(self, fetch, ud, d, try_again=True): |