Re: [HACKERS] pl/perl extension fails on Windows
| От | Tom Lane |
|---|---|
| Тема | Re: [HACKERS] pl/perl extension fails on Windows |
| Дата | |
| Msg-id | 14838.1502379286@sss.pgh.pa.us обсуждение исходный текст |
| Ответ на | Re: [HACKERS] pl/perl extension fails on Windows (Ashutosh Sharma <ashu.coek88@gmail.com>) |
| Ответы |
Re: [HACKERS] pl/perl extension fails on Windows
|
| Список | pgsql-hackers |
Ashutosh Sharma <ashu.coek88@gmail.com> writes:
> On Thu, Aug 10, 2017 at 8:06 PM, Tom Lane <tgl@sss.pgh.pa.us> wrote:
>> Yeah ... however, if that's there, then there's something wrong with
>> Ashutosh's explanation, because that means we *are* building with
>> _USE_32BIT_TIME_T in 32-bit builds. It's just getting there in a
>> roundabout way. (Or, alternatively, this code is somehow not doing
>> anything at all.)
> I am extremely sorry if i have communicated the things wrongly, what i
> meant was we are always considering _USE_32BIT_TIME_T flag to build
> plperl module on Windows 32-bit platform but unfortunately that is not
> being considered/defined in perl code in case we use VC++ compiler
> version greater than 8.0. and that's the reason for the binary
> mismatch error on 32 bit platform.
Got it. So in short, it seems like the attached patch ought to fix it
for MSVC builds. (We'd also need to teach PGAC_CHECK_PERL_EMBED_CCFLAGS
to let _USE_32BIT_TIME_T through on Windows, but let's confirm the theory
first.)
regards, tom lane
diff --git a/src/tools/msvc/MSBuildProject.pm b/src/tools/msvc/MSBuildProject.pm
index d7638b4..27329f9 100644
*** a/src/tools/msvc/MSBuildProject.pm
--- b/src/tools/msvc/MSBuildProject.pm
*************** EOF
*** 63,83 ****
</PropertyGroup>
EOF
- # We have to use this flag on 32 bit targets because the 32bit perls
- # are built with it and sometimes crash if we don't.
- my $use_32bit_time_t =
- $self->{platform} eq 'Win32' ? '_USE_32BIT_TIME_T;' : '';
-
$self->WriteItemDefinitionGroup(
$f, 'Debug',
! { defs => "_DEBUG;DEBUG=1;$use_32bit_time_t",
opt => 'Disabled',
strpool => 'false',
runtime => 'MultiThreadedDebugDLL' });
$self->WriteItemDefinitionGroup(
$f,
'Release',
! { defs => "$use_32bit_time_t",
opt => 'Full',
strpool => 'true',
runtime => 'MultiThreadedDLL' });
--- 63,78 ----
</PropertyGroup>
EOF
$self->WriteItemDefinitionGroup(
$f, 'Debug',
! { defs => "_DEBUG;DEBUG=1",
opt => 'Disabled',
strpool => 'false',
runtime => 'MultiThreadedDebugDLL' });
$self->WriteItemDefinitionGroup(
$f,
'Release',
! { defs => "",
opt => 'Full',
strpool => 'true',
runtime => 'MultiThreadedDLL' });
diff --git a/src/tools/msvc/Mkvcbuild.pm b/src/tools/msvc/Mkvcbuild.pm
index a7e3a01..940bef6 100644
*** a/src/tools/msvc/Mkvcbuild.pm
--- b/src/tools/msvc/Mkvcbuild.pm
*************** sub mkvcbuild
*** 522,528 ****
my @perl_embed_ccflags;
foreach my $f (split(" ",$Config{ccflags}))
{
! if ($f =~ /^-D[^_]/)
{
$f =~ s/\-D//;
push(@perl_embed_ccflags, $f);
--- 522,529 ----
my @perl_embed_ccflags;
foreach my $f (split(" ",$Config{ccflags}))
{
! if ($f =~ /^-D[^_]/ ||
! $f =~ /^-D_USE_32BIT_TIME_T/)
{
$f =~ s/\-D//;
push(@perl_embed_ccflags, $f);
diff --git a/src/tools/msvc/VCBuildProject.pm b/src/tools/msvc/VCBuildProject.pm
index a8d75d8..669ba17 100644
*** a/src/tools/msvc/VCBuildProject.pm
--- b/src/tools/msvc/VCBuildProject.pm
*************** sub WriteHeader
*** 33,47 ****
<Configurations>
EOF
- # We have to use this flag on 32 bit targets because the 32bit perls
- # are built with it and sometimes crash if we don't.
- my $use_32bit_time_t =
- $self->{platform} eq 'Win32' ? '_USE_32BIT_TIME_T;' : '';
-
-
$self->WriteConfiguration(
$f, 'Debug',
! { defs => "_DEBUG;DEBUG=1;$use_32bit_time_t",
wholeopt => 0,
opt => 0,
strpool => 'false',
--- 33,41 ----
<Configurations>
EOF
$self->WriteConfiguration(
$f, 'Debug',
! { defs => "_DEBUG;DEBUG=1",
wholeopt => 0,
opt => 0,
strpool => 'false',
*************** EOF
*** 49,55 ****
$self->WriteConfiguration(
$f,
'Release',
! { defs => "$use_32bit_time_t",
wholeopt => 0,
opt => 3,
strpool => 'true',
--- 43,49 ----
$self->WriteConfiguration(
$f,
'Release',
! { defs => "",
wholeopt => 0,
opt => 3,
strpool => 'true',
--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers
В списке pgsql-hackers по дате отправления: