summaryrefslogtreecommitdiff
path: root/py/makebindist.py
diff options
context:
space:
mode:
authorMark Spruiell <mes@zeroc.com>2004-11-17 02:31:56 +0000
committerMark Spruiell <mes@zeroc.com>2004-11-17 02:31:56 +0000
commitb764f3b102421d623c9a19e5f0163e75a64cd57b (patch)
tree49a5061fb5967410729751a4fe18abc27795310b /py/makebindist.py
parentedits for binary dist (diff)
downloadice-b764f3b102421d623c9a19e5f0163e75a64cd57b.tar.bz2
ice-b764f3b102421d623c9a19e5f0163e75a64cd57b.tar.xz
ice-b764f3b102421d623c9a19e5f0163e75a64cd57b.zip
initial commit
Diffstat (limited to 'py/makebindist.py')
-rwxr-xr-xpy/makebindist.py309
1 files changed, 309 insertions, 0 deletions
diff --git a/py/makebindist.py b/py/makebindist.py
new file mode 100755
index 00000000000..9d77ecf084d
--- /dev/null
+++ b/py/makebindist.py
@@ -0,0 +1,309 @@
+#!/usr/bin/env python
+# **********************************************************************
+#
+# Copyright (c) 2003-2004 ZeroC, Inc. All rights reserved.
+#
+# This copy of Ice is licensed to you under the terms described in the
+# ICE_LICENSE file included in this distribution.
+#
+# **********************************************************************
+
+import os, sys, shutil, fnmatch, re, string, glob
+
+#
+# Show usage information.
+#
+def usage():
+ print "Usage: " + sys.argv[0] + " [options] [tag]"
+ print
+ print "Options:"
+ print "-h Show this message."
+ print "-v Be verbose."
+ print
+ print "If no tag is specified, HEAD is used."
+
+def getIceVersion(file):
+ config = open(file, "r")
+ return re.search("ICE_STRING_VERSION \"([0-9\.]*)\"", config.read()).group(1)
+
+def getIceSoVersion(file):
+ config = open(file, "r")
+ intVersion = int(re.search("ICE_INT_VERSION ([0-9]*)", config.read()).group(1))
+ majorVersion = intVersion / 10000
+ minorVersion = intVersion / 100 - 100 * majorVersion
+ return '%d' % (majorVersion * 10 + minorVersion)
+
+def copyLibrary(src, dst, name):
+ global platform, version, intVer
+
+ if platform == "hpux":
+ soBase = name
+ soLib = name + ".sl"
+ else:
+ soBase = name + ".so"
+ soLib = soBase
+
+ if platform == "macosx":
+ soVer = name + '.' + version + ".dylib"
+ soInt = name + '.' + intVer + ".dylib"
+ soLib = name + ".dylib"
+ else:
+ soVer = soBase + '.' + version
+ soInt = soBase + '.' + intVer
+
+ cwd = os.getcwd()
+ shutil.copyfile(src + "/" + soVer, dst + "/" + soVer)
+ os.chdir(dst)
+ os.symlink(soVer, soInt)
+ os.symlink(soInt, soLib)
+ os.chdir(cwd)
+
+#
+# Check arguments
+#
+tag = "-rHEAD"
+verbose = 0
+for x in sys.argv[1:]:
+ if x == "-h":
+ usage()
+ sys.exit(0)
+ elif x == "-v":
+ verbose = 1
+ elif x.startswith("-"):
+ print sys.argv[0] + ": unknown option `" + x + "'"
+ print
+ usage()
+ sys.exit(1)
+ else:
+ tag = "-r" + x
+
+if not os.environ.has_key("ICE_HOME"):
+ print "The ICE_HOME environment variable is not set."
+ sys.exit(1)
+
+#
+# Get platform.
+#
+platform = ""
+if sys.platform.startswith("win") or sys.platform.startswith("cygwin"):
+ platform = "win32"
+elif sys.platform.startswith("linux"):
+ platform = "linux"
+elif sys.platform.startswith("sunos"):
+ platform = "solaris"
+elif sys.platform.startswith("hp"):
+ platform = "hpux"
+elif sys.platform.startswith("darwin"):
+ platform = "macosx"
+elif sys.platform.startswith("aix"):
+ platform = "aix"
+else:
+ print "unknown platform (" + sys.platform + ")!"
+ sys.exit(1)
+
+#if not os.path.exists(os.path.join("python", "Ice_BuiltinSequences_ice.py")):
+# print "makebindist.py must be run in a compiled IcePy tree"
+# sys.exit(1)
+
+#
+# Save the current directory.
+#
+topdir = os.getcwd()
+
+#
+# Remove any existing distribution directory and create a new one.
+#
+distdir = "bindist"
+if os.path.exists(distdir):
+ shutil.rmtree(distdir)
+os.mkdir(distdir)
+os.chdir(distdir)
+cwd = os.getcwd()
+
+#
+# Export sources from CVS.
+#
+if verbose:
+ quiet = ""
+else:
+ quiet = "-Q"
+if platform == "aix":
+ os.environ["LIBPATH"] = ""
+ os.system("cvs " + quiet + " -d cvsint.mutablerealms.com:/home/cvsroot export " + tag +
+ " ice/slice ice/include/IceUtil/Config.h icepy")
+else:
+ os.system("cvs " + quiet + " -d cvs.mutablerealms.com:/home/cvsroot export " + tag +
+ " ice/slice ice/include/IceUtil/Config.h icepy")
+
+#
+# Get Ice version.
+#
+version = getIceVersion("ice/include/IceUtil/Config.h")
+intVer = getIceSoVersion("ice/include/IceUtil/Config.h")
+
+#
+# Verify Ice version in CVS export matches the one in ICE_HOME.
+#
+version2 = getIceVersion(os.environ["ICE_HOME"] + "/include/IceUtil/Config.h")
+if version != version2:
+ print sys.argv[0] + ": the CVS version (" + version + ") does not match ICE_HOME (" + version2 + ")"
+ sys.exit(1)
+
+#
+# Copy Slice directories.
+#
+print "Copying Slice directories..."
+slicedirs = [\
+ "Glacier",\
+ "Glacier2",\
+ "Ice",\
+ "IceBox",\
+ "IcePack",\
+ "IcePatch",\
+ "IceStorm",\
+]
+os.mkdir(os.path.join("icepy", "slice"))
+for x in slicedirs:
+ shutil.copytree(os.path.join("ice", "slice", x), os.path.join("icepy", "slice", x), 1)
+for x in glob.glob(os.path.join("ice", "config", "Make.rules.*")):
+ shutil.copyfile(x, os.path.join("icepy", "config", os.path.basename(x)))
+
+#
+# Translate Slice files.
+#
+print "Translating..."
+cwd = os.getcwd()
+os.chdir(os.path.join("icepy", "python"))
+if verbose:
+ quiet = ""
+else:
+ quiet = " -s"
+os.system("gmake" + quiet)
+os.chdir(cwd)
+
+#
+# Remove files.
+#
+print "Removing unnecessary files..."
+filesToRemove = [ \
+ os.path.join("icepy", "makedist.py"), \
+ #os.path.join("icepy", "makebindist.py"), \
+ os.path.join("icepy", "all.dsw"), \
+ os.path.join("icepy", "Makefile"), \
+ os.path.join("icepy", "config", "Make.rules"), \
+ os.path.join("icepy", "python", "Makefile"), \
+ os.path.join("icepy", "python", "generate.mak"), \
+ os.path.join("icepy", "python", "Python.dsp"), \
+ os.path.join("icepy", "bin", ".dummy"), \
+ ]
+for x in filesToRemove:
+ os.remove(x)
+shutil.rmtree(os.path.join("icepy", "modules"))
+
+#
+# Copy executables and libraries.
+#
+icehome = os.environ["ICE_HOME"]
+executables = [ ]
+libraries = [ ]
+symlinks = 0
+debug = ""
+strip = 1
+iceExecutables = [ \
+ "icecpp",\
+ "slice2py",\
+]
+iceLibraries = [ \
+ "libIceUtil",\
+ "libSlice",\
+ "libIce",\
+ "libIceSSL",\
+ "libIceXML",\
+]
+pyLibraries = [ \
+ "IcePy",\
+]
+if platform != "aix":
+ symlinks = 1
+
+bindir = os.path.join("icepy", "bin")
+libdir = os.path.join("icepy", "lib")
+
+for x in iceExecutables:
+ shutil.copyfile(icehome + "/bin/" + x, bindir + "/" + x)
+
+if symlinks:
+ for so in iceLibraries:
+ copyLibrary(icehome + "/lib", libdir, so)
+
+ for so in pyLibraries:
+ copyLibrary(topdir + "/lib", libdir, so)
+else:
+ for lib in iceLibraries:
+ if platform == "aix":
+ shutil.copyfile(icehome + "/lib/" + lib + ".a", libdir + "/" + lib + ".a")
+ else:
+ shutil.copyfile(icehome + "/lib/" + lib, libdir + "/" + lib)
+ for lib in pyLibraries:
+ if platform == "aix":
+ shutil.copyfile("lib/" + lib + ".a", libdir + "/" + lib + ".a")
+ else:
+ shutil.copyfile(topdir + "/lib", libdir + "/" + lib)
+
+if strip:
+
+ stripOpts=""
+ if platform == "macosx":
+ stripOpts="-x"
+
+ for x in iceExecutables:
+ os.system("strip " + stripOpts + " " + bindir + "/" + x)
+ os.chmod(bindir + "/" + x, 0755)
+ for x in iceLibraries:
+ if platform == "hpux":
+ soLib = x + ".sl"
+ elif platform == "macosx":
+ soLib = x + ".dylib"
+ elif platform == "aix":
+ soLib = x + ".a"
+ else:
+ soLib = x + ".so"
+ os.system("strip " + stripOpts + " " + libdir + "/" + soLib)
+ for x in pyLibraries:
+ if platform == "hpux":
+ soLib = x + ".sl"
+ elif platform == "macosx":
+ soLib = x + ".dylib"
+ elif platform == "aix":
+ soLib = x + ".a"
+ else:
+ soLib = x + ".so"
+ os.system("strip " + stripOpts + " " + libdir + "/" + soLib)
+
+
+#
+# Create binary archives.
+#
+icever = "IcePy-" + version
+os.rename("icepy", icever)
+if verbose:
+ quiet = "v"
+else:
+ quiet = ""
+os.system("tar c" + quiet + "vf " + icever + "-bin-" + platform + ".tar " + icever)
+os.system("gzip -9 " + icever + "-bin-" + platform + ".tar")
+if verbose:
+ quiet = ""
+else:
+ quiet = "-q"
+os.system("zip -9ry " + quiet + " " + icever + "-bin-" + platform + ".zip " + icever)
+
+#
+# Copy files (README, etc.).
+#
+
+#
+# Done.
+#
+shutil.rmtree(icever)
+shutil.rmtree("ice")