Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'tools/scons/bs/bs_arc.py')
-rw-r--r--tools/scons/bs/bs_arc.py241
1 files changed, 241 insertions, 0 deletions
diff --git a/tools/scons/bs/bs_arc.py b/tools/scons/bs/bs_arc.py
new file mode 100644
index 00000000000..43b191a473a
--- /dev/null
+++ b/tools/scons/bs/bs_arc.py
@@ -0,0 +1,241 @@
+# archive targets ('scons release')
+# and extra functions
+#
+# Mac OS: appit
+# Unices: zipit -> .tar.gz
+# Windows: zipit -> .zip
+#
+
+import os
+import sys
+import string
+import bs_dirs
+
+import bs_globals
+
+def add2arc(arc, file):
+ """
+ Add file to arc. For win32 arc is a Zipfile, for unices it's a Tarfile
+ """
+ if sys.platform == 'win32':
+ arc.write(file)
+ else:
+ arc.add(file)
+
+def appit(target, source, env):
+ if sys.platform == 'darwin':
+ import shutil
+ import commands
+ import os.path
+
+ target = 'blender'
+ sourceinfo = "source/darwin/%s.app/Contents/Info.plist"%target
+ targetinfo = "%s.app/Contents/Info.plist"%target
+
+ cmd = '%s.app'%target
+ if os.path.isdir(cmd):
+ shutil.rmtree('%s.app'%target)
+ shutil.copytree("source/darwin/%s.app"%target, '%s.app'%target)
+ cmd = "cat %s | sed s/VERSION/`cat release/VERSION`/ | sed s/DATE/`date +'%%Y-%%b-%%d'`/ > %s"%(sourceinfo,targetinfo)
+ commands.getoutput(cmd)
+ cmd = 'cp %s %s.app/Contents/MacOS/%s'%(target, target, target)
+ commands.getoutput(cmd)
+ if user_options_dict['BUILD_BINARY'] == 'debug':
+ print "building debug"
+ else :
+ cmd = 'strip -u -r %s.app/Contents/MacOS/%s'%(target, target)
+ commands.getoutput(cmd)
+ cmd = '%s.app/Contents/Resources/'%target
+ shutil.copy('bin/.blender/.bfont.ttf', cmd)
+ shutil.copy('bin/.blender/.Blanguages', cmd)
+ cmd = 'cp -R bin/.blender/locale %s.app/Contents/Resources/'%target
+ commands.getoutput(cmd)
+ cmd = 'mkdir %s.app/Contents/MacOS/.blender'%target
+ commands.getoutput(cmd)
+ cmd = 'cp -R release/bpydata %s.app/Contents/MacOS/.blender'%target
+ commands.getoutput(cmd)
+ cmd = 'cp -R release/scripts %s.app/Contents/MacOS/.blender/'%target
+ commands.getoutput(cmd)
+ cmd = 'cp -R release/plugins %s.app/Contents/Resources/'%target
+ commands.getoutput(cmd)
+ cmd = 'chmod +x %s.app/Contents/MacOS/%s'%(target, target)
+ commands.getoutput(cmd)
+ cmd = 'find %s.app -name CVS -prune -exec rm -rf {} \;'%target
+ commands.getoutput(cmd)
+ cmd = 'find %s.app -name .DS_Store -exec rm -rf {} \;'%target
+ commands.getoutput(cmd)
+
+ if user_options_dict['BUILD_BLENDER_PLAYER'] == 1:
+ target = 'blenderplayer'
+ sourceinfo = "source/darwin/%s.app/Contents/Info.plist"%target
+ targetinfo = "%s.app/Contents/Info.plist"%target
+
+ cmd = '%s.app'%target
+ if os.path.isdir(cmd):
+ shutil.rmtree('%s.app'%target)
+ shutil.copytree("source/darwin/%s.app"%target, '%s.app'%target)
+ cmd = "cat %s | sed s/VERSION/`cat release/VERSION`/ | sed s/DATE/`date +'%%Y-%%b-%%d'`/ > %s"%(sourceinfo,targetinfo)
+ commands.getoutput(cmd)
+ cmd = 'cp %s %s.app/Contents/MacOS/%s'%(target, target, target)
+ commands.getoutput(cmd)
+ if user_options_dict['BUILD_BINARY'] == 'debug':
+ print "building debug player"
+ else :
+ cmd = 'strip -u -r %s.app/Contents/MacOS/%s'%(target, target)
+ commands.getoutput(cmd)
+ cmd = '%s.app/Contents/Resources/'%target
+ shutil.copy('bin/.blender/.bfont.ttf', cmd)
+ shutil.copy('bin/.blender/.Blanguages', cmd)
+ cmd = 'cp -R bin/.blender/locale %s.app/Contents/Resources/'%target
+ commands.getoutput(cmd)
+ cmd = 'cp -R release/bpydata %s.app/Contents/MacOS/.blender'%target
+ commands.getoutput(cmd)
+ cmd = 'cp -R release/scripts %s.app/Contents/MacOS/.blender/'%target
+ commands.getoutput(cmd)
+ cmd = 'cp -R release/plugins %s.app/Contents/Resources/'%target
+ commands.getoutput(cmd)
+ cmd = 'chmod +x %s.app/Contents/MacOS/%s'%(target, target)
+ commands.getoutput(cmd)
+ cmd = 'find %s.app -name CVS -prune -exec rm -rf {} \;'%target
+ commands.getoutput(cmd)
+ cmd = 'find %s.app -name .DS_Store -exec rm -rf {} \;'%target
+ commands.getoutput(cmd)
+
+ else:
+ print "This target is for the Os X platform only"
+
+def zipit(env, target, source):
+ try:
+ if sys.platform == 'win32':
+ import zipfile
+ else:
+ import tarfile
+ except:
+ if sys.platform == 'win32':
+ print "no zipfile module found"
+ else:
+ print "no tarfile module found"
+ print "make sure you use python 2.3"
+ print
+ return
+
+ import shutil
+ import glob
+ import time
+
+ startdir = os.getcwd()
+ pf=""
+ zipext = ""
+ zipname = ""
+
+ today = time.strftime("%Y%m%d", time.gmtime()) # get time in the form 20040714
+
+ if bs_dirs.preparedist()==0:
+ print "check output for error"
+ return
+
+ if sys.platform == 'win32':
+ zipext += ".zip"
+ pf = "windows"
+ elif sys.platform == 'linux2' or sys.platform == 'linux-i386':
+ zipext += ".tar.gz"
+ pf = "linux"
+ elif sys.platform == 'freebsd4':
+ zipext += ".tar.gz"
+ pf = "freebsd4"
+ elif sys.platform == 'freebsd5':
+ zipext += ".tar.gz"
+ pf = "freebsd5"
+ elif sys.platform == 'cygwin':
+ zipext += ".tar.gz"
+ pf = "cygwin"
+
+ if bs_globals.user_options_dict['BUILD_BINARY'] == 'release':
+ blendname = "blender-" + bs_globals.version + "-" + bs_globals.config_guess
+ else:
+ blendname = "bf_blender_" + pf + "_" + today
+
+ zipname = blendname + zipext
+
+ if os.path.isdir(blendname):
+ shutil.rmtree(blendname)
+ shutil.move(startdir + os.sep + "dist", blendname)
+
+ print
+ if sys.platform == 'win32':
+ print "Create the zip!"
+ else:
+ print "Create the tarball!"
+ print
+
+ if sys.platform == 'win32':
+ thezip = zipfile.ZipFile(zipname, 'w', zipfile.ZIP_DEFLATED)
+ else:
+ thezip = tarfile.open(zipname, 'w:gz')
+
+ for root, dirs, files in os.walk(blendname, topdown=False):
+ for name in files:
+ if name in [zipname]:
+ print "skipping self"
+ else:
+ file = root + "/" + name
+ print "adding: " + file
+ add2arc(thezip, file)
+
+ thezip.close()
+
+ os.chdir(startdir)
+ shutil.move(blendname, startdir + os.sep + "dist")
+
+ if bs_dirs.finalisedist(zipname)==0:
+ print "encountered an error in finalisedist"
+ print
+ return
+
+ print
+ print "Blender has been successfully packaged"
+ print "You can find the file %s in the root source directory"%zipname
+ print
+
+def printadd(env, target, source):
+ """
+ Print warning message if platform hasn't been added to zipit() yet
+ """
+
+ print
+ print "############"
+ print
+ print "Make sure zipit() works for your platform:"
+ print " - binaries to copy (naming?)"
+ print " - possible libraries?"
+ print " - archive format?"
+ print
+ print "/Nathan Letwory (jesterKing)"
+ print
+
+def BlenderRelease(target):
+ """
+ Make a Release package (tarball, zip, bundle).
+
+ target = Name of package to make (string)
+ eg: BlenderRelease('blender')
+ """
+
+ if sys.platform == 'darwin':
+ app_env = bs_globals.init_env.Copy()
+ Mappit = app_env.Command('appit', bs_globals.appname, appit)
+ if bs_globals.user_options_dict['BUILD_BLENDER_PLAYER'] == 1:
+ app_env.Depends(Mappit, bs_globals.playername)
+ app_env.Alias("release", Mappit)
+ elif sys.platform in ['win32', 'linux2', 'linux-i386', 'freebsd4', 'freebsd5','cygwin']:
+ release_env = bs_globals.init_env.Copy()
+ releaseit = release_env.Command('blenderrelease', bs_globals.appname, zipit)
+ if bs_globals.user_options_dict['BUILD_BLENDER_PLAYER'] == 1:
+ release_env.Depends(releaseit, bs_globals.playername)
+ release_env.Alias("release", releaseit)
+ else:
+ release_env = init_env.Copy()
+ releaseit = release_env.Command('blender.tar.gz', bs_globals.appname, printadd)
+ if user_options_dict['BUILD_BLENDER_PLAYER'] == 1:
+ release_env.Depends(releaseit, bs_globals.playername)
+ release_env.Alias("release", releaseit) \ No newline at end of file