diff options
Diffstat (limited to 'recipes/update-alternatives/update-alternatives-cworth.inc')
-rw-r--r-- | recipes/update-alternatives/update-alternatives-cworth.inc | 44 |
1 files changed, 42 insertions, 2 deletions
diff --git a/recipes/update-alternatives/update-alternatives-cworth.inc b/recipes/update-alternatives/update-alternatives-cworth.inc index 2d8fd42c0c..217b787bd0 100644 --- a/recipes/update-alternatives/update-alternatives-cworth.inc +++ b/recipes/update-alternatives/update-alternatives-cworth.inc @@ -1,8 +1,48 @@ LICENSE = "GPL" SECTION = "base" SRC_URI = "${HANDHELDS_CVS};module=familiar/dist/ipkg;tag=${@'V' + bb.data.getVar('PV',d,1).replace('.', '-')} \ - file://update-alternatives.use.last.patch;patch=1" + file://update-alternatives.use.last.patch;patch=1 \ + file://use-opkg-dir-instead-of-ipkg.patch;patch=1 " S = "${WORKDIR}/ipkg/C" PACKAGE_ARCH = "all" -INC_PR = "r3" +INC_PR = "r4" + +# Moves all entries from /usr/lib/ipkg/alternatives to /usr/lib/opkg/alternatives +# If it exists in both it use file with more lines + +pkg_postinst() { + alternatives_dir_old="${prefix}/lib/ipkg/alternatives" + alternatives_dir_new="${prefix}/lib/opkg/alternatives" + if [ -e "${alternatives_dir_old}" ] ; then + echo "Old alternatives directory ${alternatives_dir_old} exists, moving entries to new one ${alternatives_dir_new}" + echo "Creating backup copy of both ${alternatives_dir_old}-backup and ${alternatives_dir_new}-backup" + cp -ra "${alternatives_dir_old}" "${alternatives_dir_old}-backup" + cp -ra "${alternatives_dir_new}" "${alternatives_dir_new}-backup" + + cd ${alternatives_dir_old} + for alt_file in * ; do + if [ ! -e "${alternatives_dir_new}/${alt_file}" ] ; then + echo "Moving old '${alternatives_dir_old}/${alt_file}' to '${alternatives_dir_new}/${alt_file}'"; + mv -f "${alternatives_dir_old}/${alt_file}" "${alternatives_dir_new}/${alt_file}" + else + OLD_LINES=`wc -l ${alternatives_dir_old}/${alt_file} | cut -d/ -f 1`; + NEW_LINES=`wc -l ${alternatives_dir_new}/${alt_file} | cut -d/ -f 1`; + if [ $OLD_LINES -gt $NEW_LINES ] ; then + echo "Replacing '${alternatives_dir_new}/${alt_file}' with '${alternatives_dir_old}/${alt_file}'"; + mv -f "${alternatives_dir_old}/${alt_file}" "${alternatives_dir_new}/${alt_file}" + elif [ $OLD_LINES -eq $NEW_LINES ] ; then + if diff -q "${alternatives_dir_new}/${alt_file}" "${alternatives_dir_old}/${alt_file}" >/dev/null ; then + echo "'${alternatives_dir_new}/${alt_file}' is the same" + else + echo "WARN: You have to update manually if needed. Please check: diff '${alternatives_dir_old}-backup/${alt_file}' '${alternatives_dir_new}-backup/${alt_file}'" + fi + else + echo "WARN: '${alternatives_dir_old}/${alt_file}' is shorter than new one, ignoring, but please check and update manually if needed" + fi + fi + done + rm -rf ${alternatives_dir_old} + echo "Merge finished, old directory '${alternatives_dir_old}' is removed" + fi +} |