summaryrefslogtreecommitdiff
path: root/Porting
diff options
context:
space:
mode:
authorPerl 5 Porters <perl5-porters@africa.nicoh.com>1997-09-05 00:00:00 +0000
committerTim Bunce <Tim.Bunce@ig.co.uk>1997-09-05 00:00:00 +0000
commitfb73857aa0bfa8ed43d4d2f972c564c70a57e0c4 (patch)
tree97d2a45b0611b7b171257c2bc54d6532de48ff7f /Porting
parent464ed3b648d262825ad1bfc5a2e55de2507fd651 (diff)
parent62b753c6ae4ab9bf22fbb6ec7ceac820bcef8fe4 (diff)
downloadperl-fb73857aa0bfa8ed43d4d2f972c564c70a57e0c4.tar.gz
[inseparable changes from patch to perl 5.004_04]perl-5.004_04
[editor's note: this one imported like a charm!] TESTS - Subject: Improve pragma/locale test 102 - and don't fail, just warn From: Jarkko Hietaniemi <jhi@anna.in-berlin.de> Files: t/pragma/locale.t Subject: Invalid test output in t/op/taint.t in trial 1 From: Dan Sugalski <sugalsd@lbcc.cc.or.us> Files: t/op/taint.t t/op/taint.t prints out invalid ok messages for tests it skips. Rather than printing "ok 136" it prints "136 ok". p5p-msgid: 3.0.3.32.19970919160918.00857a50@stargate.lbcc.cc.or.us UTILITIES - Subject: Perldoc tiny patch to avoid $0 From: Ilya Zakharevich <ilya@math.ohio-state.edu> Files: utils/perldoc.PL Msg-ID: 199709122141.RAA16846@monk.mps.ohio-state.edu (applied based on p5p patch as commit 0b166b6635cf199f072db516b2a523ee659394d5) Subject: h2ph broken in 5.004_02 From: David Mazieres <dm@reeducation-labor.lcs.mit.edu> Files: utils/h2ph.PL Msg-ID: 199708201700.KAA02621@www.chapin.edu (applied based on p5p patch as commit 4a8e146e38ec2045f1f817a7cb578e1b1f80f39f) Subject: add key_t caddr_t to h2ph From: Tony Sanders <sanders@bsdi.com> Files: eg/sysvipc/ipcsem utils/h2ph.PL Msg-ID: 199708272301.RAA12803@austin.bsdi.com (applied based on p5p patch as commit 0806a92ffc3a74ca70aa81051cdf2a306cd0a8af) Subject: perldoc search ., lib and blib/* if -f 'Makefile.PL' From: Tim Bunce <Tim.Bunce@ig.co.uk> Files: utils/perldoc.PL Subject: perldoc finds wrong pod2man (from perldoc source) # We must look both in @INC for library modules and in PATH # for executables, like h2xs or perldoc itself. Unfortunately, searching PATH for installed perl executables like pod2man is INCORRECT. perldoc should start by searching the directory it was executed from, which might not be in the PATH at all. Credited: Joseph "Moof-in'" Hall <joseph@cscaper.com> p5p-msgid: 199708251732.KAA19299@gadget.cscaper.com Subject: 5.004m4t1: perlbug: NIS domainname gets into wrong places From: Andreas J. Koenig <koenig@anna.mind.de> Files: utils/perlbug.PL Msg-ID: sfcg1qy38as.fsf@anna.in-berlin.de (applied based on p5p patch as commit 41f926b844140b7f7eaa9302113e45df3a9f9ff4) Subject: add better local patch info to perlbug From: Tim Bunce <Tim.Bunce@ig.co.uk> Files: utils/perlbug.PL Subject: perldoc - suggest modules if requested module not found From: Anthony David <adavid@netinfo.com.au> Files: utils/perldoc.PL private-msgid: 3439CD83.6969@netinfo.com.au Subject: perldoc mail::foo tries to read binary /usr/ucb/mail From: Tim Bunce <Tim.Bunce@ig.co.uk> Files: utils/perldoc.PL Subject: perldoc weirdness perldoc mail::imap yields: {joseph}:79% perldoc mail::foo can't open /usr/ucb/mail: Permission denied at ./pod2man line 362. Credited: Joseph "Moof-in'" Hall <joseph@cscaper.com> p5p-msgid: 199710082014.NAA00808@gadget.cscaper.com Subject: perldoc -f setpwent (for example) returns no descriptive text From: Tim Bunce <Tim.Bunce@ig.co.uk> Files: utils/perldoc.PL Subject: perldoc diffs: don't search auto - much faster From: "Joseph N. Hall" <joseph@5sigma.com> Files: utils/perldoc.PL Msg-ID: MailDrop1.2d7dPPC.971012211957@screechy.cscaper.com (applied based on p5p patch as commit 62b753c6ae4ab9bf22fbb6ec7ceac820bcef8fe4)
Diffstat (limited to 'Porting')
-rwxr-xr-xPorting/makerel7
-rwxr-xr-xPorting/patchls106
-rw-r--r--Porting/pumpkin.pod26
3 files changed, 107 insertions, 32 deletions
diff --git a/Porting/makerel b/Porting/makerel
index bc472eee36..f719a5e936 100755
--- a/Porting/makerel
+++ b/Porting/makerel
@@ -27,6 +27,7 @@ $vers.= sprintf( "_%02d", $subversion) if $subversion;
$perl = "perl$vers";
$reldir = "$relroot/$perl";
+$reldir .= "-$ARGV[0]" if $ARGV[0];
print "\nMaking a release for $perl in $reldir\n\n";
@@ -47,7 +48,9 @@ print "\n";
print "Setting file permissions...\n";
-system("find . -type f -print | xargs chmod -w");
+system("find . -type f -print | xargs chmod -w");
+system("find . -type d -print | xargs chmod g-s");
+system("find t -name '*.t' -print | xargs chmod +x");
system("chmod +w configure"); # special case (see pumpkin.pod)
@exe = qw(
Configure
@@ -76,7 +79,7 @@ print "\n";
print "Creating $reldir release directory...\n";
die "$reldir release directory already exists\n" if -e "../$perl";
-die "$reldir.tar.gz release file already exists\n" if -e "../$perl.tar.gz";
+die "$reldir.tar.gz release file already exists\n" if -e "../$reldir.tar.gz";
mkdir($reldir, 0755) or die "mkdir $reldir: $!\n";
print "\n";
diff --git a/Porting/patchls b/Porting/patchls
index f4de529f46..1d4bd5ac40 100755
--- a/Porting/patchls
+++ b/Porting/patchls
@@ -9,33 +9,37 @@
# modify it under the same terms as Perl itself.
#
# With thanks to Tom Horsley for the seed code.
-#
-# $Id: patchls,v 1.3 1997/06/10 21:38:45 timbo Exp $
+
use Getopt::Std;
use Text::Wrap qw(wrap $columns);
use Text::Tabs qw(expand unexpand);
use strict;
+use vars qw($VERSION);
+
+$VERSION = 2.04;
sub usage {
die q{
patchls [options] patchfile [ ... ]
- -i Invert: for each patched file list which patch files patch it.
-h no filename headers (like grep), only the listing.
-l no listing (like grep), only the filename headers.
+ -i Invert: for each patched file list which patch files patch it.
-c Categorise the patch and sort by category (perl specific).
-m print formatted Meta-information (Subject,From,Msg-ID etc).
-p N strip N levels of directory Prefix (like patch), else automatic.
-v more verbose (-d for noisy debugging).
-f F only list patches which patch files matching regexp F
(F has $ appended unless it contains a /).
+ other options for special uses:
-I just gather and display summary Information about the patches.
+ -4 write to stdout the PerForce commands to prepare for patching.
+ -M T Like -m but only output listed meta tags (eg -M 'Title From')
+ -W N set wrap width to N (defaults to 70, use 0 for no wrap)
}
}
-$columns = 70;
-
$::opt_p = undef; # undef != 0
$::opt_d = 0;
$::opt_v = 0;
@@ -45,11 +49,21 @@ $::opt_h = 0;
$::opt_l = 0;
$::opt_c = 0;
$::opt_f = '';
+
+# special purpose options
$::opt_I = 0;
+$::opt_4 = 0; # output PerForce commands to prepare for patching
+$::opt_M = ''; # like -m but only output these meta items (-M Title)
+$::opt_W = 70; # set wrap width columns (see Text::Wrap module)
usage unless @ARGV;
-getopts("mihlvcp:f:I") or usage;
+getopts("mihlvc4p:f:IM:W:") or usage;
+
+$columns = $::opt_W || 9999999;
+
+$::opt_m = 1 if $::opt_M;
+my @show_meta = split(' ', $::opt_M || 'Title From Msg-ID');
my %cat_title = (
'BUILD' => 'BUILD PROCESS',
@@ -57,7 +71,7 @@ my %cat_title = (
'DOC' => 'DOCUMENTATION',
'LIB' => 'LIBRARY AND EXTENSIONS',
'PORT1' => 'PORTABILITY - WIN32',
- 'PORT2' => 'PORTABILITY - OTHER',
+ 'PORT2' => 'PORTABILITY - GENERAL',
'TEST' => 'TESTS',
'UTIL' => 'UTILITIES',
'OTHER' => 'OTHER CHANGES',
@@ -84,6 +98,8 @@ my %ls;
# Index: embed.h
my($in, $prevline, $prevtype, $ls);
+my(@removed, @added);
+my $prologue = 1; # assume prologue till patch or /^exit\b/ seen
foreach my $argv (@ARGV) {
$in = $argv;
@@ -96,16 +112,24 @@ foreach my $argv (@ARGV) {
my $type;
while (<F>) {
unless (/^([-+*]{3}) / || /^(Index):/) {
- # not an interesting patch line but possibly meta-information
+ # not an interesting patch line
+ # but possibly meta-information or prologue
+ if ($prologue) {
+ push @added, $1 if /^touch\s+(\S+)/;
+ push @removed, $1 if /^rm\s+(?:-f)?\s*(\S+)/;
+ $prologue = 0 if /^exit\b/;
+ }
next unless $::opt_m;
- $ls->{From}{$1}=1 if /^From:\s+(.*\S)/i;
- $ls->{Title}{$1}=1 if /^Subject:\s+(?:Re: )?(.*\S)/i;
- $ls->{'Msg-ID'}{$1}=1 if /^Message-Id:\s+(.*\S)/i;
- $ls->{Date}{$1}=1 if /^Date:\s+(.*\S)/i;
+ $ls->{From}{$1}=1,next if /^From:\s+(.*\S)/i;
+ $ls->{Title}{$1}=1,next if /^Subject:\s+(?:Re: )?(.*\S)/i;
+ $ls->{'Msg-ID'}{$1}=1,next if /^Message-Id:\s+(.*\S)/i;
+ $ls->{Date}{$1}=1,next if /^Date:\s+(.*\S)/i;
+ $ls->{$1}{$2}=1,next if /^([-\w]+):\s+(.*\S)/;
next;
}
$type = $1;
next if /^--- [0-9,]+ ----$/ || /^\*\*\* [0-9,]+ \*\*\*\*$/;
+ $prologue = 0;
print "Last: $prevline","This: ${_}Got: $1\n\n" if $::opt_d;
@@ -113,12 +137,12 @@ foreach my $argv (@ARGV) {
# Patch copes with this, so must we. It's also handy for
# documenting manual changes by simply adding Index: lines
# to the file which describes the problem bing fixed.
- add_file($ls, $1), next if /^Index:\s+(.*)/;
+ add_file($ls, $1), next if /^Index:\s+(\S+)/;
if ( ($type eq '---' and $prevtype eq '***') # Style 1
or ($type eq '+++' and $prevtype eq '---') # Style 2
) {
- if (/^[-+*]{3} (\S+)\s+.*\d\d:\d\d:\d\d/) { # double check
+ if (/^[-+*]{3} (\S+)\s*(.*?\d\d:\d\d:\d\d)?/) { # double check
add_file($ls, $1);
}
else {
@@ -141,9 +165,9 @@ foreach my $argv (@ARGV) {
print scalar(@ARGV)." files read.\n" if $::opt_v and @ARGV > 1;
-my @ls = sort {
- $a->{category} cmp $b->{category} || $a->{in} cmp $b->{in}
-} values %ls;
+# --- Firstly we filter and sort as needed ---
+
+my @ls = values %ls;
if ($::opt_f) { # filter out patches based on -f <regexp>
my $out;
@@ -158,6 +182,24 @@ if ($::opt_f) { # filter out patches based on -f <regexp>
} @ls;
}
+@ls = sort {
+ $a->{category} cmp $b->{category} || $a->{in} cmp $b->{in}
+} @ls;
+
+
+# --- Handle special modes ---
+
+if ($::opt_4) {
+ print map { "p4 delete $_\n" } @removed if @removed;
+ print map { "p4 add $_\n" } @added if @added;
+ my @patches = grep { $_->{is_in} } @ls;
+ my %patched = map { ($_, 1) } map { keys %{$_->{out}} } @patches;
+ delete @patched{@added};
+ my @patched = sort keys %patched;
+ print map { "p4 edit $_\n" } @patched if @patched;
+ exit 0;
+}
+
if ($::opt_I) {
my $n_patches = 0;
my($in,$out);
@@ -171,12 +213,16 @@ if ($::opt_I) {
my @all_out = sort keys %all_out;
my @missing = grep { ! -f $_ } @all_out;
print "$n_patches patch files patch ".@all_out." files (".@missing." missing)\n";
+ print "(use -v to list patches which patch 'missing' files)\n"
+ if @missing && !$::opt_v;
if ($::opt_v and @missing) {
print "Missing files:\n";
foreach $out (@missing) {
printf " %-20s\t%s\n", $out, $all_out{$out};
}
}
+ print "Added files: @added\n" if @added;
+ print "Removed files: @removed\n" if @removed;
exit 0+@missing;
}
@@ -256,11 +302,27 @@ sub list_files_by_patch {
$name = $ls->{in} unless defined $name;
my @meta;
if ($::opt_m) {
- foreach(qw(Title From Msg-ID)) {
- next unless $ls->{$_};
- my @list = sort keys %{$ls->{$_}};
- push @meta, sprintf "%7s: ", $_;
- @list = map { "\"$_\"" } @list if $_ eq 'Title';
+ my $meta;
+ foreach $meta (@show_meta) {
+ next unless $ls->{$meta};
+ my @list = sort keys %{$ls->{$meta}};
+ push @meta, sprintf "%7s: ", $meta;
+ if ($meta eq 'Title') {
+ @list = map { s/\[?PATCH\]?:?\s*//g; "\"$_\""; } @list
+ }
+ elsif ($meta eq 'From') {
+ # fix-up bizzare addresses from japan and ibm :-)
+ foreach(@list) {
+ s:\W+=?iso.*?<: <:;
+ s/\d\d-\w\w\w-\d{4}\s+\d\d:\S+\s*//;
+ }
+ }
+ elsif ($meta eq 'Msg-ID') {
+ my %from; # limit long threads to one msg-id per site
+ @list = map {
+ $from{(/@(.*?)>/ ? $1 : $_)}++ ? () : ($_);
+ } @list;
+ }
push @meta, my_wrap(""," ", join(", ",@list)."\n");
}
$name = "\n$name" if @meta and $name;
diff --git a/Porting/pumpkin.pod b/Porting/pumpkin.pod
index 5260e65fcf..6706c6c3c4 100644
--- a/Porting/pumpkin.pod
+++ b/Porting/pumpkin.pod
@@ -41,6 +41,10 @@ Subscribe by sending the message (in the body of your letter)
to perl5-porters-request@perl.org .
+Archives of the list are held at:
+
+ http://www.rosat.mpe-garching.mpg.de/mailing-lists/perl-porters/
+
=head1 How are Perl Releases Numbered?
Perl version numbers are floating point numbers, such as 5.004.
@@ -73,9 +77,10 @@ In addition, there may be "developer" sub-versions available. These
are not official releases. They may contain unstable experimental
features, and are subject to rapid change. Such developer
sub-versions are numbered with sub-version numbers. For example,
-version 5.004_04 is the 4'th developer version built on top of
-5.004. It might include the _01, _02, and _03 changes, but it
-also might not. Sub-versions are allowed to be subversive.
+version 5.003_04 is the 4'th developer version built on top of
+5.003. It might include the _01, _02, and _03 changes, but it
+also might not. Sub-versions are allowed to be subversive. (But see
+the next section for recent changes.)
These sub-versions can also be used as floating point numbers, so
you can do things such as
@@ -100,6 +105,11 @@ way to distribute important bug fixes without waiting for the
developers to untangle all the other problems in the current
developer's release.
+Trial releases of bug-fix maintenance releases are announced on
+perl5-porters. Trial releases use the new subversion number (to avoid
+testers installing it over the previous release) and include a 'local
+patch' entry in patchlevel.h.
+
Watch for announcements of maintenance subversions in
comp.lang.perl.announce.
@@ -1157,14 +1167,14 @@ and/or fcntl() file locking. It's a mess.
=back
-=head1 AUTHOR
-
-Andy Dougherty <doughera@lafcol.lafayette.edu>.
+=head1 AUTHORS
-Additions by Chip Salzenberg <chip@perl.com>.
+Original author: Andy Dougherty doughera@lafcol.lafayette.edu .
+Additions by Chip Salzenberg chip@perl.com and
+Tim Bunce Tim.Bunce@ig.co.uk .
All opinions expressed herein are those of the authorZ<>(s).
=head1 LAST MODIFIED
-$Id: pumpkin.pod,v 1.10.1.1 1997/06/10 20:46:47 timbo Exp $
+$Id: pumpkin.pod,v 1.13 1997/08/28 18:26:40 doughera Released $