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})
signature.asc
Description: PGP signature