Am 02.06.2014 um 14:54 schrieb David Golden <x...@xdg.me>:

> On Mon, Jun 2, 2014 at 7:53 AM, Jens Rehsack <rehs...@gmail.com> wrote:
>> 
>> Am 02.06.2014 um 13:34 schrieb David Golden <x...@xdg.me>:
>> 
>>> On Mon, Jun 2, 2014 at 7:28 AM, Jens Rehsack <rehs...@gmail.com> wrote:
>>>> Others (eg. packagers) have always a compiler and want benefit from XS when
>>>> available and what is more important: if the "DEVELOPER MODE FLAGS IS ON",
>>>> they want to have a -Werror behavior even for "I enabled foo and it doesn't
>>>> appear".
>>> 
>>> I don't understand what you mean by this.
>> 
>> http://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html
> 
> Dude!  I know what the compiler flag does!

/me hides

> I don't understand if you're using "-Werror" as an analogy for how you
> want cpan clients to behave or if you mean you want "-Werror" to halt
> CPAN installation on error even when a PP fallback is available, or
> something else entirely.

I mean: I want a behavior where a user (packager - the one who probably
indirectly invoke "perl Makefile.PL") has a tunable which allows clearly
to express whether
1) PUREPERL is wanted (to create a noarch package)
2) XS is wanted (to create an arch specific package, have the "fastest"
   possible installation - whatever)
3) decide on availability

(1) and (2) should really fail when they cannot support that switch
to avoid mistakes. (I'm a fan of the "die early" approach in case of
errors.)

Generally I fear the "*_ONLY" misleads - I would prefer "--enable-xs"
or "--disable-xs" - but that's a complete different story (and it's
finally not better when the switch itself is unknown).

> In my example, if not PUREPERL_ONLY, then if a compiler is present,
> compilation works or it fails (possibly due to -Werror), and the
> install is halted.

For sure - but I want that the "perl Makefile.PL" dies with error when
PUREPERL_ONLY=0 (or XS_ONLY=1) is set and it's not possible to create
an XS module.

>> But ... that brings me to another point of view. Take Unix::Statgrab,
>> File::LibMagic or BSD::Resource as example - they won't work without XS
>> either. Shall they generally bail-out when PUREPERL_ONLY=1 is set?
> 
> Yes and no.  Because they don't offer a PP option, PUREPERL_ONLY is
> irrelevant to them. They will fail in their "make" stage as usual.

Well - currently there're PP modules which add a dependency for a
corresponding XS module when they find a compiler. Seeing the dependency
picture, it could make sense to fail for File::LibMagic when PP_ONLY
is enabled (and the requiring module falls back to File::MMagic).

> A more user-friendly author could probe for a compiler and bail out in
> Makefile.PL if one doesn't exist, possibly with one of the CPAN
> Testers magic strings like "OS unsupported: need a compiler".

That is what Config::AutoConf->with_xs() should provide. Currently
I have a private one in LMU (not yet pushed), but with an agreement
how to deal with PP_ONLY and how to provide a (however) XS_ONLY I
intend to provide such a check as a public API and every XS module
just should do "C::AC->with_xs()" for compiler and little xs-compile
checks.

Web-Search for "CPAN Testers magic strings" doesn't provide suitable
results - is there a list of those magic results?

> It's an incorrect and possibly misleading error message, but it will
> result in a CPAN Testers report of "NA" instead of "FAIL".  The other
> option is "exit 0" which will just not send a report at all.  E.g.
> Devel::CheckLib

If I would know what is expected, I will make Config::AutoConf behave.
Devel::CheckLib doesn't work at all - but I don't want to send pull
requests using C::AC until I'm sure that C::AC doesn't introduce
more pitfalls than it solves ;)

Cheers
-- 
Jens Rehsack
rehs...@gmail.com





Reply via email to