]> git.ipfire.org Git - thirdparty/postgresql.git/commitdiff
Adjust behavior of some env settings for the TAP tests of MSVC
authorMichael Paquier <michael@paquier.xyz>
Wed, 15 Dec 2021 01:40:19 +0000 (10:40 +0900)
committerMichael Paquier <michael@paquier.xyz>
Wed, 15 Dec 2021 01:40:19 +0000 (10:40 +0900)
edc2332 has introduced in vcregress.pl some control on the environment
variables LZ4, TAR and GZIP_PROGRAM to allow any TAP tests to be able
use those commands.  This makes the settings more consistent with
src/Makefile.global.in, as the same default gets used for Make and MSVC
builds.

Each parameter can be changed in buildenv.pl, but as a default gets
assigned after loading buldenv.pl, it is not possible to unset any of
these, and using an empty value would not work with "||=" either.  As
some environments may not have a compatible command in their PATH (tar
coming from MinGW is an issue, for one), this could break tests without
an exit path to bypass any failing test.  This commit changes things so
as the default values for LZ4, TAR and GZIP_PROGRAM are assigned before
loading buildenv.pl, not after.  This way, we keep the same amount of
compatibility as a GNU build with the same defaults, and it becomes
possible to unset any of those values.

While on it, this adds some documentation about those three variables in
the section dedicated to the TAP tests for MSVC.

Per discussion with Andrew Dunstan.

Discussion: https://postgr.es/m/YbGYe483803il3X7@paquier.xyz
Backpatch-through: 10

doc/src/sgml/install-windows.sgml
src/tools/msvc/vcregress.pl

index 02fb9f94251616f2fa41150a9b5507ffb37a3e95..2e16e27546e3cbf0a3409358d4ee5c75d2bc9710 100644 (file)
@@ -485,6 +485,40 @@ $ENV{PERL5LIB}=$ENV{PERL5LIB} . ';c:\IPC-Run-0.94\lib';
     </varlistentry>
    </variablelist>
   </para>
+
+  <para>
+   Some of the TAP tests depend on a set of external commands that would
+   optionally trigger tests related to them. Each one of those variables
+   can be set or unset in <filename>buildenv.pl</filename>:
+   <variablelist>
+    <varlistentry>
+     <term><varname>GZIP_PROGRAM</varname></term>
+     <listitem><para>
+       Path to a <application>gzip</application> command. The default is
+       <literal>gzip</literal>, that would be the command found in
+      <varname>PATH</varname>.
+     </para></listitem>
+    </varlistentry>
+
+    <varlistentry>
+     <term><varname>LZ4</varname></term>
+     <listitem><para>
+      Path to a <application>lz4</application> command. The default is
+      <literal>lz4</literal>, that would be the command found in
+      <varname>PATH</varname>.
+     </para></listitem>
+    </varlistentry>
+
+    <varlistentry>
+     <term><varname>TAR</varname></term>
+     <listitem><para>
+      Path to a <application>tar</application> command. The default is
+      <literal>tar</literal>, that would be the command found in
+      <varname>PATH</varname>.
+     </para></listitem>
+    </varlistentry>
+   </variablelist>
+  </para>
  </sect2>
 
  <sect2>
index fad71a20c96c75563457aac0822d3f6bf04328f1..88e0df1c2ecd98536023a414a1aa872d0c50a091 100644 (file)
@@ -26,6 +26,13 @@ my $tmp_installdir = "$topdir/tmp_install";
 do './src/tools/msvc/config_default.pl';
 do './src/tools/msvc/config.pl' if (-f 'src/tools/msvc/config.pl');
 
+# These values are defaults that can be overridden by the calling environment
+# (see buildenv.pl processing below).
+# c.f. src/Makefile.global.in and configure.ac
+$ENV{GZIP_PROGRAM} ||= 'gzip';
+$ENV{LZ4} ||= 'lz4';
+$ENV{TAR} ||= 'tar';
+
 # buildenv.pl is for specifying the build environment settings
 # it should contain lines like:
 # $ENV{PATH} = "c:/path/to/bison/bin;$ENV{PATH}";
@@ -63,13 +70,6 @@ $ENV{with_gssapi} = $config->{gss} ? 'yes' : 'no';
 $ENV{with_krb_srvnam} = $config->{krb_srvnam} || 'postgres';
 $ENV{with_readline} = 'no';
 
-# These values are defaults that can be overridden by the calling environment
-# (see buildenv.pl processing above).
-# c.f. src/Makefile.global.in and configure.ac
-$ENV{TAR} ||= 'tar';
-$ENV{LZ4} ||= 'lz4';
-$ENV{GZIP_PROGRAM} ||= 'gzip';
-
 $ENV{PATH} = "$topdir/$Config/libpq;$ENV{PATH}";
 
 if ($ENV{PERL5LIB})