The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

configsmoke.pl - Create a configuration for smokeperl.pl

SYNOPSIS

   $ perl configsmoke.pl [options]

OPTIONS

Current options:

  -c configname When ommited 'perlcurrent_config' is used
  -j jclname    When ommited 'perlcurrent' is used
  -l logfile    When ommited 'perlcurrent.log' is used
  -p prefix     Set -c and -j and -l at once

DESCRIPTION

Test::Smoke is the symbolic name for a set of scripts and modules that try to run the perl core tests on as many configurations as possible and combine the results into an easy to read report.

The main script is smokeperl.pl, and this uses a configuration file that is created by this program (configsmoke.pl). There is no default configuration as some actions can be rather destructive, so you will need to create your own configuration by running this program!

By default the configuration file created is called smokecurrent_config, this can be changed by specifying the -c <prefix> or -p <prefix> switch at the command line (-c will override -p when both are specified).

    $ perl configsmoke.pl -c mysmoke

will create mysmoke_config as the configuration file.

After you are done configuring, a small job command list is written. For MSWin32 this is called smokecurrent.cmd otherwise this is called smokecurrent.sh. Again the default prefix can be overridden by specifying the -j <prefix> or -p <prefix> switch.

All output (stdout, stderr) from smokeperl.pl and its sub-processes is redirected to a logfile called smokecurrent.log by the small jcl. (Use -l <prefix> or -p <prefix> to override).

There are two additional configuration default files smoke56x_dfconfig and smoke58x_dfconfig to help you configure Test::Smoke for these two maintenance branches of the source-tree.

To create a configuration for the perl 5.6.x brach:

    $ perl configsmoke.pl -p smoke56x

This will read additional defaults from smoke56x_dfconfig and create smoke56x_config and smoke56x.sh/smoke56x.cmd and logfile will be smoke56x.log.

The same goes for the perl 5.8.x branch:

    $perl configsmoke.pl -p smoke58x

CONFIGURATION

Here is a description of the configuration sections.

is56x

is56x is passed as a switch to mktest.pl to indicate that only one run of make test is needed as there are no PerlIO layers in pre 5.7.? perl.

ddir

ddir is the destination directory. This is used to put the source-tree in and build perl. If a source-tree appears to be there you will need to confirm your choice.

cfg

cfg is the path to the file that holds the build-configurations. There are several build-cfg files provided with the distribution:

perlcurrent.cfg for 5.8.x+ on unixy systems
w32current.cfg for 5.8.x+ on MSWin32
perl56x.cfg for 5.6.x (MAINT) on unixy systems

Note: 5.6.x on MSWin32 is not yet provided, but commenting out the -Duselargefiles section from w32current.cfg should be enough.

Here is how Nick described it to me:

My plan is to use a few more directories, and avoid make distclean:

  1. rsync as before, but to a master directory. this directory is only used for rsyncing from the server

  2. copy that directory (as a hardlink forest) - gnu cp can do it as cp -lr, and I have a perl script to replicate that (which works nicely on FreeBSD) as a clean master source directory for this smoke session

  3. run the regen headers script (which 5.9.0 now has as a distinct script) rather than just a Makefile target

I now have a clean, up-to-date source tree with accurate headers. For each smoking configuration

4

copy that directory (hard links again)

5

in the copy directory. Configure, build and test

6

delete the copy directory

deleting a directory seems to be faster than make distclean.

sync_type (fsync)

sync_type (or fsync if you want_forest) can be one of four:

rsync

This will use the rsync program to sync up with the repository. configsmoke.pl checks to see if it can find rsync in your path.

The default switches passed to rsync are -az --delete

snapshot

This will use Net::FTP to try to find the latest snapshot on <ftp://ftp.funet.fi/languages/perl/snap/>.

Snapshots are not in sync with the repository, so if you have a working patch program, you can choose to "upgrade" your snapshot by fetching all the seperate patches from the repository and applying them.

copy

This will use File::Copy and File::Find to just copy from a source directory.

This will use File::Find and the link function to copy from a source directory. (This is also used if you choose "forest".)

See Test::Smoke::Syncer

pfile

pfile is the path to a textfile that holds the names of patches to be applied before smoking. This can be used to run a smoke test on proposed patches that have not been applied (yet) or to see the effect of revesing an already applied patch. The file format is simple:

  * one patchfile per line
  * optionally followed by ';' and options to pass to patch

You will need a working patch program to use this feature.

There is an issue when using the "forest" sync, but I will look into that.

force_c_locale

force_c_locale is passed as a switch to mktest.pl to indicate that $ENV{LC_ALL} should be forced to "C" during make test.

locale

locale and its value are passed to mktest.pl and its value is passed to mkovz.pl. mktest.pl will do an extra run of make test with $ENV{LC_ALL} set to that locale (and $ENV{PERL_UNICODE} = 1;, $ENV{PERLIO} = "perlio";). This feature should only be used with UTF8 locales, that is why this is checked.

If you know of a way to get the utf8 locales on your system, which is not coverd here, please let me know!

mail_type

See Test::Smoke::Mailer and mailrpt.pl

w32args

For MSWin32 we need some extra information that is passed to mktest.pl in order to compensate for the lack of Configure.

See "Configure_win32( )" in Test::Smoke::Util and W32Configure.pl

umask

umask will be set in the shell-script that starts the smoke.

renice

renice will add a line in the shell-script that starts the smoke.

v

The verbosity level: 0, 1 or 2

smartsmoke

smartsmoke indicates that the smoke need not happen if the patchlevel is the same after syncing the source-tree.

schedule stuff
cron/crontab

We try to detect 'crontab' or 'cron', read the contents of crontab -l, detect ourself and comment us out. Then we add an new entry.

MSWin32 at.exe

We only add a new entry, you will need to remove existing entries, as at.exe has not got a way comment-out entries.

TODO

Schedule, logfile optional

COPYRIGHT

(c) 2002-2003, All rights reserved.

  * Abe Timmerman <abeltje@cpan.org>

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.

See:

  • http://www.perl.com/perl/misc/Artistic.html

  • http://www.gnu.org/copyleft/gpl.html

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

2 POD Errors

The following errors were encountered while parsing the POD:

Around line 472:

Expected text after =item, not a number

Around line 476:

Expected text after =item, not a number