Changes between Initial Version and Version 1 of PackageQuestion


Ignore:
Timestamp:
Jun 6, 2013, 6:41:48 PM (11 years ago)
Author:
darkblueb
Comment:

new

Legend:

Unmodified
Added
Removed
Modified
  • PackageQuestion

    v1 v1  
     1GEOS 3.4 Requirements and Improvements
     2-------------------------------------------------------------------------------
     3
     4Maximum Version, Minimum Version, Packaging and Linking, Oh My !
     5
     6  The GEOS library and C interface are designed in such a way that a client can
     7  link to a generic C Interface lib (libgeos_c), which then calls a second generic library
     8  linked by name (libgeos), then finally the actual current version of libgeos.
     9  With this setup, multiple versions of GEOS can easily sit side by side. PostGIS
     10  uses this convention to link to GEOS.
     11 
     12  strk> PostGIS links against the geos_c library, which have had
     13         the _same_ SONAME since the very beginning
     14
     15  When does it make sense to declare a MINIMUM version ?
     16   when entry points are called that are only present in newer versions and above
     17
     18  When does it make sense to declare a MAXIMUM version ?
     19   when behavior changes in an incompatible way in a new version, either API
     20   breakage or perhaps the results of a common operation like noding
     21
     22Minimum Version     
     23  For a long while, features and fixes were just added to the newest GEOS, so
     24  any client app would just get the newest available GEOS and all is well.
     25
     26  However, to take advantage of new functionality, clients have to call
     27  entry points explicitly. So a *minimum* version has to be declared.
     28 
     29  With PostGIS 2.1, if new GEOS functionality is required, then the
     30  *minimum* version might be 3.4.
     31 
     32Maximum Version
     33  With GEOS 3.4, there is a change in noding algorithm, which could have
     34  an effect on output. So a client app's results may be different by upgrading to
     35  GEOS 3.4. This change may be undesirable, so a *maximum* version could be declared,
     36  saying in effect, if you want the same reliable output, you must not go above v3.3x.
     37
     38 
     39Packaging  --   IANAP  (I am not a packager ;-)
     40
     41         / -> GDAL -> PostGIS
     42 GEOS-> | -> PostGIS
     43         \ -> QGis
     44
     45  GDAL is unique in that it is designed to be an extensible collection of drivers.
     46  Since the tools are command line oriented and open source, I suspect a substantial
     47  number of GDAL installs are built from source.
     48 
     49  Not so with PostGIS. I suspect that the vast majority of PostGIS installs are by
     50  official installers and packages *only*.
     51 
     52  PostGIS now requires GDAL (for raster). What collection of GDAL drivers are included
     53  by an installer or package of PostGIS that provides GDAL ?  and what GEOS version? 
     54  Opinions vary on this situation. User surveys and use case based testing are one
     55  option to understand field experience by users.
     56
     57
     58
     59Misc Background
     60
     61  GDAL
     62   GDAL is a suite of tools, including gdal raster tools, and ogr vector tools
     63   long ago GEOS was optional to build GDAL, and was used only in ogr vector tools
     64   in practice, ogr tools have required GEOS for some time (years)
     65   
     66   gdal the raster tool now uses GEOS in one place, quoting from #gdal
     67
     68  EvenR>        alg/gdalcutline.cpp needs GEOS for blend distance support
     69   
     70  QGis 2.0
     71   is coming out very soon. If there was a time to make a change, this is a good time
     72   to do that
     73
     74Linkage
     75
     76  For example on a work XUbuntu Linux machine, I get the following output:
     77
     78  $ldd /usr/lib/postgresql/9.2/lib/postgis-2.0.so | grep geos
     79        libgeos_c.so.1 => /usr/local/lib/libgeos_c.so.1 (0x00007f73b246c000)
     80        libgeos-3.3.9dev.so => /usr/local/lib/libgeos-3.3.9dev.so (0x00007f73b1569000)
     81
     82  $ldd `which qgis` | grep geos
     83    .... error output about gdal .so versioning
     84        libgeos_c.so.1 => /usr/local/lib/libgeos_c.so.1 (0x00007fd19145d000)
     85        libgeos-3.3.9dev.so => /usr/local/lib/libgeos-3.3.9dev.so (0x00007fd18da38000)
     86
     87  $ldd `which ogrinfo` | grep geos
     88        libgeos_c.so.1 => /usr/local/lib/libgeos_c.so.1 (0x00007fd19145d000)
     89        libgeos-3.3.9dev.so => /usr/local/lib/libgeos-3.3.9dev.so (0x00007fd18da38000)
     90
     91  $ldd `which gdalinfo` | grep geos
     92        libgeos_c.so.1 => /usr/local/lib/libgeos_c.so.1 (0x00007f0d60454000)
     93        libgeos-3.3.9dev.so => /usr/local/lib/libgeos-3.3.9dev.so (0x00007f0d5ca2f000)
     94
     95  actual libgeos, has naming like this..
     96
     97  libgeos.so -> libgeos-3.3.9dev.so
     98 
     99
     100My own geos libs on XUbuntu at the moment:
     101
     102dbb@xps-8300:~$ ls -l /usr/local/lib/*geos*
     103-rwxr-xr-x 1 root root 18178990 Oct  1  2012 /usr/local/lib/libgeos-3.3.6dev.so
     104-rwxr-xr-x 1 root root 18199357 Jan 22 12:07 /usr/local/lib/libgeos-3.3.7.so
     105-rwxr-xr-x 1 root root 18183679 Mar  8 10:58 /usr/local/lib/libgeos-3.3.9dev.so
     106-rw-r--r-- 1 root root 49492572 Mar  8 10:58 /usr/local/lib/libgeos.a
     107-rw-r--r-- 1 root root  2194792 Mar  8 10:58 /usr/local/lib/libgeos_c.a
     108-rwxr-xr-x 1 root root      979 Mar  8 10:58 /usr/local/lib/libgeos_c.la
     109lrwxrwxrwx 1 root root       18 Mar  8 10:58 /usr/local/lib/libgeos_c.so -> libgeos_c.so.1.7.9
     110lrwxrwxrwx 1 root root       18 Mar  8 10:58 /usr/local/lib/libgeos_c.so.1 -> libgeos_c.so.1.7.9
     111-rwxr-xr-x 1 root root  1030668 Oct  1  2012 /usr/local/lib/libgeos_c.so.1.7.6
     112-rwxr-xr-x 1 root root  1030668 Jan 22 12:07 /usr/local/lib/libgeos_c.so.1.7.7
     113-rwxr-xr-x 1 root root  1029963 Mar  8 10:58 /usr/local/lib/libgeos_c.so.1.7.9
     114-rwxr-xr-x 1 root root      956 Mar  8 10:58 /usr/local/lib/libgeos.la
     115lrwxrwxrwx 1 root root       19 Mar  8 10:58 /usr/local/lib/libgeos.so -> libgeos-3.3.9dev.so