Or, more generally, if someone can explain how to revert to pre-1.16
behavior, I'd be very grateful, because I have dozens of locally
compiled kernel packages installed on my system, causing every
invocation of dpkg to spew hundreds of lines of useless warnings,
making it nearly unusable (any valid diagnostic is lost among that
junk).

These version numbers beginning with a letter worked very well up to
dpkg-1.15, why the sudden need to consider them invalid?

In urgent need to make dpkg usable as fast as possible, I used the
following (attached) patch, but it's probably not the best way to
proceed, so any other suggestion would be very welcome.

-- 
     David A. Madore
   ( http://www.madore.org/~david/ )
diff -rup dpkg-1.16.0.1/lib/dpkg/parsehelp.c dpkg-1.16.0.1dmadore/lib/dpkg/parsehelp.c
--- dpkg-1.16.0.1/lib/dpkg/parsehelp.c	2011-04-03 17:33:31.000000000 +0200
+++ dpkg-1.16.0.1dmadore/lib/dpkg/parsehelp.c	2011-04-16 16:14:09.000000000 +0200
@@ -284,10 +284,7 @@ parseversion(struct versionrevision *rve
   const char *emsg;
 
   emsg = parseversion_lax(rversion, string);
-  if (emsg)
-    return emsg;
-
-  return version_strict_check(rversion);
+  return emsg;
 }
 
 /**
@@ -312,7 +309,6 @@ parse_db_version(struct parsedb_state *p
 
   msg = parseversion_lax(version, value);
   if (msg == NULL) {
-    msg = version_strict_check(version);
     if (ps->flags & pdb_lax_parser)
       warn_msg = true;
   }
diff -rup dpkg-1.16.0.1/lib/dpkg/test/t-version.c dpkg-1.16.0.1dmadore/lib/dpkg/test/t-version.c
--- dpkg-1.16.0.1/lib/dpkg/test/t-version.c	2011-04-05 07:28:08.000000000 +0200
+++ dpkg-1.16.0.1dmadore/lib/dpkg/test/t-version.c	2011-04-16 16:22:03.000000000 +0200
@@ -141,6 +141,7 @@ test_version_parse(void)
 	test_fail(parseversion(&a, "a:0-0") == NULL);
 	test_fail(parseversion(&a, "A:0-0") == NULL);
 
+#if 0
 	/* Test invalid characters in upstream version. */
 	verstr = m_strdup("0:0-0");
 	for (p = "!#@$%&/|\\<>()[]{};,_=*^'"; *p; p++) {
@@ -158,6 +159,7 @@ test_version_parse(void)
 		test_fail(parseversion(&a, verstr) == NULL);
 	}
 	free(verstr);
+#endif
 
 	/* FIXME: Complete. */
 }

Reply via email to