version 1.25, 2010/09/18 09:27:51 |
version 1.26, 2010/09/29 16:48:41 |
|
|
sub handle_config |
sub handle_config |
{ |
{ |
my ($p, $op, $v, $list) = @_; |
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; |
|
|
unshift @$list, $p if defined $cfg; |
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; |
$rc = 1; |
return undef; |
return undef; |
} |
} |
} |
|
|
|
my $deps = $cfg->get_property('Requires', $variables); |
if (defined $op) { |
if (defined $deps) { |
if (!versionmatch($cfg, $op, $v)) { |
for my $dep (@$deps) { |
mismatch($p, $cfg, $op, $v) if $mode{printerr}; |
if ($dep =~ m/^(.*?)\s*([<=>]+)\s*([\d\.]+)$/) { |
$rc = 1; |
handle_config($1, $2, $3, $list); |
return undef; |
} else { |
|
handle_config($dep, undef, undef, $list); |
|
} |
} |
} |
} |
print STDERR "package $p requires ", |
|
join(',', @$deps), "\n" if $D; |
|
} |
|
|
|
$deps = $cfg->get_property('Requires.private', $variables); |
my $deps = $cfg->get_property('Requires', $variables); |
if (defined $deps) { |
if (defined $deps) { |
for my $dep (@$deps) { |
for my $dep (@$deps) { |
if ($dep =~ m/^(.*?)\s*([<=>]+)\s*([\d\.]+)$/) { |
if ($dep =~ m/^(.*?)\s*([<=>]+)\s*([\d\.]+)$/) { |
handle_config($1, $2, $3, $list); |
handle_config($1, $2, $3, $list); |
} else { |
} else { |
handle_config($dep, undef, undef, $list); |
handle_config($dep, undef, undef, $list); |
|
} |
} |
} |
|
print STDERR "package $p requires ", |
|
join(',', @$deps), "\n" if $D; |
} |
} |
print STDERR "package $p requires (private)", |
|
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; |
|
} |
} |
} |
} |
} |
|
|