Remove locale-related environment variables from subprocess environments
Commit Message
This avoids a few testsuite failures if the user has set such variables.
Comments
I think we probably want these to be explicit in test-wrapper rather than
done at the make level. That would cover more obscure cases, such as
cross-test-ssh when default hooey on the remote side sets some of those
variables.
On 09/09/2014 11:11 PM, Roland McGrath wrote:
> I think we probably want these to be explicit in test-wrapper rather than
> done at the make level. That would cover more obscure cases, such as
> cross-test-ssh when default hooey on the remote side sets some of those
> variables.
Hmm. Is it fine to require that test-wrapper-env supports the -u option
of env? There is no other way to unset environment variables at this
point, as far as I can see.
> Hmm. Is it fine to require that test-wrapper-env supports the -u option
> of env? There is no other way to unset environment variables at this
> point, as far as I can see.
I think using -u is OK, but Joseph might have an opinion. If it's a
problem, then for all these particular variables setting them to empty is
probably equivalent.
On Wed, 10 Sep 2014, Roland McGrath wrote:
> > Hmm. Is it fine to require that test-wrapper-env supports the -u option
> > of env? There is no other way to unset environment variables at this
> > point, as far as I can see.
>
> I think using -u is OK, but Joseph might have an opinion. If it's a
> problem, then for all these particular variables setting them to empty is
> probably equivalent.
Well, you need to update the documentation in install.texi of what the
arguments to test-wrapper-env look like. But I'm not aware of any wrapper
implementations that don't just go through env (whether by using
cross-test-ssh.sh, or the default empty wrapper), though in principle you
could have such an implementation (e.g. using userspace QEMU, where the
program "env" may not exist in a form it can execute ... not that I know
if userspace QEMU actually has a suitable mechanism for setting
environment variables that only apply to the emulated program and not to
QEMU itself). A NEWS entry mentioning the new requirements might still be
a good idea.
"Joseph S. Myers" <joseph@codesourcery.com> writes:
> not that I know
> if userspace QEMU actually has a suitable mechanism for setting
> environment variables that only apply to the emulated program and not to
> QEMU itself).
-E var=value QEMU_SET_ENV sets targets environment variable (see below)
-U var QEMU_UNSET_ENV unsets targets environment variable (see below)
Andreas.
From a70c397f88315bd66f28aaf1471e9b37d774c95f Mon Sep 17 00:00:00 2001
From: Florian Weimer <fweimer@redhat.com>
Date: Mon, 8 Sep 2014 14:15:29 +0200
Subject: Remove locale-related environment variables from subprocess environments
This avoids a few testsuite failures if the user has set such
variables.
---
ChangeLog | 10 ++++++++++
Makeconfig | 27 +++++++++++++++++++++++++--
2 files changed, 35 insertions(+), 2 deletions(-)
2014-09-08 Florian Weimer <fweimer@redhat.com>
* Makeconfig (.NOEXPORT): Remove, no longer supported by GNU Make.
(CHARSET, GCONV_PATH, I18NPATH, LANG, LANGUAGE, LANGUAGES,
LC_ADDRESS, LC_ALL, LC_COLLATE, LC_CTYPE, LC_IDENTIFICATION,
LC_MEASUREMENT, LC_MESSAGES, LC_MONETARY, LC_NAME, LC_NUMERIC,
LC_PAPER, LC_TELEPHONE, LC_TIME, LOCPATH, NLSPATH,
OUTPUT_CHARSET): Unexport (and implicitly clear)
environment variables
@@ -760,8 +760,31 @@ endif
#### End of configuration variables.
####
-# This tells some versions of GNU make before 3.63 not to export all variables.
-.NOEXPORT:
+# Unexport (and thus implicitly clear) locale-related environment
+# variables.
+unexport CHARSET
+unexport GCONV_PATH
+unexport I18NPATH
+unexport LANG
+unexport LANGUAGE
+unexport LANGUAGES
+unexport LC_ADDRESS
+unexport LC_ALL
+unexport LC_COLLATE
+unexport LC_CTYPE
+unexport LC_IDENTIFICATION
+unexport LC_MEASUREMENT
+unexport LC_MESSAGES
+unexport LC_MONETARY
+unexport LC_NAME
+unexport LC_NUMERIC
+unexport LC_PAPER
+unexport LC_TELEPHONE
+unexport LC_TIME
+unexport LOCPATH
+unexport NLSPATH
+unexport OUTPUT_CHARSET
+
# We want to echo the commands we're running without
# umpteen zillion filenames along with it (we use `...' instead)
--
1.9.3