From e6cca5ec862edada7fcdeef21c873366f200d00c Mon Sep 17 00:00:00 2001 From: Josh Yelon Date: Sat, 8 Dec 2007 21:49:14 +0000 Subject: [PATCH] Changes for python 2.5 --- direct/src/directscripts/packpanda.nsi | 14 ++++----- .../extensions_native/CInterval_extensions.py | 2 ++ .../EggGroupNode_extensions.py | 2 ++ .../EggPrimitive_extensions.py | 2 ++ .../HTTPChannel_extensions.py | 1 + .../src/extensions_native/Mat3_extensions.py | 2 ++ .../NodePathCollection_extensions.py | 2 +- .../extensions_native/NodePath_extensions.py | 2 +- .../extensions_native/OdeBody_extensions.py | 2 +- .../extensions_native/OdeGeom_extensions.py | 2 +- .../extensions_native/OdeJoint_extensions.py | 2 +- .../extensions_native/OdeSpace_extensions.py | 2 +- .../extensions_native/Ramfile_extensions.py | 1 + .../StreamReader_extensions.py | 1 + .../extensions_native/VBase3_extensions.py | 1 + .../extensions_native/VBase4_extensions.py | 1 + .../extension_native_helpers.py | 29 +++++++++++++++---- direct/src/ffi/DoGenPyCode.py | 4 +++ direct/src/http/WebRequest.py | 2 +- direct/src/showbase/PythonUtil.py | 2 +- direct/src/task/Task.py | 2 ++ doc/makepanda/makepanda.py | 2 +- doc/makepanda/makepandacore.py | 2 +- 23 files changed, 59 insertions(+), 23 deletions(-) diff --git a/direct/src/directscripts/packpanda.nsi b/direct/src/directscripts/packpanda.nsi index 3b0c0eef26..ac1a39aa07 100755 --- a/direct/src/directscripts/packpanda.nsi +++ b/direct/src/directscripts/packpanda.nsi @@ -235,7 +235,7 @@ Section -post Push "$INSTDIR\bin" Call AddToPath - ReadRegStr $0 HKLM "Software\Python\PythonCore\2.4\InstallPath" "" + ReadRegStr $0 HKLM "Software\Python\PythonCore\2.5\InstallPath" "" StrCmp $0 "$INSTDIR\python" RegPath 0 StrCmp $0 "" RegPath 0 @@ -245,10 +245,10 @@ Section -post RegPath: DetailPrint "Adding registry keys for python..." - WriteRegStr HKLM "Software\Python\PythonCore\2.4\InstallPath" "" "$INSTDIR\python" - WriteRegStr HKLM "Software\Python\PythonCore\2.4\Help" "" "" - WriteRegStr HKLM "Software\Python\PythonCore\2.4\Help\Main Python Documentation" "" "$INSTDIR\python\Doc\Python24.chm" - WriteRegStr HKLM "Software\Python\PythonCore\2.4\Help\Pythonwin Reference" "" "$INSTDIR\python\Lib\site-packages\PyWin32.chm" + WriteRegStr HKLM "Software\Python\PythonCore\2.5\InstallPath" "" "$INSTDIR\python" + WriteRegStr HKLM "Software\Python\PythonCore\2.5\Help" "" "" + WriteRegStr HKLM "Software\Python\PythonCore\2.5\Help\Main Python Documentation" "" "$INSTDIR\python\Doc\Python24.chm" + WriteRegStr HKLM "Software\Python\PythonCore\2.5\Help\Pythonwin Reference" "" "$INSTDIR\python\Lib\site-packages\PyWin32.chm" SkipRegPath: !endif @@ -273,9 +273,9 @@ Section Uninstall Push "$INSTDIR\bin" Call un.RemoveFromPath - ReadRegStr $0 HKLM "Software\Python\PythonCore\2.4\InstallPath" "" + ReadRegStr $0 HKLM "Software\Python\PythonCore\2.5\InstallPath" "" StrCmp $0 "$INSTDIR\python" 0 SkipUnReg - DeleteRegKey HKLM "Software\Python\PythonCore\2.4" + DeleteRegKey HKLM "Software\Python\PythonCore\2.5" SkipUnReg: !endif diff --git a/direct/src/extensions_native/CInterval_extensions.py b/direct/src/extensions_native/CInterval_extensions.py index 5c12d66397..7b04f17f37 100644 --- a/direct/src/extensions_native/CInterval_extensions.py +++ b/direct/src/extensions_native/CInterval_extensions.py @@ -1,7 +1,9 @@ from extension_native_helpers import * try: + Dtool_PreloadDLL("libp3direct") from libp3direct import * except: + Dtool_PreloadDLL("libdirect") from libdirect import * ##################################################################### diff --git a/direct/src/extensions_native/EggGroupNode_extensions.py b/direct/src/extensions_native/EggGroupNode_extensions.py index 6ec21fa604..f852100854 100644 --- a/direct/src/extensions_native/EggGroupNode_extensions.py +++ b/direct/src/extensions_native/EggGroupNode_extensions.py @@ -1,5 +1,7 @@ from extension_native_helpers import * +Dtool_PreloadDLL("libpandaegg") from libpandaegg import * + #################################################################### #Dtool_funcToMethod(func, class) #del func diff --git a/direct/src/extensions_native/EggPrimitive_extensions.py b/direct/src/extensions_native/EggPrimitive_extensions.py index 09c43ab02b..9478ca9ea7 100644 --- a/direct/src/extensions_native/EggPrimitive_extensions.py +++ b/direct/src/extensions_native/EggPrimitive_extensions.py @@ -1,5 +1,7 @@ from extension_native_helpers import * +Dtool_PreloadDLL("libpandaegg") from libpandaegg import * + #################################################################### #Dtool_funcToMethod(func, class) #del func diff --git a/direct/src/extensions_native/HTTPChannel_extensions.py b/direct/src/extensions_native/HTTPChannel_extensions.py index 6adc26f753..3a5769c636 100644 --- a/direct/src/extensions_native/HTTPChannel_extensions.py +++ b/direct/src/extensions_native/HTTPChannel_extensions.py @@ -1,4 +1,5 @@ from extension_native_helpers import * +Dtool_PreloadDLL("libpandaexpress") from libpandaexpress import * #################################################################### diff --git a/direct/src/extensions_native/Mat3_extensions.py b/direct/src/extensions_native/Mat3_extensions.py index 2396a1933d..921d0dddf3 100755 --- a/direct/src/extensions_native/Mat3_extensions.py +++ b/direct/src/extensions_native/Mat3_extensions.py @@ -1,5 +1,7 @@ from extension_native_helpers import * +Dtool_PreloadDLL("libpanda") from libpanda import * + #################################################################### #Dtool_funcToMethod(func, class) #del func diff --git a/direct/src/extensions_native/NodePathCollection_extensions.py b/direct/src/extensions_native/NodePathCollection_extensions.py index 4ddb63ec83..56dce0e2cf 100644 --- a/direct/src/extensions_native/NodePathCollection_extensions.py +++ b/direct/src/extensions_native/NodePathCollection_extensions.py @@ -1,7 +1,7 @@ from extension_native_helpers import * +Dtool_PreloadDLL("libpanda") from libpanda import * - ##################################################################### # For iterating over children diff --git a/direct/src/extensions_native/NodePath_extensions.py b/direct/src/extensions_native/NodePath_extensions.py index 95771c71aa..a31bde24b8 100644 --- a/direct/src/extensions_native/NodePath_extensions.py +++ b/direct/src/extensions_native/NodePath_extensions.py @@ -1,5 +1,5 @@ - from extension_native_helpers import * +Dtool_PreloadDLL("libpanda") from libpanda import * #################################################################### diff --git a/direct/src/extensions_native/OdeBody_extensions.py b/direct/src/extensions_native/OdeBody_extensions.py index 7d768c176d..91d30521ae 100755 --- a/direct/src/extensions_native/OdeBody_extensions.py +++ b/direct/src/extensions_native/OdeBody_extensions.py @@ -1,5 +1,5 @@ - from extension_native_helpers import * +Dtool_PreloadDLL("libpanda") from libpanda import * #################################################################### diff --git a/direct/src/extensions_native/OdeGeom_extensions.py b/direct/src/extensions_native/OdeGeom_extensions.py index 2590c45450..6075cbd858 100755 --- a/direct/src/extensions_native/OdeGeom_extensions.py +++ b/direct/src/extensions_native/OdeGeom_extensions.py @@ -1,5 +1,5 @@ - from extension_native_helpers import * +Dtool_PreloadDLL("libpanda") from libpanda import * #################################################################### diff --git a/direct/src/extensions_native/OdeJoint_extensions.py b/direct/src/extensions_native/OdeJoint_extensions.py index b49eeee8a5..f9bcd68f88 100755 --- a/direct/src/extensions_native/OdeJoint_extensions.py +++ b/direct/src/extensions_native/OdeJoint_extensions.py @@ -1,5 +1,5 @@ - from extension_native_helpers import * +Dtool_PreloadDLL("libpanda") from libpanda import * #################################################################### diff --git a/direct/src/extensions_native/OdeSpace_extensions.py b/direct/src/extensions_native/OdeSpace_extensions.py index 25337e28cb..5fed35c2f7 100755 --- a/direct/src/extensions_native/OdeSpace_extensions.py +++ b/direct/src/extensions_native/OdeSpace_extensions.py @@ -1,5 +1,5 @@ - from extension_native_helpers import * +Dtool_PreloadDLL("libpanda") from libpanda import * #################################################################### diff --git a/direct/src/extensions_native/Ramfile_extensions.py b/direct/src/extensions_native/Ramfile_extensions.py index 6d33773825..e112a19b58 100644 --- a/direct/src/extensions_native/Ramfile_extensions.py +++ b/direct/src/extensions_native/Ramfile_extensions.py @@ -1,4 +1,5 @@ from extension_native_helpers import * +Dtool_PreloadDLL("libpandaexpress") from libpandaexpress import * """ diff --git a/direct/src/extensions_native/StreamReader_extensions.py b/direct/src/extensions_native/StreamReader_extensions.py index 339facfe62..2cff97c311 100755 --- a/direct/src/extensions_native/StreamReader_extensions.py +++ b/direct/src/extensions_native/StreamReader_extensions.py @@ -1,4 +1,5 @@ from extension_native_helpers import * +Dtool_PreloadDLL("libpandaexpress") from libpandaexpress import * """ diff --git a/direct/src/extensions_native/VBase3_extensions.py b/direct/src/extensions_native/VBase3_extensions.py index 263739de01..60fc1c91ba 100755 --- a/direct/src/extensions_native/VBase3_extensions.py +++ b/direct/src/extensions_native/VBase3_extensions.py @@ -3,6 +3,7 @@ Methods to extend functionality of the VBase3 class """ from extension_native_helpers import * +Dtool_PreloadDLL("libpanda") from libpanda import * diff --git a/direct/src/extensions_native/VBase4_extensions.py b/direct/src/extensions_native/VBase4_extensions.py index 843c3e1de5..dedb5afade 100755 --- a/direct/src/extensions_native/VBase4_extensions.py +++ b/direct/src/extensions_native/VBase4_extensions.py @@ -3,6 +3,7 @@ Methods to extend functionality of the VBase4 class """ from extension_native_helpers import * +Dtool_PreloadDLL("libpanda") from libpanda import * diff --git a/direct/src/extensions_native/extension_native_helpers.py b/direct/src/extensions_native/extension_native_helpers.py index 9e1a4c5ac1..c27040e10a 100644 --- a/direct/src/extensions_native/extension_native_helpers.py +++ b/direct/src/extensions_native/extension_native_helpers.py @@ -1,22 +1,39 @@ ### Tools -__all__ = ["Dtool_ObjectToDict", "Dtool_funcToMethod"] +__all__ = ["Dtool_ObjectToDict", "Dtool_funcToMethod", "Dtool_PreloadDLL"] -import sys,os +import imp,sys,os -# Make sure the panda DLL directory is first on the path. if (sys.platform == "win32"): target = None for dir in sys.path + [sys.prefix]: - lib = os.path.join(dir,"libpandaexpress.dll") + lib = os.path.join(dir, "libpandaexpress.dll") if (os.path.exists(lib)): target = dir if (target == None): - print "Cannot find libpandaexpress. Exiting." - sys.exit(1) + raise "Cannot find libpandaexpress.dll" path=os.environ["PATH"] if (path.startswith(target+";")==0): os.environ["PATH"] = target+";"+path +def Dtool_PreloadDLL(module): + """ Preloading solves the problem that python 2.5 on + windows can't find DLLs - it can only find PYDs. The + preloader is able to find DLLs.""" + + if (sys.platform != "win32"): + return + if (sys.modules.has_key(module)): + return + target = None + for dir in sys.path + [sys.prefix]: + lib = os.path.join(dir, module + ".dll") + if (os.path.exists(lib)): + target = dir + if (target == None): + raise "DLL loader cannot find "+module+"." + imp.load_dynamic(module, os.path.join(target, module + ".dll")) + +Dtool_PreloadDLL("libpandaexpress") from libpandaexpress import * def Dtool_ObjectToDict(clas, name, obj): diff --git a/direct/src/ffi/DoGenPyCode.py b/direct/src/ffi/DoGenPyCode.py index 378c7d33bf..5da069983a 100644 --- a/direct/src/ffi/DoGenPyCode.py +++ b/direct/src/ffi/DoGenPyCode.py @@ -224,6 +224,8 @@ def doErrorCheck(): FFIConstants.CodeModuleNameList = codeLibs def generateNativeWrappers(): + from direct.extensions_native.extension_native_helpers import Dtool_PreloadDLL + # Empty out the output directories of unnecessary crud from # previous runs before we begin. for file in os.listdir(outputCodeDir): @@ -253,6 +255,7 @@ def generateNativeWrappers(): # each named module. for moduleName in FFIConstants.CodeModuleNameList: print 'Importing code library: ' + moduleName + Dtool_PreloadDLL(moduleName) exec('import %s as module' % moduleName) pandaModules.write('from %sModules import *\n' % (moduleName)) @@ -261,6 +264,7 @@ def generateNativeWrappers(): moduleModules = open(moduleModulesFilename, 'w') moduleModules.write('from extension_native_helpers import *\n') + moduleModules.write('Dtool_PreloadDLL("%s")\n' % (moduleName)) moduleModules.write('from %s import *\n\n' % (moduleName)) # Now look for extensions diff --git a/direct/src/http/WebRequest.py b/direct/src/http/WebRequest.py index 674deafddf..705489ccb7 100755 --- a/direct/src/http/WebRequest.py +++ b/direct/src/http/WebRequest.py @@ -1,5 +1,5 @@ import direct -from libdirect import HttpRequest +from pandac.PandaModules import HttpRequest from direct.directnotify.DirectNotifyGlobal import directNotify from direct.task.TaskManagerGlobal import taskMgr diff --git a/direct/src/showbase/PythonUtil.py b/direct/src/showbase/PythonUtil.py index 765ac474b7..0f89573f7f 100644 --- a/direct/src/showbase/PythonUtil.py +++ b/direct/src/showbase/PythonUtil.py @@ -45,9 +45,9 @@ import gc import traceback from direct.directutil import Verify - # Don't import libpandaexpressModules, which doesn't get built until # genPyCode. +import direct.extensions_native.extension_native_helpers from libpandaexpress import ConfigVariableBool ScalarTypes = (types.FloatType, types.IntType, types.LongType) diff --git a/direct/src/task/Task.py b/direct/src/task/Task.py index 45dc80de67..40f07c8ccd 100644 --- a/direct/src/task/Task.py +++ b/direct/src/task/Task.py @@ -19,8 +19,10 @@ import fnmatch import string import signal try: + Dtool_PreloadDLL("libp3heapq") from libp3heapq import heappush, heappop, heapify except: + Dtool_PreloadDLL("libheapq") from libheapq import heappush, heappop, heapify import types diff --git a/doc/makepanda/makepanda.py b/doc/makepanda/makepanda.py index 3cabd6e3b6..fe52edde03 100755 --- a/doc/makepanda/makepanda.py +++ b/doc/makepanda/makepanda.py @@ -1041,7 +1041,7 @@ if (COMPILER=="MSVC"): CopyAllFiles("built/bin/", THIRDPARTYLIBS+"extras"+"/bin/") if (sys.platform == "win32"): if (PkgSkip("PYTHON")==0): - CopyFile('built/bin/python24.dll', 'thirdparty/win-python/python24.dll') + CopyFile('built/bin/python25.dll', 'thirdparty/win-python/python25.dll') CopyTree('built/python', 'thirdparty/win-python') ConditionalWriteFile('built/python/panda.pth',"..\n../bin\n") diff --git a/doc/makepanda/makepandacore.py b/doc/makepanda/makepandacore.py index 95b5e56abd..0fd49ae5b1 100644 --- a/doc/makepanda/makepandacore.py +++ b/doc/makepanda/makepandacore.py @@ -694,7 +694,7 @@ def SdkLocatePython(): if (PkgSkip("PYTHON")==0): if (sys.platform == "win32"): SDK["PYTHON"]="thirdparty/win-python" - SDK["PYTHONVERSION"]="python2.4" + SDK["PYTHONVERSION"]="python2.5" else: os.system("python -V > built/tmp/pythonversion 2>&1") pv=ReadFile("built/tmp/pythonversion")