aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMartin Jansa <Martin.Jansa@gmail.com>2010-01-08 16:14:46 +0100
committerSebastian Spaeth <Sebastian@SSpaeth.de>2010-01-11 10:34:50 +0100
commit75fd36a2d6ce6a21fa21953d1f24e8ea6582a39d (patch)
tree26c20a38fbeb2a84308289132f0727a41c002875
parentd91c07a67b9fee7b8fd3d650d37dbada8329c86e (diff)
downloadopenembedded-75fd36a2d6ce6a21fa21953d1f24e8ea6582a39d.tar.gz
update-alternatives-cworth: use /usr/lib/opkg/alternatives directory instead of /usr/lib/ipkg/alternatives
* It's usefull to make it compatible with u-a script in opkg package * Old entries are merged to new directory in quite verbose postinst script * If entry exists only in old its moved * If entry exists in both the one with more lines is used * The one with less lines is not used and warning is shown * If they have the same number of lines diff is checked * If they are the same, old one is ignored * If they are different, old one is ignored and warning is shown
-rw-r--r--recipes/update-alternatives/update-alternatives-cworth.inc44
-rw-r--r--recipes/update-alternatives/update-alternatives-cworth/use-opkg-dir-instead-of-ipkg.patch11
2 files changed, 53 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
+}
diff --git a/recipes/update-alternatives/update-alternatives-cworth/use-opkg-dir-instead-of-ipkg.patch b/recipes/update-alternatives/update-alternatives-cworth/use-opkg-dir-instead-of-ipkg.patch
new file mode 100644
index 0000000000..4355556200
--- /dev/null
+++ b/recipes/update-alternatives/update-alternatives-cworth/use-opkg-dir-instead-of-ipkg.patch
@@ -0,0 +1,11 @@
+--- C.orig/update-alternatives 2010-01-08 15:40:20.000000000 +0100
++++ C/update-alternatives 2010-01-08 15:40:47.000000000 +0100
+@@ -21,7 +21,7 @@
+ set -e
+
+ # admin dir
+-ad="$IPKG_OFFLINE_ROOT/usr/lib/ipkg/alternatives"
++ad="$IPKG_OFFLINE_ROOT/usr/lib/opkg/alternatives"
+
+ usage() {
+ echo "update-alternatives: $*