From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Date: Wed, 2 Nov 2011 03:35:49 +0400 From: Alexey Tourbin To: ALT Devel discussion list Message-ID: <20111101233549.GA32110@altlinux.org> References: <20111101232412.D4AFF4446003@ssh.git.altlinux.org> Mime-Version: 1.0 Content-Type: text/plain; charset=koi8-r Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <20111101232412.D4AFF4446003@ssh.git.altlinux.org> Subject: Re: [devel] [SCM] packages/perl: heads/master X-BeenThere: devel@lists.altlinux.org X-Mailman-Version: 2.1.12 Precedence: list Reply-To: ALT Linux Team development discussions List-Id: ALT Linux Team development discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 01 Nov 2011 23:35:50 -0000 Archived-At: List-Archive: List-Post: 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 > 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 > > 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 " 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;