[Buildbot-devel] Environment variables upper case (Windows slave)
Maria Marcano
mariangemarcano at gmail.com
Thu Sep 26 13:57:43 UTC 2013
After investigating the problem, the issue is really jamplus which should
be case sensitive on windows,
In the mean time we have decided to implement a workaround for win slaves
while we look into a long term solution of fixing jam.
I'm thinking applying this workaround, could you check if this looks
correct to handle this condition? this is patch
diff --git a/slave/buildslave/runprocess.py b/slave/buildslave/runprocess.py
index 5af2533..ca92e37 100644
--- a/slave/buildslave/runprocess.py
+++ b/slave/buildslave/runprocess.py
@@ -27,7 +27,8 @@ import traceback
import stat
from collections import deque
from tempfile import NamedTemporaryFile
+if os.name == "nt":
+ import nt
@@ -285,6 +286,10 @@ class RunProcess:
self.process = None
if not os.path.exists(workdir):
os.makedirs(workdir)
+ # workaround for jamplus, case sensitive on windows
+ os_environ = os.environ
+ if os.name == "nt":
+ os_environ = nt.environ
if environ:
for key, v in environ.iteritems():
if isinstance(v, list):
@@ -301,12 +306,12 @@ class RunProcess:
# do substitution on variable values matching pattern: ${name}
p = re.compile('\${([0-9a-zA-Z_]*)}')
def subst(match):
- return os.environ.get(match.group(1), "")
+ return os_environ.get(match.group(1), "")
newenv = {}
- for key in os.environ.keys():
+ for key in os_environ.keys():
# setting a key to None will delete it from the slave
environment
if key not in environ or environ[key] is not None:
- newenv[key] = os.environ[key]
+ newenv[key] = os_environ[key]
for key, v in environ.iteritems():
if v is not None:
if not isinstance(v, basestring):
@@ -316,7 +321,7 @@ class RunProcess:
self.environ = newenv
else: # not environ
- self.environ = os.environ.copy()
+ self.environ = os_environ.copy()
self.initialStdin = initialStdin
self.logEnviron = logEnviron
self.timeout = timeout
Thanks
On Wed, Sep 25, 2013 at 1:22 PM, Maria Marcano <mariangemarcano at gmail.com>wrote:
> Hi,
>
> I'm noticing all environment variables are loaded upper case on windows
> when running commands in buildbot.
>
> This causes issues in our build system because we use jamplus which treats
> environment variable case sensitive, for example isn't finding the
> environment variable windir (windows has this variable by default lower
> case).
>
> Is it possible to have the environment variables on buildbot using the
> same case as it is defined in the OS?
>
> Thanks,
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://buildbot.net/pipermail/devel/attachments/20130926/a474c4bd/attachment.html>
More information about the devel
mailing list