diff options
| author | André Draszik <andre.draszik@jci.com> | 2019-01-16 12:51:16 +0000 |
|---|---|---|
| committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2019-02-02 11:05:59 +0000 |
| commit | bcb3e7b7f88adaabc7b78c7c0155b4f68da254d8 (patch) | |
| tree | c6083b67228cad87c33736985dc3f020ba028986 /meta/classes | |
| parent | 0b782c39b9bb54fc3c15942a1b7fa3f6e179f9b6 (diff) | |
| download | poky-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>
Diffstat (limited to 'meta/classes')
| -rw-r--r-- | meta/classes/update-alternatives.bbclass | 11 |
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 | ||
| 208 | PACKAGESPLITFUNCS_prepend = "populate_packages_updatealternatives " | 219 | PACKAGESPLITFUNCS_prepend = "populate_packages_updatealternatives " |
