﻿id	summary	reporter	owner	description	type	status	component	version	severity	resolution	keywords	cc	stage	has_patch	needs_docs	needs_tests	needs_better_patch	easy	ui_ux
17672	GeoDjango installation via MacPorts doesn't properly build GDAL	Andy Chosak	nobody	"The documentation for installing GeoDjango includes a section on installing via MacPorts ([https://docs.djangoproject.com/en/dev/ref/contrib/gis/install/#macports]). This lists the commands needed to install the various GeoDjango requirements, including GEOS and GDAL.

After installing via this method, several GeoDjango tests report errors with ""ERROR 6: GEOS support not enabled"" messages:

* `test07b_closepolygons (django.contrib.gis.gdal.tests.test_geom.OGRGeomTest)`
* `test09a_srs (django.contrib.gis.gdal.tests.test_geom.OGRGeomTest)`
* `test10_difference (django.contrib.gis.gdal.tests.test_geom.OGRGeomTest)`
* `test11_intersection (django.contrib.gis.gdal.tests.test_geom.OGRGeomTest)`
* `test12_symdifference (django.contrib.gis.gdal.tests.test_geom.OGRGeomTest)`
* `test13_union (django.contrib.gis.gdal.tests.test_geom.OGRGeomTest)`

Here's the output from the test runner:

{{{#!sh
======================================================================
ERROR: test07a_polygons (django.contrib.gis.gdal.tests.test_geom.OGRGeomTest)
Testing Polygon objects.
----------------------------------------------------------------------
Traceback (most recent call last):
  File ""/Users/chosak/Documents/Development/django-bugs/no-gdal/src/django/django/contrib/gis/gdal/tests/test_geom.py"", line 211, in test07a_polygons
    x, y = poly.centroid.tuple
  File ""/Users/chosak/Documents/Development/django-bugs/no-gdal/src/django/django/contrib/gis/gdal/geometries.py"", line 668, in centroid
    capi.get_centroid(self.ptr, p.ptr)
  File ""/Users/chosak/Documents/Development/django-bugs/no-gdal/src/django/django/contrib/gis/gdal/prototypes/errcheck.py"", line 107, in check_errcode
    check_err(result)
  File ""/Users/chosak/Documents/Development/django-bugs/no-gdal/src/django/django/contrib/gis/gdal/error.py"", line 40, in check_err
    raise e(msg)
OGRException: OGR failure.

======================================================================
ERROR: test07b_closepolygons (django.contrib.gis.gdal.tests.test_geom.OGRGeomTest)
Testing closing Polygon objects.
----------------------------------------------------------------------
Traceback (most recent call last):
  File ""/Users/chosak/Documents/Development/django-bugs/no-gdal/src/django/django/contrib/gis/gdal/tests/test_geom.py"", line 248, in test07b_closepolygons
    self.assertEqual(OGRGeometry('POINT(2.5 2.5)'), poly.centroid)
  File ""/Users/chosak/Documents/Development/django-bugs/no-gdal/src/django/django/contrib/gis/gdal/geometries.py"", line 668, in centroid
    capi.get_centroid(self.ptr, p.ptr)
  File ""/Users/chosak/Documents/Development/django-bugs/no-gdal/src/django/django/contrib/gis/gdal/prototypes/errcheck.py"", line 107, in check_errcode
    check_err(result)
  File ""/Users/chosak/Documents/Development/django-bugs/no-gdal/src/django/django/contrib/gis/gdal/error.py"", line 40, in check_err
    raise e(msg)
OGRException: OGR failure.

======================================================================
ERROR: test09a_srs (django.contrib.gis.gdal.tests.test_geom.OGRGeomTest)
Testing OGR Geometries with Spatial Reference objects.
----------------------------------------------------------------------
Traceback (most recent call last):
  File ""/Users/chosak/Documents/Development/django-bugs/no-gdal/src/django/django/contrib/gis/gdal/tests/test_geom.py"", line 288, in test09a_srs
    diff = a.difference(b)
  File ""/Users/chosak/Documents/Development/django-bugs/no-gdal/src/django/django/contrib/gis/gdal/geometries.py"", line 517, in difference
    return self._geomgen(capi.geom_diff, other)
  File ""/Users/chosak/Documents/Development/django-bugs/no-gdal/src/django/django/contrib/gis/gdal/geometries.py"", line 495, in _geomgen
    return OGRGeometry(gen_func(self.ptr, other.ptr), self.srs)
  File ""/Users/chosak/Documents/Development/django-bugs/no-gdal/src/django/django/contrib/gis/gdal/prototypes/errcheck.py"", line 77, in check_geom
    raise OGRException('Invalid geometry pointer returned from ""%s"".' % func.__name__)
OGRException: Invalid geometry pointer returned from ""OGR_G_Difference"".

======================================================================
ERROR: test10_difference (django.contrib.gis.gdal.tests.test_geom.OGRGeomTest)
Testing difference().
----------------------------------------------------------------------
Traceback (most recent call last):
  File ""/Users/chosak/Documents/Development/django-bugs/no-gdal/src/django/django/contrib/gis/gdal/tests/test_geom.py"", line 359, in test10_difference
    d2 = a.difference(b)
  File ""/Users/chosak/Documents/Development/django-bugs/no-gdal/src/django/django/contrib/gis/gdal/geometries.py"", line 517, in difference
    return self._geomgen(capi.geom_diff, other)
  File ""/Users/chosak/Documents/Development/django-bugs/no-gdal/src/django/django/contrib/gis/gdal/geometries.py"", line 495, in _geomgen
    return OGRGeometry(gen_func(self.ptr, other.ptr), self.srs)
  File ""/Users/chosak/Documents/Development/django-bugs/no-gdal/src/django/django/contrib/gis/gdal/prototypes/errcheck.py"", line 77, in check_geom
    raise OGRException('Invalid geometry pointer returned from ""%s"".' % func.__name__)
OGRException: Invalid geometry pointer returned from ""OGR_G_Difference"".

======================================================================
ERROR: test11_intersection (django.contrib.gis.gdal.tests.test_geom.OGRGeomTest)
Testing intersects() and intersection().
----------------------------------------------------------------------
Traceback (most recent call last):
  File ""/Users/chosak/Documents/Development/django-bugs/no-gdal/src/django/django/contrib/gis/gdal/tests/test_geom.py"", line 372, in test11_intersection
    i2 = a.intersection(b)
  File ""/Users/chosak/Documents/Development/django-bugs/no-gdal/src/django/django/contrib/gis/gdal/geometries.py"", line 524, in intersection
    return self._geomgen(capi.geom_intersection, other)
  File ""/Users/chosak/Documents/Development/django-bugs/no-gdal/src/django/django/contrib/gis/gdal/geometries.py"", line 495, in _geomgen
    return OGRGeometry(gen_func(self.ptr, other.ptr), self.srs)
  File ""/Users/chosak/Documents/Development/django-bugs/no-gdal/src/django/django/contrib/gis/gdal/prototypes/errcheck.py"", line 77, in check_geom
    raise OGRException('Invalid geometry pointer returned from ""%s"".' % func.__name__)
OGRException: Invalid geometry pointer returned from ""OGR_G_Intersection"".

======================================================================
ERROR: test12_symdifference (django.contrib.gis.gdal.tests.test_geom.OGRGeomTest)
Testing sym_difference().
----------------------------------------------------------------------
Traceback (most recent call last):
  File ""/Users/chosak/Documents/Development/django-bugs/no-gdal/src/django/django/contrib/gis/gdal/tests/test_geom.py"", line 384, in test12_symdifference
    d2 = a.sym_difference(b)
  File ""/Users/chosak/Documents/Development/django-bugs/no-gdal/src/django/django/contrib/gis/gdal/geometries.py"", line 531, in sym_difference
    return self._geomgen(capi.geom_sym_diff, other)
  File ""/Users/chosak/Documents/Development/django-bugs/no-gdal/src/django/django/contrib/gis/gdal/geometries.py"", line 495, in _geomgen
    return OGRGeometry(gen_func(self.ptr, other.ptr), self.srs)
  File ""/Users/chosak/Documents/Development/django-bugs/no-gdal/src/django/django/contrib/gis/gdal/prototypes/errcheck.py"", line 77, in check_geom
    raise OGRException('Invalid geometry pointer returned from ""%s"".' % func.__name__)
OGRException: Invalid geometry pointer returned from ""OGR_G_SymmetricDifference"".

======================================================================
ERROR: test13_union (django.contrib.gis.gdal.tests.test_geom.OGRGeomTest)
Testing union().
----------------------------------------------------------------------
Traceback (most recent call last):
  File ""/Users/chosak/Documents/Development/django-bugs/no-gdal/src/django/django/contrib/gis/gdal/tests/test_geom.py"", line 396, in test13_union
    u2 = a.union(b)
  File ""/Users/chosak/Documents/Development/django-bugs/no-gdal/src/django/django/contrib/gis/gdal/geometries.py"", line 538, in union
    return self._geomgen(capi.geom_union, other)
  File ""/Users/chosak/Documents/Development/django-bugs/no-gdal/src/django/django/contrib/gis/gdal/geometries.py"", line 495, in _geomgen
    return OGRGeometry(gen_func(self.ptr, other.ptr), self.srs)
  File ""/Users/chosak/Documents/Development/django-bugs/no-gdal/src/django/django/contrib/gis/gdal/prototypes/errcheck.py"", line 77, in check_geom
    raise OGRException('Invalid geometry pointer returned from ""%s"".' % func.__name__)
OGRException: Invalid geometry pointer returned from ""OGR_G_Union"".
}}}

This is because the MacPorts install for GDAL ([https://trac.macports.org/browser/trunk/dports/gis/gdal/Portfile]) doesn't include GEOS support by default. There is a GEOS variant (see ""variant geos"" in the previous link), but it must be manually specified when installing. So instead of doing as the documentation suggests:

{{{#!sh
$ sudo port install gdal
}}}

Users should instead use:

{{{#!sh
$ sudo port install gdal +geos
}}}

Manually specifying the GEOS requirement fixes the above test errors."	Bug	closed	Documentation	1.4-alpha-1	Normal	fixed	geodjango macports geos gdal	Andy Chosak	Ready for checkin	1	0	0	0	1	0
