Reviewed by Eric Seidel.
authorkevino@webkit.org <kevino@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Sat, 2 Aug 2008 21:50:35 +0000 (21:50 +0000)
committerkevino@webkit.org <kevino@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Sat, 2 Aug 2008 21:50:35 +0000 (21:50 +0000)
Scripts for building a wxWebKit installer for wxPython on Win, eventually will
be used for nightlies.

https://bugs.webkit.org/show_bug.cgi?id=20036

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@35528 268f45cc-cd09-0410-ab3c-d52691b4dbfc

WebKitTools/ChangeLog
WebKitTools/wx/packaging/build-win-installer.py [new file with mode: 0644]
WebKitTools/wx/packaging/wxWebKitInstaller.iss.in [new file with mode: 0644]

index bb79f5453c9dabf19c453571dc5971df24af77c9..030b644eeca03120450b35fcc7f7751116450005 100644 (file)
@@ -1,3 +1,16 @@
+2008-08-02  Kevin Ollivier  <kevino@theolliviers.com>
+
+        Reviewed by Eric Seidel.
+        
+        Scripts for building a wxWebKit installer for wxPython on Win, eventually will
+        be used for nightlies.
+        
+        https://bugs.webkit.org/show_bug.cgi?id=20036
+
+        * wx/packaging: Added.
+        * wx/packaging/build-win-installer.py: Added.
+        * wx/packaging/wxWebKitInstaller.iss.in: Added.
+
 2008-07-31  Adam Roben  <aroben@apple.com>
 
         Follow-up to r35500
diff --git a/WebKitTools/wx/packaging/build-win-installer.py b/WebKitTools/wx/packaging/build-win-installer.py
new file mode 100644 (file)
index 0000000..beed705
--- /dev/null
@@ -0,0 +1,109 @@
+#!/usr/bin/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 glob
+from subprocess import *
+
+# 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")
+                    
+    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
+    
+def getWebKitOutputDir():
+    retval = ""
+    if os.environ.has_key("WEBKITOUTPUTDIR"):
+        retval = os.environ["WEBKITOUTPUTDIR"]
+        
+    if retval == "":
+        retval = os.path.abspath(os.path.join(os.path.dirname(__file__), "..", "..", "..", "WebKitBuild"))
+        
+    return os.path.join(retval, "Release")
+
+def getRevisionString():
+    pipe = Popen("svnversion", shell=True, stdout=PIPE).stdout
+    svnrevision = pipe.read().strip()
+    print "r" + svnrevision
+    svnrevision = string.split(svnrevision, ":")[0]
+    svnrevision = svnrevision.replace("M", "")
+    svnrevision = "r" + svnrevision
+    
+    return svnrevision
+
+if __name__ == "__main__":
+    innoSetup = getInnoSetupPath()
+    buildDir = getWebKitOutputDir()
+    os.chdir(sys.path[0])
+
+    svnrevision = getRevisionString()
+
+    if not os.path.exists(innoSetup):
+        print "ERROR: Cannot find InnoSetup."
+        #sys.exit(1)
+        
+    if not os.path.exists(buildDir):
+        print "ERROR: Build dir %s doesn't exist." % buildDir
+        sys.exit(1)
+
+    fileList = """
+CopyMode: alwaysoverwrite; Source: *.pyd;        DestDir: "{app}"
+CopyMode: alwaysoverwrite; Source: *.py;        DestDir: "{app}"
+"""
+    
+    dlls = glob.glob(os.path.join(buildDir, "*.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>>", svnrevision)
+    installerTemplate = installerTemplate.replace("<<ROOTDIR>>", buildDir )
+    installerTemplate = installerTemplate.replace("<<PYTHONVER>>", "2.5" )
+    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/WebKitTools/wx/packaging/wxWebKitInstaller.iss.in b/WebKitTools/wx/packaging/wxWebKitInstaller.iss.in
new file mode 100644 (file)
index 0000000..84a39b0
--- /dev/null
@@ -0,0 +1,79 @@
+; Installer script for wxWebKit for wxPython
+
+[Setup]
+AppName=wxWebKit
+AppId=wxWebKit
+AppVersion=<<VERSION>>
+AppVerName=wxWebKit <<VERSION>>
+AppCopyright=wxWindows License
+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-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.