Hello tech@,

On the 6 Aug snap I ran into this issue:

  $ pkg_info | grep libevent
  libevent-2.0.22     event notification library
  $ pkg-config --atleast-version=2.0.1 libevent && echo yes
  Argument "22-stabl" isn't numeric in numeric eq (==) at /usr/bin/pkg-config 
line 662.
  yes

So it works but spits out that error.  The issue is that the libevent
port reports its version as 2.0.22-stable, which does not follow the
convention used by the compare() sub in pkg-config.  The attached
patch gets rid of the error albeit in a very pointilistic way; perhaps
a more general solution is desired, but I'm not sure what the best
approach is, especially given that there is something called
pkg-config available pretty much everywhere but based on very
different implementations...

It doesn't appear as though my patch introduces any regressions,
although I'm still sussing out how the regression tests work so I'm
not sure if I'm doing anything wrong... it appears that five of
pkg-config's regression tests fail regardless of my patch:

  FAIL usr.bin/pkg-config/static-cflags2
  FAIL usr.bin/pkg-config/static-libs2
  FAIL usr.bin/pkg-config/static-libs3
  FAIL usr.bin/pkg-config/static-libs4
  FAIL usr.bin/pkg-config/missing-req-2

In all cases it looks like the difference is ordering, except for the
last where two errors are produced but only one is expected.  I'll
work on a patch to fix these failures next.

Feedback, comments most welcome.

Pax, -A
--
http://trac.haqistan.net | att...@stalphonsos.com | 0xE6CC1EDB

Index: pkg-config
===================================================================
RCS file: /cvs/src/usr.bin/pkg-config/pkg-config,v
retrieving revision 1.85
diff -u -p -r1.85 pkg-config
--- pkg-config	17 Nov 2014 22:16:23 -0000	1.85
+++ pkg-config	11 Aug 2015 17:53:24 -0000
@@ -625,16 +625,16 @@ sub compare
 	# is there a valid non-numeric suffix to deal with later?
 	# accepted are (in order): a(lpha) < b(eta) < rc < ' '.
 	# suffix[0] is the 'alpha' part, suffix[1] is the '1' part in 'alpha1'.
-	if ($a =~ s/(rc|beta|b|alpha|a)(\d+)$//) {
-		say_debug("valid suffix $1$2 found in $a$1$2.");
-		$suffix_a[0] = $1;
-		$suffix_a[1] = $2;
+	if ($a =~ s/(|-)(stable|rc|beta|b|alpha|a)(|\d+)$//) {
+		say_debug("valid suffix $2$3 found in $a$2$3.");
+		$suffix_a[0] = $2;
+		$suffix_a[1] = $3;
 	}
 
-	if ($b =~ s/(rc|beta|b|alpha|a)(\d+)$//) {
-		say_debug("valid suffix $1$2 found in $b$1$2.");
-		$suffix_b[0] = $1;
-		$suffix_b[1] = $2;
+	if ($b =~ s/(|-)(stable|rc|beta|b|alpha|a)(|\d+)$//) {
+		say_debug("valid suffix $2$3 found in $b$2$3.");
+		$suffix_b[0] = $2;
+		$suffix_b[1] = $3;
 	}
 
 	# The above are standard suffixes; deal with single alphabetical

Reply via email to