zc.buildout on MS-Windows ========================= Certain aspects of every software project are dependent on the operating system used. The same - of course - applies to zc.buildout. To test that Windows doesn't get in the way, we'll test some system dependent aspects. The following recipe will create a read-only file which shutil.rmtree can't delete. >>> mkdir('recipe') >>> write('recipe', 'recipe.py', ... ''' ... import os ... import sys ... print_ = lambda *a: sys.stdout.write(' '.join(map(str, a))+'\\n') ... class Recipe: ... def __init__(self, buildout, name, options): ... self.location = os.path.join( ... buildout['buildout']['parts-directory'], ... name) ... ... def install(self): ... print_("can't remove read only files") ... if not os.path.exists (self.location): ... os.makedirs (self.location) ... ... name = os.path.join (self.location, 'readonly.txt') ... open (name, 'w').write ('this is a read only file') ... os.chmod(name, 256) ... return () ... ... update = install ... ''') >>> write('recipe', 'setup.py', ... ''' ... from setuptools import setup ... setup(name='spam', version='1', py_modules=['recipe'], ... entry_points={'zc.buildout': ['default = recipe:Recipe']}, ... ) ... ''') >>> write('recipe', 'README', '') >>> print_(system(buildout+' setup recipe bdist_egg')) # doctest: +ELLIPSIS Running setup script 'recipe/setup.py'. ... and we'll configure a buildout to use it: >>> write('buildout.cfg', ... ''' ... [buildout] ... parts = foo ... find-links = %s ... ... [foo] ... recipe = spam ... ''' % join('recipe', 'dist')) >>> print_(system(buildout), end='') Getting distribution for 'spam'. Got spam 1. Installing foo. can't remove read only files