On Mon, Dec 13, 2021 at 11:47:36AM -0500, Andrew Dunstan wrote:
> No. The code only sets them if they have not been previously set by
> buildenv.pl or the calling environment. That's what "||=" means.

Well, using ||= after the fact means that it is not possible to delete
any of those environment variables either in buildenv.pl, nor is it
possible to set them to empty string values, as vcregress.pl would
just reset them to the default value.  And that's the case I am
arguing for here.  We don't have any need to drop those default values
at all.  What I am arguing for here is the possibility to have
something more flexible than what HEAD proposes.

So, if we do something like say the attached, then it is possible to
handle environments like mine, while keeping the flexibility you are
looking for to set those defaults.  So that would be the best of both
worlds, no?.  I also think that we had better document all that
properly, as we do for any other TAP-related variable that can be used
in vcregress.pl.  All that leads me to the attached.
--
Michael
diff --git a/doc/src/sgml/install-windows.sgml b/doc/src/sgml/install-windows.sgml
index b33359d3af..30dd0c7f75 100644
--- a/doc/src/sgml/install-windows.sgml
+++ b/doc/src/sgml/install-windows.sgml
@@ -517,6 +517,40 @@ $ENV{PROVE_FLAGS}='--timer --jobs 2'
 $ENV{PROVE_TESTS}='t/020*.pl t/010*.pl'
 </programlisting>
   </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>
 
  </sect1>
diff --git a/src/tools/msvc/vcregress.pl b/src/tools/msvc/vcregress.pl
index 5975e7c9cd..8775da4edf 100644
--- a/src/tools/msvc/vcregress.pl
+++ b/src/tools/msvc/vcregress.pl
@@ -30,6 +30,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{TAR} ||= 'tar';
+$ENV{LZ4} ||= 'lz4';
+$ENV{GZIP_PROGRAM} ||= 'gzip';
+
 # buildenv.pl is for specifying the build environment settings
 # it should contain lines like:
 # $ENV{PATH} = "c:/path/to/bison/bin;$ENV{PATH}";
@@ -67,13 +74,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})

Attachment: signature.asc
Description: PGP signature

Reply via email to