2016-03-08 16:23:37 +03:00
|
|
|
#! /bin/bash
|
|
|
|
|
|
|
|
cat <<EOF
|
2016-03-08 17:03:53 +03:00
|
|
|
=================== Imposm Packaging Script ============================
|
2016-03-08 16:23:37 +03:00
|
|
|
|
|
|
|
This script creates binary packages for Imposm 3 for Linux.
|
|
|
|
It installs and builds all dependencies, compiles the master
|
|
|
|
branch of this local repository and creates a .tar.gz with
|
|
|
|
the imposm3 binary and all 3rd party dependencies.
|
|
|
|
|
|
|
|
This script is made for Debian 6, so that the resulting binaries
|
|
|
|
are compatible with older Linux distributions, namely SLES 11, RHEL 6,
|
|
|
|
Ubuntu 10.04 and Debian 6.
|
|
|
|
|
|
|
|
'Vagrantfile' defines a working Debian VM that will call this script
|
|
|
|
during the provision phase. Please install Vagrant and Virtualbox first:
|
|
|
|
https://www.vagrantup.com/
|
|
|
|
|
|
|
|
To start the VM and the packaging:
|
|
|
|
$ vagrant up --provision
|
|
|
|
|
|
|
|
The resulting .tar.gz should appear in dist/
|
|
|
|
|
|
|
|
To build another package, e.g. after you commited new changes:
|
|
|
|
$ vagrant provision
|
|
|
|
or
|
|
|
|
$ vagrant ssh
|
|
|
|
% bash /vagrant/packaging.sh
|
|
|
|
|
2016-03-08 17:03:53 +03:00
|
|
|
You can specify a revision or branch by setting the REVISION
|
|
|
|
environment. REVISION defaults to the master branch:
|
|
|
|
|
|
|
|
$ REVISION=mybranch vagrant provision
|
|
|
|
|
2016-03-08 16:23:37 +03:00
|
|
|
To shutdown the VM:
|
|
|
|
$ vagrant halt
|
|
|
|
|
|
|
|
To remove the VM:
|
|
|
|
$ vagrant destroy
|
|
|
|
|
2016-03-08 17:03:53 +03:00
|
|
|
|
2016-03-08 16:23:37 +03:00
|
|
|
EOF
|
|
|
|
|
|
|
|
set -e
|
|
|
|
# set -x
|
|
|
|
|
2016-03-08 17:03:53 +03:00
|
|
|
REVISION=${1:-master}
|
|
|
|
|
2016-03-08 16:23:37 +03:00
|
|
|
BUILD_BASE=$HOME/imposm
|
|
|
|
PREFIX=$BUILD_BASE/local
|
|
|
|
SRC=$BUILD_BASE/src
|
|
|
|
export GOPATH=$BUILD_BASE/gopath
|
|
|
|
export PATH=$PATH:$BUILD_BASE/go/bin
|
|
|
|
export GOROOT=$BUILD_BASE/go
|
|
|
|
IMPOSM_SRC=$GOPATH/src/github.com/omniscale/imposm3
|
|
|
|
BUILD_TMP=$BUILD_BASE/imposm-build
|
|
|
|
|
|
|
|
GEOS_VERSION=3.5.0
|
|
|
|
|
|
|
|
export CGO_CFLAGS=-I$PREFIX/include
|
|
|
|
export CGO_LDFLAGS=-L$PREFIX/lib
|
|
|
|
export LD_LIBRARY_PATH=$PREFIX/lib
|
|
|
|
|
|
|
|
CURL="curl --silent --show-error --location"
|
|
|
|
|
|
|
|
mkdir -p $SRC
|
|
|
|
mkdir -p $PREFIX
|
|
|
|
mkdir -p $GOPATH
|
|
|
|
|
|
|
|
|
|
|
|
if ! grep --silent 'Debian GNU/Linux 6.0' /etc/issue; then
|
|
|
|
echo
|
|
|
|
echo "ERROR: This script only works for Debian 6.0 (Squeeze), see above."
|
|
|
|
exit 1
|
|
|
|
fi
|
|
|
|
|
|
|
|
if [ ! -e /usr/bin/git ]; then
|
|
|
|
echo "-> installing dependencies"
|
|
|
|
|
|
|
|
# squeeze is EOL, use debian-archive
|
|
|
|
cat <<EOF | sudo tee /etc/apt/sources.list
|
|
|
|
deb http://ftp.de.debian.org/debian-archive/debian squeeze main
|
|
|
|
deb-src http://ftp.de.debian.org/debian-archive/debian squeeze main
|
|
|
|
EOF
|
|
|
|
|
|
|
|
sudo apt-get update -y
|
|
|
|
sudo apt-get install -y build-essential unzip autoconf libtool git-core chrpath
|
|
|
|
fi
|
|
|
|
|
|
|
|
if [ ! -e $BUILD_BASE/go/bin/go ]; then
|
|
|
|
echo "-> installing go"
|
|
|
|
pushd $SRC
|
|
|
|
$CURL https://storage.googleapis.com/golang/go1.6.linux-amd64.tar.gz -O
|
|
|
|
tar xzf go1.6.linux-amd64.tar.gz -C $BUILD_BASE/
|
|
|
|
popd
|
|
|
|
fi
|
|
|
|
|
|
|
|
if [ ! -e $PREFIX/lib/libhyperleveldb.so ]; then
|
|
|
|
echo "-> installing hyperleveldb"
|
|
|
|
pushd $SRC
|
|
|
|
$CURL https://github.com/rescrv/HyperLevelDB/archive/master.zip -O
|
|
|
|
unzip master.zip
|
|
|
|
pushd HyperLevelDB-master
|
|
|
|
autoreconf -i
|
|
|
|
./configure --prefix=$PREFIX
|
|
|
|
make -j4
|
|
|
|
make install
|
|
|
|
popd
|
|
|
|
popd $SRC
|
|
|
|
fi
|
|
|
|
|
|
|
|
if [ ! -e $PREFIX/include/leveldb ]; then
|
|
|
|
echo "-> linking hyperleveldb as leveldb"
|
|
|
|
pushd $PREFIX/lib
|
|
|
|
for s in 'a', 'la', 'so'; do
|
|
|
|
ln -sf libhyperleveldb.$s libleveldb.$s
|
|
|
|
done
|
|
|
|
popd
|
|
|
|
ln -s $PREFIX/include/hyperleveldb $PREFIX/include/leveldb
|
|
|
|
fi
|
|
|
|
|
|
|
|
if [ ! -e $PREFIX/lib/libprotobuf.so ]; then
|
|
|
|
echo "-> installing protobuf"
|
|
|
|
pushd $SRC
|
|
|
|
$CURL https://github.com/google/protobuf/releases/download/v2.6.1/protobuf-2.6.1.tar.bz2 -O
|
|
|
|
tar jxf protobuf-2.6.1.tar.bz2
|
|
|
|
pushd protobuf-2.6.1/
|
|
|
|
./configure --prefix=$PREFIX
|
|
|
|
make -j2
|
|
|
|
make install
|
|
|
|
popd
|
|
|
|
popd
|
|
|
|
fi
|
|
|
|
|
|
|
|
if [ ! -e $PREFIX/lib/libgeos.so ]; then
|
|
|
|
echo "-> installing GEOS"
|
|
|
|
pushd $SRC
|
|
|
|
$CURL http://download.osgeo.org/geos/geos-$GEOS_VERSION.tar.bz2 -O
|
|
|
|
tar jxf geos-$GEOS_VERSION.tar.bz2
|
|
|
|
pushd geos-$GEOS_VERSION/
|
|
|
|
./configure --prefix=$PREFIX
|
|
|
|
make -j2
|
|
|
|
make install
|
|
|
|
popd
|
|
|
|
popd
|
|
|
|
fi
|
|
|
|
|
|
|
|
echo '-> fetching imposm'
|
|
|
|
mkdir -p $IMPOSM_SRC
|
|
|
|
git init $IMPOSM_SRC
|
|
|
|
|
|
|
|
pushd $IMPOSM_SRC
|
|
|
|
git config --add receive.denyCurrentBranch ignore
|
|
|
|
|
|
|
|
pushd /vagrant
|
|
|
|
git push --all -f $IMPOSM_SRC
|
|
|
|
popd
|
|
|
|
|
|
|
|
git reset --hard
|
2016-03-08 17:03:53 +03:00
|
|
|
git checkout $REVISION
|
2016-03-08 16:23:37 +03:00
|
|
|
|
|
|
|
echo '-> compiling imposm'
|
|
|
|
make clean
|
|
|
|
make build
|
|
|
|
popd
|
|
|
|
|
|
|
|
|
|
|
|
echo '-> building imposm package'
|
|
|
|
rm -rf $BUILD_TMP
|
|
|
|
mkdir -p $BUILD_TMP
|
|
|
|
pushd $IMPOSM_SRC
|
|
|
|
cp imposm3 $BUILD_TMP
|
|
|
|
cp example-mapping.json $BUILD_TMP/mapping.json
|
|
|
|
popd
|
|
|
|
|
|
|
|
mkdir -p $BUILD_TMP/lib
|
|
|
|
pushd $PREFIX/lib
|
|
|
|
cp libgeos_c.so $BUILD_TMP/lib
|
|
|
|
ln -s libgeos_c.so $BUILD_TMP/lib/libgeos_c.so.1
|
|
|
|
cp libgeos.so $BUILD_TMP/lib
|
|
|
|
ln -s libgeos.so $BUILD_TMP/lib/libgeos-$GEOS_VERSION.so
|
|
|
|
cp libhyperleveldb.so $BUILD_TMP/lib
|
|
|
|
ln -s libhyperleveldb.so $BUILD_TMP/lib/libhyperleveldb.so.0
|
|
|
|
ln -s libhyperleveldb.so $BUILD_TMP/lib/libleveldb.so.1
|
|
|
|
popd
|
|
|
|
|
|
|
|
pushd $BUILD_TMP/lib
|
|
|
|
chrpath libgeos_c.so -r '${ORIGIN}'
|
|
|
|
popd
|
|
|
|
|
|
|
|
|
|
|
|
pushd $BUILD_BASE
|
|
|
|
VERSION=`$BUILD_TMP/imposm3 version`-linux-x86-64
|
|
|
|
rm -rf imposm3-$VERSION
|
|
|
|
mv imposm-build imposm3-$VERSION
|
|
|
|
tar zcvf imposm3-$VERSION.tar.gz imposm3-$VERSION
|
|
|
|
mkdir -p /vagrant/dist
|
|
|
|
mv imposm3-$VERSION.tar.gz /vagrant/dist/
|
|
|
|
echo "placed final package in: ./dist/imposm3-$VERSION.tar.gz"
|
|
|
|
popd
|