| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298 |
- #!/usr/bin/python
- ########################################################################
- ##
- ##
- ## This script builds the panda source tarballs and zip-files
- ##
- ## usage: maketarball [version] [more options]
- ##
- ## The source tarball contains most of what is in CVS, but some of the
- ## control files (like the CVS directories themselves) are stripped out.
- ##
- ## The source tarball contains an rpmbuild 'spec' file so that you can
- ## easily build a binary RPM: rpmbuild -tb panda3d-version.tar.GZ
- ##
- ## The 'spec' file included in the tarball uses the 'makepanda' build
- ## system to compile panda.
- ##
- ##
- ########################################################################
- import sys,os,time,stat,string,re,getopt,cPickle;
- def oscmd(cmd):
- print cmd
- sys.stdout.flush()
- if (os.system(cmd)): sys.exit("Failed")
- def writefile(dest,desiredcontents):
- print "Generating file: "+dest
- sys.stdout.flush()
- try:
- wfile = open(dest, 'wb');
- wfile.write(desiredcontents);
- wfile.close();
- except: sys.exit("Cannot write to "+dest);
- ########################################################################
- #
- # Locate the root of the panda tree
- #
- ########################################################################
- PANDASOURCE=os.path.dirname(os.path.abspath(sys.path[0]))
- if ((os.path.exists(os.path.join(PANDASOURCE,"makepanda/makepanda.py"))==0) or
- (os.path.exists(os.path.join(PANDASOURCE,"dtool","src","dtoolbase","dtoolbase.h"))==0) or
- (os.path.exists(os.path.join(PANDASOURCE,"panda","src","pandabase","pandabase.h"))==0)):
- sys.exit("I am unable to locate the root of the panda source tree.")
- os.chdir(PANDASOURCE)
- ########################################################################
- ##
- ## Locate the Python SDK
- ##
- ########################################################################
- if sys.platform == "win32":
- PythonSDK="python2.2"
- if 0: # Needs testing:
- if (os.path.isdir("C:/Python22")): PythonSDK = "C:/Python22"
- elif (os.path.isdir("C:/Python23")): PythonSDK = "C:/Python23"
- elif (os.path.isdir("C:/Python24")): PythonSDK = "C:/Python24"
- elif (os.path.isdir("C:/Python25")): PythonSDK = "C:/Python25"
- else: sys.exit("Cannot find the python SDK")
- else:
- if (os.path.isdir("/usr/include/python2.5")): PythonSDK = "/usr/include/python2.5"
- elif (os.path.isdir("/usr/include/python2.4")): PythonSDK = "/usr/include/python2.4"
- elif (os.path.isdir("/usr/include/python2.3")): PythonSDK = "/usr/include/python2.3"
- elif (os.path.isdir("/usr/include/python2.2")): PythonSDK = "/usr/include/python2.2"
- else: sys.exit("Cannot find the python SDK")
- # this is so that the user can find out which version of python was used.
- ########################################################################
- ##
- ## Read the default version number from dtool/PandaVersion.pp
- ##
- ## Parse the command-line arguments.
- ##
- ########################################################################
- def printUsage():
- sys.exit("usage: maketarball [version]")
- if (len(sys.argv)>=2):
- VERSION = sys.argv[1]
- if (len(VERSION.split(".")) != 3): printUsage()
- elif (len(sys.argv)==1):
- VERSION="0.0.0"
- try:
- f = file("dtool/PandaVersion.pp","r")
- pattern = re.compile('^[ \t]*[#][ \t]*define[ \t]+PANDA_VERSION[ \t]+([0-9]+)[ \t]+([0-9]+)[ \t]+([0-9]+)')
- for line in f:
- match = pattern.match(line,0);
- if (match):
- VERSION = match.group(1)+"."+match.group(2)+"."+match.group(3)
- break
- f.close()
- except: sys.exit("Cannot read version number from dtool/PandaVersion.pp")
- else: printUsage()
- ########################################################################
- ##
- ## The SPEC File
- ##
- ########################################################################
- SPEC="""Summary: Panda 3D Engine
- Name: panda3d
- Version: VERSION
- Release: 1
- Source0: %{name}-%{version}.tar.gz
- License: Panda3D License
- Group: Development/Libraries
- BuildRoot: %{_builddir}/%{name}-%{version}/BUILDROOT
- %description
- The Panda3D engine.
- %prep
- %setup -q
- %build
- makepanda/makepanda.py --version VERSION --everything MOREARGUMENTS
- %install
- rm -rf $RPM_BUILD_ROOT
- mkdir -p $RPM_BUILD_ROOT/usr/bin
- mkdir -p $RPM_BUILD_ROOT/usr/include
- mkdir -p $RPM_BUILD_ROOT/usr/lib
- mkdir -p $RPM_BUILD_ROOT/usr/share/panda3d
- mkdir -p $RPM_BUILD_ROOT/usr/lib/PYTHONV/lib-dynload
- mkdir -p $RPM_BUILD_ROOT/usr/lib/PYTHONV/site-packages
- mkdir -p $RPM_BUILD_ROOT/etc/ld.so.conf.d
- mkdir -p $RPM_BUILD_ROOT/usr/bin
- sed -e 's@$THIS_PRC_DIR/[.][.]@/usr/share/panda3d@' < built/etc/Config.prc > $RPM_BUILD_ROOT/etc/Config.prc
- cp built/etc/Confauto.prc $RPM_BUILD_ROOT/etc/Confauto.prc
- cp --recursive built/include $RPM_BUILD_ROOT/usr/include/panda3d
- cp --recursive direct $RPM_BUILD_ROOT/usr/share/panda3d/direct
- cp --recursive built/pandac $RPM_BUILD_ROOT/usr/share/panda3d/pandac
- cp --recursive built/Pmw $RPM_BUILD_ROOT/usr/share/panda3d/Pmw
- cp --recursive built/epydoc $RPM_BUILD_ROOT/usr/share/panda3d/epydoc
- cp built/direct/__init__.py $RPM_BUILD_ROOT/usr/share/panda3d/direct/__init__.py
- cp --recursive SceneEditor $RPM_BUILD_ROOT/usr/share/panda3d/SceneEditor
- cp --recursive built/models $RPM_BUILD_ROOT/usr/share/panda3d/models
- cp --recursive samples $RPM_BUILD_ROOT/usr/share/panda3d/samples
- cp --recursive built/lib $RPM_BUILD_ROOT/usr/lib/panda3d
- cp doc/LICENSE $RPM_BUILD_ROOT/usr/lib/panda3d/LICENSE
- cp doc/LICENSE $RPM_BUILD_ROOT/usr/share/panda3d/LICENSE
- cp doc/LICENSE $RPM_BUILD_ROOT/usr/include/panda3d/LICENSE
- cp doc/ReleaseNotes $RPM_BUILD_ROOT/usr/share/panda3d/ReleaseNotes
- echo "/usr/lib/panda3d" > $RPM_BUILD_ROOT/etc/ld.so.conf.d/panda3d.conf
- echo "/usr/share/panda3d" > $RPM_BUILD_ROOT/usr/lib/PYTHONV/site-packages/panda3d.pth
- cp built/bin/* $RPM_BUILD_ROOT/usr/bin/
- for x in built/lib/* ; do
- base=`basename $x`
- ln -sf /usr/lib/panda3d/$base $RPM_BUILD_ROOT/usr/lib/PYTHONV/lib-dynload/$base
- done
- for x in $RPM_BUILD_ROOT/usr/share/panda3d/direct/src/* ; do
- if [ `basename $x` != extensions ] ; then
- python -c "import compileall; compileall.compile_dir('$x')"
- fi
- done
- python -c "import compileall ; compileall.compile_dir('$RPM_BUILD_ROOT/usr/share/panda3d/Pmw');"
- python -c "import compileall ; compileall.compile_dir('$RPM_BUILD_ROOT/usr/share/panda3d/epydoc');"
- python -c "import compileall ; compileall.compile_dir('$RPM_BUILD_ROOT/usr/share/panda3d/SceneEditor');"
- chmod -R 555 $RPM_BUILD_ROOT/usr/share/panda3d
- %post
- /sbin/ldconfig
- rm -rf /usr/lib/PYTHONV/direct
- rm -rf /usr/lib/PYTHONV/SceneEditor
- %postun
- /sbin/ldconfig
- %clean
- rm -rf $RPM_BUILD_ROOT
- %files
- %defattr(-,root,root)
- /etc/Confauto.prc
- /etc/Config.prc
- /usr/share/panda3d
- /etc/ld.so.conf.d/panda3d.conf
- /usr/bin
- /usr/lib
- /usr/include/panda3d
- """
- MORE=''
- for x in sys.argv[2:]: MORE=MORE+x+' '
- SPEC=SPEC.replace("VERSION",str(VERSION))
- SPEC=SPEC.replace("MOREARGUMENTS",MORE)
- SPEC=SPEC.replace("PYTHONV",os.path.basename(PythonSDK))
- ########################################################################
- ##
- ## Build the Zip-file and Tar-File
- ##
- ########################################################################
- TARDIR="panda3d-"+VERSION
- oscmd("rm -rf "+TARDIR)
- oscmd("mkdir -p "+TARDIR)
- oscmd("mkdir -p "+TARDIR+"/thirdparty")
- oscmd("ln -sf ../dtool "+TARDIR+"/dtool")
- oscmd("ln -sf ../panda "+TARDIR+"/panda")
- oscmd("ln -sf ../direct "+TARDIR+"/direct")
- oscmd("ln -sf ../pandaapp "+TARDIR+"/pandaapp")
- oscmd("ln -sf ../pandatool "+TARDIR+"/pandatool")
- oscmd("ln -sf ../ppremake "+TARDIR+"/ppremake")
- oscmd("ln -sf ../SceneEditor "+TARDIR+"/SceneEditor")
- oscmd("ln -sf ../dmodels "+TARDIR+"/dmodels")
- oscmd("ln -sf ../models "+TARDIR+"/models")
- oscmd("ln -sf ../samples "+TARDIR+"/samples")
- oscmd("ln -sf ../doc "+TARDIR+"/doc")
- oscmd("ln -sf ../makepanda "+TARDIR+"/makepanda")
- oscmd("ln -sf ../../thirdparty/linux-libs-a "+TARDIR+"/thirdparty/linux-libs-a")
- oscmd("ln -sf ../../thirdparty/Pmw "+TARDIR+"/thirdparty/Pmw")
- oscmd("ln -sf ../../thirdparty/epydoc "+TARDIR+"/thirdparty/epydoc")
- writefile(TARDIR+'/panda3d.spec',SPEC)
- oscmd("tar --exclude CVS -chzf "+TARDIR+".tar.gz "+TARDIR)
- oscmd("rm -rf "+TARDIR)
- oscmd("mkdir -p "+TARDIR)
- oscmd("mkdir -p "+TARDIR+"/thirdparty")
- oscmd("ln -sf ../dtool "+TARDIR+"/dtool")
- oscmd("ln -sf ../panda "+TARDIR+"/panda")
- oscmd("ln -sf ../direct "+TARDIR+"/direct")
- oscmd("ln -sf ../pandaapp "+TARDIR+"/pandaapp")
- oscmd("ln -sf ../pandatool "+TARDIR+"/pandatool")
- oscmd("ln -sf ../ppremake "+TARDIR+"/ppremake")
- oscmd("ln -sf ../SceneEditor "+TARDIR+"/SceneEditor")
- oscmd("ln -sf ../dmodels "+TARDIR+"/dmodels")
- oscmd("ln -sf ../models "+TARDIR+"/models")
- oscmd("ln -sf ../samples "+TARDIR+"/samples")
- oscmd("ln -sf ../doc "+TARDIR+"/doc")
- oscmd("ln -sf ../makepanda "+TARDIR+"/makepanda")
- oscmd("ln -sf ../../thirdparty/win-libs-vc7 "+TARDIR+"/thirdparty/win-libs-vc7")
- oscmd("ln -sf ../../thirdparty/win-python "+TARDIR+"/thirdparty/win-python")
- oscmd("ln -sf ../../thirdparty/win-util "+TARDIR+"/thirdparty/win-util")
- oscmd("ln -sf ../../thirdparty/win-nsis "+TARDIR+"/thirdparty/win-nsis")
- oscmd("ln -sf ../../thirdparty/win-extras "+TARDIR+"/thirdparty/win-extras")
- oscmd("ln -sf ../../thirdparty/Pmw "+TARDIR+"/thirdparty/Pmw")
- oscmd("ln -sf ../../thirdparty/epydoc "+TARDIR+"/thirdparty/epydoc")
- oscmd("zip -rq "+TARDIR+".zip "+TARDIR+" -x '*/CVS/*'")
- oscmd("rm -rf "+TARDIR)
- oscmd("mkdir -p "+TARDIR)
- oscmd("mkdir -p "+TARDIR+"/thirdparty")
- oscmd("ln -sf ../dtool "+TARDIR+"/dtool")
- oscmd("ln -sf ../panda "+TARDIR+"/panda")
- oscmd("ln -sf ../direct "+TARDIR+"/direct")
- oscmd("ln -sf ../pandaapp "+TARDIR+"/pandaapp")
- oscmd("ln -sf ../pandatool "+TARDIR+"/pandatool")
- oscmd("ln -sf ../ppremake "+TARDIR+"/ppremake")
- oscmd("ln -sf ../SceneEditor "+TARDIR+"/SceneEditor")
- oscmd("ln -sf ../dmodels "+TARDIR+"/dmodels")
- oscmd("ln -sf ../models "+TARDIR+"/models")
- oscmd("ln -sf ../doc "+TARDIR+"/doc")
- oscmd("ln -sf ../makepanda "+TARDIR+"/makepanda")
- oscmd("zip -rq "+TARDIR+"-sourceforge.zip "+TARDIR+" -x '*/CVS/*'")
- oscmd("rm -rf "+TARDIR)
- oscmd("mkdir -p "+TARDIR)
- oscmd("ln -sf ../samples "+TARDIR+"/samples")
- oscmd("zip -rq "+TARDIR+"-samples.zip "+TARDIR+" -x '*/CVS/*'")
- oscmd("rm -rf "+TARDIR)
- oscmd("mkdir -p "+TARDIR)
- oscmd("mkdir -p "+TARDIR+"/thirdparty")
- oscmd("ln -sf ../../thirdparty/linux-libs-a "+TARDIR+"/thirdparty/linux-libs-a")
- oscmd("ln -sf ../../thirdparty/Pmw "+TARDIR+"/thirdparty/Pmw")
- oscmd("ln -sf ../../thirdparty/epydoc "+TARDIR+"/thirdparty/epydoc")
- oscmd("zip -rq "+TARDIR+"-tools-linux.zip "+TARDIR+" -x '*/CVS/*'")
- oscmd("rm -rf "+TARDIR)
- oscmd("mkdir -p "+TARDIR)
- oscmd("mkdir -p "+TARDIR+"/thirdparty")
- oscmd("ln -sf ../../thirdparty/win-libs-vc7 "+TARDIR+"/thirdparty/win-libs-vc7")
- oscmd("ln -sf ../../thirdparty/win-python "+TARDIR+"/thirdparty/win-python")
- oscmd("ln -sf ../../thirdparty/win-util "+TARDIR+"/thirdparty/win-util")
- oscmd("ln -sf ../../thirdparty/win-nsis "+TARDIR+"/thirdparty/win-nsis")
- oscmd("ln -sf ../../thirdparty/win-extras "+TARDIR+"/thirdparty/win-extras")
- oscmd("ln -sf ../../thirdparty/Pmw "+TARDIR+"/thirdparty/Pmw")
- oscmd("ln -sf ../../thirdparty/epydoc "+TARDIR+"/thirdparty/epydoc")
- oscmd("zip -rq "+TARDIR+"-tools-win32.zip "+TARDIR+" -x '*/CVS/*'")
- oscmd("rm -rf "+TARDIR)
- oscmd("mkdir -p "+TARDIR)
- oscmd("ln -sf ../thirdparty "+TARDIR+"/thirdparty")
- oscmd("zip -rq "+TARDIR+"-tools-all.zip "+TARDIR+" -x '*/CVS/*'")
- oscmd("rm -rf "+TARDIR)
|