Skip to content

Commit 5e98f3a

Browse files
committed
Added task for building postgis 2 from source
1 parent 2eb2f6c commit 5e98f3a

File tree

2 files changed

+66
-8
lines changed

2 files changed

+66
-8
lines changed

fabfile.py

+2-1
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@
4848
from fabric.contrib.project import rsync_project
4949
from fabric.colors import blue
5050
from fabgis.postgres import (
51+
setup_postgis_latest,
5152
create_postgis_1_5_db,
5253
get_postgres_dump,
5354
setup_nightly_backups)
@@ -152,4 +153,4 @@ def sync_docs_to_server(remote_dir='/home/web/fabgis'):
152153
rsync_project(remote_dir=remote_dir, local_dir=html_path)
153154
run('chmod o+rX -R %s' % remote_dir)
154155
fastprint(blue(
155-
'Your server docs are now synchronised to your local project\n'))
156+
'Your server docs are now synchronised to your local project\n'))

fabgis/postgres.py

+64-7
Original file line numberDiff line numberDiff line change
@@ -80,13 +80,70 @@ def create_postgis_2_template():
8080

8181

8282
@task
83-
def setup_postgis_2():
84-
"""Set up postgis 2.0 from packages in ubuntugis."""
85-
add_ubuntugis_ppa()
86-
fabtools.require.deb.package('build-essential')
87-
fabtools.require.deb.package('postgresql-9.1-postgis-2.0')
88-
fabtools.require.deb.package('postgresql-9.1-postgis-2.0-scripts')
89-
fabtools.require.deb.package('postgresql-server-dev-all')
83+
def setup_postgis_2(from_source=False):
84+
"""Set up postgis 2.0 from packages in ubuntugis or from source.
85+
86+
:param from_source: Whether postgis should be built from source.
87+
:type from_source: bool
88+
.. versionadded:: from_source parameter added in 0.17.0
89+
90+
"""
91+
if from_source:
92+
setup_postgis_latest():
93+
else:
94+
add_ubuntugis_ppa()
95+
fabtools.require.deb.package('build-essential')
96+
fabtools.require.deb.package('postgresql-9.1-postgis-2.0')
97+
fabtools.require.deb.package('postgresql-9.1-postgis-2.0-scripts')
98+
fabtools.require.deb.package('postgresql-server-dev-all')
99+
create_postgis_2_template()
100+
101+
@task
102+
def setup_postgis_latest():
103+
"""Set up postgis latest package from source..
104+
105+
You can call this multiple times without it actually installing all over
106+
again each time since it checks for the presence of pgis first.
107+
108+
We build from source because we want the latest build
109+
110+
I'm using this together with the postgresql repo here:
111+
112+
deb http://apt.postgresql.org/pub/repos/apt/ precise-pgdg main
113+
114+
which provides pg 9.3 at time of writing this.
115+
116+
.. versionadded:: 0.17.0
117+
"""
118+
setup_env()
119+
120+
pg_file = '/usr/share/postgresql/9.3/contrib/postgis-2/postgis.sql'
121+
if not fabtools.files.is_file(pg_file):
122+
add_ubuntugis_ppa()
123+
fabtools.require.deb.package('postgresql-server-dev-9.3')
124+
fabtools.require.deb.package('build-essential')
125+
126+
# Note - no postgis installation from package as we want to build 1.5
127+
# from source
128+
fabtools.require.postgres.server()
129+
130+
# Now get and install postgis 1.5 if needed
131+
132+
fabtools.require.deb.package('libxml2-dev')
133+
fabtools.require.deb.package('libgeos-dev')
134+
fabtools.require.deb.package('libgdal1-dev')
135+
fabtools.require.deb.package('libproj-dev')
136+
source_url = ('http://download.osgeo.org/postgis/source/'
137+
'postgis-2.1.1.tar.gz')
138+
source = 'postgis-2.1.1'
139+
if not fabtools.files.is_file('%s.tar.gz' % source):
140+
run('wget %s' % source_url)
141+
run('tar xfz %s.tar.gz' % source)
142+
with cd(source):
143+
run('./configure')
144+
run('make')
145+
sudo('make install')
146+
90147
create_postgis_2_template()
91148

92149

0 commit comments

Comments
 (0)