summaryrefslogtreecommitdiffstats
path: root/Tools
diff options
context:
space:
mode:
authorBenjamin Peterson <benjamin@python.org>2010-03-08 22:17:58 (GMT)
committerBenjamin Peterson <benjamin@python.org>2010-03-08 22:17:58 (GMT)
commit75ad1fc08975c2d5a3732d5304d728771df63525 (patch)
tree025e9d275696a84122e7db3305c26b8e82a0652c /Tools
parente821cb6f2470d082ad87105b574b506fe1e5d5d4 (diff)
downloadcpython-75ad1fc08975c2d5a3732d5304d728771df63525.zip
cpython-75ad1fc08975c2d5a3732d5304d728771df63525.tar.gz
cpython-75ad1fc08975c2d5a3732d5304d728771df63525.tar.bz2
Merged revisions 78806 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk ........ r78806 | benjamin.peterson | 2010-03-08 16:15:11 -0600 (Mon, 08 Mar 2010) | 1 line set svn:eol-style on various files ........
Diffstat (limited to 'Tools')
-rw-r--r--Tools/msi/merge.py168
-rw-r--r--Tools/unicode/genwincodec.py122
2 files changed, 145 insertions, 145 deletions
diff --git a/Tools/msi/merge.py b/Tools/msi/merge.py
index def3964..568e622 100644
--- a/Tools/msi/merge.py
+++ b/Tools/msi/merge.py
@@ -1,84 +1,84 @@
-import msilib,os,win32com,tempfile,sys
-PCBUILD="PCBuild"
-certname = None
-from config import *
-
-Win64 = "amd64" in PCBUILD
-
-mod_dir = os.path.join(os.environ["ProgramFiles"], "Common Files", "Merge Modules")
-msi = None
-if len(sys.argv)==2:
- msi = sys.argv[1]
-if Win64:
- modules = ["Microsoft_VC90_CRT_x86_x64.msm", "policy_9_0_Microsoft_VC90_CRT_x86_x64.msm"]
- if not msi: msi = "python-%s.amd64.msi" % full_current_version
-else:
- modules = ["Microsoft_VC90_CRT_x86.msm","policy_9_0_Microsoft_VC90_CRT_x86.msm"]
- if not msi: msi = "python-%s.msi" % full_current_version
-for i, n in enumerate(modules):
- modules[i] = os.path.join(mod_dir, n)
-
-def merge(msi, feature, rootdir, modules):
- cab_and_filecount = []
- # Step 1: Merge databases, extract cabfiles
- m = msilib.MakeMerge2()
- m.OpenLog("merge.log")
- print "Opened Log"
- m.OpenDatabase(msi)
- print "Opened DB"
- for module in modules:
- print module
- m.OpenModule(module,0)
- print "Opened Module",module
- m.Merge(feature, rootdir)
- print "Errors:"
- for e in m.Errors:
- print e.Type, e.ModuleTable, e.DatabaseTable
- print " Modkeys:",
- for s in e.ModuleKeys: print s,
- print
- print " DBKeys:",
- for s in e.DatabaseKeys: print s,
- print
- cabname = tempfile.mktemp(suffix=".cab")
- m.ExtractCAB(cabname)
- cab_and_filecount.append((cabname, len(m.ModuleFiles)))
- m.CloseModule()
- m.CloseDatabase(True)
- m.CloseLog()
-
- # Step 2: Add CAB files
- i = msilib.MakeInstaller()
- db = i.OpenDatabase(msi, win32com.client.constants.msiOpenDatabaseModeTransact)
-
- v = db.OpenView("SELECT LastSequence FROM Media")
- v.Execute(None)
- maxmedia = -1
- while 1:
- r = v.Fetch()
- if not r: break
- seq = r.IntegerData(1)
- if seq > maxmedia:
- maxmedia = seq
- print "Start of Media", maxmedia
-
- for cabname, count in cab_and_filecount:
- stream = "merged%d" % maxmedia
- msilib.add_data(db, "Media",
- [(maxmedia+1, maxmedia+count, None, "#"+stream, None, None)])
- msilib.add_stream(db, stream, cabname)
- os.unlink(cabname)
- maxmedia += count
- # The merge module sets ALLUSERS to 1 in the property table.
- # This is undesired; delete that
- v = db.OpenView("DELETE FROM Property WHERE Property='ALLUSERS'")
- v.Execute(None)
- v.Close()
- db.Commit()
-
-merge(msi, "SharedCRT", "TARGETDIR", modules)
-
-# certname (from config.py) should be (a substring of)
-# the certificate subject, e.g. "Python Software Foundation"
-if certname:
- os.system('signtool sign /n "%s" /t http://timestamp.verisign.com/scripts/timestamp.dll %s' % (certname, msi))
+import msilib,os,win32com,tempfile,sys
+PCBUILD="PCBuild"
+certname = None
+from config import *
+
+Win64 = "amd64" in PCBUILD
+
+mod_dir = os.path.join(os.environ["ProgramFiles"], "Common Files", "Merge Modules")
+msi = None
+if len(sys.argv)==2:
+ msi = sys.argv[1]
+if Win64:
+ modules = ["Microsoft_VC90_CRT_x86_x64.msm", "policy_9_0_Microsoft_VC90_CRT_x86_x64.msm"]
+ if not msi: msi = "python-%s.amd64.msi" % full_current_version
+else:
+ modules = ["Microsoft_VC90_CRT_x86.msm","policy_9_0_Microsoft_VC90_CRT_x86.msm"]
+ if not msi: msi = "python-%s.msi" % full_current_version
+for i, n in enumerate(modules):
+ modules[i] = os.path.join(mod_dir, n)
+
+def merge(msi, feature, rootdir, modules):
+ cab_and_filecount = []
+ # Step 1: Merge databases, extract cabfiles
+ m = msilib.MakeMerge2()
+ m.OpenLog("merge.log")
+ print "Opened Log"
+ m.OpenDatabase(msi)
+ print "Opened DB"
+ for module in modules:
+ print module
+ m.OpenModule(module,0)
+ print "Opened Module",module
+ m.Merge(feature, rootdir)
+ print "Errors:"
+ for e in m.Errors:
+ print e.Type, e.ModuleTable, e.DatabaseTable
+ print " Modkeys:",
+ for s in e.ModuleKeys: print s,
+ print
+ print " DBKeys:",
+ for s in e.DatabaseKeys: print s,
+ print
+ cabname = tempfile.mktemp(suffix=".cab")
+ m.ExtractCAB(cabname)
+ cab_and_filecount.append((cabname, len(m.ModuleFiles)))
+ m.CloseModule()
+ m.CloseDatabase(True)
+ m.CloseLog()
+
+ # Step 2: Add CAB files
+ i = msilib.MakeInstaller()
+ db = i.OpenDatabase(msi, win32com.client.constants.msiOpenDatabaseModeTransact)
+
+ v = db.OpenView("SELECT LastSequence FROM Media")
+ v.Execute(None)
+ maxmedia = -1
+ while 1:
+ r = v.Fetch()
+ if not r: break
+ seq = r.IntegerData(1)
+ if seq > maxmedia:
+ maxmedia = seq
+ print "Start of Media", maxmedia
+
+ for cabname, count in cab_and_filecount:
+ stream = "merged%d" % maxmedia
+ msilib.add_data(db, "Media",
+ [(maxmedia+1, maxmedia+count, None, "#"+stream, None, None)])
+ msilib.add_stream(db, stream, cabname)
+ os.unlink(cabname)
+ maxmedia += count
+ # The merge module sets ALLUSERS to 1 in the property table.
+ # This is undesired; delete that
+ v = db.OpenView("DELETE FROM Property WHERE Property='ALLUSERS'")
+ v.Execute(None)
+ v.Close()
+ db.Commit()
+
+merge(msi, "SharedCRT", "TARGETDIR", modules)
+
+# certname (from config.py) should be (a substring of)
+# the certificate subject, e.g. "Python Software Foundation"
+if certname:
+ os.system('signtool sign /n "%s" /t http://timestamp.verisign.com/scripts/timestamp.dll %s' % (certname, msi))
diff --git a/Tools/unicode/genwincodec.py b/Tools/unicode/genwincodec.py
index 9134622..7a1ef5e 100644
--- a/Tools/unicode/genwincodec.py
+++ b/Tools/unicode/genwincodec.py
@@ -1,61 +1,61 @@
-"""This script generates a Python codec module from a Windows Code Page.
-
-It uses the function MultiByteToWideChar to generate a decoding table.
-"""
-
-import ctypes
-from ctypes import wintypes
-from gencodec import codegen
-import unicodedata
-
-def genwinmap(codepage):
- MultiByteToWideChar = ctypes.windll.kernel32.MultiByteToWideChar
- MultiByteToWideChar.argtypes = [wintypes.UINT, wintypes.DWORD,
- wintypes.LPCSTR, ctypes.c_int,
- wintypes.LPWSTR, ctypes.c_int]
- MultiByteToWideChar.restype = ctypes.c_int
-
- enc2uni = {}
-
- for i in list(range(32)) + [127]:
- enc2uni[i] = (i, 'CONTROL CHARACTER')
-
- for i in range(256):
- buf = ctypes.create_unicode_buffer(2)
- ret = MultiByteToWideChar(
- codepage, 0,
- bytes([i]), 1,
- buf, 2)
- assert ret == 1, "invalid code page"
- assert buf[1] == '\x00'
- try:
- name = unicodedata.name(buf[0])
- except ValueError:
- try:
- name = enc2uni[i][1]
- except KeyError:
- name = ''
-
- enc2uni[i] = (ord(buf[0]), name)
-
- return enc2uni
-
-def genwincodec(codepage):
- import platform
- map = genwinmap(codepage)
- encodingname = 'cp%d' % codepage
- code = codegen("", map, encodingname)
- # Replace first lines with our own docstring
- code = '''\
-"""Python Character Mapping Codec %s generated on Windows:
-%s with the command:
- python Tools/unicode/genwincodec.py %s
-"""#"
-''' % (encodingname, ' '.join(platform.win32_ver()), codepage
- ) + code.split('"""#"', 1)[1]
-
- print(code)
-
-if __name__ == '__main__':
- import sys
- genwincodec(int(sys.argv[1]))
+"""This script generates a Python codec module from a Windows Code Page.
+
+It uses the function MultiByteToWideChar to generate a decoding table.
+"""
+
+import ctypes
+from ctypes import wintypes
+from gencodec import codegen
+import unicodedata
+
+def genwinmap(codepage):
+ MultiByteToWideChar = ctypes.windll.kernel32.MultiByteToWideChar
+ MultiByteToWideChar.argtypes = [wintypes.UINT, wintypes.DWORD,
+ wintypes.LPCSTR, ctypes.c_int,
+ wintypes.LPWSTR, ctypes.c_int]
+ MultiByteToWideChar.restype = ctypes.c_int
+
+ enc2uni = {}
+
+ for i in list(range(32)) + [127]:
+ enc2uni[i] = (i, 'CONTROL CHARACTER')
+
+ for i in range(256):
+ buf = ctypes.create_unicode_buffer(2)
+ ret = MultiByteToWideChar(
+ codepage, 0,
+ bytes([i]), 1,
+ buf, 2)
+ assert ret == 1, "invalid code page"
+ assert buf[1] == '\x00'
+ try:
+ name = unicodedata.name(buf[0])
+ except ValueError:
+ try:
+ name = enc2uni[i][1]
+ except KeyError:
+ name = ''
+
+ enc2uni[i] = (ord(buf[0]), name)
+
+ return enc2uni
+
+def genwincodec(codepage):
+ import platform
+ map = genwinmap(codepage)
+ encodingname = 'cp%d' % codepage
+ code = codegen("", map, encodingname)
+ # Replace first lines with our own docstring
+ code = '''\
+"""Python Character Mapping Codec %s generated on Windows:
+%s with the command:
+ python Tools/unicode/genwincodec.py %s
+"""#"
+''' % (encodingname, ' '.join(platform.win32_ver()), codepage
+ ) + code.split('"""#"', 1)[1]
+
+ print(code)
+
+if __name__ == '__main__':
+ import sys
+ genwincodec(int(sys.argv[1]))