Kosta wrote:
I am a Python newbie, tasked with automating (researching) building
Windows drivers using the WDK build environment.  I've been looking
into Python for this (instead of writing a bunch of batch files).

What I would like to do, is to open a cmd window, and start a Python
script.  This script would then (based upon input arguments), build
different flavors of the driver (fre, chk, x86, x64) and do some post
processing (create cat files, sign, etc.).

I was hoping to take advantage as much as possible of exisiting
infrastructure from the WDK.  I am able to call setenv.bat and provide
all the input parameters.  One of the things setenv.bat does is change
the path environment variable.  However, this is not captured by
Python.  I could duplicate the functionality, but I'd rather not.  Is
there a way to capture all enviroment variable changes being made by a
batch file from Python?

Thanks!

An excellent question. It's been a few years, but last time I remember looking, setenv.bat only changed environment variables, and didn't change current directory, or run any external programs.. If that's still true, I figure you have three options.

I don't know of any way to capture them explicitly. So here are the three choices I can come up with:

1) have the first python program invoke a new shell which runs setenv, then runs another python program. This second python program would be where all the work is done, invoking compilers, linkers etc. So the first python program invokes a batch file which looks something like:
         call setenv.bat  arg1
         python second.py    arg2 arg3  arg4  arg5

This batch file could even be generated on the fly, just to simplify complex argument passing.

2) Have the python program invoke a batch file something like the following, and then analyze the resulting text file
          call setenv.bat   arg1
          set > tempfile.txt

The contents of that tempfile could then be loaded into a dict similar to the usual environment. Now the Python script can continue, and just use these environment variable instead of the original set

3) Have the python program parse the setenv.bat instead of running it.

There was a post on this newsgroup announcing pyKook. It's still in early form, but you might get ideas from it. I haven't looked, I just pasted the announcement to look at later.

+ I have released pyKook 0.0.2.
+ http://pypi.python.org/pypi/Kook/0.0.2
+ http://www.kuwata-lab.com/kook/
+ http://www.kuwata-lab.com/kook/pykook-users-guide.html

Other possibilities:
+ http://pypi.python.org/pypi/vellum/ flexible small 'make' alternative

+  http://code.google.com/p/waf/

+  http://code.google.com/p/fabricate/

DaveA

--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to