summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjasper <jasper@openbsd.org>2010-09-29 16:48:41 +0000
committerjasper <jasper@openbsd.org>2010-09-29 16:48:41 +0000
commit8d303a15894ac462104f2e17ef0e23a0613b03be (patch)
tree56b67ca0f8fb7dbb5c9a06f65360ad4e743f5a1f
parentBack out previous, it appears to be broken. (diff)
downloadwireguard-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-config76
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;
}
}