[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