Porting/corelist.pl Generates data for Module::CoreList
Porting/curliff.pl Curliff or liff your curliffable files.
Porting/epigraphs.pod the release epigraphs used over the years
+Porting/exec-bit.txt List of files that get +x in release tarball
Porting/expand-macro.pl A tool to expand C macro definitions in the Perl source
Porting/findrfuncs Find reentrant variants of functions used in an executable
Porting/findvars Find occurrences of words
t/porting/authors.t Check that all authors have been acknowledged
t/porting/checkcase.t Check whether we are case-insensitive-fs-friendly
t/porting/diag.t Test completeness of perldiag.pod
-t/porting/dual-life.t Check that dual-life bins are in utils
+t/porting/dual-life.t Check that dual-life bins are in utils/
+t/porting/exec-bit.t Check that exec-bit bins are identified
t/porting/maintainers.t Test that Porting/Maintaners.pl is up to date
t/porting/manifest.t Test that this MANIFEST file is well formed
t/porting/podcheck.t Test the POD of shipped modules is well formed
--- /dev/null
+# This file contains a list of files that makerel will
+# ensure get an executable bit
+#
+# List files (or glob patterns) one per line relative to the repo root
+# Lines starting with a pound and empty lines will be ignored
+Configure
+configpm
+configure.gnu
+cpan/Test-Harness/t/source_tests/source.sh
+embed.pl
+installperl
+installman
+keywords.pl
+opcode.pl
+t/TEST
+*.SH
+vms/ext/filespec.t
+x2p/*.SH
+Porting/findrfuncs
+Porting/genlog
+Porting/makerel
+Porting/*.pl
+mpeix/nm
+mpeix/relink
+Cross/generate_config_sh
+Cross/warp
system("find . -type d -print | xargs chmod 0755");
system("find $SEARCH_ROOTS -name '*.t' -print | xargs chmod +x");
system("find $SEARCH_ROOTS -name 'test.pl' -print | xargs chmod +x");
-my @exe = qw(
- Configure
- configpm
- configure.gnu
- cpan/Test-Harness/t/source_tests/source.sh
- embed.pl
- installperl
- installman
- keywords.pl
- opcode.pl
- t/TEST
- *.SH
- vms/ext/filespec.t
- x2p/*.SH
- Porting/findrfuncs
- Porting/genlog
- Porting/makerel
- Porting/*.pl
- mpeix/nm
- mpeix/relink
- Cross/generate_config_sh
- Cross/warp
-);
+my @exe = map { my ($f) = split; glob($f) }
+ grep { $_ !~ /\A#/ && $_ !~ /\A\s*\z/ }
+ map { split "\n" }
+ do { local (@ARGV, $/) = 'Porting/exec-bit.txt'; <> };
+
system("chmod +x @exe") == 0
or die "system: $!";
--- /dev/null
+#!/perl -w
+use 5.010;
+use strict;
+
+# This test checks that anything with an executable bit is
+# identified in Porting/exec-bit.txt to makerel will set
+# the exe bit in the release tarball
+
+require './test.pl';
+
+plan('no_plan');
+
+use ExtUtils::Manifest qw(maniread);
+use File::Basename;
+use File::Find;
+use File::Spec::Functions;
+
+# Copied from Porting/makerel - these will get +x in the tarball
+# XXX refactor? -- dagolden, 2010-07-23
+my %exe_list =
+ map { $_ => 1 }
+ map { my ($f) = split; glob($f) }
+ grep { $_ !~ /\A#/ && $_ !~ /\A\s*\z/ }
+ map { split "\n" }
+ do { local (@ARGV, $/) = '../Porting/exec-bit.txt'; <> };
+
+# Get MANIFEST
+$ExtUtils::Manifest::Quiet = 1;
+my @manifest = sort keys %{ maniread("../MANIFEST") };
+
+# Check that +x files in repo get +x from makerel
+for my $f ( @manifest ) {
+ next unless -x "../$f";
+
+ ok( $exe_list{$f}, "tarball will chmod +x $f" )
+ or diag( "Remove the exec bit or add to Porting/exec-bit.txt" );
+
+ delete $exe_list{$f}; # seen it
+}
+
+ok( ! %exe_list, "Everything in Porting/exec-bit.txt has +x in repo" )
+ or diag( "Files missing exec bit:\n " . join("\n ", sort keys %exe_list) . "\n");
+