pidgin/win32/nsis/generate_gtk_zip.sh

branch
release-2.x.y
changeset 36297
41f86d6ff6b0
parent 35283
3542f04b5e52
child 36307
714ba418d0aa
equal deleted inserted replaced
36294:cd5a6082cb27 36297:41f86d6ff6b0
10 fi 10 fi
11 11
12 STAGE_DIR=`readlink -f $PIDGIN_BASE/pidgin/win32/nsis/gtk_runtime_stage` 12 STAGE_DIR=`readlink -f $PIDGIN_BASE/pidgin/win32/nsis/gtk_runtime_stage`
13 #Subdirectory of $STAGE_DIR 13 #Subdirectory of $STAGE_DIR
14 INSTALL_DIR=Gtk 14 INSTALL_DIR=Gtk
15 SRC_INSTALL_DIR=src_install
15 CONTENTS_FILE=$INSTALL_DIR/CONTENTS 16 CONTENTS_FILE=$INSTALL_DIR/CONTENTS
16 PIDGIN_VERSION=$( < $PIDGIN_BASE/VERSION ) 17 PIDGIN_VERSION=$( < $PIDGIN_BASE/VERSION )
17 18
18 #This needs to be changed every time there is any sort of change. 19 #This needs to be changed every time there is any sort of change.
19 BUNDLE_VERSION=2.16.6.2 20 BUNDLE_VERSION=2.16.6.2
20 BUNDLE_SHA1SUM=e1b1ec8d2159fa98b2a9f516dbfe745bf7a22169 21 BUNDLE_SHA1SUM=e1b1ec8d2159fa98b2a9f516dbfe745bf7a22169
21 ZIP_FILE="$PIDGIN_BASE/pidgin/win32/nsis/gtk-runtime-$BUNDLE_VERSION.zip" 22 ZIP_FILE="$PIDGIN_BASE/pidgin/win32/nsis/gtk-runtime-$BUNDLE_VERSION.zip"
23 SRC_ZIP_FILE="$PIDGIN_BASE/pidgin/win32/nsis/gtk-runtime-$BUNDLE_VERSION-src.zip"
22 24
23 #Download the existing file (so that we distribute the exact same file for all releases with the same bundle version) 25 #Download the existing file (so that we distribute the exact same file for all releases with the same bundle version)
24 FILE="$ZIP_FILE" 26 FILE="$ZIP_FILE"
25 if [ ! -e "$FILE" ]; then 27 if [ ! -e "$FILE" ]; then
26 wget "https://pidgin.im/win32/download_redir.php?version=$PIDGIN_VERSION&gtk_version=$BUNDLE_VERSION&dl_pkg=gtk" -O "$FILE" 28 wget "https://pidgin.im/win32/download_redir.php?version=$PIDGIN_VERSION&gtk_version=$BUNDLE_VERSION&dl_pkg=gtk" -O "$FILE"
38 else 40 else
39 exit 0 41 exit 0
40 fi 42 fi
41 43
42 44
43 ATK="http://ftp.gnome.org/pub/gnome/binaries/win32/atk/1.32/atk_1.32.0-2_win32.zip ATK 1.32.0-2 sha1sum:3c31c9d6b19af840e2bd8ccbfef4072a6548dc4e" 45 #Format for packages is "binary_url name version binary_validation src_url src_validation"
46 ATK="http://ftp.gnome.org/pub/gnome/binaries/win32/atk/1.32/atk_1.32.0-2_win32.zip ATK 1.32.0-2 sha1sum:3c31c9d6b19af840e2bd8ccbfef4072a6548dc4e http://ftp.gnome.org/pub/gnome/sources/atk/1.32/atk-1.32.0.tar.bz2|https://raw.githubusercontent.com/dieterv/legacynativebuilds/692072d1c571ef50f8bbe01cd005313d2302bef0/devel/src/dieterv/packaging/atk_1.32.0-2_win32.sh sha256sum:e9a3e598f75c4db1af914f8b052dd9f7e89e920a96cc187c18eb06b8339cb16e|sha256sum:94cf905cee30b461194fa4cdfebedb0013bca46cdc52228ea2f23ef595de158b"
44 #Cairo 1.10.2 has a bug that can be seen when selecting text 47 #Cairo 1.10.2 has a bug that can be seen when selecting text
45 #CAIRO="http://ftp.gnome.org/pub/GNOME/binaries/win32/dependencies/cairo_1.10.2-2_win32.zip Cairo 1.10.2-2 sha1sum:d44cd66a9f4d7d29a8f2c28d1c1c5f9b0525ba44" 48 #CAIRO="http://ftp.gnome.org/pub/GNOME/binaries/win32/dependencies/cairo_1.10.2-2_win32.zip Cairo 1.10.2-2 sha1sum:d44cd66a9f4d7d29a8f2c28d1c1c5f9b0525ba44"
46 CAIRO="http://ftp.gnome.org/pub/gnome/binaries/win32/dependencies/cairo_1.8.10-1_win32.zip Cairo 1.8.10-1 sha1sum:a08476cccd807943958610977a138c4d6097c7b8" 49 CAIRO="http://ftp.gnome.org/pub/gnome/binaries/win32/dependencies/cairo_1.8.10-1_win32.zip Cairo 1.8.10-1 sha1sum:a08476cccd807943958610977a138c4d6097c7b8 http://cairographics.org/releases/cairo-1.8.10.tar.gz|https://developer.pidgin.im/static/win32/cairo_1.8.10-1_win32.sh sha1sum:fd5e8ca82ff0e8542ea4c51612cad387f2a49df3|sha1sum:b2ac2ae06a5ea9f15802209707607fd40b4aa47d"
47 EXPAT="http://ftp.gnome.org/pub/gnome/binaries/win32/dependencies/expat_2.1.0-1_win32.zip Expat 2.1.0-1 gpg:0x71D4DDE53F188CBE" 50 EXPAT="http://ftp.gnome.org/pub/gnome/binaries/win32/dependencies/expat_2.1.0-1_win32.zip Expat 2.1.0-1 gpg:0x71D4DDE53F188CBE http://downloads.sourceforge.net/project/expat/expat/2.1.0/expat-2.1.0.tar.gz|https://raw.githubusercontent.com/dieterv/legacynativebuilds/692072d1c571ef50f8bbe01cd005313d2302bef0/devel/src/dieterv/packaging/expat_2.1.0-1_win32.sh sha1sum:b08197d146930a5543a7b99e871cba3da614f6f0|sha1sum:5b1c345147bbbabeae0bc6649c19ea11fab3902c"
48 FONTCONFIG="http://ftp.gnome.org/pub/gnome/binaries/win32/dependencies/fontconfig_2.8.0-2_win32.zip Fontconfig 2.8.0-2 sha1sum:37a3117ea6cc50c8a88fba9b6018f35a04fa71ce" 51 FONTCONFIG="http://ftp.gnome.org/pub/gnome/binaries/win32/dependencies/fontconfig_2.8.0-2_win32.zip Fontconfig 2.8.0-2 sha1sum:37a3117ea6cc50c8a88fba9b6018f35a04fa71ce http://www.fontconfig.org/release/fontconfig-2.8.0.tar.gz|https://raw.githubusercontent.com/dieterv/legacynativebuilds/692072d1c571ef50f8bbe01cd005313d2302bef0/devel/src/tml/packaging/fontconfig_2.8.0-2_win32.sh sha1sum:570fb55eb14f2c92a7b470b941e9d35dbfafa716|sha1sum:2e8a0e473344b68c440f1a56f33eb669ccd0bf87"
49 FREETYPE="http://ftp.gnome.org/pub/gnome/binaries/win32/dependencies/freetype_2.4.10-1_win32.zip Freetype 2.4.10-1 gpg:0x71D4DDE53F188CBE" 52 FREETYPE="http://ftp.gnome.org/pub/gnome/binaries/win32/dependencies/freetype_2.4.10-1_win32.zip Freetype 2.4.10-1 gpg:0x71D4DDE53F188CBE http://ftp.gnome.org/pub/gnome/binaries/win32/dependencies/freetype-2.4.2.tar.bz2|https://raw.githubusercontent.com/dieterv/legacynativebuilds/692072d1c571ef50f8bbe01cd005313d2302bef0/devel/src/dieterv/packaging/freetype_2.4.10-1_win32.sh sha1sum:cc257ceda2950b8c80950d780ccf3ce665a815d1|sha1sum:3c3c97099f0b1e7c25d55d6d3614b9cdb2da83e7"
50 GETTEXT="http://ftp.gnome.org/pub/gnome/binaries/win32/dependencies/gettext-runtime_0.18.1.1-2_win32.zip Gettext 0.18.1.1-2 sha1sum:a7cc1ce2b99b408d1bbea9a3b4520fcaf26783b3" 53 GETTEXT="http://ftp.gnome.org/pub/gnome/binaries/win32/dependencies/gettext-runtime_0.18.1.1-2_win32.zip Gettext 0.18.1.1-2 sha1sum:a7cc1ce2b99b408d1bbea9a3b4520fcaf26783b3 http://ftp.gnome.org/pub/gnome/binaries/win32/dependencies/gettext-0.18.1.1.tar.gz|https://raw.githubusercontent.com/dieterv/legacynativebuilds/692072d1c571ef50f8bbe01cd005313d2302bef0/devel/src/tml/packaging/gettext_0.18.1.1-2_win32.sh sha1sum:5009deb02f67fc3c59c8ce6b82408d1d35d4e38f|sha1sum:8a7c1bb692c8d4f589c077c8b332c74040bca31c"
51 GLIB="http://ftp.gnome.org/pub/gnome/binaries/win32/glib/2.28/glib_2.28.8-1_win32.zip Glib 2.28.8-1 sha1sum:5d158f4c77ca0b5508e1042955be573dd940b574" 54 GLIB="http://ftp.gnome.org/pub/gnome/binaries/win32/glib/2.28/glib_2.28.8-1_win32.zip Glib 2.28.8-1 sha1sum:5d158f4c77ca0b5508e1042955be573dd940b574 http://ftp.gnome.org/pub/gnome/sources/glib/2.28/glib-2.28.8.tar.bz2|https://raw.githubusercontent.com/dieterv/legacynativebuilds/692072d1c571ef50f8bbe01cd005313d2302bef0/devel/src/dieterv/packaging/glib_2.28.8-1_win32.sh sha256sum:222f3055d6c413417b50901008c654865e5a311c73f0ae918b0a9978d1f9466f|sha256sum:907ebd40af90ea92fdafca44f4c3792ed6c041b7cd9e8d98ae534f51283ab164"
52 GTK="http://ftp.acc.umu.se/pub/gnome/binaries/win32/gtk+/2.16/gtk+_2.16.6-2_win32.zip GTK+ 2.16.6-2 sha1sum:012853e6de814ebda0cc4459f9eed8ae680e6d17" 55 GTK="http://ftp.gnome.org/pub/gnome/binaries/win32/gtk+/2.16/gtk+_2.16.6-2_win32.zip GTK+ 2.16.6-2 sha1sum:012853e6de814ebda0cc4459f9eed8ae680e6d17 http://ftp.acc.umu.se/pub/gnome/sources/gtk+/2.16/gtk+-2.16.6.tar.bz2|https://developer.pidgin.im/static/win32/gtk+_2.16.6-2_win32.sh sha256sum:18e0f9792028e6cc5108447678f17d396f9a2cdfec1e6ab5dca98cb844f954af|sha256sum:47ac17cf3f638464ae8ed54a0a9532693373b5f81752cf92590e3d79c5c976ec"
53 LIBPNG="http://ftp.gnome.org/pub/gnome/binaries/win32/dependencies/libpng_1.4.12-1_win32.zip libpng 1.4.12-1 gpg:0x71D4DDE53F188CBE" 56 LIBPNG="http://ftp.gnome.org/pub/gnome/binaries/win32/dependencies/libpng_1.4.12-1_win32.zip libpng 1.4.12-1 gpg:0x71D4DDE53F188CBE http://download.sourceforge.net/libpng/libpng-1.4.12.tar.gz|https://raw.githubusercontent.com/dieterv/legacynativebuilds/cff4e06f877242f8db485318eccd5f8aa01fb199/devel/src/dieterv/packaging/libpng_1.4.12-1_win32.sh sha1sum:d22b339f3261140fb9de83784d05ce5b86c077fb|sha1sum:e00bc64d84ca50127c0233c045ff0147175f705b"
54 PANGO="https://developer.pidgin.im/static/win32/pango_1.29.4-1daa_win32.zip Pango 1.29.4-1daa gpg:0x86723FEEDE890574" 57 PANGO="https://developer.pidgin.im/static/win32/pango_1.29.4-1daa_win32.zip Pango 1.29.4-1daa gpg:0x86723FEEDE890574 http://ftp.gnome.org/pub/gnome/sources/pango/1.29/pango-1.29.4.tar.bz2|https://raw.githubusercontent.com/dieterv/legacynativebuilds/692072d1c571ef50f8bbe01cd005313d2302bef0/devel/src/dieterv/packaging/pango_1.29.4-1_win32.sh|https://developer.pidgin.im/static/win32/pango_1.29.4-1daa_win32.zip.patch sha256sum:f15deecaecf1e9dcb7db0e4947d12b5bcff112586434f8d30a5afd750747ff2b|sha256sum:743bb703b36f367b5569e031a107fff51eef409650e635e1a48a23f9ac38ef71|sha256sum:4d241c3835217deab280a8c1f2154932a4fba118f0b02a22c10fa041359381cf"
55 ZLIB="http://ftp.gnome.org/pub/gnome/binaries/win32/dependencies/zlib_1.2.5-2_win32.zip zlib 1.2.5-2 sha1sum:568907188761df2d9309196e447d91bbc5555d2b" 58 ZLIB="http://ftp.gnome.org/pub/gnome/binaries/win32/dependencies/zlib_1.2.5-2_win32.zip zlib 1.2.5-2 sha1sum:568907188761df2d9309196e447d91bbc5555d2b http://zlib.net/fossils/zlib-1.2.5.tar.gz|https://raw.githubusercontent.com/dieterv/legacynativebuilds/692072d1c571ef50f8bbe01cd005313d2302bef0/devel/src/tml/packaging/zlib_1.2.5-2_win32.sh sha1sum:8e8b93fa5eb80df1afe5422309dca42964562d7e|sha1sum:e0ad8ae6db31577240ba13fc2b3f9823a70ce556"
56 59
57 ALL="ATK CAIRO EXPAT FONTCONFIG FREETYPE GETTEXT GLIB GTK LIBPNG PANGO ZLIB" 60 ALL="ATK CAIRO EXPAT FONTCONFIG FREETYPE GETTEXT GLIB GTK LIBPNG PANGO ZLIB"
58 61
59 mkdir -p $STAGE_DIR 62 mkdir -p $STAGE_DIR
63 mkdir -p $STAGE_DIR/src
60 cd $STAGE_DIR 64 cd $STAGE_DIR
61 65
62 rm -rf $INSTALL_DIR 66 rm -rf $INSTALL_DIR
63 mkdir $INSTALL_DIR 67 mkdir $INSTALL_DIR
64 68
69 rm -rf $SRC_INSTALL_DIR
70 mkdir $SRC_INSTALL_DIR
71
65 #new CONTENTS file 72 #new CONTENTS file
66 echo Bundle Version $BUNDLE_VERSION > $CONTENTS_FILE 73 echo Bundle Version $BUNDLE_VERSION > $CONTENTS_FILE
67 74
68 function download_and_extract { 75 function validate_file {
69 URL=${1%%\ *} 76 VALIDATION=$1
70 VALIDATION=${1##*\ } 77 FILE=$2
71 NAME=${1%\ *}
72 NAME=${NAME#*\ }
73 FILE=$(basename $URL)
74 if [ ! -e $FILE ]; then
75 echo Downloading $NAME
76 wget $URL || exit 1
77 fi
78 VALIDATION_TYPE=${VALIDATION%%:*} 78 VALIDATION_TYPE=${VALIDATION%%:*}
79 VALIDATION_VALUE=${VALIDATION##*:} 79 VALIDATION_VALUE=${VALIDATION##*:}
80 if [ $VALIDATION_TYPE == 'sha1sum' ]; then 80 VALIDATION_TYPE=${VALIDATION%%:*}
81 CHECK_SHA1SUM=`sha1sum $FILE` 81 VALIDATION_VALUE=${VALIDATION##*:}
82 CHECK_SHA1SUM=${CHECK_SHA1SUM%%\ *} 82
83 if [ "$CHECK_SHA1SUM" != "$VALIDATION_VALUE" ]; then 83 if [ $VALIDATION_TYPE == 'sha1sum' -o $VALIDATION_TYPE == 'sha256sum' ]; then
84 echo "sha1sum ($CHECK_SHA1SUM) for $FILE doesn't match expected value of $VALIDATION_VALUE" 84 CHECK_SUM=`$VALIDATION_TYPE "$FILE"`
85 CHECK_SUM=${CHECK_SUM%%\ *}
86 if [ "$CHECK_SUM" != "$VALIDATION_VALUE" ]; then
87 echo "$VALIDATION_TYPE ($CHECK_SUM) for $FILE doesn't match expected value of $VALIDATION_VALUE"
85 exit 1 88 exit 1
86 fi 89 fi
87 elif [ $VALIDATION_TYPE == 'gpg' ]; then 90 elif [ $VALIDATION_TYPE == 'gpg' ]; then
88 if [ ! -e "$FILE.asc" ]; then 91 if [ ! -e "$FILE.asc" ]; then
89 echo Downloading GPG key for $NAME 92 echo Downloading GPG key for $NAME
90 wget "$URL.asc" || exit 1 93 wget "$URL.asc" || exit 1
91 fi 94 fi
92 #Use our own keyring to avoid adding stuff to the main keyring 95 #Use our own keyring to avoid adding stuff to the main keyring
93 #This doesn't use $GPG_SIGN because we don't this validation to be bypassed when people are skipping signing output 96 #This doesn't use $GPG_SIGN because we don't this validation to be bypassed when people are skipping signing output
94 GPG_BASE="gpg -q --keyring $STAGE_DIR/$VALIDATION_VALUE-keyring.gpg" 97 GPG_BASE="gpg -q --keyring $STAGE_DIR/$VALIDATION_VALUE-keyring.gpg"
95 if [[ ! -e $STAGE_DIR/$VALIDATION_VALUE-keyring.gpg \ 98 if [[ ! -e "$STAGE_DIR/$VALIDATION_VALUE-keyring.gpg" \
96 || `$GPG_BASE --list-keys "$VALIDATION_VALUE" > /dev/null && echo -n "0"` -ne 0 ]]; then 99 || `$GPG_BASE --list-keys "$VALIDATION_VALUE" > /dev/null && echo -n "0"` -ne 0 ]]; then
97 touch $STAGE_DIR/$VALIDATION_VALUE-keyring.gpg 100 touch "$STAGE_DIR/$VALIDATION_VALUE-keyring.gpg"
98 $GPG_BASE --no-default-keyring --keyserver pgp.mit.edu --recv-key "$VALIDATION_VALUE" || exit 1 101 $GPG_BASE --no-default-keyring --keyserver pgp.mit.edu --recv-key "$VALIDATION_VALUE" || exit 1
99 fi 102 fi
100 $GPG_BASE --verify "$FILE.asc" || (echo "$FILE failed signature verification"; exit 1) || exit 1 103 $GPG_BASE --verify "$FILE.asc" || (echo "$FILE failed signature verification"; exit 1) || exit 1
101 else 104 else
102 echo "Unrecognized validation type of $VALIDATION_TYPE" 105 echo "Unrecognized validation type of $VALIDATION_TYPE"
103 exit 1 106 exit 1
104 fi 107 fi
105 EXTENSION=${FILE##*.} 108 }
106 #This is an OpenSuSE build service RPM 109
107 if [ $EXTENSION == 'rpm' ]; then 110 function download_and_validate {
108 echo "Generating zip from $FILE" 111 PREFIX=$1
109 FILE=$(../rpm2zip.sh $FILE) 112 URLS=$2
110 fi 113 VALIDATIONS=$3
111 unzip -q $FILE -d $INSTALL_DIR || exit 1 114 EXTRACT=$4
115 OLD_IFS=$IFS
116 IFS='|'
117 URL_SPLIT=($URLS)
118 VALIDATION_SPLIT=($VALIDATIONS)
119 IFS=$OLD_IFS
120
121 if [ ${#URL_SPLIT[@]} -ne ${#VALIDATION_SPLIT[@]} ]; then
122 echo "URL and validation counts don't match for $VAL"
123 exit 1
124 fi
125
126 if [ "x$PREFIX" != "x" ]; then
127 mkdir -p "$PREFIX"
128 fi
129
130 LEN=${#URL_SPLIT[@]}
131 for (( i = 0; i < ${LEN}; i++ )); do
132 URL=${URL_SPLIT[$i]}
133 VALIDATION=${VALIDATION_SPLIT[$i]}
134 FILE=${PREFIX}$(basename $URL)
135 if [ ! -e "$FILE" ]; then
136 echo Downloading $FILE for $NAME ...
137 wget -P "$PREFIX" $URL || exit 1
138 fi
139 validate_file "$VALIDATION" "$FILE"
140 EXTENSION=${FILE##*.}
141 #This is an OpenSuSE build service RPM
142 if [ $EXTENSION == 'rpm' ]; then
143 echo "Generating zip from $FILE"
144 FILE=$(../rpm2zip.sh $FILE)
145 fi
146 if [ $EXTRACT == "1" ]; then
147 unzip -q "$FILE" -d "$INSTALL_DIR" || exit 1
148 else
149 mkdir -p "$SRC_INSTALL_DIR/$PREFIX"
150 cp "$FILE" "$SRC_INSTALL_DIR/$FILE"
151 fi
152 done
153 }
154
155 function process_package {
156 SPLIT=($1)
157 URL=${SPLIT[0]}
158 NAME="${SPLIT[1]} ${SPLIT[2]}"
159 VALIDATION=${SPLIT[3]}
160 download_and_validate "" "$URL" "$VALIDATION" "1"
161
162 SRC_URL=${SPLIT[4]}
163 SRC_VALIDATION=${SPLIT[5]}
164 download_and_validate "src/$NAME/" "$SRC_URL" "$SRC_VALIDATION" "0"
165
112 echo "$NAME" >> $CONTENTS_FILE 166 echo "$NAME" >> $CONTENTS_FILE
113 } 167 }
114 168
115 for VAL in $ALL 169 for VAL in $ALL
116 do 170 do
117 VAR=${!VAL} 171 VAR=${!VAL}
118 download_and_extract "$VAR" 172 SPLIT=($VAR)
173 if [ ${#SPLIT[@]} -lt 6 ]; then
174 echo "$VAL has only ${#SPLIT[@]} attributes"
175 exit 1
176 fi
177 process_package "$VAR"
119 done 178 done
120 179
121 #Default GTK+ Theme to MS-Windows 180 #Default GTK+ Theme to MS-Windows
122 echo gtk-theme-name = \"MS-Windows\" > $INSTALL_DIR/etc/gtk-2.0/gtkrc 181 echo gtk-theme-name = \"MS-Windows\" > $INSTALL_DIR/etc/gtk-2.0/gtkrc
123 182
134 #Generate zip file to be included in installer 193 #Generate zip file to be included in installer
135 rm -f $ZIP_FILE 194 rm -f $ZIP_FILE
136 zip -9 -r $ZIP_FILE Gtk 195 zip -9 -r $ZIP_FILE Gtk
137 ($GPG_SIGN -ab $ZIP_FILE && $GPG_SIGN --verify $ZIP_FILE.asc) || exit 1 196 ($GPG_SIGN -ab $ZIP_FILE && $GPG_SIGN --verify $ZIP_FILE.asc) || exit 1
138 197
198 #Generate src zip file
199 rm -f $SRC_ZIP_FILE
200 (cd $SRC_INSTALL_DIR/src && zip -9 -r $SRC_ZIP_FILE *)
201 ($GPG_SIGN -ab $SRC_ZIP_FILE && $GPG_SIGN --verify $SRC_ZIP_FILE.asc) || exit 1
202
139 exit 0 203 exit 0
140 204

mercurial