=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/pkg-config/pkg-config,v retrieving revision 1.34 retrieving revision 1.35 diff -c -r1.34 -r1.35 *** src/usr.bin/pkg-config/pkg-config 2011/03/14 08:43:59 1.34 --- src/usr.bin/pkg-config/pkg-config 2011/03/18 14:55:32 1.35 *************** *** 1,5 **** #!/usr/bin/perl ! # $OpenBSD: pkg-config,v 1.34 2011/03/14 08:43:59 jasper Exp $ #$CSK: pkgconfig.pl,v 1.39 2006/11/27 16:26:20 ckuethe Exp $ # Copyright (c) 2006 Chris Kuethe --- 1,5 ---- #!/usr/bin/perl ! # $OpenBSD: pkg-config,v 1.35 2011/03/18 14:55:32 espie Exp $ #$CSK: pkgconfig.pl,v 1.39 2006/11/27 16:26:20 ckuethe Exp $ # Copyright (c) 2006 Chris Kuethe *************** *** 42,71 **** my $version = 0.23; # pretend to be this version of pkgconfig my %configs = (); my %mode = (); my $variables = {}; my $D = 0; # debug flag ! { ! my $d = $ENV{PKG_CONFIG_TOP_BUILD_DIR}; ! if (defined $d) { ! $variables->{pc_top_builddir} = $d; ! } else { ! $variables->{pc_top_builddir} = '$(top_builddir)'; ! } ! my $s = $ENV{PKG_CONFIG_SYSROOT_DIR}; ! if (defined $s) { ! $variables->{pc_sysrootdir} = $s; ! } ! # The default '/' is implied. ! } ! $D = 1 if defined($ENV{PKG_CONFIG_DEBUG_SPEW}); if ($logfile) { ! open my $L, ">>" . $logfile; ! print $L '[' . join('] [', $0, @ARGV) . "]\n"; close $L; } --- 42,64 ---- my $version = 0.23; # pretend to be this version of pkgconfig my %configs = (); + setup_self(); + my %mode = (); my $variables = {}; my $D = 0; # debug flag ! $variables->{pc_top_builddir} = $ENV{PKG_CONFIG_TOP_BUILD_DIR} // ! '$(top_builddir)'; ! $variables->{pc_sysrootdir} //= $ENV{PKG_CONFIG_SYSROOT_DIR}; ! # The default '/' is implied. ! $D = 1 if defined $ENV{PKG_CONFIG_DEBUG_SPEW}; if ($logfile) { ! open my $L, ">>" , $logfile or die; ! print $L beautify_list($_, @ARGV), "\n"; close $L; } *************** *** 120,126 **** } } ! print STDERR "\n[" . join('] [', $0, @ARGV) . "]\n" if $D; my $rc = 0; --- 113,119 ---- } } ! print STDERR "\n", beautify_list($0, @ARGV), "\n" if $D; my $rc = 0; *************** *** 128,134 **** { my $p = join(' ', @ARGV); $p =~ s/^\s+//; ! @ARGV = split /\s+/, $p; } if ($mode{myminvers}) { --- 121,127 ---- { my $p = join(' ', @ARGV); $p =~ s/^\s+//; ! @ARGV = split /\,?\s+/, $p; } if ($mode{myminvers}) { *************** *** 146,157 **** my $p = shift @ARGV; my $op = undef; my $v = undef; ! if (@ARGV >= 2 && $ARGV[0] =~ /[<=>]+/ && ! $ARGV[1] =~ /[0-9\.]+/) { $op = shift @ARGV; $v = shift @ARGV; } - $p =~ s/,//g; handle_config($p, $op, $v, $cfg_full_list); push(@$top_config, $p); } --- 139,149 ---- my $p = shift @ARGV; my $op = undef; my $v = undef; ! if (@ARGV >= 2 && $ARGV[0] =~ /^[<=>]+$/ && ! $ARGV[1] =~ /^[\d\.]+$/) { $op = shift @ARGV; $v = shift @ARGV; } handle_config($p, $op, $v, $cfg_full_list); push(@$top_config, $p); } *************** *** 224,284 **** 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); ! unshift @$list, $p if defined $cfg; ! if (!defined $cfg) { $rc = 1; return undef; } ! if (defined $op) { ! if (!versionmatch($cfg, $op, $v)) { ! mismatch($p, $cfg, $op, $v) if $mode{printerr}; ! $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); ! } } - 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; ! } } } --- 216,262 ---- sub handle_config { my ($p, $op, $v, $list) = @_; ! my $cfg = cache_find_config($p); ! unshift @$list, $p if defined $cfg; ! if (!defined $cfg) { ! $rc = 1; ! return undef; ! } ! if (defined $op) { ! if (!versionmatch($cfg, $op, $v)) { ! mismatch($p, $cfg, $op, $v) if $mode{printerr}; $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); } } + 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; } } *************** *** 336,341 **** --- 314,330 ---- } } + # pkg-config won't install a pkg-config.pc file itself, but it may be + + # listed as a dependency in other files. + # so, prime the cache with self + sub setup_self + { + my $pkg_pc = OpenBSD::PkgConfig->new; + $pkg_pc->add_property('Version', $version); + $configs{'pkg-config'} = $pkg_pc; + } + sub find_config { my ($p) = @_; *************** *** 643,646 **** --- 632,640 ---- } $rc = 1; + } + + sub beautify_list + { + return join(' ', map {"[$_]"} @_); }