Skip to content

Instantly share code, notes, and snippets.

@nachouve
Forked from rburhum/fabfile.py
Last active December 18, 2015 00:29
Show Gist options
  • Save nachouve/5697413 to your computer and use it in GitHub Desktop.
Save nachouve/5697413 to your computer and use it in GitHub Desktop.
Fabric script to compile GDAL with ESRI FileGDB and python support.
"""
Compile GDAL with ESRI FileGDB and python support.
Requirements: python-dev
"""
from fabric.api import *
from fabric.contrib.console import confirm
import tempfile
import re
PROJ_VER='4.8.0'
GEOS_VER='3.3.3'
GDAL_VER='1.9.0'
PROJ_PATH='/usr/local/proj/' + PROJ_VER
GEOS_PATH='/usr/local/geos/' + GEOS_VER
GDAL_PATH='/usr/local/gdal/' + GDAL_VER
## 64bits
FILEGDBAPI_FILE = 'FileGDB_API_1_2-64.tar.gz'
FILEGDBAPI_LOCATION = 'http://dl.dropbox.com/u/4779803/%s' % (FILEGDBAPI_FILE,)
##32bits
FILEGDBAPI_FILE = 'FileGDB_API_1_2-32.tar.gz'
FILEGDBAPI_LOCATION = 'wget http://downloads.esri.com/Support/downloads/ao_/%s' % (FILEGDBAPI_FILE,)
TEMP_DIR = '/tmp/'
PROJ_ROOT = '/srv/mydjangoproject'
PYTHON_INTERPRETER = '/srv/myvirtualenv/bin/python'
def macpro():
env.hosts = ['10.0.0.21']
env.user = env.deploy_user = 'rburhum'
env.directory = '/srv/myvirtualenv'
env.activate = '/srv/myvirtualenv/bin/activate'
env.password = 'mypassword'
def virtualenv(command):
with cd(env.directory):
sudo('source ' + env.activate + ' && ' + command, user=env.deploy_user)
def manage_py(command):
run(PYTHON_INTERPRETER + ' ' + PROJ_ROOT + '/manage.py ' + command)
def deploy():
with cd(PROJ_ROOT):
run('hg pull')
run('hg update')
virtualenv('pip install -r ' + PROJ_ROOT + '/pip-req.txt')
manage_py('syncdb --migrate')
manage_py('collectstatic -l --noinput')
sudo('/etc/init.d/apache2 restart')
sudo('/etc/init.d/celeryd restart')
sudo('/etc/init.d/celeryevcam restart')
def install_filegdb():
with cd(TEMP_DIR):
proj_filename = 'proj-%s.tar.gz' % PROJ_VER
geos_filename = 'geos-%s.tar.bz2' % GEOS_VER
gdal_filename = 'gdal-%s.tar.gz' % GDAL_VER
run('wget -c %s' % (FILEGDBAPI_LOCATION,))
run('wget -c http://download.osgeo.org/proj/%s' % (proj_filename,))
run('wget -c http://download.osgeo.org/geos/%s' % (geos_filename,))
run('wget -c http://download.osgeo.org/gdal/%s' % (gdal_filename,))
run('tar xzf %s' % (FILEGDBAPI_FILE,))
run('tar xzf %s' % (proj_filename,))
run('tar xjf %s' % (geos_filename,))
run('tar xzf %s' % (gdal_filename,))
#install FILEGDB API based on current ESRI defaults
sudo('rm -rf /usr/local/FileGDB_API 2>/dev/null')
sudo('mv FileGDB_API /usr/local/FileGDB_API')
#sudo('echo \"/usr/local/FileGDB_API/lib\" > /etc/ld.so.conf.d/filegdb.conf')
with settings(warn_only=True):
sudo('ln -s /usr/local/FileGDB_API/lib/* /usr/local/lib/')
#temp fix for filegdb bug that got fixed in trunk (after 1.9)
#fix start
sudo('ln -s /usr/local/lib/libfgdbunixrtl.so /usr/local/lib/libfgdblinuxrtl.so')
#fix end
sudo('ldconfig')
with cd('proj-%s' % PROJ_VER):
run('./configure')
run('make')
sudo('make install')
sudo('ldconfig')
with cd('geos-%s' % GEOS_VER):
run('./configure')
run('make')
sudo('make install')
sudo('ldconfig')
with cd('gdal-%s' % GDAL_VER):
run('./configure --with-python --with-fgdb=/usr/local/FileGDB_API')
run('make')
sudo('make install')
sudo('ldconfig')
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment