pidgin/win32/nsis/generate_gtk_zip.sh

changeset 36308
4432aff3b90d
parent 36106
54633b4e4a98
parent 36307
714ba418d0aa
child 37901
41e45e18f3b2
child 39251
c6a81a49ef65
equal deleted inserted replaced
36296:4e366d822656 36308:4432aff3b90d
18 18
19 STAGE_DIR=`readlink -f $PIDGIN_BASE/pidgin/win32/nsis/gtk_runtime_stage` 19 STAGE_DIR=`readlink -f $PIDGIN_BASE/pidgin/win32/nsis/gtk_runtime_stage`
20 CERT_PATH=`readlink -f $PIDGIN_BASE/pidgin/win32/nsis`/cacert.pem 20 CERT_PATH=`readlink -f $PIDGIN_BASE/pidgin/win32/nsis`/cacert.pem
21 #Subdirectory of $STAGE_DIR 21 #Subdirectory of $STAGE_DIR
22 INSTALL_DIR=Gtk 22 INSTALL_DIR=Gtk
23 SRC_INSTALL_DIR=src_install
23 CONTENTS_FILE=$INSTALL_DIR/CONTENTS 24 CONTENTS_FILE=$INSTALL_DIR/CONTENTS
24 PIDGIN_VERSION=$( < $PIDGIN_BASE/VERSION ) 25 PIDGIN_VERSION=$( < $PIDGIN_BASE/VERSION )
25 26
26 #This needs to be changed every time there is any sort of change. 27 #This needs to be changed every time there is any sort of change.
27 BUNDLE_VERSION=2.24.18.0 28 BUNDLE_VERSION=2.24.18.0
28 BUNDLE_SHA1SUM="5957b0bf3f5e520863cf8ba64db7592383e9dd42" 29 BUNDLE_SHA1SUM="5957b0bf3f5e520863cf8ba64db7592383e9dd42"
29 ZIP_FILE="$PIDGIN_BASE/pidgin/win32/nsis/gtk-runtime-$BUNDLE_VERSION.zip" 30 ZIP_FILE="$PIDGIN_BASE/pidgin/win32/nsis/gtk-runtime-$BUNDLE_VERSION.zip"
31 SRC_ZIP_FILE="$PIDGIN_BASE/pidgin/win32/nsis/gtk-runtime-$BUNDLE_VERSION-src.zip"
30 #BUNDLE_URL="https://pidgin.im/win32/download_redir.php?version=$PIDGIN_VERSION&gtk_version=$BUNDLE_VERSION&dl_pkg=gtk" 32 #BUNDLE_URL="https://pidgin.im/win32/download_redir.php?version=$PIDGIN_VERSION&gtk_version=$BUNDLE_VERSION&dl_pkg=gtk"
31 BUNDLE_URL="https://pidgin.im/~twasilczyk/win32/gtk-runtime-$BUNDLE_VERSION.zip" 33 BUNDLE_URL="https://pidgin.im/~twasilczyk/win32/gtk-runtime-$BUNDLE_VERSION.zip"
32 34
33 if [ "x`uname`" == "xLinux" ]; then 35 if [ "x`uname`" == "xLinux" ]; then
34 is_win32="no" 36 is_win32="no"
90 92
91 # origin: http://download.opensuse.org/repositories/windows:/mingw:/win32/openSUSE_12.3/noarch/ 93 # origin: http://download.opensuse.org/repositories/windows:/mingw:/win32/openSUSE_12.3/noarch/
92 DOWNLOAD_HOST="https://pidgin.im/~twasilczyk/win32/runtime-deps/" 94 DOWNLOAD_HOST="https://pidgin.im/~twasilczyk/win32/runtime-deps/"
93 95
94 ALL="" 96 ALL=""
97 #Format for packages is "binary_url name version binary_validation src_url src_validation"
98 #TODO: Fix packages SRC handling
95 99
96 ARC_ATK="${DOWNLOAD_HOST}mingw32-atk-2.8.0-1.5.noarch.rpm ATK 2.8.0-1.5 sha1sum:0c682eadc299963aaa5d7998d655e46ead7d7515" 100 ARC_ATK="${DOWNLOAD_HOST}mingw32-atk-2.8.0-1.5.noarch.rpm ATK 2.8.0-1.5 sha1sum:0c682eadc299963aaa5d7998d655e46ead7d7515"
97 ALL+="ARC_ATK " 101 ALL+="ARC_ATK "
98 102
99 ARC_CAIRO2="${DOWNLOAD_HOST}mingw32-libcairo2-1.10.2-8.12.noarch.rpm Cairo 1.10.2-8.12 sha1sum:e33c58603678a8ba113bffe282bec810bd70172e" 103 ARC_CAIRO2="${DOWNLOAD_HOST}mingw32-libcairo2-1.10.2-8.12.noarch.rpm Cairo 1.10.2-8.12 sha1sum:e33c58603678a8ba113bffe282bec810bd70172e"
278 282
279 ARC_ZLIB="${DOWNLOAD_HOST}mingw32-zlib-1.2.8-2.6.noarch.rpm zlib 1.2.8-2.6 sha1sum:bb75b2a341309eb75daacb93d43d6c072c71923c" 283 ARC_ZLIB="${DOWNLOAD_HOST}mingw32-zlib-1.2.8-2.6.noarch.rpm zlib 1.2.8-2.6 sha1sum:bb75b2a341309eb75daacb93d43d6c072c71923c"
280 ALL+="ARC_ZLIB " 284 ALL+="ARC_ZLIB "
281 285
282 mkdir -p $STAGE_DIR 286 mkdir -p $STAGE_DIR
287 mkdir -p $STAGE_DIR/src
283 cd $STAGE_DIR 288 cd $STAGE_DIR
284 289
285 rm -rf $INSTALL_DIR 290 rm -rf $INSTALL_DIR
286 mkdir $INSTALL_DIR 291 mkdir $INSTALL_DIR
292
293 rm -rf $SRC_INSTALL_DIR
294 mkdir $SRC_INSTALL_DIR
287 295
288 #new CONTENTS file 296 #new CONTENTS file
289 echo Bundle Version $BUNDLE_VERSION > $CONTENTS_FILE 297 echo Bundle Version $BUNDLE_VERSION > $CONTENTS_FILE
290 298
291 if [ $is_win32 = "yes" ]; then 299 if [ $is_win32 = "yes" ]; then
332 else 340 else
333 cp -rf $MINGW_DIR/* $INSTALL_DIR 341 cp -rf $MINGW_DIR/* $INSTALL_DIR
334 fi 342 fi
335 } 343 }
336 344
337 function download_and_extract { 345 function validate_file {
338 URL=${1%%\ *} 346 VALIDATION=$1
339 VALIDATION=${1##*\ } 347 FILE=$2
340 NAME=${1%\ *}
341 NAME=${NAME#*\ }
342 FILE=$(basename $URL)
343 MINGW_DIR="usr/i686-w64-mingw32/sys-root/mingw"
344 MINGW_DIR_TOP="usr"
345 if [ ! -e $FILE ]; then
346 echo "Downloading $NAME"
347 download "$URL" "$FILE" || exit 1
348 else
349 echo "Extracting $NAME"
350 fi
351 VALIDATION_TYPE=${VALIDATION%%:*} 348 VALIDATION_TYPE=${VALIDATION%%:*}
352 VALIDATION_VALUE=${VALIDATION##*:} 349 VALIDATION_VALUE=${VALIDATION##*:}
353 if [ $VALIDATION_TYPE == 'sha1sum' ]; then 350 if [ $VALIDATION_TYPE == 'sha1sum' -o $VALIDATION_TYPE == 'sha256sum' ]; then
354 CHECK_SHA1SUM=`sha1sum $FILE` 351 CHECK_SUM=`$VALIDATION_TYPE "$FILE"`
355 CHECK_SHA1SUM=${CHECK_SHA1SUM%%\ *} 352 CHECK_SUM=${CHECK_SUM%%\ *}
356 if [ "$CHECK_SHA1SUM" != "$VALIDATION_VALUE" ]; then 353 if [ "$CHECK_SUM" != "$VALIDATION_VALUE" ]; then
357 echo "sha1sum ($CHECK_SHA1SUM) for $FILE doesn't match expected value of $VALIDATION_VALUE" 354 echo "$VALIDATION_TYPE ($CHECK_SUM) for $FILE doesn't match expected value of $VALIDATION_VALUE"
358 exit 1 355 exit 1
359 fi 356 fi
360 elif [ $VALIDATION_TYPE == 'gpg' ]; then 357 elif [ $VALIDATION_TYPE == 'gpg' ]; then
361 if [ ! -e "$FILE.asc" ]; then 358 if [ ! -e "$FILE.asc" ]; then
362 echo Downloading GPG key for $NAME 359 echo Downloading GPG key for $NAME
363 download "$URL.asc" "$FILE.asc" || exit 1 360 download "$URL.asc" "$FILE.asc" || exit 1
364 fi 361 fi
365 #Use our own keyring to avoid adding stuff to the main keyring 362 #Use our own keyring to avoid adding stuff to the main keyring
366 #This doesn't use $GPG_SIGN because we don't this validation to be bypassed when people are skipping signing output 363 #This doesn't use $GPG_SIGN because we don't this validation to be bypassed when people are skipping signing output
367 GPG_BASE="gpg -q --keyring $STAGE_DIR/$VALIDATION_VALUE-keyring.gpg" 364 GPG_BASE="gpg -q --keyring $STAGE_DIR/$VALIDATION_VALUE-keyring.gpg"
368 if [[ ! -e $STAGE_DIR/$VALIDATION_VALUE-keyring.gpg \ 365 if [[ ! -e "$STAGE_DIR/$VALIDATION_VALUE-keyring.gpg" \
369 || `$GPG_BASE --list-keys "$VALIDATION_VALUE" > /dev/null && echo -n "0"` -ne 0 ]]; then 366 || `$GPG_BASE --list-keys "$VALIDATION_VALUE" > /dev/null && echo -n "0"` -ne 0 ]]; then
370 touch $STAGE_DIR/$VALIDATION_VALUE-keyring.gpg 367 touch "$STAGE_DIR/$VALIDATION_VALUE-keyring.gpg"
371 $GPG_BASE --no-default-keyring --keyserver pgp.mit.edu --recv-key "$VALIDATION_VALUE" || exit 1 368 $GPG_BASE --no-default-keyring --keyserver pgp.mit.edu --recv-key "$VALIDATION_VALUE" || exit 1
372 fi 369 fi
373 $GPG_BASE --verify "$FILE.asc" || (echo "$FILE failed signature verification"; exit 1) || exit 1 370 $GPG_BASE --verify "$FILE.asc" || (echo "$FILE failed signature verification"; exit 1) || exit 1
374 else 371 else
375 echo "Unrecognized validation type of $VALIDATION_TYPE" 372 echo "Unrecognized validation type of $VALIDATION_TYPE"
376 exit 1 373 exit 1
377 fi 374 fi
378 EXTENSION=${FILE##*.} 375 }
379 #This is an OpenSuSE build service RPM 376
380 if [ $EXTENSION == 'rpm' ]; then 377 function download_and_validate {
381 rm -rf $MINGW_DIR_TOP 378 PREFIX=$1
382 $BSDCPIO --quiet -f etc/fonts/conf.d -di < $FILE || exit 1 379 URLS=$2
383 rpm_install 380 VALIDATIONS=$3
384 rm -rf $MINGW_DIR_TOP 381 EXTRACT=$4
385 else 382 OLD_IFS=$IFS
386 unzip -q $FILE -d $INSTALL_DIR || exit 1 383 IFS='|'
387 fi 384 URL_SPLIT=($URLS)
385 VALIDATION_SPLIT=($VALIDATIONS)
386 IFS=$OLD_IFS
387
388 if [ ${#URL_SPLIT[@]} -ne ${#VALIDATION_SPLIT[@]} ]; then
389 echo "URL and validation counts don't match for $VAL"
390 exit 1
391 fi
392
393 if [ "x$PREFIX" != "x" ]; then
394 mkdir -p "$PREFIX"
395 fi
396
397 LEN=${#URL_SPLIT[@]}
398 for (( i = 0; i < ${LEN}; i++ )); do
399 URL=${URL_SPLIT[$i]}
400 VALIDATION=${VALIDATION_SPLIT[$i]}
401 FILE=${PREFIX}$(basename $URL)
402 if [ ! -e "$FILE" ]; then
403 echo Downloading $FILE for $NAME ...
404 download "$URL" "$FILE" || exit 1
405 else
406 echo "Extracting $NAME"
407 fi
408 validate_file "$VALIDATION" "$FILE"
409 EXTENSION=${FILE##*.}
410 #This is an OpenSuSE build service RPM
411 if [ $EXTRACT == "1" ]; then
412 if [ $EXTENSION == 'rpm' ]; then
413 rm -rf $MINGW_DIR_TOP
414 $BSDCPIO --quiet -f etc/fonts/conf.d -di < $FILE || exit 1
415 rpm_install
416 rm -rf $MINGW_DIR_TOP
417 else
418 unzip -q "$FILE" -d "$INSTALL_DIR" || exit 1
419 fi
420 else
421 mkdir -p "$SRC_INSTALL_DIR/$PREFIX"
422 cp "$FILE" "$SRC_INSTALL_DIR/$FILE"
423 fi
424 done
425 }
426
427 function process_package {
428 SPLIT=($1)
429 URL=${SPLIT[0]}
430 NAME="${SPLIT[1]} ${SPLIT[2]}"
431 VALIDATION=${SPLIT[3]}
432 download_and_validate "" "$URL" "$VALIDATION" "1"
433
434 # SRC_URL=${SPLIT[4]}
435 # SRC_VALIDATION=${SPLIT[5]}
436 # download_and_validate "src/$NAME/" "$SRC_URL" "$SRC_VALIDATION" "0"
437
388 echo "$NAME" >> $CONTENTS_FILE 438 echo "$NAME" >> $CONTENTS_FILE
389 } 439 }
440
441 MINGW_DIR="usr/i686-w64-mingw32/sys-root/mingw"
442 MINGW_DIR_TOP="usr"
390 443
391 echo "Downloading and extracting components..." 444 echo "Downloading and extracting components..."
392 for VAL in $ALL 445 for VAL in $ALL
393 do 446 do
394 VAR=${!VAL} 447 VAR=${!VAL}
395 download_and_extract "$VAR" 448 SPLIT=($VAR)
449 # if [ ${#SPLIT[@]} -lt 6 ]; then
450 if [ ${#SPLIT[@]} -lt 4 ]; then
451 echo "$VAL has only ${#SPLIT[@]} attributes"
452 exit 1
453 fi
454 process_package "$VAR"
396 done 455 done
456
397 rm -rf $CPIO_DIR 457 rm -rf $CPIO_DIR
398 rm "$CERT_PATH" 458 rm "$CERT_PATH"
399 459
400 #mv "${STAGE_DIR}/${INSTALL_DIR}/share/tcl8.5" "${STAGE_DIR}/${INSTALL_DIR}/lib/" 460 #mv "${STAGE_DIR}/${INSTALL_DIR}/share/tcl8.5" "${STAGE_DIR}/${INSTALL_DIR}/lib/"
401 rm "${STAGE_DIR}/${INSTALL_DIR}/lib/gstreamer-0.10/libfsmsnconference.dll" 461 rm "${STAGE_DIR}/${INSTALL_DIR}/lib/gstreamer-0.10/libfsmsnconference.dll"
420 rm -f $ZIP_FILE 480 rm -f $ZIP_FILE
421 zip -9 -r $ZIP_FILE Gtk 481 zip -9 -r $ZIP_FILE Gtk
422 482
423 if [ "`$GPG_SIGN -K 2> /dev/null`" != "" ]; then 483 if [ "`$GPG_SIGN -K 2> /dev/null`" != "" ]; then
424 ($GPG_SIGN -ab $ZIP_FILE && $GPG_SIGN --verify $ZIP_FILE.asc) || exit 1 484 ($GPG_SIGN -ab $ZIP_FILE && $GPG_SIGN --verify $ZIP_FILE.asc) || exit 1
485 (cd $SRC_INSTALL_DIR/src && zip -9 -r $SRC_ZIP_FILE *)
486 ($GPG_SIGN -ab $SRC_ZIP_FILE && $GPG_SIGN --verify $SRC_ZIP_FILE.asc) || exit 1
425 else 487 else
426 echo "Warning: cannot sign generated bundle" 488 echo "Warning: cannot sign generated bundle"
427 fi 489 fi
428 490
429 exit 0 491 exit 0

mercurial