[oe-commits] org.oe.dev ipkg: Partially fix broken version comparisions

rpurdie commit openembedded-commits at lists.openembedded.org
Tue Feb 19 00:41:12 UTC 2008


ipkg: Partially fix broken version comparisions

Author: rpurdie at openembedded.org
Branch: org.openembedded.dev
Revision: bd3711fbb9c0d355dbbef7978d07125ff2b635f5
ViewMTN: http://monotone.openembedded.org/revision/info/bd3711fbb9c0d355dbbef7978d07125ff2b635f5
Files:
1
packages/ipkg/files/update_version_comparision.patch
packages/ipkg/ipkg-native_0.99.163.bb
packages/ipkg/ipkg.inc
packages/ipkg/ipkg_0.99.163.bb
Diffs:

#
# mt diff -reec0cf22d27780a5209f4aad8fee7ddaa6bb80a0 -rbd3711fbb9c0d355dbbef7978d07125ff2b635f5
#
# 
# 
# add_file "packages/ipkg/files/update_version_comparision.patch"
#  content [b940420d7d71ccae026536ddf7f2c5c503485a9d]
# 
# patch "packages/ipkg/ipkg-native_0.99.163.bb"
#  from [f62a84dc0cdc3962fb9564cd48a0fd07dd475723]
#    to [a204f18c290c5da4e91d8300e8461c07ebc1795e]
# 
# patch "packages/ipkg/ipkg.inc"
#  from [fc113df6d214da7a33273c7512dac5215da76f90]
#    to [24a763cc5bb1e3e620137a13ec1a20d94c5f06a8]
# 
# patch "packages/ipkg/ipkg_0.99.163.bb"
#  from [3a58f561fcf234def5a100e624f4c721f8694641]
#    to [3bd38599bcc9677fbd8d3f25e54fb498786d46f2]
# 
============================================================
--- packages/ipkg/files/update_version_comparision.patch	b940420d7d71ccae026536ddf7f2c5c503485a9d
+++ packages/ipkg/files/update_version_comparision.patch	b940420d7d71ccae026536ddf7f2c5c503485a9d
@@ -0,0 +1,82 @@
+Update the version comparision to a more recent one from dpkg. This
+means it now recognises 0.0-foo > 0.0+foo as it should.
+
+Index: ipkg-0.99.163/pkg.c
+===================================================================
+--- ipkg-0.99.163.orig/pkg.c	2008-02-18 11:24:45.000000000 +0000
++++ ipkg-0.99.163/pkg.c	2008-02-19 00:24:50.000000000 +0000
+@@ -1128,43 +1130,37 @@
+      return r;
+ }
+ 
+-int verrevcmp(const char *val, const char *ref)
+-{
+-     int vc, rc;
+-     long vl, rl;
+-     const char *vp, *rp;
+-     const char *vsep, *rsep;
+-    
+-     if (!val) val= "";
+-     if (!ref) ref= "";
+-     for (;;) {
+-	  vp= val;  while (*vp && !isdigit(*vp)) vp++;
+-	  rp= ref;  while (*rp && !isdigit(*rp)) rp++;
+-	  for (;;) {
+-	       vc= (val == vp) ? 0 : *val++;
+-	       rc= (ref == rp) ? 0 : *ref++;
+-	       if (!rc && !vc) break;
+-	       if (vc && !isalpha(vc)) vc += 256; /* assumes ASCII character set */
+-	       if (rc && !isalpha(rc)) rc += 256;
+-	       if (vc != rc) return vc - rc;
+-	  }
+-	  val= vp;
+-	  ref= rp;
+-	  vl=0;  if (isdigit(*vp)) vl= strtol(val,(char**)&val,10);
+-	  rl=0;  if (isdigit(*rp)) rl= strtol(ref,(char**)&ref,10);
+-	  if (vl != rl) return vl - rl;
+-
+-	  vc = *val;
+-	  rc = *ref;
+-	  vsep = strchr(".-", vc);
+-	  rsep = strchr(".-", rc);
+-	  if (vsep && !rsep) return -1;
+-	  if (!vsep && rsep) return +1;
+-
+-	  if (!*val && !*ref) return 0;
+-	  if (!*val) return -1;
+-	  if (!*ref) return +1;
+-     }
++/* assume ascii; warning: evaluates x multiple times! */
++#define order(x) ((x) == '~' ? -1 \
++		: isdigit((x)) ? 0 \
++		: !(x) ? 0 \
++		: isalpha((x)) ? (x) \
++		: (x) + 256)
++
++static int verrevcmp(const char *val, const char *ref) {
++  if (!val) val= "";
++  if (!ref) ref= "";
++
++  while (*val || *ref) {
++    int first_diff= 0;
++
++    while ( (*val && !isdigit(*val)) || (*ref && !isdigit(*ref)) ) {
++      int vc= order(*val), rc= order(*ref);
++      if (vc != rc) return vc - rc;
++      val++; ref++;
++    }
++
++    while ( *val == '0' ) val++;
++    while ( *ref == '0' ) ref++;
++    while (isdigit(*val) && isdigit(*ref)) {
++      if (!first_diff) first_diff= *val - *ref;
++      val++; ref++;
++    }
++    if (isdigit(*val)) return 1;
++    if (isdigit(*ref)) return -1;
++    if (first_diff) return first_diff;
++  }
++  return 0;
+ }
+ 
+ int pkg_version_satisfied(pkg_t *it, pkg_t *ref, const char *op)
============================================================
--- packages/ipkg/ipkg-native_0.99.163.bb	f62a84dc0cdc3962fb9564cd48a0fd07dd475723
+++ packages/ipkg/ipkg-native_0.99.163.bb	a204f18c290c5da4e91d8300e8461c07ebc1795e
@@ -1,12 +1,13 @@ require ipkg-native.inc
 S = "${WORKDIR}/ipkg-${PV}"
 
 #require ipkg_${PV}.bb
 require ipkg-native.inc
-PR = "r4"
+PR = "r5"
 
 inherit autotools pkgconfig native
 
 SRC_URI = "http://www.handhelds.org/pub/packages/ipkg/ipkg-${PV}.tar.gz \
+           file://update_version_comparision.patch;patch=1 \
            file://is-processing.patch;patch=1 \
            file://1-pkg-parse--Optimize-inefficient-parsing.patch;patch=1 \
            file://2-pkg-vec--Optimize-gross-inefficiency.patch;patch=1 \
============================================================
--- packages/ipkg/ipkg.inc	fc113df6d214da7a33273c7512dac5215da76f90
+++ packages/ipkg/ipkg.inc	24a763cc5bb1e3e620137a13ec1a20d94c5f06a8
@@ -10,6 +10,7 @@ SRC_URI = "${HANDHELDS_CVS};module=famil
 AUTO_LIBNAME_PKGS = "libipkg"
 
 SRC_URI = "${HANDHELDS_CVS};module=familiar/dist/ipkg;tag=${@'V' + bb.data.getVar('PV',d,1).replace('.', '-')} \
+        file://update_version_comparision.patch;patch=1 \
         file://ipkg-configure \
 	file://terse.patch;patch=1"
 
============================================================
--- packages/ipkg/ipkg_0.99.163.bb	3a58f561fcf234def5a100e624f4c721f8694641
+++ packages/ipkg/ipkg_0.99.163.bb	3bd38599bcc9677fbd8d3f25e54fb498786d46f2
@@ -1,5 +1,5 @@ include ipkg.inc
 include ipkg.inc
-PR = "r6"
+PR = "r7"
 
 S = "${WORKDIR}/ipkg-${PV}"
 






More information about the Openembedded-commits mailing list