r15214 - gnucash/trunk/packaging/win32 - Add dist.sh, a script that extracts all necessary files needed to run

Andreas Köhler andi5 at cvs.gnucash.org
Fri Dec 15 09:36:47 EST 2006


Author: andi5
Date: 2006-12-15 09:36:45 -0500 (Fri, 15 Dec 2006)
New Revision: 15214
Trac: http://svn.gnucash.org/trac/changeset/15214

Added:
   gnucash/trunk/packaging/win32/dist.sh
   gnucash/trunk/packaging/win32/functions
Modified:
   gnucash/trunk/packaging/win32/install.sh
Log:
Add dist.sh, a script that extracts all necessary files needed to run
GnuCash on Windows and puts them into $DIST_DIR. The plan is to call the
Inno Setup Compiler from it and create gnucash-$ver-setup.exe with one
command. A complete GnuCash build on MinGW is needed to run it.
Factor out common functions.


Added: gnucash/trunk/packaging/win32/dist.sh
===================================================================
--- gnucash/trunk/packaging/win32/dist.sh	2006-12-14 22:32:01 UTC (rev 15213)
+++ gnucash/trunk/packaging/win32/dist.sh	2006-12-15 14:36:45 UTC (rev 15214)
@@ -0,0 +1,160 @@
+#!/bin/sh
+
+set -e
+
+function qpushd() { pushd "$@" >/dev/null; }
+function qpopd() { popd >/dev/null; }
+function unix_path() { echo "$*" | sed 's,^\([A-Za-z]\):,/\1,;s,\\,/,g'; }
+
+qpushd "$(dirname $(unix_path "$0"))"
+. functions
+. custom.sh
+
+function prepare() {
+    DIST_UDIR=`unix_path $DIST_DIR`
+    DIST_WFSDIR=`win_fs_path $DIST_DIR`
+    TMP_UDIR=`unix_path $TMP_DIR`
+    if [ -x $DIST_DIR ]; then
+        die "Please remove ${DIST_DIR} first"
+    fi
+}
+
+function dist_regex() {
+    setup RegEx
+    smart_wget $REGEX_BIN_URL $DOWNLOAD_DIR
+    unzip -q $LAST_FILE bin/regex.dll -d $DIST_DIR
+}
+
+function dist_autotools() {
+    setup Autotools
+    _AUTOTOOLS_UDIR=`unix_path $AUTOTOOLS_DIR`
+    mkdir -p $DIST_UDIR/bin
+    cp $_AUTOTOOLS_UDIR/bin/*.dll $DIST_UDIR/bin
+}
+
+function dist_guile() {
+    setup Guile
+    _GUILE_UDIR=`unix_path $GUILE_DIR`
+    mkdir -p $DIST_UDIR/bin
+    cp -a $_GUILE_UDIR/bin/libguile{.,-ltdl.,-srfi}*dll $DIST_UDIR/bin
+    mkdir -p $DIST_UDIR/share
+    cp -r $_GUILE_UDIR/share/guile $DIST_UDIR/share
+}
+
+function dist_openssl() {
+    setup OpenSSL
+    _WIN_UDIR=`unix_path $WINDIR`
+    mkdir -p $DIST_UDIR/bin
+    cp $_WIN_UDIR/system32/lib{eay,ssl}*.dll $DIST_UDIR/bin
+}
+
+function dist_libxml2() {
+    setup LibXML2
+    _LIBXML2_UDIR=`unix_path $LIBXML2_DIR`
+    mkdir -p $DIST_UDIR/bin
+    cp $_LIBXML2_UDIR/bin/libxml2.dll $DIST_UDIR/bin
+}
+
+function dist_gnome() {
+    setup Gnome platform
+    _GNOME_UDIR=`unix_path $GNOME_DIR`
+    wget_unpacked $GETTEXT_URL $DOWNLOAD_DIR $DIST_DIR
+    smart_wget $LIBICONV_URL $DOWNLOAD_DIR
+    unzip -q $LAST_FILE bin/iconv.dll -d $DIST_DIR
+    wget_unpacked $GLIB_URL $DOWNLOAD_DIR $DIST_DIR
+    wget_unpacked $LIBJPEG_URL $DOWNLOAD_DIR $DIST_DIR
+    smart_wget $LIBPNG_URL $DOWNLOAD_DIR
+    unzip -q $LAST_FILE bin/libpng13.dll -d $DIST_DIR
+    smart_wget $ZLIB_URL $DOWNLOAD_DIR
+    unzip -q $LAST_FILE zlib1.dll -d $DIST_DIR\\bin
+    wget_unpacked $CAIRO_URL $DOWNLOAD_DIR $DIST_DIR
+    wget_unpacked $EXPAT_URL $DOWNLOAD_DIR $DIST_DIR
+    wget_unpacked $FONTCONFIG_URL $DOWNLOAD_DIR $DIST_DIR
+    wget_unpacked $FREETYPE_URL $DOWNLOAD_DIR $DIST_DIR
+    wget_unpacked $ATK_URL $DOWNLOAD_DIR $DIST_DIR
+    wget_unpacked $PANGO_URL $DOWNLOAD_DIR $DIST_DIR
+    wget_unpacked $LIBART_LGPL_URL $DOWNLOAD_DIR $DIST_DIR
+    wget_unpacked $GTK_URL $DOWNLOAD_DIR $DIST_DIR
+    wget_unpacked $ORBIT2_URL $DOWNLOAD_DIR $DIST_DIR
+    wget_unpacked $GAIL_URL $DOWNLOAD_DIR $DIST_DIR
+    wget_unpacked $POPT_URL $DOWNLOAD_DIR $DIST_DIR
+    wget_unpacked $GCONF_URL $DOWNLOAD_DIR $DIST_DIR
+    wget_unpacked $LIBBONOBO_URL $DOWNLOAD_DIR $DIST_DIR
+    wget_unpacked $GNOME_VFS_URL $DOWNLOAD_DIR $DIST_DIR
+    wget_unpacked $LIBGNOME_URL $DOWNLOAD_DIR $DIST_DIR
+    wget_unpacked $LIBGNOMECANVAS_URL $DOWNLOAD_DIR $DIST_DIR
+    wget_unpacked $LIBBONOBOUI_URL $DOWNLOAD_DIR $DIST_DIR
+    wget_unpacked $LIBGNOMEUI_URL $DOWNLOAD_DIR $DIST_DIR
+    wget_unpacked $LIBGLADE_URL $DOWNLOAD_DIR $DIST_DIR
+    wget_unpacked $LIBGNOMEPRINT_URL $DOWNLOAD_DIR $DIST_DIR
+    wget_unpacked $LIBGNOMEPRINTUI_URL $DOWNLOAD_DIR $DIST_DIR
+    wget_unpacked $GTKHTML_URL $DOWNLOAD_DIR $DIST_DIR
+    rm -rf $DIST_UDIR/etc/gconf/gconf.xml.defaults/{desktop,schemas}
+}
+
+function dist_libgsf() {
+    setup libGSF
+    _LIBGSF_UDIR=`unix_path $LIBGSF_DIR`
+    mkdir -p $DIST_UDIR/bin
+    cp $_LIBGSF_UDIR/bin/libgsf*.dll $DIST_UDIR/bin
+    mkdir -p $DIST_UDIR/etc/gconf/schemas
+    cp $_LIBGSF_UDIR/etc/gconf/schemas/* $DIST_UDIR/etc/gconf/schemas
+    mkdir -p $DIST_UDIR/lib
+    cp -r $_LIBGSF_UDIR/lib/locale $DIST_UDIR/lib
+}
+
+function dist_goffice() {
+    setup GOffice
+    _GOFFICE_UDIR=`unix_path $GOFFICE_DIR`
+    mkdir -p $DIST_UDIR/bin
+    cp $_GOFFICE_UDIR/bin/libgoffice*.dll $DIST_UDIR/bin
+    mkdir -p $DIST_UDIR/lib
+    cp -r $_GOFFICE_UDIR/lib/{goffice,locale} $DIST_UDIR/lib
+    mkdir -p $DIST_UDIR/share
+    cp -r $_GOFFICE_UDIR/share/{goffice,pixmaps} $DIST_UDIR/share
+}
+
+function dist_gnucash() {
+    setup GnuCash
+    _GNUCASH_UDIR=`unix_path $GNUCASH_DIR`
+    mkdir -p $DIST_UDIR/bin
+    cp $_GNUCASH_UDIR/bin/* $DIST_UDIR/bin
+    mkdir -p $DIST_UDIR/etc/gconf/schemas
+    cp $_GNUCASH_UDIR/etc/gconf/schemas/* $DIST_UDIR/etc/gconf/schemas
+    mkdir -p $DIST_UDIR/lib
+    cp -r $_GNUCASH_UDIR/lib/{bin,locale} $DIST_UDIR/lib
+    mkdir -p $DIST_UDIR/lib/gnucash
+    cp $_GNUCASH_UDIR/lib/gnucash/*.dll $DIST_UDIR/lib/gnucash
+    cp -r $_GNUCASH_UDIR/libexec $DIST_UDIR
+    mkdir -p $DIST_UDIR/share
+    cp -r $_GNUCASH_UDIR/share/{gnucash,pixmaps,xml} $DIST_UDIR/share
+}
+
+function finish() {
+    for file in $DIST_UDIR/etc/gconf/schemas/*.schemas; do
+        echo -n "Installing $file ... "
+        gconftool-2 \
+            --config-source=xml:merged:${DIST_WFSDIR}/etc/gconf/gconf.xml.defaults \
+            --install-schema-file $file >/dev/null
+        echo "done"
+    done
+}
+
+prepare
+dist_regex
+dist_autotools
+dist_guile
+dist_openssl
+dist_libxml2
+dist_gnome
+dist_libgsf
+dist_goffice
+dist_gnucash
+finish
+qpopd
+
+
+### Local Variables: ***
+### sh-basic-offset: 4 ***
+### tab-width: 8 ***
+### End: ***

Added: gnucash/trunk/packaging/win32/functions
===================================================================
--- gnucash/trunk/packaging/win32/functions	2006-12-14 22:32:01 UTC (rev 15213)
+++ gnucash/trunk/packaging/win32/functions	2006-12-15 14:36:45 UTC (rev 15214)
@@ -0,0 +1,51 @@
+#!/bin/sh  # for emacs
+
+function add_step() { steps=("${steps[@]}" "$@"); }
+function quiet() { "$@" &>/dev/null; }
+
+# c:/dir/sub
+function win_fs_path() { echo "$*" | sed 's,\\,/,g'; }
+
+# usage:  smart_wget URL DESTDIR
+function smart_wget() {
+    _FILE=`basename $1`
+    _DLD=`unix_path $2`
+
+    # If the file already exists in the download directory ($2)
+    # then don't do anything.  But if it does NOT exist then
+    # download the file to the tmpdir and then when that completes
+    # move it to the dest dir.
+    if [ ! -f $_DLD/$_FILE ] ; then
+        wget --passive-ftp -c $1 -P $TMP_DIR
+        mv $TMP_UDIR/$_FILE $_DLD
+    fi
+    LAST_FILE=$_DLD/$_FILE
+}
+
+# usage:  wget_unpacked URL DOWNLOAD_DIR UNPACK_DIR
+function wget_unpacked() {
+    smart_wget $1 $2
+    _UPD=`unix_path $3`
+    echo -n "Extracting ${LAST_FILE##*/} ... "
+    case $LAST_FILE in
+        *.zip)     unzip -q -o $LAST_FILE -d $_UPD;;
+        *.tar.gz)  tar -xzpf $LAST_FILE -C $_UPD;;
+        *.tar.bz2) tar -xjpf $LAST_FILE -C $_UPD;;
+        *)         die "Cannot unpack file $LAST_FILE!";;
+    esac
+    echo "done"
+}
+
+function setup() {
+    echo
+    echo "############################################################"
+    echo "###  $*"
+    echo "############################################################"
+}
+
+function die() {
+    echo
+    echo "!!! $* !!!"
+    echo "!!! ABORTING !!!"
+    exit -1
+}

Modified: gnucash/trunk/packaging/win32/install.sh
===================================================================
--- gnucash/trunk/packaging/win32/install.sh	2006-12-14 22:32:01 UTC (rev 15213)
+++ gnucash/trunk/packaging/win32/install.sh	2006-12-15 14:36:45 UTC (rev 15214)
@@ -2,21 +2,12 @@
 
 set -e
 
-function add_step() { steps=("${steps[@]}" "$@"); }
 function qpushd() { pushd "$@" >/dev/null; }
 function qpopd() { popd >/dev/null; }
+function unix_path() { echo "$*" | sed 's,^\([A-Za-z]\):,/\1,;s,\\,/,g'; }
 
-# c:/dir/sub
-function win_fs_path() {
-    echo "$*" | sed 's,\\,/,g'
-}
-
-# /c/dir/sub
-function unix_path() {
-    echo "$*" | sed 's,^\([A-Za-z]\):,/\1,;s,\\,/,g'
-}
-
 qpushd "$(dirname $(unix_path "$0"))"
+. functions
 . custom.sh
 
 SEPS_ACLOCAL_FLAGS=" "
@@ -54,21 +45,6 @@
 REGEX_LDFLAGS \
 "
 
-function setup() {
-    echo
-    echo "############################################################"
-    echo "###  $*"
-    echo "############################################################"
-}
-
-function die() {
-    echo
-    echo "!!! $* !!!"
-    echo "!!! ABORTING !!!"
-    exit -1
-}
-
-function quiet() { "$@" &>/dev/null; }
 function add_to_env() {
     _SEP=`eval echo '"$'"SEPS_$2"'"'`
     _ENV=`eval echo '"$'"$2"'"'`



More information about the gnucash-changes mailing list