perl

 view release on metacpan or  search on metacpan

Porting/release_managers_guide.pod  view on Meta::CPAN

that you've ever done, make sure that your name is listed in the section
entitled C<THE KEEPERS OF THE PUMPKIN>.

I<If you're making a BLEAD-FINAL release>, also update the "SELECTED
RELEASE SIZES" section with the output of
F<Porting/perlhist_calculate.pl>.

Be sure to commit your changes:

 $ git commit -m 'Add new release to perlhist' pod/perlhist.pod

=for checklist skip BLEAD-POINT

=head3 update patchlevel.h

I<You MUST SKIP this step for a BLEAD-POINT release>

Update F<patchlevel.h> to add a C<-RC1>-or-whatever string; or, if this is
a final release, remove it. For example:

  static const char * const local_patches[] = {
          NULL
 +        ,"RC1"
  #ifdef PERL_GIT_UNCOMMITTED_CHANGES
          ,"uncommitted-changes"
  #endif

Be sure to commit your change:

 $ git commit -m 'Bump version to RCnnn' patchlevel.h

=head3 run makemeta to update META files

 $ ./perl -Ilib Porting/makemeta

Be sure to commit any changes (if applicable):

 $ git status   # any changes?
 $ git commit -m 'Update META files' META.*

=head3 build, test and check a fresh perl

Build perl, then make sure it passes its own test suite, and installs:

 $ git clean -xdf
 $ ./Configure -des -Dprefix=/tmp/perl-5.X.Y-pretest

 # or if it's an odd-numbered version:
 $ ./Configure -des -Dusedevel -Dprefix=/tmp/perl-5.X.Y-pretest

 $ make test install

Check that the output of C</tmp/perl-5.X.Y-pretest/bin/perl -v> and
C</tmp/perl-5.X.Y-pretest/bin/perl -V> are as expected,
especially as regards version numbers, patch and/or RC levels, and @INC
paths. Note that as they have been built from a git working
directory, they will still identify themselves using git tags and
commits. (Note that for an odd-numbered version, perl will install
itself as C<perl5.X.Y>). C<perl -v> will identify itself as:

 This is perl 5, version X, subversion Y (v5.X.Y (v5.XX.Z-NNN-gdeadbeef))

where 5.X.Z is the latest tag, NNN the number of commits since this tag,
and C<< deadbeef >> commit of that tag.

Then delete the temporary installation.

=head3 create the release tag

Create the I<annotated> tag identifying this release (e.g.):

 $ git tag v5.11.0 -m 'First release of the v5.11 series!'

It is B<VERY> important that from this point forward, you not push
your git changes to the Perl master repository.  If anything goes
wrong before you publish your newly-created tag, you can delete
and recreate it.  Once you push your tag, we're stuck with it
and you'll need to use a new version number for your release.

Verify that your tag is annotated:

 $ git show v5.X.Y

The output must look similar to the following:

 tag v5.X.Y
 Tagger: Jesse Vincent <jesse@bestpractical.com>
 Date:   Fri Oct 2 16:29:56 2009 -0400

=head3 build the tarball

Before you run the following, you might want to install 7-Zip (the
C<p7zip-full> package under Debian or the C<p7zip> port on MacPorts) or
the AdvanceCOMP suite (e.g. the C<advancecomp> package under Debian,
or the C<advancecomp> port on macports - 7-Zip on Windows is the
same code as AdvanceCOMP, so Windows users get the smallest files
first time). These compress about 5% smaller than gzip and bzip2.
Over the lifetime of your distribution this will save a lot of
people a small amount of download time and disk space, which adds
up.

In order to produce the C<xz> tarball, XZ Utils are required. The C<xz>
utility is included with most modern UNIX-type operating systems and
is available for Cygwin. A Windows port is available from
L<https://tukaani.org/xz/>.

B<IMPORTANT>: if you are on OS X, you must export C<COPYFILE_DISABLE=1>
to prevent OS X resource files from being included in your tarball. After
creating the tarball following the instructions below, inspect it to ensure
you don't have files like F<._foobar>.

Create a tarball. Use the C<-s> option to specify a suitable suffix for
the tarball and directory name:

 $ cd root/of/perl/tree

 $ perl Porting/makerel -x -s RC1           # for a release candidate
 $ perl Porting/makerel -x                  # for the release itself

This creates the directory F<../perl-x.y.z-RC1> or similar, copies all
the MANIFEST files into it, sets the correct permissions on them, then

 view all matches for this distribution
 view release on metacpan -  search on metacpan

( run in 0.568 second using v1.00-cache-2.02-grep-82fe00e-cpan-1925d2aa809 )