r22720 - gnucash/trunk/packaging/win32 - Win32 build: add attribution for a code snippet in bootstrap
Geert Janssens
gjanssens at code.gnucash.org
Tue Jan 22 05:14:35 EST 2013
Author: gjanssens
Date: 2013-01-22 05:14:35 -0500 (Tue, 22 Jan 2013)
New Revision: 22720
Trac: http://svn.gnucash.org/trac/changeset/22720
Modified:
gnucash/trunk/packaging/win32/bootstrap_win_dev.vbs
Log:
Win32 build: add attribution for a code snippet in bootstrap
Modified: gnucash/trunk/packaging/win32/bootstrap_win_dev.vbs
===================================================================
--- gnucash/trunk/packaging/win32/bootstrap_win_dev.vbs 2013-01-20 04:56:37 UTC (rev 22719)
+++ gnucash/trunk/packaging/win32/bootstrap_win_dev.vbs 2013-01-22 10:14:35 UTC (rev 22720)
@@ -1,390 +1,393 @@
-' bootstap_win_dev.vbs
-'
-' The goal of this script is to simplify setting up a development
-' environment to develop for GnuCash on Windows.
-' It will set up an absolute minimal environment from where
-' the regular GnuCash Windows build system can take over.
-' This minimal environment consists of
-' - mingw-get: the mingw package installer tool
-' - msys-base: a basic MSYS shell environment
-' - git for windows, required for:-
-' - the GnuCash source code repository, cloned from the github GnuCash repository
-'
-' The bootstrap script can also be run on top of an existing set up
-' in which case the script will only do what is necessary to get
-' the above items in place. For example, if git is already installed
-' in the location pointed to by GIT_DIR below, it won't be installed
-' again.
-'
-' IN CASE OF UNEXPECTED CLOSING OF THE CONSOLE
-' Please open a console (cmd.exe) and run the script under cscript.exe as follows:
-' cscript.exe <path-to-this-script>
-' This will keep your console open, so you can read if there were errors
-
-' Script start
-' ------------
-' Ensure we have a visible console to display output
-CheckStartMode
-
-' Parameters
-' ----------
-' All of the above will be installed in the base directory specified below.
-' If this path doesn't suit you, please feel free to modify it before
-' running this bootstrap script.
-' Note: avoid paths with spaces or other special characters (like &).
-' these can confuse msys/mingw or some of the tools depending on them.
-GLOBAL_DIR = "c:\soft"
-MINGW_DIR = GLOBAL_DIR & "\mingw"
-TMP_DIR= GLOBAL_DIR & "\tmp"
-DOWNLOAD_DIR= GLOBAL_DIR & "\downloads"
-GIT_PKG = "Git-1.7.10-preview20120409.exe"
-strGitBaseUrl = "http://msysgit.googlecode.com/files/"
-GIT_URL = strGitBaseUrl & GIT_PKG
-GIT_DIR = GLOBAL_DIR & "\git-1.7.10"
-REPOS_URL = "git://github.com/Gnucash/gnucash.git"
-REPOS_DIR = GLOBAL_DIR & "\gnucash.git"
-
-' Global parameters for visual basic
-Set objFso = CreateObject("Scripting.FileSystemObject")
-Set stdout = objFso.GetStandardStream(1)
-Set stdin = objFso.GetStandardStream(0)
-Set objWsh = WScript.CreateObject ("WScript.Shell")
-Const ForReading = 1, ForWriting = 2, ForAppending = 8
-
-Welcome
-
-
-' Create base directories if necessary
-' ------------------------------------
-If Not objFso.FolderExists(GLOBAL_DIR) Then
- stdout.Write "Creating " & GLOBAL_DIR & "... "
- objFso.CreateFolder(GLOBAL_DIR)
- stdout.WriteLine "Ok"
-End If
-If Not objFso.FolderExists(MINGW_DIR) Then
- stdout.Write "Creating " & MINGW_DIR & "... "
- objFso.CreateFolder(MINGW_DIR)
- stdout.WriteLine "Ok"
-End If
-If Not objFso.FolderExists(TMP_DIR) Then
- stdout.Write "Creating " & TMP_DIR & "... "
- objFso.CreateFolder(TMP_DIR)
- stdout.WriteLine "Ok"
-End If
-If Not objFso.FolderExists(DOWNLOAD_DIR) Then
- stdout.Write "Creating " & DOWNLOAD_DIR & "... "
- objFso.CreateFolder(DOWNLOAD_DIR)
- stdout.WriteLine "Ok"
-End If
-
-
-' Install mingw-get
-' -----------------
-
-strMingwGet = MINGW_DIR & "\bin\mingw-get.exe"
-stdout.Write "Checking " & strMingwGet & "... "
-If objFso.FileExists(strMingwGet) Then
- stdout.WriteLine "Found, no need to install"
-Else
- stdout.WriteLine "Not found, will be installed"
-
- strMingwGetZip = DOWNLOAD_DIR & "\mingw-get.zip"
- If Not objFso.FileExists(strMingwGetZip) Then
- stdout.Write "Downloading mingw-get.zip (slow!)... "
- strMingwGetZipUrl = "https://github.com/gjanssens/gnucash-on-windows/raw/master/mingw-get.zip"
- HTTPDownload strMingwGetZipUrl, strMingwGetZip
- stdout.WriteLine "Success"
- End If
-
- ' Extract mingw-get.zip into our MINGW_DIR
- ' using a detour via a temporary directory to deal with the
- ' cludgy way to detect when extracting is finished.
- ' I couldn't find a better way so far.
- stdout.Write "Installing mingw-get... "
- strMingwTmpDir = TMP_DIR & "\mingwtmp"
- If objFso.FolderExists(strMingwTmpDir) Then
- objFso.DeleteFolder strMingwTmpDir , True
- End If
- ExtractAll objFso.GetAbsolutePathName(".")& "\mingw-get.zip", strMingwTmpDir
- objFso.CopyFolder strMingwTmpDir & "\*", MINGW_DIR, True
- objFso.DeleteFolder strMingwTmpDir , True
- stdout.WriteLine "Success"
-
-End If
-
-
-' Instal Basic Msys (we need msys-wget to install git)
-' ----------------------------------------------------
-' Note: we don't check if these are installed already.
-' mingw-get will do this for us automatically.
-stdout.Write "Installing msys and wget... "
-strMingwGet = MINGW_DIR & "\bin\mingw-get.exe"
-
-objWsh.Run strMingwGet & " install msys-base msys-wget", 1, True
-'Set objExec = objWsh.Exec (strMingwGet & " install msys-base msys-wget")
-
-strWget = MINGW_DIR & "\msys\1.0\bin\wget.exe"
-If Not objFso.FileExists(strWget) Then
- stdout.WriteLine "Failed"
- stdout.WriteBlankLines (1)
- stdout.WriteLine "*** ERROR ***"
- stdout.WriteLine "Msys/Wget installation failed."
- stdout.WriteBlankLines (1)
- stdout.WriteLine "Cannot continue until this has been resolved."
- AbortScript
-End If
-stdout.WriteLine "Success"
-
-
-' Install Git
-' -----------
-strGit = GIT_DIR & "\bin\git.exe"
-stdout.Write "Checking " & strGit & "... "
-If objFso.FileExists(strGit) Then
- stdout.WriteLine "Found, no need to install"
-Else
- stdout.WriteLine "Not found, will be installed"
-
- strGitPkg = DOWNLOAD_DIR & "\" & GIT_PKG
- If Not objFso.FileExists(strGitPkg) Then
- stdout.Write "Downloading git installer... "
- objWsh.Run strWget & " -P" & DOWNLOAD_DIR & " " & GIT_URL, 1, true
-
- If Not objFso.FileExists(strGitPkg) Then
- stdout.WriteLine "Failed"
- stdout.WriteBlankLines (1)
- stdout.WriteLine "*** ERROR ***"
- stdout.WriteLine "Download git installer failed."
- stdout.WriteBlankLines (1)
- stdout.WriteLine "Cannot continue until this has been resolved."
- AbortScript
- End If
- stdout.WriteLine "Success"
- End If
-
- stdout.Write "Installing git... "
- objWsh.Run strGitPkg & " /SP- /SILENT /DIR=" & GIT_DIR, 1, true
-
- If Not objFso.FileExists(strGit) Then
- stdout.WriteLine "Failed"
- stdout.WriteBlankLines (1)
- stdout.WriteLine "*** ERROR ***"
- stdout.WriteLine "Git installation failed."
- stdout.WriteBlankLines (1)
- stdout.WriteLine "Cannot continue until this has been resolved."
- AbortScript
- End If
- stdout.WriteLine "Sucess"
-End If
-
-
-' Set up git repository
-' ---------------------
-strInstall = REPOS_DIR & "\packaging\win32\install.sh"
-stdout.WriteLine "Checking if " & REPOS_DIR
-stdout.Write " is a GnuCash git repository... "
-If objFso.FolderExists(REPOS_DIR & "\.git") And objFso.FileExists(strInstall) Then
- stdout.WriteLine "Most likely ok, won't clone"
-Else
- stdout.WriteLine "Not found"
- stdout.WriteLine "Set up GnuCash git repository... "
- objWsh.Run strGit & " clone " & REPOS_URL & " " & REPOS_DIR, 1, true
-
- If Not objFso.FileExists(strInstall) Then
- stdout.WriteLine "Failed"
- stdout.WriteBlankLines (1)
- stdout.WriteLine "*** ERROR ***"
- stdout.WriteLine "Failed to set up GnuCash git repository."
- stdout.WriteBlankLines (1)
- stdout.WriteLine "Cannot continue until this has been resolved."
- AbortScript
- End If
- stdout.WriteLine "Ok"
-End If
-
-' Create custom.sh
-' ----------------
-strCustomSh = REPOS_DIR & "\packaging\win32\custom.sh"
-bExistingCustomSh = False
-If objFso.FileExists(strCustomSh) Then
- stdout.WriteLine "Found existing custom.sh file"
- bExistingCustomSh = True
-Else
- ' Create a custom.sh file that matches the parameters set at the beginning of this script
- ' This ensures install.sh will find the development environment we set up
- ' Note: we're deliberately not storing versions of used components in the autogenerated custom.sh
- ' This allows install.sh to update to newer versions if deemed useful
- stdout.Write "Autogenerating custom.sh file... "
- Set myRegExp = New RegExp
- myRegExp.Global = True
- myRegExp.Pattern = "\\"
-
- strGlobalDir = myRegExp.Replace (GLOBAL_DIR, "\\")
- strMingwDir = myRegExp.Replace (MINGW_DIR, "\\")
- strMsysDir = myRegExp.Replace (MINGW_DIR & "\msys\1.0", "\\")
- strTmpDir = myRegExp.Replace (TMP_DIR, "\\")
- strDownloadDir = myRegExp.Replace (DOWNLOAD_DIR, "\\")
- strGitDir = myRegExp.Replace (GIT_DIR, "\\")
- strReposDir = myRegExp.Replace (REPOS_DIR, "\\")
-
- Set objCustomSh = objFso.OpenTextFile( strCustomSh, ForWriting, True )
- objCustomSh.WriteLine "# custom.sh, automatically created by bootstrap_win_dev.vbs"
- objCustomSh.WriteLine "#"
- objCustomSh.WriteLine "# The parameters set here match the parameters used by"
- objCustomSh.WriteLine "# bootstrap_win_dev.vbs to set up the GnuCash development"
- objCustomSh.WriteLine "# environment and should ensure the install.sh works out"
- objCustomSh.WriteLine "# of the box."
- objCustomSh.WriteLine "#"
- objCustomSh.WriteLine "# You are free to modify these parameters to suit you,"
- objCustomSh.WriteLine "# but keep in mind that if you ever want to run"
- objCustomSh.WriteLine "# bootstrap_win_dev.vbs again you should make sure"
- objCustomSh.WriteLine "# the parameters it uses match the ones you set here."
- objCustomSh.WriteBlankLines 1
- objCustomSh.WriteLine "GLOBAL_DIR=" & strGlobalDir
- objCustomSh.WriteLine "MINGW_DIR=" & strMingwDir
- objCustomSh.WriteLine "MSYS_DIR=" & strMsysDir
- objCustomSh.WriteLine "TMP_DIR=" & strTmpDir
- objCustomSh.WriteLine "DOWNLOAD_DIR=" & strDownloadDir
- objCustomSh.WriteLine "GIT_DIR=" & strGitDir
- objCustomSh.WriteLine "REPOS_TYPE=git" ' Bootstrap only works with a git repo
- objCustomSh.WriteLine "REPOS_URL=" & REPOS_URL
- objCustomSh.WriteLine "REPOS_DIR=" & strReposDir
- objCustomSh.Close
- stdout.WriteLine "Success"
-End If
-
-
-' End message
-' -----------
-stdout.WriteBlankLines 1
-stdout.WriteLine "Bootstrap completed successfully !"
-stdout.WriteBlankLines 1
-stdout.WriteLine "You can now continue as follows"
-stdout.WriteLine "- Open the msys shell"
-stdout.WriteLine "- cd " & REPOS_DIR & "\packaging\win32"
-stdout.WriteLine "- Properly configure a custom.sh"
-stdout.WriteLine " (if you changed any default path in the bootstrap script)"
-stdout.WriteLine "- Run install.sh"
-stdout.WriteBlankLines 1
-stdout.WriteLine "Happy hacking !"
-
-AbortScript
-
-
-' Functions used in the script
-' ----------------------------
-' Initial message to user
-Sub Welcome
- stdout.WriteLine "Boostrap GnuCash Development on Windows"
- stdout.WriteLine "---------------------------------------"
- stdout.WriteLine "This script is intended for people that wish to develop GnuCash on Windows"
- stdout.WriteLine "It will download and install the minimal set of tools"
- stdout.WriteLine "to run a first build of the GnuCash sources."
- stdout.WriteLine "It will install"
- stdout.WriteLine "- mingw-get, an msys shell and wget in " & MINGW_DIR
- stdout.WriteLine "- git in " & GIT_DIR
- stdout.WriteLine "- a GnuCash git repository cloned from"
- stdout.WriteLine " " & REPOS_URL
- stdout.WriteLine " into " & REPOS_DIR
- stdout.WriteBlankLines 1
- stdout.WriteLine "Notes:"
- stdout.WriteLine "* Components already found in the given locations"
- stdout.WriteLine " won't be touched. Instead the available versions"
- stdout.WriteLine " will be used in that case."
- stdout.WriteLine "* If the proposed locations don't suit you, you can"
- stdout.WriteLine " customize them before running this script."
- stdout.WriteLine " All of them are located at the beginning of this file."
- stdout.WriteBlankLines 1
- stdout.Write "Continue with the set up (Y/N) ? "
- chRead = stdin.ReadLine
- If Not (UCase(Left(chRead,1)) = "Y") Then
- stdout.WriteLine "Installation interrupted."
- AbortScript
- End If
-End Sub
-
-
-' Download a file over http
-Sub HTTPDownload( myURL, myPath )
-' This Sub downloads the FILE specified in myURL to the path specified in myPath.
-'
-' myURL must always end with a file name
-' myPath may be a directory or a file name; in either case the directory must exist
-'
-' Based on a script written by Rob van der Woude
-' http://www.robvanderwoude.com
-
- ' Standard housekeeping
- Dim i, objFile, objHTTP, strFile, strMsg
-
- ' Check if the specified target file or folder exists,
- ' and build the fully qualified path of the target file
- If objFso.FolderExists( myPath ) Then
- strFile = objFso.BuildPath( myPath, Mid( myURL, InStrRev( myURL, "/" ) + 1 ) )
- ElseIf objFso.FolderExists( Left( myPath, InStrRev( myPath, "\" ) - 1 ) ) Then
- strFile = myPath
- Else
- stdout.WriteLine "ERROR: Target folder not found."
- AbortScript
- End If
-
- ' Create or open the target file
- Set objFile = objFso.OpenTextFile( strFile, ForWriting, True )
-
- ' Create an HTTP object
- Set objHTTP = CreateObject( "MSXML2.ServerXMLHTTP" )
-
- ' Download the specified URL
- objHTTP.Open "GET", myURL, False
- objHTTP.Send
-
- ' Write the downloaded byte stream to the target file
- For i = 1 To LenB( objHTTP.ResponseBody )
- objFile.Write Chr( AscB( MidB( objHTTP.ResponseBody, i, 1 ) ) )
- Next
-
- ' Close the target file
- objFile.Close( )
-End Sub
-
-
-' Extract a zip file strZipFile into strFolder
-Function ExtractAll(strZipFile, strFolder)
- Set objShell = CreateObject("Shell.Application")
- If Not objFso.FolderExists(strFolder) Then
- objFso.CreateFolder(strFolder)
- End If
-
- intCount = objShell.NameSpace(strFolder).Items.Count
- Set colItems = objShell.NameSpace(strZipFile).Items
- objShell.NameSpace(strFolder).CopyHere colItems, 256
- Do Until objShell.NameSpace(strFolder).Items.Count = intCount + colItems.Count
- WScript.Sleep 200
- Loop
-End Function
-
-
-' Make sure we run in a console (so output is visible)
-Sub CheckStartMode
- ' Returns the running executable as upper case from the last \ symbol
- strStartExe = UCase( Mid( wscript.fullname, instrRev(wscript.fullname, "\") + 1 ) )
-
- If Not strStartExe = "CSCRIPT.EXE" Then
- ' This wasn't launched with cscript.exe, so relaunch using cscript.exe explicitly!
- ' wscript.scriptfullname is the full path to the actual script
-
- set oSh = CreateObject("wscript.shell")
- oSh.Run "cscript.exe """ & wscript.scriptfullname & """"
- wscript.quit
-
- End If
-End Sub
-
-
-' Abort the script
-Sub AbortScript
- stdout.WriteBlankLines 1
- stdout.Write "Pres enter to continue... "
- chRead = stdin.Read (1)
- WScript.Quit
-End Sub
\ No newline at end of file
+' bootstap_win_dev.vbs
+'
+' The goal of this script is to simplify setting up a development
+' environment to develop for GnuCash on Windows.
+' It will set up an absolute minimal environment from where
+' the regular GnuCash Windows build system can take over.
+' This minimal environment consists of
+' - mingw-get: the mingw package installer tool
+' - msys-base: a basic MSYS shell environment
+' - git for windows, required for:-
+' - the GnuCash source code repository, cloned from the github GnuCash repository
+'
+' The bootstrap script can also be run on top of an existing set up
+' in which case the script will only do what is necessary to get
+' the above items in place. For example, if git is already installed
+' in the location pointed to by GIT_DIR below, it won't be installed
+' again.
+'
+' IN CASE OF UNEXPECTED CLOSING OF THE CONSOLE
+' Please open a console (cmd.exe) and run the script under cscript.exe as follows:
+' cscript.exe <path-to-this-script>
+' This will keep your console open, so you can read if there were errors
+
+' Script start
+' ------------
+' Ensure we have a visible console to display output
+CheckStartMode
+
+' Parameters
+' ----------
+' All of the above will be installed in the base directory specified below.
+' If this path doesn't suit you, please feel free to modify it before
+' running this bootstrap script.
+' Note: avoid paths with spaces or other special characters (like &).
+' these can confuse msys/mingw or some of the tools depending on them.
+GLOBAL_DIR = "c:\soft"
+MINGW_DIR = GLOBAL_DIR & "\mingw"
+TMP_DIR= GLOBAL_DIR & "\tmp"
+DOWNLOAD_DIR= GLOBAL_DIR & "\downloads"
+GIT_PKG = "Git-1.7.10-preview20120409.exe"
+strGitBaseUrl = "http://msysgit.googlecode.com/files/"
+GIT_URL = strGitBaseUrl & GIT_PKG
+GIT_DIR = GLOBAL_DIR & "\git-1.7.10"
+REPOS_URL = "git://github.com/Gnucash/gnucash.git"
+REPOS_DIR = GLOBAL_DIR & "\gnucash.git"
+
+' Global parameters for visual basic
+Set objFso = CreateObject("Scripting.FileSystemObject")
+Set stdout = objFso.GetStandardStream(1)
+Set stdin = objFso.GetStandardStream(0)
+Set objWsh = WScript.CreateObject ("WScript.Shell")
+Const ForReading = 1, ForWriting = 2, ForAppending = 8
+
+Welcome
+
+
+' Create base directories if necessary
+' ------------------------------------
+If Not objFso.FolderExists(GLOBAL_DIR) Then
+ stdout.Write "Creating " & GLOBAL_DIR & "... "
+ objFso.CreateFolder(GLOBAL_DIR)
+ stdout.WriteLine "Ok"
+End If
+If Not objFso.FolderExists(MINGW_DIR) Then
+ stdout.Write "Creating " & MINGW_DIR & "... "
+ objFso.CreateFolder(MINGW_DIR)
+ stdout.WriteLine "Ok"
+End If
+If Not objFso.FolderExists(TMP_DIR) Then
+ stdout.Write "Creating " & TMP_DIR & "... "
+ objFso.CreateFolder(TMP_DIR)
+ stdout.WriteLine "Ok"
+End If
+If Not objFso.FolderExists(DOWNLOAD_DIR) Then
+ stdout.Write "Creating " & DOWNLOAD_DIR & "... "
+ objFso.CreateFolder(DOWNLOAD_DIR)
+ stdout.WriteLine "Ok"
+End If
+
+
+' Install mingw-get
+' -----------------
+
+strMingwGet = MINGW_DIR & "\bin\mingw-get.exe"
+stdout.Write "Checking " & strMingwGet & "... "
+If objFso.FileExists(strMingwGet) Then
+ stdout.WriteLine "Found, no need to install"
+Else
+ stdout.WriteLine "Not found, will be installed"
+
+ strMingwGetZip = DOWNLOAD_DIR & "\mingw-get.zip"
+ If Not objFso.FileExists(strMingwGetZip) Then
+ stdout.Write "Downloading mingw-get.zip (slow!)... "
+ strMingwGetZipUrl = "https://github.com/gjanssens/gnucash-on-windows/raw/master/mingw-get.zip"
+ HTTPDownload strMingwGetZipUrl, strMingwGetZip
+ stdout.WriteLine "Success"
+ End If
+
+ ' Extract mingw-get.zip into our MINGW_DIR
+ ' using a detour via a temporary directory to deal with the
+ ' cludgy way to detect when extracting is finished.
+ ' I couldn't find a better way so far.
+ stdout.Write "Installing mingw-get... "
+ strMingwTmpDir = TMP_DIR & "\mingwtmp"
+ If objFso.FolderExists(strMingwTmpDir) Then
+ objFso.DeleteFolder strMingwTmpDir , True
+ End If
+ ExtractAll objFso.GetAbsolutePathName(".")& "\mingw-get.zip", strMingwTmpDir
+ objFso.CopyFolder strMingwTmpDir & "\*", MINGW_DIR, True
+ objFso.DeleteFolder strMingwTmpDir , True
+ stdout.WriteLine "Success"
+
+End If
+
+
+' Instal Basic Msys (we need msys-wget to install git)
+' ----------------------------------------------------
+' Note: we don't check if these are installed already.
+' mingw-get will do this for us automatically.
+stdout.Write "Installing msys and wget... "
+strMingwGet = MINGW_DIR & "\bin\mingw-get.exe"
+
+objWsh.Run strMingwGet & " install msys-base msys-wget", 1, True
+'Set objExec = objWsh.Exec (strMingwGet & " install msys-base msys-wget")
+
+strWget = MINGW_DIR & "\msys\1.0\bin\wget.exe"
+If Not objFso.FileExists(strWget) Then
+ stdout.WriteLine "Failed"
+ stdout.WriteBlankLines (1)
+ stdout.WriteLine "*** ERROR ***"
+ stdout.WriteLine "Msys/Wget installation failed."
+ stdout.WriteBlankLines (1)
+ stdout.WriteLine "Cannot continue until this has been resolved."
+ AbortScript
+End If
+stdout.WriteLine "Success"
+
+
+' Install Git
+' -----------
+strGit = GIT_DIR & "\bin\git.exe"
+stdout.Write "Checking " & strGit & "... "
+If objFso.FileExists(strGit) Then
+ stdout.WriteLine "Found, no need to install"
+Else
+ stdout.WriteLine "Not found, will be installed"
+
+ strGitPkg = DOWNLOAD_DIR & "\" & GIT_PKG
+ If Not objFso.FileExists(strGitPkg) Then
+ stdout.Write "Downloading git installer... "
+ objWsh.Run strWget & " -P" & DOWNLOAD_DIR & " " & GIT_URL, 1, true
+
+ If Not objFso.FileExists(strGitPkg) Then
+ stdout.WriteLine "Failed"
+ stdout.WriteBlankLines (1)
+ stdout.WriteLine "*** ERROR ***"
+ stdout.WriteLine "Download git installer failed."
+ stdout.WriteBlankLines (1)
+ stdout.WriteLine "Cannot continue until this has been resolved."
+ AbortScript
+ End If
+ stdout.WriteLine "Success"
+ End If
+
+ stdout.Write "Installing git... "
+ objWsh.Run strGitPkg & " /SP- /SILENT /DIR=" & GIT_DIR, 1, true
+
+ If Not objFso.FileExists(strGit) Then
+ stdout.WriteLine "Failed"
+ stdout.WriteBlankLines (1)
+ stdout.WriteLine "*** ERROR ***"
+ stdout.WriteLine "Git installation failed."
+ stdout.WriteBlankLines (1)
+ stdout.WriteLine "Cannot continue until this has been resolved."
+ AbortScript
+ End If
+ stdout.WriteLine "Sucess"
+End If
+
+
+' Set up git repository
+' ---------------------
+strInstall = REPOS_DIR & "\packaging\win32\install.sh"
+stdout.WriteLine "Checking if " & REPOS_DIR
+stdout.Write " is a GnuCash git repository... "
+If objFso.FolderExists(REPOS_DIR & "\.git") And objFso.FileExists(strInstall) Then
+ stdout.WriteLine "Most likely ok, won't clone"
+Else
+ stdout.WriteLine "Not found"
+ stdout.WriteLine "Set up GnuCash git repository... "
+ objWsh.Run strGit & " clone " & REPOS_URL & " " & REPOS_DIR, 1, true
+
+ If Not objFso.FileExists(strInstall) Then
+ stdout.WriteLine "Failed"
+ stdout.WriteBlankLines (1)
+ stdout.WriteLine "*** ERROR ***"
+ stdout.WriteLine "Failed to set up GnuCash git repository."
+ stdout.WriteBlankLines (1)
+ stdout.WriteLine "Cannot continue until this has been resolved."
+ AbortScript
+ End If
+ stdout.WriteLine "Ok"
+End If
+
+' Create custom.sh
+' ----------------
+strCustomSh = REPOS_DIR & "\packaging\win32\custom.sh"
+bExistingCustomSh = False
+If objFso.FileExists(strCustomSh) Then
+ stdout.WriteLine "Found existing custom.sh file"
+ bExistingCustomSh = True
+Else
+ ' Create a custom.sh file that matches the parameters set at the beginning of this script
+ ' This ensures install.sh will find the development environment we set up
+ ' Note: we're deliberately not storing versions of used components in the autogenerated custom.sh
+ ' This allows install.sh to update to newer versions if deemed useful
+ stdout.Write "Autogenerating custom.sh file... "
+ Set myRegExp = New RegExp
+ myRegExp.Global = True
+ myRegExp.Pattern = "\\"
+
+ strGlobalDir = myRegExp.Replace (GLOBAL_DIR, "\\")
+ strMingwDir = myRegExp.Replace (MINGW_DIR, "\\")
+ strMsysDir = myRegExp.Replace (MINGW_DIR & "\msys\1.0", "\\")
+ strTmpDir = myRegExp.Replace (TMP_DIR, "\\")
+ strDownloadDir = myRegExp.Replace (DOWNLOAD_DIR, "\\")
+ strGitDir = myRegExp.Replace (GIT_DIR, "\\")
+ strReposDir = myRegExp.Replace (REPOS_DIR, "\\")
+
+ Set objCustomSh = objFso.OpenTextFile( strCustomSh, ForWriting, True )
+ objCustomSh.WriteLine "# custom.sh, automatically created by bootstrap_win_dev.vbs"
+ objCustomSh.WriteLine "#"
+ objCustomSh.WriteLine "# The parameters set here match the parameters used by"
+ objCustomSh.WriteLine "# bootstrap_win_dev.vbs to set up the GnuCash development"
+ objCustomSh.WriteLine "# environment and should ensure the install.sh works out"
+ objCustomSh.WriteLine "# of the box."
+ objCustomSh.WriteLine "#"
+ objCustomSh.WriteLine "# You are free to modify these parameters to suit you,"
+ objCustomSh.WriteLine "# but keep in mind that if you ever want to run"
+ objCustomSh.WriteLine "# bootstrap_win_dev.vbs again you should make sure"
+ objCustomSh.WriteLine "# the parameters it uses match the ones you set here."
+ objCustomSh.WriteBlankLines 1
+ objCustomSh.WriteLine "GLOBAL_DIR=" & strGlobalDir
+ objCustomSh.WriteLine "MINGW_DIR=" & strMingwDir
+ objCustomSh.WriteLine "MSYS_DIR=" & strMsysDir
+ objCustomSh.WriteLine "TMP_DIR=" & strTmpDir
+ objCustomSh.WriteLine "DOWNLOAD_DIR=" & strDownloadDir
+ objCustomSh.WriteLine "GIT_DIR=" & strGitDir
+ objCustomSh.WriteLine "REPOS_TYPE=git" ' Bootstrap only works with a git repo
+ objCustomSh.WriteLine "REPOS_URL=" & REPOS_URL
+ objCustomSh.WriteLine "REPOS_DIR=" & strReposDir
+ objCustomSh.Close
+ stdout.WriteLine "Success"
+End If
+
+
+' End message
+' -----------
+stdout.WriteBlankLines 1
+stdout.WriteLine "Bootstrap completed successfully !"
+stdout.WriteBlankLines 1
+stdout.WriteLine "You can now continue as follows"
+stdout.WriteLine "- Open the msys shell"
+stdout.WriteLine "- cd " & REPOS_DIR & "\packaging\win32"
+stdout.WriteLine "- Properly configure a custom.sh"
+stdout.WriteLine " (if you changed any default path in the bootstrap script)"
+stdout.WriteLine "- Run install.sh"
+stdout.WriteBlankLines 1
+stdout.WriteLine "Happy hacking !"
+
+AbortScript
+
+
+' Functions used in the script
+' ----------------------------
+' Initial message to user
+Sub Welcome
+ stdout.WriteLine "Boostrap GnuCash Development on Windows"
+ stdout.WriteLine "---------------------------------------"
+ stdout.WriteLine "This script is intended for people that wish to develop GnuCash on Windows"
+ stdout.WriteLine "It will download and install the minimal set of tools"
+ stdout.WriteLine "to run a first build of the GnuCash sources."
+ stdout.WriteLine "It will install"
+ stdout.WriteLine "- mingw-get, an msys shell and wget in " & MINGW_DIR
+ stdout.WriteLine "- git in " & GIT_DIR
+ stdout.WriteLine "- a GnuCash git repository cloned from"
+ stdout.WriteLine " " & REPOS_URL
+ stdout.WriteLine " into " & REPOS_DIR
+ stdout.WriteBlankLines 1
+ stdout.WriteLine "Notes:"
+ stdout.WriteLine "* Components already found in the given locations"
+ stdout.WriteLine " won't be touched. Instead the available versions"
+ stdout.WriteLine " will be used in that case."
+ stdout.WriteLine "* If the proposed locations don't suit you, you can"
+ stdout.WriteLine " customize them before running this script."
+ stdout.WriteLine " All of them are located at the beginning of this file."
+ stdout.WriteBlankLines 1
+ stdout.Write "Continue with the set up (Y/N) ? "
+ chRead = stdin.ReadLine
+ If Not (UCase(Left(chRead,1)) = "Y") Then
+ stdout.WriteLine "Installation interrupted."
+ AbortScript
+ End If
+End Sub
+
+
+' Download a file over http
+Sub HTTPDownload( myURL, myPath )
+' This Sub downloads the FILE specified in myURL to the path specified in myPath.
+'
+' myURL must always end with a file name
+' myPath may be a directory or a file name; in either case the directory must exist
+'
+' Based on a script written by Rob van der Woude
+' http://www.robvanderwoude.com
+
+ ' Standard housekeeping
+ Dim i, objFile, objHTTP, strFile, strMsg
+
+ ' Check if the specified target file or folder exists,
+ ' and build the fully qualified path of the target file
+ If objFso.FolderExists( myPath ) Then
+ strFile = objFso.BuildPath( myPath, Mid( myURL, InStrRev( myURL, "/" ) + 1 ) )
+ ElseIf objFso.FolderExists( Left( myPath, InStrRev( myPath, "\" ) - 1 ) ) Then
+ strFile = myPath
+ Else
+ stdout.WriteLine "ERROR: Target folder not found."
+ AbortScript
+ End If
+
+ ' Create or open the target file
+ Set objFile = objFso.OpenTextFile( strFile, ForWriting, True )
+
+ ' Create an HTTP object
+ Set objHTTP = CreateObject( "MSXML2.ServerXMLHTTP" )
+
+ ' Download the specified URL
+ objHTTP.Open "GET", myURL, False
+ objHTTP.Send
+
+ ' Write the downloaded byte stream to the target file
+ For i = 1 To LenB( objHTTP.ResponseBody )
+ objFile.Write Chr( AscB( MidB( objHTTP.ResponseBody, i, 1 ) ) )
+ Next
+
+ ' Close the target file
+ objFile.Close( )
+End Sub
+
+
+' Extract a zip file strZipFile into strFolder
+Function ExtractAll(strZipFile, strFolder)
+ Set objShell = CreateObject("Shell.Application")
+ If Not objFso.FolderExists(strFolder) Then
+ objFso.CreateFolder(strFolder)
+ End If
+
+ intCount = objShell.NameSpace(strFolder).Items.Count
+ Set colItems = objShell.NameSpace(strZipFile).Items
+ objShell.NameSpace(strFolder).CopyHere colItems, 256
+ Do Until objShell.NameSpace(strFolder).Items.Count = intCount + colItems.Count
+ WScript.Sleep 200
+ Loop
+End Function
+
+
+' Make sure we run in a console (so output is visible)
+' Based on a code snipped found here
+' http://ask.metafilter.com/79481/vbscript-printing-to-command-line
+Sub CheckStartMode
+ ' Returns the running executable as upper case from the last \ symbol
+ strStartExe = UCase( Mid( wscript.fullname, instrRev(wscript.fullname, "\") + 1 ) )
+
+ If Not strStartExe = "CSCRIPT.EXE" Then
+ ' This wasn't launched with cscript.exe, so relaunch using cscript.exe explicitly!
+ ' wscript.scriptfullname is the full path to the actual script
+
+ set oSh = CreateObject("wscript.shell")
+ oSh.Run "cscript.exe """ & wscript.scriptfullname & """"
+ wscript.quit
+
+ End If
+End Sub
+
+
+' Abort the script
+Sub AbortScript
+ stdout.WriteBlankLines 1
+ stdout.Write "Pres enter to continue... "
+ chRead = stdin.Read (1)
+ WScript.Quit
+End Sub
+
More information about the gnucash-changes
mailing list