Skip to content

Instantly share code, notes, and snippets.

@njordr
Last active August 29, 2015 14:00
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save njordr/8200fc5b1bbee4c08df5 to your computer and use it in GitHub Desktop.
Save njordr/8200fc5b1bbee4c08df5 to your computer and use it in GitHub Desktop.
Changes to script to create a deb package for ubuntu 14.04 for zato
#!/bin/bash
if [[ -z "$1" ]]
then
echo Argument 1 must be branch name
exit 1
fi
if [[ -z "$2" ]]
then
echo Argument 2 must be Zato version
exit 2
fi
if [[ -z "$3" ]]
then
echo Argument 3 must be package version
exit 3
fi
BRANCH_NAME=$1
ZATO_VERSION=$2
PACKAGE_VERSION=$3
CURDIR="${BASH_SOURCE[0]}";RL="readlink";([[ `uname -s`=='Darwin' ]] || RL="$RL -f")
while([ -h "${CURDIR}" ]) do CURDIR=`$RL "${CURDIR}"`; done
N="/dev/null";pushd .>$N;cd `dirname ${CURDIR}`>$N;CURDIR=`pwd`;popd>$N
SOURCE_DIR=$CURDIR/package-base
ARCH=`dpkg --print-architecture`
ZATO_ROOT_DIR=/opt/zato
ZATO_TARGET_DIR=$ZATO_ROOT_DIR/$ZATO_VERSION
echo Building `lsb_release -is` DEB zato-$ZATO_VERSION-$PACKAGE_VERSION\_$ARCH
function cleanup {
sudo rm -rf $ZATO_TARGET_DIR
sudo rm -rf $CURDIR/BUILDROOT
}
function checkout {
sudo mkdir -p $ZATO_TARGET_DIR
sudo chown $USER $ZATO_TARGET_DIR
git clone https://github.com/zatosource/zato.git $ZATO_TARGET_DIR
cd $ZATO_TARGET_DIR
for branch in `git branch -a | grep remotes | grep -v HEAD | grep -v master `; do
git branch --track ${branch#remotes/origin/} $branch
done
git checkout $BRANCH_NAME
}
function install_zato {
cd $ZATO_TARGET_DIR
shopt -s dotglob
mv code/* .
shopt -u dotglob
rm -Rf code
bash ./install.sh
find $ZATO_TARGET_DIR/. -name *.pyc -exec rm -f {} \;
rm -f ./code/hotfixman.sh
rm -rf ./code/hotfixes
rm -rf ./code/.git
cd $CURDIR
}
function build_deb {
mkdir $CURDIR/BUILDROOT
mkdir $CURDIR/BUILDROOT/zato-$ZATO_VERSION-$PACKAGE_VERSION\_$ARCH
mkdir $CURDIR/BUILDROOT/zato-$ZATO_VERSION-$PACKAGE_VERSION\_$ARCH/opt
mkdir $CURDIR/BUILDROOT/zato-$ZATO_VERSION-$PACKAGE_VERSION\_$ARCH$ZATO_ROOT_DIR
cp -r $ZATO_TARGET_DIR $CURDIR/BUILDROOT/zato-$ZATO_VERSION-$PACKAGE_VERSION\_$ARCH$ZATO_TARGET_DIR
cp -r $SOURCE_DIR/DEBIAN $CURDIR/BUILDROOT/zato-$ZATO_VERSION-$PACKAGE_VERSION\_$ARCH
cd $CURDIR/BUILDROOT/zato-$ZATO_VERSION-$PACKAGE_VERSION\_$ARCH
find . -path './DEBIAN' -prune -o -type f -exec md5sum {} + | sed -e 's/.\/opt/opt/g' > $CURDIR/BUILDROOT/zato-$ZATO_VERSION-$PACKAGE_VERSION\_$ARCH/DEBIAN/md5sums
SIZE=`du -sk $CURDIR/BUILDROOT/zato-$ZATO_VERSION-$PACKAGE_VERSION\_$ARCH/opt |awk '{print $1}'`
sed "s/Version: VER/Version: $ZATO_VERSION-$PACKAGE_VERSION/g" $SOURCE_DIR/DEBIAN/control | sed "s/Architecture: ARCH/Architecture: $ARCH/g" | sed "s/Installed-Size: SIZE/Installed-Size: $SIZE/g" > $CURDIR/BUILDROOT/zato-$ZATO_VERSION-$PACKAGE_VERSION\_$ARCH/DEBIAN/control
if command -v lsb_release > /dev/null; then
release=$(lsb_release -r | cut -f2)
if [[ "$release" == "14.04" ]]; then
sed -i 's/libumfpack5.4.0/libumfpack5.6.2/' $CURDIR/BUILDROOT/zato-$ZATO_VERSION-$PACKAGE_VERSION\_$ARCH/DEBIAN/control
fi
fi
sed -i "s/\/opt\/zato\/1.1\/bin/\/opt\/zato\/$ZATO_VERSION\/bin/" $CURDIR/BUILDROOT/zato-$ZATO_VERSION-$PACKAGE_VERSION\_$ARCH/DEBIAN/postinst
cd $CURDIR/BUILDROOT
dpkg-deb --build zato-$ZATO_VERSION-$PACKAGE_VERSION\_$ARCH
mv $CURDIR/BUILDROOT/zato-$ZATO_VERSION-$PACKAGE_VERSION\_$ARCH.deb $CURDIR
}
cleanup
checkout
install_zato
build_deb
#!/bin/bash
#
# I'm just waiting for someone to tell me they use apt-get on Fedora
# or yum on Ubuntu. But I'm really not going to chase and compare all the options
# and environment variables various shells and distros use. (dsuch 1 VI 2013)
#
# Please help out with it by advocating among your distribution's developers
# that Zato be included in your system as a package out of the box instead. Many thanks!
#
CURDIR="${BASH_SOURCE[0]}";RL="readlink";([[ `uname -s`=='Darwin' ]] || RL="$RL -f")
while([ -h "${CURDIR}" ]) do CURDIR=`$RL "${CURDIR}"`; done
N="/dev/null";pushd .>$N;cd `dirname ${CURDIR}`>$N;CURDIR=`pwd`;popd>$N
IS_DEB=0
IS_FEDORA=0
IS_DARWIN=0
RUN=0
#
# What OS are we on
#
apt-get > /dev/null 2>&1
if (($? == 0)) ; then IS_DEB=1 ; fi
yum --help > /dev/null 2>&1
if (($? == 0)) ; then IS_FEDORA=1 ; fi
brew --help > /dev/null 2>&1
if (($? == 0)) ; then IS_DARWIN=1 ; fi
#
# Run an OS-specific installer
#
if [ $IS_DEB -eq 1 ]
then
if command -v lsb_release > /dev/null; then
release=$(lsb_release -r | cut -f2)
if [[ "$release" == "14.04" ]]; then
sed -i 's/libumfpack5.4.0/libumfpack5.6.2/' $CURDIR/_install-deb.sh
fi
fi
bash $CURDIR/_install-deb.sh
RUN=1
fi
if [ $IS_FEDORA -eq 1 ]
then
bash $CURDIR/_install-fedora.sh
RUN=1
fi
if [ $IS_DARWIN -eq 1 ]
then
bash $CURDIR/_install-darwin.sh
RUN=1
fi
#
# Unknown system
#
if [ $RUN -ne 1 ]
then
echo "Could not find apt-get, yum nor brew. OS could not be determined, installer cannot run."
exit 1
fi
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment