aboutsummaryrefslogtreecommitdiffstats
path: root/recipes/update-alternatives/update-alternatives-cworth.inc
blob: 217b787bd043533fea1aa9b42abf358b881107ae (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
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://use-opkg-dir-instead-of-ipkg.patch;patch=1 "
S = "${WORKDIR}/ipkg/C"
PACKAGE_ARCH = "all"

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
}