Skip to content

Create Porting/MANIFEST.dev as a complement to MANIFEST #19513

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 13 commits into
base: blead
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 6 additions & 16 deletions MANIFEST
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@
.editorconfig EditorConfig style file
.lgtm.yml LGTM.com configuration file
.metaconf-exclusions.txt Symbols that should ignored when generating Configure
.travis.yml continuous integration on github (where enabled)
amigaos4/amigaio.c AmigaOS4 port
amigaos4/amigaio.h AmigaOS4 port
amigaos4/amigaos.c AmigaOS4 port
Expand Down Expand Up @@ -5310,8 +5309,8 @@ pod/perl58delta.pod Perl changes in version 5.8.0
pod/perlapio.pod Perl internal IO abstraction interface
pod/perlartistic.pod Perl Artistic License
pod/perlbook.pod Perl book information
pod/perlboot.pod
pod/perlbot.pod
pod/perlboot.pod Links to info on OO programming in Perl
pod/perlbot.pod Links to info on OO programming in Perl
pod/perlcall.pod Perl calling conventions from C
pod/perlcheat.pod Perl cheat sheet
pod/perlclib.pod Internal replacements for standard C library functions
Expand Down Expand Up @@ -5375,7 +5374,7 @@ pod/perlrecharclass.pod Perl regular expression character classes
pod/perlref.pod Perl references, the rest of the story
pod/perlreftut.pod Perl references short introduction
pod/perlreguts.pod Perl regular expression engine internals
pod/perlrepository.pod
pod/perlrepository.pod Links to current info on the Perl source repository
pod/perlrequick.pod Perl regular expressions quick start
pod/perlreref.pod Perl regular expressions quick reference
pod/perlretut.pod Perl regular expressions tutorial
Expand All @@ -5388,9 +5387,9 @@ pod/perlsub.pod Perl subroutines
pod/perlsyn.pod Perl syntax
pod/perlthrtut.pod Perl threads tutorial
pod/perltie.pod Perl objects hidden behind simple variables
pod/perltodo.pod
pod/perltooc.pod
pod/perltoot.pod
pod/perltodo.pod Link to the Perl to-do list
pod/perltooc.pod Links to info on OO programming in Perl
pod/perltoot.pod Links to info on OO programming in Perl
pod/perltrap.pod Perl traps for the unwary
pod/perlunicode.pod Perl Unicode support
pod/perlunicook.pod Perl Unicode cookbook
Expand All @@ -5408,14 +5407,10 @@ Porting/acknowledgements.pl Generate perldelta acknowledgements text
Porting/add-package.pl Add/Update CPAN modules that are part of Core
Porting/add-pod-file Utility to add new pod/*.pod file to core distribution
Porting/bench.pl Run benchmarks against t/perf/benchmarks
Porting/bisect.pl A tool to make bisecting easy
Porting/bisect-example.sh Example script to use with git bisect run
Porting/bisect-runner.pl Tool to be called by git bisect run
Porting/bump-perl-version bump the perl version in relevant files
Porting/check-cpan-pollution Check for commits that may wrongly touch CPAN distros
Porting/check83.pl Check whether we are 8.3-friendly
Porting/checkansi.pl Check source code for ANSI-C violations
Porting/checkAUTHORS.pl Check that the AUTHORS file is complete
Porting/checkcfguse.pl Check that config symbols are being used
Porting/checkcfgvar.pl Check that config scripts define all symbols
Porting/checkpodencoding.pl Check POD encoding
Expand All @@ -5438,10 +5433,6 @@ Porting/exec-bit.txt List of files that get +x in release tarball
Porting/exercise_makedef.pl Brute force testing for makedef.pl
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/git-deltatool Mark commits for perldelta in git notes
Porting/git-find-p4-change Find the change for a p4 change number
Porting/git-make-p4-refs Output git refs for each p4 change number, suitable for appending to .git/packed-refs
Porting/GitUtils.pm Generate the contents of a .patch file
Porting/Glossary Glossary of config.sh variables
Porting/harness-timer-report.pl Analyze the timings from the test harness
Porting/how_to_write_a_perldelta.pod Bluffer's guide to writing a perldelta.
Expand Down Expand Up @@ -5479,7 +5470,6 @@ Porting/sync-with-cpan Sync with CPAN
Porting/timecheck.c Test program for the 2038 fix
Porting/timecheck2.c Test program for the 2038 fix
Porting/todo.pod Perl things to do
Porting/updateAUTHORS.pl Tool to automatically update AUTHORS and .mailmap from git log data
Porting/valgrindpp.pl Summarize valgrind reports
Porting/vote_admin_guide.pod Perlgov Vote Administrator guide
pp.c Push/Pop code
Expand Down
10 changes: 8 additions & 2 deletions Makefile.SH
Original file line number Diff line number Diff line change
Expand Up @@ -667,7 +667,10 @@ all: $(FIRSTMAKEFILE) $(MINIPERL_EXE) $(generated_pods) $(private) $(unidatafile

$(MANIFEST_SRT): MANIFEST $(PERL_EXE)
@$(RUN_PERL) Porting/manisort -q || (echo "WARNING: re-sorting MANIFEST"; \
$(RUN_PERL) Porting/manisort -q -o MANIFEST; sh -c true)
$(RUN_PERL) Porting/manisort --fix=MANIFEST)
@$(RUN_PERL) Porting/manisort -q Porting/MANIFEST.dev || \
(echo "WARNING: re-sorting Porting/MANIFEST.dev"; \
$(RUN_PERL) Porting/manisort --fix=Porting/MANIFEST.dev)
@touch $(MANIFEST_SRT)

.PHONY: all utilities
Expand Down Expand Up @@ -1287,7 +1290,10 @@ regen_all regen-all: regen regen_meta

manisort: FORCE
@perl Porting/manisort -q || (echo "WARNING: re-sorting MANIFEST"; \
perl Porting/manisort -q -o MANIFEST; sh -c true)
perl Porting/manisort --fix=MANIFEST)
@perl Porting/manisort -q Porting/MANIFEST.dev || \
(echo "WARNING: re-sorting Porting/MANIFEST.dev"; \
perl Porting/manisort --fix=Porting/MANIFEST.dev)

manicheck: FORCE
perl Porting/manicheck
Expand Down
84 changes: 84 additions & 0 deletions Porting/MANIFEST.dev
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
.git_patch Format used by make_patchnum.pl
.gitattributes See: git --help gitattributes
.github/ISSUE_TEMPLATE/01-perlbug-core.md
.github/ISSUE_TEMPLATE/02-perlbug-docs.md
.github/ISSUE_TEMPLATE/config.yml
.github/workflows/detect-conflicts.yml
.github/workflows/irc-notifications.yaml
.github/workflows/testsuite.yml
.gitignore Generic .gitignore rules. See: git --help gitignore
.mailmap Map canonical name/email to those in commits
.travis.yml continuous integration on github (where enabled)
cpan/.gitignore Generic .gitignore for the cpan/ tree
cpan/Compress-Raw-Bzip2/.gitignore .gitignore rules for the Compress-Raw-Bzip2 cpan distribution
cpan/Compress-Raw-Zlib/.gitignore .gitignore rules for the Compress-Raw-Zlib cpan distribution
cpan/DB_File/.gitignore .gitignore rules for the DB_File cpan distribution
cpan/Digest-MD5/.gitignore .gitignore rules for the Digest-MD5 cpan distribution
cpan/Digest-SHA/.gitignore .gitignore rules for the Digest-SHA cpan distribution
cpan/Encode/.gitignore .gitignore rules for the Encode cpan distribution
cpan/IO-Compress/.gitignore .gitignore rules for the IO-Compress cpan distribution
cpan/IPC-SysV/.gitignore .gitignore rules for the IPC-SysV cpan distribution
cpan/libnet/.gitignore .gitignore rules for the libnet cpan distribution
cpan/perlfaq/.gitignore .gitignore rules for the perlfaq cpan distribution
cpan/Pod-Checker/.gitignore .gitignore rules for the Pod-Checker cpan distribution
cpan/Pod-Perldoc/.gitignore .gitignore rules for the Pod-Perldoc cpan distribution
cpan/Pod-Usage/.gitignore .gitignore rules for the Pod-Usage cpan distribution
cpan/podlators/.gitignore .gitignore rules for the podlators cpan distribution
cpan/Scalar-List-Utils/.gitignore .gitignore rules for the Scalar-List-Utils cpan distribution
cpan/Socket/.gitignore .gitignore rules for the Socket cpan distribution
cpan/Sys-Syslog/.gitignore .gitignore rules for the Sys-Syslog cpan distribution
cpan/Unicode-Collate/.gitignore .gitignore rules for the Unicode-Collate cpan distribution
cpan/Win32/.gitignore .gitignore rules for the Win32 cpan distribution
cpan/Win32API-File/.gitignore .gitignore rules for the Win32API-File cpan distribution
dist/.gitignore Generic .gitignore for the dist/ tree
dist/base/.gitignore .gitignore rules for the base distribution
dist/Carp/.gitignore .gitignore rules for the Carp distribution
dist/Devel-PPPort/.gitignore .gitignore rules for the Devel-PPPort distribution
dist/ExtUtils-CBuilder/.gitignore .gitignore rules for the ExtUtils-CBuilder distribution
dist/IO/.gitignore .gitignore rules for the IO distribution
dist/lib/.gitignore .gitignore rules for the lib distribution
dist/Module-CoreList/.gitignore .gitignore rules for the Module-CoreList distribution
dist/PathTools/.gitignore .gitignore rules for the PathTools distribution
dist/Safe/.gitignore .gitignore rules for the Safe distribution
dist/Search-Dict/.gitignore .gitignore rules for the Search-Dict distribution
dist/Storable/.gitignore .gitignore rules for the Storable distribution
dist/Time-HiRes/.gitignore .gitignore rules for the Time-HiRes distribution
dist/Unicode-Normalize/.gitignore .gitignore rules for the Unicode-Normalize distribution
dist/XSLoader/.gitignore .gitignore rules for the XSLoader distribution
ext/.gitignore Generic .gitignore for the ext/ tree
ext/Amiga-ARexx/.gitignore .gitignore rules for the Amiga-ARexx extension
ext/Amiga-Exec/.gitignore .gitignore rules for the Amiga-Exec extension
ext/B/.gitignore .gitignore rules for the B extension
ext/DynaLoader/.gitignore .gitignore rules for the DynaLoader extension
ext/Errno/.gitignore .gitignore rules for the Errno extension
ext/Fcntl/.gitignore .gitignore rules for the Fcntl extension
ext/File-Glob/.gitignore .gitignore rules for the File-Glob extension
ext/GDBM_File/.gitignore .gitignore rules for the GDBM_File extension
ext/Hash-Util/.gitignore .gitignore rules for the Hash-Util extension
ext/I18N-Langinfo/.gitignore .gitignore rules for the I18N-Langinfo extension
ext/NDBM_File/.gitignore .gitignore rules for the NDBM_File extension
ext/ODBM_File/.gitignore .gitignore rules for the ODBM_File extension
ext/Pod-Functions/.gitignore .gitignore rules for the Pod-Functions extension
ext/Pod-Html/.gitignore .gitignore rules for the Pod-Html extension
ext/POSIX/.gitignore .gitignore rules for the POSIX extension
ext/re/.gitignore .gitignore rules for the re extension
ext/SDBM_File/.gitignore .gitignore rules for the SDBM_File extension
ext/VMS-DCLsym/.gitignore .gitignore rules for the VMS-DCLsym extension
ext/VMS-Stdio/.gitignore .gitignore rules for the VMS-Stdio extension
ext/Win32CORE/.gitignore .gitignore rules for the Win32CORE extension
ext/XS-APItest/.gitignore .gitignore rules for the XS-APItest extension
ext/XS-Typemap/.gitignore .gitignore rules for the XS-Typemap extension
lib/.gitignore Generic .gitignore for the lib/ tree
pod/.gitignore Generic .gitignore for the pod/ tree
Porting/bisect.pl A tool to make bisecting easy
Porting/bisect-example.sh Example script to use with git bisect run
Porting/bisect-runner.pl Tool to be called by git bisect run
Porting/checkAUTHORS.pl Check that the AUTHORS file is complete
Porting/git-deltatool Mark commits for perldelta in git notes
Porting/git-find-p4-change Find the change for a p4 change number
Porting/git-make-p4-refs Output git refs for each p4 change number, suitable for appending to .git/packed-refs
Porting/GitUtils.pm Generate the contents of a .patch file
Porting/MANIFEST.dev Porting files - all files in repo we do not ship
Porting/updateAUTHORS.pl Tool to automatically update AUTHORS and .mailmap from git log data
utils/.gitignore Generic .gitignore for the utils/ tree
win32/.gitignore Generic .gitignore for the win32/ tree
41 changes: 21 additions & 20 deletions Porting/Maintainers.pm
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ our @EXPORT_OK = qw(%Modules %Maintainers
show_results process_options files_to_modules
finish_tap_output
reload_manifest);
our $VERSION = 0.14;
our $VERSION = 0.15;

require Exporter;

Expand All @@ -35,23 +35,24 @@ my %MANIFEST;
sub reload_manifest {
%MANIFEST = ();

my $manifest_path = 'MANIFEST';
if (! -e $manifest_path) {
$manifest_path = "../MANIFEST";
}

if (open(my $manfh, '<', $manifest_path )) {
while (<$manfh>) {
if (/^(\S+)/) {
$MANIFEST{$1}++;
}
else {
warn "MANIFEST:$.: malformed line: $_\n";
}
}
close $manfh;
} else {
die "$0: Failed to open MANIFEST for reading: $!\n";
foreach my $manifest_path ('MANIFEST','Porting/MANIFEST.dev') {
if (! -e $manifest_path) {
$manifest_path = "../MANIFEST";
}

if (open(my $manfh, '<', $manifest_path )) {
while (<$manfh>) {
if (/^(\S+)/) {
$MANIFEST{$1}++;
}
else {
warn "MANIFEST:$.: malformed line: $_\n";
}
}
close $manfh;
} else {
die "$0: Failed to open MANIFEST for reading: $!\n";
}
}
}

Expand Down Expand Up @@ -355,7 +356,8 @@ sub duplicated_maintainers {

sub warn_maintainer {
my $name = shift;
ok($files{$name}, "$name has a maintainer (see Porting/Maintainers.pl)");
ok($name=~/\.gitignore\z/ or $files{$name},
"$name has a maintainer (see Porting/Maintainers.pl)");
}

sub missing_maintainers {
Expand All @@ -380,4 +382,3 @@ sub finish_tap_output {
}

1;

38 changes: 33 additions & 5 deletions Porting/README.pod
Original file line number Diff line number Diff line change
Expand Up @@ -253,16 +253,39 @@ web page to use to generate the snapshot files.

=head2 F<manicheck>

This script outputs a list of files in F<MANIFEST> which don't exist and a
list of files that exist and aren't in F<MANIFEST>.
This script outputs a list of files in F<MANIFEST> and F<MANIFEST.dev>
which don't exist and a list of files that exist and aren't in
F<MANIFEST> or in F<MANIFEST.dev>

=head2 F<MANIFEST.dev>

This file lists all files that are not included in the F<MANIFEST>
file in the root of the repo. The union of the files it contains with
the files in C<MANIFEST> should be the same the list of file produced
by C<git ls-files> from a git checkout.

=head2 F<manifest_lib.pl>

This library provides functions used in checking and sorting the F<MANIFEST>.
This library provides functions used in checking and sorting the
F<MANIFEST> and F<MANIFEST.dev> files. The sort order is similar to
dictionary sort order (alphabetical case insensitive) but where path
components and extensions are sorted independently such that the
following files would be sorted into the following order:

Configure
configure
lib/Foo/Bar
lib/Foo/Bar.pm
lib/Foo/Bar/Alpha.pm
lib/Foo-Alpha/Baz

Currently this code does not support EBCDIC. Patches welcome.

=head2 F<manisort>

This script sorts the files in F<MANIFEST>.
This script sorts the files in F<MANIFEST> or F<MANIFEST.dev>. It uses
F<manifest_list.pl> to do the sorting. Use C<Porting/manisort --man>
to see instructions for use.

=head2 F<mksample>

Expand Down Expand Up @@ -299,6 +322,12 @@ distribution, provides functions useful during testing.
Generate the sections of files listed in C<%Targets> from F<pod/perl.pod>.
Mostly these are rules in Makefiles.

An example of what this tool does is to ensure that every podfile listed
in F<pod/perl.pod> is also listed in F<MANIFEST> with the same
description in F<pod/perl.pod>. If they differ in test mode it will
complain. To update the manifest entries run it from the command line
without the --test argument.

--verbose gives slightly more output
--build-all tries to build everything
--build-foo updates foo as follows
Expand Down Expand Up @@ -403,4 +432,3 @@ leaks.
Guide for Vote Administrators for running Steering Council elections.

=cut

51 changes: 26 additions & 25 deletions Porting/check83.pl
Original file line number Diff line number Diff line change
Expand Up @@ -44,32 +44,33 @@ sub eight_dot_three {
}

my %dir;

if (open(MANIFEST, '<', 'MANIFEST')) {
while (<MANIFEST>) {
chomp;
s/\s.+//;
unless (-f) {
print "missing: $_\n";
next;
}
if (tr/././ > 1) {
print "more than one dot: $_\n";
next;
}
if ((my $slashes = $_ =~ tr|\/|\/|) > 7) {
print "more than eight levels deep: $_\n";
next;
}
while (m!/|\z!g) {
my ($dir, $edt) = eight_dot_three("$`");
next unless defined $dir;
($dir, $edt) = map { lc } ($dir, $edt);
push @{$dir{$dir}->{$edt}}, $_;
}
foreach my $manifest_file ('MANIFEST', 'Porting/MANIFEST.dev') {
if (open(MANIFEST, '<', $manifest_file)) {
while (<MANIFEST>) {
chomp;
s/\s.+//;
unless (-f) {
print "missing: $_\n";
next;
}
if (tr/././ > 1) {
print "more than one dot: $_\n";
next;
}
if ((my $slashes = $_ =~ tr|\/|\/|) > 7) {
print "more than eight levels deep: $_\n";
next;
}
while (m!/|\z!g) {
my ($dir, $edt) = eight_dot_three("$`");
next unless defined $dir;
($dir, $edt) = map { lc } ($dir, $edt);
push @{$dir{$dir}->{$edt}}, $_;
}
}
} else {
die "$0: $manifest_file: $!\n";
}
} else {
die "$0: MANIFEST: $!\n";
}

for my $dir (sort keys %dir) {
Expand Down
Loading