@@ -80,13 +80,70 @@ def create_postgis_2_template():
80
80
81
81
82
82
@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
+
90
147
create_postgis_2_template ()
91
148
92
149
0 commit comments