Skip to content

Commit bad51a4

Browse files
committed
Blindly try to fix MSVC build's use of genbki.pl and Gen_fmgrtab.pl.
We need to use a stamp file to record the runs of these scripts, as is done on the Unix side. I think I got it right, but can't test. While at it, extend this handmade dependency logic to also check the generating script files, as the makefiles do. Discussion: https://postgr.es/m/16925.1525376229@sss.pgh.pa.us
1 parent 1f1cd9b commit bad51a4

File tree

2 files changed

+45
-25
lines changed

2 files changed

+45
-25
lines changed

src/tools/msvc/Solution.pm

Lines changed: 42 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -266,13 +266,18 @@ sub GenerateFiles
266266
chdir('src/backend/utils');
267267
my $pg_language_dat = '../../../src/include/catalog/pg_language.dat';
268268
my $pg_proc_dat = '../../../src/include/catalog/pg_proc.dat';
269-
if ( IsNewer('fmgrtab.c', $pg_language_dat)
270-
|| IsNewer('fmgrtab.c', $pg_proc_dat)
271-
|| IsNewer('fmgrtab.c', '../../../src/include/access/transam.h'))
269+
if ( IsNewer('fmgr-stamp', 'Gen_fmgrtab.pl')
270+
|| IsNewer('fmgr-stamp', '../catalog/Catalog.pm')
271+
|| IsNewer('fmgr-stamp', $pg_language_dat)
272+
|| IsNewer('fmgr-stamp', $pg_proc_dat)
273+
|| IsNewer('fmgr-stamp', '../../../src/include/access/transam.h'))
272274
{
273275
system(
274276
"perl -I ../catalog Gen_fmgrtab.pl -I../../../src/include/ $pg_language_dat $pg_proc_dat"
275277
);
278+
open(my $f, '>', 'fmgr-stamp')
279+
|| confess "Could not touch fmgr-stamp";
280+
close($f);
276281
}
277282
chdir('../../..');
278283

@@ -468,36 +473,49 @@ EOF
468473
|| croak "Could not find POSTGRES_BKI_DATA in Makefile\n";
469474
my @bki_data = split /\s+/, $1;
470475

476+
my $need_genbki = 0;
471477
foreach my $bki (@bki_srcs, @bki_data)
472478
{
473479
next if $bki eq "";
474480
if (IsNewer(
475-
'src/backend/catalog/postgres.bki',
481+
'src/backend/catalog/bki-stamp',
476482
"src/include/catalog/$bki"))
477483
{
478-
chdir('src/backend/catalog');
479-
my $bki_srcs = join(' ../../../src/include/catalog/', @bki_srcs);
480-
system(
481-
"perl genbki.pl --set-version=$self->{majorver} $bki_srcs");
482-
chdir('../../..');
483-
484-
# Copy generated headers to include directory.
485-
opendir(my $dh, 'src/backend/catalog/')
486-
|| die "Can't opendir src/backend/catalog/ $!";
487-
my @def_headers = grep { /pg_\w+_d\.h$/ } readdir($dh);
488-
closedir $dh;
489-
foreach my $def_header (@def_headers)
490-
{
491-
copyFile(
492-
"src/backend/catalog/$def_header",
493-
"src/include/catalog/$def_header");
494-
}
495-
copyFile(
496-
'src/backend/catalog/schemapg.h',
497-
'src/include/catalog/schemapg.h');
484+
$need_genbki = 1;
498485
last;
499486
}
500487
}
488+
$need_genbki = 1
489+
if IsNewer('src/backend/catalog/bki-stamp',
490+
'src/backend/catalog/genbki.pl');
491+
$need_genbki = 1
492+
if IsNewer('src/backend/catalog/bki-stamp',
493+
'src/backend/catalog/Catalog.pm');
494+
if ($need_genbki)
495+
{
496+
chdir('src/backend/catalog');
497+
my $bki_srcs = join(' ../../../src/include/catalog/', @bki_srcs);
498+
system("perl genbki.pl --set-version=$self->{majorver} $bki_srcs");
499+
open(my $f, '>', 'bki-stamp')
500+
|| confess "Could not touch bki-stamp";
501+
close($f);
502+
chdir('../../..');
503+
504+
# Copy generated headers to include directory.
505+
opendir(my $dh, 'src/backend/catalog/')
506+
|| die "Can't opendir src/backend/catalog/ $!";
507+
my @def_headers = grep { /pg_\w+_d\.h$/ } readdir($dh);
508+
closedir $dh;
509+
foreach my $def_header (@def_headers)
510+
{
511+
copyFile(
512+
"src/backend/catalog/$def_header",
513+
"src/include/catalog/$def_header");
514+
}
515+
copyFile(
516+
'src/backend/catalog/schemapg.h',
517+
'src/include/catalog/schemapg.h');
518+
}
501519

502520
open(my $o, '>', "doc/src/sgml/version.sgml")
503521
|| croak "Could not write to version.sgml\n";

src/tools/msvc/clean.bat

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,10 +54,11 @@ if exist doc\src\sgml\version.sgml del /q doc\src\sgml\version.sgml
5454
if %DIST%==1 if exist src\backend\utils\fmgroids.h del /q src\backend\utils\fmgroids.h
5555
if %DIST%==1 if exist src\backend\utils\fmgrprotos.h del /q src\backend\utils\fmgrprotos.h
5656
if %DIST%==1 if exist src\backend\utils\fmgrtab.c del /q src\backend\utils\fmgrtab.c
57+
if %DIST%==1 if exist src\backend\utils\fmgr-stamp del /q src\backend\utils\fmgr-stamp
58+
if %DIST%==1 if exist src\backend\utils\errcodes.h del /q src\backend\utils\errcodes.h
5759
if %DIST%==1 if exist src\backend\storage\lmgr\lwlocknames.c del /q src\backend\storage\lmgr\lwlocknames.c
5860
if %DIST%==1 if exist src\backend\storage\lmgr\lwlocknames.h del /q src\backend\storage\lmgr\lwlocknames.h
5961
if %DIST%==1 if exist src\pl\plpython\spiexceptions.h del /q src\pl\plpython\spiexceptions.h
60-
if %DIST%==1 if exist src\backend\utils\errcodes.h del /q src\backend\utils\errcodes.h
6162
if %DIST%==1 if exist src\pl\plpgsql\src\plerrcodes.h del /q src\pl\plpgsql\src\plerrcodes.h
6263
if %DIST%==1 if exist src\pl\tcl\pltclerrcodes.h del /q src\pl\tcl\pltclerrcodes.h
6364
if %DIST%==1 if exist src\backend\utils\sort\qsort_tuple.c del /q src\backend\utils\sort\qsort_tuple.c
@@ -69,6 +70,7 @@ if %DIST%==1 if exist src\backend\catalog\postgres.description del /q src\backen
6970
if %DIST%==1 if exist src\backend\catalog\postgres.shdescription del /q src\backend\catalog\postgres.shdescription
7071
if %DIST%==1 if exist src\backend\catalog\schemapg.h del /q src\backend\catalog\schemapg.h
7172
if %DIST%==1 if exist src\backend\catalog\pg_*_d.h del /q src\backend\catalog\pg_*_d.h
73+
if %DIST%==1 if exist src\backend\catalog\bki-stamp del /q src\backend\catalog\bki-stamp
7274
if %DIST%==1 if exist src\backend\parser\scan.c del /q src\backend\parser\scan.c
7375
if %DIST%==1 if exist src\backend\parser\gram.c del /q src\backend\parser\gram.c
7476
if %DIST%==1 if exist src\backend\bootstrap\bootscanner.c del /q src\backend\bootstrap\bootscanner.c

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy