summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--meta/classes/archiver.bbclass17
1 files changed, 16 insertions, 1 deletions
diff --git a/meta/classes/archiver.bbclass b/meta/classes/archiver.bbclass
index 5f9c91d2f8..1d8e863bdc 100644
--- a/meta/classes/archiver.bbclass
+++ b/meta/classes/archiver.bbclass
@@ -151,6 +151,7 @@ python do_ar_original() {
151 encoded = bb.fetch2.encodeurl(decoded) 151 encoded = bb.fetch2.encodeurl(decoded)
152 urls[i] = encoded 152 urls[i] = encoded
153 fetch = bb.fetch2.Fetch(urls, d) 153 fetch = bb.fetch2.Fetch(urls, d)
154 tarball_suffix = {}
154 for url in fetch.urls: 155 for url in fetch.urls:
155 local = fetch.localpath(url).rstrip("/"); 156 local = fetch.localpath(url).rstrip("/");
156 if os.path.isfile(local): 157 if os.path.isfile(local):
@@ -158,7 +159,21 @@ python do_ar_original() {
158 elif os.path.isdir(local): 159 elif os.path.isdir(local):
159 tmpdir = tempfile.mkdtemp(dir=d.getVar('ARCHIVER_WORKDIR', True)) 160 tmpdir = tempfile.mkdtemp(dir=d.getVar('ARCHIVER_WORKDIR', True))
160 fetch.unpack(tmpdir, (url,)) 161 fetch.unpack(tmpdir, (url,))
161 create_tarball(d, tmpdir + '/.', '', ar_outdir) 162 # To handle recipes with more than one source, we add the "name"
163 # URL parameter as suffix. We treat it as an error when
164 # there's more than one URL without a name, or a name gets reused.
165 # This is an additional safety net, in practice the name has
166 # to be set when using the git fetcher, otherwise SRCREV cannot
167 # be set separately for each URL.
168 params = bb.fetch2.decodeurl(url)[5]
169 name = params.get('name', '')
170 if name in tarball_suffix:
171 if not name:
172 bb.fatal("Cannot determine archive names for original source because 'name' URL parameter is unset in more than one URL. Add it to at least one of these: %s %s" % (tarball_suffix[name], url))
173 else:
174 bb.fatal("Cannot determine archive names for original source because 'name=' URL parameter '%s' is used twice. Make it unique in: %s %s" % (tarball_suffix[name], url))
175 tarball_suffix[name] = url
176 create_tarball(d, tmpdir + '/.', name, ar_outdir)
162 177
163 # Emit patch series files for 'original' 178 # Emit patch series files for 'original'
164 bb.note('Writing patch series files...') 179 bb.note('Writing patch series files...')