diff options
| author | Ivan Alejandro <ivanalejandro0@gmail.com> | 2013-09-19 11:29:39 -0300 | 
|---|---|---|
| committer | Ivan Alejandro <ivanalejandro0@gmail.com> | 2013-09-19 12:24:50 -0300 | 
| commit | 3846820e4ea0d0ce430f0924d9281ccae912eaa7 (patch) | |
| tree | 31dba213ca0b13f1392ee18387fc1b0bab8d2494 | |
| parent | e21282f20abd475029bb2a682bcf7e9d314bd6a3 (diff) | |
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.
| -rwxr-xr-x | pkg/linux/build_bundle.sh | 119 | 
1 files 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  | 
