summaryrefslogtreecommitdiff
path: root/pkg/linux/build_bundle.sh
diff options
context:
space:
mode:
authorIvan Alejandro <ivanalejandro0@gmail.com>2013-09-19 11:29:39 -0300
committerIvan Alejandro <ivanalejandro0@gmail.com>2013-09-19 12:24:50 -0300
commit3846820e4ea0d0ce430f0924d9281ccae912eaa7 (patch)
tree31dba213ca0b13f1392ee18387fc1b0bab8d2494 /pkg/linux/build_bundle.sh
parente21282f20abd475029bb2a682bcf7e9d314bd6a3 (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.
Diffstat (limited to 'pkg/linux/build_bundle.sh')
-rwxr-xr-xpkg/linux/build_bundle.sh119
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