Author: dagolden
Date: Sat Jun 27 19:34:09 2009
New Revision: 12938
Added:
ExtUtils-ParseXS/trunk/.perl_developer.yml (contents, props changed)
ExtUtils-ParseXS/trunk/devtools/
ExtUtils-ParseXS/trunk/devtools/bleadcheck.pl (contents, props changed)
ExtUtils-ParseXS/trunk/devtools/bump_version.pl (contents, props changed)
ExtUtils-ParseXS/trunk/devtools/patching_blead.pod (contents, props changed)
ExtUtils-ParseXS/trunk/devtools/release_instructions.pod (contents, props changed)
Removed:
ExtUtils-ParseXS/trunk/bleadcheck.pl
Log:
import devtools
Added: ExtUtils-ParseXS/trunk/.perl_developer.yml
==============================================================================
--- (empty file)
+++ ExtUtils-ParseXS/trunk/.perl_developer.yml Sat Jun 27 19:34:09 2009
@@ -0,0 +1,31 @@
+svn:
+ repository: "https://svn.perl.org/modules/"
+ layout:
+ trunk: "#DIST#/trunk/"
+ tags: "#DIST#/tags/"
+ branches: "#DIST#/branches/"
+ tag:
+ name: "#VERSION#"
+ message: "tagging #DIST# release #VERSION#"
+not_kwalitee:
+ - has_test_pod
+ - has_test_pod_coverage
+publish:
+ pause:
+ process:
+ - clean
+ - create_build --no-sign
+ - check_manifest
+ - check_changes
+ - check_meta_author
+ - .test
+ - .testpod
+ #- .testpodcoverage
+ - .dist
+ #- check_kwalitee
+ - .disttest
+ - check_version_control
+ shipit:
+ - tag_version_control
+# - scp_relay
+# - pause_http_relay
Added: ExtUtils-ParseXS/trunk/devtools/bleadcheck.pl
==============================================================================
--- (empty file)
+++ ExtUtils-ParseXS/trunk/devtools/bleadcheck.pl Sat Jun 27 19:34:09 2009
@@ -0,0 +1,31 @@
+#!/usr/bin/perl
+
+# A script to check a local copy against bleadperl, generating a blead
+# patch if they're out of sync. The path to bleadperl is required.
+# An optional directory argument will be chdir()-ed into before comparing.
+
+use strict;
+my $blead = shift @ARGV
+ or die "Usage: $0 <bleadperl-src> [ExtUtils-ParseXS-src]\n";
+
+chdir shift() if @ARGV;
+
+
+diff( "$blead/lib/ExtUtils/ParseXS.pm", "lib/ExtUtils/ParseXS.pm");
+
+diff( "$blead/lib/ExtUtils/ParseXS", "lib/ExtUtils/ParseXS",
+ qw(t Changes .svn) );
+
+diff( "$blead/lib/ExtUtils/ParseXS/t", "t",
+ qw(.svn) );
+
+######################
+sub diff {
+ my ($first, $second, @skip) = @_;
+ local $_ = `diff -ur $first $second`;
+
+ for my $x (@skip) {
+ s/^Only in .* $x\n//mg;
+ }
+ print;
+}
Added: ExtUtils-ParseXS/trunk/devtools/bump_version.pl
==============================================================================
--- (empty file)
+++ ExtUtils-ParseXS/trunk/devtools/bump_version.pl Sat Jun 27 19:34:09 2009
@@ -0,0 +1,115 @@
+#!/usr/bin/env perl
+
+# NOTE: we run this immediately *after* a release so that any reports
+# against svn are obvious
+
+use strict;
+use warnings;
+
+use lib 'lib';
+use Module::Build;
+
+use Tie::File;
+
+eval { require File::Find::Rule } or
+ die "$0 requires File::Find::Rule. Please install and try again.\n";
+
+my $current = Module::Build->new_from_context(quiet => 1)->dist_version;
+
+# Get version from command line or prompt
+my $version = shift;
+unless($version) {
+ my $default = $current;
+
+ # try to construct a reasonable default automatically
+ $default =~ s/(\d+)$// or
+ die "Usage: $0 VERSION\ncurrently: $current\n";
+ my $end = $1;
+ $default .= sprintf('%0'.length($end).'d', $end+1);
+
+ local $| = 1;
+ print "enter new version [$default]: ";
+ chomp(my $ans = <STDIN>);
+ $version = $ans ? $ans : $default;
+ # TODO check for garbage in?
+}
+
+die "must bump forward! ($version < $current)\n"
+ unless($version >= $current);
+
+# NEVER BUMP THESE $VERSION numbers
+my @excluded = qw(
+ lib/Module/Build/Version.pm
+ lib/Module/Build/YAML.pm
+);
+
+# Get list of .pm files
+my @pmfiles = File::Find::Rule->new->or(
+ File::Find::Rule->name('*.pm'),
+ File::Find::Rule->directory->name( qr/\.svn/ )->prune->discard
+)->in( 'lib' );
+my @scripts = File::Find::Rule->new()->or(
+ File::Find::Rule->name('*'),
+ File::Find::Rule->directory->name( qr/\.svn/ )->prune->discard
+)->in( './scripts' );
+
+# first start the new Changes entry
+sub {
+ my $file = 'Changes';
+ open(my $fh, '<', $file) or die "cannot read '$file' $!";
+ my @lines = <$fh>;
+ my @head;
+ while(@lines) {
+ my $line = shift(@lines);
+ if($line =~ m/^$current - \w/) {
+ warn "Updating '$file'\n";
+ open(my $ofh, '>', $file) or die "cannot write '$file' $!";
+ print $ofh @head, "$version - \n", "\n", $line, @lines;
+ close($ofh) or die "cannot write '$file' $!";
+ return;
+ }
+ elsif($line =~ m/^$version(?: *- *)?$/) {
+ # TODO should just be checking for a general number+eol case?
+ die "$file probably needs to be reverted!";
+ }
+ elsif($line =~ m/^$current(?: *- *)?$/) {
+ die "Error parsing $file - found unreleased '$current'";
+ }
+ else {
+ push(@head, $line);
+ }
+ }
+ die "cannot find changes entry for current version ($current)!";
+}->();
+
+for my $file ( @pmfiles, @scripts ) {
+ next if grep { $file eq $_ } @excluded;
+ bump_version( $file, $version );
+}
+
+
+exit;
+
+sub bump_version {
+ my ( $file, $version ) = @_;
+ my $o = tie my @lines, 'Tie::File', $file
+ or die "Couldn't tie '$file' for editing\n";
+ $o->flock;
+
+ # find line to change just like EU::MM::parse_version
+ my $inpod = 0;
+ for ( @lines ) {
+ $inpod = /^=(?!cut)/ ? 1 : /^=cut/ ? 0 : $inpod;
+ next if $inpod || /^\s*#/;
+ next unless /(?<!\\)([\$*])(([\w\:\']*)\bVERSION)\b.*\=/;
+ # TODO check that what we found matches $current?
+ $_ = "\$VERSION = '$version';";
+ warn "Updated $file\n";
+ last;
+ }
+
+ undef $o; untie @lines;
+ return;
+}
+
+# vi:ts=2:sw=2:et:sta
Added: ExtUtils-ParseXS/trunk/devtools/patching_blead.pod
==============================================================================
--- (empty file)
+++ ExtUtils-ParseXS/trunk/devtools/patching_blead.pod Sat Jun 27 19:34:09 2009
@@ -0,0 +1,135 @@
+=head1 Patching ExtUtils::ParseXS in bleadperl
+
+=head2 Prerequisites
+
+These instructions assume you have already cloned the perl git
+repository and have checked out the blead branch. The blead branch should
+be clean of extraneous files
+
+ $ cd ~/git
+ $ git clone git://perl5.git.perl.org/perl.git
+ $ git checkout blead
+ $ git clean -dxf
+
+The rest of the instructions assume your perl git repo is ~/git/perl
+
+=head2 Creating a perl branch with changes
+
+Start in the ExtUtils-ParseXS directory. This would be the distdir left
+behind right after publishing a new release, or could be an unpacked
+tarball from CPAN.
+
+ $ cd ExtUtils-ParseXS-0.33_02
+
+Run the add-packages.pl program from ~/git/perl/Porting to create a
+new git branch and copy in ExtUtils::ParseXS files.
+
+=head2 Verifying and editing the branch
+
+After add-packages.pl finishes, ~/git/perl will be on the new branch. Verify
+that and see what changes have been made:
+
+ $ git branch
+ $ git status
+
+If there are other changes made but not staged, examine them individually and
+determine if they should be staged or if an error occurred.
+
+If any files are being removed, be sure to edit Perl's MANIFEST file and stage
+it to be committed.
+
+ $ vim MANIFEST
+ $ git add MANIFEST
+
+Next, modify the ExtUtils::ParseXS section of Porting/Maintainers.pl to
+indicate the distribution file on which the patch is based. Note the version
+that is being replaced -- you'll need this later when creating the commit
+message. Update any other metadata necessary, then add this file to the index.
+
+ $ vim Porting/Maintainers.pl
+ $ git add Porting/Maintainers.pl
+
+=head2 Commiting the branch
+
+Commit the branch and use the editor to create a commit message. The
+first line should be like this: "Update ExtUtils::ParseXS to 0.33_02". (Use
+the correct version, of course.) The rest of the file should contain
+an excerpt from the Changes file since the last version in blead (i.e.
+the old version number in Porting/Maintainers.pl)
+
+ $ git commit
+
+ ### In editor ###
+ Update ExtUtils::ParseXS to 0.33_02
+
+ 0.33_02 - Mon Jun 15 12:23:55 EDT 2009
+
+ Bug-fixes:
+ - Fixed tests for bleadperl
+
+ 0.33_01 - Sat Jun 13 20:24:42 EDT 2009
+
+ [... rest of Changes ...]
+
+=head2 Testing the branch
+
+Build and test Perl to confirm the changes don't break anything. This
+takes a while, but saves embarassment posting a buggy patch to perl5-porters.
+For example:
+
+ $ ./Configure -des -Dusedevel
+ $ make && make test
+
+=head2 Creating and sending the patch
+
+Git can automatically create the patch email for perl5-porters:
+
+ $ git format-patch origin
+
+This creates a single '0001...' email message file. If you have
+configured your perl git repository for sending email direct to
+perl5-porters, you can send it with this command:
+
+ $ git send-email 0001-Updating-ExtUtils-ParseXS-to-0.33_02.patch
+
+=head1 Special tips
+
+=head2 Configuring git to send email
+
+In your ~/git/perl repository, set the destination email:
+
+ $ git config sendemail.to [email protected]
+
+You may need to set some configuration for your particular email/ISP setup.
+For example, to set global git config to send email via a gmail account:
+
+ $ git config --global sendemail.smtpserver smtp.gmail.com
+ $ git config --global sendemail.smtpssl 1
+ $ git config --global sendemail.smtpuser [email protected]
+
+With this setup, you will be prompted for your gmail password when you
+run 'git send-email'.
+
+=head2 Fixing a branch and regenerating a patch
+
+DANGER -- ADVANCED GIT HERE
+
+If something breaks in the test or after committing you realize you need to
+tweak the branch, you can go ahead and make changes and commit them to the
+branch as normal.
+
+Then, before regenerating the patch, squash them into a single patch using
+interactive rebase:
+
+ $ git rebase -i origin
+
+In the editor, you will have the option to choose how commits are rebased.
+Leave the first entry as 'pick' and make all subsequent entries 'squash'.
+After you leave the editor, a new editor window will open and you will have
+the opportunity to combine all commit messages. Generally, you'll want to keep
+the initial Changes list and just delete the other commit messages.
+
+Afterwards, regenerate and send the patch as described above.
+
+=cut
+
Added: ExtUtils-ParseXS/trunk/devtools/release_instructions.pod
==============================================================================
--- (empty file)
+++ ExtUtils-ParseXS/trunk/devtools/release_instructions.pod Sat Jun 27 19:34:09 2009
@@ -0,0 +1,58 @@
+=head1 Release instructions for ExtUtils::ParseXS
+
+=head2 Prerequisites
+
+Recent ExtUtils::ParseXS releases have been packaged using the CPDK tool
+by Eric Wilhelm. This distribution is not yet on CPAN, but can be
+installed from its repository:
+
+ $ svn co http://svn.scratchcomputing.com/CPDK/trunk/ CPDK
+ $ cd CPDK
+ $ cpan .
+
+=head2 Packaging and shipping
+
+Update ExtUtils::ParseXS and make sure there are no local changes or conflicts.
+
+ $ svn up
+
+ $ svn st
+
+See what the last tag was:
+
+ $ svn_taglist | tail
+ ...
+ 0.31_02
+
+Pull the logs since that tag and update the Changes file if necessary
+
+ $ svn_logsincetag 0.31_02 | less
+ ...
+
+ $ vim Changes
+
+If everything is good, just datestamp the version section at the top of
+Changes (e.g. use "r! date" then "kJ" in vim.)
+
+ $ svn ci -m "Changes - prep for release"
+
+And we should now be ready for automated shipping:
+
+ $ perl Build.PL
+ $ Build distmeta
+ $ publish-module
+
+At the moment, for anyone but Eric Wilhelm, this will fail during
+the 'scp_relay' stage, but the tarball exists and can be uploaded
+to PAUSE using other means.
+
+=head2 After shipping
+
+Now the release is out and tagged. Start a new version number
+
+ $ ./devtools/bump_version.pl
+
+ $ svn ci -m "Changes, lib/***.pm - bump version"
+
+=cut
+
lmpx.com only provides a reader for public news (NNTP) servers. It is not
affiliated with the servers or forums shown here and is not responsible for
the content of articles, which is written by their respective authors.