diff options
Diffstat (limited to 'Tools/wx/packaging')
-rw-r--r-- | Tools/wx/packaging/build-debian-installer.py | 36 | ||||
-rw-r--r-- | Tools/wx/packaging/build-mac-installer.py | 158 | ||||
-rw-r--r-- | Tools/wx/packaging/build-win-installer.py | 98 | ||||
-rw-r--r-- | Tools/wx/packaging/debian/changelog | 1 | ||||
-rw-r--r-- | Tools/wx/packaging/debian/compat | 1 | ||||
-rw-r--r-- | Tools/wx/packaging/debian/control | 29 | ||||
-rw-r--r-- | Tools/wx/packaging/debian/copyright | 18 | ||||
-rw-r--r-- | Tools/wx/packaging/debian/python-webkitwx.install | 1 | ||||
-rw-r--r-- | Tools/wx/packaging/debian/rules | 75 | ||||
-rw-r--r-- | Tools/wx/packaging/wxWebKitInstaller.iss.in | 79 |
10 files changed, 496 insertions, 0 deletions
diff --git a/Tools/wx/packaging/build-debian-installer.py b/Tools/wx/packaging/build-debian-installer.py new file mode 100644 index 0000000..5c6795d --- /dev/null +++ b/Tools/wx/packaging/build-debian-installer.py @@ -0,0 +1,36 @@ +#!/usr/bin/env python + +import os +import shutil +import sys + +sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), "..", "build"))) + +import build_utils + +script_dir = os.path.abspath(os.path.dirname(__file__)) +wxwebkit_dir = os.path.abspath(os.path.join(script_dir, "..", "..", "..", "WebKitBuild", "Debug" + build_utils.git_branch_name())) +wxwk_root = os.path.abspath(os.path.join(script_dir, "..", "..", "..")) + +try: + os.chdir(wxwk_root) + deb_dir = os.path.join(wxwk_root, 'wxwebkit') + if os.path.exists(deb_dir): + shutil.rmtree(deb_dir) + os.makedirs(deb_dir) + print "Archiving git tree..." + os.system('git archive --format=tar HEAD | gzip > %s/webkitwx_0.1.orig.tar.gz' % deb_dir) + src_root = os.path.join(deb_dir, 'webkitwx-0.1') + print "Extracting tree..." + os.makedirs(src_root) + os.chdir(src_root) + os.system('tar xzvf ../webkitwx_0.1.orig.tar.gz') + + shutil.copytree(os.path.join(script_dir, 'debian'), os.path.join(src_root, 'debian')) + + print "Building package..." + os.system('fakeroot debian/rules clean') + os.system('fakeroot debian/rules build') + os.system('debuild -i -rfakeroot -us -uc') +finally: + shutil.rmtree(os.path.join(src_root, 'debian')) diff --git a/Tools/wx/packaging/build-mac-installer.py b/Tools/wx/packaging/build-mac-installer.py new file mode 100644 index 0000000..5b76b0b --- /dev/null +++ b/Tools/wx/packaging/build-mac-installer.py @@ -0,0 +1,158 @@ +#!/usr/bin/env python + +# Copyright (C) 2009 Kevin Ollivier All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# +# THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY +# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR +# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY +# OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# +# Script for building Mac .pkg installer + +import commands +import datetime +import distutils.sysconfig +import glob +import optparse +import os +import shutil +import string +import sys +import tempfile + +script_dir = os.path.abspath(os.path.dirname(__file__)) +sys.path.append(os.path.abspath(os.path.join(script_dir, "..", "build"))) + +from build_utils import * + +import wx + +wxwk_root = os.path.abspath(os.path.join(script_dir, "..", "..", "..")) +wxwebkit_dir = os.path.abspath(os.path.join(wxwk_root, "WebKitBuild", get_config(wxwk_root) + git_branch_name())) + +wx_version = wx.__version__[:5] +py_version = sys.version[:3] + +date = str(datetime.date.today()) + +platform = "osx" + +pkgname = "wxWebKit-%s-wx%s-py%s-%s" % (platform, wx_version[:3], py_version, date) + +tempdir = "/tmp/%s" % (pkgname) + +if os.path.exists(tempdir): + shutil.rmtree(tempdir) + os.makedirs(tempdir) + +installroot = os.path.join(tempdir, "install-root") +installapps = os.path.join(tempdir, "install-apps") + +sp_root = distutils.sysconfig.get_python_lib() +wx_root = sp_root +if sys.platform.startswith("darwin"): + wx_root = "/usr/local/lib/wxPython-unicode-%s" % wx.__version__ + sp_root = "%s/lib/python%s/site-packages" % (wx_root, py_version) +sitepackages = "%s/wx-%s-mac-unicode/wx" % (sp_root, wx_version[:3]) +prefix = sitepackages + +def mac_update_dependencies(dylib, prefix): + """ + Copies any non-system dependencies into the bundle, and + updates the install name path to the new path in the bundle. + """ + global wx_root + system_prefixes = ["/usr/lib", "/System/Library", wx_root] + + output = commands.getoutput("otool -L %s" % dylib).strip() + for line in output.split("\n"): + filename = line.split("(")[0].strip() + if os.path.exists(filename): + print "checking dll %s" % filename + copy = True + for sys_prefix in system_prefixes: + if filename.startswith(sys_prefix): + copy = False + + if copy: + copydir = os.path.dirname(dylib) + + filedir, basename = os.path.split(filename) + dest_filename = os.path.join(prefix, basename) + copyname = os.path.join(copydir, basename) + if not os.path.exists(copyname): + shutil.copy(filename, copydir) + os.system("install_name_tool -id %s %s" % (dest_filename, copyname)) + + os.system("install_name_tool -change %s %s %s" % (filename, dest_filename, dylib)) + +def exitIfError(cmd): + print cmd + retval = os.system(cmd) + if retval != 0: + if os.path.exists(tempdir): + shutil.rmtree(tempdir) + sys.exit(1) + +wxroot = installroot + prefix +wxpythonroot = installroot + sitepackages + +try: + if not os.path.exists(wxroot): + os.makedirs(wxroot) + + if not os.path.exists(wxpythonroot): + os.makedirs(wxpythonroot) + + for wildcard in ["*.py", "*.so", "*.dylib"]: + files = glob.glob(os.path.join(wxwebkit_dir, wildcard)) + for afile in files: + shutil.copy(afile, wxpythonroot) + + if sys.platform.startswith("darwin"): + dylib_path = os.path.join(wxpythonroot, "libwxwebkit.dylib") + os.system("install_name_tool -id %s %s" % (os.path.join(prefix, "libwxwebkit.dylib"), dylib_path)) + mac_update_dependencies(dylib_path, prefix) + mac_update_dependencies(os.path.join(wxpythonroot, "_webview.so"), prefix) + + demodir = installroot + "/Applications/wxWebKit/Demos" + if not os.path.exists(demodir): + os.makedirs(demodir) + + shutil.copy(os.path.join(wxwk_root, "WebKit", "wx", "bindings", "python", "samples", "simple.py"), demodir) + + if os.path.exists(pkgname + ".pkg"): + shutil.rmtree(pkgname + ".pkg") + + pkg_args = ['--title ' + pkgname, + '--out %s.pkg' % pkgname, + '--version ' + date.strip(), + '--id org.wxwebkit.wxwebkit', + '--domain system', + '--root-volume-only', + '--root ' + installroot, + '--resources %s/mac/resources' % script_dir, + '--verbose' + ] + + packagemaker = "/Developer/Applications/Utilities/PackageMaker.app/Contents/MacOS/PackageMaker" + exitIfError(packagemaker + " %s" % (string.join(pkg_args, " "))) +finally: + if os.path.exists(tempdir): + shutil.rmtree(tempdir) diff --git a/Tools/wx/packaging/build-win-installer.py b/Tools/wx/packaging/build-win-installer.py new file mode 100644 index 0000000..ffbdd19 --- /dev/null +++ b/Tools/wx/packaging/build-win-installer.py @@ -0,0 +1,98 @@ +#!/usr/bin/env python + +# Copyright (C) 2008 Kevin Ollivier All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# +# THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY +# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR +# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY +# OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# +# Create a Windows installer package for wxPython wxWebKit binaries + +import sys, os, string +import commands +import datetime +import glob +from subprocess import * + +script_dir = os.path.abspath(os.path.dirname(__file__)) +sys.path.append(os.path.abspath(os.path.join(script_dir, "..", "build"))) + +from build_utils import * + +wxwk_root = os.path.abspath(os.path.join(script_dir, "..", "..", "..")) +wxwebkit_dir = os.path.abspath(os.path.join(wxwk_root, "WebKitBuild", get_config(wxwk_root) + git_branch_name())) + +# Find InnoSetup executable +def getInnoSetupPath(): + name = "ISCC.exe" + retval = "" + dirs = os.environ["PATH"].split(":") + # Add the default file path + dirs.append("C:\\Program Files\\Inno Setup 5") + dirs.append("C:\\Program Files (x86)\\Inno Setup 5") + + if os.environ.has_key("INNO5"): + retval = os.environ["INNO5"] + + if retval == "": + for dir in dirs: + filepath = os.path.join(dir, name) + if os.path.isfile(filepath): + retval = filepath + + return retval + +if __name__ == "__main__": + innoSetup = getInnoSetupPath() + os.chdir(sys.path[0]) + + date = str(datetime.date.today()) + + if not os.path.exists(innoSetup): + print "ERROR: Cannot find InnoSetup." + #sys.exit(1) + + if not os.path.exists(wxwebkit_dir): + print "ERROR: Build dir %s doesn't exist." % wxwebkit_dir + sys.exit(1) + + fileList = """ +CopyMode: alwaysoverwrite; Source: *.pyd; DestDir: "{app}" +CopyMode: alwaysoverwrite; Source: *.py; DestDir: "{app}" +""" + + dlls = glob.glob(os.path.join(wxwebkit_dir, "*.dll")) + for dll in dlls: + if dll.find("wxbase") == -1 and dll.find("wxmsw") == -1: + fileList += """CopyMode: alwaysoverwrite; Source: %s; DestDir: "{app}" \n""" % dll + + installerTemplate = open("wxWebKitInstaller.iss.in", "r").read() + + installerTemplate = installerTemplate.replace("<<VERSION>>", date) + installerTemplate = installerTemplate.replace("<<ROOTDIR>>", wxwebkit_dir ) + installerTemplate = installerTemplate.replace("<<PYTHONVER>>", sys.version[0:3] ) + installerTemplate = installerTemplate.replace("<<FILES>>", fileList ) + + outputFile = open("wxWebKitInstaller.iss", "w") + outputFile.write(installerTemplate) + outputFile.close() + + success = os.system('"%s" wxWebKitInstaller.iss' % innoSetup) + sys.exit(success) diff --git a/Tools/wx/packaging/debian/changelog b/Tools/wx/packaging/debian/changelog new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/Tools/wx/packaging/debian/changelog @@ -0,0 +1 @@ + diff --git a/Tools/wx/packaging/debian/compat b/Tools/wx/packaging/debian/compat new file mode 100644 index 0000000..7ed6ff8 --- /dev/null +++ b/Tools/wx/packaging/debian/compat @@ -0,0 +1 @@ +5 diff --git a/Tools/wx/packaging/debian/control b/Tools/wx/packaging/debian/control new file mode 100644 index 0000000..57d8407 --- /dev/null +++ b/Tools/wx/packaging/debian/control @@ -0,0 +1,29 @@ +Source: webkitwx +Section: Python +Priority: extra +Maintainer: Kevin Ollivier <kevino@theolliviers.com> +Build-Depends: debhelper (>= 5.0.38), python-central (>= 0.6), python-all-dev, + libwxgtk2.8-dev (>= 2.8.9.2-1), python-wxgtk2.8, python-wxtools (>= 2.8.9.2-1), + wx2.8-headers (>= 2.8.9.2-1), wx2.8-i18n (>= 2.8.9.2-1), + flex, bison, gperf, automake, autoconf, libtool, dpatch, + libxslt1-dev, libcurl4-openssl-dev, + libicu-dev, libjpeg62-dev, libpng12-dev, libsqlite3-dev, libgtk2.0-dev +Build-Conflicts: python-setuptools +XS-Python-Version: all +Standards-Version: 3.7.3 + +Package: python-webkitwx +Section: python +Architecture: any +Depends: ${python:Depends}, ${shlibs:Depends} +Provides: ${python:Provides}, webkitwx +XB-Python-Version: ${python:Versions} +Description: Python binding of wxwebkit + This is an experimental packaged release of webkit for wxpython + +Package: webkitwx-headers +Architecture: all +Description: Python binding of wxwebkit + This is an experimental packaged release of webkit for wxpython + These are the header files + diff --git a/Tools/wx/packaging/debian/copyright b/Tools/wx/packaging/debian/copyright new file mode 100644 index 0000000..c2244ec --- /dev/null +++ b/Tools/wx/packaging/debian/copyright @@ -0,0 +1,18 @@ +This package was debianized by Chris Willing c.willing@uq.edu.au on +Thu, Sat, 11 Apr 2009 12:54:52 +1000 + +Upstream Author: Kevin Ollivier kevino@theolliviers.com and others + +Copyright: 2009 Kevin Ollivier, Apple Inc., and others + +License: + LGPL + + +The Debian packaging is (C) 2009, Chris Willing <c.willing@uq.edu.au> and +is licensed under the GPL, see `/usr/share/common-licenses/GPL'. + + +# Please also look if there are files or directories which have a +# different copyright/license attached and list them here. + diff --git a/Tools/wx/packaging/debian/python-webkitwx.install b/Tools/wx/packaging/debian/python-webkitwx.install new file mode 100644 index 0000000..dff51ce --- /dev/null +++ b/Tools/wx/packaging/debian/python-webkitwx.install @@ -0,0 +1 @@ +WebKitBuild/Debug.master/libwxwebkit.so usr/lib/ diff --git a/Tools/wx/packaging/debian/rules b/Tools/wx/packaging/debian/rules new file mode 100644 index 0000000..aea6def --- /dev/null +++ b/Tools/wx/packaging/debian/rules @@ -0,0 +1,75 @@ +#! /usr/bin/make -f + +SHELL = /bin/bash + +PYVERS := $(shell /usr/bin/python -c 'import sys; print sys.version[:3]') +VER := $(shell /usr/bin/python -c 'import sys; print sys.version[:3]') +BIULD_DIR := WebKitBuild/Debug.master +build: build-stamp +build-stamp: $(PYVERS:%=build-python%) + touch $@ +build-python%: + touch $@ + +clean: + rm -rf *-stamp build-python* build + rm -rf $(addprefix debian/,$(packages)) debian/files debian/substvars + rm -rf _trial_temp test.log + find . -name "*.pyc" |xargs -r rm + dh_clean + +install: build-stamp install-prereq $(PYVERS:%=install-python%) install-libs install-nover + +install-prereq: build-stamp + dh_testdir + dh_testroot + dh_clean -k + +install-python%: install-prereq + dh_install -ppython-webkitwx \ + $(BUILD_DIR)/webview.py \ + $(BUILD_DIR)/Debug.master/_webview.so \ + usr/lib/python$*/site-packages/wx-2.8-gtk2-unicode/wx/ + +install-nover: install-prereq + dh_install -pwebkitwx-headers \ + $(BUILD_DIR)/JavaScriptCore \ + usr/include/wxwebkit-1.0/ + +install-libs: install-prereq + dh_install + + +binary-indep: + (cd Tools/Scripts && ./build-webkit --wx --makeargs="--wxpython") + dh_testdir + dh_testroot + dh_installchangelogs -i + dh_installdocs -i + dh_strip -i + dh_compress -i + dh_fixperms -i + dh_installdeb -i + dh_gencontrol -i + dh_md5sums -i + dh_builddeb -i + +binary-arch: + dh_testdir + dh_testroot + echo $(shell pwd) + echo $(shell ls -l) + dh_installchangelogs -a + dh_installdocs -a WebKit/wx/bindings/python/samples/simple.py + dh_strip -a + dh_compress -a -Xsimple.py + dh_fixperms -a + dh_pycentral -a + dh_installdeb -a + dh_shlibdeps -a + dh_gencontrol -a + dh_md5sums -a + dh_builddeb -a + +binary: binary-indep binary-arch +.PHONY: build clean binary-indep binary-arch binary install install-nover install-prereq install-libs diff --git a/Tools/wx/packaging/wxWebKitInstaller.iss.in b/Tools/wx/packaging/wxWebKitInstaller.iss.in new file mode 100644 index 0000000..ebc89d4 --- /dev/null +++ b/Tools/wx/packaging/wxWebKitInstaller.iss.in @@ -0,0 +1,79 @@ +; Installer script for wxWebKit for wxPython + +[Setup] +AppName=wxWebKit +AppId=wxWebKit +AppVersion=<<VERSION>> +AppVerName=wxWebKit <<VERSION>> +AppCopyright=LGPL +DefaultDirName={code:GetInstallDir|c:\DoNotInstallHere} +AppPublisher=wxWebKit Project +AppPublisherURL=http://wxwebkit.wxcommunity.com/pmwiki/ +AppSupportURL=http://wxwebkit.wxcommunity.com/pmwiki/ +AppUpdatesURL=http://wxwebkit.wxcommunity.com/pmwiki/ +UninstallDisplayName=wxWebKit <<VERSION>> +UninstallFilesDir={app}\Uninstall + +Compression=bzip/9 +SourceDir=<<ROOTDIR>> +OutputDir=win-installer +OutputBaseFilename=wxWebKit-wx2.8-Py<<PYTHONVER>>-<<VERSION>> +DisableStartupPrompt=yes +AllowNoIcons=yes +DisableProgramGroupPage=yes +DisableReadyPage=yes + +[Files] +<<FILES>> + +[Messages] +WelcomeLabel1=Welcome to the wxWebKit for wxPython Setup Wizard + +[Code] + +program Setup; +var + PythonDir : String; + InstallDir : String; + + +function InitializeSetup(): Boolean; +begin + + (* -------------------------------------------------------------- *) + (* Figure out what to use as a default installation dir *) + + if not RegQueryStringValue(HKEY_LOCAL_MACHINE, + 'Software\Python\PythonCore\<<PYTHONVER>>\InstallPath', + '', PythonDir) then begin + + if not RegQueryStringValue(HKEY_CURRENT_USER, + 'Software\Python\PythonCore\<<PYTHONVER>>\InstallPath', + '', PythonDir) then begin + + MsgBox('No installation of Python <<PYTHONVER>> found in registry.' + #13 + + 'Be sure to enter a pathname that places wxPython on the PYTHONPATH', + mbConfirmation, MB_OK); + PythonDir := 'C:\Put a directory on PYTHONPATH here\'; + end; + end; + InstallDir := PythonDir + '\Lib\site-packages\wx-2.8-msw-unicode\wx\'; + Result := True; +end; + + + +function GetPythonDir(Default: String): String; +begin + Result := PythonDir; +end; + + + +function GetInstallDir(Default: String): String; +begin + Result := InstallDir; +end; + +begin +end. |