Re: Fw: Case Insensitive Test
От | Tom Lane |
---|---|
Тема | Re: Fw: Case Insensitive Test |
Дата | |
Msg-id | 24982.1064599081@sss.pgh.pa.us обсуждение исходный текст |
Ответ на | Re: Fw: Case Insensitive Test (Bruce Momjian <pgman@candle.pha.pa.us>) |
Ответы |
Re: Fw: Case Insensitive Test
|
Список | pgsql-admin |
Bruce Momjian <pgman@candle.pha.pa.us> writes: > That _GNU_SOURCE has always bothered me. What does it control, exactly? > It seems to control a lot. Well, without it I get (on RHL 8.0) gcc -O2 -g -fpic -I. -I/usr/lib/perl5/5.8.0/i386-linux-thread-multi/CORE -I../../../src/include -c -o plperl.o plperl.c In file included from /usr/lib/perl5/5.8.0/i386-linux-thread-multi/CORE/op.h:480, from /usr/lib/perl5/5.8.0/i386-linux-thread-multi/CORE/perl.h:2209, from plperl.c:60: /usr/lib/perl5/5.8.0/i386-linux-thread-multi/CORE/reentr.h:602: field `_crypt_struct' has incomplete type /usr/lib/perl5/5.8.0/i386-linux-thread-multi/CORE/reentr.h:747: confused by earlier errors, bailing out make: *** [plperl.o] Error 1 The relevant chunk of that Perl header is #ifdef HAS_CRYPT_R #if CRYPT_R_PROTO == REENTRANT_PROTO_B_CCD CRYPTD* _crypt_data; #else struct crypt_data _crypt_struct; #endif #endif /* HAS_CRYPT_R */ and the problem is that HAS_CRYPT_R has gotten defined but "struct crypt_data" has not. It's been awhile since I looked at this, but I think that Perl configures HAS_CRYPT_R on the basis of a link-only test for crypt_r(), which will succeed regardless of -D symbols. And (in this Linux version, anyway) /usr/include/crypt.h only defines struct crypt_data if __USE_GNU is defined (which comes from _GNU_SOURCE). So we're more or less stuck --- perl.h simply does not compile without _GNU_SOURCE on this platform. This is arguably a configuration bug in Perl; we have hit comparable difficulties in PG, and had to solve them by the expedient of testing for both compile-time and link-time presence of library features. They're not being careful enough. Experimenting, I notice that ecpg also currently fails to compile without _GNU_SOURCE on that box. It looks to me like the system headers have a rather arbitrary set of ideas on what to remove when _GNU_SOURCE isn't defined... regards, tom lane
В списке pgsql-admin по дате отправления: