compress_doc.bbclass: support update-alternatives
While doc file make use of update-alternatives to fix confliction, we should reconfigure update-alternatives for doc compression. Such as util-linux-doc: ... update-alternatives --install /usr/share/man/man1/last.1 last.1 /usr/share/man/man1/last.1.util-linux 100 ... was updated by doc_compress to ... update-alternatives --install /usr/share/man/man1/last.1.bz2 last.1.bz2 /usr/share/man/man1/last.1.util-linux.bz2 100 ... (From OE-Core rev: ba4dd1afc2476259eff52f8a68fba1344e0f0474) Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com> Signed-off-by: Ross Burton <ross.burton@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
parent
887ffa0d7e
commit
5030c7fb3e
|
@ -29,7 +29,7 @@ DOC_DECOMPRESS_CMD[gz] ?= 'gunzip -v'
|
|||
DOC_DECOMPRESS_CMD[bz2] ?= "bunzip2 -v"
|
||||
DOC_DECOMPRESS_CMD[xz] ?= "unxz -v"
|
||||
|
||||
PACKAGE_PREPROCESS_FUNCS += "package_do_compress_doc"
|
||||
PACKAGE_PREPROCESS_FUNCS += "package_do_compress_doc compress_doc_updatealternatives"
|
||||
python package_do_compress_doc() {
|
||||
compress_mode = d.getVar('DOC_COMPRESS', True)
|
||||
compress_list = (d.getVar('DOC_COMPRESS_LIST', True) or '').split()
|
||||
|
@ -214,3 +214,47 @@ def decompress_doc(topdir, compress_mode, decompress_cmds):
|
|||
|
||||
_process_hardlink(hardlink_dict, compress_mode, decompress_cmds, decompress)
|
||||
|
||||
python compress_doc_updatealternatives () {
|
||||
if not bb.data.inherits_class('update-alternatives', d):
|
||||
return
|
||||
|
||||
mandir = d.getVar("mandir", True)
|
||||
infodir = d.getVar("infodir", True)
|
||||
compress_mode = d.getVar('DOC_COMPRESS', True)
|
||||
for pkg in (d.getVar('PACKAGES', True) or "").split():
|
||||
old_names = (d.getVar('ALTERNATIVE_%s' % pkg, True) or "").split()
|
||||
new_names = []
|
||||
for old_name in old_names:
|
||||
old_link = d.getVarFlag('ALTERNATIVE_LINK_NAME', old_name, True)
|
||||
old_target = d.getVarFlag('ALTERNATIVE_TARGET_%s' % pkg, old_name, True) or \
|
||||
d.getVarFlag('ALTERNATIVE_TARGET', old_name, True) or \
|
||||
d.getVar('ALTERNATIVE_TARGET_%s' % pkg, True) or \
|
||||
d.getVar('ALTERNATIVE_TARGET', True) or \
|
||||
old_link
|
||||
# Sometimes old_target is specified as relative to the link name.
|
||||
old_target = os.path.join(os.path.dirname(old_link), old_target)
|
||||
|
||||
# The updatealternatives used for compress doc
|
||||
if mandir in old_target or infodir in old_target:
|
||||
new_name = old_name + '.' + compress_mode
|
||||
new_link = old_link + '.' + compress_mode
|
||||
new_target = old_target + '.' + compress_mode
|
||||
d.delVarFlag('ALTERNATIVE_LINK_NAME', old_name)
|
||||
d.setVarFlag('ALTERNATIVE_LINK_NAME', new_name, new_link)
|
||||
if d.getVarFlag('ALTERNATIVE_TARGET_%s' % pkg, old_name, True):
|
||||
d.delVarFlag('ALTERNATIVE_TARGET_%s' % pkg, old_name)
|
||||
d.setVarFlag('ALTERNATIVE_TARGET_%s' % pkg, new_name, new_target)
|
||||
elif d.getVarFlag('ALTERNATIVE_TARGET', old_name, True):
|
||||
d.delVarFlag('ALTERNATIVE_TARGET', old_name)
|
||||
d.setVarFlag('ALTERNATIVE_TARGET', new_name, new_target)
|
||||
elif d.getVar('ALTERNATIVE_TARGET_%s' % pkg, True):
|
||||
d.setVar('ALTERNATIVE_TARGET_%s' % pkg, new_target)
|
||||
elif d.getVar('ALTERNATIVE_TARGET', old_name, True):
|
||||
d.setVar('ALTERNATIVE_TARGET', new_target)
|
||||
|
||||
new_names.append(new_name)
|
||||
|
||||
if new_names:
|
||||
d.setVar('ALTERNATIVE_%s' % pkg, ' '.join(new_names))
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue