summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--meta/classes/archiver.bbclass20
1 files changed, 19 insertions, 1 deletions
diff --git a/meta/classes/archiver.bbclass b/meta/classes/archiver.bbclass
index 2f3b278fb3..5f9c91d2f8 100644
--- a/meta/classes/archiver.bbclass
+++ b/meta/classes/archiver.bbclass
@@ -132,7 +132,25 @@ python do_ar_original() {
132 132
133 ar_outdir = d.getVar('ARCHIVER_OUTDIR', True) 133 ar_outdir = d.getVar('ARCHIVER_OUTDIR', True)
134 bb.note('Archiving the original source...') 134 bb.note('Archiving the original source...')
135 fetch = bb.fetch2.Fetch([], d) 135 urls = d.getVar("SRC_URI", True).split()
136 # destsuffix (git fetcher) and subdir (everything else) are allowed to be
137 # absolute paths (for example, destsuffix=${S}/foobar).
138 # That messes with unpacking inside our tmpdir below, because the fetchers
139 # will then unpack in that directory and completely ignore the tmpdir.
140 # That breaks parallel tasks relying on ${S}, like do_compile.
141 #
142 # To solve this, we remove these parameters from all URLs.
143 # We do this even for relative paths because it makes the content of the
144 # archives more useful (no extra paths that are only used during
145 # compilation).
146 for i, url in enumerate(urls):
147 decoded = bb.fetch2.decodeurl(url)
148 for param in ('destsuffix', 'subdir'):
149 if param in decoded[5]:
150 del decoded[5][param]
151 encoded = bb.fetch2.encodeurl(decoded)
152 urls[i] = encoded
153 fetch = bb.fetch2.Fetch(urls, d)
136 for url in fetch.urls: 154 for url in fetch.urls:
137 local = fetch.localpath(url).rstrip("/"); 155 local = fetch.localpath(url).rstrip("/");
138 if os.path.isfile(local): 156 if os.path.isfile(local):