[Python-checkins] python/nondist/sandbox/msi msi.py, 1.28, 1.29 msilib.py, 1.11, 1.12

loewis at users.sourceforge.net loewis at users.sourceforge.net
Tue Aug 17 13:52:04 CEST 2004


Update of /cvsroot/python/python/nondist/sandbox/msi
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv3341
Modified Files:
	msi.py msilib.py 
Log Message:
Add "run from source" option to all components.
Index: msi.py
===================================================================
RCS file: /cvsroot/python/python/nondist/sandbox/msi/msi.py,v
retrieving revision 1.28
retrieving revision 1.29
diff -C2 -d -r1.28 -r1.29
*** msi.py	16 Aug 2004 09:08:38 -0000	1.28
--- msi.py	17 Aug 2004 11:51:51 -0000	1.29
***************
*** 726,729 ****
--- 726,737 ----
 installer.FileVersion("msvcr71.dll", 1)
 
+ class PyDirectory(Directory):
+ """By default, all components in the Python installer
+ can run from source."""
+ def __init__(self, *args, **kw):
+ if not kw.has_key("componentflags"):
+ kw['componentflags'] = 2 #msidbComponentAttributesOptional
+ Directory.__init__(self, *args, **kw)
+ 
 # See "File Table", "Component Table", "Directory Table",
 # "FeatureComponents Table"
***************
*** 732,736 ****
 tmpfiles = []
 # Add all executables, icons, text files into the TARGETDIR component
! root = Directory(db, cab, None, srcdir, "TARGETDIR", "SourceDir")
 default_feature.set_current()
 root.add_file("PCBuild/w9xpopen.exe")
--- 740,744 ----
 tmpfiles = []
 # Add all executables, icons, text files into the TARGETDIR component
! root = PyDirectory(db, cab, None, srcdir, "TARGETDIR", "SourceDir")
 default_feature.set_current()
 root.add_file("PCBuild/w9xpopen.exe")
***************
*** 746,750 ****
 
 # msidbComponentAttributesSharedDllRefCount = 8, see "Component Table"
! dlldir = Directory(db, cab, root, srcdir, "DLLDIR", ".")
 pydll = "python%s%s.dll" % (major, minor)
 pydllsrc = srcdir + "/PCBuild/" + pydll
--- 754,758 ----
 
 # msidbComponentAttributesSharedDllRefCount = 8, see "Component Table"
! dlldir = PyDirectory(db, cab, root, srcdir, "DLLDIR", ".")
 pydll = "python%s%s.dll" % (major, minor)
 pydllsrc = srcdir + "/PCBuild/" + pydll
***************
*** 779,783 ****
 else:
 default_feature.set_current()
! lib = Directory(db, cab, parent, dir, dir, "%s|%s" % (parent.make_short(dir), dir))
 # Add additional files
 dirs[dir]=lib
--- 787,791 ----
 else:
 default_feature.set_current()
! lib = PyDirectory(db, cab, parent, dir, dir, "%s|%s" % (parent.make_short(dir), dir))
 # Add additional files
 dirs[dir]=lib
***************
*** 825,829 ****
 # Add DLLs
 default_feature.set_current()
! lib = Directory(db, cab, root, srcdir+"/PCBuild", "DLLs", "DLLS|DLLs")
 dlls = []
 tclfiles = []
--- 833,837 ----
 # Add DLLs
 default_feature.set_current()
! lib = PyDirectory(db, cab, root, srcdir+"/PCBuild", "DLLs", "DLLS|DLLs")
 dlls = []
 tclfiles = []
***************
*** 853,861 ****
 # Add headers
 default_feature.set_current()
! lib = Directory(db, cab, root, "include", "include", "INCLUDE|include")
 lib.glob("*.h")
 lib.add_file("pyconfig.h", src="../PC/pyconfig.h")
 # Add import libraries
! lib = Directory(db, cab, root, "PCBuild", "libs", "LIBS|libs")
 for f in dlls:
 lib.add_file(f.replace('pyd','lib'))
--- 861,869 ----
 # Add headers
 default_feature.set_current()
! lib = PyDirectory(db, cab, root, "include", "include", "INCLUDE|include")
 lib.glob("*.h")
 lib.add_file("pyconfig.h", src="../PC/pyconfig.h")
 # Add import libraries
! lib = PyDirectory(db, cab, root, "PCBuild", "libs", "LIBS|libs")
 for f in dlls:
 lib.add_file(f.replace('pyd','lib'))
***************
*** 866,870 ****
 while tcldirs:
 parent, phys, dir = tcldirs.pop()
! lib = Directory(db, cab, parent, phys, dir, "%s|%s" % (parent.make_short(dir), dir))
 if not os.path.exists(lib.absolute):
 continue
--- 874,878 ----
 while tcldirs:
 parent, phys, dir = tcldirs.pop()
! lib = PyDirectory(db, cab, parent, phys, dir, "%s|%s" % (parent.make_short(dir), dir))
 if not os.path.exists(lib.absolute):
 continue
***************
*** 876,882 ****
 # Add tools
 tools.set_current()
! tooldir = Directory(db, cab, root, "Tools", "Tools", "TOOLS|Tools")
 for f in ['i18n', 'pynche', 'Scripts', 'versioncheck', 'webchecker']:
! lib = Directory(db, cab, tooldir, f, f, "%s|%s" % (tooldir.make_short(f), f))
 lib.glob("*.py")
 lib.glob("*.pyw", exclude=['pydocgui.pyw'])
--- 884,890 ----
 # Add tools
 tools.set_current()
! tooldir = PyDirectory(db, cab, root, "Tools", "Tools", "TOOLS|Tools")
 for f in ['i18n', 'pynche', 'Scripts', 'versioncheck', 'webchecker']:
! lib = PyDirectory(db, cab, tooldir, f, f, "%s|%s" % (tooldir.make_short(f), f))
 lib.glob("*.py")
 lib.glob("*.pyw", exclude=['pydocgui.pyw'])
***************
*** 884,888 ****
 lib.glob("*.txt")
 if f == "pynche":
! x = Directory(db, cab, lib, "X", "X", "X|X")
 x.glob("*.txt")
 if f == 'Scripts':
--- 892,896 ----
 lib.glob("*.txt")
 if f == "pynche":
! x = PyDirectory(db, cab, lib, "X", "X", "X|X")
 x.glob("*.txt")
 if f == 'Scripts':
***************
*** 892,896 ****
 # Add documentation
 htmlfiles.set_current()
! lib = Directory(db, cab, root, "Doc", "Doc", "DOC|Doc")
 lib.start_component("documentation", keyfile="Python%s%s.chm" % (major,minor))
 lib.add_file("Python%s%s.chm" % (major, minor))
--- 900,904 ----
 # Add documentation
 htmlfiles.set_current()
! lib = PyDirectory(db, cab, root, "Doc", "Doc", "DOC|Doc")
 lib.start_component("documentation", keyfile="Python%s%s.chm" % (major,minor))
 lib.add_file("Python%s%s.chm" % (major, minor))
Index: msilib.py
===================================================================
RCS file: /cvsroot/python/python/nondist/sandbox/msi/msilib.py,v
retrieving revision 1.11
retrieving revision 1.12
diff -C2 -d -r1.11 -r1.12
*** msilib.py	13 Aug 2004 15:25:28 -0000	1.11
--- msilib.py	17 Aug 2004 11:51:51 -0000	1.12
***************
*** 405,409 ****
 _directories = sets.Set()
 class Directory:
! def __init__(self, db, cab, basedir, physical, _logical, default):
 index = 1
 _logical = make_id(_logical)
--- 405,417 ----
 _directories = sets.Set()
 class Directory:
! def __init__(self, db, cab, basedir, physical, _logical, default, componentflags=None):
! """Create a new directory in the Directory table. There is a current component
! at each point in time for the directory, which is either explicitly created
! through start_component, or implicitly when files are added for the first
! time. Files are added into the current component, and into the cab file.
! To create a directory, a base directory object needs to be specified (can be
! None), the path to the physical directory, and a logical directory name.
! Default specifies the DefaultDir slot in the directory table. componentflags
! specifies the default flags that new components get."""
 index = 1
 _logical = make_id(_logical)
***************
*** 422,425 ****
--- 430,434 ----
 self.ids = sets.Set()
 self.keyfiles = {}
+ self.componentflags = componentflags
 if basedir:
 self.absolute = os.path.join(basedir.absolute, physical)
***************
*** 430,434 ****
 add_data(db, "Directory", [(logical, blogical, default)])
 
! def start_component(self, component = None, feature = None, flags = 0, keyfile = None):
 uuid = gen_uuid()
 if component is None:
--- 439,450 ----
 add_data(db, "Directory", [(logical, blogical, default)])
 
! def start_component(self, component = None, feature = None, flags = None, keyfile = None):
! """Add an entry to the Component table, and make this component the current for this
! directory. If no component name is given, the directory name is used. If no feature
! is given, the current feature is used. If no flags are given, the directory's default
! flags are used. If no keyfile is given, the KeyPath is left null in the Component
! table."""
! if flags is None:
! flags = self.componentflags
 uuid = gen_uuid()
 if component is None:
***************
*** 482,485 ****
--- 498,506 ----
 
 def add_file(self, file, src=None, version=None, language=None):
+ """Add a file to the current component of the directory, starting a new one
+ one if there is no current component. By default, the file name in the source
+ and the file table will be identical. If the src file is specified, it is
+ interpreted relative to the current directory. Optionally, a version and a
+ language can be specified for the entry in the File table."""
 if not self.component:
 self.start_component(self.logical, current_feature)
***************
*** 525,528 ****
--- 546,551 ----
 
 def glob(self, pattern, exclude = None):
+ """Add a list of files to the current component as specified in the
+ glob pattern. Individual files can be excluded in the exclude list."""
 files = glob.glob1(self.absolute, pattern)
 for f in files:


More information about the Python-checkins mailing list

AltStyle によって変換されたページ (->オリジナル) /