X-Git-Url: https://perl5.git.perl.org/perl5.git/blobdiff_plain/d38b68fefb34cb7ae5561c52655f37921a77eb5f..c157f5d2977bb9a463059e5684f4630a38194592:/Porting/makerel diff --git a/Porting/makerel b/Porting/makerel old mode 100644 new mode 100755 index ce7a9ed..3fe610f --- a/Porting/makerel +++ b/Porting/makerel @@ -1,11 +1,25 @@ #!/usr/bin/perl -w -# A first attempt at some automated support for making a perl release. +# A tool to build a perl release tarball # Very basic but functional - if you're on a unix system. # +# If you're on Win32 then it should still work, but various Unix command-line +# tools will need to be available somewhere. An obvious choice is to install +# Cygwin and ensure its 'bin' folder is on the PATH in the shell where you run +# this script. The Cygwin 'bin' folder needs to precede the Windows 'system32' +# folder so that Cygwin's 'find' command is found in preference to the Windows +# 'find' command. Your Cygwin installation will need to contain at least the +# 'cpio' command, in addition to the commands installed by default, and it will +# also be useful to have 'curl' and 'diffstat' installed too for later stages +# of the release process (namely, Porting\corelist.pl and generating the commit +# statistics for the perlXYZdelta.pod file respectively). Finally, ensure that +# the 'awk' and 'shasum' commands are copies of gawk.exe and sha1sum.exe +# respectively, rather than the links to them that only work in a Cygwin bash +# shell which they are by default. +# # No matter how automated this gets, you'll always need to read -# and re-read pumpkin.pod checking for things to be done at various -# stages of the process. +# and re-read pumpkin.pod and release_managers_guide.pod to +# check for things to be done at various stages of the process. # # Tim Bunce, June 1997 @@ -16,17 +30,18 @@ use Getopt::Std; $|=1; sub usage { die < }; + system("chmod +x @exe") == 0 or die "system: $!"; my @writables = qw( NetWare/config_H.wc NetWare/Makefile + feature.h + lib/feature.pm keywords.h + keywords.c opcode.h opnames.h pp_proto.h - pp.sym proto.h embed.h embedvar.h - global.sym overload.c overload.h + mg_vtable.h perlapi.h perlapi.c cpan/Devel-PPPort/module2.c @@ -161,51 +158,57 @@ my @writables = qw( win32/Makefile win32/Makefile.ce win32/makefile.mk - win32/config_H.bc + win32/config_H.ce win32/config_H.gc + win32/config_H.gc64 + win32/config_H.gc64nox win32/config_H.vc + win32/config_H.vc64 utils/Makefile uconfig.h ); -system("chmod +w @writables") == 0 - or die "system: $!"; - -print "Adding CRs to DOSish files...\n"; -# This list is also in curliff.pl. -my @crlf = qw( - djgpp/configure.bat - README.ce - README.dos - README.symbian - README.win32 - symbian/config.pl - symbian/makesis.pl - symbian/README - symbian/xsbuild.pl - win32/Makefile - win32/Makefile.ce - win32/ce-helpers/compile-all.bat - win32/ce-helpers/compile.bat - win32/ce-helpers/registry.bat - win32/distclean.bat - win32/makefile.mk -); -system("perl -pi -e 's/\\015*\\012/\\015\\012/' @crlf") == 0 +system("chmod u+w @writables") == 0 or die "system: $!"; -print "\n"; chdir ".." or die $!; +exit if $opts{n}; + my $src = (-e $perl) ? $perl : 'perl'; # 'perl' in maint branch -print "Creating and compressing the tar.gz file...\n"; -$cmd = "tar cf - $reldir | gzip --best > $reldir.tar.gz"; -system($cmd) == 0 or die "$cmd failed"; +print "Checking if you have 7z...\n"; +my $output_7z = `7z 2>&1`; +my $have_7z = defined $output_7z && $output_7z =~ /7-Zip/; -if ($opts{b}) { - print "Creating and compressing the tar.bz2 file...\n"; - $cmd = "tar cf - $reldir | bzip2 > $reldir.tar.bz2"; +print "Checking if you have advdef...\n"; +my $output_advdef = `advdef --version 2>&1`; +my $have_advdef = defined $output_advdef && $output_advdef =~ /advancecomp/; + +if ($have_7z) { + print "Creating and compressing the tar.gz file with 7z...\n"; + $cmd = "tar cf - $reldir | 7z a -tgzip -mx9 -bd -si $reldir.tar.gz"; + system($cmd) == 0 or die "$cmd failed"; +} else { + print "Creating and compressing the tar.gz file...\n"; + $cmd = "tar cf - $reldir | gzip --best > $reldir.tar.gz"; system($cmd) == 0 or die "$cmd failed"; + if ($have_advdef) { + print "Recompressing the tar.gz file with advdef...\n"; + $cmd = "advdef -z -4 $reldir.tar.gz"; + system($cmd) == 0 or die "$cmd failed"; + } +} + +if ($opts{b}) { + if ($have_7z) { + print "Creating and compressing the tar.bz2 file with 7z...\n"; + $cmd = "tar cf - $reldir | 7z a -tbzip2 -mx9 -bd -si $reldir.tar.bz2"; + system($cmd) == 0 or die "$cmd failed"; + } else { + print "Creating and compressing the tar.bz2 file...\n"; + $cmd = "tar cf - $reldir | bzip2 > $reldir.tar.bz2"; + system($cmd) == 0 or die "$cmd failed"; + } } print "\n"; @@ -213,8 +216,9 @@ print "\n"; system("ls -ld $perl*"); print "\n"; +my $null = $^O eq 'MSWin32' ? 'NUL' : '/dev/null'; for my $sha (qw(sha1 shasum sha1sum)) { - if (`which $sha 2>/dev/null`) { + if (`which $sha 2>$null`) { system("$sha $perl*.tar.*"); last; }