This is going to need someone who understands distutils internals. The strings we end up passing to putenv() grow absurdly large, and sooner or later Windows gets very unhappy with them.
os.py has a elif name in ('os2', 'nt'): # Where Env Var Names Must Be UPPERCASE class controlling introduction of a _Environ class. I changed its __setitem__ like so: def __setitem__(self, key, item): if key.upper() == "PATH": # new line print "len(item)", len(item) # new line putenv(key, item) self.data[key.upper()] = item As "setup.py build_ext -i" goes on while compiling Zope, this is the output before putenv barfs: len(item) 1025 len(item) 1680 len(item) 2335 len(item) 2990 len(item) 3645 len(item) 4300 len(item) 4955 len(item) 5610 len(item) 6265 len(item) 6920 len(item) 7575 len(item) 8230 len(item) 8885 len(item) 9540 len(item) 10195 len(item) 10850 len(item) 11505 len(item) 12160 len(item) 12815 len(item) 13470 len(item) 14125 len(item) 14780 len(item) 15435 len(item) 16090 len(item) 16745 len(item) 17400 len(item) 18055 len(item) 18710 len(item) 19365 len(item) 20020 len(item) 20675 len(item) 21330 len(item) 21985 len(item) 22640 len(item) 23295 len(item) 23950 len(item) 24605 len(item) 25260 len(item) 25915 len(item) 26570 len(item) 27225 len(item) 27880 len(item) 28535 len(item) 29190 len(item) 29845 len(item) 30500 len(item) 31155 len(item) 31810 len(item) 32465 The PATH isn't gibberish at this point -- it just keeps adding the MSVC directories (like C:\\Program Files\\Microsoft Visual Studio .NET 2003\\Vc7\\bin ) again and again and again. I don't know what the environ limits are on various flavors of Windows; empirically, on my Win XP Pro SP2 box, the values have to be < 32K or putenv() dies. But there's surely no need for distutils to make PATH grow without bound, so I think this is a distutils bug. A workaround for building Zope is easy but embarrassing <wink>: kill setup.py before it hits this error, then start it again. Lather, rinse, repeat. After a few iterations, everything builds fine. _______________________________________________ Python-Dev mailing list Python-Dev@python.org http://mail.python.org/mailman/listinfo/python-dev Unsubscribe: http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com