@@ -56,8 +56,10 @@ sub Install
56
56
my $majorver = DetermineMajorVersion();
57
57
print " Installing version $majorver for $conf in $target \n " ;
58
58
59
- EnsureDirectories($target , ' bin' ,' lib' ,' share' ,' share/timezonesets' ,' share/contrib' ,' doc' ,
60
- ' doc/contrib' , ' symbols' , ' share/tsearch_data' );
59
+ EnsureDirectories($target , ' bin' , ' lib' , ' share' , ' share/timezonesets' ,
60
+ ' share/extension' , ' share/contrib' ,
61
+ ' doc' , ' doc/extension' , ' doc/contrib' ,
62
+ ' symbols' , ' share/tsearch_data' );
61
63
62
64
CopySolutionOutput($conf , $target );
63
65
lcopy($target . ' /lib/libpq.dll' , $target . ' /bin/libpq.dll' );
@@ -316,7 +318,27 @@ sub CopyContribFiles
316
318
317
319
my $mf = read_file(" contrib/$d /Makefile" );
318
320
$mf =~ s {\\ s*[\r\n ]+} {} mg ;
321
+
322
+ # Note: we currently don't support setting MODULEDIR in the makefile
323
+ my $moduledir = ' contrib' ;
324
+
319
325
my $flist = ' ' ;
326
+ if ($mf =~ / ^EXTENSION\s *=\s *(.*)$ /m ) {$flist .= $1 }
327
+ if ($flist ne ' ' )
328
+ {
329
+ $moduledir = ' extension' ;
330
+ $flist = ParseAndCleanRule($flist , $mf );
331
+
332
+ foreach my $f (split /\s +/,$flist )
333
+ {
334
+ lcopy(' contrib/' . $d . ' /' . $f . ' .control' ,
335
+ $target . ' /share/extension/' . $f . ' .control' )
336
+ || croak(" Could not copy file $f .control in contrib $d " );
337
+ print ' .' ;
338
+ }
339
+ }
340
+
341
+ $flist = ' ' ;
320
342
if ($mf =~ / ^DATA_built\s *=\s *(.*)$ /m ) {$flist .= $1 }
321
343
if ($mf =~ / ^DATA\s *=\s *(.*)$ /m ) {$flist .= " $1 " }
322
344
$flist =~ s / ^\s *// ; # Remove leading spaces if we had only DATA_built
@@ -327,7 +349,8 @@ sub CopyContribFiles
327
349
328
350
foreach my $f (split /\s +/,$flist )
329
351
{
330
- lcopy(' contrib/' . $d . ' /' . $f ,$target . ' /share/contrib/' . basename($f ))
352
+ lcopy(' contrib/' . $d . ' /' . $f ,
353
+ $target . ' /share/' . $moduledir . ' /' . basename($f ))
331
354
|| croak(" Could not copy file $f in contrib $d " );
332
355
print ' .' ;
333
356
}
@@ -341,7 +364,8 @@ sub CopyContribFiles
341
364
342
365
foreach my $f (split /\s +/,$flist )
343
366
{
344
- lcopy(' contrib/' . $d . ' /' . $f ,$target . ' /share/tsearch_data/' . basename($f ))
367
+ lcopy(' contrib/' . $d . ' /' . $f ,
368
+ $target . ' /share/tsearch_data/' . basename($f ))
345
369
|| croak(" Could not copy file $f in contrib $d " );
346
370
print ' .' ;
347
371
}
@@ -359,7 +383,8 @@ sub CopyContribFiles
359
383
if ($d eq ' spi' );
360
384
foreach my $f (split /\s +/,$flist )
361
385
{
362
- lcopy(' contrib/' . $d . ' /' . $f , $target . ' /doc/contrib/' . $f )
386
+ lcopy(' contrib/' . $d . ' /' . $f ,
387
+ $target . ' /doc/' . $moduledir . ' /' . $f )
363
388
|| croak(" Could not copy file $f in contrib $d " );
364
389
print ' .' ;
365
390
}
@@ -430,7 +455,7 @@ sub CopyIncludeFiles
430
455
' src/include/' , ' pg_config.h' , ' pg_config_os.h'
431
456
);
432
457
CopyFiles(' Grammar header' , $target . ' /include/server/parser/' ,
433
- ' src/backend/parser/' , ' gram.h' );
458
+ ' src/backend/parser/' , ' gram.h' );
434
459
CopySetOfFiles(' ' ,[ glob (" src\\ include\\ *.h" ) ],$target . ' /include/server/' );
435
460
my $D ;
436
461
opendir ($D , ' src/include' ) || croak " Could not opendir on src/include!\n " ;
0 commit comments