[Moscow.pm] компиляция XS на BSD

Vladimir Timofeev vovkasm на gmail.com
Вс Фев 13 00:59:48 PST 2011


2011/2/13 Ivan Petrov <i.petro.77.00 на gmail.com>:
> есть XS код
>
> switch(SvTYPE(SvRV(obj))) {
>
>       case SVt_PV:
>          ....
>
>       case SVt_NV:
>          ....
>
>       case SVt_IV:
>          ....
>
>       case SVt_RV:
>          ....
> }
>
> на BSD cpan testers шлют репорты с ошибкой компиляции про то что  "duplicate
> case value" третьем case.
> а на четвертом case говорит "previously used here".
И правильно делают, это не в BSD проблема, это зависит от версии перла
(а ошибки, вероятно от версии gcc, подробно не разбирался).
Дело в том, что начиная с 5.12 (может еще в 5.11.*) RV и IV флаги были
объединены в один.
* http://perl5.git.perl.org/perl.git/blob/maint-5.10:/sv.h
* http://perl5.git.perl.org/perl.git/blob/maint-5.12:/sv.h
Соответственно (даже если ошибки не возникает при компиляции), ваш
модуль очень вероятно работает неправильно (это конечно сильно
зависит, от того что именно делается под case...).

>
> я чет подустал бороться с этой BSD все у нее не так как у людей. можно ли
> модуль как-то пометить что он "не для BSD"?
В Makefile.PL всегда можно написать:
die "Only for Linux, because i am lazy to support other OSes" unless
($^O eq 'linux');

>
>
> --
> Moscow.pm mailing list
> moscow-pm на pm.org | http://moscow.pm.org
>
>



-- 
Vladimir Timofeev <vovkasm на gmail.com>


Подробная информация о списке рассылки Moscow-pm