[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