[devel] [SCM] packages/perl: heads/master
Alexey Tourbin
at на altlinux.ru
Вт Ноя 1 23:35:49 UTC 2011
On Wed, Nov 02, 2011 at 03:24:12AM +0400, Dmitry V. Levin wrote:
> Update of /people/ldv/packages/perl.git
>
> Changes statistics since `5.14.2-alt2' follows:
> perl.h | 6 ++++++
> 1 files changed, 6 insertions(+), 0 deletions(-)
>
> Changelog since `5.14.2-alt2' follows:
> commit 3a07420e2c45aebc4da3bf879432d065b4c03b44
> Author: Dmitry V. Levin <ldv на altlinux.org>
> Date: Sat Oct 29 21:23:29 2011 +0000
>
> perl.h: add a guard against compiling perl.h with incompatible options
>
> There is an exported structure "struct interpreter" that contains
> numerous fields, and two of them, "Istatbuf" and "Istatcache" of type
> "struct stat", are located near the beginning of this structure.
>
> On x86 glibc, sizeof(struct stat) is controlled by _FILE_OFFSET_BITS
> macro. When perl is compiled with -D_FILE_OFFSET_BITS=64 on that
> platform, all perl.h clients also must be compiled with
> -D_FILE_OFFSET_BITS=64 on that platform to avoid fatal consequences.
>
> Assuming that perl is always built on x86 glibc with 64bit filesystem
> interface selected by default, this change adds a mandatory requirement
> that all perl.h clients are also compiled this way.
>
> Reported-by: Alexey Tourbin <at на altlinux.ru>
>
> Full diff since `5.14.2-alt2' follows:
> diff --git a/perl.h b/perl.h
> index facdacf..4dbabfe 100644
> --- a/perl.h
> +++ b/perl.h
> @@ -5003,6 +5003,12 @@ struct interpreter {
> # include "intrpvar.h"
> };
>
> +#if defined(__i386__) && defined(__GLIBC__) && defined(__WORDSIZE) && !defined(__USE_FILE_OFFSET64)
> +# if __WORDSIZE == 32
> +# error "<perl.h> cannot be used without -D_FILE_OFFSET_BITS=64"
> +# endif
> +#endif
Так cpp.req не отработает (хотя он ничего интересного не найдет).
По-моему я писал в анонсе, что красивого решения нет. Но поскольку perl.h
лежит в приватном каталоге, то наиболее действенным решением было бы
принудительно втыкать нужные флаги примерно через то же место, через
которое узнают о расположении perl.h. То есть выдавать нужные флаги
в нагрузку к -I/usr/lib64/perl5/CORE.
Но почему-то так никто не делает (в дебиане фиксят на попакетной основе).
Ну и потом всё-таки все пакеты пересобрались; в которых есть make test
оно само высплывает, а в которых нет я старался просматривать.
В общем если хочешь то делай!
> +
> #else
> struct interpreter {
> char broiled;
Подробная информация о списке рассылки Devel