pidgin/android/libpurple

Parents 49405e4b7a92
Children 71533f0d5dc0
Initial implementation for prepare-workspace.sh script; temporary downgrade for libxml (and switch to OBS); gettext update; fixed issues related to downloading deps via https
--- a/.hgignore Sun Apr 07 14:04:14 2013 +0200
+++ b/.hgignore Sun Apr 07 17:51:24 2013 +0200
@@ -97,6 +97,7 @@
pidgin/plugins/perl/common/Makefile.old
pidgin/win32/nsis/gtk-runtime-*.*.*.*.zip
pidgin/win32/nsis/gtk_runtime_stage$
+pidgin/win32/nsis/cacert.pem
pidgin/win32/nsis/langmacros.nsh
pidgin/win32/nsis/nsis_translations.desktop
pidgin/win32/nsis/pidgin-spellcheck-preselect.nsh
--- a/libpurple/Makefile.mingw Sun Apr 07 14:04:14 2013 +0200
+++ b/libpurple/Makefile.mingw Sun Apr 07 17:51:24 2013 +0200
@@ -8,10 +8,9 @@
include $(PIDGIN_TREE_TOP)/libpurple/win32/global.mak
TARGET = libpurple
-NEEDED_DLLS = $(LIBXML2_TOP)/bin/libxml2-2.dll
ifeq ($(CYRUS_SASL), 1)
-NEEDED_DLLS += $(CYRUS_SASL_TOP)/bin/libsasl.dll
+NEEDED_DLLS = $(CYRUS_SASL_TOP)/bin/libsasl.dll
CYRUS_SASL_PLUGINS = \
$(CYRUS_SASL_TOP)/bin/sasl2/saslANONYMOUS.dll \
--- a/libpurple/win32/global.mak Sun Apr 07 14:04:14 2013 +0200
+++ b/libpurple/win32/global.mak Sun Apr 07 17:51:24 2013 +0200
@@ -106,7 +106,7 @@
ifeq "$(origin CC)" "default"
CC := gcc.exe
endif
-GMSGFMT ?= $(WIN32_DEV_TOP)/gettext-0.17/bin/msgfmt
+GMSGFMT ?= $(WIN32_DEV_TOP)/gettext-0.18/bin/msgfmt
MAKENSIS ?= makensis.exe
PERL ?= perl
WINDRES ?= windres
--- a/pidgin/win32/nsis/generate_gtk_zip.sh Sun Apr 07 14:04:14 2013 +0200
+++ b/pidgin/win32/nsis/generate_gtk_zip.sh Sun Apr 07 17:51:24 2013 +0200
@@ -21,14 +21,35 @@
BUNDLE_SHA1SUM="402c265590f304537e31a1f3b04aad32c6eea620"
ZIP_FILE="$PIDGIN_BASE/pidgin/win32/nsis/gtk-runtime-$BUNDLE_VERSION.zip"
+function download() {
+ if [ -e "$2" ]; then
+ echo "File exists"
+ exit 1
+ fi
+ failed=0
+ wget -t 3 "$1" -O "$2" -o "wget.log" --retry-connrefused --waitretry=2 \
+ --ca-certificate="${STAGE_DIR}/../cacert.pem" \
+ || failed=1
+ if [ $failed != 0 ] ; then
+ if [ "$3" != "quiet" ] ; then
+ echo "Download failed"
+ cat "wget.log"
+ fi
+ rm "wget.log"
+ rm -f "$2"
+ return 1
+ fi
+ rm "wget.log"
+ return 0
+}
+
+cat $PIDGIN_BASE/share/ca-certs/*.pem > $STAGE_DIR/../cacert.pem
+
#Download the existing file (so that we distribute the exact same file for all releases with the same bundle version)
FILE="$ZIP_FILE"
if [ ! -e "$FILE" ]; then
echo "Downloading the existing file"
- wget -q "https://pidgin.im/win32/download_redir.php?version=$PIDGIN_VERSION&gtk_version=$BUNDLE_VERSION&dl_pkg=gtk" -O "$FILE"
- if [ `stat -c %s $FILE` == 0 ]; then
- rm $FILE
- fi
+ download "https://pidgin.im/win32/download_redir.php?version=$PIDGIN_VERSION&gtk_version=$BUNDLE_VERSION&dl_pkg=gtk" "$FILE" "quiet"
fi
if [ -e "$FILE" ]; then
CHECK_SHA1SUM=`sha1sum $FILE`
@@ -52,7 +73,7 @@
#DOWNLOAD_HOST="http://download.opensuse.org/repositories/windows:/mingw:/win32/openSUSE_12.3/noarch/"
#TODO: this is just a temporary mirror - Tomek Wasilczyk's <tomkiewicz@cpw.pidgin.im> Dropbox
-DOWNLOAD_HOST="http://dl.dropbox.com/u/5448886/pidgin-win32/runtime-deps/"
+DOWNLOAD_HOST="https://dl.dropbox.com/u/5448886/pidgin-win32/runtime-deps/"
ATK="${DOWNLOAD_HOST}mingw32-atk-2.6.0-1.4.noarch.rpm ATK 2.6.0-1.4 sha1sum:d0792a3355b22cf4f0e218382dde71b1e22a2b03"
CAIRO2="${DOWNLOAD_HOST}mingw32-libcairo2-1.10.2-8.4.noarch.rpm Cairo 1.10.2-8.4 sha1sum:f69af74753c7fcd95b7778eee7c3d731d64749ba"
@@ -80,6 +101,7 @@
LIBSSP="${DOWNLOAD_HOST}mingw32-libssp-4.8.0-6.1.noarch.rpm LibSSP 4.8.0-6.1 sha1sum:c05b2e0470f41d26f8ebfff93dfd51263842a4ea"
LIBSTDCPP="${DOWNLOAD_HOST}mingw32-libstdc++-4.7.2-2.4.noarch.rpm libstdc++ 4.7.2-2.4 sha1sum:e031fad6b7bf54c9846d5a857bb8de6faefdcd1b"
LIBTIFF="${DOWNLOAD_HOST}mingw32-libtiff-4.0.2-1.4.noarch.rpm libtiff 4.0.2-1.4 sha1sum:9a8f8b018e8bafd47067fe6fd0debc1e887239b1"
+LIBXML="${DOWNLOAD_HOST}mingw32-libxml2-2.8.0-2.6.noarch.rpm libxml 2.8.0-2.6 sha1sum:9be07823d7074362abac17bf7a7b092659aed002"
LIBXSLT="${DOWNLOAD_HOST}mingw32-libxslt-1.1.27-1.4.noarch.rpm libxslt 1.1.27-1.4 sha1sum:4a08612ad73235b0fab95e17644d72e8f24097c3"
PANGO="${DOWNLOAD_HOST}mingw32-pango-1.30.1-1.4.noarch.rpm Pango 1.30.1-1.4 sha1sum:69c4515babdf99b0ded04c24dc3a7f33debac934"
PIXMAN="${DOWNLOAD_HOST}mingw32-pixman-0.26.0-1.4.noarch.rpm pixman 0.26.0-1.4 sha1sum:f751fe428ea83996daf7e57bff6f4f79361b0d29"
@@ -92,7 +114,7 @@
WEBKITGTK="${DOWNLOAD_HOST}mingw32-libwebkitgtk-1.8.3-1.14.noarch.rpm WebKitGTK+ 1.8.3-1.14 sha1sum:ade86455fc2da257f4fe5831367f500a61a1af9a"
ZLIB="${DOWNLOAD_HOST}mingw32-zlib-1.2.7-1.4.noarch.rpm zlib 1.2.7-1.4 sha1sum:83e91f3b4d14e47131ca33fc69e12b82aabdd589"
-ALL="ATK CAIRO2 DBUS DBUS_GLIB ENCHANT FONTCONFIG FREETYPE GDK_PIXBUF GEOCLUE GLIB GST GST_INT GTK2 LIBFFI LIBGCC LIBJASPER LIBICU LIBINTL LIBJPEG LIBJSON LIBLZMA LIBPNG LIBSOUP LIBSSP LIBSTDCPP LIBTIFF LIBXSLT PANGO PIXMAN PTHREADS SQLITE WEBKITGTK ZLIB"
+ALL="ATK CAIRO2 DBUS DBUS_GLIB ENCHANT FONTCONFIG FREETYPE GDK_PIXBUF GEOCLUE GLIB GST GST_INT GTK2 LIBFFI LIBGCC LIBJASPER LIBICU LIBINTL LIBJPEG LIBJSON LIBLZMA LIBPNG LIBSOUP LIBSSP LIBSTDCPP LIBTIFF LIBXML LIBXSLT PANGO PIXMAN PTHREADS SQLITE WEBKITGTK ZLIB"
mkdir -p $STAGE_DIR
cd $STAGE_DIR
@@ -104,13 +126,13 @@
echo Bundle Version $BUNDLE_VERSION > $CONTENTS_FILE
#TODO: temporary mirror also
-CPIO_URL="http://dl.dropbox.com/u/5448886/pidgin-win32/cpio/bsdcpio-3.0.3-1.4.zip"
+CPIO_URL="https://dl.dropbox.com/u/5448886/pidgin-win32/cpio/bsdcpio-3.0.3-1.4.zip"
CPIO_SHA1SUM="0cb99adb2c2d759c9a21228223e55c8bf227f736"
CPIO_DIR="bsdcpio"
FILE="bsdcpio.zip"
if [ ! -e "$FILE" ]; then
echo "Downloading bsdcpio"
- wget -q "$CPIO_URL" -O "$FILE" || exit 1
+ download "$CPIO_URL" "$FILE" || exit 1
fi
CHECK_SHA1SUM=`sha1sum $FILE`
CHECK_SHA1SUM=${CHECK_SHA1SUM%%\ *}
@@ -131,8 +153,8 @@
MINGW_DIR="usr/i686-w64-mingw32/sys-root/mingw"
MINGW_DIR_TOP="usr"
if [ ! -e $FILE ]; then
- echo Downloading $NAME
- wget -q $URL || exit 1
+ echo "Downloading $NAME"
+ download "$URL" "$FILE" || exit 1
fi
VALIDATION_TYPE=${VALIDATION%%:*}
VALIDATION_VALUE=${VALIDATION##*:}
@@ -146,7 +168,7 @@
elif [ $VALIDATION_TYPE == 'gpg' ]; then
if [ ! -e "$FILE.asc" ]; then
echo Downloading GPG key for $NAME
- wget -q "$URL.asc" || exit 1
+ download "$URL.asc" "$FILE.asc" || exit 1
fi
#Use our own keyring to avoid adding stuff to the main keyring
#This doesn't use $GPG_SIGN because we don't this validation to be bypassed when people are skipping signing output
@@ -181,6 +203,7 @@
download_and_extract "$VAR"
done
rm -rf $CPIO_DIR
+rm "${STAGE_DIR}/../cacert.pem"
echo "All components ready"
cp $INSTALL_DIR/bin/libintl-8.dll $INSTALL_DIR/bin/intl.dll
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/pidgin/win32/prepare-workspace.sh Sun Apr 07 17:51:24 2013 +0200
@@ -0,0 +1,301 @@
+#!/bin/bash
+# Script to prepare a workspace (devel dependencies, check system
+# configuration) for Pidgin compilation under win32
+#
+# Written by Tomek Wasilczyk <tomkiewicz@cpw.pidgin.im>, licensed under GNU GPL
+
+# TODO:
+# * check, if PATH was correctly set (for mingw, perl, nsis)
+
+# configuration
+
+BONJOUR_GUID_PACKED="5CA28B3B1DEA7654999C464610C010EB"
+
+#TODO: this is just a temporary mirror - Tomek Wasilczyk's <tomkiewicz@cpw.pidgin.im> Dropbox
+DOWNLOAD_HOST="https://dl.dropbox.com/u/5448886/pidgin-win32/devel-deps/"
+
+ARCHIVES=""
+OBS_SKIP="usr/i686-w64-mingw32/sys-root/mingw"
+
+# bsdcpio is used for extracting rpms
+ARC_CPI="https://dl.dropbox.com/u/5448886/pidgin-win32/cpio/bsdcpio-3.0.3-1.4.zip;bsdcpio;3.0.3-1.4;0cb99adb2c2d759c9a21228223e55c8bf227f736;;"
+ARCHIVES+="ARC_CPI "
+
+ARC_CSA="${DOWNLOAD_HOST}cyrus-sasl-2.1.25.tar.gz;Cyrus SASL;2.1.25;b9d7f510c0c5daa71ee5225daacdd58e948a8d19;;"
+ARCHIVES+="ARC_CSA "
+ARC_NSS="${DOWNLOAD_HOST}nss-3.14.3-nspr-4.9.5.tar.gz;NSS;3.14.3;fb11968ac5e3fabc9594324327856f7fba0ba4b0;;"
+ARCHIVES+="ARC_NSS "
+
+ARC_PID="${DOWNLOAD_HOST}pidgin-inst-deps-20130214.tar.gz;inst-deps;20130214;372218ab472c4070cd45489dae175dea5638cf17;;"
+ARCHIVES+="ARC_PID "
+
+#mingw gcc and its dependencies
+ARC_MG1="${DOWNLOAD_HOST}mingw32-gcc-4.8.0-6.1.noarch.rpm;mingw: gcc;4.8.0-6.1;00591ba625cb4d3968f9907a76e7e3350e80c65b;${OBS_SKIP};mingw"
+ARCHIVES+="ARC_MG1 "
+ARC_MG2="${DOWNLOAD_HOST}mingw32-cpp-4.8.0-6.1.noarch.rpm;mingw: cpp;4.8.0-6.1;ea22584abf14cdf34217bb5eb24a30211a382882;${OBS_SKIP};mingw"
+ARCHIVES+="ARC_MG2 "
+ARC_MG3="${DOWNLOAD_HOST}mingw32-binutils-2.22.52-3.5.noarch.rpm;mingw: binutils;2.22.52-3.5;e6431d8dfa0dfe5a3488017c291cb68193999808;${OBS_SKIP};mingw"
+ARCHIVES+="ARC_MG3 "
+ARC_MG4="${DOWNLOAD_HOST}mingw32-libgmp-5.0.5-1.6.noarch.rpm;mingw: libgmp;5.0.5-1.6;58ff8155e870063a2cab999f413ffa1ec6ad2d16;${OBS_SKIP};mingw"
+ARCHIVES+="ARC_MG4 "
+ARC_MG5="${DOWNLOAD_HOST}mingw32-libmpc-1.0-1.6.noarch.rpm;mingw: libmpc;1.0-1.6;552dd1de81aef3dfdb7b3a87f13b79e6805d9940;${OBS_SKIP};mingw"
+ARCHIVES+="ARC_MG5 "
+ARC_MG6="${DOWNLOAD_HOST}mingw32-libmpfr-3.1.0-1.6.noarch.rpm;mingw: libmpfr;3.1.0-1.6;d86d12af65c442dc260d156528fff009d21dab9c;${OBS_SKIP};mingw"
+ARCHIVES+="ARC_MG6 "
+ARC_MG7="${DOWNLOAD_HOST}mingw32-runtime-20130216-2.3.noarch.rpm;mingw: runtime;20130216-2.3;9ff3810f8313d19ab18458d73565856608cf9188;${OBS_SKIP};mingw"
+ARCHIVES+="ARC_MG7 "
+ARC_MG8="${DOWNLOAD_HOST}mingw32-zlib-1.2.7-1.4.noarch.rpm;mingw: zlib;1.2.7-1.4;83e91f3b4d14e47131ca33fc69e12b82aabdd589;${OBS_SKIP};mingw"
+ARCHIVES+="ARC_MG8 "
+ARC_MG9="${DOWNLOAD_HOST}mingw32-headers-20130216-1.1.noarch.rpm;mingw: headers;20130216-1.1;313bdc131e15bbca1e4332395c536f2caa9e54b0;${OBS_SKIP}/include;mingw/lib/gcc/i686-w64-mingw32/4.8.0/include"
+ARCHIVES+="ARC_MG9 "
+
+#gtk and friends
+GTK_DIR="gtk_2_0-2.24"
+ARC_GT1="${DOWNLOAD_HOST}mingw32-glib2-devel-2.36.0-2.2.noarch.rpm;gtk: Glib;2.36.0-2.2;dd1a632960673c5a3e86a01015a15564d023f8d0;${OBS_SKIP};${GTK_DIR}"
+ARCHIVES+="ARC_GT1 "
+ARC_GT2="${DOWNLOAD_HOST}mingw32-gtk2-devel-2.24.14-2.2.noarch.rpm;gtk: GTK+2;2.24.14-2.2;8be2b1c9dc94fa9e19f9f95a9b716340bbab643f;${OBS_SKIP};${GTK_DIR}"
+ARCHIVES+="ARC_GT2 "
+ARC_GT3="${DOWNLOAD_HOST}mingw32-libintl-devel-0.18.1.1-13.6.noarch.rpm;gtk: libintl;0.18.1.1-13.6;49afd3059ecc7713debb29b801558958637114d1;${OBS_SKIP};${GTK_DIR}"
+ARCHIVES+="ARC_GT3 "
+ARC_GT4="${DOWNLOAD_HOST}mingw32-zlib-devel-1.2.7-1.7.noarch.rpm;gtk: zlib;1.2.7-1.7;e3fd07747fcd96bbf83d7a1a870feccc19c0e15e;${OBS_SKIP};${GTK_DIR}"
+ARCHIVES+="ARC_GT4 "
+ARC_GT5="${DOWNLOAD_HOST}mingw32-atk-devel-2.8.0-1.3.noarch.rpm;gtk: ATK;2.8.0-1.3;3324e25c85222a95ef12ef28305aa19680860c78;${OBS_SKIP};${GTK_DIR}"
+ARCHIVES+="ARC_GT5 "
+ARC_GT6="${DOWNLOAD_HOST}mingw32-cairo-devel-1.10.2-8.8.noarch.rpm;gtk: Cairo;1.10.2-8.8;9b6acea60968eb218a0eedbcca05820576d8d8df;${OBS_SKIP};${GTK_DIR}"
+ARCHIVES+="ARC_GT6 "
+ARC_GT7="${DOWNLOAD_HOST}mingw32-gdk-pixbuf-devel-2.26.3-1.7.noarch.rpm;gtk: GDK-PixBuf;2.26.3-1.7;6a82f4b03ed83b8d68a414d5631b85d8589471c7;${OBS_SKIP};${GTK_DIR}"
+ARCHIVES+="ARC_GT7 "
+ARC_GT8="${DOWNLOAD_HOST}mingw32-pango-devel-1.30.1-1.7.noarch.rpm;gtk: Pango;1.30.1-1.7;8cd9e088f5355f499c3b25af1a451c7e63383f98;${OBS_SKIP};${GTK_DIR}"
+ARCHIVES+="ARC_GT8 "
+
+ARC_ENC="${DOWNLOAD_HOST}enchant_1.6.0_win32.zip;Enchant;1.6.0;831ec6bd4da4f58015415d6e17301a91ab11675a;enchant_1.6.0_win32;enchant_1.6.0_win32"
+ARCHIVES+="ARC_ENC "
+
+ARC_GSP="${DOWNLOAD_HOST}gtkspell-2.0.16.tar.bz2;GtkSpell;2.0.16;fd3fddeccb0ad4990708129731a5e93b899fca93;gtkspell-2.0.16;gtkspell-2.0.16"
+ARCHIVES+="ARC_GSP "
+
+ARC_INT="${DOWNLOAD_HOST}intltool_0.40.4-1_win32.zip;intltool;0.40.4-1;e609c31dee8aa60b738c839ea958ec241109e1bd;;intltool_0.40.4-1_win32"
+ARCHIVES+="ARC_INT "
+
+ARC_MWH="${DOWNLOAD_HOST}meanwhile-1.0.2_daa3-win32.zip;meanwhile;1.0.2_daa3;9653fcd8736d3eb947c4e58726dcc7c23859fac7;meanwhile-1.0.2_daa3;meanwhile-1.0.2_daa3"
+ARCHIVES+="ARC_MWH "
+
+ARC_PRL="${DOWNLOAD_HOST}perl_5-10-0.tar.gz;Perl;5.10.0;863b2f879698a5407a3edb73a310bdfc9dea8f12;perl-5.10.0;perl-5.10.0"
+ARCHIVES+="ARC_PRL "
+
+ARC_SIL="${DOWNLOAD_HOST}silc-toolkit-1.1.10.tar.gz;SILC Toolkit;1.1.10;42f835ed28d9567acde8bd3e553c8a5c94b799c5;silc-toolkit-1.1.10;silc-toolkit-1.1.10"
+ARCHIVES+="ARC_SIL "
+
+ARC_TCL="${DOWNLOAD_HOST}tcl-8.4.5.tar.gz;Tcl;8.4.5;2d4ae9e6f3609ac3c41c88be81deb2a26f2e82b5;tcl-8.4.5;tcl-8.4.5"
+ARCHIVES+="ARC_TCL "
+
+ARC_JSG="${DOWNLOAD_HOST}mingw32-json-glib-devel-0.14.2-1.7.noarch.rpm;json-glib;0.14.2-1.7;e86a81d5c4bbc7a2ea6b808dd5819c883c4303cc;${OBS_SKIP};json-glib-0.14"
+ARCHIVES+="ARC_JSG "
+
+ARC_XML="${DOWNLOAD_HOST}mingw32-libxml2-devel-2.8.0-2.6.noarch.rpm;libxml2;2.8.0-2.6;5ee322c0a3a5b39f690714b1cff9d22338d83bc8;${OBS_SKIP};libxml2-2.8.0"
+ARCHIVES+="ARC_XML "
+
+ARC_WKG="${DOWNLOAD_HOST}mingw32-libwebkitgtk-devel-1.8.3-1.14.noarch.rpm;WebKitGTK+;1.8.3-1.14;5f2ae2c8c04c4ad4309ba677de886f450db1fe6d;${OBS_SKIP};libwebkitgtk-1.10"
+ARCHIVES+="ARC_WKG "
+
+ARC_SOU="${DOWNLOAD_HOST}mingw32-libsoup-devel-2.36.0-1.4.noarch.rpm;libsoup;2.36.0-1.4;bc0a402add235cc263b972453fe4f1afa6a07ba5;${OBS_SKIP};libsoup-2.36"
+ARCHIVES+="ARC_SOU "
+
+ARC_GTT="${DOWNLOAD_HOST}mingw32-gettext-runtime-0.18.1.1-13.6.noarch.rpm;gettext;0.18.1.1-13.6;e3785e932427d63bf5cf27f258d1236e49437143;${OBS_SKIP};gettext-0.18"
+ARCHIVES+="ARC_GTT "
+
+# implementation
+
+if [ `uname -o` != "Cygwin" ]; then
+ echo
+ echo "WARNING: You are on a non-Cygwin platform! Your mileage may vary."
+ echo
+fi
+
+function path_win32_to_cygwin() {
+ path_ret=`echo "$1" | $SED 's|\\\\|/|g; s|\\(.\\):|/cygdrive/\\1|; s| |\\ |g'`
+}
+
+function path_real() {
+ if [ "$REALPATH" != "" ]; then
+ path_ret="`${REALPATH} "$1"`"
+ else
+ path_ret="$1"
+ fi
+}
+
+function reg_get_install_path() {
+ guid_packed=$1
+ reg_key="/proc/registry/HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows/CurrentVersion/Installer/UserData/S-1-5-18/Products/${guid_packed}/InstallProperties/InstallLocation"
+ if [ -f $reg_key ] ; then
+ path_win32_to_cygwin "`cat ${reg_key}`"
+ reg_ret="${path_ret}"
+ else
+ reg_ret=""
+ fi
+}
+
+function download() {
+ if [ -e "$2" ]; then
+ echo "File exists"
+ exit 1
+ fi
+ failed=0
+ $WGET -t 3 "$1" -O "$2" -o "wget.log" --retry-connrefused --waitretry=2 --ca-certificate="$WIN32DEV_STORE/cacert.pem" || failed=1
+ if [ $failed != 0 ]; then
+ echo "Download failed"
+ cat "wget.log"
+ rm "wget.log"
+ rm -f "$2"
+ exit 1
+ fi
+ rm "wget.log"
+}
+
+function sha1sum_calc() {
+ sha1sum_ret=`$SHA1SUM "$1" | $SED 's| .*||'`
+}
+
+function download_archive() {
+ url=`echo "$1" | $CUT -d';' -f1`
+ name=`echo "$1" | $CUT -d';' -f2`
+ version=`echo "$1" | $CUT -d';' -f3`
+ sha1sum_orig=`echo "$1" | $CUT -d';' -f4`
+ file=`$BASENAME "$url"`
+
+ cd "$WIN32DEV_STORE"
+
+ if [ ! -e "$file" ]; then
+ echo "Downloading ${name} ${version}..."
+ download "$url" "$file"
+ fi
+
+ sha1sum_calc "$file"
+ sha1sum_file="$sha1sum_ret"
+
+ if [ "$sha1sum_file" != "$sha1sum_orig" ]; then
+ echo "sha1sum ($sha1sum_file) for $file doesn't match expected value of $sha1sum_orig"
+ exit 1
+ fi
+
+ cd - > /dev/null
+}
+
+function extract_archive() {
+ url=`echo "$1" | $CUT -d';' -f1`
+ name=`echo "$1" | $CUT -d';' -f2`
+ dir_skip=`echo "$1" | $CUT -d';' -f5`
+ dir_extract=`echo "$1" | $CUT -d';' -f6`
+ file=`$BASENAME "$url"`
+ ext=`echo "$file" | $SED 's|.*\.\(.*\)|\1|'`
+
+ old_dir=`pwd`
+ cd "$WIN32DEV_STORE"
+
+ echo "Installing ${name}..."
+
+ rm -rf "tmp"
+ mkdir "tmp"
+ if [ "$ext" == "gz" ] || [ "$ext" == "bz2" ]; then
+ $TAR -xf "$file" -C "tmp" || exit 1
+ elif [ "$ext" == "zip" ]; then
+ $UNZIP -q "$file" -d "tmp" || exit 1
+ elif [ "$ext" == "rpm" ]; then
+ cd "tmp"
+ ${WIN32DEV_BASE}/bsdcpio/bsdcpio.exe --quiet -di < "../${file}" || exit 1
+ cd ..
+ else
+ echo "Uknown extension: $ext"
+ rm -rf "tmp"
+ exit 1
+ fi
+
+ dst_dir="${WIN32DEV_BASE}/${dir_extract}"
+ src_dir="tmp/${dir_skip}"
+ mkdir -p $dst_dir
+ cp -rf "${src_dir}"/* "${dst_dir}"/ || exit 1
+ rm -rf "tmp"
+
+ cd "${old_dir}"
+}
+
+# required and optional system dependencies
+REALPATH=`which realpath 2>/dev/null`
+BASENAME=`which basename`
+SED=`which sed`
+CUT=`which cut`
+WGET=`which wget`
+SHA1SUM=`which sha1sum`
+TAR=`which tar`
+UNZIP=`which unzip`
+
+if [ "$SED" == "" ] || [ "$CUT" == "" ] || [ "$BASENAME" == "" ] ||
+ [ "$WGET" == "" ] || [ "$SHA1SUM" == "" ] || [ "$TAR" == "" ] ||
+ [ "$UNZIP" == "" ]; then
+ echo
+ echo ERROR: One or more required utilities were not found. Use Cygwin\'s setup.exe to
+ echo install all packages listed above.
+ exit 1
+fi
+
+# determining paths
+
+PIDGIN_BASE="`pwd`/../.."
+WIN32DEV_BASE="${PIDGIN_BASE}/../win32-dev"
+WIN32DEV_STORE="${PIDGIN_BASE}/../win32-dev-store"
+
+if [ ! -e "${PIDGIN_BASE}/ChangeLog" ]; then
+ echo "Pidgin base directory not found"
+ exit 1
+fi
+
+if [ -e "$WIN32DEV_BASE" ]; then
+ echo "win32-dev directory exists, please remove it before proceeding"
+ exit 1
+fi
+
+mkdir -p "$WIN32DEV_STORE" || exit 1
+path_real "$PIDGIN_BASE"
+PIDGIN_BASE="$path_ret"
+path_real "$WIN32DEV_STORE"
+WIN32DEV_STORE="$path_ret"
+
+cat "$PIDGIN_BASE/share/ca-certs"/*.pem > "$WIN32DEV_STORE/cacert.pem"
+
+# checking for Bonjour SDK
+
+reg_get_install_path "$BONJOUR_GUID_PACKED"
+BONJOUR_SDK_DIR=$reg_ret
+
+if [ "$BONJOUR_SDK_DIR" == "" ]; then
+ echo "Bonjour SDK for Windows v3.0 is not installed, please do it."
+ echo "You can download this SDK from https://developer.apple.com/bonjour/"
+ echo "(Apple ID may be required)."
+ exit 1;
+fi
+
+# downloading archives
+echo "Downloading and verifying archives..."
+for ARCHIVE in $ARCHIVES ; do
+ ARCHIVE=${!ARCHIVE}
+ download_archive "$ARCHIVE"
+done
+
+echo "Composing workspace..."
+mkdir "$WIN32DEV_BASE" || exit 1
+path_real "$WIN32DEV_BASE"
+WIN32DEV_BASE="$path_ret"
+
+echo "Installing Bonjour SDK..."
+mkdir "$WIN32DEV_BASE/Bonjour_SDK"
+cp -r "${BONJOUR_SDK_DIR}"/* "$WIN32DEV_BASE/Bonjour_SDK/"
+
+for ARCHIVE in $ARCHIVES ; do
+ ARCHIVE=${!ARCHIVE}
+ extract_archive "$ARCHIVE"
+done
+
+echo "Removing bsdcpio..."
+rm -rf "${WIN32DEV_BASE}/bsdcpio"
+
+echo "Done."