summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--meta/lib/oe/recipeutils.py13
-rw-r--r--scripts/lib/devtool/upgrade.py53
2 files changed, 51 insertions, 15 deletions
diff --git a/meta/lib/oe/recipeutils.py b/meta/lib/oe/recipeutils.py
index cab8e40152..cab94b1350 100644
--- a/meta/lib/oe/recipeutils.py
+++ b/meta/lib/oe/recipeutils.py
@@ -22,7 +22,7 @@ from collections import OrderedDict, defaultdict
22# Help us to find places to insert values 22# Help us to find places to insert values
23recipe_progression = ['SUMMARY', 'DESCRIPTION', 'HOMEPAGE', 'BUGTRACKER', 'SECTION', 'LICENSE', 'LICENSE_FLAGS', 'LIC_FILES_CHKSUM', 'PROVIDES', 'DEPENDS', 'PR', 'PV', 'SRCREV', 'SRCPV', 'SRC_URI', 'S', 'do_fetch()', 'do_unpack()', 'do_patch()', 'EXTRA_OECONF', 'EXTRA_OECMAKE', 'EXTRA_OESCONS', 'do_configure()', 'EXTRA_OEMAKE', 'do_compile()', 'do_install()', 'do_populate_sysroot()', 'INITSCRIPT', 'USERADD', 'GROUPADD', 'PACKAGES', 'FILES', 'RDEPENDS', 'RRECOMMENDS', 'RSUGGESTS', 'RPROVIDES', 'RREPLACES', 'RCONFLICTS', 'ALLOW_EMPTY', 'populate_packages()', 'do_package()', 'do_deploy()'] 23recipe_progression = ['SUMMARY', 'DESCRIPTION', 'HOMEPAGE', 'BUGTRACKER', 'SECTION', 'LICENSE', 'LICENSE_FLAGS', 'LIC_FILES_CHKSUM', 'PROVIDES', 'DEPENDS', 'PR', 'PV', 'SRCREV', 'SRCPV', 'SRC_URI', 'S', 'do_fetch()', 'do_unpack()', 'do_patch()', 'EXTRA_OECONF', 'EXTRA_OECMAKE', 'EXTRA_OESCONS', 'do_configure()', 'EXTRA_OEMAKE', 'do_compile()', 'do_install()', 'do_populate_sysroot()', 'INITSCRIPT', 'USERADD', 'GROUPADD', 'PACKAGES', 'FILES', 'RDEPENDS', 'RRECOMMENDS', 'RSUGGESTS', 'RPROVIDES', 'RREPLACES', 'RCONFLICTS', 'ALLOW_EMPTY', 'populate_packages()', 'do_package()', 'do_deploy()']
24# Variables that sometimes are a bit long but shouldn't be wrapped 24# Variables that sometimes are a bit long but shouldn't be wrapped
25nowrap_vars = ['SUMMARY', 'HOMEPAGE', 'BUGTRACKER', 'SRC_URI[md5sum]', 'SRC_URI[sha256sum]'] 25nowrap_vars = ['SUMMARY', 'HOMEPAGE', 'BUGTRACKER', 'SRC_URI\[(.+\.)?md5sum\]', 'SRC_URI\[(.+\.)?sha256sum\]']
26list_vars = ['SRC_URI', 'LIC_FILES_CHKSUM'] 26list_vars = ['SRC_URI', 'LIC_FILES_CHKSUM']
27meta_vars = ['SUMMARY', 'DESCRIPTION', 'HOMEPAGE', 'BUGTRACKER', 'SECTION'] 27meta_vars = ['SUMMARY', 'DESCRIPTION', 'HOMEPAGE', 'BUGTRACKER', 'SECTION']
28 28
@@ -142,6 +142,10 @@ def patch_recipe_lines(fromlines, values, trailing_newline=True):
142 else: 142 else:
143 newline = '' 143 newline = ''
144 144
145 nowrap_vars_res = []
146 for item in nowrap_vars:
147 nowrap_vars_res.append(re.compile('^%s$' % item))
148
145 recipe_progression_res = [] 149 recipe_progression_res = []
146 recipe_progression_restrs = [] 150 recipe_progression_restrs = []
147 for item in recipe_progression: 151 for item in recipe_progression:
@@ -174,7 +178,12 @@ def patch_recipe_lines(fromlines, values, trailing_newline=True):
174 return 178 return
175 rawtext = '%s = "%s"%s' % (name, values[name], newline) 179 rawtext = '%s = "%s"%s' % (name, values[name], newline)
176 addlines = [] 180 addlines = []
177 if name in nowrap_vars: 181 nowrap = False
182 for nowrap_re in nowrap_vars_res:
183 if nowrap_re.match(name):
184 nowrap = True
185 break
186 if nowrap:
178 addlines.append(rawtext) 187 addlines.append(rawtext)
179 elif name in list_vars: 188 elif name in list_vars:
180 splitvalue = split_var_value(values[name], assignment=False) 189 splitvalue = split_var_value(values[name], assignment=False)
diff --git a/scripts/lib/devtool/upgrade.py b/scripts/lib/devtool/upgrade.py
index ab7acd16c6..6d51958d51 100644
--- a/scripts/lib/devtool/upgrade.py
+++ b/scripts/lib/devtool/upgrade.py
@@ -55,17 +55,6 @@ def _copy_source_code(orig, dest):
55 dest_path = os.path.join(dest, path) 55 dest_path = os.path.join(dest, path)
56 shutil.move(os.path.join(orig, path), dest_path) 56 shutil.move(os.path.join(orig, path), dest_path)
57 57
58def _get_checksums(rf):
59 import re
60 checksums = {}
61 with open(rf) as f:
62 for line in f:
63 for cs in ['md5sum', 'sha256sum']:
64 m = re.match("^SRC_URI\[%s\].*=.*\"(.*)\"" % cs, line)
65 if m:
66 checksums[cs] = m.group(1)
67 return checksums
68
69def _remove_patch_dirs(recipefolder): 58def _remove_patch_dirs(recipefolder):
70 for root, dirs, files in os.walk(recipefolder): 59 for root, dirs, files in os.walk(recipefolder):
71 for d in dirs: 60 for d in dirs:
@@ -353,9 +342,47 @@ def _create_new_recipe(newpv, md5, sha256, srcrev, srcbranch, workspace, tinfoil
353 342
354 newvalues['PR'] = None 343 newvalues['PR'] = None
355 344
345 # Work out which SRC_URI entries have changed in case the entry uses a name
346 crd = rd.createCopy()
347 crd.setVar('PV', newpv)
348 for var, value in newvalues.items():
349 crd.setVar(var, value)
350 old_src_uri = (rd.getVar('SRC_URI') or '').split()
351 new_src_uri = (crd.getVar('SRC_URI') or '').split()
352 newnames = []
353 addnames = []
354 for newentry in new_src_uri:
355 _, _, _, _, _, params = bb.fetch2.decodeurl(newentry)
356 if 'name' in params:
357 newnames.append(params['name'])
358 if newentry not in old_src_uri:
359 addnames.append(params['name'])
360 # Find what's been set in the original recipe
361 oldnames = []
362 noname = False
363 for varflag in rd.getVarFlags('SRC_URI'):
364 if varflag.endswith(('.md5sum', '.sha256sum')):
365 name = varflag.rsplit('.', 1)[0]
366 if name not in oldnames:
367 oldnames.append(name)
368 elif varflag in ['md5sum', 'sha256sum']:
369 noname = True
370 # Even if SRC_URI has named entries it doesn't have to actually use the name
371 if noname and addnames and addnames[0] not in oldnames:
372 addnames = []
373 # Drop any old names (the name actually might include ${PV})
374 for name in oldnames:
375 if name not in newnames:
376 newvalues['SRC_URI[%s.md5sum]' % name] = None
377 newvalues['SRC_URI[%s.sha256sum]' % name] = None
378
356 if md5 and sha256: 379 if md5 and sha256:
357 newvalues['SRC_URI[md5sum]'] = md5 380 if addnames:
358 newvalues['SRC_URI[sha256sum]'] = sha256 381 nameprefix = '%s.' % addnames[0]
382 else:
383 nameprefix = ''
384 newvalues['SRC_URI[%smd5sum]' % nameprefix] = md5
385 newvalues['SRC_URI[%ssha256sum]' % nameprefix] = sha256
359 386
360 rd = tinfoil.parse_recipe_file(fullpath, False) 387 rd = tinfoil.parse_recipe_file(fullpath, False)
361 oe.recipeutils.patch_recipe(rd, fullpath, newvalues) 388 oe.recipeutils.patch_recipe(rd, fullpath, newvalues)