summaryrefslogtreecommitdiffstats
path: root/metas/perl.d/perl-dist-funcs
diff options
context:
space:
mode:
Diffstat (limited to 'metas/perl.d/perl-dist-funcs')
-rwxr-xr-xmetas/perl.d/perl-dist-funcs101
1 files changed, 101 insertions, 0 deletions
diff --git a/metas/perl.d/perl-dist-funcs b/metas/perl.d/perl-dist-funcs
new file mode 100755
index 0000000..cc9ba19
--- /dev/null
+++ b/metas/perl.d/perl-dist-funcs
@@ -0,0 +1,101 @@
+#!/usr/bin/env perl
+
+use warnings 'FATAL' => 'all';
+use strict;
+
+my $PROG = 'perl-dist-funcs';
+
+my %BODYFOR =
+ ('MM', {
+ 'build' => [
+ q{/usr/bin/perl Makefile.PL }
+ . q{DESTDIR="$pkgdir" INSTALLDIRS=vendor},
+ q{make},
+ ],
+ 'check' => [ q{make test} ],
+ 'package' => [ q{make install} ],
+ },
+ 'MB', {
+ 'build' => [
+ q{/usr/bin/perl Build.PL }
+ . q{--destdir "$pkgdir" --installdirs vendor},
+ q{./Build},
+ ],
+ 'check' => [ q{./Build test} ],
+ 'package' => [ q{./Build install} ],
+ });
+
+my %FUNC;
+$FUNC{'build'}{'intro'} = <<'END_INTRO';
+cd "$_distdir"
+PERL_MM_USE_DEFAULT=1 PERL_AUTOINSTALL=--skipdeps MODULEBUILDRC=/dev/null
+export PERL_MM_USE_DEFAULT PERL_AUTOINSTALL MODULEBUILDRC
+unset PERL_MM_OPT PERL_MB_OPT PERL5LIB
+END_INTRO
+
+$FUNC{'check'}{'intro'} = <<'END_INTRO';
+cd "$_distdir"
+PERL_MM_USE_DEFAULT=1
+export PERL_MM_USE_DEFAULT
+unset PERL_MM_OPT PERL_MB_OPT PERL5LIB
+END_INTRO
+
+$FUNC{'package'}{'intro'} = <<'END_INTRO';
+cd "$_distdir"
+unset PERL_MM_OPT PERL_MB_OPT PERL5LIB
+END_INTRO
+
+$FUNC{'package'}{'end'} = <<'END_END';
+find "$pkgdir" -name .packlist -o -name perllocal.pod -delete
+END_END
+
+my $PBEND = <<'END_END';
+# Local Variables:
+# mode: shell-script
+# sh-basic-offset: 2
+# End:
+# vim:set ts=2 sw=2 et:
+END_END
+
+sub printfunc
+{
+ my($name, $func) = @_;
+ print "BEGNODE $name\n";
+ for my $sect (qw/intro body end/){
+ if(exists $func->{$sect}){
+ my $txt = $func->{$sect};
+ $txt .= "\n" unless($txt =~ /\n\z/);
+ print "BEGNODE $sect\n", $txt, "ENDNODE $sect\n";
+ }
+ }
+ print "ENDNODE $name\n";
+ return;
+}
+
+sub printfuncs
+{
+ my($btype) = @_;
+ my $acts = $BODYFOR{$btype} or die "$PROG: unknown build type: $btype";
+
+ print "BEGNODE PKGBUILD\n", "BEGNODE body\n";
+ for my $f (keys %FUNC){
+ $FUNC{$f}{'body'} = join q{}, map { "$_\n" } @{$acts->{$f}};
+ printfunc($f, $FUNC{$f});
+ }
+ print "ENDNODE body\n";
+ print "BEGNODE end\n", $PBEND, "ENDNODE end\n";
+ print "ENDNODE PKGBUILD\n";
+ return;
+}
+
+sub main
+{
+ if(@_ == 0 || ($_[0] ne 'MM' && $_[0] ne 'MB')){
+ print STDERR qq{usage: $PROG ["MM" or "MB"] > PKGFUNCS\n};
+ return 1;
+ }
+ printfuncs(shift);
+ return 0;
+}
+
+exit main(@ARGV);