diff options
Diffstat (limited to 'PC')
42 files changed, 2159 insertions, 307 deletions
diff --git a/PC/VC6/_ctypes.dsp b/PC/VC6/_ctypes.dsp index 70368bf..1c98eac 100644 --- a/PC/VC6/_ctypes.dsp +++ b/PC/VC6/_ctypes.dsp @@ -43,10 +43,10 @@ RSC=rc.exe # PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
F90=df.exe
-# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c
-# ADD CPP /nologo /MD /W3 /GX /Zi /O2 /I "..\..\Include" /I ".." /I "..\..\Modules\_ctypes\libffi_msvc" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /YX /FD /c
-# ADD BASE MTL /nologo /D "Py_BUILD_CORE_MODULE" /D "NDEBUG" /mktyplib203 /o "NUL" /win32
-# ADD MTL /nologo /D "Py_BUILD_CORE_MODULE" /D "NDEBUG" /mktyplib203 /o "NUL" /win32
+# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "Py_BUILD_CORE_MODULE" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c
+# ADD CPP /nologo /MD /W3 /GX /Zi /O2 /I "..\..\Include" /I ".." /I "..\..\Modules\_ctypes\libffi_msvc" /D "Py_BUILD_CORE_MODULE" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /YX /FD /c
+# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32
+# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32
# ADD BASE RSC /l 0x409 /d "NDEBUG"
# ADD RSC /l 0x409 /d "NDEBUG"
BSC32=bscmake.exe
diff --git a/PC/VC6/_msi.dsp b/PC/VC6/_msi.dsp index 16e96e3..76a61bc 100644 --- a/PC/VC6/_msi.dsp +++ b/PC/VC6/_msi.dsp @@ -43,10 +43,10 @@ RSC=rc.exe # PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
F90=df.exe
-# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c
-# ADD CPP /nologo /MD /W3 /GX /Zi /O2 /I "..\..\Include" /I ".." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /YX /FD /c
-# ADD BASE MTL /nologo /D "Py_BUILD_CORE_MODULE" /D "NDEBUG" /mktyplib203 /o "NUL" /win32
-# ADD MTL /nologo /D "Py_BUILD_CORE_MODULE" /D "NDEBUG" /mktyplib203 /o "NUL" /win32
+# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "Py_BUILD_CORE_MODULE" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c
+# ADD CPP /nologo /MD /W3 /GX /Zi /O2 /I "..\..\Include" /I ".." /D "Py_BUILD_CORE_MODULE" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /YX /FD /c
+# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32
+# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32
# ADD BASE RSC /l 0x409 /d "NDEBUG"
# ADD RSC /l 0x409 /d "NDEBUG"
BSC32=bscmake.exe
diff --git a/PC/VC6/build_ssl.py b/PC/VC6/build_ssl.py index c512688..95af084 100644 --- a/PC/VC6/build_ssl.py +++ b/PC/VC6/build_ssl.py @@ -95,13 +95,9 @@ def fix_makefile(makefile): """ if not os.path.isfile(makefile): return - # 2.4 compatibility - fin = open(makefile) - if 1: # with open(makefile) as fin: + with open(makefile) as fin: lines = fin.readlines() - fin.close() - fout = open(makefile, 'w') - if 1: # with open(makefile, 'w') as fout: + with open(makefile, 'w') as fout: for line in lines: if line.startswith("PERL="): continue @@ -117,7 +113,6 @@ def fix_makefile(makefile): line = line + noalgo line = line + '\n' fout.write(line) - fout.close() def run_configure(configure, do_script): print("perl Configure "+configure) @@ -199,7 +194,7 @@ def main(): copy(r"crypto\opensslconf.h", r"crypto\opensslconf_%s.h" % arch) # If the assembler files don't exist in tmpXX, copy them there - if perl is None: + if perl is None and os.path.exists("asm"+dirsuffix): if not os.path.exists("tmp"+dirsuffix): os.mkdir("tmp"+dirsuffix) for f in os.listdir("asm"+dirsuffix): diff --git a/PC/VC6/bz2.dsp b/PC/VC6/bz2.dsp index 1e96904..3c164fa 100644 --- a/PC/VC6/bz2.dsp +++ b/PC/VC6/bz2.dsp @@ -43,7 +43,7 @@ RSC=rc.exe # PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
F90=df.exe
-# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "Py_BUILD_CORE_MODULE" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c
+# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "Py_BUILD_CORE_MODULE" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c
# ADD CPP /nologo /MD /W3 /GX /Zi /O2 /I "..\..\Include" /I ".." /I "..\..\..\bzip2-1.0.5" /D "Py_BUILD_CORE_MODULE" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /YX /FD /c
# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32
# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32
diff --git a/PC/VC6/pythoncore.dsp b/PC/VC6/pythoncore.dsp index ea4f52d..f8a2c81 100644 --- a/PC/VC6/pythoncore.dsp +++ b/PC/VC6/pythoncore.dsp @@ -54,7 +54,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /machine:I386
-# ADD LINK32 largeint.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /base:"0x1e000000" /subsystem:windows /dll /debug /machine:I386 /nodefaultlib:"libc" /out:"./python31.dll"
+# ADD LINK32 largeint.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /base:"0x1e000000" /subsystem:windows /dll /debug /machine:I386 /nodefaultlib:"libc" /out:"./python32.dll"
# SUBTRACT LINK32 /pdb:none
!ELSEIF "$(CFG)" == "pythoncore - Win32 Debug"
@@ -82,7 +82,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 largeint.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /base:"0x1e000000" /subsystem:windows /dll /debug /machine:I386 /nodefaultlib:"libc" /out:"./python31_d.dll" /pdbtype:sept
+# ADD LINK32 largeint.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /base:"0x1e000000" /subsystem:windows /dll /debug /machine:I386 /nodefaultlib:"libc" /out:"./python32_d.dll" /pdbtype:sept
# SUBTRACT LINK32 /pdb:none
!ENDIF
@@ -133,6 +133,10 @@ SOURCE=..\..\Modules\_csv.c # End Source File
# Begin Source File
+SOURCE=..\..\Modules\_datetimemodule.c
+# End Source File
+# Begin Source File
+
SOURCE=..\..\Modules\_functoolsmodule.c
# End Source File
# Begin Source File
@@ -157,6 +161,10 @@ SOURCE=..\..\Modules\_lsprof.c # End Source File
# Begin Source File
+SOURCE=..\..\Modules\_math.c
+# End Source File
+# Begin Source File
+
SOURCE=..\..\Modules\_pickle.c
# End Source File
# Begin Source File
@@ -181,6 +189,10 @@ SOURCE=..\..\Modules\_threadmodule.c # End Source File
# Begin Source File
+SOURCE=..\..\Modules\_time.c
+# End Source File
+# Begin Source File
+
SOURCE=..\..\Python\_warnings.c
# End Source File
# Begin Source File
@@ -277,10 +289,6 @@ SOURCE=..\..\Modules\cmathmodule.c # End Source File
# Begin Source File
-SOURCE=..\..\Objects\cobject.c
-# End Source File
-# Begin Source File
-
SOURCE=..\..\Python\codecs.c
# End Source File
# Begin Source File
@@ -309,7 +317,7 @@ SOURCE=..\..\Modules\zlib\crc32.c # End Source File
# Begin Source File
-SOURCE=..\..\Modules\datetimemodule.c
+SOURCE=..\..\Python\dynamic_annotations.c
# End Source File
# Begin Source File
@@ -361,6 +369,10 @@ SOURCE=..\..\Objects\fileobject.c # End Source File
# Begin Source File
+SOURCE=..\..\Python\fileutils.c
+# End Source File
+# Begin Source File
+
SOURCE=..\..\Parser\firstsets.c
# End Source File
# Begin Source File
@@ -635,6 +647,10 @@ SOURCE=..\..\Python\pythonrun.c # End Source File
# Begin Source File
+SOURCE=..\..\Python\pytime.c
+# End Source File
+# Begin Source File
+
SOURCE=..\..\Objects\rangeobject.c
# End Source File
# Begin Source File
diff --git a/PC/VC6/readme.txt b/PC/VC6/readme.txt index 59e65d0..4e8d237 100644 --- a/PC/VC6/readme.txt +++ b/PC/VC6/readme.txt @@ -2,8 +2,7 @@ Building Python using VC++ 6.0 or 5.0 ------------------------------------- This directory is used to build Python for Win32 platforms, e.g. Windows 2000 and XP. It requires Microsoft Visual C++ 6.x or 5.x and Platform -SDK February 2003 Edition (Core SDK). You can download this SDK from -http://www.microsoft.com/msdownload/platformsdk/sdkupdate/psdk-full.htm. +SDK February 2003 Edition (Core SDK). (For other Windows platforms and compilers, see ../readme.txt.) All you need to do is open the workspace "pcbuild.dsw" in MSVC++, select @@ -13,7 +12,7 @@ and build the projects. The proper order to build subprojects: 1) pythoncore (this builds the main Python DLL and library files, - python31.{dll, lib} in Release mode) + python32.{dll, lib} in Release mode) 2) python (this builds the main Python executable, python.exe in Release mode) @@ -24,7 +23,7 @@ The proper order to build subprojects: to the subsystems they implement; see SUBPROJECTS below) When using the Debug setting, the output files have a _d added to -their name: python31_d.dll, python_d.exe, pyexpat_d.pyd, and so on. +their name: python32_d.dll, python_d.exe, pyexpat_d.pyd, and so on. SUBPROJECTS ----------- diff --git a/PC/VC6/tcl852.patch b/PC/VC6/tcl852.patch index 0b6c466..ed6780a 100644 --- a/PC/VC6/tcl852.patch +++ b/PC/VC6/tcl852.patch @@ -9,14 +9,3 @@ typedef struct _stati64 Tcl_StatBuf; # else typedef struct _stat64 Tcl_StatBuf; ---- tcl8.5.2\generic\tcl.h Fri Jun 13 03:35:39 2008 -+++ tcl8.5.2\generic\tcl.h Sun Jan 4 16:52:30 2009 -@@ -367,7 +367,7 @@ - typedef struct stati64 Tcl_StatBuf; - # define TCL_LL_MODIFIER "L" - # else /* __BORLANDC__ */ --# if _MSC_VER < 1400 && !defined(_M_IX86) -+# if _MSC_VER < 1400 /*&& !defined(_M_IX86)*/ - typedef struct _stati64 Tcl_StatBuf; - # else - typedef struct _stat64 Tcl_StatBuf; diff --git a/PC/VS7.1/pythoncore.vcproj b/PC/VS7.1/pythoncore.vcproj index c05addd..a6f897a 100644 --- a/PC/VS7.1/pythoncore.vcproj +++ b/PC/VS7.1/pythoncore.vcproj @@ -39,15 +39,15 @@ <Tool
Name="VCLinkerTool"
AdditionalDependencies="getbuildinfo.o"
- OutputFile="./python31.dll"
+ OutputFile="./python32.dll"
LinkIncremental="1"
SuppressStartupBanner="TRUE"
IgnoreDefaultLibraryNames="libc"
GenerateDebugInformation="TRUE"
- ProgramDatabaseFile=".\./python31.pdb"
+ ProgramDatabaseFile=".\./python32.pdb"
SubSystem="2"
BaseAddress="0x1e000000"
- ImportLibrary=".\./python31.lib"
+ ImportLibrary=".\./python32.lib"
TargetMachine="1"/>
<Tool
Name="VCMIDLTool"/>
@@ -99,15 +99,15 @@ <Tool
Name="VCLinkerTool"
AdditionalDependencies="getbuildinfo.o"
- OutputFile="./python31_d.dll"
+ OutputFile="./python32_d.dll"
LinkIncremental="1"
SuppressStartupBanner="TRUE"
IgnoreDefaultLibraryNames="libc"
GenerateDebugInformation="TRUE"
- ProgramDatabaseFile=".\./python31_d.pdb"
+ ProgramDatabaseFile=".\./python32_d.pdb"
SubSystem="2"
BaseAddress="0x1e000000"
- ImportLibrary=".\./python31_d.lib"
+ ImportLibrary=".\./python32_d.lib"
TargetMachine="1"/>
<Tool
Name="VCMIDLTool"/>
@@ -166,15 +166,15 @@ Name="VCLinkerTool"
AdditionalOptions=" /MACHINE:IA64 /USELINK:MS_SDK"
AdditionalDependencies="getbuildinfo.o"
- OutputFile="./python31.dll"
+ OutputFile="./python32.dll"
LinkIncremental="1"
SuppressStartupBanner="FALSE"
IgnoreDefaultLibraryNames="libc"
GenerateDebugInformation="TRUE"
- ProgramDatabaseFile=".\./python31.pdb"
+ ProgramDatabaseFile=".\./python32.pdb"
SubSystem="2"
BaseAddress="0x1e000000"
- ImportLibrary=".\./python31.lib"
+ ImportLibrary=".\./python32.lib"
TargetMachine="0"/>
<Tool
Name="VCMIDLTool"/>
@@ -233,15 +233,15 @@ Name="VCLinkerTool"
AdditionalOptions=" /MACHINE:AMD64 /USELINK:MS_SDK"
AdditionalDependencies="getbuildinfo.o"
- OutputFile="./python31.dll"
+ OutputFile="./python32.dll"
LinkIncremental="1"
SuppressStartupBanner="TRUE"
IgnoreDefaultLibraryNames="libc"
GenerateDebugInformation="TRUE"
- ProgramDatabaseFile=".\./python31.pdb"
+ ProgramDatabaseFile=".\./python32.pdb"
SubSystem="2"
BaseAddress="0x1e000000"
- ImportLibrary=".\./python31.lib"
+ ImportLibrary=".\./python32.lib"
TargetMachine="0"/>
<Tool
Name="VCMIDLTool"/>
@@ -391,9 +391,15 @@ RelativePath="..\..\Modules\_codecsmodule.c">
</File>
<File
+ RelativePath="..\..\Modules\_collectionsmodule.c">
+ </File>
+ <File
RelativePath="..\..\Modules\_csv.c">
</File>
<File
+ RelativePath="..\..\Modules\_datetimemodule.c">
+ </File>
+ <File
RelativePath="..\..\Modules\_functoolsmodule.c">
</File>
<File
@@ -409,6 +415,9 @@ RelativePath="..\..\Modules\_lsprof.c">
</File>
<File
+ RelativePath="..\..\Modules\_math.c">
+ </File>
+ <File
RelativePath="..\..\Modules\_pickle.c">
</File>
<File
@@ -424,10 +433,13 @@ RelativePath="..\..\Pc\_subprocess.c">
</File>
<File
- RelativePath="..\..\Modules\_weakref.c">
+ RelativePath="..\..\Modules\_time.c">
</File>
<File
- RelativePath="..\..\Pc\winreg.c">
+ RelativePath="..\..\Python\_warnings.c">
+ </File>
+ <File
+ RelativePath="..\..\Modules\_weakref.c">
</File>
<File
RelativePath="..\..\Objects\abstract.c">
@@ -439,9 +451,6 @@ RelativePath="..\..\Modules\arraymodule.c">
</File>
<File
- RelativePath="..\..\Python\_warnings.c">
- </File>
- <File
RelativePath="..\..\Python\asdl.c">
</File>
<File
@@ -466,10 +475,10 @@ RelativePath="..\..\Objects\boolobject.c">
</File>
<File
- RelativePath="..\..\Objects\bytearrayobject.c">
+ RelativePath="..\..\Objects\bytes_methods.c">
</File>
<File
- RelativePath="..\..\Objects\bytes_methods.c">
+ RelativePath="..\..\Objects\bytearrayobject.c">
</File>
<File
RelativePath="..\..\Objects\bytesobject.c">
@@ -490,18 +499,12 @@ RelativePath="..\..\Modules\cmathmodule.c">
</File>
<File
- RelativePath="..\..\Objects\cobject.c">
- </File>
- <File
RelativePath="..\..\Python\codecs.c">
</File>
<File
RelativePath="..\..\Objects\codeobject.c">
</File>
<File
- RelativePath="..\..\Modules\_collectionsmodule.c">
- </File>
- <File
RelativePath="..\..\Python\compile.c">
</File>
<File
@@ -511,7 +514,7 @@ RelativePath="..\..\PC\config.c">
</File>
<File
- RelativePath="..\..\Modules\datetimemodule.c">
+ RelativePath="..\..\Python\dynamic_annotations.c">
</File>
<File
RelativePath="..\..\Objects\descrobject.c">
@@ -544,6 +547,9 @@ RelativePath="..\..\Objects\fileobject.c">
</File>
<File
+ RelativePath="..\..\Python\fileutils.c">
+ </File>
+ <File
RelativePath="..\..\Parser\firstsets.c">
</File>
<File
@@ -746,6 +752,9 @@ RelativePath="..\..\Python\pystrtod.c">
</File>
<File
+ RelativePath="..\..\Python\pytime.c">
+ </File>
+ <File
RelativePath="..\..\Python\Python-ast.c">
</File>
<File
@@ -821,6 +830,9 @@ RelativePath="..\..\Objects\unicodeobject.c">
</File>
<File
+ RelativePath="..\..\Pc\winreg.c">
+ </File>
+ <File
RelativePath="..\..\Objects\weakrefobject.c">
</File>
<File
diff --git a/PC/VS7.1/rt.bat b/PC/VS7.1/rt.bat index ba1d090..a910a79 100755 --- a/PC/VS7.1/rt.bat +++ b/PC/VS7.1/rt.bat @@ -27,7 +27,7 @@ setlocal set exe=python set qmode= set dashO= -PATH %PATH%;..\..\..\tcltk\bin +PATH %PATH%;%~dp0..\..\..\tcltk\bin :CheckOpts if "%1"=="-O" (set dashO=-O) & shift & goto CheckOpts diff --git a/PC/VS8.0/_hashlib.vcproj b/PC/VS8.0/_hashlib.vcproj index faa8388..f031e2e 100644 --- a/PC/VS8.0/_hashlib.vcproj +++ b/PC/VS8.0/_hashlib.vcproj @@ -27,7 +27,6 @@ >
<Tool
Name="VCPreBuildEventTool"
- CommandLine="cd "$(SolutionDir)"
"$(PythonExe)" build_ssl.py Release $(PlatformName) -a
"
/>
<Tool
Name="VCCustomBuildTool"
@@ -89,7 +88,6 @@ >
<Tool
Name="VCPreBuildEventTool"
- CommandLine="cd "$(SolutionDir)"
"$(PythonExe)" build_ssl.py Release $(PlatformName) -a
"
/>
<Tool
Name="VCCustomBuildTool"
@@ -153,7 +151,6 @@ >
<Tool
Name="VCPreBuildEventTool"
- CommandLine="cd "$(SolutionDir)"
"$(PythonExe)" build_ssl.py Release $(PlatformName) -a
"
/>
<Tool
Name="VCCustomBuildTool"
@@ -216,7 +213,6 @@ >
<Tool
Name="VCPreBuildEventTool"
- CommandLine="cd "$(SolutionDir)"
"$(PythonExe)" build_ssl.py Release $(PlatformName) -a
"
/>
<Tool
Name="VCCustomBuildTool"
@@ -280,7 +276,6 @@ >
<Tool
Name="VCPreBuildEventTool"
- CommandLine="cd "$(SolutionDir)"
"$(PythonExe)" build_ssl.py Release $(PlatformName) -a
"
/>
<Tool
Name="VCCustomBuildTool"
@@ -343,7 +338,6 @@ >
<Tool
Name="VCPreBuildEventTool"
- CommandLine="cd "$(SolutionDir)"
"$(PythonExe)" build_ssl.py Release $(PlatformName) -a
"
/>
<Tool
Name="VCCustomBuildTool"
@@ -408,7 +402,6 @@ >
<Tool
Name="VCPreBuildEventTool"
- CommandLine="cd "$(SolutionDir)"
"$(PythonExe)" build_ssl.py Release $(PlatformName) -a
"
/>
<Tool
Name="VCCustomBuildTool"
@@ -471,7 +464,6 @@ >
<Tool
Name="VCPreBuildEventTool"
- CommandLine="cd "$(SolutionDir)"
"$(PythonExe)" build_ssl.py Release $(PlatformName) -a
"
/>
<Tool
Name="VCCustomBuildTool"
diff --git a/PC/VS8.0/_sqlite3.vcproj b/PC/VS8.0/_sqlite3.vcproj index b785f95..64f19f1 100644 --- a/PC/VS8.0/_sqlite3.vcproj +++ b/PC/VS8.0/_sqlite3.vcproj @@ -42,7 +42,7 @@ />
<Tool
Name="VCCLCompilerTool"
- AdditionalIncludeDirectories="..\..\..\sqlite-3.5.9"
+ AdditionalIncludeDirectories="..\..\..\sqlite-3.6.21"
PreprocessorDefinitions="MODULE_NAME=\"sqlite3\""
/>
<Tool
@@ -104,7 +104,7 @@ />
<Tool
Name="VCCLCompilerTool"
- AdditionalIncludeDirectories="..\..\..\sqlite-3.5.9"
+ AdditionalIncludeDirectories="..\..\..\sqlite-3.6.21"
PreprocessorDefinitions="MODULE_NAME=\"sqlite3\""
/>
<Tool
@@ -166,7 +166,7 @@ />
<Tool
Name="VCCLCompilerTool"
- AdditionalIncludeDirectories="..\..\..\sqlite-3.5.9"
+ AdditionalIncludeDirectories="..\..\..\sqlite-3.6.21"
PreprocessorDefinitions="MODULE_NAME=\"sqlite3\""
/>
<Tool
@@ -229,7 +229,7 @@ />
<Tool
Name="VCCLCompilerTool"
- AdditionalIncludeDirectories="..\..\..\sqlite-3.5.9"
+ AdditionalIncludeDirectories="..\..\..\sqlite-3.6.21"
PreprocessorDefinitions="MODULE_NAME=\"sqlite3\""
/>
<Tool
@@ -291,7 +291,7 @@ />
<Tool
Name="VCCLCompilerTool"
- AdditionalIncludeDirectories="..\..\..\sqlite-3.5.9"
+ AdditionalIncludeDirectories="..\..\..\sqlite-3.6.21"
PreprocessorDefinitions="MODULE_NAME=\"sqlite3\""
/>
<Tool
@@ -354,7 +354,7 @@ />
<Tool
Name="VCCLCompilerTool"
- AdditionalIncludeDirectories="..\..\..\sqlite-3.5.9"
+ AdditionalIncludeDirectories="..\..\..\sqlite-3.6.21"
PreprocessorDefinitions="MODULE_NAME=\"sqlite3\""
/>
<Tool
@@ -417,7 +417,7 @@ />
<Tool
Name="VCCLCompilerTool"
- AdditionalIncludeDirectories="..\..\..\sqlite-3.5.9"
+ AdditionalIncludeDirectories="..\..\..\sqlite-3.6.21"
PreprocessorDefinitions="MODULE_NAME=\"sqlite3\""
/>
<Tool
@@ -480,7 +480,7 @@ />
<Tool
Name="VCCLCompilerTool"
- AdditionalIncludeDirectories="..\..\..\sqlite-3.5.9"
+ AdditionalIncludeDirectories="..\..\..\sqlite-3.6.21"
PreprocessorDefinitions="MODULE_NAME=\"sqlite3\""
/>
<Tool
diff --git a/PC/VS8.0/_ssl.vcproj b/PC/VS8.0/_ssl.vcproj index 69f7726..d9267a4 100644 --- a/PC/VS8.0/_ssl.vcproj +++ b/PC/VS8.0/_ssl.vcproj @@ -27,7 +27,6 @@ >
<Tool
Name="VCPreBuildEventTool"
- CommandLine="cd "$(SolutionDir)"
"$(PythonExe)" build_ssl.py Release $(PlatformName) -a
"
/>
<Tool
Name="VCCustomBuildTool"
@@ -89,7 +88,6 @@ >
<Tool
Name="VCPreBuildEventTool"
- CommandLine="cd "$(SolutionDir)"
"$(PythonExe)" build_ssl.py Release $(PlatformName) -a
"
/>
<Tool
Name="VCCustomBuildTool"
@@ -153,7 +151,6 @@ >
<Tool
Name="VCPreBuildEventTool"
- CommandLine="cd "$(SolutionDir)"
"$(PythonExe)" build_ssl.py Release $(PlatformName) -a
"
/>
<Tool
Name="VCCustomBuildTool"
@@ -216,7 +213,6 @@ >
<Tool
Name="VCPreBuildEventTool"
- CommandLine="cd "$(SolutionDir)"
"$(PythonExe)" build_ssl.py Release $(PlatformName) -a
"
/>
<Tool
Name="VCCustomBuildTool"
@@ -280,7 +276,6 @@ >
<Tool
Name="VCPreBuildEventTool"
- CommandLine="cd "$(SolutionDir)"
"$(PythonExe)" build_ssl.py Release $(PlatformName) -a
"
/>
<Tool
Name="VCCustomBuildTool"
@@ -343,7 +338,6 @@ >
<Tool
Name="VCPreBuildEventTool"
- CommandLine="cd "$(SolutionDir)"
"$(PythonExe)" build_ssl.py Release $(PlatformName) -a
"
/>
<Tool
Name="VCCustomBuildTool"
@@ -408,7 +402,6 @@ >
<Tool
Name="VCPreBuildEventTool"
- CommandLine="cd "$(SolutionDir)"
"$(PythonExe)" build_ssl.py Release $(PlatformName) -a
"
/>
<Tool
Name="VCCustomBuildTool"
@@ -471,7 +464,6 @@ >
<Tool
Name="VCPreBuildEventTool"
- CommandLine="cd "$(SolutionDir)"
"$(PythonExe)" build_ssl.py Release $(PlatformName) -a
"
/>
<Tool
Name="VCCustomBuildTool"
diff --git a/PC/VS8.0/build_ssl.bat b/PC/VS8.0/build_ssl.bat index cee64a8..39c1ff0 100644 --- a/PC/VS8.0/build_ssl.bat +++ b/PC/VS8.0/build_ssl.bat @@ -2,10 +2,10 @@ if not defined HOST_PYTHON ( if %1 EQU Debug ( set HOST_PYTHON=python_d.exe - if not exist python31_d.dll exit 1 + if not exist python32_d.dll exit 1 ) ELSE ( set HOST_PYTHON=python.exe - if not exist python31.dll exit 1 + if not exist python32.dll exit 1 ) ) %HOST_PYTHON% build_ssl.py %1 %2 %3 diff --git a/PC/VS8.0/build_ssl.py b/PC/VS8.0/build_ssl.py index a08cc5e..dc13ef5 100644 --- a/PC/VS8.0/build_ssl.py +++ b/PC/VS8.0/build_ssl.py @@ -141,11 +141,27 @@ def fix_makefile(makefile): fout.write(line) def run_configure(configure, do_script): - print("perl Configure "+configure) - os.system("perl Configure "+configure) + print("perl Configure "+configure+" no-idea no-mdc2") + os.system("perl Configure "+configure+" no-idea no-mdc2") print(do_script) os.system(do_script) +def cmp(f1, f2): + bufsize = 1024 * 8 + with open(f1, 'rb') as fp1, open(f2, 'rb') as fp2: + while True: + b1 = fp1.read(bufsize) + b2 = fp2.read(bufsize) + if b1 != b2: + return False + if not b1: + return True + +def copy(src, dst): + if os.path.isfile(dst) and cmp(src, dst): + return + shutil.copy(src, dst) + def main(): build_all = "-a" in sys.argv if sys.argv[1] == "Release": @@ -161,12 +177,14 @@ def main(): do_script = "ms\\do_nasm" makefile="ms\\nt.mak" m32 = makefile + dirsuffix = "32" elif sys.argv[2] == "x64": arch="amd64" configure = "VC-WIN64A" do_script = "ms\\do_win64a" makefile = "ms\\nt64.mak" m32 = makefile.replace('64', '') + dirsuffix = "64" #os.environ["VSEXTCOMP_USECL"] = "MS_OPTERON" else: raise ValueError(str(sys.argv)) @@ -220,8 +238,17 @@ def main(): if arch == "amd64": create_makefile64(makefile, m32) fix_makefile(makefile) - shutil.copy(r"crypto\buildinf.h", r"crypto\buildinf_%s.h" % arch) - shutil.copy(r"crypto\opensslconf.h", r"crypto\opensslconf_%s.h" % arch) + copy(r"crypto\buildinf.h", r"crypto\buildinf_%s.h" % arch) + copy(r"crypto\opensslconf.h", r"crypto\opensslconf_%s.h" % arch) + + # If the assembler files don't exist in tmpXX, copy them there + if perl is None and os.path.exists("asm"+dirsuffix): + if not os.path.exists("tmp"+dirsuffix): + os.mkdir("tmp"+dirsuffix) + for f in os.listdir("asm"+dirsuffix): + if not f.endswith(".asm"): continue + if os.path.isfile(r"tmp%s\%s" % (dirsuffix, f)): continue + shutil.copy(r"asm%s\%s" % (dirsuffix, f), "tmp"+dirsuffix) # Now run make. if arch == "amd64": @@ -230,8 +257,8 @@ def main(): print("ml64 assembler has failed.") sys.exit(rc) - shutil.copy(r"crypto\buildinf_%s.h" % arch, r"crypto\buildinf.h") - shutil.copy(r"crypto\opensslconf_%s.h" % arch, r"crypto\opensslconf.h") + copy(r"crypto\buildinf_%s.h" % arch, r"crypto\buildinf.h") + copy(r"crypto\opensslconf_%s.h" % arch, r"crypto\opensslconf.h") #makeCommand = "nmake /nologo PERL=\"%s\" -f \"%s\"" %(perl, makefile) makeCommand = "nmake /nologo -f \"%s\"" % makefile diff --git a/PC/VS8.0/bz2.vcproj b/PC/VS8.0/bz2.vcproj index e6ffdf2..a97d1d5 100644 --- a/PC/VS8.0/bz2.vcproj +++ b/PC/VS8.0/bz2.vcproj @@ -43,7 +43,7 @@ <Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories="$(bz2Dir)"
- PreprocessorDefinitions="WIN32;_FILE_OFFSET_BITS=64"
+ PreprocessorDefinitions="WIN32;_FILE_OFFSET_BITS=64;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE"
/>
<Tool
Name="VCManagedResourceCompilerTool"
@@ -105,7 +105,7 @@ <Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories="$(bz2Dir)"
- PreprocessorDefinitions="WIN32;_FILE_OFFSET_BITS=64"
+ PreprocessorDefinitions="WIN32;_FILE_OFFSET_BITS=64;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE"
/>
<Tool
Name="VCManagedResourceCompilerTool"
@@ -167,7 +167,7 @@ <Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories="$(bz2Dir)"
- PreprocessorDefinitions="WIN32;_FILE_OFFSET_BITS=64"
+ PreprocessorDefinitions="WIN32;_FILE_OFFSET_BITS=64;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE"
/>
<Tool
Name="VCManagedResourceCompilerTool"
@@ -230,7 +230,7 @@ <Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories="$(bz2Dir)"
- PreprocessorDefinitions="WIN32;_FILE_OFFSET_BITS=64"
+ PreprocessorDefinitions="WIN32;_FILE_OFFSET_BITS=64;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE"
/>
<Tool
Name="VCManagedResourceCompilerTool"
@@ -292,7 +292,7 @@ <Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories="$(bz2Dir)"
- PreprocessorDefinitions="WIN32;_FILE_OFFSET_BITS=64"
+ PreprocessorDefinitions="WIN32;_FILE_OFFSET_BITS=64;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE"
/>
<Tool
Name="VCManagedResourceCompilerTool"
@@ -355,7 +355,7 @@ <Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories="$(bz2Dir)"
- PreprocessorDefinitions="WIN32;_FILE_OFFSET_BITS=64"
+ PreprocessorDefinitions="WIN32;_FILE_OFFSET_BITS=64;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE"
/>
<Tool
Name="VCManagedResourceCompilerTool"
@@ -418,7 +418,7 @@ <Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories="$(bz2Dir)"
- PreprocessorDefinitions="WIN32;_FILE_OFFSET_BITS=64"
+ PreprocessorDefinitions="WIN32;_FILE_OFFSET_BITS=64;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE"
/>
<Tool
Name="VCManagedResourceCompilerTool"
@@ -481,7 +481,7 @@ <Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories="$(bz2Dir)"
- PreprocessorDefinitions="WIN32;_FILE_OFFSET_BITS=64"
+ PreprocessorDefinitions="WIN32;_FILE_OFFSET_BITS=64;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE"
/>
<Tool
Name="VCManagedResourceCompilerTool"
diff --git a/PC/VS8.0/kill_python.c b/PC/VS8.0/kill_python.c index 17a5f32..6b91678 100644 --- a/PC/VS8.0/kill_python.c +++ b/PC/VS8.0/kill_python.c @@ -106,7 +106,7 @@ main(int argc, char **argv) /* * XXX TODO: if we really wanted to be fancy, we could check the * modules for all processes (not just the python[_d].exe ones) - * and see if any of our DLLs are loaded (i.e. python31[_d].dll), + * and see if any of our DLLs are loaded (i.e. python32[_d].dll), * as that would also inhibit our ability to rebuild the solution. * Not worth loosing sleep over though; for now, a simple check * for just the python executable should be sufficient. diff --git a/PC/VS8.0/make_buildinfo.c b/PC/VS8.0/make_buildinfo.c index 8cc3da2..8efa07a 100644 --- a/PC/VS8.0/make_buildinfo.c +++ b/PC/VS8.0/make_buildinfo.c @@ -19,9 +19,15 @@ invoked as a pre-link step for pythoncore, so that overwrites any previous getbuildinfo.o. + However, if a second argument is provided, this will be used + as a temporary directory where any getbuildinfo2.c and + getbuildinfo.o files are put. This is useful if multiple + configurations are being built in parallel, to avoid them + trampling each other's files. + */ -int make_buildinfo2() +int make_buildinfo2(const char *tmppath) { struct _stat st; HKEY hTortoise; @@ -46,7 +52,9 @@ int make_buildinfo2() if (_stat(command+1, &st) < 0) /* subwcrev.exe not part of the release */ return 0; - strcat_s(command, CMD_SIZE, "\" ..\\.. ..\\..\\Modules\\getbuildinfo.c getbuildinfo2.c"); + strcat_s(command, CMD_SIZE, "\" ..\\.. ..\\..\\Modules\\getbuildinfo.c "); + strcat_s(command, CMD_SIZE, tmppath); + strcat_s(command, CMD_SIZE, "getbuildinfo2.c"); puts(command); fflush(stdout); if (system(command) < 0) return 0; @@ -55,10 +63,12 @@ int make_buildinfo2() int main(int argc, char*argv[]) { - char command[500] = "cl.exe -c -D_WIN32 -DUSE_DL_EXPORT -D_WINDOWS -DWIN32 -D_WINDLL "; + char command[CMD_SIZE] = "cl.exe -c -D_WIN32 -DUSE_DL_EXPORT -D_WINDOWS -DWIN32 -D_WINDLL "; + char tmppath[CMD_SIZE] = ""; int do_unlink, result; - if (argc != 2) { - fprintf(stderr, "make_buildinfo $(ConfigurationName)\n"); + char *tmpdir = NULL; + if (argc <= 2 || argc > 3) { + fprintf(stderr, "make_buildinfo $(ConfigurationName) [tmpdir]\n"); return EXIT_FAILURE; } if (strcmp(argv[1], "Release") == 0) { @@ -78,16 +88,28 @@ int main(int argc, char*argv[]) fprintf(stderr, "unsupported configuration %s\n", argv[1]); return EXIT_FAILURE; } + if (argc > 2) { + tmpdir = argv[2]; + strcat_s(tmppath, _countof(tmppath), tmpdir); + strcat_s(tmppath, _countof(tmppath), "\\"); + } - if ((do_unlink = make_buildinfo2())) + if ((do_unlink = make_buildinfo2(tmppath))) { + strcat_s(command, CMD_SIZE, tmppath); strcat_s(command, CMD_SIZE, "getbuildinfo2.c -DSUBWCREV "); - else + } else strcat_s(command, CMD_SIZE, "..\\..\\Modules\\getbuildinfo.c"); - strcat_s(command, CMD_SIZE, " -Fogetbuildinfo.o -I..\\..\\Include -I..\\..\\PC"); + strcat_s(command, CMD_SIZE, " -Fo"); + strcat_s(command, CMD_SIZE, tmppath); + strcat_s(command, CMD_SIZE, "getbuildinfo.o -I..\\..\\Include -I..\\..\\PC"); puts(command); fflush(stdout); result = system(command); - if (do_unlink) - _unlink("getbuildinfo2.c"); + if (do_unlink) { + command[0] = '\0'; + strcat_s(command, CMD_SIZE, tmppath); + strcat_s(command, CMD_SIZE, "getbuildinfo2.c"); + _unlink(command); + } if (result < 0) return EXIT_FAILURE; return 0; diff --git a/PC/VS8.0/make_buildinfo.vcproj b/PC/VS8.0/make_buildinfo.vcproj index 3cc71e6..fb5cccd 100644 --- a/PC/VS8.0/make_buildinfo.vcproj +++ b/PC/VS8.0/make_buildinfo.vcproj @@ -12,9 +12,6 @@ <Platform
Name="Win32"
/>
- <Platform
- Name="x64"
- />
</Platforms>
<ToolFiles>
</ToolFiles>
@@ -84,64 +81,6 @@ Name="VCPostBuildEventTool"
/>
</Configuration>
- <Configuration
- Name="Release|x64"
- ConfigurationType="1"
- InheritedPropertySheets=".\pyproject.vsprops;.\x64.vsprops;.\release.vsprops"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- PreprocessorDefinitions="_CONSOLE"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
</Configurations>
<References>
</References>
diff --git a/PC/VS8.0/pcbuild.sln b/PC/VS8.0/pcbuild.sln index b4fe99f..9aca4aa 100644 --- a/PC/VS8.0/pcbuild.sln +++ b/PC/VS8.0/pcbuild.sln @@ -74,6 +74,7 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_ssl", "_ssl.vcproj", "{C6E {B11D750F-CD1F-4A96-85CE-E69A5C5259F9} = {B11D750F-CD1F-4A96-85CE-E69A5C5259F9}
{86937F53-C189-40EF-8CE8-8759D8E7D480} = {86937F53-C189-40EF-8CE8-8759D8E7D480}
{CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26} = {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26}
+ {E5B04CC0-EB4C-42AB-B4DC-18EF95F864B0} = {E5B04CC0-EB4C-42AB-B4DC-18EF95F864B0}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_testcapi", "_testcapi.vcproj", "{6901D91C-6E48-4BB7-9FEC-700C8131DF1D}"
@@ -112,6 +113,7 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_hashlib", "_hashlib.vcproj ProjectSection(ProjectDependencies) = postProject
{B11D750F-CD1F-4A96-85CE-E69A5C5259F9} = {B11D750F-CD1F-4A96-85CE-E69A5C5259F9}
{CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26} = {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26}
+ {E5B04CC0-EB4C-42AB-B4DC-18EF95F864B0} = {E5B04CC0-EB4C-42AB-B4DC-18EF95F864B0}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "sqlite3", "sqlite3.vcproj", "{A1A295E5-463C-437F-81CA-1F32367685DA}"
@@ -124,6 +126,11 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_multiprocessing", "_multip {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26} = {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26}
EndProjectSection
EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ssl", "ssl.vcproj", "{E5B04CC0-EB4C-42AB-B4DC-18EF95F864B0}"
+ ProjectSection(ProjectDependencies) = postProject
+ {B11D750F-CD1F-4A96-85CE-E69A5C5259F9} = {B11D750F-CD1F-4A96-85CE-E69A5C5259F9}
+ EndProjectSection
+EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "kill_python", "kill_python.vcproj", "{6DE10744-E396-40A5-B4E2-1B69AA7C8D31}"
EndProject
Global
@@ -514,6 +521,22 @@ Global {9E48B300-37D1-11DD-8C41-005056C00008}.Release|Win32.Build.0 = Release|Win32
{9E48B300-37D1-11DD-8C41-005056C00008}.Release|x64.ActiveCfg = Release|x64
{9E48B300-37D1-11DD-8C41-005056C00008}.Release|x64.Build.0 = Release|x64
+ {E5B04CC0-EB4C-42AB-B4DC-18EF95F864B0}.Debug|Win32.ActiveCfg = Debug|Win32
+ {E5B04CC0-EB4C-42AB-B4DC-18EF95F864B0}.Debug|Win32.Build.0 = Debug|Win32
+ {E5B04CC0-EB4C-42AB-B4DC-18EF95F864B0}.Debug|x64.ActiveCfg = Debug|x64
+ {E5B04CC0-EB4C-42AB-B4DC-18EF95F864B0}.Debug|x64.Build.0 = Debug|x64
+ {E5B04CC0-EB4C-42AB-B4DC-18EF95F864B0}.PGInstrument|Win32.ActiveCfg = PGInstrument|Win32
+ {E5B04CC0-EB4C-42AB-B4DC-18EF95F864B0}.PGInstrument|Win32.Build.0 = PGInstrument|Win32
+ {E5B04CC0-EB4C-42AB-B4DC-18EF95F864B0}.PGInstrument|x64.ActiveCfg = PGInstrument|x64
+ {E5B04CC0-EB4C-42AB-B4DC-18EF95F864B0}.PGInstrument|x64.Build.0 = PGInstrument|x64
+ {E5B04CC0-EB4C-42AB-B4DC-18EF95F864B0}.PGUpdate|Win32.ActiveCfg = PGUpdate|Win32
+ {E5B04CC0-EB4C-42AB-B4DC-18EF95F864B0}.PGUpdate|Win32.Build.0 = PGUpdate|Win32
+ {E5B04CC0-EB4C-42AB-B4DC-18EF95F864B0}.PGUpdate|x64.ActiveCfg = PGUpdate|x64
+ {E5B04CC0-EB4C-42AB-B4DC-18EF95F864B0}.PGUpdate|x64.Build.0 = PGUpdate|x64
+ {E5B04CC0-EB4C-42AB-B4DC-18EF95F864B0}.Release|Win32.ActiveCfg = Release|Win32
+ {E5B04CC0-EB4C-42AB-B4DC-18EF95F864B0}.Release|Win32.Build.0 = Release|Win32
+ {E5B04CC0-EB4C-42AB-B4DC-18EF95F864B0}.Release|x64.ActiveCfg = Release|x64
+ {E5B04CC0-EB4C-42AB-B4DC-18EF95F864B0}.Release|x64.Build.0 = Release|x64
{6DE10744-E396-40A5-B4E2-1B69AA7C8D31}.Debug|Win32.ActiveCfg = Debug|Win32
{6DE10744-E396-40A5-B4E2-1B69AA7C8D31}.Debug|Win32.Build.0 = Debug|Win32
{6DE10744-E396-40A5-B4E2-1B69AA7C8D31}.Debug|x64.ActiveCfg = Debug|x64
diff --git a/PC/VS8.0/pyproject.vsprops b/PC/VS8.0/pyproject.vsprops index 70025bd..6494216 100644 --- a/PC/VS8.0/pyproject.vsprops +++ b/PC/VS8.0/pyproject.vsprops @@ -38,7 +38,7 @@ />
<UserMacro
Name="PyDllName"
- Value="python31"
+ Value="python32"
/>
<UserMacro
Name="PythonExe"
@@ -50,7 +50,7 @@ />
<UserMacro
Name="sqlite3Dir"
- Value="$(externalsDir)\sqlite-3.5.9"
+ Value="$(externalsDir)\sqlite-3.6.21"
/>
<UserMacro
Name="bz2Dir"
@@ -58,7 +58,7 @@ />
<UserMacro
Name="opensslDir"
- Value="$(externalsDir)\openssl-0.9.8l"
+ Value="$(externalsDir)\openssl-1.0.0a"
/>
<UserMacro
Name="tcltkDir"
diff --git a/PC/VS8.0/pythoncore.vcproj b/PC/VS8.0/pythoncore.vcproj index 5c806d8..7252bcd 100644 --- a/PC/VS8.0/pythoncore.vcproj +++ b/PC/VS8.0/pythoncore.vcproj @@ -59,11 +59,11 @@ <Tool
Name="VCPreLinkEventTool"
Description="Generate build information..."
- CommandLine=""$(SolutionDir)make_buildinfo.exe" Release"
+ CommandLine=""$(SolutionDir)make_buildinfo.exe" Release $(IntDir)"
/>
<Tool
Name="VCLinkerTool"
- AdditionalDependencies="getbuildinfo.o"
+ AdditionalDependencies="$(IntDir)\getbuildinfo.o"
OutputFile="$(OutDir)\$(PyDllName).dll"
IgnoreDefaultLibraryNames="libc"
ProgramDatabaseFile="$(OutDir)$(PyDllName).pdb"
@@ -134,11 +134,11 @@ <Tool
Name="VCPreLinkEventTool"
Description="Generate build information..."
- CommandLine=""$(SolutionDir)make_buildinfo.exe" Release"
+ CommandLine=""$(SolutionDir)make_buildinfo.exe" Release $(IntDir)"
/>
<Tool
Name="VCLinkerTool"
- AdditionalDependencies="getbuildinfo.o"
+ AdditionalDependencies="$(IntDir)\getbuildinfo.o"
OutputFile="$(OutDir)\$(PyDllName).dll"
IgnoreDefaultLibraryNames="libc"
ProgramDatabaseFile="$(OutDir)$(PyDllName).pdb"
@@ -212,11 +212,11 @@ <Tool
Name="VCPreLinkEventTool"
Description="Generate build information..."
- CommandLine=""$(SolutionDir)make_buildinfo.exe" Debug"
+ CommandLine=""$(SolutionDir)make_buildinfo.exe" Debug $(IntDir)"
/>
<Tool
Name="VCLinkerTool"
- AdditionalDependencies="getbuildinfo.o"
+ AdditionalDependencies="$(IntDir)\getbuildinfo.o"
OutputFile="$(OutDir)\$(PyDllName)_d.dll"
IgnoreDefaultLibraryNames="libc"
ProgramDatabaseFile="$(OutDir)$(PyDllName)_d.pdb"
@@ -290,11 +290,11 @@ <Tool
Name="VCPreLinkEventTool"
Description="Generate build information..."
- CommandLine=""$(SolutionDir)make_buildinfo.exe" Debug"
+ CommandLine=""$(SolutionDir)make_buildinfo.exe" Debug $(IntDir)"
/>
<Tool
Name="VCLinkerTool"
- AdditionalDependencies="getbuildinfo.o"
+ AdditionalDependencies="$(IntDir)\getbuildinfo.o"
OutputFile="$(OutDir)\$(PyDllName)_d.dll"
IgnoreDefaultLibraryNames="libc"
ProgramDatabaseFile="$(OutDir)$(PyDllName)_d.pdb"
@@ -364,11 +364,11 @@ <Tool
Name="VCPreLinkEventTool"
Description="Generate build information..."
- CommandLine=""$(SolutionDir)make_buildinfo.exe" Release"
+ CommandLine=""$(SolutionDir)make_buildinfo.exe" Release $(IntDir)"
/>
<Tool
Name="VCLinkerTool"
- AdditionalDependencies="getbuildinfo.o"
+ AdditionalDependencies="$(IntDir)\getbuildinfo.o"
OutputFile="$(OutDir)\$(PyDllName).dll"
IgnoreDefaultLibraryNames="libc"
ProgramDatabaseFile="$(OutDir)$(PyDllName).pdb"
@@ -439,11 +439,11 @@ <Tool
Name="VCPreLinkEventTool"
Description="Generate build information..."
- CommandLine=""$(SolutionDir)make_buildinfo.exe" Release"
+ CommandLine=""$(SolutionDir)make_buildinfo.exe" Release $(IntDir)"
/>
<Tool
Name="VCLinkerTool"
- AdditionalDependencies="getbuildinfo.o"
+ AdditionalDependencies="$(IntDir)\getbuildinfo.o"
OutputFile="$(OutDir)\$(PyDllName).dll"
IgnoreDefaultLibraryNames="libc"
ProgramDatabaseFile="$(OutDir)$(PyDllName).pdb"
@@ -514,11 +514,11 @@ <Tool
Name="VCPreLinkEventTool"
Description="Generate build information..."
- CommandLine=""$(SolutionDir)make_buildinfo.exe" Release"
+ CommandLine=""$(SolutionDir)make_buildinfo.exe" Release ($IntDir)"
/>
<Tool
Name="VCLinkerTool"
- AdditionalDependencies="getbuildinfo.o"
+ AdditionalDependencies="$(IntDir)\getbuildinfo.o"
OutputFile="$(OutDir)\$(PyDllName).dll"
IgnoreDefaultLibraryNames="libc"
ProgramDatabaseFile="$(OutDir)$(PyDllName).pdb"
@@ -589,11 +589,11 @@ <Tool
Name="VCPreLinkEventTool"
Description="Generate build information..."
- CommandLine=""$(SolutionDir)make_buildinfo.exe" Release"
+ CommandLine=""$(SolutionDir)make_buildinfo.exe" Release $(IntDir)"
/>
<Tool
Name="VCLinkerTool"
- AdditionalDependencies="getbuildinfo.o"
+ AdditionalDependencies="$(IntDir)\getbuildinfo.o"
OutputFile="$(OutDir)\$(PyDllName).dll"
IgnoreDefaultLibraryNames="libc"
ProgramDatabaseFile="$(OutDir)$(PyDllName).pdb"
@@ -675,10 +675,6 @@ >
</File>
<File
- RelativePath="..\..\Include\cobject.h"
- >
- </File>
- <File
RelativePath="..\..\Include\code.h"
>
</File>
@@ -707,6 +703,10 @@ >
</File>
<File
+ RelativePath="..\..\Include\dynamic_annotations.h"
+ >
+ </File>
+ <File
RelativePath="..\..\Include\enumobject.h"
>
</File>
@@ -723,6 +723,10 @@ >
</File>
<File
+ RelativePath="..\..\Include\fileutils.h"
+ >
+ </File>
+ <File
RelativePath="..\..\Include\floatobject.h"
>
</File>
@@ -755,10 +759,6 @@ >
</File>
<File
- RelativePath="..\..\Include\intobject.h"
- >
- </File>
- <File
RelativePath="..\..\Include\intrcheck.h"
>
</File>
@@ -883,6 +883,10 @@ >
</File>
<File
+ RelativePath="..\..\Include\pytime.h"
+ >
+ </File>
+ <File
RelativePath="..\..\Include\pymem.h"
>
</File>
@@ -1019,6 +1023,14 @@ >
</File>
<File
+ RelativePath="..\..\Modules\_math.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\_math.h"
+ >
+ </File>
+ <File
RelativePath="..\..\Modules\_pickle.c"
>
</File>
@@ -1035,6 +1047,14 @@ >
</File>
<File
+ RelativePath="..\..\Modules\_time.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\_time.h"
+ >
+ </File>
+ <File
RelativePath="..\..\Modules\_weakref.c"
>
</File>
@@ -1059,7 +1079,7 @@ >
</File>
<File
- RelativePath="..\..\Modules\datetimemodule.c"
+ RelativePath="..\..\Modules\_datetimemodule.c"
>
</File>
<File
@@ -1216,6 +1236,70 @@ <File
RelativePath="..\..\Modules\zlib\gzio.c"
>
+ <FileConfiguration
+ Name="Release|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ PreprocessorDefinitions="_CRT_SECURE_NO_DEPRECATE"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win64"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ PreprocessorDefinitions="_CRT_SECURE_NO_DEPRECATE"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ PreprocessorDefinitions="_CRT_SECURE_NO_DEPRECATE"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Win64"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ PreprocessorDefinitions="_CRT_SECURE_NO_DEPRECATE"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="PGInstrument|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ PreprocessorDefinitions="_CRT_SECURE_NO_DEPRECATE"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="PGInstrument|Win64"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ PreprocessorDefinitions="_CRT_SECURE_NO_DEPRECATE"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="PGUpdate|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ PreprocessorDefinitions="_CRT_SECURE_NO_DEPRECATE"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="PGUpdate|Win64"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ PreprocessorDefinitions="_CRT_SECURE_NO_DEPRECATE"
+ />
+ </FileConfiguration>
</File>
<File
RelativePath="..\..\Modules\zlib\infback.c"
@@ -1391,10 +1475,6 @@ >
</File>
<File
- RelativePath="..\..\Objects\cobject.c"
- >
- </File>
- <File
RelativePath="..\..\Objects\codeobject.c"
>
</File>
@@ -1499,6 +1579,10 @@ >
</File>
<File
+ RelativePath="..\..\Objects\stringlib\split.h"
+ >
+ </File>
+ <File
RelativePath="..\..\Objects\structseq.c"
>
</File>
@@ -1659,6 +1743,10 @@ >
</File>
<File
+ RelativePath="..\..\Python\dynamic_annotations.c"
+ >
+ </File>
+ <File
RelativePath="..\..\Python\dynload_win.c"
>
</File>
@@ -1667,6 +1755,10 @@ >
</File>
<File
+ RelativePath="..\..\Python\fileutils.c"
+ >
+ </File>
+ <File
RelativePath="..\..\Python\formatter_unicode.c"
>
</File>
@@ -1755,6 +1847,10 @@ >
</File>
<File
+ RelativePath="..\..\Python\pytime.c"
+ >
+ </File>
+ <File
RelativePath="..\..\Python\pystate.c"
>
</File>
diff --git a/PC/VS8.0/rt.bat b/PC/VS8.0/rt.bat index c35ec0c..0429e19 100644 --- a/PC/VS8.0/rt.bat +++ b/PC/VS8.0/rt.bat @@ -27,7 +27,7 @@ setlocal set exe=python set qmode= set dashO= -PATH %PATH%;..\..\..\tcltk\bin +PATH %PATH%;%~dp0..\..\..\tcltk\bin :CheckOpts if "%1"=="-O" (set dashO=-O) & shift & goto CheckOpts diff --git a/PC/VS8.0/sqlite3.vcproj b/PC/VS8.0/sqlite3.vcproj index 9fe8a9b..9afbe5d 100644 --- a/PC/VS8.0/sqlite3.vcproj +++ b/PC/VS8.0/sqlite3.vcproj @@ -287,7 +287,7 @@ />
<Tool
Name="VCCLCompilerTool"
- AdditionalIncludeDirectories=""..\..\..\sqlite-3.5.9""
+ AdditionalIncludeDirectories=""..\..\..\sqlite-3.6.21""
/>
<Tool
Name="VCManagedResourceCompilerTool"
@@ -515,11 +515,11 @@ Name="Header Files"
>
<File
- RelativePath="..\..\..\sqlite-3.5.9\sqlite3.h"
+ RelativePath="..\..\..\sqlite-3.6.21\sqlite3.h"
>
</File>
<File
- RelativePath="..\..\..\sqlite-3.5.9\sqlite3ext.h"
+ RelativePath="..\..\..\sqlite-3.6.21\sqlite3ext.h"
>
</File>
</Filter>
@@ -527,7 +527,7 @@ Name="Source Files"
>
<File
- RelativePath="..\..\..\sqlite-3.5.9\sqlite3.c"
+ RelativePath="..\..\..\sqlite-3.6.21\sqlite3.c"
>
</File>
</Filter>
diff --git a/PC/VS8.0/sqlite3.vsprops b/PC/VS8.0/sqlite3.vsprops index 8c028dc..8300328 100644 --- a/PC/VS8.0/sqlite3.vsprops +++ b/PC/VS8.0/sqlite3.vsprops @@ -7,7 +7,7 @@ >
<Tool
Name="VCCLCompilerTool"
- AdditionalIncludeDirectories="..\..\..\sqlite-3.5.9"
+ AdditionalIncludeDirectories="..\..\..\sqlite-3.6.21"
PreprocessorDefinitions="SQLITE_API=__declspec(dllexport)"
WarningLevel="1"
/>
diff --git a/PC/VS8.0/ssl.vcproj b/PC/VS8.0/ssl.vcproj new file mode 100644 index 0000000..f0d635e --- /dev/null +++ b/PC/VS8.0/ssl.vcproj @@ -0,0 +1,189 @@ +<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="8.00"
+ Name="ssl"
+ ProjectGUID="{E5B04CC0-EB4C-42AB-B4DC-18EF95F864B0}"
+ RootNamespace="ssl"
+ Keyword="MakeFileProj"
+ TargetFrameworkVersion="196613"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ <Platform
+ Name="x64"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ ConfigurationType="0"
+ InheritedPropertySheets=".\pyd_d.vsprops"
+ CharacterSet="0"
+ >
+ <Tool
+ Name="VCNMakeTool"
+ BuildCommandLine="cd "$(SolutionDir)"
"$(PythonExe)" build_ssl.py Release $(PlatformName) -a
"
+ ReBuildCommandLine=""
+ CleanCommandLine=""
+ Output=""
+ PreprocessorDefinitions=""
+ IncludeSearchPath=""
+ ForcedIncludes=""
+ AssemblySearchPath=""
+ ForcedUsingAssemblies=""
+ CompileAsManaged=""
+ />
+ </Configuration>
+ <Configuration
+ Name="Debug|x64"
+ ConfigurationType="0"
+ InheritedPropertySheets=".\pyd_d.vsprops;.\x64.vsprops"
+ CharacterSet="0"
+ >
+ <Tool
+ Name="VCNMakeTool"
+ BuildCommandLine="cd "$(SolutionDir)"
"$(PythonExe)" build_ssl.py Release $(PlatformName) -a
"
+ ReBuildCommandLine=""
+ CleanCommandLine=""
+ Output=""
+ PreprocessorDefinitions=""
+ IncludeSearchPath=""
+ ForcedIncludes=""
+ AssemblySearchPath=""
+ ForcedUsingAssemblies=""
+ CompileAsManaged=""
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|Win32"
+ ConfigurationType="0"
+ InheritedPropertySheets=".\pyd.vsprops"
+ CharacterSet="0"
+ >
+ <Tool
+ Name="VCNMakeTool"
+ BuildCommandLine="cd "$(SolutionDir)"
"$(PythonExe)" build_ssl.py Release $(PlatformName) -a
"
+ ReBuildCommandLine=""
+ CleanCommandLine=""
+ Output=""
+ PreprocessorDefinitions=""
+ IncludeSearchPath=""
+ ForcedIncludes=""
+ AssemblySearchPath=""
+ ForcedUsingAssemblies=""
+ CompileAsManaged=""
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|x64"
+ ConfigurationType="0"
+ InheritedPropertySheets=".\pyd.vsprops;.\x64.vsprops"
+ CharacterSet="0"
+ >
+ <Tool
+ Name="VCNMakeTool"
+ BuildCommandLine="cd "$(SolutionDir)"
"$(PythonExe)" build_ssl.py Release $(PlatformName) -a
"
+ ReBuildCommandLine=""
+ CleanCommandLine=""
+ Output=""
+ PreprocessorDefinitions=""
+ IncludeSearchPath=""
+ ForcedIncludes=""
+ AssemblySearchPath=""
+ ForcedUsingAssemblies=""
+ CompileAsManaged=""
+ />
+ </Configuration>
+ <Configuration
+ Name="PGInstrument|Win32"
+ ConfigurationType="0"
+ InheritedPropertySheets=".\pyd.vsprops;.\pginstrument.vsprops"
+ CharacterSet="0"
+ >
+ <Tool
+ Name="VCNMakeTool"
+ BuildCommandLine="cd "$(SolutionDir)"
"$(PythonExe)" build_ssl.py Release $(PlatformName) -a
"
+ ReBuildCommandLine=""
+ CleanCommandLine=""
+ Output=""
+ PreprocessorDefinitions=""
+ IncludeSearchPath=""
+ ForcedIncludes=""
+ AssemblySearchPath=""
+ ForcedUsingAssemblies=""
+ CompileAsManaged=""
+ />
+ </Configuration>
+ <Configuration
+ Name="PGInstrument|x64"
+ ConfigurationType="0"
+ InheritedPropertySheets=".\pyd.vsprops;.\x64.vsprops;.\pginstrument.vsprops"
+ CharacterSet="0"
+ >
+ <Tool
+ Name="VCNMakeTool"
+ BuildCommandLine="cd "$(SolutionDir)"
"$(PythonExe)" build_ssl.py Release $(PlatformName) -a
"
+ ReBuildCommandLine=""
+ CleanCommandLine=""
+ Output=""
+ PreprocessorDefinitions=""
+ IncludeSearchPath=""
+ ForcedIncludes=""
+ AssemblySearchPath=""
+ ForcedUsingAssemblies=""
+ CompileAsManaged=""
+ />
+ </Configuration>
+ <Configuration
+ Name="PGUpdate|Win32"
+ ConfigurationType="0"
+ InheritedPropertySheets=".\pyd.vsprops;.\pgupdate.vsprops"
+ CharacterSet="0"
+ >
+ <Tool
+ Name="VCNMakeTool"
+ BuildCommandLine="cd "$(SolutionDir)"
"$(PythonExe)" build_ssl.py Release $(PlatformName) -a
"
+ ReBuildCommandLine=""
+ CleanCommandLine=""
+ Output=""
+ PreprocessorDefinitions=""
+ IncludeSearchPath=""
+ ForcedIncludes=""
+ AssemblySearchPath=""
+ ForcedUsingAssemblies=""
+ CompileAsManaged=""
+ />
+ </Configuration>
+ <Configuration
+ Name="PGUpdate|x64"
+ ConfigurationType="0"
+ InheritedPropertySheets=".\pyd.vsprops;.\x64.vsprops;.\pgupdate.vsprops"
+ CharacterSet="0"
+ >
+ <Tool
+ Name="VCNMakeTool"
+ BuildCommandLine="cd "$(SolutionDir)"
"$(PythonExe)" build_ssl.py Release $(PlatformName) -a
"
+ ReBuildCommandLine=""
+ CleanCommandLine=""
+ Output=""
+ PreprocessorDefinitions=""
+ IncludeSearchPath=""
+ ForcedIncludes=""
+ AssemblySearchPath=""
+ ForcedUsingAssemblies=""
+ CompileAsManaged=""
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
@@ -1,5 +1,5 @@ /* Helper library for MSI creation with Python. - * Copyright (C) 2005 Martin v. Löwis + * Copyright (C) 2005 Martin v. Löwis * Licensed to PSF under a contributor agreement. */ diff --git a/PC/_subprocess.c b/PC/_subprocess.c index 27d3dc6..2338f30 100644 --- a/PC/_subprocess.c +++ b/PC/_subprocess.c @@ -329,7 +329,8 @@ gethandle(PyObject* obj, char* name) static PyObject* getenvironment(PyObject* environment) { - int i, envsize; + int i; + Py_ssize_t envsize; PyObject* out = NULL; PyObject* keys; PyObject* values; @@ -356,7 +357,7 @@ getenvironment(PyObject* environment) p = PyUnicode_AS_UNICODE(out); for (i = 0; i < envsize; i++) { - int ksize, vsize, totalsize; + Py_ssize_t ksize, vsize, totalsize; PyObject* key = PyList_GET_ITEM(keys, i); PyObject* value = PyList_GET_ITEM(values, i); @@ -370,7 +371,7 @@ getenvironment(PyObject* environment) totalsize = (p - PyUnicode_AS_UNICODE(out)) + ksize + 1 + vsize + 1 + 1; if (totalsize > PyUnicode_GET_SIZE(out)) { - int offset = p - PyUnicode_AS_UNICODE(out); + Py_ssize_t offset = p - PyUnicode_AS_UNICODE(out); PyUnicode_Resize(&out, totalsize + 1024); p = PyUnicode_AS_UNICODE(out) + offset; } @@ -682,5 +683,7 @@ PyInit__subprocess() defint(d, "INFINITE", INFINITE); defint(d, "WAIT_OBJECT_0", WAIT_OBJECT_0); defint(d, "CREATE_NEW_CONSOLE", CREATE_NEW_CONSOLE); + defint(d, "CREATE_NEW_PROCESS_GROUP", CREATE_NEW_PROCESS_GROUP); + return m; } diff --git a/PC/config.c b/PC/config.c index 28d02b1..1fc2b40 100644 --- a/PC/config.c +++ b/PC/config.c @@ -43,7 +43,7 @@ extern PyObject* PyInit__sre(void); extern PyObject* PyInit_parser(void); extern PyObject* PyInit_winreg(void); extern PyObject* PyInit__struct(void); -extern PyObject* PyInit_datetime(void); +extern PyObject* PyInit__datetime(void); extern PyObject* PyInit__functools(void); extern PyObject* PyInit__json(void); extern PyObject* PyInit_zlib(void); @@ -62,6 +62,7 @@ extern PyObject* PyInit__io(void); extern PyObject* PyInit__pickle(void); extern PyObject* PyInit_atexit(void); extern PyObject* _PyWarnings_Init(void); +extern PyObject* PyInit__string(void); /* tools/freeze/makeconfig.py marker for additional "extern" */ /* -- ADDMODULE MARKER 1 -- */ @@ -116,7 +117,7 @@ struct _inittab _PyImport_Inittab[] = { {"parser", PyInit_parser}, {"winreg", PyInit_winreg}, {"_struct", PyInit__struct}, - {"datetime", PyInit_datetime}, + {"_datetime", PyInit__datetime}, {"_functools", PyInit__functools}, {"_json", PyInit__json}, @@ -147,6 +148,7 @@ struct _inittab _PyImport_Inittab[] = { {"builtins", NULL}, {"sys", NULL}, {"_warnings", _PyWarnings_Init}, + {"_string", PyInit__string}, {"_io", PyInit__io}, {"_pickle", PyInit__pickle}, diff --git a/PC/getpathp.c b/PC/getpathp.c index 0fe04c7..cd3a4b2 100644 --- a/PC/getpathp.c +++ b/PC/getpathp.c @@ -51,6 +51,9 @@ exe, some very strange installation setup) you get a path with some default, but relative, paths. + * An embedding application can use Py_SetPath() to override all of + these authomatic path computations. + ---------------------------------------------------------------- */ @@ -79,6 +82,9 @@ * The approach is an adaptation for Windows of the strategy used in * ../Modules/getpath.c; it uses the Windows Registry as one of its * information sources. + * + * Py_SetPath() can be used to override this mechanism. Call Py_SetPath + * with a semicolon separated path prior to calling Py_Initialize. */ #ifndef LANDMARK @@ -654,6 +660,24 @@ calculate_path(void) /* External interface */ +void +Py_SetPath(const wchar_t *path) +{ + if (module_search_path != NULL) { + free(module_search_path); + module_search_path = NULL; + } + if (path != NULL) { + extern wchar_t *Py_GetProgramName(void); + wchar_t *prog = Py_GetProgramName(); + wcsncpy(progpath, prog, MAXPATHLEN); + prefix[0] = L'\0'; + module_search_path = malloc((wcslen(path) + 1) * sizeof(wchar_t)); + if (module_search_path != NULL) + wcscpy(module_search_path, path); + } +} + wchar_t * Py_GetPath(void) { @@ -683,3 +707,38 @@ Py_GetProgramFullPath(void) calculate_path(); return progpath; } + +/* Load python3.dll before loading any extension module that might refer + to it. That way, we can be sure that always the python3.dll corresponding + to this python DLL is loaded, not a python3.dll that might be on the path + by chance. + Return whether the DLL was found. +*/ +static int python3_checked = 0; +static HANDLE hPython3; +int +_Py_CheckPython3() +{ + wchar_t py3path[MAXPATHLEN+1]; + wchar_t *s; + if (python3_checked) + return hPython3 != NULL; + python3_checked = 1; + + /* If there is a python3.dll next to the python3y.dll, + assume this is a build tree; use that DLL */ + wcscpy(py3path, dllpath); + s = wcsrchr(py3path, L'\\'); + if (!s) + s = py3path; + wcscpy(s, L"\\python3.dll"); + hPython3 = LoadLibraryExW(py3path, NULL, LOAD_WITH_ALTERED_SEARCH_PATH); + if (hPython3 != NULL) + return 1; + + /* Check sys.prefix\DLLs\python3.dll */ + wcscpy(py3path, Py_GetPrefix()); + wcscat(py3path, L"\\DLLs\\python3.dll"); + hPython3 = LoadLibraryExW(py3path, NULL, LOAD_WITH_ALTERED_SEARCH_PATH); + return hPython3 != NULL; +} diff --git a/PC/msvcrtmodule.c b/PC/msvcrtmodule.c index 37631a7..166df03 100755 --- a/PC/msvcrtmodule.c +++ b/PC/msvcrtmodule.c @@ -200,12 +200,12 @@ msvcrt_getch(PyObject *self, PyObject *args) PyDoc_STRVAR(getch_doc, "getch() -> key character\n\ \n\ -Read a keypress and return the resulting character. Nothing is echoed to\n\ -the console. This call will block if a keypress is not already\n\ -available, but will not wait for Enter to be pressed. If the pressed key\n\ -was a special function key, this will return '\\000' or '\\xe0'; the next\n\ -call will return the keycode. The Control-C keypress cannot be read with\n\ -this function."); +Read a keypress and return the resulting character as a byte string.\n\ +Nothing is echoed to the console. This call will block if a keypress is\n\ +not already available, but will not wait for Enter to be pressed. If the\n\ +pressed key was a special function key, this will return '\\000' or\n\ +'\\xe0'; the next call will return the keycode. The Control-C keypress\n\ +cannot be read with this function."); #ifdef _WCONIO_DEFINED static PyObject * @@ -291,7 +291,7 @@ msvcrt_putch(PyObject *self, PyObject *args) PyDoc_STRVAR(putch_doc, "putch(char) -> None\n\ \n\ -Print the character char to the console without buffering."); +Print the byte string char to the console without buffering."); #ifdef _WCONIO_DEFINED static PyObject * @@ -330,8 +330,9 @@ msvcrt_ungetch(PyObject *self, PyObject *args) PyDoc_STRVAR(ungetch_doc, "ungetch(char) -> None\n\ \n\ -Cause the character char to be \"pushed back\" into the console buffer;\n\ -it will be the next character read by getch() or getche()."); +Cause the byte string char to be \"pushed back\" into the\n\ +console buffer; it will be the next character read by\n\ +getch() or getche()."); #ifdef _WCONIO_DEFINED static PyObject * diff --git a/PC/os2emx/Makefile b/PC/os2emx/Makefile index 0db46a5..d9cded7 100644 --- a/PC/os2emx/Makefile +++ b/PC/os2emx/Makefile @@ -332,6 +332,7 @@ SRC.PYTHON= $(addprefix $(TOP), \ Python/ceval.c \ Python/compile.c \ Python/codecs.c \ + Python/dynamic_annotations.c \ Python/errors.c \ Python/frozen.c \ Python/frozenmain.c \ diff --git a/PC/os2emx/python27.def b/PC/os2emx/python27.def index 0776ced..d87dd76 100644 --- a/PC/os2emx/python27.def +++ b/PC/os2emx/python27.def @@ -1048,11 +1048,6 @@ EXPORTS "_PyThreadState_Current" "_PyThreadState_GetFrame" -; From python26_s.lib(pystrtod) - "PyOS_ascii_strtod" - "PyOS_ascii_formatd" - "PyOS_ascii_atof" - ; From python26_s.lib(pythonrun) "Py_IgnoreEnvironmentFlag" "Py_DebugFlag" @@ -1173,7 +1168,6 @@ EXPORTS "PyThread_delete_key" "PyThread_set_key_value" "PyThread_get_key_value" - "PyThread__exit_thread" ; From python26_s.lib(gcmodule) ; "initgc" diff --git a/PC/os2vacpp/python.def b/PC/os2vacpp/python.def index 7d26546..a525c2a 100644 --- a/PC/os2vacpp/python.def +++ b/PC/os2vacpp/python.def @@ -376,7 +376,6 @@ EXPORTS PyThreadState_GetDict PyThreadState_New PyThreadState_Swap - PyThread__exit_thread PyThread_acquire_lock PyThread_allocate_lock PyThread_allocate_sema diff --git a/PC/pyconfig.h b/PC/pyconfig.h index 2444c8a..cbddbd8 100644 --- a/PC/pyconfig.h +++ b/PC/pyconfig.h @@ -80,7 +80,7 @@ WIN32 is still required for the locale module. #define MS_WIN32 /* only support win32 and greater. */ #define MS_WINDOWS #ifndef PYTHONPATH -# define PYTHONPATH L".\\DLLs;.\\lib;.\\lib\\plat-win" +# define PYTHONPATH L".\\DLLs;.\\lib" #endif #define NT_THREADS #define WITH_THREAD @@ -95,12 +95,6 @@ WIN32 is still required for the locale module. #endif #ifdef MS_WINCE -/* Python uses GetVersion() to distinguish between - * Windows NT and 9x/ME where OS Unicode support is concerned. - * Windows CE supports Unicode in the same way as NT so we - * define the missing GetVersion() accordingly. - */ -#define GetVersion() (4) /* Windows CE does not support environment variables */ #define getenv(v) (NULL) #define environ (NULL) @@ -324,10 +318,12 @@ Py_NO_ENABLE_SHARED to find out. Also support MS_NO_COREDLL for b/w compat */ /* So MSVC users need not specify the .lib file in their Makefile (other compilers are generally taken care of by distutils.) */ -# ifdef _DEBUG -# pragma comment(lib,"python31_d.lib") +# if defined(_DEBUG) +# pragma comment(lib,"python32_d.lib") +# elif defined(Py_LIMITED_API) +# pragma comment(lib,"python3.lib") # else -# pragma comment(lib,"python31.lib") +# pragma comment(lib,"python32.lib") # endif /* _DEBUG */ # endif /* _MSC_VER */ # endif /* Py_BUILD_CORE */ @@ -727,6 +723,9 @@ Py_NO_ENABLE_SHARED to find out. Also support MS_NO_COREDLL for b/w compat */ /* Define if the compiler provides a wchar.h header file. */ #define HAVE_WCHAR_H 1 +/* The size of `wchar_t', as computed by sizeof. */ +#define SIZEOF_WCHAR_T 2 + /* Define if you have the dl library (-ldl). */ /* #undef HAVE_LIBDL */ diff --git a/PC/python3.def b/PC/python3.def new file mode 100644 index 0000000..a845335 --- /dev/null +++ b/PC/python3.def @@ -0,0 +1,689 @@ +LIBRARY "python3" +EXPORTS + PyArg_Parse=python32.PyArg_Parse + PyArg_ParseTuple=python32.PyArg_ParseTuple + PyArg_ParseTupleAndKeywords=python32.PyArg_ParseTupleAndKeywords + PyArg_UnpackTuple=python32.PyArg_UnpackTuple + PyArg_VaParse=python32.PyArg_VaParse + PyArg_VaParseTupleAndKeywords=python32.PyArg_VaParseTupleAndKeywords + PyArg_ValidateKeywordArguments=python32.PyArg_ValidateKeywordArguments + PyBaseObject_Type=python32.PyBaseObject_Type DATA + PyBool_FromLong=python32.PyBool_FromLong + PyBool_Type=python32.PyBool_Type DATA + PyByteArrayIter_Type=python32.PyByteArrayIter_Type DATA + PyByteArray_AsString=python32.PyByteArray_AsString + PyByteArray_Concat=python32.PyByteArray_Concat + PyByteArray_FromObject=python32.PyByteArray_FromObject + PyByteArray_FromStringAndSize=python32.PyByteArray_FromStringAndSize + PyByteArray_Resize=python32.PyByteArray_Resize + PyByteArray_Size=python32.PyByteArray_Size + PyByteArray_Type=python32.PyByteArray_Type DATA + PyBytesIter_Type=python32.PyBytesIter_Type DATA + PyBytes_AsString=python32.PyBytes_AsString + PyBytes_AsStringAndSize=python32.PyBytes_AsStringAndSize + PyBytes_Concat=python32.PyBytes_Concat + PyBytes_ConcatAndDel=python32.PyBytes_ConcatAndDel + PyBytes_DecodeEscape=python32.PyBytes_DecodeEscape + PyBytes_FromFormat=python32.PyBytes_FromFormat + PyBytes_FromFormatV=python32.PyBytes_FromFormatV + PyBytes_FromObject=python32.PyBytes_FromObject + PyBytes_FromString=python32.PyBytes_FromString + PyBytes_FromStringAndSize=python32.PyBytes_FromStringAndSize + PyBytes_Repr=python32.PyBytes_Repr + PyBytes_Size=python32.PyBytes_Size + PyBytes_Type=python32.PyBytes_Type DATA + PyCFunction_Call=python32.PyCFunction_Call + PyCFunction_ClearFreeList=python32.PyCFunction_ClearFreeList + PyCFunction_GetFlags=python32.PyCFunction_GetFlags + PyCFunction_GetFunction=python32.PyCFunction_GetFunction + PyCFunction_GetSelf=python32.PyCFunction_GetSelf + PyCFunction_NewEx=python32.PyCFunction_NewEx + PyCFunction_Type=python32.PyCFunction_Type DATA + PyCallIter_New=python32.PyCallIter_New + PyCallIter_Type=python32.PyCallIter_Type DATA + PyCallable_Check=python32.PyCallable_Check + PyCapsule_GetContext=python32.PyCapsule_GetContext + PyCapsule_GetDestructor=python32.PyCapsule_GetDestructor + PyCapsule_GetName=python32.PyCapsule_GetName + PyCapsule_GetPointer=python32.PyCapsule_GetPointer + PyCapsule_Import=python32.PyCapsule_Import + PyCapsule_IsValid=python32.PyCapsule_IsValid + PyCapsule_New=python32.PyCapsule_New + PyCapsule_SetContext=python32.PyCapsule_SetContext + PyCapsule_SetDestructor=python32.PyCapsule_SetDestructor + PyCapsule_SetName=python32.PyCapsule_SetName + PyCapsule_SetPointer=python32.PyCapsule_SetPointer + PyCapsule_Type=python32.PyCapsule_Type DATA + PyClassMethodDescr_Type=python32.PyClassMethodDescr_Type DATA + PyCodec_BackslashReplaceErrors=python32.PyCodec_BackslashReplaceErrors + PyCodec_Decode=python32.PyCodec_Decode + PyCodec_Decoder=python32.PyCodec_Decoder + PyCodec_Encode=python32.PyCodec_Encode + PyCodec_Encoder=python32.PyCodec_Encoder + PyCodec_IgnoreErrors=python32.PyCodec_IgnoreErrors + PyCodec_IncrementalDecoder=python32.PyCodec_IncrementalDecoder + PyCodec_IncrementalEncoder=python32.PyCodec_IncrementalEncoder + PyCodec_KnownEncoding=python32.PyCodec_KnownEncoding + PyCodec_LookupError=python32.PyCodec_LookupError + PyCodec_Register=python32.PyCodec_Register + PyCodec_RegisterError=python32.PyCodec_RegisterError + PyCodec_ReplaceErrors=python32.PyCodec_ReplaceErrors + PyCodec_StreamReader=python32.PyCodec_StreamReader + PyCodec_StreamWriter=python32.PyCodec_StreamWriter + PyCodec_StrictErrors=python32.PyCodec_StrictErrors + PyCodec_XMLCharRefReplaceErrors=python32.PyCodec_XMLCharRefReplaceErrors + PyComplex_FromDoubles=python32.PyComplex_FromDoubles + PyComplex_ImagAsDouble=python32.PyComplex_ImagAsDouble + PyComplex_RealAsDouble=python32.PyComplex_RealAsDouble + PyComplex_Type=python32.PyComplex_Type DATA + PyDescr_NewClassMethod=python32.PyDescr_NewClassMethod + PyDescr_NewGetSet=python32.PyDescr_NewGetSet + PyDescr_NewMember=python32.PyDescr_NewMember + PyDescr_NewMethod=python32.PyDescr_NewMethod + PyDictItems_Type=python32.PyDictItems_Type DATA + PyDictIterItem_Type=python32.PyDictIterItem_Type DATA + PyDictIterKey_Type=python32.PyDictIterKey_Type DATA + PyDictIterValue_Type=python32.PyDictIterValue_Type DATA + PyDictKeys_Type=python32.PyDictKeys_Type DATA + PyDictProxy_New=python32.PyDictProxy_New + PyDictProxy_Type=python32.PyDictProxy_Type DATA + PyDictValues_Type=python32.PyDictValues_Type DATA + PyDict_Clear=python32.PyDict_Clear + PyDict_Contains=python32.PyDict_Contains + PyDict_Copy=python32.PyDict_Copy + PyDict_DelItem=python32.PyDict_DelItem + PyDict_DelItemString=python32.PyDict_DelItemString + PyDict_GetItem=python32.PyDict_GetItem + PyDict_GetItemString=python32.PyDict_GetItemString + PyDict_GetItemWithError=python32.PyDict_GetItemWithError + PyDict_Items=python32.PyDict_Items + PyDict_Keys=python32.PyDict_Keys + PyDict_Merge=python32.PyDict_Merge + PyDict_MergeFromSeq2=python32.PyDict_MergeFromSeq2 + PyDict_New=python32.PyDict_New + PyDict_Next=python32.PyDict_Next + PyDict_SetItem=python32.PyDict_SetItem + PyDict_SetItemString=python32.PyDict_SetItemString + PyDict_Size=python32.PyDict_Size + PyDict_Type=python32.PyDict_Type DATA + PyDict_Update=python32.PyDict_Update + PyDict_Values=python32.PyDict_Values + PyEllipsis_Type=python32.PyEllipsis_Type DATA + PyEnum_Type=python32.PyEnum_Type DATA + PyErr_BadArgument=python32.PyErr_BadArgument + PyErr_BadInternalCall=python32.PyErr_BadInternalCall + PyErr_CheckSignals=python32.PyErr_CheckSignals + PyErr_Clear=python32.PyErr_Clear + PyErr_Display=python32.PyErr_Display + PyErr_ExceptionMatches=python32.PyErr_ExceptionMatches + PyErr_Fetch=python32.PyErr_Fetch + PyErr_Format=python32.PyErr_Format + PyErr_GivenExceptionMatches=python32.PyErr_GivenExceptionMatches + PyErr_NewException=python32.PyErr_NewException + PyErr_NewExceptionWithDoc=python32.PyErr_NewExceptionWithDoc + PyErr_NoMemory=python32.PyErr_NoMemory + PyErr_NormalizeException=python32.PyErr_NormalizeException + PyErr_Occurred=python32.PyErr_Occurred + PyErr_Print=python32.PyErr_Print + PyErr_PrintEx=python32.PyErr_PrintEx + PyErr_ProgramText=python32.PyErr_ProgramText + PyErr_Restore=python32.PyErr_Restore + PyErr_SetFromErrno=python32.PyErr_SetFromErrno + PyErr_SetFromErrnoWithFilename=python32.PyErr_SetFromErrnoWithFilename + PyErr_SetFromErrnoWithFilenameObject=python32.PyErr_SetFromErrnoWithFilenameObject + PyErr_SetInterrupt=python32.PyErr_SetInterrupt + PyErr_SetNone=python32.PyErr_SetNone + PyErr_SetObject=python32.PyErr_SetObject + PyErr_SetString=python32.PyErr_SetString + PyErr_SyntaxLocation=python32.PyErr_SyntaxLocation + PyErr_WarnEx=python32.PyErr_WarnEx + PyErr_WarnExplicit=python32.PyErr_WarnExplicit + PyErr_WarnFormat=python32.PyErr_WarnFormat + PyErr_WriteUnraisable=python32.PyErr_WriteUnraisable + PyEval_AcquireLock=python32.PyEval_AcquireLock + PyEval_AcquireThread=python32.PyEval_AcquireThread + PyEval_CallFunction=python32.PyEval_CallFunction + PyEval_CallMethod=python32.PyEval_CallMethod + PyEval_CallObjectWithKeywords=python32.PyEval_CallObjectWithKeywords + PyEval_EvalCode=python32.PyEval_EvalCode + PyEval_EvalCodeEx=python32.PyEval_EvalCodeEx + PyEval_EvalFrame=python32.PyEval_EvalFrame + PyEval_EvalFrameEx=python32.PyEval_EvalFrameEx + PyEval_GetBuiltins=python32.PyEval_GetBuiltins + PyEval_GetCallStats=python32.PyEval_GetCallStats + PyEval_GetFrame=python32.PyEval_GetFrame + PyEval_GetFuncDesc=python32.PyEval_GetFuncDesc + PyEval_GetFuncName=python32.PyEval_GetFuncName + PyEval_GetGlobals=python32.PyEval_GetGlobals + PyEval_GetLocals=python32.PyEval_GetLocals + PyEval_InitThreads=python32.PyEval_InitThreads + PyEval_ReInitThreads=python32.PyEval_ReInitThreads + PyEval_ReleaseLock=python32.PyEval_ReleaseLock + PyEval_ReleaseThread=python32.PyEval_ReleaseThread + PyEval_RestoreThread=python32.PyEval_RestoreThread + PyEval_SaveThread=python32.PyEval_SaveThread + PyEval_ThreadsInitialized=python32.PyEval_ThreadsInitialized + PyExc_ArithmeticError=python32.PyExc_ArithmeticError DATA + PyExc_AssertionError=python32.PyExc_AssertionError DATA + PyExc_AttributeError=python32.PyExc_AttributeError DATA + PyExc_BaseException=python32.PyExc_BaseException DATA + PyExc_BufferError=python32.PyExc_BufferError DATA + PyExc_BytesWarning=python32.PyExc_BytesWarning DATA + PyExc_DeprecationWarning=python32.PyExc_DeprecationWarning DATA + PyExc_EOFError=python32.PyExc_EOFError DATA + PyExc_EnvironmentError=python32.PyExc_EnvironmentError DATA + PyExc_Exception=python32.PyExc_Exception DATA + PyExc_FloatingPointError=python32.PyExc_FloatingPointError DATA + PyExc_FutureWarning=python32.PyExc_FutureWarning DATA + PyExc_GeneratorExit=python32.PyExc_GeneratorExit DATA + PyExc_IOError=python32.PyExc_IOError DATA + PyExc_ImportError=python32.PyExc_ImportError DATA + PyExc_ImportWarning=python32.PyExc_ImportWarning DATA + PyExc_IndentationError=python32.PyExc_IndentationError DATA + PyExc_IndexError=python32.PyExc_IndexError DATA + PyExc_KeyError=python32.PyExc_KeyError DATA + PyExc_KeyboardInterrupt=python32.PyExc_KeyboardInterrupt DATA + PyExc_LookupError=python32.PyExc_LookupError DATA + PyExc_MemoryError=python32.PyExc_MemoryError DATA + PyExc_MemoryErrorInst=python32.PyExc_MemoryErrorInst DATA + PyExc_NameError=python32.PyExc_NameError DATA + PyExc_NotImplementedError=python32.PyExc_NotImplementedError DATA + PyExc_OSError=python32.PyExc_OSError DATA + PyExc_OverflowError=python32.PyExc_OverflowError DATA + PyExc_PendingDeprecationWarning=python32.PyExc_PendingDeprecationWarning DATA + PyExc_RecursionErrorInst=python32.PyExc_RecursionErrorInst DATA + PyExc_ReferenceError=python32.PyExc_ReferenceError DATA + PyExc_RuntimeError=python32.PyExc_RuntimeError DATA + PyExc_RuntimeWarning=python32.PyExc_RuntimeWarning DATA + PyExc_StopIteration=python32.PyExc_StopIteration DATA + PyExc_SyntaxError=python32.PyExc_SyntaxError DATA + PyExc_SyntaxWarning=python32.PyExc_SyntaxWarning DATA + PyExc_SystemError=python32.PyExc_SystemError DATA + PyExc_SystemExit=python32.PyExc_SystemExit DATA + PyExc_TabError=python32.PyExc_TabError DATA + PyExc_TypeError=python32.PyExc_TypeError DATA + PyExc_UnboundLocalError=python32.PyExc_UnboundLocalError DATA + PyExc_UnicodeDecodeError=python32.PyExc_UnicodeDecodeError DATA + PyExc_UnicodeEncodeError=python32.PyExc_UnicodeEncodeError DATA + PyExc_UnicodeError=python32.PyExc_UnicodeError DATA + PyExc_UnicodeTranslateError=python32.PyExc_UnicodeTranslateError DATA + PyExc_UnicodeWarning=python32.PyExc_UnicodeWarning DATA + PyExc_UserWarning=python32.PyExc_UserWarning DATA + PyExc_ValueError=python32.PyExc_ValueError DATA + PyExc_Warning=python32.PyExc_Warning DATA + PyExc_ZeroDivisionError=python32.PyExc_ZeroDivisionError DATA + PyException_GetCause=python32.PyException_GetCause + PyException_GetContext=python32.PyException_GetContext + PyException_GetTraceback=python32.PyException_GetTraceback + PyException_SetCause=python32.PyException_SetCause + PyException_SetContext=python32.PyException_SetContext + PyException_SetTraceback=python32.PyException_SetTraceback + PyFile_FromFd=python32.PyFile_FromFd + PyFile_GetLine=python32.PyFile_GetLine + PyFile_WriteObject=python32.PyFile_WriteObject + PyFile_WriteString=python32.PyFile_WriteString + PyFilter_Type=python32.PyFilter_Type DATA + PyFloat_AsDouble=python32.PyFloat_AsDouble + PyFloat_FromDouble=python32.PyFloat_FromDouble + PyFloat_FromString=python32.PyFloat_FromString + PyFloat_GetInfo=python32.PyFloat_GetInfo + PyFloat_GetMax=python32.PyFloat_GetMax + PyFloat_GetMin=python32.PyFloat_GetMin + PyFloat_Type=python32.PyFloat_Type DATA + PyFrozenSet_New=python32.PyFrozenSet_New + PyFrozenSet_Type=python32.PyFrozenSet_Type DATA + PyGC_Collect=python32.PyGC_Collect + PyGILState_Ensure=python32.PyGILState_Ensure + PyGILState_GetThisThreadState=python32.PyGILState_GetThisThreadState + PyGILState_Release=python32.PyGILState_Release + PyGetSetDescr_Type=python32.PyGetSetDescr_Type DATA + PyImport_AddModule=python32.PyImport_AddModule + PyImport_AppendInittab=python32.PyImport_AppendInittab + PyImport_Cleanup=python32.PyImport_Cleanup + PyImport_ExecCodeModule=python32.PyImport_ExecCodeModule + PyImport_ExecCodeModuleEx=python32.PyImport_ExecCodeModuleEx + PyImport_ExecCodeModuleWithPathnames=python32.PyImport_ExecCodeModuleWithPathnames + PyImport_GetImporter=python32.PyImport_GetImporter + PyImport_GetMagicNumber=python32.PyImport_GetMagicNumber + PyImport_GetMagicTag=python32.PyImport_GetMagicTag + PyImport_GetModuleDict=python32.PyImport_GetModuleDict + PyImport_Import=python32.PyImport_Import + PyImport_ImportFrozenModule=python32.PyImport_ImportFrozenModule + PyImport_ImportModule=python32.PyImport_ImportModule + PyImport_ImportModuleLevel=python32.PyImport_ImportModuleLevel + PyImport_ImportModuleNoBlock=python32.PyImport_ImportModuleNoBlock + PyImport_ReloadModule=python32.PyImport_ReloadModule + PyInterpreterState_Clear=python32.PyInterpreterState_Clear + PyInterpreterState_Delete=python32.PyInterpreterState_Delete + PyInterpreterState_New=python32.PyInterpreterState_New + PyIter_Next=python32.PyIter_Next + PyListIter_Type=python32.PyListIter_Type DATA + PyListRevIter_Type=python32.PyListRevIter_Type DATA + PyList_Append=python32.PyList_Append + PyList_AsTuple=python32.PyList_AsTuple + PyList_GetItem=python32.PyList_GetItem + PyList_GetSlice=python32.PyList_GetSlice + PyList_Insert=python32.PyList_Insert + PyList_New=python32.PyList_New + PyList_Reverse=python32.PyList_Reverse + PyList_SetItem=python32.PyList_SetItem + PyList_SetSlice=python32.PyList_SetSlice + PyList_Size=python32.PyList_Size + PyList_Sort=python32.PyList_Sort + PyList_Type=python32.PyList_Type DATA + PyLongRangeIter_Type=python32.PyLongRangeIter_Type DATA + PyLong_AsDouble=python32.PyLong_AsDouble + PyLong_AsLong=python32.PyLong_AsLong + PyLong_AsLongAndOverflow=python32.PyLong_AsLongAndOverflow + PyLong_AsLongLong=python32.PyLong_AsLongLong + PyLong_AsLongLongAndOverflow=python32.PyLong_AsLongLongAndOverflow + PyLong_AsSize_t=python32.PyLong_AsSize_t + PyLong_AsSsize_t=python32.PyLong_AsSsize_t + PyLong_AsUnsignedLong=python32.PyLong_AsUnsignedLong + PyLong_AsUnsignedLongLong=python32.PyLong_AsUnsignedLongLong + PyLong_AsUnsignedLongLongMask=python32.PyLong_AsUnsignedLongLongMask + PyLong_AsUnsignedLongMask=python32.PyLong_AsUnsignedLongMask + PyLong_AsVoidPtr=python32.PyLong_AsVoidPtr + PyLong_FromDouble=python32.PyLong_FromDouble + PyLong_FromLong=python32.PyLong_FromLong + PyLong_FromLongLong=python32.PyLong_FromLongLong + PyLong_FromSize_t=python32.PyLong_FromSize_t + PyLong_FromSsize_t=python32.PyLong_FromSsize_t + PyLong_FromString=python32.PyLong_FromString + PyLong_FromUnsignedLong=python32.PyLong_FromUnsignedLong + PyLong_FromUnsignedLongLong=python32.PyLong_FromUnsignedLongLong + PyLong_FromVoidPtr=python32.PyLong_FromVoidPtr + PyLong_GetInfo=python32.PyLong_GetInfo + PyLong_Type=python32.PyLong_Type DATA + PyMap_Type=python32.PyMap_Type DATA + PyMapping_Check=python32.PyMapping_Check + PyMapping_GetItemString=python32.PyMapping_GetItemString + PyMapping_HasKey=python32.PyMapping_HasKey + PyMapping_HasKeyString=python32.PyMapping_HasKeyString + PyMapping_Items=python32.PyMapping_Items + PyMapping_Keys=python32.PyMapping_Keys + PyMapping_Length=python32.PyMapping_Length + PyMapping_SetItemString=python32.PyMapping_SetItemString + PyMapping_Size=python32.PyMapping_Size + PyMapping_Values=python32.PyMapping_Values + PyMem_Free=python32.PyMem_Free + PyMem_Malloc=python32.PyMem_Malloc + PyMem_Realloc=python32.PyMem_Realloc + PyMemberDescr_Type=python32.PyMemberDescr_Type DATA + PyMemoryView_FromObject=python32.PyMemoryView_FromObject + PyMemoryView_GetContiguous=python32.PyMemoryView_GetContiguous + PyMemoryView_Type=python32.PyMemoryView_Type DATA + PyMethodDescr_Type=python32.PyMethodDescr_Type DATA + PyModule_AddIntConstant=python32.PyModule_AddIntConstant + PyModule_AddObject=python32.PyModule_AddObject + PyModule_AddStringConstant=python32.PyModule_AddStringConstant + PyModule_Create2=python32.PyModule_Create2 + PyModule_GetDef=python32.PyModule_GetDef + PyModule_GetDict=python32.PyModule_GetDict + PyModule_GetFilename=python32.PyModule_GetFilename + PyModule_GetFilenameObject=python32.PyModule_GetFilenameObject + PyModule_GetName=python32.PyModule_GetName + PyModule_GetState=python32.PyModule_GetState + PyModule_New=python32.PyModule_New + PyModule_Type=python32.PyModule_Type DATA + PyNullImporter_Type=python32.PyNullImporter_Type DATA + PyNumber_Absolute=python32.PyNumber_Absolute + PyNumber_Add=python32.PyNumber_Add + PyNumber_And=python32.PyNumber_And + PyNumber_AsSsize_t=python32.PyNumber_AsSsize_t + PyNumber_Check=python32.PyNumber_Check + PyNumber_Divmod=python32.PyNumber_Divmod + PyNumber_Float=python32.PyNumber_Float + PyNumber_FloorDivide=python32.PyNumber_FloorDivide + PyNumber_InPlaceAdd=python32.PyNumber_InPlaceAdd + PyNumber_InPlaceAnd=python32.PyNumber_InPlaceAnd + PyNumber_InPlaceFloorDivide=python32.PyNumber_InPlaceFloorDivide + PyNumber_InPlaceLshift=python32.PyNumber_InPlaceLshift + PyNumber_InPlaceMultiply=python32.PyNumber_InPlaceMultiply + PyNumber_InPlaceOr=python32.PyNumber_InPlaceOr + PyNumber_InPlacePower=python32.PyNumber_InPlacePower + PyNumber_InPlaceRemainder=python32.PyNumber_InPlaceRemainder + PyNumber_InPlaceRshift=python32.PyNumber_InPlaceRshift + PyNumber_InPlaceSubtract=python32.PyNumber_InPlaceSubtract + PyNumber_InPlaceTrueDivide=python32.PyNumber_InPlaceTrueDivide + PyNumber_InPlaceXor=python32.PyNumber_InPlaceXor + PyNumber_Index=python32.PyNumber_Index + PyNumber_Invert=python32.PyNumber_Invert + PyNumber_Long=python32.PyNumber_Long + PyNumber_Lshift=python32.PyNumber_Lshift + PyNumber_Multiply=python32.PyNumber_Multiply + PyNumber_Negative=python32.PyNumber_Negative + PyNumber_Or=python32.PyNumber_Or + PyNumber_Positive=python32.PyNumber_Positive + PyNumber_Power=python32.PyNumber_Power + PyNumber_Remainder=python32.PyNumber_Remainder + PyNumber_Rshift=python32.PyNumber_Rshift + PyNumber_Subtract=python32.PyNumber_Subtract + PyNumber_ToBase=python32.PyNumber_ToBase + PyNumber_TrueDivide=python32.PyNumber_TrueDivide + PyNumber_Xor=python32.PyNumber_Xor + PyOS_AfterFork=python32.PyOS_AfterFork + PyOS_InitInterrupts=python32.PyOS_InitInterrupts + PyOS_InputHook=python32.PyOS_InputHook DATA + PyOS_InterruptOccurred=python32.PyOS_InterruptOccurred + PyOS_ReadlineFunctionPointer=python32.PyOS_ReadlineFunctionPointer DATA + PyOS_double_to_string=python32.PyOS_double_to_string + PyOS_getsig=python32.PyOS_getsig + PyOS_mystricmp=python32.PyOS_mystricmp + PyOS_mystrnicmp=python32.PyOS_mystrnicmp + PyOS_setsig=python32.PyOS_setsig + PyOS_snprintf=python32.PyOS_snprintf + PyOS_string_to_double=python32.PyOS_string_to_double + PyOS_strtol=python32.PyOS_strtol + PyOS_strtoul=python32.PyOS_strtoul + PyOS_vsnprintf=python32.PyOS_vsnprintf + PyObject_ASCII=python32.PyObject_ASCII + PyObject_AsCharBuffer=python32.PyObject_AsCharBuffer + PyObject_AsFileDescriptor=python32.PyObject_AsFileDescriptor + PyObject_AsReadBuffer=python32.PyObject_AsReadBuffer + PyObject_AsWriteBuffer=python32.PyObject_AsWriteBuffer + PyObject_Bytes=python32.PyObject_Bytes + PyObject_Call=python32.PyObject_Call + PyObject_CallFunction=python32.PyObject_CallFunction + PyObject_CallFunctionObjArgs=python32.PyObject_CallFunctionObjArgs + PyObject_CallMethod=python32.PyObject_CallMethod + PyObject_CallMethodObjArgs=python32.PyObject_CallMethodObjArgs + PyObject_CallObject=python32.PyObject_CallObject + PyObject_CheckReadBuffer=python32.PyObject_CheckReadBuffer + PyObject_ClearWeakRefs=python32.PyObject_ClearWeakRefs + PyObject_DelItem=python32.PyObject_DelItem + PyObject_DelItemString=python32.PyObject_DelItemString + PyObject_Dir=python32.PyObject_Dir + PyObject_Format=python32.PyObject_Format + PyObject_Free=python32.PyObject_Free + PyObject_GC_Del=python32.PyObject_GC_Del + PyObject_GC_Track=python32.PyObject_GC_Track + PyObject_GC_UnTrack=python32.PyObject_GC_UnTrack + PyObject_GenericGetAttr=python32.PyObject_GenericGetAttr + PyObject_GenericSetAttr=python32.PyObject_GenericSetAttr + PyObject_GetAttr=python32.PyObject_GetAttr + PyObject_GetAttrString=python32.PyObject_GetAttrString + PyObject_GetItem=python32.PyObject_GetItem + PyObject_GetIter=python32.PyObject_GetIter + PyObject_HasAttr=python32.PyObject_HasAttr + PyObject_HasAttrString=python32.PyObject_HasAttrString + PyObject_Hash=python32.PyObject_Hash + PyObject_HashNotImplemented=python32.PyObject_HashNotImplemented + PyObject_Init=python32.PyObject_Init + PyObject_InitVar=python32.PyObject_InitVar + PyObject_IsInstance=python32.PyObject_IsInstance + PyObject_IsSubclass=python32.PyObject_IsSubclass + PyObject_IsTrue=python32.PyObject_IsTrue + PyObject_Length=python32.PyObject_Length + PyObject_Malloc=python32.PyObject_Malloc + PyObject_Not=python32.PyObject_Not + PyObject_Realloc=python32.PyObject_Realloc + PyObject_Repr=python32.PyObject_Repr + PyObject_RichCompare=python32.PyObject_RichCompare + PyObject_RichCompareBool=python32.PyObject_RichCompareBool + PyObject_SelfIter=python32.PyObject_SelfIter + PyObject_SetAttr=python32.PyObject_SetAttr + PyObject_SetAttrString=python32.PyObject_SetAttrString + PyObject_SetItem=python32.PyObject_SetItem + PyObject_Size=python32.PyObject_Size + PyObject_Str=python32.PyObject_Str + PyObject_Type=python32.PyObject_Type DATA + PyParser_SimpleParseFileFlags=python32.PyParser_SimpleParseFileFlags + PyParser_SimpleParseStringFlags=python32.PyParser_SimpleParseStringFlags + PyProperty_Type=python32.PyProperty_Type DATA + PyRangeIter_Type=python32.PyRangeIter_Type DATA + PyRange_Type=python32.PyRange_Type DATA + PyReversed_Type=python32.PyReversed_Type DATA + PySeqIter_New=python32.PySeqIter_New + PySeqIter_Type=python32.PySeqIter_Type DATA + PySequence_Check=python32.PySequence_Check + PySequence_Concat=python32.PySequence_Concat + PySequence_Contains=python32.PySequence_Contains + PySequence_Count=python32.PySequence_Count + PySequence_DelItem=python32.PySequence_DelItem + PySequence_DelSlice=python32.PySequence_DelSlice + PySequence_Fast=python32.PySequence_Fast + PySequence_GetItem=python32.PySequence_GetItem + PySequence_GetSlice=python32.PySequence_GetSlice + PySequence_In=python32.PySequence_In + PySequence_InPlaceConcat=python32.PySequence_InPlaceConcat + PySequence_InPlaceRepeat=python32.PySequence_InPlaceRepeat + PySequence_Index=python32.PySequence_Index + PySequence_Length=python32.PySequence_Length + PySequence_List=python32.PySequence_List + PySequence_Repeat=python32.PySequence_Repeat + PySequence_SetItem=python32.PySequence_SetItem + PySequence_SetSlice=python32.PySequence_SetSlice + PySequence_Size=python32.PySequence_Size + PySequence_Tuple=python32.PySequence_Tuple + PySetIter_Type=python32.PySetIter_Type DATA + PySet_Add=python32.PySet_Add + PySet_Clear=python32.PySet_Clear + PySet_Contains=python32.PySet_Contains + PySet_Discard=python32.PySet_Discard + PySet_New=python32.PySet_New + PySet_Pop=python32.PySet_Pop + PySet_Size=python32.PySet_Size + PySet_Type=python32.PySet_Type DATA + PySlice_GetIndices=python32.PySlice_GetIndices + PySlice_GetIndicesEx=python32.PySlice_GetIndicesEx + PySlice_New=python32.PySlice_New + PySlice_Type=python32.PySlice_Type DATA + PySortWrapper_Type=python32.PySortWrapper_Type DATA + PyState_FindModule=python32.PyState_FindModule + PyStructSequence_GetItem=python32.PyStructSequence_GetItem + PyStructSequence_New=python32.PyStructSequence_New + PyStructSequence_NewType=python32.PyStructSequence_NewType + PyStructSequence_SetItem=python32.PyStructSequence_SetItem + PySuper_Type=python32.PySuper_Type DATA + PySys_AddWarnOption=python32.PySys_AddWarnOption + PySys_AddWarnOptionUnicode=python32.PySys_AddWarnOptionUnicode + PySys_FormatStderr=python32.PySys_FormatStderr + PySys_FormatStdout=python32.PySys_FormatStdout + PySys_GetObject=python32.PySys_GetObject + PySys_HasWarnOptions=python32.PySys_HasWarnOptions + PySys_ResetWarnOptions=python32.PySys_ResetWarnOptions + PySys_SetArgv=python32.PySys_SetArgv + PySys_SetArgvEx=python32.PySys_SetArgvEx + PySys_SetObject=python32.PySys_SetObject + PySys_SetPath=python32.PySys_SetPath + PySys_WriteStderr=python32.PySys_WriteStderr + PySys_WriteStdout=python32.PySys_WriteStdout + PyThreadState_Clear=python32.PyThreadState_Clear + PyThreadState_Delete=python32.PyThreadState_Delete + PyThreadState_DeleteCurrent=python32.PyThreadState_DeleteCurrent + PyThreadState_Get=python32.PyThreadState_Get + PyThreadState_GetDict=python32.PyThreadState_GetDict + PyThreadState_New=python32.PyThreadState_New + PyThreadState_SetAsyncExc=python32.PyThreadState_SetAsyncExc + PyThreadState_Swap=python32.PyThreadState_Swap + PyTraceBack_Here=python32.PyTraceBack_Here + PyTraceBack_Print=python32.PyTraceBack_Print + PyTraceBack_Type=python32.PyTraceBack_Type DATA + PyTupleIter_Type=python32.PyTupleIter_Type DATA + PyTuple_ClearFreeList=python32.PyTuple_ClearFreeList + PyTuple_GetItem=python32.PyTuple_GetItem + PyTuple_GetSlice=python32.PyTuple_GetSlice + PyTuple_New=python32.PyTuple_New + PyTuple_Pack=python32.PyTuple_Pack + PyTuple_SetItem=python32.PyTuple_SetItem + PyTuple_Size=python32.PyTuple_Size + PyTuple_Type=python32.PyTuple_Type DATA + PyType_ClearCache=python32.PyType_ClearCache + PyType_FromSpec=python32.PyType_FromSpec + PyType_GenericAlloc=python32.PyType_GenericAlloc + PyType_GenericNew=python32.PyType_GenericNew + PyType_GetFlags=python32.PyType_GetFlags + PyType_IsSubtype=python32.PyType_IsSubtype + PyType_Modified=python32.PyType_Modified + PyType_Ready=python32.PyType_Ready + PyType_Type=python32.PyType_Type DATA + PyUnicodeDecodeError_Create=python32.PyUnicodeDecodeError_Create + PyUnicodeDecodeError_GetEncoding=python32.PyUnicodeDecodeError_GetEncoding + PyUnicodeDecodeError_GetEnd=python32.PyUnicodeDecodeError_GetEnd + PyUnicodeDecodeError_GetObject=python32.PyUnicodeDecodeError_GetObject + PyUnicodeDecodeError_GetReason=python32.PyUnicodeDecodeError_GetReason + PyUnicodeDecodeError_GetStart=python32.PyUnicodeDecodeError_GetStart + PyUnicodeDecodeError_SetEnd=python32.PyUnicodeDecodeError_SetEnd + PyUnicodeDecodeError_SetReason=python32.PyUnicodeDecodeError_SetReason + PyUnicodeDecodeError_SetStart=python32.PyUnicodeDecodeError_SetStart + PyUnicodeEncodeError_GetEncoding=python32.PyUnicodeEncodeError_GetEncoding + PyUnicodeEncodeError_GetEnd=python32.PyUnicodeEncodeError_GetEnd + PyUnicodeEncodeError_GetObject=python32.PyUnicodeEncodeError_GetObject + PyUnicodeEncodeError_GetReason=python32.PyUnicodeEncodeError_GetReason + PyUnicodeEncodeError_GetStart=python32.PyUnicodeEncodeError_GetStart + PyUnicodeEncodeError_SetEnd=python32.PyUnicodeEncodeError_SetEnd + PyUnicodeEncodeError_SetReason=python32.PyUnicodeEncodeError_SetReason + PyUnicodeEncodeError_SetStart=python32.PyUnicodeEncodeError_SetStart + PyUnicodeIter_Type=python32.PyUnicodeIter_Type DATA + PyUnicodeTranslateError_GetEnd=python32.PyUnicodeTranslateError_GetEnd + PyUnicodeTranslateError_GetObject=python32.PyUnicodeTranslateError_GetObject + PyUnicodeTranslateError_GetReason=python32.PyUnicodeTranslateError_GetReason + PyUnicodeTranslateError_GetStart=python32.PyUnicodeTranslateError_GetStart + PyUnicodeTranslateError_SetEnd=python32.PyUnicodeTranslateError_SetEnd + PyUnicodeTranslateError_SetReason=python32.PyUnicodeTranslateError_SetReason + PyUnicodeTranslateError_SetStart=python32.PyUnicodeTranslateError_SetStart + PyUnicode_Append=python32.PyUnicodeUCS2_Append + PyUnicode_AppendAndDel=python32.PyUnicodeUCS2_AppendAndDel + PyUnicode_AsASCIIString=python32.PyUnicodeUCS2_AsASCIIString + PyUnicode_AsCharmapString=python32.PyUnicodeUCS2_AsCharmapString + PyUnicode_AsDecodedObject=python32.PyUnicodeUCS2_AsDecodedObject + PyUnicode_AsDecodedUnicode=python32.PyUnicodeUCS2_AsDecodedUnicode + PyUnicode_AsEncodedObject=python32.PyUnicodeUCS2_AsEncodedObject + PyUnicode_AsEncodedString=python32.PyUnicodeUCS2_AsEncodedString + PyUnicode_AsEncodedUnicode=python32.PyUnicodeUCS2_AsEncodedUnicode + PyUnicode_AsLatin1String=python32.PyUnicodeUCS2_AsLatin1String + PyUnicode_AsRawUnicodeEscapeString=python32.PyUnicodeUCS2_AsRawUnicodeEscapeString + PyUnicode_AsUTF16String=python32.PyUnicodeUCS2_AsUTF16String + PyUnicode_AsUTF32String=python32.PyUnicodeUCS2_AsUTF32String + PyUnicode_AsUTF8String=python32.PyUnicodeUCS2_AsUTF8String + PyUnicode_AsUnicodeEscapeString=python32.PyUnicodeUCS2_AsUnicodeEscapeString + PyUnicode_AsWideChar=python32.PyUnicodeUCS2_AsWideChar + PyUnicode_ClearFreelist=python32.PyUnicodeUCS2_ClearFreelist + PyUnicode_Compare=python32.PyUnicodeUCS2_Compare + PyUnicode_Concat=python32.PyUnicodeUCS2_Concat + PyUnicode_Contains=python32.PyUnicodeUCS2_Contains + PyUnicode_Count=python32.PyUnicodeUCS2_Count + PyUnicode_Decode=python32.PyUnicodeUCS2_Decode + PyUnicode_DecodeASCII=python32.PyUnicodeUCS2_DecodeASCII + PyUnicode_DecodeCharmap=python32.PyUnicodeUCS2_DecodeCharmap + PyUnicode_DecodeFSDefault=python32.PyUnicodeUCS2_DecodeFSDefault + PyUnicode_DecodeFSDefaultAndSize=python32.PyUnicodeUCS2_DecodeFSDefaultAndSize + PyUnicode_DecodeLatin1=python32.PyUnicodeUCS2_DecodeLatin1 + PyUnicode_DecodeRawUnicodeEscape=python32.PyUnicodeUCS2_DecodeRawUnicodeEscape + PyUnicode_DecodeUTF16=python32.PyUnicodeUCS2_DecodeUTF16 + PyUnicode_DecodeUTF16Stateful=python32.PyUnicodeUCS2_DecodeUTF16Stateful + PyUnicode_DecodeUTF32=python32.PyUnicodeUCS2_DecodeUTF32 + PyUnicode_DecodeUTF32Stateful=python32.PyUnicodeUCS2_DecodeUTF32Stateful + PyUnicode_DecodeUTF8=python32.PyUnicodeUCS2_DecodeUTF8 + PyUnicode_DecodeUTF8Stateful=python32.PyUnicodeUCS2_DecodeUTF8Stateful + PyUnicode_DecodeUnicodeEscape=python32.PyUnicodeUCS2_DecodeUnicodeEscape + PyUnicode_FSConverter=python32.PyUnicodeUCS2_FSConverter + PyUnicode_FSDecoder=python32.PyUnicodeUCS2_FSDecoder + PyUnicode_Find=python32.PyUnicodeUCS2_Find + PyUnicode_Format=python32.PyUnicodeUCS2_Format + PyUnicode_FromEncodedObject=python32.PyUnicodeUCS2_FromEncodedObject + PyUnicode_FromFormat=python32.PyUnicodeUCS2_FromFormat + PyUnicode_FromFormatV=python32.PyUnicodeUCS2_FromFormatV + PyUnicode_FromObject=python32.PyUnicodeUCS2_FromObject + PyUnicode_FromOrdinal=python32.PyUnicodeUCS2_FromOrdinal + PyUnicode_FromString=python32.PyUnicodeUCS2_FromString + PyUnicode_FromStringAndSize=python32.PyUnicodeUCS2_FromStringAndSize + PyUnicode_FromWideChar=python32.PyUnicodeUCS2_FromWideChar + PyUnicode_GetDefaultEncoding=python32.PyUnicodeUCS2_GetDefaultEncoding + PyUnicode_GetSize=python32.PyUnicodeUCS2_GetSize + PyUnicode_IsIdentifier=python32.PyUnicodeUCS2_IsIdentifier + PyUnicode_Join=python32.PyUnicodeUCS2_Join + PyUnicode_Partition=python32.PyUnicodeUCS2_Partition + PyUnicode_RPartition=python32.PyUnicodeUCS2_RPartition + PyUnicode_RSplit=python32.PyUnicodeUCS2_RSplit + PyUnicode_Replace=python32.PyUnicodeUCS2_Replace + PyUnicode_Resize=python32.PyUnicodeUCS2_Resize + PyUnicode_RichCompare=python32.PyUnicodeUCS2_RichCompare + PyUnicode_SetDefaultEncoding=python32.PyUnicodeUCS2_SetDefaultEncoding + PyUnicode_Split=python32.PyUnicodeUCS2_Split + PyUnicode_Splitlines=python32.PyUnicodeUCS2_Splitlines + PyUnicode_Tailmatch=python32.PyUnicodeUCS2_Tailmatch + PyUnicode_Translate=python32.PyUnicodeUCS2_Translate + PyUnicode_BuildEncodingMap=python32.PyUnicode_BuildEncodingMap + PyUnicode_CompareWithASCIIString=python32.PyUnicode_CompareWithASCIIString + PyUnicode_DecodeUTF7=python32.PyUnicode_DecodeUTF7 + PyUnicode_DecodeUTF7Stateful=python32.PyUnicode_DecodeUTF7Stateful + PyUnicode_EncodeFSDefault=python32.PyUnicode_EncodeFSDefault + PyUnicode_InternFromString=python32.PyUnicode_InternFromString + PyUnicode_InternImmortal=python32.PyUnicode_InternImmortal + PyUnicode_InternInPlace=python32.PyUnicode_InternInPlace + PyUnicode_Type=python32.PyUnicode_Type DATA + PyWeakref_GetObject=python32.PyWeakref_GetObject DATA + PyWeakref_NewProxy=python32.PyWeakref_NewProxy + PyWeakref_NewRef=python32.PyWeakref_NewRef + PyWrapperDescr_Type=python32.PyWrapperDescr_Type DATA + PyWrapper_New=python32.PyWrapper_New + PyZip_Type=python32.PyZip_Type DATA + Py_AddPendingCall=python32.Py_AddPendingCall + Py_AtExit=python32.Py_AtExit + Py_BuildValue=python32.Py_BuildValue + Py_CompileString=python32.Py_CompileString + Py_DecRef=python32.Py_DecRef + Py_EndInterpreter=python32.Py_EndInterpreter + Py_Exit=python32.Py_Exit + Py_FatalError=python32.Py_FatalError + Py_FileSystemDefaultEncoding=python32.Py_FileSystemDefaultEncoding DATA + Py_Finalize=python32.Py_Finalize + Py_GetBuildInfo=python32.Py_GetBuildInfo + Py_GetCompiler=python32.Py_GetCompiler + Py_GetCopyright=python32.Py_GetCopyright + Py_GetExecPrefix=python32.Py_GetExecPrefix + Py_GetPath=python32.Py_GetPath + Py_GetPlatform=python32.Py_GetPlatform + Py_GetPrefix=python32.Py_GetPrefix + Py_GetProgramFullPath=python32.Py_GetProgramFullPath + Py_GetProgramName=python32.Py_GetProgramName + Py_GetPythonHome=python32.Py_GetPythonHome + Py_GetRecursionLimit=python32.Py_GetRecursionLimit + Py_GetVersion=python32.Py_GetVersion + Py_HasFileSystemDefaultEncoding=python32.Py_HasFileSystemDefaultEncoding DATA + Py_IncRef=python32.Py_IncRef + Py_Initialize=python32.Py_Initialize + Py_InitializeEx=python32.Py_InitializeEx + Py_IsInitialized=python32.Py_IsInitialized + Py_Main=python32.Py_Main + Py_MakePendingCalls=python32.Py_MakePendingCalls + Py_NewInterpreter=python32.Py_NewInterpreter + Py_ReprEnter=python32.Py_ReprEnter + Py_ReprLeave=python32.Py_ReprLeave + Py_SetProgramName=python32.Py_SetProgramName + Py_SetPythonHome=python32.Py_SetPythonHome + Py_SetRecursionLimit=python32.Py_SetRecursionLimit + Py_SymtableString=python32.Py_SymtableString + Py_VaBuildValue=python32.Py_VaBuildValue + _PyErr_BadInternalCall=python32._PyErr_BadInternalCall + _PyObject_CallFunction_SizeT=python32._PyObject_CallFunction_SizeT + _PyObject_CallMethod_SizeT=python32._PyObject_CallMethod_SizeT + _PyObject_GC_Malloc=python32._PyObject_GC_Malloc + _PyObject_GC_New=python32._PyObject_GC_New + _PyObject_GC_NewVar=python32._PyObject_GC_NewVar + _PyObject_GC_Resize=python32._PyObject_GC_Resize + _PyObject_New=python32._PyObject_New + _PyObject_NewVar=python32._PyObject_NewVar + _PyState_AddModule=python32._PyState_AddModule + _PyThreadState_Init=python32._PyThreadState_Init + _PyThreadState_Prealloc=python32._PyThreadState_Prealloc + _PyTrash_delete_later=python32._PyTrash_delete_later DATA + _PyTrash_delete_nesting=python32._PyTrash_delete_nesting DATA + _PyTrash_deposit_object=python32._PyTrash_deposit_object + _PyTrash_destroy_chain=python32._PyTrash_destroy_chain + _PyWeakref_CallableProxyType=python32._PyWeakref_CallableProxyType DATA + _PyWeakref_ProxyType=python32._PyWeakref_ProxyType DATA + _PyWeakref_RefType=python32._PyWeakref_RefType DATA + _Py_BuildValue_SizeT=python32._Py_BuildValue_SizeT + _Py_CheckRecursionLimit=python32._Py_CheckRecursionLimit DATA + _Py_CheckRecursiveCall=python32._Py_CheckRecursiveCall + _Py_Dealloc=python32._Py_Dealloc + _Py_EllipsisObject=python32._Py_EllipsisObject DATA + _Py_FalseStruct=python32._Py_FalseStruct DATA + _Py_NoneStruct=python32._Py_NoneStruct DATA + _Py_NotImplementedStruct=python32._Py_NotImplementedStruct DATA + _Py_SwappedOp=python32._Py_SwappedOp DATA + _Py_TrueStruct=python32._Py_TrueStruct DATA + _Py_VaBuildValue_SizeT=python32._Py_VaBuildValue_SizeT diff --git a/PC/python3.mak b/PC/python3.mak new file mode 100644 index 0000000..256167f --- /dev/null +++ b/PC/python3.mak @@ -0,0 +1,10 @@ +$(OutDir)python32.dll: python3.def $(OutDir)python32stub.lib + cl /LD /Fe$(OutDir)python3.dll python3dll.c python3.def $(OutDir)python32stub.lib + +$(OutDir)python32stub.lib: python32stub.def + lib /def:python32stub.def /out:$(OutDir)python32stub.lib /MACHINE:$(MACHINE) + +clean: + del $(OutDir)python3.dll $(OutDir)python3.lib $(OutDir)python32stub.lib $(OutDir)python3.exp $(OutDir)python32stub.exp + +rebuild: clean $(OutDir)python32.dll diff --git a/PC/python32gen.py b/PC/python32gen.py new file mode 100644 index 0000000..9182d54 --- /dev/null +++ b/PC/python32gen.py @@ -0,0 +1,25 @@ +# Generate python32stub.def out of python3.def +# The regular import library cannot be used, +# since it doesn't provide the right symbols for +# data forwarding +out = open("python32stub.def", "w") +out.write('LIBRARY "python32"\n') +out.write('EXPORTS\n') + +inp = open("python3.def") +inp.readline() +line = inp.readline() +assert line.strip()=='EXPORTS' + +for line in inp: + # SYM1=python32.SYM2[ DATA] + head, tail = line.split('.') + if 'DATA' in tail: + symbol, tail = tail.split(' ') + else: + symbol = tail.strip() + out.write(symbol+'\n') + +inp.close() +out.close() + diff --git a/PC/python32stub.def b/PC/python32stub.def new file mode 100644 index 0000000..0943ef0 --- /dev/null +++ b/PC/python32stub.def @@ -0,0 +1,689 @@ +LIBRARY "python32" +EXPORTS +PyArg_Parse +PyArg_ParseTuple +PyArg_ParseTupleAndKeywords +PyArg_UnpackTuple +PyArg_VaParse +PyArg_VaParseTupleAndKeywords +PyArg_ValidateKeywordArguments +PyBaseObject_Type +PyBool_FromLong +PyBool_Type +PyByteArrayIter_Type +PyByteArray_AsString +PyByteArray_Concat +PyByteArray_FromObject +PyByteArray_FromStringAndSize +PyByteArray_Resize +PyByteArray_Size +PyByteArray_Type +PyBytesIter_Type +PyBytes_AsString +PyBytes_AsStringAndSize +PyBytes_Concat +PyBytes_ConcatAndDel +PyBytes_DecodeEscape +PyBytes_FromFormat +PyBytes_FromFormatV +PyBytes_FromObject +PyBytes_FromString +PyBytes_FromStringAndSize +PyBytes_Repr +PyBytes_Size +PyBytes_Type +PyCFunction_Call +PyCFunction_ClearFreeList +PyCFunction_GetFlags +PyCFunction_GetFunction +PyCFunction_GetSelf +PyCFunction_NewEx +PyCFunction_Type +PyCallIter_New +PyCallIter_Type +PyCallable_Check +PyCapsule_GetContext +PyCapsule_GetDestructor +PyCapsule_GetName +PyCapsule_GetPointer +PyCapsule_Import +PyCapsule_IsValid +PyCapsule_New +PyCapsule_SetContext +PyCapsule_SetDestructor +PyCapsule_SetName +PyCapsule_SetPointer +PyCapsule_Type +PyClassMethodDescr_Type +PyCodec_BackslashReplaceErrors +PyCodec_Decode +PyCodec_Decoder +PyCodec_Encode +PyCodec_Encoder +PyCodec_IgnoreErrors +PyCodec_IncrementalDecoder +PyCodec_IncrementalEncoder +PyCodec_KnownEncoding +PyCodec_LookupError +PyCodec_Register +PyCodec_RegisterError +PyCodec_ReplaceErrors +PyCodec_StreamReader +PyCodec_StreamWriter +PyCodec_StrictErrors +PyCodec_XMLCharRefReplaceErrors +PyComplex_FromDoubles +PyComplex_ImagAsDouble +PyComplex_RealAsDouble +PyComplex_Type +PyDescr_NewClassMethod +PyDescr_NewGetSet +PyDescr_NewMember +PyDescr_NewMethod +PyDictItems_Type +PyDictIterItem_Type +PyDictIterKey_Type +PyDictIterValue_Type +PyDictKeys_Type +PyDictProxy_New +PyDictProxy_Type +PyDictValues_Type +PyDict_Clear +PyDict_Contains +PyDict_Copy +PyDict_DelItem +PyDict_DelItemString +PyDict_GetItem +PyDict_GetItemString +PyDict_GetItemWithError +PyDict_Items +PyDict_Keys +PyDict_Merge +PyDict_MergeFromSeq2 +PyDict_New +PyDict_Next +PyDict_SetItem +PyDict_SetItemString +PyDict_Size +PyDict_Type +PyDict_Update +PyDict_Values +PyEllipsis_Type +PyEnum_Type +PyErr_BadArgument +PyErr_BadInternalCall +PyErr_CheckSignals +PyErr_Clear +PyErr_Display +PyErr_ExceptionMatches +PyErr_Fetch +PyErr_Format +PyErr_GivenExceptionMatches +PyErr_NewException +PyErr_NewExceptionWithDoc +PyErr_NoMemory +PyErr_NormalizeException +PyErr_Occurred +PyErr_Print +PyErr_PrintEx +PyErr_ProgramText +PyErr_Restore +PyErr_SetFromErrno +PyErr_SetFromErrnoWithFilename +PyErr_SetFromErrnoWithFilenameObject +PyErr_SetInterrupt +PyErr_SetNone +PyErr_SetObject +PyErr_SetString +PyErr_SyntaxLocation +PyErr_WarnEx +PyErr_WarnExplicit +PyErr_WarnFormat +PyErr_WriteUnraisable +PyEval_AcquireLock +PyEval_AcquireThread +PyEval_CallFunction +PyEval_CallMethod +PyEval_CallObjectWithKeywords +PyEval_EvalCode +PyEval_EvalCodeEx +PyEval_EvalFrame +PyEval_EvalFrameEx +PyEval_GetBuiltins +PyEval_GetCallStats +PyEval_GetFrame +PyEval_GetFuncDesc +PyEval_GetFuncName +PyEval_GetGlobals +PyEval_GetLocals +PyEval_InitThreads +PyEval_ReInitThreads +PyEval_ReleaseLock +PyEval_ReleaseThread +PyEval_RestoreThread +PyEval_SaveThread +PyEval_ThreadsInitialized +PyExc_ArithmeticError +PyExc_AssertionError +PyExc_AttributeError +PyExc_BaseException +PyExc_BufferError +PyExc_BytesWarning +PyExc_DeprecationWarning +PyExc_EOFError +PyExc_EnvironmentError +PyExc_Exception +PyExc_FloatingPointError +PyExc_FutureWarning +PyExc_GeneratorExit +PyExc_IOError +PyExc_ImportError +PyExc_ImportWarning +PyExc_IndentationError +PyExc_IndexError +PyExc_KeyError +PyExc_KeyboardInterrupt +PyExc_LookupError +PyExc_MemoryError +PyExc_MemoryErrorInst +PyExc_NameError +PyExc_NotImplementedError +PyExc_OSError +PyExc_OverflowError +PyExc_PendingDeprecationWarning +PyExc_RecursionErrorInst +PyExc_ReferenceError +PyExc_RuntimeError +PyExc_RuntimeWarning +PyExc_StopIteration +PyExc_SyntaxError +PyExc_SyntaxWarning +PyExc_SystemError +PyExc_SystemExit +PyExc_TabError +PyExc_TypeError +PyExc_UnboundLocalError +PyExc_UnicodeDecodeError +PyExc_UnicodeEncodeError +PyExc_UnicodeError +PyExc_UnicodeTranslateError +PyExc_UnicodeWarning +PyExc_UserWarning +PyExc_ValueError +PyExc_Warning +PyExc_ZeroDivisionError +PyException_GetCause +PyException_GetContext +PyException_GetTraceback +PyException_SetCause +PyException_SetContext +PyException_SetTraceback +PyFile_FromFd +PyFile_GetLine +PyFile_WriteObject +PyFile_WriteString +PyFilter_Type +PyFloat_AsDouble +PyFloat_FromDouble +PyFloat_FromString +PyFloat_GetInfo +PyFloat_GetMax +PyFloat_GetMin +PyFloat_Type +PyFrozenSet_New +PyFrozenSet_Type +PyGC_Collect +PyGILState_Ensure +PyGILState_GetThisThreadState +PyGILState_Release +PyGetSetDescr_Type +PyImport_AddModule +PyImport_AppendInittab +PyImport_Cleanup +PyImport_ExecCodeModule +PyImport_ExecCodeModuleEx +PyImport_ExecCodeModuleWithPathnames +PyImport_GetImporter +PyImport_GetMagicNumber +PyImport_GetMagicTag +PyImport_GetModuleDict +PyImport_Import +PyImport_ImportFrozenModule +PyImport_ImportModule +PyImport_ImportModuleLevel +PyImport_ImportModuleNoBlock +PyImport_ReloadModule +PyInterpreterState_Clear +PyInterpreterState_Delete +PyInterpreterState_New +PyIter_Next +PyListIter_Type +PyListRevIter_Type +PyList_Append +PyList_AsTuple +PyList_GetItem +PyList_GetSlice +PyList_Insert +PyList_New +PyList_Reverse +PyList_SetItem +PyList_SetSlice +PyList_Size +PyList_Sort +PyList_Type +PyLongRangeIter_Type +PyLong_AsDouble +PyLong_AsLong +PyLong_AsLongAndOverflow +PyLong_AsLongLong +PyLong_AsLongLongAndOverflow +PyLong_AsSize_t +PyLong_AsSsize_t +PyLong_AsUnsignedLong +PyLong_AsUnsignedLongLong +PyLong_AsUnsignedLongLongMask +PyLong_AsUnsignedLongMask +PyLong_AsVoidPtr +PyLong_FromDouble +PyLong_FromLong +PyLong_FromLongLong +PyLong_FromSize_t +PyLong_FromSsize_t +PyLong_FromString +PyLong_FromUnsignedLong +PyLong_FromUnsignedLongLong +PyLong_FromVoidPtr +PyLong_GetInfo +PyLong_Type +PyMap_Type +PyMapping_Check +PyMapping_GetItemString +PyMapping_HasKey +PyMapping_HasKeyString +PyMapping_Items +PyMapping_Keys +PyMapping_Length +PyMapping_SetItemString +PyMapping_Size +PyMapping_Values +PyMem_Free +PyMem_Malloc +PyMem_Realloc +PyMemberDescr_Type +PyMemoryView_FromObject +PyMemoryView_GetContiguous +PyMemoryView_Type +PyMethodDescr_Type +PyModule_AddIntConstant +PyModule_AddObject +PyModule_AddStringConstant +PyModule_Create2 +PyModule_GetDef +PyModule_GetDict +PyModule_GetFilename +PyModule_GetFilenameObject +PyModule_GetName +PyModule_GetState +PyModule_New +PyModule_Type +PyNullImporter_Type +PyNumber_Absolute +PyNumber_Add +PyNumber_And +PyNumber_AsSsize_t +PyNumber_Check +PyNumber_Divmod +PyNumber_Float +PyNumber_FloorDivide +PyNumber_InPlaceAdd +PyNumber_InPlaceAnd +PyNumber_InPlaceFloorDivide +PyNumber_InPlaceLshift +PyNumber_InPlaceMultiply +PyNumber_InPlaceOr +PyNumber_InPlacePower +PyNumber_InPlaceRemainder +PyNumber_InPlaceRshift +PyNumber_InPlaceSubtract +PyNumber_InPlaceTrueDivide +PyNumber_InPlaceXor +PyNumber_Index +PyNumber_Invert +PyNumber_Long +PyNumber_Lshift +PyNumber_Multiply +PyNumber_Negative +PyNumber_Or +PyNumber_Positive +PyNumber_Power +PyNumber_Remainder +PyNumber_Rshift +PyNumber_Subtract +PyNumber_ToBase +PyNumber_TrueDivide +PyNumber_Xor +PyOS_AfterFork +PyOS_InitInterrupts +PyOS_InputHook +PyOS_InterruptOccurred +PyOS_ReadlineFunctionPointer +PyOS_double_to_string +PyOS_getsig +PyOS_mystricmp +PyOS_mystrnicmp +PyOS_setsig +PyOS_snprintf +PyOS_string_to_double +PyOS_strtol +PyOS_strtoul +PyOS_vsnprintf +PyObject_ASCII +PyObject_AsCharBuffer +PyObject_AsFileDescriptor +PyObject_AsReadBuffer +PyObject_AsWriteBuffer +PyObject_Bytes +PyObject_Call +PyObject_CallFunction +PyObject_CallFunctionObjArgs +PyObject_CallMethod +PyObject_CallMethodObjArgs +PyObject_CallObject +PyObject_CheckReadBuffer +PyObject_ClearWeakRefs +PyObject_DelItem +PyObject_DelItemString +PyObject_Dir +PyObject_Format +PyObject_Free +PyObject_GC_Del +PyObject_GC_Track +PyObject_GC_UnTrack +PyObject_GenericGetAttr +PyObject_GenericSetAttr +PyObject_GetAttr +PyObject_GetAttrString +PyObject_GetItem +PyObject_GetIter +PyObject_HasAttr +PyObject_HasAttrString +PyObject_Hash +PyObject_HashNotImplemented +PyObject_Init +PyObject_InitVar +PyObject_IsInstance +PyObject_IsSubclass +PyObject_IsTrue +PyObject_Length +PyObject_Malloc +PyObject_Not +PyObject_Realloc +PyObject_Repr +PyObject_RichCompare +PyObject_RichCompareBool +PyObject_SelfIter +PyObject_SetAttr +PyObject_SetAttrString +PyObject_SetItem +PyObject_Size +PyObject_Str +PyObject_Type +PyParser_SimpleParseFileFlags +PyParser_SimpleParseStringFlags +PyProperty_Type +PyRangeIter_Type +PyRange_Type +PyReversed_Type +PySeqIter_New +PySeqIter_Type +PySequence_Check +PySequence_Concat +PySequence_Contains +PySequence_Count +PySequence_DelItem +PySequence_DelSlice +PySequence_Fast +PySequence_GetItem +PySequence_GetSlice +PySequence_In +PySequence_InPlaceConcat +PySequence_InPlaceRepeat +PySequence_Index +PySequence_Length +PySequence_List +PySequence_Repeat +PySequence_SetItem +PySequence_SetSlice +PySequence_Size +PySequence_Tuple +PySetIter_Type +PySet_Add +PySet_Clear +PySet_Contains +PySet_Discard +PySet_New +PySet_Pop +PySet_Size +PySet_Type +PySlice_GetIndices +PySlice_GetIndicesEx +PySlice_New +PySlice_Type +PySortWrapper_Type +PyState_FindModule +PyStructSequence_GetItem +PyStructSequence_New +PyStructSequence_NewType +PyStructSequence_SetItem +PySuper_Type +PySys_AddWarnOption +PySys_AddWarnOptionUnicode +PySys_FormatStderr +PySys_FormatStdout +PySys_GetObject +PySys_HasWarnOptions +PySys_ResetWarnOptions +PySys_SetArgv +PySys_SetArgvEx +PySys_SetObject +PySys_SetPath +PySys_WriteStderr +PySys_WriteStdout +PyThreadState_Clear +PyThreadState_Delete +PyThreadState_DeleteCurrent +PyThreadState_Get +PyThreadState_GetDict +PyThreadState_New +PyThreadState_SetAsyncExc +PyThreadState_Swap +PyTraceBack_Here +PyTraceBack_Print +PyTraceBack_Type +PyTupleIter_Type +PyTuple_ClearFreeList +PyTuple_GetItem +PyTuple_GetSlice +PyTuple_New +PyTuple_Pack +PyTuple_SetItem +PyTuple_Size +PyTuple_Type +PyType_ClearCache +PyType_FromSpec +PyType_GenericAlloc +PyType_GenericNew +PyType_GetFlags +PyType_IsSubtype +PyType_Modified +PyType_Ready +PyType_Type +PyUnicodeDecodeError_Create +PyUnicodeDecodeError_GetEncoding +PyUnicodeDecodeError_GetEnd +PyUnicodeDecodeError_GetObject +PyUnicodeDecodeError_GetReason +PyUnicodeDecodeError_GetStart +PyUnicodeDecodeError_SetEnd +PyUnicodeDecodeError_SetReason +PyUnicodeDecodeError_SetStart +PyUnicodeEncodeError_GetEncoding +PyUnicodeEncodeError_GetEnd +PyUnicodeEncodeError_GetObject +PyUnicodeEncodeError_GetReason +PyUnicodeEncodeError_GetStart +PyUnicodeEncodeError_SetEnd +PyUnicodeEncodeError_SetReason +PyUnicodeEncodeError_SetStart +PyUnicodeIter_Type +PyUnicodeTranslateError_GetEnd +PyUnicodeTranslateError_GetObject +PyUnicodeTranslateError_GetReason +PyUnicodeTranslateError_GetStart +PyUnicodeTranslateError_SetEnd +PyUnicodeTranslateError_SetReason +PyUnicodeTranslateError_SetStart +PyUnicodeUCS2_Append +PyUnicodeUCS2_AppendAndDel +PyUnicodeUCS2_AsASCIIString +PyUnicodeUCS2_AsCharmapString +PyUnicodeUCS2_AsDecodedObject +PyUnicodeUCS2_AsDecodedUnicode +PyUnicodeUCS2_AsEncodedObject +PyUnicodeUCS2_AsEncodedString +PyUnicodeUCS2_AsEncodedUnicode +PyUnicodeUCS2_AsLatin1String +PyUnicodeUCS2_AsRawUnicodeEscapeString +PyUnicodeUCS2_AsUTF16String +PyUnicodeUCS2_AsUTF32String +PyUnicodeUCS2_AsUTF8String +PyUnicodeUCS2_AsUnicodeEscapeString +PyUnicodeUCS2_AsWideChar +PyUnicodeUCS2_ClearFreelist +PyUnicodeUCS2_Compare +PyUnicodeUCS2_Concat +PyUnicodeUCS2_Contains +PyUnicodeUCS2_Count +PyUnicodeUCS2_Decode +PyUnicodeUCS2_DecodeASCII +PyUnicodeUCS2_DecodeCharmap +PyUnicodeUCS2_DecodeFSDefault +PyUnicodeUCS2_DecodeFSDefaultAndSize +PyUnicodeUCS2_DecodeLatin1 +PyUnicodeUCS2_DecodeRawUnicodeEscape +PyUnicodeUCS2_DecodeUTF16 +PyUnicodeUCS2_DecodeUTF16Stateful +PyUnicodeUCS2_DecodeUTF32 +PyUnicodeUCS2_DecodeUTF32Stateful +PyUnicodeUCS2_DecodeUTF8 +PyUnicodeUCS2_DecodeUTF8Stateful +PyUnicodeUCS2_DecodeUnicodeEscape +PyUnicodeUCS2_FSConverter +PyUnicodeUCS2_FSDecoder +PyUnicodeUCS2_Find +PyUnicodeUCS2_Format +PyUnicodeUCS2_FromEncodedObject +PyUnicodeUCS2_FromFormat +PyUnicodeUCS2_FromFormatV +PyUnicodeUCS2_FromObject +PyUnicodeUCS2_FromOrdinal +PyUnicodeUCS2_FromString +PyUnicodeUCS2_FromStringAndSize +PyUnicodeUCS2_FromWideChar +PyUnicodeUCS2_GetDefaultEncoding +PyUnicodeUCS2_GetSize +PyUnicodeUCS2_IsIdentifier +PyUnicodeUCS2_Join +PyUnicodeUCS2_Partition +PyUnicodeUCS2_RPartition +PyUnicodeUCS2_RSplit +PyUnicodeUCS2_Replace +PyUnicodeUCS2_Resize +PyUnicodeUCS2_RichCompare +PyUnicodeUCS2_SetDefaultEncoding +PyUnicodeUCS2_Split +PyUnicodeUCS2_Splitlines +PyUnicodeUCS2_Tailmatch +PyUnicodeUCS2_Translate +PyUnicode_BuildEncodingMap +PyUnicode_CompareWithASCIIString +PyUnicode_DecodeUTF7 +PyUnicode_DecodeUTF7Stateful +PyUnicode_EncodeFSDefault +PyUnicode_InternFromString +PyUnicode_InternImmortal +PyUnicode_InternInPlace +PyUnicode_Type +PyWeakref_GetObject +PyWeakref_NewProxy +PyWeakref_NewRef +PyWrapperDescr_Type +PyWrapper_New +PyZip_Type +Py_AddPendingCall +Py_AtExit +Py_BuildValue +Py_CompileString +Py_DecRef +Py_EndInterpreter +Py_Exit +Py_FatalError +Py_FileSystemDefaultEncoding +Py_Finalize +Py_GetBuildInfo +Py_GetCompiler +Py_GetCopyright +Py_GetExecPrefix +Py_GetPath +Py_GetPlatform +Py_GetPrefix +Py_GetProgramFullPath +Py_GetProgramName +Py_GetPythonHome +Py_GetRecursionLimit +Py_GetVersion +Py_HasFileSystemDefaultEncoding +Py_IncRef +Py_Initialize +Py_InitializeEx +Py_IsInitialized +Py_Main +Py_MakePendingCalls +Py_NewInterpreter +Py_ReprEnter +Py_ReprLeave +Py_SetProgramName +Py_SetPythonHome +Py_SetRecursionLimit +Py_SymtableString +Py_VaBuildValue +_PyErr_BadInternalCall +_PyObject_CallFunction_SizeT +_PyObject_CallMethod_SizeT +_PyObject_GC_Malloc +_PyObject_GC_New +_PyObject_GC_NewVar +_PyObject_GC_Resize +_PyObject_New +_PyObject_NewVar +_PyState_AddModule +_PyThreadState_Init +_PyThreadState_Prealloc +_PyTrash_delete_later +_PyTrash_delete_nesting +_PyTrash_deposit_object +_PyTrash_destroy_chain +_PyWeakref_CallableProxyType +_PyWeakref_ProxyType +_PyWeakref_RefType +_Py_BuildValue_SizeT +_Py_CheckRecursionLimit +_Py_CheckRecursiveCall +_Py_Dealloc +_Py_EllipsisObject +_Py_FalseStruct +_Py_NoneStruct +_Py_NotImplementedStruct +_Py_SwappedOp +_Py_TrueStruct +_Py_VaBuildValue_SizeT diff --git a/PC/python3dll.c b/PC/python3dll.c new file mode 100644 index 0000000..ef29071 --- /dev/null +++ b/PC/python3dll.c @@ -0,0 +1,9 @@ +#include <windows.h> + +BOOL WINAPI +DllMain(HINSTANCE hInstDLL, + DWORD fdwReason, + LPVOID lpReserved) +{ + return TRUE; +}
\ No newline at end of file diff --git a/PC/python_nt.rc b/PC/python_nt.rc index e132837..8cccf2d 100644 --- a/PC/python_nt.rc +++ b/PC/python_nt.rc @@ -61,7 +61,7 @@ BEGIN VALUE "FileDescription", "Python Core\0" VALUE "FileVersion", PYTHON_VERSION VALUE "InternalName", "Python DLL\0" - VALUE "LegalCopyright", "Copyright © 2001-2008 Python Software Foundation. Copyright © 2000 BeOpen.com. Copyright © 1995-2001 CNRI. Copyright © 1991-1995 SMC.\0" + VALUE "LegalCopyright", "Copyright © 2001-2011 Python Software Foundation. Copyright © 2000 BeOpen.com. Copyright © 1995-2001 CNRI. Copyright © 1991-1995 SMC.\0" VALUE "OriginalFilename", PYTHON_DLL_NAME "\0" VALUE "ProductName", "Python\0" VALUE "ProductVersion", PYTHON_VERSION diff --git a/PC/winreg.c b/PC/winreg.c index 52d230e..1bc47b9 100644 --- a/PC/winreg.c +++ b/PC/winreg.c @@ -88,7 +88,7 @@ PyDoc_STRVAR(ConnectRegistry_doc, "key is the predefined handle to connect to.\n" "\n" "The return value is the handle of the opened key.\n" -"If the function fails, an EnvironmentError exception is raised."); +"If the function fails, a WindowsError exception is raised."); PyDoc_STRVAR(CreateKey_doc, "key = CreateKey(key, sub_key) - Creates or opens the specified key.\n" @@ -103,6 +103,21 @@ PyDoc_STRVAR(CreateKey_doc, "The return value is the handle of the opened key.\n" "If the function fails, an exception is raised."); +PyDoc_STRVAR(CreateKeyEx_doc, +"key = CreateKeyEx(key, sub_key, res, sam) - Creates or opens the specified key.\n" +"\n" +"key is an already open key, or one of the predefined HKEY_* constants\n" +"sub_key is a string that names the key this method opens or creates.\n" +"res is a reserved integer, and must be zero. Default is zero.\n" +"sam is an integer that specifies an access mask that describes the desired\n" +" If key is one of the predefined keys, sub_key may be None. In that case,\n" +" the handle returned is the same key handle passed in to the function.\n" +"\n" +"If the key already exists, this function opens the existing key\n" +"\n" +"The return value is the handle of the opened key.\n" +"If the function fails, an exception is raised."); + PyDoc_STRVAR(DeleteKey_doc, "DeleteKey(key, sub_key) - Deletes the specified key.\n" "\n" @@ -113,7 +128,22 @@ PyDoc_STRVAR(DeleteKey_doc, "This method can not delete keys with subkeys.\n" "\n" "If the method succeeds, the entire key, including all of its values,\n" -"is removed. If the method fails, an EnvironmentError exception is raised."); +"is removed. If the method fails, a WindowsError exception is raised."); + +PyDoc_STRVAR(DeleteKeyEx_doc, +"DeleteKeyEx(key, sub_key, sam, res) - Deletes the specified key.\n" +"\n" +"key is an already open key, or any one of the predefined HKEY_* constants.\n" +"sub_key is a string that must be a subkey of the key identified by the key parameter.\n" +"res is a reserved integer, and must be zero. Default is zero.\n" +"sam is an integer that specifies an access mask that describes the desired\n" +" This value must not be None, and the key may not have subkeys.\n" +"\n" +"This method can not delete keys with subkeys.\n" +"\n" +"If the method succeeds, the entire key, including all of its values,\n" +"is removed. If the method fails, a WindowsError exception is raised.\n" +"On unsupported Windows versions, NotImplementedError is raised."); PyDoc_STRVAR(DeleteValue_doc, "DeleteValue(key, value) - Removes a named value from a registry key.\n" @@ -128,7 +158,7 @@ PyDoc_STRVAR(EnumKey_doc, "index is an integer that identifies the index of the key to retrieve.\n" "\n" "The function retrieves the name of one subkey each time it is called.\n" -"It is typically called repeatedly until an EnvironmentError exception is\n" +"It is typically called repeatedly until a WindowsError exception is\n" "raised, indicating no more values are available."); PyDoc_STRVAR(EnumValue_doc, @@ -137,7 +167,7 @@ PyDoc_STRVAR(EnumValue_doc, "index is an integer that identifies the index of the value to retrieve.\n" "\n" "The function retrieves the name of one subkey each time it is called.\n" -"It is typically called repeatedly, until an EnvironmentError exception\n" +"It is typically called repeatedly, until a WindowsError exception\n" "is raised, indicating no more values.\n" "\n" "The result is a tuple of 3 items:\n" @@ -191,7 +221,7 @@ PyDoc_STRVAR(OpenKey_doc, " security access for the key. Default is KEY_READ\n" "\n" "The result is a new handle to the specified key\n" -"If the function fails, an EnvironmentError exception is raised."); +"If the function fails, a WindowsError exception is raised."); PyDoc_STRVAR(OpenKeyEx_doc, "See OpenKey()"); @@ -422,7 +452,7 @@ PyHKEY_compareFunc(PyObject *ob1, PyObject *ob2) (pyhkey1 < pyhkey2 ? -1 : 1); } -static long +static Py_hash_t PyHKEY_hashFunc(PyObject *ob) { /* Just use the address. @@ -735,8 +765,9 @@ Py2Reg(PyObject *value, DWORD typ, BYTE **retDataBuf, DWORD *retDataSize) else { if (!PyUnicode_Check(value)) return FALSE; - - *retDataSize = 2 + PyUnicode_GET_DATA_SIZE(value); + *retDataSize = Py_SAFE_DOWNCAST( + 2 + PyUnicode_GET_DATA_SIZE(value), + size_t, DWORD); } *retDataBuf = (BYTE *)PyMem_NEW(DWORD, *retDataSize); if (*retDataBuf==NULL){ @@ -768,7 +799,8 @@ Py2Reg(PyObject *value, DWORD typ, BYTE **retDataBuf, DWORD *retDataSize) t = PyList_GET_ITEM(value, j); if (!PyUnicode_Check(t)) return FALSE; - size += 2 + PyUnicode_GET_DATA_SIZE(t); + size += Py_SAFE_DOWNCAST(2 + PyUnicode_GET_DATA_SIZE(t), + size_t, DWORD); } *retDataSize = size + 2; @@ -818,7 +850,7 @@ Py2Reg(PyObject *value, DWORD typ, BYTE **retDataBuf, DWORD *retDataSize) PyErr_NoMemory(); return FALSE; } - *retDataSize = view.len; + *retDataSize = Py_SAFE_DOWNCAST(view.len, Py_ssize_t, DWORD); memcpy(*retDataBuf, view.buf, view.len); PyBuffer_Release(&view); } @@ -957,6 +989,32 @@ PyCreateKey(PyObject *self, PyObject *args) } static PyObject * +PyCreateKeyEx(PyObject *self, PyObject *args, PyObject *kwargs) +{ + HKEY hKey; + PyObject *key; + wchar_t *sub_key; + HKEY retKey; + int reserved = 0; + REGSAM access = KEY_WRITE; + long rc; + + char *kwlist[] = {"key", "sub_key", "reserved", "access", NULL}; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OZ|ii:CreateKeyEx", kwlist, + &key, &sub_key, &reserved, &access)) + return NULL; + if (!PyHKEY_AsHKEY(key, &hKey, FALSE)) + return NULL; + + rc = RegCreateKeyExW(hKey, sub_key, reserved, NULL, (DWORD)NULL, + access, NULL, &retKey, NULL); + if (rc != ERROR_SUCCESS) + return PyErr_SetFromWindowsErrWithFunction(rc, "CreateKeyEx"); + return PyHKEY_FromHKEY(retKey); +} + +static PyObject * PyDeleteKey(PyObject *self, PyObject *args) { HKEY hKey; @@ -975,6 +1033,47 @@ PyDeleteKey(PyObject *self, PyObject *args) } static PyObject * +PyDeleteKeyEx(PyObject *self, PyObject *args, PyObject *kwargs) +{ + HKEY hKey; + PyObject *key; + HMODULE hMod; + typedef LONG (WINAPI *RDKEFunc)(HKEY, const wchar_t*, REGSAM, int); + RDKEFunc pfn = NULL; + wchar_t *sub_key; + long rc; + int reserved = 0; + REGSAM access = KEY_WOW64_64KEY; + + char *kwlist[] = {"key", "sub_key", "access", "reserved", NULL}; + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "Ou|ii:DeleteKeyEx", kwlist, + &key, &sub_key, &access, &reserved)) + return NULL; + if (!PyHKEY_AsHKEY(key, &hKey, FALSE)) + return NULL; + + /* Only available on 64bit platforms, so we must load it + dynamically. */ + hMod = GetModuleHandle("advapi32.dll"); + if (hMod) + pfn = (RDKEFunc)GetProcAddress(hMod, + "RegDeleteKeyExW"); + if (!pfn) { + PyErr_SetString(PyExc_NotImplementedError, + "not implemented on this platform"); + return NULL; + } + Py_BEGIN_ALLOW_THREADS + rc = (*pfn)(hKey, sub_key, access, reserved); + Py_END_ALLOW_THREADS + + if (rc != ERROR_SUCCESS) + return PyErr_SetFromWindowsErrWithFunction(rc, "RegDeleteKeyEx"); + Py_INCREF(Py_None); + return Py_None; +} + +static PyObject * PyDeleteValue(PyObject *self, PyObject *args) { HKEY hKey; @@ -1036,7 +1135,7 @@ PyEnumValue(PyObject *self, PyObject *args) int index; long rc; wchar_t *retValueBuf; - wchar_t *tmpBuf; + BYTE *tmpBuf; BYTE *retDataBuf; DWORD retValueSize, bufValueSize; DWORD retDataSize, bufDataSize; @@ -1084,7 +1183,7 @@ PyEnumValue(PyObject *self, PyObject *args) break; bufDataSize *= 2; - tmpBuf = (wchar_t *)PyMem_Realloc(retDataBuf, bufDataSize); + tmpBuf = (BYTE *)PyMem_Realloc(retDataBuf, bufDataSize); if (tmpBuf == NULL) { PyErr_NoMemory(); retVal = NULL; @@ -1187,24 +1286,26 @@ PyLoadKey(PyObject *self, PyObject *args) } static PyObject * -PyOpenKey(PyObject *self, PyObject *args) +PyOpenKey(PyObject *self, PyObject *args, PyObject *kwargs) { HKEY hKey; - PyObject *obKey; - - wchar_t *subKey; - int res = 0; + PyObject *key; + wchar_t *sub_key; + int reserved = 0; HKEY retKey; long rc; - REGSAM sam = KEY_READ; - if (!PyArg_ParseTuple(args, "OZ|ii:OpenKey", &obKey, &subKey, - &res, &sam)) + REGSAM access = KEY_READ; + + char *kwlist[] = {"key", "sub_key", "reserved", "access", NULL}; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OZ|ii:OpenKey", kwlist, + &key, &sub_key, &reserved, &access)) return NULL; - if (!PyHKEY_AsHKEY(obKey, &hKey, FALSE)) + if (!PyHKEY_AsHKEY(key, &hKey, FALSE)) return NULL; Py_BEGIN_ALLOW_THREADS - rc = RegOpenKeyExW(hKey, subKey, res, sam, &retKey); + rc = RegOpenKeyExW(hKey, sub_key, reserved, access, &retKey); Py_END_ALLOW_THREADS if (rc != ERROR_SUCCESS) return PyErr_SetFromWindowsErrWithFunction(rc, "RegOpenKeyEx"); @@ -1475,8 +1576,8 @@ PyDisableReflectionKey(PyObject *self, PyObject *args) if (!PyHKEY_AsHKEY(obKey, &hKey, FALSE)) return NULL; - // Only available on 64bit platforms, so we must load it - // dynamically. + /* Only available on 64bit platforms, so we must load it + dynamically.*/ hMod = GetModuleHandle("advapi32.dll"); if (hMod) pfn = (RDRKFunc)GetProcAddress(hMod, @@ -1511,8 +1612,8 @@ PyEnableReflectionKey(PyObject *self, PyObject *args) if (!PyHKEY_AsHKEY(obKey, &hKey, FALSE)) return NULL; - // Only available on 64bit platforms, so we must load it - // dynamically. + /* Only available on 64bit platforms, so we must load it + dynamically.*/ hMod = GetModuleHandle("advapi32.dll"); if (hMod) pfn = (RERKFunc)GetProcAddress(hMod, @@ -1548,8 +1649,8 @@ PyQueryReflectionKey(PyObject *self, PyObject *args) if (!PyHKEY_AsHKEY(obKey, &hKey, FALSE)) return NULL; - // Only available on 64bit platforms, so we must load it - // dynamically. + /* Only available on 64bit platforms, so we must load it + dynamically.*/ hMod = GetModuleHandle("advapi32.dll"); if (hMod) pfn = (RQRKFunc)GetProcAddress(hMod, @@ -1565,14 +1666,18 @@ PyQueryReflectionKey(PyObject *self, PyObject *args) if (rc != ERROR_SUCCESS) return PyErr_SetFromWindowsErrWithFunction(rc, "RegQueryReflectionKey"); - return PyBool_FromLong(rc); + return PyBool_FromLong(result); } static struct PyMethodDef winreg_methods[] = { {"CloseKey", PyCloseKey, METH_VARARGS, CloseKey_doc}, {"ConnectRegistry", PyConnectRegistry, METH_VARARGS, ConnectRegistry_doc}, {"CreateKey", PyCreateKey, METH_VARARGS, CreateKey_doc}, + {"CreateKeyEx", (PyCFunction)PyCreateKeyEx, + METH_VARARGS | METH_KEYWORDS, CreateKeyEx_doc}, {"DeleteKey", PyDeleteKey, METH_VARARGS, DeleteKey_doc}, + {"DeleteKeyEx", (PyCFunction)PyDeleteKeyEx, + METH_VARARGS | METH_KEYWORDS, DeleteKeyEx_doc}, {"DeleteValue", PyDeleteValue, METH_VARARGS, DeleteValue_doc}, {"DisableReflectionKey", PyDisableReflectionKey, METH_VARARGS, DisableReflectionKey_doc}, {"EnableReflectionKey", PyEnableReflectionKey, METH_VARARGS, EnableReflectionKey_doc}, @@ -1582,8 +1687,10 @@ static struct PyMethodDef winreg_methods[] = { ExpandEnvironmentStrings_doc }, {"FlushKey", PyFlushKey, METH_VARARGS, FlushKey_doc}, {"LoadKey", PyLoadKey, METH_VARARGS, LoadKey_doc}, - {"OpenKey", PyOpenKey, METH_VARARGS, OpenKey_doc}, - {"OpenKeyEx", PyOpenKey, METH_VARARGS, OpenKeyEx_doc}, + {"OpenKey", (PyCFunction)PyOpenKey, METH_VARARGS | METH_KEYWORDS, + OpenKey_doc}, + {"OpenKeyEx", (PyCFunction)PyOpenKey, METH_VARARGS | METH_KEYWORDS, + OpenKeyEx_doc}, {"QueryValue", PyQueryValue, METH_VARARGS, QueryValue_doc}, {"QueryValueEx", PyQueryValueEx, METH_VARARGS, QueryValueEx_doc}, {"QueryInfoKey", PyQueryInfoKey, METH_VARARGS, QueryInfoKey_doc}, diff --git a/PC/winsound.c b/PC/winsound.c index d455848..1ed95ba 100644 --- a/PC/winsound.c +++ b/PC/winsound.c @@ -73,8 +73,6 @@ static PyObject * sound_playsound(PyObject *s, PyObject *args) { Py_UNICODE *wsound; - PyObject *osound; - const char *sound; int flags; int ok; @@ -95,31 +93,7 @@ sound_playsound(PyObject *s, PyObject *args) Py_INCREF(Py_None); return Py_None; } - /* Drop the argument parsing error as narrow strings - are also valid. */ - PyErr_Clear(); - if (!PyArg_ParseTuple(args, "O&i:PlaySound", - PyUnicode_FSConverter, &osound, &flags)) - return NULL; - if (flags & SND_ASYNC && flags & SND_MEMORY) { - /* Sidestep reference counting headache; unfortunately this also - prevent SND_LOOP from memory. */ - PyErr_SetString(PyExc_RuntimeError, "Cannot play asynchronously from memory"); - Py_DECREF(osound); - return NULL; - } - sound = PyBytes_AsString(osound); - Py_BEGIN_ALLOW_THREADS - ok = PlaySoundA(sound, NULL, flags); - Py_END_ALLOW_THREADS - if (!ok) { - PyErr_SetString(PyExc_RuntimeError, "Failed to play sound"); - Py_DECREF(osound); - return NULL; - } - Py_DECREF(osound); - Py_INCREF(Py_None); - return Py_None; + return NULL; } static PyObject * |