diff --git a/packaging/win32/dist.sh b/packaging/win32/dist.sh index 426dddeb6e..0305a1e0ce 100644 --- a/packaging/win32/dist.sh +++ b/packaging/win32/dist.sh @@ -10,6 +10,8 @@ qpushd "$(dirname $(unix_path "$0"))" . functions . custom.sh +register_env_var PATH ":" + function prepare() { DIST_DIR=${GNUCASH_DIR}\\dist DIST_UDIR=`unix_path $DIST_DIR` @@ -18,6 +20,18 @@ function prepare() { if [ -x $DIST_DIR ]; then die "Please remove ${DIST_DIR} first" fi + _UNZIP_UDIR=`unix_path $UNZIP_DIR` + _AUTOTOOLS_UDIR=`unix_path $AUTOTOOLS_DIR` + _GUILE_UDIR=`unix_path $GUILE_DIR` + _WIN_UDIR=`unix_path $WINDIR` + _LIBXML2_UDIR=`unix_path $LIBXML2_DIR` + _GNOME_UDIR=`unix_path $GNOME_DIR` + _LIBGSF_UDIR=`unix_path $LIBGSF_DIR` + _GOFFICE_UDIR=`unix_path $GOFFICE_DIR` + _GNUCASH_UDIR=`unix_path $GNUCASH_DIR` + _INNO_UDIR=`unix_path $INNO_DIR` + add_to_env $_UNZIP_UDIR/bin PATH # unzip + add_to_env $_GNOME_UDIR/bin PATH # gconftool-2 } function dist_regex() { @@ -28,14 +42,12 @@ function dist_regex() { 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 @@ -45,21 +57,18 @@ function dist_guile() { 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 @@ -96,7 +105,6 @@ function dist_gnome() { 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 @@ -107,7 +115,6 @@ function dist_libgsf() { 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 @@ -118,7 +125,6 @@ function dist_goffice() { 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 @@ -142,7 +148,6 @@ function finish() { echo "done" done - _INNO_UDIR=`unix_path $INNO_DIR` echo "You can now run the Inno Setup Compiler for creating the setup.exe:" echo ${_INNO_UDIR}/iscc ${_GNUCASH_UDIR}/packaging/win32/gnucash.iss } diff --git a/packaging/win32/functions b/packaging/win32/functions index 992fbd57c7..f67a060359 100644 --- a/packaging/win32/functions +++ b/packaging/win32/functions @@ -48,6 +48,37 @@ function die() { exit -1 } +# usage: register_env_var NAME SEPARATOR [DEFAULT] +function register_env_var() { + [ $# -ge 2 -a $# -le 3 ] || die hard + eval "SEPS_$1"'="'"$2"'"' + if [ $# -eq 3 ]; then + eval "$1_BASE=$3" + else + eval "$1_BASE"'=$'"$1" + fi + eval "$1_ADDS=" + eval export "$1" + ENV_VARS="$ENV_VARS $1" +} +ENV_VARS= + +# usage: add_to_env VALUE NAME +function add_to_env() { + _SEP=`eval echo '"$'"SEPS_$2"'"'` + _ENV=`eval echo '"$'"$2"'"'` + _SED=`eval echo '"s#.*'"${_SEP}$1${_SEP}"'.*##"'` + _TEST=`echo "${_SEP}${_ENV}${_SEP}" | sed "${_SED}"` + if [ "$_TEST" ]; then + if [ "$_ENV" ]; then + eval "$2_ADDS"'="'"$1${_SEP}"'$'"$2_ADDS"'"' + else + eval "$2_ADDS"'="'"$1"'"' + fi + eval "$2"'="$'"$2_ADDS"'$'"$2_BASE"'"' + fi +} + ### Local Variables: *** ### mode: shell-script *** diff --git a/packaging/win32/install.sh b/packaging/win32/install.sh index b840ba87ad..539aa3ba16 100644 --- a/packaging/win32/install.sh +++ b/packaging/win32/install.sh @@ -10,56 +10,22 @@ qpushd "$(dirname $(unix_path "$0"))" . functions . custom.sh -SEPS_ACLOCAL_FLAGS=" " -SEPS_AUTOTOOLS_CPPFLAGS=" " -SEPS_AUTOTOOLS_LDFLAGS=" " -SEPS_GNOME_CPPFLAGS=" " -SEPS_GNOME_LDFLAGS=" " -SEPS_GUILE_LOAD_PATH=";" -SEPS_GUILE_CPPFLAGS=" " -SEPS_GUILE_LDFLAGS=" " -SEPS_INTLTOOL_PERL=" " -SEPS_PATH=":" -SEPS_PKG_CONFIG=":" -PKG_CONFIG="" -SEPS_PKG_CONFIG_PATH=":" -SEPS_READLINE_CPPFLAGS=" " -SEPS_READLINE_LDFLAGS=" " -SEPS_REGEX_CPPFLAGS=" " -SEPS_REGEX_LDFLAGS=" " -ENV_VARS="\ -ACLOCAL_FLAGS \ -AUTOTOOLS_CPPFLAGS \ -AUTOTOOLS_LDFLAGS \ -GNOME_CPPFLAGS \ -GNOME_LDFLAGS \ -GUILE_LOAD_PATH \ -GUILE_CPPFLAGS \ -GUILE_LDFLAGS \ -INTLTOOL_PERL \ -PATH \ -PKG_CONFIG \ -PKG_CONFIG_PATH \ -READLINE_CPPFLAGS \ -READLINE_LDFLAGS \ -REGEX_CPPFLAGS \ -REGEX_LDFLAGS \ -" - -function add_to_env() { - _SEP=`eval echo '"$'"SEPS_$2"'"'` - _ENV=`eval echo '"$'"$2"'"'` - _SED=`eval echo '"s#.*'"${_SEP}$1${_SEP}"'.*##"'` - _TEST=`echo "${_SEP}${_ENV}${_SEP}" | sed "${_SED}"` - if [ "$_TEST" ]; then - if [ "$_ENV" ]; then - eval "$2_ADDS"'="'"$1${_SEP}"'$'"$2_ADDS"'"' - else - eval "$2_ADDS"'="'"$1"'"' - fi - eval "$2"'="$'"$2_ADDS"'$'"$2_BASE"'"' - fi -} +register_env_var ACLOCAL_FLAGS " " +register_env_var AUTOTOOLS_CPPFLAGS " " +register_env_var AUTOTOOLS_LDFLAGS " " +register_env_var GNOME_CPPFLAGS " " +register_env_var GNOME_LDFLAGS " " +register_env_var GUILE_LOAD_PATH ";" +register_env_var GUILE_CPPFLAGS " " +register_env_var GUILE_LDFLAGS " " +register_env_var INTLTOOL_PERL " " +register_env_var PATH ":" +register_env_var PKG_CONFIG ":" "" +register_env_var PKG_CONFIG_PATH ":" +register_env_var READLINE_CPPFLAGS " " +register_env_var READLINE_LDFLAGS " " +register_env_var REGEX_CPPFLAGS " " +register_env_var REGEX_LDFLAGS " " function prepare() { # Necessary so that intltoolize doesn't come up with some @@ -91,45 +57,10 @@ function prepare() { mkdir -p $TMP_DIR mkdir -p $DOWNLOAD_DIR - for _ENV in $ENV_VARS; do - eval "${_ENV}_BASE"'=$'"${_ENV}" - eval "${_ENV}_ADDS=" - eval export "${_ENV}" - done DOWNLOAD_UDIR=`unix_path $DOWNLOAD_DIR` TMP_UDIR=`unix_path $TMP_DIR` } -# 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 inst_wget() { setup Wget _WGET_UDIR=`unix_path $WGET_DIR`