summaryrefslogtreecommitdiffstats
path: root/Tools/wx/packaging
diff options
context:
space:
mode:
Diffstat (limited to 'Tools/wx/packaging')
-rw-r--r--Tools/wx/packaging/build-debian-installer.py36
-rw-r--r--Tools/wx/packaging/build-mac-installer.py158
-rw-r--r--Tools/wx/packaging/build-win-installer.py98
-rw-r--r--Tools/wx/packaging/debian/changelog1
-rw-r--r--Tools/wx/packaging/debian/compat1
-rw-r--r--Tools/wx/packaging/debian/control29
-rw-r--r--Tools/wx/packaging/debian/copyright18
-rw-r--r--Tools/wx/packaging/debian/python-webkitwx.install1
-rw-r--r--Tools/wx/packaging/debian/rules75
-rw-r--r--Tools/wx/packaging/wxWebKitInstaller.iss.in79
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.