On Tue, Aug 11, 2015 at 01:20:24PM -0500, attila wrote: > 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. That's indeed the case and patches to fix that are welcome. > Feedback, comments most welcome. Could you please add regress tests for this issue you're solving too? > 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 -- jasper