develooper Front page | perl.perl5.porters | Postings from June 2012

NWCLARK TPF grant report #40

Nicholas Clark
June 14, 2012 03:35
NWCLARK TPF grant report #40
Message ID:
[Hours]		[Activity]
2012/06/04	Monday
 0.00		Pod::Html
 1.50		reading/responding to list mail

2012/06/05	Tuesday
 0.50		Module::Build failures on VMS
 1.00		Porting tests with -Dmksymlinks
 0.25		RT #113094
 0.75		RT #113472
 0.25		Ubuntu link fail with non-English locales
 0.25		perlsecret
 1.00		reading/responding to list mail
 0.25		smoke-me/make_ext

2012/06/06	Wednesday
 1.00		process, scalability, mentoring
 1.00		reading/responding to list mail

Which I calculate is 7.75 hours

This week I was mostly engaged in other activities. [I have the house to
myself. As long as I can destroy all the evidence by next Saturday, there's
no restriction on what I can do... :-)]

So not much to report.

Currently blead will fail two tests when built "outside" the source tree
using a symlink forest generated by -Dmksymlinks. I now have both passing
again, but so far only in a branch waiting in the smoke-me queue.
In both cases, they related to how various porting tests that require a git
repository work under -Dmksymlinks. To enable the tests to run instead of
simply skipping, the setup routine would detect the symlink situation, and
that they pointed to a real checkout with a .git directory, and change
directory to it, so that git commands would work.

However, running the tests *outside* of the build tree turns out also to
cause problems. t/porting/cmp_version.t was failing because it could see that
ext/DynaLoader/dl_vms.xs has been modified since the last tag, but was
unable to work out which was the related .pm file, to validate that $VERSION
had been increased. It turned out that this was working just find *inside* a
build tree, because ext/DynaLoader/ exists there, having been
created by ExtUtils::MakeMaker from ext/DynaLoader/DynaLoader_pm.PL
However, in a clean tree, it doesn't exist, hence the confusion. So I
improved Porting/ (the underlying driver script) to teach it
about _pm.PL files.

t/porting/utils.t had recently started failing, because Ricardo changed it
to avoid false positive failures, by only running if it found itself in a
git checkout. However, it assumes that it can find many files generated by
the build process (to syntax check them), whilst the "are we in a git
checkout?" code assumes that it should change directory to the checkout, if
one is building symlinked from it. Result - various files that "should" be
there are now missing. The solution was to change the "are we in a git
checkout?" code to set GIT_DIR instead of changing directory, and return
the path to the git checkout. That way, tests that really need to be in the
git checkout (ie t/porting/cmp_version.t) can change directory to it, but by
default tests continue to run from the build tree. This has two benefits

a) fewer surprises
b) for a couple of tests, we can drop the code that converts @INC to absolute
   paths, because they no longer change directory

(The tests by default run, and have always run, with the relative path of
the build lib/ in @INC. Converting it to an absolute path relies on fairly
complex platform specific Perl code, and how are you going to safely test
that works before you're even sure that simple Perl code works? When testing
an interpreter from scratch, you need to bootstrap your tests too, because you
initially can't assume anything works.)

Nicholas Clark Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at | Group listing | About