diff options
author | 2010-09-29 16:48:41 +0000 | |
---|---|---|
committer | 2010-09-29 16:48:41 +0000 | |
commit | 8d303a15894ac462104f2e17ef0e23a0613b03be (patch) | |
tree | 56b67ca0f8fb7dbb5c9a06f65360ad4e743f5a1f | |
parent | Back out previous, it appears to be broken. (diff) | |
download | wireguard-openbsd-8d303a15894ac462104f2e17ef0e23a0613b03be.tar.xz wireguard-openbsd-8d303a15894ac462104f2e17ef0e23a0613b03be.zip |
it's valid syntax for .pc files to have:
Requires: pkg-config >= 0.21
out pkg-config couldn't handle it, as pkg-config(1) doesn't install a .pc file
to check this dependency against. fd.o pkg-config deals with this by
treating this as a special case; adapt ours to do the same.
tested in a ports bulk build and xenocara build
ok ckuethe@ sthen@
-rw-r--r-- | usr.bin/pkg-config/pkg-config | 76 |
1 files changed, 44 insertions, 32 deletions
diff --git a/usr.bin/pkg-config/pkg-config b/usr.bin/pkg-config/pkg-config index 52ba3e3ca6a..6a277cc173e 100644 --- a/usr.bin/pkg-config/pkg-config +++ b/usr.bin/pkg-config/pkg-config @@ -1,5 +1,5 @@ #!/usr/bin/perl -# $OpenBSD: pkg-config,v 1.25 2010/09/18 09:27:51 sthen Exp $ +# $OpenBSD: pkg-config,v 1.26 2010/09/29 16:48:41 jasper Exp $ #$CSK: pkgconfig.pl,v 1.39 2006/11/27 16:26:20 ckuethe Exp $ # Copyright (c) 2006 Chris Kuethe <ckuethe@openbsd.org> @@ -207,49 +207,61 @@ exit $rc; sub handle_config { my ($p, $op, $v, $list) = @_; + my $cfg; + # pkg-config won't install a pkg-config.pc file itself, but it may be + # listed as a dependency in other files. + # If we encounter a dependency on pkg-config, check if our version + # is sufficient and error out if not. + if ($p eq "pkg-config"){ + if ($v > $version) { + print STDERR "pkg-config version $version too old, $v required.\n" if $D; + $rc = 1; + return undef; + } + } else { + $cfg = cache_find_config($p); - my $cfg = cache_find_config($p); - - unshift @$list, $p if defined $cfg; - - if (!defined $cfg) { - $rc = 1; - return undef; - } + unshift @$list, $p if defined $cfg; - if (defined $op) { - if (!versionmatch($cfg, $op, $v)) { - mismatch($p, $cfg, $op, $v) if $mode{printerr}; + if (!defined $cfg) { $rc = 1; return undef; } - } - my $deps = $cfg->get_property('Requires', $variables); - if (defined $deps) { - for my $dep (@$deps) { - if ($dep =~ m/^(.*?)\s*([<=>]+)\s*([\d\.]+)$/) { - handle_config($1, $2, $3, $list); - } else { - handle_config($dep, undef, undef, $list); + if (defined $op) { + if (!versionmatch($cfg, $op, $v)) { + mismatch($p, $cfg, $op, $v) if $mode{printerr}; + $rc = 1; + return undef; } } - print STDERR "package $p requires ", - join(',', @$deps), "\n" if $D; - } - $deps = $cfg->get_property('Requires.private', $variables); - if (defined $deps) { - for my $dep (@$deps) { - if ($dep =~ m/^(.*?)\s*([<=>]+)\s*([\d\.]+)$/) { - handle_config($1, $2, $3, $list); - } else { - handle_config($dep, undef, undef, $list); + my $deps = $cfg->get_property('Requires', $variables); + if (defined $deps) { + for my $dep (@$deps) { + if ($dep =~ m/^(.*?)\s*([<=>]+)\s*([\d\.]+)$/) { + handle_config($1, $2, $3, $list); + } else { + handle_config($dep, undef, undef, $list); + } + } + print STDERR "package $p requires ", + join(',', @$deps), "\n" if $D; + } + + $deps = $cfg->get_property('Requires.private', $variables); + if (defined $deps) { + for my $dep (@$deps) { + if ($dep =~ m/^(.*?)\s*([<=>]+)\s*([\d\.]+)$/) { + handle_config($1, $2, $3, $list); + } else { + handle_config($dep, undef, undef, $list); + } } + print STDERR "package $p requires (private)", + join(',', @$deps), "\n" if $D; } - print STDERR "package $p requires (private)", - join(',', @$deps), "\n" if $D; } } |