summaryrefslogtreecommitdiff
path: root/root
diff options
context:
space:
mode:
authorMike Baker <mbm@openwrt.org>2004-07-11 22:54:23 +0000
committerMike Baker <mbm@openwrt.org>2004-07-11 22:54:23 +0000
commit8d8f855860b3f4649e75468b29b14ec37b5c717d (patch)
treeadf0984403c143ea42e4d32e8aba0176fa7e666b /root
parentee41d037540c80e0819a7ecf84994260327ff8df (diff)
downloadmtk-20170518-8d8f855860b3f4649e75468b29b14ec37b5c717d.zip
mtk-20170518-8d8f855860b3f4649e75468b29b14ec37b5c717d.tar.gz
mtk-20170518-8d8f855860b3f4649e75468b29b14ec37b5c717d.tar.bz2
fix update's version logic
SVN-Revision: 86
Diffstat (limited to 'root')
-rwxr-xr-xroot/bin/ipkg14
1 files changed, 13 insertions, 1 deletions
diff --git a/root/bin/ipkg b/root/bin/ipkg
index b5c2ce7..c802ce1 100755
--- a/root/bin/ipkg
+++ b/root/bin/ipkg
@@ -19,6 +19,18 @@ set -e
# explicitly enable it first and disable it afterwards.
set -o noglob
+ipkg_is_upgrade () {
+ local A B a b
+ A=$(echo $1 | sed "s/[0-9]*/ & /g")
+ B=$(echo $2 | sed "s/[0-9]*/ & /g")
+ while [ \! -z "$A" ] && [ \! -z "$B" ]; do {
+ set $A; a=$1; shift; A=$*
+ set $B; b=$1; shift; B=$*
+ { [ "$a" -gt "$b" ] 2>- || [ "$a" ">" "$b" ]; } && { return 0; }
+ }; done
+ return 1;
+}
+
ipkg_srcs() {
local srcre="$1"
sed -ne "s/^src[[:space:]]\+$srcre[[:space:]]\+//p" < $IPKG_CONF
@@ -984,7 +996,7 @@ ipkg_upgrade_pkg() {
if [ "$avail_ver" = "$inst_ver" ]; then
echo "Package $pkg ($inst_ver) installed in $dest_name is up to date"
- elif [ "$avail_ver" -gt "$inst_ver" ]; then
+ elif ipkg_is_upgrade "$avail_ver" "$inst_ver"; then
echo "Upgrading $pkg ($dest_name) from $inst_ver to $avail_ver"
ipkg_get_install_dest $dest $pkg
else