From 3846820e4ea0d0ce430f0924d9281ccae912eaa7 Mon Sep 17 00:00:00 2001 From: Ivan Alejandro Date: Thu, 19 Sep 2013 11:29:39 -0300 Subject: Add comments, refactor code, use latest tag. Improve documentation of the script regarding its usage. Support different tags in the needed repositories and use latest tag for each one. Refactor code to be more readable. --- pkg/linux/build_bundle.sh | 119 ++++++++++++++++++++++++---------------------- 1 file changed, 63 insertions(+), 56 deletions(-) diff --git a/pkg/linux/build_bundle.sh b/pkg/linux/build_bundle.sh index 879579f0..520ff256 100755 --- a/pkg/linux/build_bundle.sh +++ b/pkg/linux/build_bundle.sh @@ -1,98 +1,106 @@ -REPOS_ROOT=$1 -VERSION=$2 -TEMPLATE_BUNDLE=$3 -JOINT_CHANGELOG=$4 -DEST=$5 +#!/bin/bash +# +# USAGE NOTES: +# +# This script is meant to be used as follows: +# user@host ~ $ ./build_bundle.sh ~/tmp 0.3.2 ~/tmp/0.3.1/Bitmask-linux64-0.3.1/ /media/Shared/CHANGELOG ~/tmp/bundle_out/ +# +# So we would have: +# REPOS_ROOT -> ~/tmp +# VERSION -> 0.3.2 +# TEMPLATE_BUNDLE -> ~/tmp/0.3.1/Bitmask-linux64-0.3.1/ +# JOINT_CHANGELOG -> /media/Shared/CHANGELOG +# DEST -> ~/tmp/bundle_out/ +# +# We need to set different PATHs in order to use a specific version of PySide, +# supposing that we have our compiled pyside in '~/pyside/sandbox', the above command would be: +# user@host ~ $ PYTHONPATH=~/pyside/sandbox/lib/python2.7/site-packages/ LD_LIBRARY_PATH=~/pyside/sandbox/lib/ PATH=$PATH:~/pyside/sandbox/bin/ ./build_bundle.sh ~/tmp 0.3.2 ~/tmp/0.3.1/Bitmask-linux64-0.3.1/ /media/sf_Shared/CHANGELOG ~/tmp/bundle_out/ + + +# Required arguments +REPOS_ROOT=$1 # Root path for all the needed repositories +VERSION=$2 # Version number that we are building +TEMPLATE_BUNDLE=$3 # A template used to create the new bundle +JOINT_CHANGELOG=$4 # Joint changelog for all the repositories +DEST=$5 # Destination folder for the bundle + +# Helper variables +REPOSITORIES="bitmask_client leap_pycommon soledad keymanager leap_mail" +ARCH=$(uname -m | sed 's/x86_//;s/i[3-6]86/32/') -# clean template +# Bundle structure +LEAP_LIB=$TEMPLATE_BUNDLE/lib/leap/ +BITMASK_BIN=$TEMPLATE_BUNDLE/bitmask +BUNDLE_NAME=Bitmask-linux$ARCH-$VERSION +# clean template rm $TEMPLATE_BUNDLE/CHANGELOG rm $TEMPLATE_BUNDLE/relnotes.txt rm -rf $TEMPLATE_BUNDLE/apps/leap rm -rf $TEMPLATE_BUNDLE/lib/leap/{common,keymanager,soledad,mail} -# checkout VERSION in all repos - -for i in {leap_client,leap_pycommon,soledad,keymanager,leap_mail} - do - cd $REPOS_ROOT/$i +# checkout the latest tag in all repos +for repo in $REPOSITORIES; do + cd $REPOS_ROOT/$repo git fetch - git checkout $VERSION - done + # checkout to the latest annotated tag, supress 'detached head' warning + git checkout --quiet `git describe --abbrev=0` +done -# make ui in client - -cd $REPOS_ROOT/leap_client +# make: compile ui and resources in client +cd $REPOS_ROOT/bitmask_client make -# cp client - -cp -r $REPOS_ROOT/leap_client/src/leap $TEMPLATE_BUNDLE/apps/leap +# copy the latest client code to the template +cp -r $REPOS_ROOT/bitmask_client/src/leap $TEMPLATE_BUNDLE/apps/leap # setup sdist client - -cd $REPOS_ROOT/leap_client +cd $REPOS_ROOT/bitmask_client python setup.py sdist # extract $VERSION and copy _version.py to TEMPLATE_BUNDLE/Bitmask.app/Contents/MacOS/apps/leap/bitmask/_version.py - +# copy _version.py (versioneer) and reqs.txt (requirements) to the bundle template cd dist rm -rf leap.bitmask-$VERSION tar xzf leap.bitmask-$VERSION.tar.gz cp leap.bitmask-$VERSION/src/leap/bitmask/_version.py $TEMPLATE_BUNDLE/apps/leap/bitmask/_version.py cp leap.bitmask-$VERSION/src/leap/bitmask/util/reqs.txt $TEMPLATE_BUNDLE/apps/leap/bitmask/util/reqs.txt -# cp common, soledad(client and common), mail and keymanager in TEMPLATE_BUNDLE/Bitmask.app/Contents/MacOS/lib/leap/ - -LEAP_LIB=$TEMPLATE_BUNDLE/lib/leap/ - +# add the other needed projects to $LEAP_LIB +# e.g. TEMPLATE_BUNDLE/Bitmask.app/Contents/MacOS/lib/leap/ cp -r $REPOS_ROOT/leap_pycommon/src/leap/common $LEAP_LIB cp -r $REPOS_ROOT/soledad/common/src/leap/soledad $LEAP_LIB cp -r $REPOS_ROOT/soledad/client/src/leap/soledad/client $LEAP_LIB/soledad cp -r $REPOS_ROOT/leap_mail/src/leap/mail $LEAP_LIB cp -r $REPOS_ROOT/keymanager/src/leap/keymanager $LEAP_LIB -# cp leap_client launcher to TEMPLATE_BUNDLE/Bitmask.app/Contents/MacOS/Bitmask - -BITMASK_BIN=$TEMPLATE_BUNDLE/bitmask - -cd $REPOS_ROOT/leap_client_launcher/build/ +# copy bitmask launcher to the bundle template +# e.g. TEMPLATE_BUNDLE/Bitmask.app/Contents/MacOS/Bitmask +cd $REPOS_ROOT/bitmask_launcher/build/ make cp src/launcher $BITMASK_BIN -# cp launcher.py to TEMPLATE_BUNDLE/Bitmask.app/Contents/MacOS/apps/ - -cd $REPOS_ROOT/leap_client_launcher/src/ +# copy launcher.py to template bundle +# e.g. TEMPLATE_BUNDLE/Bitmask.app/Contents/MacOS/apps/ +cd $REPOS_ROOT/bitmask_client_launcher/src/ cp launcher.py $TEMPLATE_BUNDLE/apps/ -# cp relnotes to TEMPLATE_BUNDLE - -cp $REPOS_ROOT/leap_client/relnotes.txt $TEMPLATE_BUNDLE - -# cp joint_chglog to TEMPLATE_BUNDLE - +# copy relnotes, joint changelog and LICENSE to TEMPLATE_BUNDLE +cp $REPOS_ROOT/bitmask_client/relnotes.txt $TEMPLATE_BUNDLE cp $JOINT_CHANGELOG $TEMPLATE_BUNDLE/CHANGELOG - -# cp LICENSE to TEMPLATE_BUNDLE - -cp $REPOS_ROOT/leap_client/LICENSE $TEMPLATE_BUNDLE/LICENSE +cp $REPOS_ROOT/bitmask_client/LICENSE $TEMPLATE_BUNDLE/LICENSE # clean *.pyc files cd $TEMPLATE_BUNDLE find . -name "*.pyc" -delete -# remove execution flags (because vbox fs) and set all read permissions -chmod -x CHANGELOG LICENSE README -chmod +r CHANGELOG LICENSE README +# remove execution flags (because vbox fs) and set read permissions for all +chmod 644 CHANGELOG LICENSE README # create tarball - -ARCH=$(uname -m | sed 's/x86_//;s/i[3-6]86/32/') -BUNDLE_NAME=Bitmask-linux$ARCH-$VERSION TMP=/tmp/$BUNDLE_NAME -rm -rf $TMP -mkdir -p $TMP +rm -rf $TMP && mkdir -p $TMP # clean temp dir cp -R $TEMPLATE_BUNDLE/* $TMP cd /tmp tar cjf $DEST/$BUNDLE_NAME.tar.bz2 $BUNDLE_NAME @@ -100,8 +108,7 @@ cd rm -rf $TMP # go back to develop in all repos -for i in {leap_client,leap_pycommon,soledad,keymanager,leap_mail} - do - cd $REPOS_ROOT/$i +for repo in $REPOSITORIES; do + cd $REPOS_ROOT/$repo git checkout develop - done +done -- cgit v1.2.3