packaged full perl, thanks Peter Colberg (closes #3708)
git-svn-id: svn://svn.openwrt.org/openwrt/packages@11626 3c298f89-4303-0410-b956-a3cf2f4a3e73
This commit is contained in:
81
lang/perl/files/perlmod-deps.sh
Normal file
81
lang/perl/files/perlmod-deps.sh
Normal file
@ -0,0 +1,81 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# Generate perl module package dependencies
|
||||
#
|
||||
# Copyright (C) 2007 Peter Colberg <peter@petercolberg.org>
|
||||
# Licensed under the terms of the GNU General Public License.
|
||||
#
|
||||
|
||||
if [ $# -lt 3 ]; then
|
||||
echo >&2 "Usage: $(basename $0) STAGING-DIR PERL-BUILD-DIR [FILES...] [DIRECTORIES...]"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
STAGING_DIR="$1"
|
||||
PERL_BIN="$STAGING_DIR/usr/bin/perl"
|
||||
PERL_LIB="$STAGING_DIR/usr/lib/perl5/5.10"
|
||||
INC_DIR="$(dirname $0)"
|
||||
shift
|
||||
|
||||
"$PERL_BIN" -I"$INC_DIR" -I"$PERL_LIB" - "$@" <<'PERL_SCRIPT'
|
||||
use strict;
|
||||
use warnings;
|
||||
|
||||
use Module::ScanDeps;
|
||||
use File::Find;
|
||||
use Cwd;
|
||||
|
||||
our $sitelib = "/usr/lib/perl5/5.10";
|
||||
|
||||
sub scandeps {
|
||||
my $builddir = Cwd::abs_path(shift);
|
||||
my @scanpaths = @_;
|
||||
my ($curdir, @pkgdirs, $dir, @deps, %depends, $file);
|
||||
our ($pkg, %bundles, $path, @files);
|
||||
|
||||
@pkgdirs = glob($builddir . "/*/ipkg");
|
||||
$curdir = getcwd();
|
||||
@INC = ();
|
||||
for $dir (@pkgdirs) {
|
||||
chdir($dir) or die "$dir: $!";
|
||||
for $pkg (glob("*")) {
|
||||
chdir($dir . "/" . $pkg . $sitelib) or next;
|
||||
push @INC, getcwd();
|
||||
sub wanted {
|
||||
return unless (-f $_);
|
||||
s/^\.\///;
|
||||
$bundles{$_} = $pkg;
|
||||
}
|
||||
find({ wanted => \&wanted, no_chdir => 1 }, ".");
|
||||
}
|
||||
}
|
||||
chdir($curdir) or die "$curdir: $!\n";
|
||||
|
||||
for $path (@scanpaths) {
|
||||
sub scan_wanted {
|
||||
return unless (-f $_ and /\.(pl|pm)$/);
|
||||
push @files, $_;
|
||||
}
|
||||
if (-f $path) {
|
||||
push @files, $path;
|
||||
}
|
||||
elsif (-d $path) {
|
||||
find({ wanted => \&scan_wanted, no_chdir => 1 }, $path);
|
||||
}
|
||||
}
|
||||
|
||||
@deps = keys %{scan_deps(files => \@files, recurse => 0)};
|
||||
for $file (grep { not exists $bundles{$_} } @deps) {
|
||||
warn "could not resolve dependency: $file\n";
|
||||
}
|
||||
%depends = map { $bundles{$_}, 1 } grep { exists $bundles{$_} } @deps;
|
||||
|
||||
if (%depends) {
|
||||
print join(' ', 'perl', sort keys %depends), "\n";
|
||||
}
|
||||
}
|
||||
|
||||
if (@ARGV > 1) {
|
||||
scandeps(@ARGV);
|
||||
}
|
||||
PERL_SCRIPT
|
Reference in New Issue
Block a user