r22169 - gnucash/trunk/packaging/win32 - Bug #670355 - Automated install of Perl with Finance-Quote
Geert Janssens
gjanssens at code.gnucash.org
Sun May 6 17:19:24 EDT 2012
Author: gjanssens
Date: 2012-05-06 17:19:24 -0400 (Sun, 06 May 2012)
New Revision: 22169
Trac: http://svn.gnucash.org/trac/changeset/22169
Added:
gnucash/trunk/packaging/win32/getperl.vbs
gnucash/trunk/packaging/win32/gnc-path-check
Modified:
gnucash/trunk/packaging/win32/Makefile.am
gnucash/trunk/packaging/win32/dist-impl.sh
gnucash/trunk/packaging/win32/install-fq-mods.cmd
Log:
Bug #670355 - Automated install of Perl with Finance-Quote
With these changes install-fq-mods.cmd will automatically download and install
Strawberry perl if now perl version if found on the system.
Patches by Dave Roberts
Modified: gnucash/trunk/packaging/win32/Makefile.am
===================================================================
--- gnucash/trunk/packaging/win32/Makefile.am 2012-05-06 18:03:41 UTC (rev 22168)
+++ gnucash/trunk/packaging/win32/Makefile.am 2012-05-06 21:19:24 UTC (rev 22169)
@@ -4,6 +4,8 @@
dist.sh \
exetype.pl \
functions.sh \
+ getperl.vbs \
+ gnc-path-check \
goffice-0.7.2-patch.diff \
gwenhywfar-3.6.0-patch.diff \
install.sh \
Modified: gnucash/trunk/packaging/win32/dist-impl.sh
===================================================================
--- gnucash/trunk/packaging/win32/dist-impl.sh 2012-05-06 18:03:41 UTC (rev 22168)
+++ gnucash/trunk/packaging/win32/dist-impl.sh 2012-05-06 21:19:24 UTC (rev 22169)
@@ -255,7 +255,7 @@
cp -a $_INSTALL_UDIR/lib/lib*.la $DIST_UDIR/bin
mkdir -p $DIST_UDIR/share
cp -a $_INSTALL_UDIR/share/{doc,gnucash,locale} $DIST_UDIR/share
- cp -a $_REPOS_UDIR/packaging/win32/install-fq-mods.cmd $DIST_UDIR/bin
+ cp -a $_REPOS_UDIR/packaging/win32/{getperl.vbs,gnc-path-check,install-fq-mods.cmd} $DIST_UDIR/bin
_QTDIR_WIN=$(unix_path $QTDIR | sed 's,^/\([A-Za-z]\)/,\1:/,g' )
if [ "$AQBANKING5" != "yes" ] ; then
Added: gnucash/trunk/packaging/win32/getperl.vbs
===================================================================
--- gnucash/trunk/packaging/win32/getperl.vbs (rev 0)
+++ gnucash/trunk/packaging/win32/getperl.vbs 2012-05-06 21:19:24 UTC (rev 22169)
@@ -0,0 +1,49 @@
+' script to download perl install file and save on local disc
+' the location of which is provided by first argument
+
+
+Const WindowsFolder = 0
+Const SystemFolder = 1
+Const TemporaryFolder = 2
+Dim fso: Set fso = CreateObject("Scripting.FileSystemObject")
+Dim tempFolder: tempFolder = fso.GetSpecialFolder(TemporaryFolder)
+
+strHDLocation = Wscript.Arguments.Item(0)
+
+' Set your settings
+ strFileURL = "http://strawberry-perl.googlecode.com/files/strawberry-perl-5.12.3.0.msi"
+
+ Wscript.Echo " copying " & strFileURL
+ Wscript.Echo " to " & strHDLocation
+
+
+' Fetch the file
+ Set objXMLHTTP = CreateObject("MSXML2.XMLHTTP")
+
+ objXMLHTTP.open "GET", strFileURL, false
+ objXMLHTTP.send()
+
+If objXMLHTTP.Status = 200 Then
+ Set objADOStream = CreateObject("ADODB.Stream")
+ objADOStream.Open
+ objADOStream.Type = 1 'adTypeBinary
+
+ objADOStream.Write objXMLHTTP.ResponseBody
+ objADOStream.Position = 0 'Set the stream position to the start
+
+ Set objFSO = Createobject("Scripting.FileSystemObject")
+ If objFSO.Fileexists(strHDLocation) Then objFSO.DeleteFile strHDLocation
+
+ objADOStream.SaveToFile strHDLocation
+ objADOStream.Close
+ Set objADOStream = Nothing
+ If objFSO.Fileexists(strHDLocation) Then
+ Wscript.Echo " "
+ Wscript.Echo " " & strHDLocation & " downloaded OK"
+ Wscript.Echo " "
+ Set objFSO = Nothing
+ wscript.quit 0
+ End if
+End if
+
+wscript.quit 1
Added: gnucash/trunk/packaging/win32/gnc-path-check
===================================================================
--- gnucash/trunk/packaging/win32/gnc-path-check (rev 0)
+++ gnucash/trunk/packaging/win32/gnc-path-check 2012-05-06 21:19:24 UTC (rev 22169)
@@ -0,0 +1,71 @@
+#!/bin/perl -w
+######################################################################
+### gnc-path-check - verify the windows path
+###
+### This script verifies the window path. It is used to check for an error
+### condition identified in Bug 657117
+### (https://bugzilla.gnome.org/show_bug.cgi?id=657117)
+###
+### Verifying that all directies in the path environment will avoid
+### the glib bug conditioned identified bug 670233.
+###
+### Copyright © Dave Roberts 2012 (droberts at cpan.org)
+###
+### This program is free software; you can redistribute it and/or
+### modify it under the terms of the GNU General Public License as
+### published by the Free Software Foundation; either version 2 of
+### the License, or (at your option) any later version.
+###
+### This program is distributed in the hope that it will be useful,
+### but WITHOUT ANY WARRANTY; without even the implied warranty of
+### MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+### GNU General Public License for more details.
+###
+### You should have received a copy of the GNU General Public License
+### along with this program# if not, contact:
+###
+### Free Software Foundation Voice: +1-617-542-5942
+### 51 Franklin Street, Fifth Floor Fax: +1-617-542-2652
+### Boston, MA 02110-1301, USA gnu at gnu.org
+######################################################################
+
+use strict;
+use English;
+use Win32;
+
+# Input: <none>
+#
+# Output:
+#
+# A list of directory names in the PATH that are not valid. The normal
+# output (no error found) is nothing.
+#
+# Exit status
+#
+# 0 - success
+# non-zero - failure - number of invalid directories found
+
+my $path = Win32::ExpandEnvironmentStrings("%Path%");
+my(@path) = split(/;/,$path);
+my($error) = 0;
+my($msg) = << "EOT";
+
+The following directory name(s) were found in the PATH environment
+which are invalid. This may cause the Finance Quote function to fail
+depending on the order of directories in the PATH. Please correct the
+system PATH variable.
+
+EOT
+
+foreach my $_ (@path){
+ my($dir) = Win32::ExpandEnvironmentStrings("$_");
+ unless (-d $dir){
+ $msg .= " $dir\n";
+ $error++;
+ }
+}
+if ($error){
+ print STDERR $msg;
+}
+exit $error;
+
Modified: gnucash/trunk/packaging/win32/install-fq-mods.cmd
===================================================================
--- gnucash/trunk/packaging/win32/install-fq-mods.cmd 2012-05-06 18:03:41 UTC (rev 22168)
+++ gnucash/trunk/packaging/win32/install-fq-mods.cmd 2012-05-06 21:19:24 UTC (rev 22169)
@@ -1,16 +1,67 @@
@echo off
setlocal
-
+REM ----------------------------------------------------------------------------
if not exist ssleay32.dll (
echo.
echo Did not find ssleay32.dll in current directory.
echo Please start this cmd file in the bin directory created by the setup.exe.
goto error
)
-
+REM ----------------------------------------------------------------------------
echo.
echo * Check Perl
echo.
+perl -v > NUL 2>&1
+if %errorlevel% equ 0 goto chkver
+echo.
+echo no perl executable found
+echo.
+echo Now finding and installing perl.....
+REM ----------------------------------------------------------------------------
+echo.
+echo * download Strawberry perl
+echo.
+call cscript//nologo getperl.vbs %TEMP%\Perl.msi
+if %errorlevel% equ 0 goto donegetperl
+ echo Return Value: "%errorlevel%"
+ echo.
+ echo failed to download perl install file
+ echo.
+ goto error
+:donegetperl
+REM ----------------------------------------------------------------------------
+echo.
+echo * automated Perl install
+echo.
+msiexec /qb /l* %TEMP%\perl-log.txt /i %TEMP%\Perl.msi PERL_PATH=Yes PERL_EXT=Yes
+if %errorlevel% equ 0 goto doneperlinst
+ echo Return Value: "%errorlevel%"
+ echo.
+ echo failed to install perl (%TEMP%\Perl.msi)
+ echo.
+ goto error
+:doneperlinst
+perl -v
+del %TEMP%\Perl.msi
+REM ----------------------------------------------------------------------------
+echo.
+echo * updating PATH variable to include Perl
+echo.
+:: delims is a TAB followed by a space
+FOR /F "tokens=2* delims= " %%A IN ('REG QUERY "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v Path') DO SET NewPath=%%B
+ECHO NewPath = %NewPath%
+set Path="%NewPath%"
+REM ----------------------------------------------------------------------------
+echo.
+echo * Run gnc-fq-update
+echo.
+perl -w gnc-fq-update
+if %errorlevel% neq 0 goto error
+REM ----------------------------------------------------------------------------
+:chkver
+echo.
+echo * Check Perl Version
+echo.
perl -e "exit(int($]));"
set _perlmajor=%errorlevel%
perl -e "$ver=1000*sprintf(\"%%.3f\", $]); exit(int($ver)-5000);"
@@ -34,21 +85,54 @@
echo Please install ActivePerl 5.8, or above (http://www.activestate.com/store/activeperl)
echo and add the bin directory to your Path environment variable.
goto error
+REM ----------------------------------------------------------------------------
:ccp
-
+echo.
+echo * Test for ActivePerl
+echo.
+perl -e "use Win32;if(defined &Win32::BuildNumber){exit 2;}else{exit 3;};"
+REM echo status = %errorlevel%
+if %errorlevel% equ 2 (
+set bld=AS
+goto pchk
+)else if %errorlevel% equ 3 (
+set bld=Other
+goto pchk
+)
+if %errorlevel% equ 0 goto pchk
+goto error
+REM ----------------------------------------------------------------------------
+:pchk
+REM echo.
+REM echo * Run gnc-path-check
+REM echo.
+REM perl -w gnc-path-check
+REM if %errorlevel% neq 0 goto error
+REM ----------------------------------------------------------------------------
echo * Install DateManip
echo.
+if "%bld%" equ "AS" (
perl -x -S ppm install Date-Manip
if %errorlevel% neq 0 (
perl -x -S ppm install DateManip
if %errorlevel% neq 0 goto error
)
-
+)else if "%bld%" equ "Other" (
+perl -e "use strict;use CPAN;CPAN::Shell->install('Date::Manip');"
+if %errorlevel% neq 0 (
+echo failed to install Date::Manip module
+goto error
+)
+)
+REM ----------------------------------------------------------------------------
echo.
echo * Install Crypt-SSLeay
echo.
-set OLDPATH=%PATH%
-set PATH=%CD%;%PATH%
+
+
+if "%bld%" equ "AS" (
+set OLDPATH="%PATH%"
+set PATH="%CD%;%PATH%"
if %_perlversion% == 5.6 (
perl -x -S ppm install http://theoryx5.uwinnipeg.ca/ppmpackages/Crypt-SSLeay.ppd
) else if %_perlversion% == 5.8 (
@@ -57,36 +141,67 @@
perl -x -S ppm install Crypt-SSLeay
)
set errlvlbak=%errorlevel%
-set PATH=%OLDPATH%
-if %errlvlbak% neq 0 goto error
-
+set PATH="%OLDPATH%"
+if "%errlvlbak%" neq "0" goto error
+)else if "%bld%" equ "Other" (
+echo using CPAN install for Crypt::SSLeay
+perl -e "use strict;use CPAN;CPAN::Shell->install('Crypt::SSLeay');"
+if %errorlevel% neq 0 (
+echo failed to install Crypt::SSLeay module
+goto error
+)
+)
+REM ----------------------------------------------------------------------------
+REM for some reason a CPAN install of Finance::Quote does not install prequisite
+REM package HTML::Treebuilder
echo.
+echo * Install HTML-TreeBuilder
+echo.
+if "%bld%" equ "Other" (
+perl -e "use strict;use CPAN;CPAN::Shell->install('HTML::TreeBuilder');"
+if %errorlevel% neq 0 (
+echo failed to install HTML::TreeBuilder module
+goto error
+)
+)
+REM ----------------------------------------------------------------------------
+echo.
echo * Install Finance-Quote
echo.
+if "%bld%" equ "AS" (
perl -x -S ppm install Finance-Quote
if %errorlevel% neq 0 goto error
-
+)
+if "%bld%" equ "Other" (
+perl -e "use strict;use CPAN;CPAN::Shell->install('Finance::Quote');"
+if %errorlevel% neq 0 (
+echo failed to install Finance::Quote module
+goto error
+)
+)
+REM ----------------------------------------------------------------------------
echo.
echo * Run gnc-fq-check
echo.
perl -w gnc-fq-check
if %errorlevel% neq 0 goto error
-
+REM ----------------------------------------------------------------------------
echo.
echo * Run gnc-fq-helper
echo.
echo (yahoo "AMZN") | perl -w gnc-fq-helper
if %errorlevel% neq 0 goto error
-
+REM ----------------------------------------------------------------------------
echo.
echo * Installation succeeded
echo.
goto end
-
+REM ----------------------------------------------------------------------------
:error:
echo.
echo An error occurred, see above.
echo.
-
+REM ----------------------------------------------------------------------------
:end
pause
+
More information about the gnucash-changes
mailing list