summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndré Draszik <andre.draszik@jci.com>2019-01-16 12:51:15 +0000
committerRichard Purdie <richard.purdie@linuxfoundation.org>2019-02-02 11:05:59 +0000
commit0b782c39b9bb54fc3c15942a1b7fa3f6e179f9b6 (patch)
treed6d9848f6de9fc2471c7dccbcc00f4e7bd887904
parent763593e597a071ee4871e22323f53c5f8b558797 (diff)
downloadpoky-0b782c39b9bb54fc3c15942a1b7fa3f6e179f9b6.tar.gz
update-alternatives: convert file renames to PACKAGE_PREPROCESS_FUNCS
At the moment, the update-alternatives file renaming is happening right after copying into PKGD during packaging time using an _append OVERRIDE to the copy function perform_packagecopy(). This is not really readable and hard to maintain. Additionally, this makes it impossible to e.g. populate PACKAGES dynamically using do_split_packages() and still do update-alternatives - update-alternatives file renaming requires the PACKAGES variable to have been fully populated to work correctly. On the other hand, do_split_packages() can only execute after perform_packagecopy(), as it needs PKGD populated; so it's impossible to insert do_split_packages() early enough in a deterministic way in this use-case. As there doesn't seem to be a reason not to, convert this to a proper function and use PACKAGE_PREPROCESS_FUNCS instead - after all, that's what this is meant for. No other classes or recipes in oe-core or meta-openembededd seem to have a hard requirement on update-alterantives executing before any other PACKAGE_PREPROCESS_FUNCS, so this should be perfectly fine. The only implication is that if compress_doc is inherited, compressed man-page file names will end up being, e.g. eject.1.util-linux.gz or eject.1.gz.util-linux based on the include of compress_doc.bbclass vs. update-alternatives.bbclass order, but the symlink created (alternative name) will always be correct. This solves both problems: * the code is easier to read / follow * the above described use-case can be accomodated easily [YOCTO #13058] (From OE-Core rev: 8c3db2fa735e5933f842f80321bb3ed38753812d) 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.bbclass14
1 files changed, 7 insertions, 7 deletions
diff --git a/meta/classes/update-alternatives.bbclass b/meta/classes/update-alternatives.bbclass
index f1250f877b..f3c014a5fc 100644
--- a/meta/classes/update-alternatives.bbclass
+++ b/meta/classes/update-alternatives.bbclass
@@ -131,14 +131,13 @@ def gen_updatealternativesvars(d):
131populate_packages[vardeps] += "${UPDALTVARS} ${@gen_updatealternativesvars(d)}" 131populate_packages[vardeps] += "${UPDALTVARS} ${@gen_updatealternativesvars(d)}"
132 132
133# We need to do the rename after the image creation step, but before 133# We need to do the rename after the image creation step, but before
134# the split and strip steps.. packagecopy seems to be the earliest reasonable 134# the split and strip steps.. PACKAGE_PREPROCESS_FUNCS is the right
135# place. 135# place for that.
136python perform_packagecopy_append () { 136PACKAGE_PREPROCESS_FUNCS += "apply_update_alternative_renames"
137 if update_alternatives_enabled(d): 137python apply_update_alternative_renames () {
138 apply_update_alternative_renames(d) 138 if not update_alternatives_enabled(d):
139} 139 return
140 140
141def apply_update_alternative_renames(d):
142 # Check for deprecated usage... 141 # Check for deprecated usage...
143 pn = d.getVar('BPN') 142 pn = d.getVar('BPN')
144 if d.getVar('ALTERNATIVE_LINKS') != None: 143 if d.getVar('ALTERNATIVE_LINKS') != None:
@@ -204,6 +203,7 @@ def apply_update_alternative_renames(d):
204 os.unlink(src) 203 os.unlink(src)
205 else: 204 else:
206 bb.warn('%s: Unable to resolve dangling symlink: %s' % (pn, alt_target)) 205 bb.warn('%s: Unable to resolve dangling symlink: %s' % (pn, alt_target))
206}
207 207
208PACKAGESPLITFUNCS_prepend = "populate_packages_updatealternatives " 208PACKAGESPLITFUNCS_prepend = "populate_packages_updatealternatives "
209 209