The alternative links are invalid during do_rootfs. Add a new ALTERNATIVE_TARGET_RELATIVE family of variables to conditionally make these links valid. This is limited to the case when the binary and the symlink are in the same directory.
Signed-off-by: Böszörményi Zoltán <zbos...@pr.hu> --- meta/classes/update-alternatives.bbclass | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/meta/classes/update-alternatives.bbclass b/meta/classes/update-alternatives.bbclass index aa01058cf9..7af559c918 100644 --- a/meta/classes/update-alternatives.bbclass +++ b/meta/classes/update-alternatives.bbclass @@ -47,6 +47,15 @@ # the need to rename alternative files in the do_install step, but still # supports it if necessary for some reason.) # +# The default to use relative link for all targets +# ALTERNATIVE_TARGET_RELATIVE = "1" +# +# A non-default setting to use relative link for a target +# ALTERNATIVE_TARGET_RELATIVE[name] = "1" +# +# A package specific setting to use relative link for a target +# ALTERNATIVE_TARGET_RELATIVE_<pkg>[name] = "1" +# # The default priority for any alternatives # ALTERNATIVE_PRIORITY = "priority" # @@ -214,6 +223,10 @@ python populate_packages_updatealternatives () { # Sometimes alt_target is specified as relative to the link name. alt_target = os.path.join(os.path.dirname(alt_link), alt_target) + # Whether to use relative symlink target + alt_relative = d.getVarFlag('ALTERNATIVE_TARGET_RELATIVE_%s' % pkg, alt_name) or d.getVarFlag('ALTERNATIVE_TARGET_RELATIVE', alt_name) + alt_relative = alt_relative or d.getVar('ALTERNATIVE_TARGET_RELATIVE_%s' % pkg) or d.getVar('ALTERNATIVE_TARGET_RELATIVE') + alt_priority = d.getVarFlag('ALTERNATIVE_PRIORITY_%s' % pkg, alt_name) or d.getVarFlag('ALTERNATIVE_PRIORITY', alt_name) alt_priority = alt_priority or d.getVar('ALTERNATIVE_PRIORITY_%s' % pkg) or d.getVar('ALTERNATIVE_PRIORITY') @@ -229,8 +242,13 @@ python populate_packages_updatealternatives () { # Default to generate shell script.. eventually we may want to change this... alt_target = os.path.normpath(alt_target) - alt_setup_links += '\tupdate-alternatives --install %s %s %s %s\n' % (alt_link, alt_name, alt_target, alt_priority) - alt_remove_links += '\tupdate-alternatives --remove %s %s\n' % (alt_name, alt_target) + if alt_relative and alt_target.startswith(alt_link): + alt_target_final = os.path.basename(alt_target) + else: + alt_target_final = alt_target + + alt_setup_links += '\tupdate-alternatives --install %s %s %s %s\n' % (alt_link, alt_name, alt_target_final, alt_priority) + alt_remove_links += '\tupdate-alternatives --remove %s %s\n' % (alt_name, alt_target_final) if alt_setup_links: # RDEPENDS setup -- 2.19.1 -- _______________________________________________ Openembedded-core mailing list Openembedded-core@lists.openembedded.org http://lists.openembedded.org/mailman/listinfo/openembedded-core