My code ended up being the following, which works perfectly.
sub get_depend {
my $ebuildfname = shift;
my $ebuildcontents;
my %ebuildvars;
my $pkgname = $ebuildfname;
$pkgname =~ s|/usr/portage/||;
$pkgname =~ s|(.+)/.+/(.+).ebuild|$1/$2|;
my $pkg = parse_package_name($pkgname);
$pkg->{version} =~ s/^-//;
$ebuildvars{PV} = "$pkg->{version}$pkg->{suffix}";
open EBUILD, "< $ebuildfname" or die "Couldn't open '$ebuildfname' t
+o get DEPEND\n";
while(<EBUILD>) {
if(/^\s*if\s*/ || /^\s*#/) {
next;
}
if(/^\s*\w+\(\)\s*{\s*$/) {
last;
}
$ebuildcontents .= $_;
}
close EBUILD;
while($ebuildcontents =~ /\b([-A-Z0-9_]+)\s*=\s*\"(.*?)\"/sgc) {
my ($varname, $varvalue) = ($1, $2);
$varvalue =~ s/\$\{?(\w+)\}?/$ebuildvars{$1}/gs;
$ebuildvars{$varname} = $varvalue;
}
my $depend = $ebuildvars{'DEPEND'} || '';
$depend .= " $ebuildvars{'RDEPEND'}" if(defined $ebuildvars{'RDEPEND
+'});
$depend =~ s/(\s+|\n+)/ /gs;
return $depend;
}
|