[Buildbot-devel] [win32] service not quite working with VS2008, env problem

Marcus Lindblom macke at yar.nu
Thu Nov 27 09:31:39 UTC 2008


Stephen Davis wrote:
> Hi all,
> 
> I have a buildbot service set up with an installation of VS2008 but,  
> since VS2008 no longer installs its environment variables into every  
> user's PATH, etc., the builds fail b/c the environment is not properly  
> set up.  I slogged through the stuff that happens when you execute the  
> VS2008-specific cmd shell and it's not a simple matter of adding a few  
> entries to the buildbot user's environment.  It executes a series  
> of .bat files.
> 
> Since each build step invocation gets its own shell (I assume), what's  
> the easiest way to get the right environment variables set up?

What I've done in similar situations is to create a batch-file called 
wrap.cmd containing:

@echo off
call %VS9COMNTOOLS%\vsvars32.bat
SET FOO=bar
cmd /c %*
exit /b %ERRORLEVEL%

Then write my own ShellCommand() wrapper that just runs
'cmd /c call wrap.cmd' + args.

(The 'cmd /c call' ensures correct error level propagation from batch 
files.)

 > Can you specify a .bat file that runs when the user logs in (a
 > la .login on unix)?

Not so that all subsequently started processes get the same env, AFAIK.

 > Could I change the path to PythonService.exe in the service's registry
 > entry to point to a .bat file that sets up the environment and then
 > runs PythonService.exe?

That might work, but I haven't tried it. You can't specify a batch file 
as a service (nor a regular exe, it needs to export some 
service-specific functions for start/stop/pause), so you'd have to go 
through a wrapper executable, such as srvany.exe (available in the 
Windows resource kit).

Using that, to start cmd.exe, to run your wrapper then run buildbot.py 
might work.

 > I am not a Windows guy at all so I'm floundering here.

The ShellCommand is the simplest way.

/Marcus




More information about the devel mailing list