David Golden wrote:
Case 1. When you manage to make module working (and therefore pass tests),
it's not installing without force.
Example: Some module, let's name it Format::LibFormat is a prerequisite for
a few hundreds modules. You run smoker, it tries to install this module, but
find out that it requires libformat library. You run "apt-get install
libformat2", and then "cpan Format::LibFormat". And it doesn't work.
I think I made CPAN let "force" override test report history.
Yes, "force" overrides history, that's true, but it should be manually invoked. It's not critical, but somewhat
inconvenient.
Case 2. You don't have any benefit for failing builds.
Example: Some module, like Super::Something fails on Perl 5.15.1, and is a
prerequisite for another few hundreds modules. It's not building because of
problem with XS or something, doesn't matter. Result is UNKNOWN like in
previous case. Next time smoker tries to test/install it, it would compile
it again. No benefit.
So it works only with FAIL, not UNKNOWN. And if you find a common
prerequisite that is failing, it's easier to just disable it in distroprefs.
I actually find it most useful for PASS for common dependencies.
Let's say lots of thing require a newer version of Test::More. Once
that tests OK once, there's no need to test it again and again when
satisfying prerequisites.
On most operating systems, the speed isn't a big deal, but when I was
working on Win32 smoking, everything there is so damn slow due to all
the process forking that I was trying to find every possible speed
optimization.
Hmm, yes, it should speed up things.
Personally, I prefer to install all modules (except development versions) during smoking. I lose a few gigabytes of disk
space for every Perl instance, but it really speeds up testing modules with a lot of prerequisites. And disk space is
not a big problem during these days.
There's one week point in this approach: it lowers possibility to find missing
prerequisite for module.
--
Serguei Trouchelle