postgres.git / summary / log / commit / refs

commit    06ca28d5ab2f810ef25e718e0d71f2233542c151
Author:   Andrew Dunstan <andrew@dunslane.net>
Date:     Mon Apr 27 14:50:46 2015 +0000
First released in: 9.5.0

    Fix vcbuild failures and chkpass dependency caused by 854adb8
    
    Switching the Windows build scripts to use forward slashes instead of
    backslashes has caused a couple of issues in VC builds:
    - The file tree list was not correctly generated, build script
      generating vcproj file missing tree dependencies when listing items in
      Filter.
    - VC builds do not accept file paths with forward slashes, perhaps it
      could be possible to use a Condition but it seems safer to simply
      enforce the file paths to use backslashes in the vcproj files.
    - chkpass had an unneeded dependency with libpgport and libpgcommon to
      make build succeed but actually it is not necessary as crypt.c is
      already listed for this project and should be replaced with a fake name
      as it is a unique file.
    
    Michael Paquier


src/tools/msvc/MSBuildProject.pm | 2 +- src/tools/msvc/Mkvcbuild.pm | 2 -- src/tools/msvc/VCBuildProject.pm | 33 +++++++++++++++++++-------------- 3 files changed, 20 insertions(+), 17 deletions(-) diff --git a/src/tools/msvc/MSBuildProject.pm b/src/tools/msvc/MSBuildProject.pm index a16f9acefca..3d60b64ec9c 100644 --- a/src/tools/msvc/MSBuildProject.pm +++ b/src/tools/msvc/MSBuildProject.pm @@ -143,7 +143,7 @@ EOF # File already exists, so fake a new name my $obj = $dir; - $obj =~ s/\\/_/g; + $obj =~ s!/!_!g; print $f <<EOF; <ClCompile Include="$fileNameWithPath"> diff --git a/src/tools/msvc/Mkvcbuild.pm b/src/tools/msvc/Mkvcbuild.pm index 344b75ff82b..cfb9b24a022 100644 --- a/src/tools/msvc/Mkvcbuild.pm +++ b/src/tools/msvc/Mkvcbuild.pm @@ -33,12 +33,10 @@ my $contrib_defines = { 'refint' => 'REFINT_VERBOSE' }; my @contrib_uselibpq = ('dblink', 'oid2name', 'postgres_fdw', 'vacuumlo'); my @contrib_uselibpgport = ( - 'chkpass', 'oid2name', 'pg_standby', 'vacuumlo'); my @contrib_uselibpgcommon = ( - 'chkpass', 'oid2name', 'pg_standby', 'vacuumlo'); diff --git a/src/tools/msvc/VCBuildProject.pm b/src/tools/msvc/VCBuildProject.pm index dda662f3695..3a24c4e52fa 100644 --- a/src/tools/msvc/VCBuildProject.pm +++ b/src/tools/msvc/VCBuildProject.pm @@ -75,43 +75,48 @@ EOF my $dir = $1; my $file = $2; - # Walk backwards down the directory stack and close any dirs we're done with + # Walk backwards down the directory stack and close any dirs + # we're done with. while ($#dirstack >= 0) { - if (join('\\', @dirstack) eq - substr($dir, 0, length(join('\\', @dirstack)))) + if (join('/', @dirstack) eq + substr($dir, 0, length(join('/', @dirstack)))) { - last if (length($dir) == length(join('\\', @dirstack))); + last if (length($dir) == length(join('/', @dirstack))); last - if (substr($dir, length(join('\\', @dirstack)), 1) eq '\\'); + if (substr($dir, length(join('/', @dirstack)), 1) eq '/'); } print $f ' ' x $#dirstack . " </Filter>\n"; pop @dirstack; } # Now walk forwards and create whatever directories are needed - while (join('\\', @dirstack) ne $dir) + while (join('/', @dirstack) ne $dir) { - my $left = substr($dir, length(join('\\', @dirstack))); - $left =~ s/^\\//; - my @pieces = split /\\/, $left; + my $left = substr($dir, length(join('/', @dirstack))); + $left =~ s/^\///; + my @pieces = split /\//, $left; push @dirstack, $pieces[0]; print $f ' ' x $#dirstack . " <Filter Name=\"$pieces[0]\" Filter=\"\">\n"; } + # VC builds do not like file paths with forward slashes. + my $fileNameWithPathFormatted = $fileNameWithPath; + $fileNameWithPathFormatted =~ s/\//\\/g; + print $f ' ' x $#dirstack - . " <File RelativePath=\"$fileNameWithPath\""; + . " <File RelativePath=\"$fileNameWithPathFormatted\""; if ($fileNameWithPath =~ /\.y$/) { my $of = $fileNameWithPath; $of =~ s/\.y$/.c/; $of =~ -s{^src\\pl\\plpgsql\\src\\gram.c$}{src\\pl\\plpgsql\\src\\pl_gram.c}; +s{^src/pl/plpgsql/src/gram.c$}{src/pl/plpgsql/src/pl_gram.c}; print $f '>' . $self->GenerateCustomTool( 'Running bison on ' . $fileNameWithPath, - "perl src\\tools\\msvc\\pgbison.pl $fileNameWithPath", $of) + "perl src/tools/msvc/pgbison.pl $fileNameWithPath", $of) . '</File>' . "\n"; } elsif ($fileNameWithPath =~ /\.l$/) @@ -121,7 +126,7 @@ s{^src\\pl\\plpgsql\\src\\gram.c$}{src\\pl\\plpgsql\\src\\pl_gram.c}; print $f '>' . $self->GenerateCustomTool( 'Running flex on ' . $fileNameWithPath, - "perl src\\tools\\msvc\\pgflex.pl $fileNameWithPath", $of) + "perl src/tools/msvc/pgflex.pl $fileNameWithPath", $of) . '</File>' . "\n"; } elsif (defined($uniquefiles{$file})) @@ -129,7 +134,7 @@ s{^src\\pl\\plpgsql\\src\\gram.c$}{src\\pl\\plpgsql\\src\\pl_gram.c}; # File already exists, so fake a new name my $obj = $dir; - $obj =~ s/\\/_/g; + $obj =~ s!/!_!g; print $f "><FileConfiguration Name=\"Debug|$self->{platform}\"><Tool Name=\"VCCLCompilerTool\" ObjectFile=\".\\debug\\$self->{name}\\$obj" . "_$file.obj\" /></FileConfiguration><FileConfiguration Name=\"Release|$self->{platform}\"><Tool Name=\"VCCLCompilerTool\" ObjectFile=\".\\release\\$self->{name}\\$obj" [parent: f95425478aea]