r15712 - gnucash/trunk/packaging/win32 - Install.sh: Add support for generating guide and help CHM files.

Andreas Köhler andi5 at cvs.gnucash.org
Tue Mar 13 20:42:01 EDT 2007


Author: andi5
Date: 2007-03-13 20:41:59 -0400 (Tue, 13 Mar 2007)
New Revision: 15712
Trac: http://svn.gnucash.org/trac/changeset/15712

Modified:
   gnucash/trunk/packaging/win32/custom.sh
   gnucash/trunk/packaging/win32/install.sh
Log:
Install.sh: Add support for generating guide and help CHM files.

* add html help workspace, make an import library for hhctrl.ocx
* add libxslt for xsltproc and htmlhelp xsl stylesheets
* run xsltproc on guide and help, C and de_DE; enrich the resulting hhp
  files with anchor/map/alias information, compile them with hhc, save
  to $INST_DIR/share/gnucash/$lang/gnucash-$type.chm
* create GKeyFiles *.hhmap that can be parsed to open specific topics
* also, obsolete pexports by mingw-utils


Modified: gnucash/trunk/packaging/win32/custom.sh
===================================================================
--- gnucash/trunk/packaging/win32/custom.sh	2007-03-13 21:00:37 UTC (rev 15711)
+++ gnucash/trunk/packaging/win32/custom.sh	2007-03-14 00:41:59 UTC (rev 15712)
@@ -88,13 +88,14 @@
 OPENSSL_LIB_URL="$SF_MIRROR/gnuwin32/openssl-0.9.7c-lib.zip"
 OPENSSL_DIR=$GLOBAL_DIR\\openssl
 
-PEXPORTS_URL="http://www.emmestech.com/software/cygwin/pexports-0.43/pexports-0.43.zip"
-PEXPORTS_DIR=$TOOLS_DIR
+MINGW_UTILS_URL="$SF_MIRROR/mingw/mingw-utils-0.3.tar.gz"
+MINGW_UTILS_DIR=$TOOLS_DIR
 
 EXETYPE_SCRIPT=`pwd`/exetype.pl
 EXETYPE_DIR=$TOOLS_DIR
 
 LIBXML2_URL="http://www.zlatkovic.com/pub/libxml/libxml2-2.6.27.win32.zip"
+LIBXSLT_URL="http://www.zlatkovic.com/pub/libxml/libxslt-1.1.19.win32.zip"
 LIBXML2_DIR=$GLOBAL_DIR\\gnome #avoid XML_FLAGS
 
 GETTEXT_URL="$GNOME_WIN32_DEPS_URL/gettext-0.14.5.zip"
@@ -172,6 +173,9 @@
 INNO_URL="http://files.jrsoftware.org/is/5/isetup-5.1.9.exe"
 INNO_DIR=$GLOBAL_DIR\\inno
 
+HH_URL="http://download.microsoft.com/download/OfficeXPProf/Install/4.71.1015.0/W98NT42KMe/EN-US/HTMLHELP.EXE"
+HH_DIR=$GLOBAL_DIR\\hh
+
 SVN_URL="http://subversion.tigris.org/files/documents/15/35379/svn-1.4.2-setup.exe"
 SVN_DIR=$GLOBAL_DIR\\svn
 
@@ -193,6 +197,10 @@
 
 AQBANKING_URL="$SF_MIRROR/aqbanking/aqbanking-2.2.9.tar.gz"
 AQBANKING_DIR=$GLOBAL_DIR\\aqbanking
+
+DOCBOOK_XSL_URL="$SF_MIRROR/docbook/docbook-xsl-1.72.0.zip"
+DOCS_URL="http://svn.gnucash.org/repo/gnucash-docs/trunk"
+DOCS_DIR=$GLOBAL_DIR\\gnucash-docs
 ##
 
 # There is no reason to ever need to comment these out!
@@ -213,7 +221,7 @@
 if test x$cross_compile != xyes ; then
  add_step inst_openssl
 fi
-add_step inst_pexports
+add_step inst_mingwutils
 add_step inst_exetype
 add_step inst_libxml2
 add_step inst_gnome
@@ -231,7 +239,9 @@
 ##
 if test x$cross_compile != xyes ; then
  add_step inst_inno
+ add_step inst_hh
 fi
 add_step inst_svn
 add_step svn_up
 add_step inst_gnucash
+add_step inst_docs

Modified: gnucash/trunk/packaging/win32/install.sh
===================================================================
--- gnucash/trunk/packaging/win32/install.sh	2007-03-13 21:00:37 UTC (rev 15711)
+++ gnucash/trunk/packaging/win32/install.sh	2007-03-14 00:41:59 UTC (rev 15712)
@@ -18,6 +18,8 @@
 register_env_var GUILE_LOAD_PATH ";"
 register_env_var GUILE_CPPFLAGS " "
 register_env_var GUILE_LDFLAGS " "
+register_env_var HH_CPPFLAGS " "
+register_env_var HH_LDFLAGS " "
 register_env_var INTLTOOL_PERL " "
 register_env_var KTOBLZCHECK_CPPFLAGS " "
 register_env_var KTOBLZCHECK_LDFLAGS " "
@@ -143,7 +145,7 @@
     add_to_env -I$_REGEX_UDIR/include REGEX_CPPFLAGS
     add_to_env -L$_REGEX_UDIR/lib REGEX_LDFLAGS
     add_to_env $_REGEX_UDIR/bin PATH
-    if quiet ${LD} $REGEX_LDFLAGS -lregex -o $TMP_UDIR/ofile
+    if quiet ${LD} $REGEX_LDFLAGS -o $TMP_UDIR/ofile
     then
         echo "regex already installed.  skipping."
     else
@@ -329,26 +331,17 @@
     test -f ${_OPENSSL_UDIR}/lib/libssl.dll.a || die "openssl not installed correctly"
 }
 
-function inst_pexports() {
-    setup pexports
-    _PEXPORTS_UDIR=`unix_path $PEXPORTS_DIR`
-    add_to_env $_PEXPORTS_UDIR/bin PATH
-    if quiet which pexports
+function inst_mingwutils() {
+    setup MinGW-Utils
+    _MINGW_UTILS_UDIR=`unix_path $MINGW_UTILS_DIR`
+    add_to_env $_MINGW_UTILS_UDIR/bin PATH
+    if quiet which pexports && quiet which reimp
     then
-        echo "pexports already installed.  skipping."
+        echo "mingw-utils already installed.  skipping."
     else
-        wget_unpacked $PEXPORTS_URL $DOWNLOAD_DIR $PEXPORTS_DIR
-        qpushd $PEXPORTS_DIR
-	    mkdir -p $_PEXPORTS_UDIR/bin
-	    cp pexports-*/bin/* $_PEXPORTS_UDIR/bin
-	    if test x$cross_compile = xyes ; then
-		cd pexports-*/src
-		make
-		cp pexports.exe ../../bin/pexports
-	    fi
-        qpopd
+        wget_unpacked $MINGW_UTILS_URL $DOWNLOAD_DIR $MINGW_UTILS_DIR
     fi
-    quiet which pexports || die "pexports unavailable"
+    (quiet which pexports && quiet which reimp) || die "pexports unavailable"
 }
 
 function inst_exetype() {
@@ -373,8 +366,12 @@
     then
         echo "libxml2 already installed.  skipping."
     else
+        wget_unpacked $LIBXSLT_URL $DOWNLOAD_DIR $LIBXML2_DIR
         wget_unpacked $LIBXML2_URL $DOWNLOAD_DIR $LIBXML2_DIR
         qpushd $LIBXML2_DIR
+            mv libxslt-* mydir
+            cp -r mydir/* .
+            rm -rf mydir
             mv libxml2-* mydir
             cp -r mydir/* .
             rm -rf mydir
@@ -639,6 +636,30 @@
     quiet which iscc || die "iscc (Inno Setup Compiler) not installed correctly"
 }
 
+function inst_hh() {
+    setup HTML Help Workshop
+    _HH_UDIR=`unix_path $HH_DIR`
+    add_to_env -I$_HH_UDIR/include HH_CPPFLAGS
+    add_to_env -L$_HH_UDIR/lib HH_LDFLAGS
+    add_to_env $_HH_UDIR PATH
+    if quiet ${LD} $HH_LDFLAGS -lhtmlhelp -o $TMP_UDIR/ofile
+    then
+        echo "html help workshop already installed.  skipping."
+    else
+        smart_wget $HH_URL $DOWNLOAD_DIR
+        echo "!!! When asked for an installation path, specify $HH_DIR !!!"
+        $LAST_FILE
+        qpushd $HH_DIR/lib
+           _HHCTRL_OCX=$(which hhctrl.ocx || true)
+           [ "$_HHCTRL_OCX" ] || die "Did not find hhctrl.ocx"
+           pexports -h ../include/htmlhelp.h $_HHCTRL_OCX > htmlhelp.def
+           ${DLLTOOL} -k -d htmlhelp.def -l libhtmlhelp.a
+           mv htmlhelp.lib htmlhelp.lib.bak
+        qpopd
+    fi
+    quiet ${LD} $HH_LDFLAGS -lhtmlhelp -o $TMP_UDIR/ofile || die "html help workshop not installed correctly"
+}
+
 function inst_opensp() {
     setup Opensp
     _OPENSP_UDIR=`unix_path ${OPENSP_DIR}`
@@ -884,8 +905,8 @@
 	    ${LIBOFX_OPTIONS} \
 	    ${AQBANKING_OPTIONS} \
             --enable-binreloc \
-            CPPFLAGS="${AUTOTOOLS_CPPFLAGS} ${REGEX_CPPFLAGS} ${GNOME_CPPFLAGS} ${GUILE_CPPFLAGS} ${KTOBLZCHECK_CPPFLAGS} -D_WIN32" \
-            LDFLAGS="${AUTOTOOLS_LDFLAGS} ${REGEX_LDFLAGS} ${GNOME_LDFLAGS} ${GUILE_LDFLAGS} ${KTOBLZCHECK_LDFLAGS}" \
+            CPPFLAGS="${AUTOTOOLS_CPPFLAGS} ${REGEX_CPPFLAGS} ${GNOME_CPPFLAGS} ${GUILE_CPPFLAGS} ${KTOBLZCHECK_CPPFLAGS} ${HH_CPPFLAGS} -D_WIN32" \
+            LDFLAGS="${AUTOTOOLS_LDFLAGS} ${REGEX_LDFLAGS} ${GNOME_LDFLAGS} ${GUILE_LDFLAGS} ${KTOBLZCHECK_LDFLAGS} ${HH_LDFLAGS}" \
             PKG_CONFIG_PATH="${PKG_CONFIG_PATH}"
 
         # Windows DLLs don't need relinking
@@ -938,6 +959,62 @@
     qpopd
 }
 
+function make_chm() {
+    _CHM_TYPE=$1
+    _CHM_LANG=$2
+    echo "Processing $_CHM_TYPE ($_CHM_LANG) ..."
+    qpushd $_CHM_TYPE/$_CHM_LANG
+        xsltproc ../../../docbook-xsl/htmlhelp/htmlhelp.xsl gnucash-$_CHM_TYPE.xml
+        count=0
+        echo >> htmlhelp.hhp
+        echo "[ALIAS]" >> htmlhelp.hhp
+        echo "IDH_0=index.html" >> htmlhelp.hhp
+        echo "#define IDH_0 0" > mymaps
+        echo "[Map]" > htmlhelp.hhmap
+        echo "Searching for anchors ..."
+        for id in `cat *.xml | sed '/sect.*id=/!d;s,.*id=["'\'']\([^"'\'']*\)["'\''].*,\1,'` ; do
+            files=`grep -l "[\"']${id}[\"']" *.html` || continue
+            echo "IDH_$((++count))=${files}#${id}" >> htmlhelp.hhp
+            echo "#define IDH_${count} ${count}" >> mymaps
+            echo "${id}=${count}" >> htmlhelp.hhmap
+        done
+        echo >> htmlhelp.hhp
+        echo "[MAP]" >> htmlhelp.hhp
+        cat mymaps >> htmlhelp.hhp
+        rm mymaps
+        hhc htmlhelp.hhp || true
+        mv -fv htmlhelp.chm $_DOCS_INST_UDIR/$_CHM_LANG/gnucash-$_CHM_TYPE.chm
+        mv -fv htmlhelp.hhmap $_DOCS_INST_UDIR/$_CHM_LANG/gnucash-$_CHM_TYPE.hhmap
+    qpopd
+}
+
+function inst_docs() {
+    _DOCS_UDIR=`unix_path $DOCS_DIR`
+    if [ ! -d $_DOCS_UDIR/docbook-xsl ] ; then
+        wget_unpacked $DOCBOOK_XSL_URL $DOWNLOAD_DIR $DOCS_DIR
+        mv $_DOCS_UDIR/docbook-xsl-* $_DOCS_UDIR/docbook-xsl
+    fi
+    mkdir -p $_DOCS_UDIR/repos
+    qpushd $DOCS_DIR/repos
+        # latest revision that should compile, use HEAD or vwxyz
+        SVN_REV="HEAD"
+        if [ -x .svn ]; then
+            setup "SVN update of docs"
+            svn up -r ${SVN_REV}
+        else
+            setup "SVN checkout of docs"
+            svn co -r ${SVN_REV} $DOCS_URL .
+        fi
+        setup docs
+        _DOCS_INST_UDIR=`unix_path $INSTALL_DIR`/share/gnucash/help
+        mkdir -p $_DOCS_INST_UDIR/{C,de_DE}
+        make_chm guide C
+        make_chm guide de_DE
+        make_chm help C
+        make_chm help de_DE
+    qpopd
+}
+
 function finish() {
     setup Finish...
     _NEW=x



More information about the gnucash-changes mailing list