CPAN-Reporter-Smoker
view release on metacpan or search on metacpan
match:
distribution: "/Win32"
disabled: 1
---
comment: "Skip distributions by Andy Lester"
match:
distribution: "^PETDANCE"
disabled: 1
Please note that disabling distributions like this will also disable
them for normal, non-smoke usage of CPAN.pm.
One distribution that I would recommend either installing up front or
else disabling with distroprefs is mod_perl, as it is a common
requirement for many Apache:: modules but does not (easily) build and
test under automation.
---
comment: "Don't build mod_perl if required by some other module"
match:
distribution: "/mod_perl-\d"
disabled: 1
Distroprefs are more powerful than this -- they can be used to automate
responses to prompts in distributions, set environment variables,
specify additional dependencies and so on. Read the docs for CPAN.pm for
more and look in the "distroprefs" directory in the CPAN distribution
tarball for examples.
Using a local CPAN::Mini mirror
Because distributions must be retrieved from a CPAN mirror, the smoker
may cause heavy network load and will repetitively download common build
prerequisites.
An alternative is to use CPAN::Mini to create a local CPAN mirror and to
point CPAN's "urllist" to the local mirror.
$ cpan
cpan> o conf urllist unshift file:///path/to/minicpan
cpan> o conf commit
However, CPAN::Reporter::Smoker needs the "find-ls.gz" file, which
CPAN::Mini does not mirror by default. Add it to a .minicpanrc file in
your home directory to include it in your local CPAN mirror.
also_mirror: indices/find-ls.gz
Note that CPAN::Mini does not mirror developer versions. Therefore, a
live, network CPAN Mirror will be needed in the urllist to retrieve
these.
Note that CPAN requires the LWP module to be installed to use a local
CPAN mirror.
Alternatively, you might experiment with the alpha-quality release of
CPAN::Mini::Devel, which subclasses CPAN::Mini to retrieve developer
distributions (and find-ls.gz) using the same logic as
CPAN::Reporter::Smoker.
Timing out hanging tests
CPAN::Reporter (since 1.08) supports a 'command_timeout' configuration
option. Set this option in the CPAN::Reporter configuration file to time
out tests that hang up or get stuck at a prompt. Set it to a high-value
to avoid timing out a lengthy tests that are still running -- 1000 or
more seconds is probably enough.
Warning -- on Win32, terminating processes via the command_timeout is
equivalent to SIGKILL and could cause system instability or later
deadlocks
This option is still considered experimental.
Avoiding repetitive prerequisite testing
Because CPAN::Reporter::Smoker satisfies all requirements from scratch,
common dependencies (e.g. Class::Accessor) will be unpacked, built and
tested repeatedly.
As of version 1.92_56, CPAN supports the "trust_test_report_history"
config option. When set, CPAN will check the last test report for a
distribution. If one is found, the results of that test are used instead
of running tests again.
$ cpan
cpan> o conf init trust_test_report_history
cpan> o conf commit
Avoiding repetitive prerequisite builds (EXPERIMENTAL)
CPAN has a "build_dir_reuse" config option. When set (and if a YAML
module is installed and configured), CPAN will attempt to make build
directories persistent. This has the potential to save substantial time
and space during smoke testing. CPAN::Reporter::Smoker will recognize if
this option is set and make adjustments to the test process to keep
PERL5LIB from growing uncontrollably as the number of persistent
directories increases.
NOTE: Support for "build_dir_reuse" is highly experimental. Wait for at
least CPAN version 1.92_62 before trying this option.
$ cpan
cpan> o conf init build_dir_reuse
cpan> o conf commit
Stopping early if a prerequisite fails
Normally, CPAN.pm continues testing a distribution even if a
prerequisite fails to build or fails testing. Some distributions may
pass their tests even without a listed prerequisite, but most just fail
(and CPAN::Reporter discards failures if prerequisites are not met).
As of version 1.92_57, CPAN supports the "halt_on_failure" config
option. When set, a prerequisite failure stops further processing.
$ cpan
cpan> o conf init halt_on_failure
cpan> o conf commit
However, a disadvantage of halting early is that no DISCARD grade is
recorded in the history. The next time CPAN::Reporter::Smoker runs, the
distribution will be tested again from scratch. It may be better to let
all prerequisites finish so the distribution can fail its test and be
flagged with DISCARD so it will be skipped in the future.
CPAN cache bloat
CPAN will use a lot of scratch space to download, build and test
modules. Use CPAN's built-in cache management configuration to let it
purge the cache periodically if you don't want to do this manually. When
configured, the cache will be purged on start and after a certain number
of distributions have been tested as determined by the
( run in 1.992 second using v1.01-cache-2.11-cpan-9789f410c06 )