Skip to content

Commit 995ba28

Browse files
committed
makepanda: allow building multiple Python versions in one built dir
This is done by adding a PyTargetAdd function, which builds the target into a Python ABI-specific temporary directory, allowing multiple Python versions to be built into the same built dir side-by-side. This could greatly speed up buildbot builds. It also paves the way for building multiple Python versions in the same makepanda call / installer by changing PyTargetAdd to add one target per enabled Python version.
1 parent f43bd1a commit 995ba28

File tree

5 files changed

+482
-459
lines changed

5 files changed

+482
-459
lines changed

makepanda/installer.nsi

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -331,37 +331,48 @@ SectionGroup "Python support"
331331
SetOutPath $INSTDIR\panda3d
332332
File /r "${BUILT}\panda3d\*.py"
333333

334-
File /r /x bullet.pyd /x ode.pyd /x physx.pyd /x rocket.pyd "${BUILT}\panda3d\*.pyd"
334+
File /nonfatal /r "${BUILT}\panda3d\core${EXT_SUFFIX}"
335+
File /nonfatal /r "${BUILT}\panda3d\ai${EXT_SUFFIX}"
336+
File /nonfatal /r "${BUILT}\panda3d\awesomium${EXT_SUFFIX}"
337+
File /nonfatal /r "${BUILT}\panda3d\direct${EXT_SUFFIX}"
338+
File /nonfatal /r "${BUILT}\panda3d\egg${EXT_SUFFIX}"
339+
File /nonfatal /r "${BUILT}\panda3d\fx${EXT_SUFFIX}"
340+
File /nonfatal /r "${BUILT}\panda3d\interrogatedb${EXT_SUFFIX}"
341+
File /nonfatal /r "${BUILT}\panda3d\physics${EXT_SUFFIX}"
342+
File /nonfatal /r "${BUILT}\panda3d\_rplight${EXT_SUFFIX}"
343+
File /nonfatal /r "${BUILT}\panda3d\skel${EXT_SUFFIX}"
344+
File /nonfatal /r "${BUILT}\panda3d\vision${EXT_SUFFIX}"
345+
File /nonfatal /r "${BUILT}\panda3d\vrpn${EXT_SUFFIX}"
335346

336347
!ifdef HAVE_BULLET
337348
SectionGetFlags ${SecBullet} $R0
338349
IntOp $R0 $R0 & ${SF_SELECTED}
339350
StrCmp $R0 ${SF_SELECTED} 0 SkipBulletPyd
340-
File /nonfatal /r "${BUILT}\panda3d\bullet.pyd"
351+
File /nonfatal /r "${BUILT}\panda3d\bullet${EXT_SUFFIX}"
341352
SkipBulletPyd:
342353
!endif
343354

344355
!ifdef HAVE_ODE
345356
SectionGetFlags ${SecODE} $R0
346357
IntOp $R0 $R0 & ${SF_SELECTED}
347358
StrCmp $R0 ${SF_SELECTED} 0 SkipODEPyd
348-
File /nonfatal /r "${BUILT}\panda3d\ode.pyd"
359+
File /nonfatal /r "${BUILT}\panda3d\ode${EXT_SUFFIX}"
349360
SkipODEPyd:
350361
!endif
351362

352363
!ifdef HAVE_PHYSX
353364
SectionGetFlags ${SecPhysX} $R0
354365
IntOp $R0 $R0 & ${SF_SELECTED}
355366
StrCmp $R0 ${SF_SELECTED} 0 SkipPhysXPyd
356-
File /nonfatal /r "${BUILT}\panda3d\physx.pyd"
367+
File /nonfatal /r "${BUILT}\panda3d\physx${EXT_SUFFIX}"
357368
SkipPhysXPyd:
358369
!endif
359370

360371
!ifdef HAVE_ROCKET
361372
SectionGetFlags ${SecRocket} $R0
362373
IntOp $R0 $R0 & ${SF_SELECTED}
363374
StrCmp $R0 ${SF_SELECTED} 0 SkipRocketPyd
364-
File /nonfatal /r "${BUILT}\panda3d\rocket.pyd"
375+
File /nonfatal /r "${BUILT}\panda3d\rocket${EXT_SUFFIX}"
365376
SkipRocketPyd:
366377
!endif
367378

makepanda/installpanda.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -175,6 +175,7 @@ def InstallPanda(destdir="", prefix="/usr", outputdir="built", libdir=GetLibDir(
175175
oscmd("mkdir -m 0755 -p "+destdir+prefix+"/share/applications")
176176
oscmd("mkdir -m 0755 -p "+destdir+libdir+"/panda3d")
177177
oscmd("mkdir -m 0755 -p "+destdir+PPATH)
178+
oscmd("mkdir -m 0755 -p "+destdir+PPATH+"/panda3d")
178179

179180
if (sys.platform.startswith("freebsd")):
180181
oscmd("mkdir -m 0755 -p "+destdir+prefix+"/etc")
@@ -194,13 +195,17 @@ def InstallPanda(destdir="", prefix="/usr", outputdir="built", libdir=GetLibDir(
194195

195196
oscmd("cp -R "+outputdir+"/include "+destdir+prefix+"/include/panda3d")
196197
oscmd("cp -R "+outputdir+"/pandac "+destdir+prefix+"/share/panda3d/")
197-
oscmd("cp -R "+outputdir+"/panda3d "+destdir+PPATH+"/")
198198
oscmd("cp -R "+outputdir+"/models "+destdir+prefix+"/share/panda3d/")
199199
if os.path.isdir("samples"): oscmd("cp -R samples "+destdir+prefix+"/share/panda3d/")
200200
if os.path.isdir(outputdir+"/direct"): oscmd("cp -R "+outputdir+"/direct "+destdir+prefix+"/share/panda3d/")
201201
if os.path.isdir(outputdir+"/Pmw"): oscmd("cp -R "+outputdir+"/Pmw "+destdir+prefix+"/share/panda3d/")
202202
if os.path.isdir(outputdir+"/plugins"): oscmd("cp -R "+outputdir+"/plugins "+destdir+prefix+"/share/panda3d/")
203203

204+
suffix = GetExtensionSuffix()
205+
for base in os.listdir(outputdir + "/panda3d"):
206+
if base.endswith(".py") or (base.endswith(suffix) and '.' not in base[:-len(suffix)]):
207+
oscmd("cp "+outputdir+"/panda3d/"+base+" "+destdir+PPATH+"/panda3d/"+base)
208+
204209
WriteMimeFile(destdir+prefix+"/share/mime-info/panda3d.mime", MIME_INFO)
205210
WriteKeysFile(destdir+prefix+"/share/mime-info/panda3d.keys", MIME_INFO)
206211
WriteMimeXMLFile(destdir+prefix+"/share/mime/packages/panda3d.xml", MIME_INFO)

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy