release-sign-tarballs revision 7923e87a291880ac8293fb5d1a1e1b759b23a091
4edb61f8b0f8ce9f62d803c706612376498672b4al_xipe#!/bin/bash
4edb61f8b0f8ce9f62d803c706612376498672b4al_xipe
4edb61f8b0f8ce9f62d803c706612376498672b4al_xipeSIGNER="bryce@bryceharrington.org"
4edb61f8b0f8ce9f62d803c706612376498672b4al_xipeVERSION="0.92"
4edb61f8b0f8ce9f62d803c706612376498672b4al_xipePKG_NAME="inkscape"
4edb61f8b0f8ce9f62d803c706612376498672b4al_xipeLIST_TO="inkscape-announce@lists.sf.net"
4edb61f8b0f8ce9f62d803c706612376498672b4al_xipeLIST_CC="inkscape-devel@lists.sf.net"
4edb61f8b0f8ce9f62d803c706612376498672b4al_xipeVCS_SYSTEM="bzr"
4edb61f8b0f8ce9f62d803c706612376498672b4al_xipe
4edb61f8b0f8ce9f62d803c706612376498672b4al_xipe# Locate Dependencies
4edb61f8b0f8ce9f62d803c706612376498672b4al_xipe#------------------------------------------------------------------------------
4edb61f8b0f8ce9f62d803c706612376498672b4al_xipe
4edb61f8b0f8ce9f62d803c706612376498672b4al_xipeMD5SUM=`which md5sum || which gmd5sum`
4edb61f8b0f8ce9f62d803c706612376498672b4al_xipeSHA1SUM=`which sha1sum || which gsha1sum`
4edb61f8b0f8ce9f62d803c706612376498672b4al_xipeSHA256SUM=`which sha256sum || which gsha256sum`
4edb61f8b0f8ce9f62d803c706612376498672b4al_xipe
4edb61f8b0f8ce9f62d803c706612376498672b4al_xipe# Choose which make program to use (could be gmake)
4edb61f8b0f8ce9f62d803c706612376498672b4al_xipeMAKE=${MAKE:="make"}
4edb61f8b0f8ce9f62d803c706612376498672b4al_xipe
f71f7a61dec7c9089378d14493ad564a1dedf0b5neil_a_wilson# Set the default make tarball creation command
4edb61f8b0f8ce9f62d803c706612376498672b4al_xipeMAKE_DIST_CMD=distcheck
4edb61f8b0f8ce9f62d803c706612376498672b4al_xipe
4edb61f8b0f8ce9f62d803c706612376498672b4al_xipe# Choose which grep program to use (on Solaris, must be gnu grep)
4edb61f8b0f8ce9f62d803c706612376498672b4al_xipeif [ "x$GREP" = "x" ] ; then
4edb61f8b0f8ce9f62d803c706612376498672b4al_xipe if [ -x /usr/gnu/bin/grep ] ; then
6733dfd94dda39b3bce6e9fe9713d4d2379cbb85chebrard GREP=/usr/gnu/bin/grep
d3ce44d37110c284dad15122841fd97ee41d9ac5ludo else
4edb61f8b0f8ce9f62d803c706612376498672b4al_xipe GREP=grep
4edb61f8b0f8ce9f62d803c706612376498672b4al_xipe fi
4edb61f8b0f8ce9f62d803c706612376498672b4al_xipefi
4edb61f8b0f8ce9f62d803c706612376498672b4al_xipe
4edb61f8b0f8ce9f62d803c706612376498672b4al_xipe# Find path for GnuPG v2
4edb61f8b0f8ce9f62d803c706612376498672b4al_xipeif [ "x$GPG" = "x" ] ; then
4edb61f8b0f8ce9f62d803c706612376498672b4al_xipe if [ -x /usr/bin/gpg2 ] ; then
4edb61f8b0f8ce9f62d803c706612376498672b4al_xipe GPG=/usr/bin/gpg2
4edb61f8b0f8ce9f62d803c706612376498672b4al_xipe else
4edb61f8b0f8ce9f62d803c706612376498672b4al_xipe GPG=gpg
4edb61f8b0f8ce9f62d803c706612376498672b4al_xipe fi
69de0fe5b7ed905860bef5f86937d30cc206ef7dneil_a_wilsonfi
69de0fe5b7ed905860bef5f86937d30cc206ef7dneil_a_wilson
69de0fe5b7ed905860bef5f86937d30cc206ef7dneil_a_wilson#------------------------------------------------------------------------------
69de0fe5b7ed905860bef5f86937d30cc206ef7dneil_a_wilson
69de0fe5b7ed905860bef5f86937d30cc206ef7dneil_a_wilsonusage() {
3cedecd5ea21cca5d9709abf320a2082cd3694e5jvergara basename="`expr "//$0" : '.*/\([^/]*\)'`"
69de0fe5b7ed905860bef5f86937d30cc206ef7dneil_a_wilson cat <<HELP
69de0fe5b7ed905860bef5f86937d30cc206ef7dneil_a_wilson
69de0fe5b7ed905860bef5f86937d30cc206ef7dneil_a_wilsonUsage: $basename [options] path...
014019918f7e3844f558f6159b8d41517254edc2lutoff
014019918f7e3844f558f6159b8d41517254edc2lutoffWhere "path" is a relative path to a ${VCS_SYSTEM} module, including '.'.
014019918f7e3844f558f6159b8d41517254edc2lutoff
69de0fe5b7ed905860bef5f86937d30cc206ef7dneil_a_wilsonOptions:
69de0fe5b7ed905860bef5f86937d30cc206ef7dneil_a_wilson (none)
7b94de75a19ac6d37a440a7915ae0c7b7c024527jvergara
7b94de75a19ac6d37a440a7915ae0c7b7c024527jvergaraEnvironment variables:
7b94de75a19ac6d37a440a7915ae0c7b7c024527jvergara MAKE: The name of the make command [make]
7b94de75a19ac6d37a440a7915ae0c7b7c024527jvergara MAKEFLAGS: Options to pass to all \$(MAKE) invocations []
4edb61f8b0f8ce9f62d803c706612376498672b4al_xipe
4edb61f8b0f8ce9f62d803c706612376498672b4al_xipeHELP
27f8adec83293fb8bd3bfa37175322b0ee3bb933jvergara}
27f8adec83293fb8bd3bfa37175322b0ee3bb933jvergara
27f8adec83293fb8bd3bfa37175322b0ee3bb933jvergara#------------------------------------------------------------------------------
4edb61f8b0f8ce9f62d803c706612376498672b4al_xipe
d3ce44d37110c284dad15122841fd97ee41d9ac5ludocheck_local_changes() {
44a7ec1a853804826c90cda2fbb4ac712c86bbaaludovicp # TODO
814920a099ee946453263e682c7bb2cda00b7983ludo return 1
d3ce44d37110c284dad15122841fd97ee41d9ac5ludo}
d3ce44d37110c284dad15122841fd97ee41d9ac5ludo
44a7ec1a853804826c90cda2fbb4ac712c86bbaaludovicp#------------------------------------------------------------------------------
2ed4722b4c052dcfe7884519a119e68a295f77afludovicp# Function: make_dist
44a7ec1a853804826c90cda2fbb4ac712c86bbaaludovicp#
44a7ec1a853804826c90cda2fbb4ac712c86bbaaludovicp# Create the package distribution
44a7ec1a853804826c90cda2fbb4ac712c86bbaaludovicp# Return 0 on success, 1 on fail
44a7ec1a853804826c90cda2fbb4ac712c86bbaaludovicpmake_dist() {
44a7ec1a853804826c90cda2fbb4ac712c86bbaaludovicp if [ $VCS_SYSTEM = "bzr" ] && [ ! -d .bzr ]; then
44a7ec1a853804826c90cda2fbb4ac712c86bbaaludovicp echo "Error: There is no bzr repository here: $(pwd)"
6733dfd94dda39b3bce6e9fe9713d4d2379cbb85chebrard return 1
6733dfd94dda39b3bce6e9fe9713d4d2379cbb85chebrard else
d3ce44d37110c284dad15122841fd97ee41d9ac5ludo echo "Error: Unrecognized version control '$VCS_SYSTEM'."
6733dfd94dda39b3bce6e9fe9713d4d2379cbb85chebrard return 1
6733dfd94dda39b3bce6e9fe9713d4d2379cbb85chebrard fi
6733dfd94dda39b3bce6e9fe9713d4d2379cbb85chebrard
6733dfd94dda39b3bce6e9fe9713d4d2379cbb85chebrard # Change to an out-of-source build directory
6733dfd94dda39b3bce6e9fe9713d4d2379cbb85chebrard config_indicator=CMakeCache.txt
d3ce44d37110c284dad15122841fd97ee41d9ac5ludo status_file=$(find . -name ${config_indicator} -type f)
6733dfd94dda39b3bce6e9fe9713d4d2379cbb85chebrard if [ $? -ne 0 ]; then
d3ce44d37110c284dad15122841fd97ee41d9ac5ludo echo "Error: Failed to locate ${config_indicator}."
6733dfd94dda39b3bce6e9fe9713d4d2379cbb85chebrard echo "Has the module been configured?"
44a7ec1a853804826c90cda2fbb4ac712c86bbaaludovicp return 1
44a7ec1a853804826c90cda2fbb4ac712c86bbaaludovicp fi
44a7ec1a853804826c90cda2fbb4ac712c86bbaaludovicp configNum=$(echo "$status_file" | wc -l | sed 's:^ *::')
27f8adec83293fb8bd3bfa37175322b0ee3bb933jvergara if [ x"$configNum" = x0 ]; then
27f8adec83293fb8bd3bfa37175322b0ee3bb933jvergara echo "Error: Failed to locate ${config_indicator}, has the module been configured?"
27f8adec83293fb8bd3bfa37175322b0ee3bb933jvergara return 1
014019918f7e3844f558f6159b8d41517254edc2lutoff elif [ x"$configNum" != x1 ]; then
27f8adec83293fb8bd3bfa37175322b0ee3bb933jvergara echo "Error: More than one ${config_indicator} file was found."
27f8adec83293fb8bd3bfa37175322b0ee3bb933jvergara echo "Please cleanup previously failed attempts at distcheck."
39e085accf228684b9573bc8ad707a364ed6242ejvergara fi
27f8adec83293fb8bd3bfa37175322b0ee3bb933jvergara
39e085accf228684b9573bc8ad707a364ed6242ejvergara build_dir=$(dirname ${status_file})
266c5071a91fda6a5159b08ea8d45261228d03d5neil_a_wilson cd ${build_dir}
27f8adec83293fb8bd3bfa37175322b0ee3bb933jvergara if [ $? -ne 0 ]; then
7b94de75a19ac6d37a440a7915ae0c7b7c024527jvergara echo "Error: Failed to cd to build directory ${build_dir}."
7070667c2dffad87009999bdeb16d5305e0afdbejvergara return 1
7070667c2dffad87009999bdeb16d5305e0afdbejvergara fi
7070667c2dffad87009999bdeb16d5305e0afdbejvergara
7070667c2dffad87009999bdeb16d5305e0afdbejvergara check_local_changes
7070667c2dffad87009999bdeb16d5305e0afdbejvergara if [ $? -ne 0 ]; then
7070667c2dffad87009999bdeb16d5305e0afdbejvergara cd ${top_src}
7070667c2dffad87009999bdeb16d5305e0afdbejvergara return 1
61ae414d98d24ba4a72a905b07db9424353669f4neil_a_wilson fi
7070667c2dffad87009999bdeb16d5305e0afdbejvergara
7070667c2dffad87009999bdeb16d5305e0afdbejvergara echo "Info: running 'make $MAKE_DIST_CMD' to create tarballs:"
7070667c2dffad87009999bdeb16d5305e0afdbejvergara ${MAKE} ${MAKEFLAGS} ${MAKE_DIST_CMD} > /dev/null
7070667c2dffad87009999bdeb16d5305e0afdbejvergara if [ $? -ne 0 ]; then
7070667c2dffad87009999bdeb16d5305e0afdbejvergara echo "Error: '${MAKE} ${MAKEFLAGS} ${MAKE_DIST_CMD}' failed."
7070667c2dffad87009999bdeb16d5305e0afdbejvergara cd $top_src
7070667c2dffad87009999bdeb16d5305e0afdbejvergara return 1
7070667c2dffad87009999bdeb16d5305e0afdbejvergara fi
61ae414d98d24ba4a72a905b07db9424353669f4neil_a_wilson
7070667c2dffad87009999bdeb16d5305e0afdbejvergara return 0
7070667c2dffad87009999bdeb16d5305e0afdbejvergara}
7070667c2dffad87009999bdeb16d5305e0afdbejvergara
f567e484335734979b8ff593b1f9357dd48d10f9jvergara# Function: sign_or_fail
7070667c2dffad87009999bdeb16d5305e0afdbejvergara#------------------------------------------------------------------------------
7070667c2dffad87009999bdeb16d5305e0afdbejvergara#
61ae414d98d24ba4a72a905b07db9424353669f4neil_a_wilson# Sign the given file, if any
61ae414d98d24ba4a72a905b07db9424353669f4neil_a_wilson# Output the name of the signature generated to stdout (all other output to
61ae414d98d24ba4a72a905b07db9424353669f4neil_a_wilson# stderr)
61ae414d98d24ba4a72a905b07db9424353669f4neil_a_wilson# Return 0 on success, 1 on fail
7070667c2dffad87009999bdeb16d5305e0afdbejvergara#
7070667c2dffad87009999bdeb16d5305e0afdbejvergarasign_or_fail() {
f567e484335734979b8ff593b1f9357dd48d10f9jvergara if [ -n "$1" ]; then
7070667c2dffad87009999bdeb16d5305e0afdbejvergara sig=$1.sig
7070667c2dffad87009999bdeb16d5305e0afdbejvergara rm -f $sig
7070667c2dffad87009999bdeb16d5305e0afdbejvergara
7070667c2dffad87009999bdeb16d5305e0afdbejvergara [ -n ${SIGNER} ] && signer="-u $SIGNER"
f567e484335734979b8ff593b1f9357dd48d10f9jvergara
61ae414d98d24ba4a72a905b07db9424353669f4neil_a_wilson echo "$GPG $signer --detach-sign $1" 1>&2
7070667c2dffad87009999bdeb16d5305e0afdbejvergara $GPG $signer --detach-sign $1 1>&2
7070667c2dffad87009999bdeb16d5305e0afdbejvergara if [ $? -ne 0 ]; then
7070667c2dffad87009999bdeb16d5305e0afdbejvergara echo "Error: failed to sign $1." >&2
7070667c2dffad87009999bdeb16d5305e0afdbejvergara return 1
7070667c2dffad87009999bdeb16d5305e0afdbejvergara fi
7070667c2dffad87009999bdeb16d5305e0afdbejvergara echo $sig
61ae414d98d24ba4a72a905b07db9424353669f4neil_a_wilson fi
61ae414d98d24ba4a72a905b07db9424353669f4neil_a_wilson return 0
61ae414d98d24ba4a72a905b07db9424353669f4neil_a_wilson}
61ae414d98d24ba4a72a905b07db9424353669f4neil_a_wilson
7070667c2dffad87009999bdeb16d5305e0afdbejvergara
7070667c2dffad87009999bdeb16d5305e0afdbejvergarasign_packages() {
7070667c2dffad87009999bdeb16d5305e0afdbejvergara targz="${PKG_NAME}-${VERSION}.tar.gz"
7070667c2dffad87009999bdeb16d5305e0afdbejvergara tarbz2="${PKG_NAME}-${VERSION}.tar.bz2"
7070667c2dffad87009999bdeb16d5305e0afdbejvergara tarxz="${PKG_NAME}-${VERSION}.tar.xz"
7070667c2dffad87009999bdeb16d5305e0afdbejvergara zip="${PKG_NAME}-${VERSION}.zip"
f567e484335734979b8ff593b1f9357dd48d10f9jvergara signatures=""
f567e484335734979b8ff593b1f9357dd48d10f9jvergara
7070667c2dffad87009999bdeb16d5305e0afdbejvergara for tarball in $targz $tarxz $tarbz2 $zip; do
f567e484335734979b8ff593b1f9357dd48d10f9jvergara if [ -e "${tarball}" ]; then
7070667c2dffad87009999bdeb16d5305e0afdbejvergara sig="$(sign_or_fail ${tarball})"
4edb61f8b0f8ce9f62d803c706612376498672b4al_xipe gpgsignerr=$((${gpgsignerr} + $?))
7070667c2dffad87009999bdeb16d5305e0afdbejvergara sig_url="http://inkscape.org/.../$sig"
4edb61f8b0f8ce9f62d803c706612376498672b4al_xipe signatures="$signatures
773465ac0ffcb0c5856718e21f59cdc671a99c4alutoffhttps://inkscape.org/en/download/source/
773465ac0ffcb0c5856718e21f59cdc671a99c4alutoffMD5: `$MD5SUM $tarball`
7070667c2dffad87009999bdeb16d5305e0afdbejvergaraSHA1: `$SHA1SUM $tarball`
7070667c2dffad87009999bdeb16d5305e0afdbejvergaraSHA256: `$SHA256SUM $tarball`
4edb61f8b0f8ce9f62d803c706612376498672b4al_xipe$sig_url
7a76def451cc02fcd02d8d6ff35d4751db91b206jvergara
7070667c2dffad87009999bdeb16d5305e0afdbejvergara"
7070667c2dffad87009999bdeb16d5305e0afdbejvergara fi
7070667c2dffad87009999bdeb16d5305e0afdbejvergara done
7070667c2dffad87009999bdeb16d5305e0afdbejvergara
7070667c2dffad87009999bdeb16d5305e0afdbejvergara if [ ${gpgsignerr} -ne 0 ]; then
7070667c2dffad87009999bdeb16d5305e0afdbejvergara echo "Error: unable to sign at least one of the tarballs."
7070667c2dffad87009999bdeb16d5305e0afdbejvergara return 1
4edb61f8b0f8ce9f62d803c706612376498672b4al_xipe elif [ -z "$siggz" ]; then
86580987a3bc88a2018319660f3b536c381938f5neil_a_wilson # The tar.gz is always required
86580987a3bc88a2018319660f3b536c381938f5neil_a_wilson echo "Error: Unable to sign the tar.gz file."
814920a099ee946453263e682c7bb2cda00b7983ludo return 2
86580987a3bc88a2018319660f3b536c381938f5neil_a_wilson fi
4edb61f8b0f8ce9f62d803c706612376498672b4al_xipe
7070667c2dffad87009999bdeb16d5305e0afdbejvergara return 0;
7070667c2dffad87009999bdeb16d5305e0afdbejvergara}
7070667c2dffad87009999bdeb16d5305e0afdbejvergara
7070667c2dffad87009999bdeb16d5305e0afdbejvergaragenerate_announce() {
7070667c2dffad87009999bdeb16d5305e0afdbejvergara # TODO: Once converted to git, enable display of shortlog
7070667c2dffad87009999bdeb16d5305e0afdbejvergara #tag_previous=`git describe --abbrev=0 HEAD^ 2>/dev/null`
7070667c2dffad87009999bdeb16d5305e0afdbejvergara #tag_range="FIXME..FIXME"
dde4e18690d219fc5aa41b62d3090ce8b2bbb1d7jvergara #`git log --no-merges "$tag_range" | git shortlog`
7070667c2dffad87009999bdeb16d5305e0afdbejvergara
dde4e18690d219fc5aa41b62d3090ce8b2bbb1d7jvergara tag_name="$tar_name"
7070667c2dffad87009999bdeb16d5305e0afdbejvergara
814920a099ee946453263e682c7bb2cda00b7983ludo cat <<RELEASE
7070667c2dffad87009999bdeb16d5305e0afdbejvergaraSubject: [ANNOUNCE] $PKG_NAME $VERSION
7070667c2dffad87009999bdeb16d5305e0afdbejvergaraTo: $LIST_TO
7070667c2dffad87009999bdeb16d5305e0afdbejvergaraCc: $LIST_CC
7070667c2dffad87009999bdeb16d5305e0afdbejvergara
7070667c2dffad87009999bdeb16d5305e0afdbejvergaraThe Inkscape community proudly announces the release of Inkscape $VERSION.
dde4e18690d219fc5aa41b62d3090ce8b2bbb1d7jvergara
7b94de75a19ac6d37a440a7915ae0c7b7c024527jvergara https://inkscape.org/en/download/
7b94de75a19ac6d37a440a7915ae0c7b7c024527jvergara
7b94de75a19ac6d37a440a7915ae0c7b7c024527jvergaraInkscape is a drawing and painting tool similar to Illustrator,
7b94de75a19ac6d37a440a7915ae0c7b7c024527jvergaraCorelDraw, and Xara X, but with features, new tools, and interface style
7b94de75a19ac6d37a440a7915ae0c7b7c024527jvergaraof its own. It emphasizes the W3C standard Scalable Vector Graphics
7b94de75a19ac6d37a440a7915ae0c7b7c024527jvergara(SVG) file format, but reads and writes a wealth of other formats
61ae414d98d24ba4a72a905b07db9424353669f4neil_a_wilsonincluding PDF, so it is an easy complement to your other graphics and
61ae414d98d24ba4a72a905b07db9424353669f4neil_a_wilsondesktop tools. Best of all, Inkscape is created *by* the community *for*
014019918f7e3844f558f6159b8d41517254edc2lutoffthe community: Inkscape is 100% Open Source and freely available to
61ae414d98d24ba4a72a905b07db9424353669f4neil_a_wilsoneveryone in the world.
61ae414d98d24ba4a72a905b07db9424353669f4neil_a_wilson
61ae414d98d24ba4a72a905b07db9424353669f4neil_a_wilson<INSERT DETAILS ABOUT THE RELEASE HERE>
014019918f7e3844f558f6159b8d41517254edc2lutoff
61ae414d98d24ba4a72a905b07db9424353669f4neil_a_wilsonThe above barely scratches the surface of what's included in this
61ae414d98d24ba4a72a905b07db9424353669f4neil_a_wilsonrelease. For the full scoop, please see our detailed Release Notes:
61ae414d98d24ba4a72a905b07db9424353669f4neil_a_wilson
7070667c2dffad87009999bdeb16d5305e0afdbejvergara http://wiki.inkscape.org/wiki/index.php/Release_notes/$VERSION
7070667c2dffad87009999bdeb16d5305e0afdbejvergara
7070667c2dffad87009999bdeb16d5305e0afdbejvergaragit tag: $tag_name
7070667c2dffad87009999bdeb16d5305e0afdbejvergara$signatures
7070667c2dffad87009999bdeb16d5305e0afdbejvergaraRELEASE
7070667c2dffad87009999bdeb16d5305e0afdbejvergara}
7070667c2dffad87009999bdeb16d5305e0afdbejvergara
7070667c2dffad87009999bdeb16d5305e0afdbejvergaraprocess() {
7070667c2dffad87009999bdeb16d5305e0afdbejvergara top_src=$(pwd)
dde4e18690d219fc5aa41b62d3090ce8b2bbb1d7jvergara
4edb61f8b0f8ce9f62d803c706612376498672b4al_xipe make_dist
4edb61f8b0f8ce9f62d803c706612376498672b4al_xipe sign_packages
4edb61f8b0f8ce9f62d803c706612376498672b4al_xipe generate_announce > "$tar_name.announce"
7a76def451cc02fcd02d8d6ff35d4751db91b206jvergara echo "Info: [ANNOUNCE] template generated in \"$tar_name.announce\" file."
7070667c2dffad87009999bdeb16d5305e0afdbejvergara echo " Please pgp sign and send it."
return 0
}
process