summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndré Draszik <andre.draszik@jci.com>2019-01-16 12:51:16 +0000
committerRichard Purdie <richard.purdie@linuxfoundation.org>2019-02-02 11:05:59 +0000
commitbcb3e7b7f88adaabc7b78c7c0155b4f68da254d8 (patch)
treec6083b67228cad87c33736985dc3f020ba028986
parent0b782c39b9bb54fc3c15942a1b7fa3f6e179f9b6 (diff)
downloadpoky-bcb3e7b7f88adaabc7b78c7c0155b4f68da254d8.tar.gz
update-alternatives: try to update FILES_${PN} when renaming a file
When using update-alternatives, FILES_${PN} must be referencing the new name after update-alternatives has renamed files. This is more or less OK when having static lists of files to be packaged into a package, but makes it quite hard to dynamically generate FILES_${PN}, e.g. using do_split_packages(), as in that case we can not easily modify what goes into FILES_${PN}, because that list is based on filenames as seen at the time do_split_packages() is executing. Of couse one could explicitly specify the (renamed) file(s) in the recipe, but that contradicts the intended usage of do_split_packages(). Instead, if FILES_${PN} contains the file name as it was pre renaming, we here modify this to reflect the new name. This will allow usage of do_split_packages() to populate FILES_${PN}. [YOCTO #13058] (From OE-Core rev: 5c23fe378732038643a450cbf916334d24764b70) Signed-off-by: André Draszik <andre.draszik@jci.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-rw-r--r--meta/classes/update-alternatives.bbclass11
1 files changed, 11 insertions, 0 deletions
diff --git a/meta/classes/update-alternatives.bbclass b/meta/classes/update-alternatives.bbclass
index f3c014a5fc..e252651128 100644
--- a/meta/classes/update-alternatives.bbclass
+++ b/meta/classes/update-alternatives.bbclass
@@ -138,6 +138,14 @@ python apply_update_alternative_renames () {
138 if not update_alternatives_enabled(d): 138 if not update_alternatives_enabled(d):
139 return 139 return
140 140
141 from re import sub
142
143 def update_files(alt_target, alt_target_rename, pkg, d):
144 f = d.getVar('FILES_' + pkg)
145 if f:
146 f = sub(r'(^|\s)%s(\s|$)' % alt_target, r'\1%s\2' % alt_target_rename, f)
147 d.setVar('FILES_' + pkg, f)
148
141 # Check for deprecated usage... 149 # Check for deprecated usage...
142 pn = d.getVar('BPN') 150 pn = d.getVar('BPN')
143 if d.getVar('ALTERNATIVE_LINKS') != None: 151 if d.getVar('ALTERNATIVE_LINKS') != None:
@@ -177,6 +185,7 @@ python apply_update_alternative_renames () {
177 else: 185 else:
178 bb.note('%s: Rename %s -> %s' % (pn, alt_target, alt_target_rename)) 186 bb.note('%s: Rename %s -> %s' % (pn, alt_target, alt_target_rename))
179 os.rename(src, dest) 187 os.rename(src, dest)
188 update_files(alt_target, alt_target_rename, pkg, d)
180 else: 189 else:
181 bb.warn("%s: alternative target (%s or %s) does not exist, skipping..." % (pn, alt_target, alt_target_rename)) 190 bb.warn("%s: alternative target (%s or %s) does not exist, skipping..." % (pn, alt_target, alt_target_rename))
182 continue 191 continue
@@ -203,6 +212,8 @@ python apply_update_alternative_renames () {
203 os.unlink(src) 212 os.unlink(src)
204 else: 213 else:
205 bb.warn('%s: Unable to resolve dangling symlink: %s' % (pn, alt_target)) 214 bb.warn('%s: Unable to resolve dangling symlink: %s' % (pn, alt_target))
215 continue
216 update_files(alt_target, alt_target_rename, pkg, d)
206} 217}
207 218
208PACKAGESPLITFUNCS_prepend = "populate_packages_updatealternatives " 219PACKAGESPLITFUNCS_prepend = "populate_packages_updatealternatives "