mirror of
https://github.com/panda3d/panda3d.git
synced 2025-10-04 10:54:24 -04:00
299 lines
12 KiB
Python
Executable File
299 lines
12 KiB
Python
Executable File
#!/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)
|