Global executable bit cleanup
authorDavid Golden <dagolden@cpan.org>
Sat, 24 Jul 2010 07:44:40 +0000 (00:44 -0700)
committerDavid Golden <dagolden@cpan.org>
Sat, 24 Jul 2010 08:54:33 +0000 (01:54 -0700)
When porting/makerel runs, all files copied into the directory for the
tarball have the executable bit stripped and then only a specific set of
files have the executable bit restored.

There are many files in the repo that have the executable bit set in the
repo that will be stripped.  So that the state of files in the repo is
as close as possible to the state of files in the release tarball, the
executable bit has been stripped from such files.

In one recent case, a file added from a dual-life module needed the
executable bit set.  Because it had the bit in the repo but was
not listed in makerel to get an executable bit, tests using it
passed in the repo and failed in the tarball.

This commit refactors the list into a new file, Porting/exec-bit.txt
and add tests to detect a mismatch between files listed there
and actual executable bits in the repo.

160 files changed:
Cross/Makefile-cross-SH [changed mode: 0755->0644]
Cross/build-arm-n770-sh [changed mode: 0755->0644]
Cross/cflags-cross-arm [changed mode: 0755->0644]
MANIFEST
Porting/GitUtils.pm [changed mode: 0755->0644]
Porting/Maintainers.pl [changed mode: 0755->0644]
Porting/bump-perl-version [changed mode: 0755->0644]
Porting/cherrymaint [changed mode: 0755->0644]
Porting/config_h.pl [changed mode: 0755->0644]
Porting/core-cpan-diff [changed mode: 0755->0644]
Porting/corelist-perldelta.pl [changed mode: 0755->0644]
Porting/exec-bit.txt [new file with mode: 0644]
Porting/findrfuncs [changed mode: 0644->0755]
Porting/findvars [changed mode: 0755->0644]
Porting/fixCORE [changed mode: 0755->0644]
Porting/fixvars [changed mode: 0755->0644]
Porting/git-deltatool [changed mode: 0755->0644]
Porting/git-find-p4-change [changed mode: 0755->0644]
Porting/make_dot_patch.pl [changed mode: 0755->0644]
Porting/make_snapshot.pl [changed mode: 0755->0644]
Porting/makerel [changed mode: 0644->0755]
Porting/rt_list_patches [changed mode: 0755->0644]
cflags.SH [changed mode: 0755->0644]
config_h.SH [changed mode: 0755->0644]
cpan/CGI/examples/make_links.pl [changed mode: 0755->0644]
cpan/CGI/examples/nph-clock.cgi [changed mode: 0755->0644]
cpan/CGI/examples/nph-multipart.cgi [changed mode: 0755->0644]
cpan/CPAN/scripts/cpan [changed mode: 0755->0644]
cpan/Compress-Raw-Zlib/config.in [changed mode: 0755->0644]
cpan/Compress-Raw-Zlib/examples/filtdef [changed mode: 0755->0644]
cpan/Compress-Raw-Zlib/examples/filtinf [changed mode: 0755->0644]
cpan/DB_File/config.in [changed mode: 0755->0644]
cpan/Digest-SHA/shasum [changed mode: 0755->0644]
cpan/Encode/bin/enc2xs [changed mode: 0755->0644]
cpan/Encode/bin/piconv [changed mode: 0755->0644]
cpan/Encode/bin/ucm2table [changed mode: 0755->0644]
cpan/Encode/bin/ucmsort [changed mode: 0755->0644]
cpan/Encode/bin/unidump [changed mode: 0755->0644]
cpan/ExtUtils-MakeMaker/bin/instmodsh [changed mode: 0755->0644]
cpan/IO-Compress/examples/compress-zlib/filtdef [changed mode: 0755->0644]
cpan/IO-Compress/examples/compress-zlib/filtinf [changed mode: 0755->0644]
cpan/IO-Compress/examples/compress-zlib/gzcat [changed mode: 0755->0644]
cpan/IO-Compress/examples/compress-zlib/gzgrep [changed mode: 0755->0644]
cpan/IO-Compress/examples/compress-zlib/gzstream [changed mode: 0755->0644]
cpan/IO-Compress/examples/io/anycat [changed mode: 0755->0644]
cpan/IO-Compress/examples/io/bzip2/bzcat [changed mode: 0755->0644]
cpan/IO-Compress/examples/io/bzip2/bzgrep [changed mode: 0755->0644]
cpan/IO-Compress/examples/io/bzip2/bzstream [changed mode: 0755->0644]
cpan/IO-Compress/examples/io/gzip/gzcat [changed mode: 0755->0644]
cpan/IO-Compress/examples/io/gzip/gzgrep [changed mode: 0755->0644]
cpan/IO-Compress/examples/io/gzip/gzstream [changed mode: 0755->0644]
cpan/IO-Compress/lib/IO/Uncompress/Adapter/Identity.pm [changed mode: 0755->0644]
cpan/IO-Compress/lib/IO/Uncompress/RawInflate.pm [changed mode: 0755->0644]
cpan/IO-Compress/t/compress/oneshot.pl [changed mode: 0755->0644]
cpan/IO-Compress/t/cz-03zlib-v1.t [changed mode: 0755->0644]
cpan/Locale-Codes/t/alias_code.t [changed mode: 0755->0644]
cpan/Locale-Codes/t/code2country.t [changed mode: 0755->0644]
cpan/Locale-Codes/t/code2currency.t [changed mode: 0755->0644]
cpan/Locale-Codes/t/code2language.t [changed mode: 0755->0644]
cpan/Locale-Codes/t/code2script.t [changed mode: 0755->0644]
cpan/Locale-Codes/t/country.t [changed mode: 0755->0644]
cpan/Locale-Codes/t/country2code.t [changed mode: 0755->0644]
cpan/Locale-Codes/t/country_code2code.t [changed mode: 0755->0644]
cpan/Locale-Codes/t/currency2code.t [changed mode: 0755->0644]
cpan/Locale-Codes/t/language.t [changed mode: 0755->0644]
cpan/Locale-Codes/t/language2code.t [changed mode: 0755->0644]
cpan/Locale-Codes/t/script2code.t [changed mode: 0755->0644]
cpan/Locale-Maketext-Simple/t/1-basic.t [changed mode: 0755->0644]
cpan/Locale-Maketext-Simple/t/2-load_po_without_i_default.t [changed mode: 0755->0644]
cpan/Locale-Maketext-Simple/t/3-load_po_with_i_default.t [changed mode: 0755->0644]
cpan/Module-Build/scripts/config_data [changed mode: 0755->0644]
cpan/Module-Build/t/compat/exit.t [changed mode: 0755->0644]
cpan/Term-ANSIColor/t/basic.t [changed mode: 0755->0644]
cpan/Test-Harness/bin/prove [changed mode: 0755->0644]
cpan/Test-Harness/t/bailout.t [changed mode: 0755->0644]
cpan/Test-Harness/t/nofork.t [changed mode: 0755->0644]
cpan/Test-Harness/t/parse.t [changed mode: 0755->0644]
cpan/Test-Harness/t/source.t [changed mode: 0755->0644]
cpan/Test-Harness/t/source_tests/psql [changed mode: 0755->0644]
cpan/Test-Harness/t/source_tests/psql.bat [changed mode: 0755->0644]
cpan/Test-Harness/t/streams.t [changed mode: 0755->0644]
cpan/autodie/lib/Fatal.pm [changed mode: 0755->0644]
cpan/autodie/t/00-load.t [changed mode: 0755->0644]
cpan/autodie/t/Fatal.t [changed mode: 0755->0644]
cpan/autodie/t/autodie.t [changed mode: 0755->0644]
cpan/autodie/t/backcompat.t [changed mode: 0755->0644]
cpan/autodie/t/basic_exceptions.t [changed mode: 0755->0644]
cpan/autodie/t/binmode.t [changed mode: 0755->0644]
cpan/autodie/t/blog_hints.t [changed mode: 0755->0644]
cpan/autodie/t/caller.t [changed mode: 0755->0644]
cpan/autodie/t/context.t [changed mode: 0755->0644]
cpan/autodie/t/context_lexical.t [changed mode: 0755->0644]
cpan/autodie/t/crickey.t [changed mode: 0755->0644]
cpan/autodie/t/dbmopen.t [changed mode: 0755->0644]
cpan/autodie/t/eval_error.t [changed mode: 0755->0644]
cpan/autodie/t/exception_class.t [changed mode: 0755->0644]
cpan/autodie/t/exceptions.t [changed mode: 0755->0644]
cpan/autodie/t/exec.t [changed mode: 0755->0644]
cpan/autodie/t/filehandles.t [changed mode: 0755->0644]
cpan/autodie/t/fileno.t [changed mode: 0755->0644]
cpan/autodie/t/flock.t [changed mode: 0755->0644]
cpan/autodie/t/format-clobber.t [changed mode: 0755->0644]
cpan/autodie/t/hints.t [changed mode: 0755->0644]
cpan/autodie/t/hints_insist.t [changed mode: 0755->0644]
cpan/autodie/t/hints_pod_examples.t [changed mode: 0755->0644]
cpan/autodie/t/hints_provider_does.t [changed mode: 0755->0644]
cpan/autodie/t/hints_provider_easy_does_it.t [changed mode: 0755->0644]
cpan/autodie/t/hints_provider_isa.t [changed mode: 0755->0644]
cpan/autodie/t/internal-backcompat.t [changed mode: 0755->0644]
cpan/autodie/t/internal.t [changed mode: 0755->0644]
cpan/autodie/t/lethal.t [changed mode: 0755->0644]
cpan/autodie/t/mkdir.t [changed mode: 0755->0644]
cpan/autodie/t/open.t [changed mode: 0755->0644]
cpan/autodie/t/recv.t [changed mode: 0755->0644]
cpan/autodie/t/repeat.t [changed mode: 0755->0644]
cpan/autodie/t/scope_leak.t [changed mode: 0755->0644]
cpan/autodie/t/string-eval-basic.t [changed mode: 0755->0644]
cpan/autodie/t/string-eval-leak.t [changed mode: 0755->0644]
cpan/autodie/t/sysopen.t [changed mode: 0755->0644]
cpan/autodie/t/truncate.t [changed mode: 0755->0644]
cpan/autodie/t/unlink.t [changed mode: 0755->0644]
cpan/autodie/t/user-context.t [changed mode: 0755->0644]
cpan/autodie/t/usersub.t [changed mode: 0755->0644]
cpan/autodie/t/version.t [changed mode: 0755->0644]
cpan/autodie/t/version_tag.t [changed mode: 0755->0644]
cpan/libnet/demos/ftp [changed mode: 0755->0644]
cpan/libnet/demos/nntp [changed mode: 0755->0644]
cpan/libnet/demos/smtp.self [changed mode: 0755->0644]
cpan/podlators/t/devise-date.t [changed mode: 0755->0644]
cpan/podlators/t/man-heading.t [changed mode: 0755->0644]
cpan/podlators/t/overstrike.t [changed mode: 0755->0644]
dist/threads/threads.xs [changed mode: 0755->0644]
ext/SDBM_File/sdbm/grind [changed mode: 0755->0644]
ext/VMS-Stdio/t/vms_stdio.t [changed mode: 0755->0644]
genpacksizetables.pl [changed mode: 0755->0644]
hints/aix_4.sh [changed mode: 0755->0644]
installhtml [changed mode: 0755->0644]
mad/p55 [changed mode: 0755->0644]
makedepend.SH [changed mode: 0755->0644]
pod/buildtoc [changed mode: 0755->0644]
pod/pod2man.PL [changed mode: 0755->0644]
pod/pod2text.PL [changed mode: 0755->0644]
pod/rofftoc [changed mode: 0755->0644]
pod/splitman [changed mode: 0755->0644]
pod/splitpod [changed mode: 0755->0644]
qnx/ar [changed mode: 0755->0644]
qnx/cpp [changed mode: 0755->0644]
t/comp/use.t [changed mode: 0755->0644]
t/io/openpid.t [changed mode: 0755->0644]
t/op/filetest_t.t [changed mode: 0755->0644]
t/op/sigdispatch.t [changed mode: 0755->0644]
t/porting/diag.t [changed mode: 0755->0644]
t/porting/exec-bit.t [new file with mode: 0644]
t/test.pl [changed mode: 0755->0644]
uconfig.sh [changed mode: 0755->0644]
vms/ext/filespec.t [changed mode: 0644->0755]
win32/distclean.bat [changed mode: 0755->0644]
win32/perlexe.manifest [changed mode: 0755->0644]
x2p/Makefile.SH [changed mode: 0755->0644]
x2p/cflags.SH [changed mode: 0755->0644]

old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
index 89b3f96..f4ddd0e 100644 (file)
--- a/MANIFEST
+++ b/MANIFEST
@@ -4059,6 +4059,7 @@ Porting/corelist-perldelta.pl     Generates data perldelta from Module::CoreList
 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
@@ -4572,7 +4573,8 @@ t/porting/args_assert.t           Check that all PERL_ARGS_ASSERT* macros are used
 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
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
diff --git a/Porting/exec-bit.txt b/Porting/exec-bit.txt
new file mode 100644 (file)
index 0000000..b50517d
--- /dev/null
@@ -0,0 +1,26 @@
+# 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
old mode 100644 (file)
new mode 100755 (executable)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100644 (file)
new mode 100755 (executable)
index a0ce67b..41e757b
@@ -124,29 +124,11 @@ system("find . -type f -print     | xargs chmod 0444");
 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: $!";
 
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
diff --git a/mad/p55 b/mad/p55
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
diff --git a/qnx/ar b/qnx/ar
old mode 100755 (executable)
new mode 100644 (file)
diff --git a/qnx/cpp b/qnx/cpp
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
diff --git a/t/porting/exec-bit.t b/t/porting/exec-bit.t
new file mode 100644 (file)
index 0000000..7971ed7
--- /dev/null
@@ -0,0 +1,43 @@
+#!/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");
+
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100644 (file)
new mode 100755 (executable)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)