Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

Merge remote-tracking branch 'upstream/master'

  • Loading branch information...
commit ae72e26164d3c1e717a515269da39ff0a3773ef6 2 parents fe652b2 + 82905e6
@avlee authored
Showing with 14,278 additions and 7,233 deletions.
  1. +10 −1 .gitignore
  2. +58 −57 AUTHORS.md
  3. +0 −483 CHANGELOG
  4. +699 −0 CHANGELOG.md
  5. +11 −29 INSTALL.md
  6. +36 −6 Makefile
  7. +303 −275 SConstruct
  8. +24 −35 bindings/python/build.py
  9. +601 −147 bindings/python/mapnik/__init__.py
  10. +103 −103 bindings/python/mapnik/printing.py
  11. +50 −0 bindings/python/mapnik_building_symbolizer.cpp
  12. +0 −1  bindings/python/mapnik_color.cpp
  13. +0 −1  bindings/python/mapnik_coord.cpp
  14. +5 −2 bindings/python/mapnik_datasource.cpp
  15. +65 −16 bindings/python/mapnik_datasource_cache.cpp
  16. +0 −1  bindings/python/mapnik_envelope.cpp
  17. +10 −4 bindings/python/mapnik_expression.cpp
  18. +13 −4 bindings/python/mapnik_feature.cpp
  19. +4 −3 bindings/python/mapnik_featureset.cpp
  20. +1 −1  bindings/python/mapnik_font_engine.cpp
  21. +0 −10 bindings/python/mapnik_fontset.cpp
  22. +0 −1  bindings/python/mapnik_gamma_method.cpp
  23. +119 −16 bindings/python/mapnik_geometry.cpp
  24. +15 −2 bindings/python/mapnik_grid.cpp
  25. +1 −2  bindings/python/mapnik_grid_view.cpp
  26. +28 −7 bindings/python/mapnik_image.cpp
  27. +0 −1  bindings/python/mapnik_image_view.cpp
  28. +0 −68 bindings/python/mapnik_inmem_metawriter.cpp
  29. +71 −17 bindings/python/mapnik_layer.cpp
  30. +13 −14 bindings/python/mapnik_line_pattern_symbolizer.cpp
  31. +17 −15 bindings/python/mapnik_line_symbolizer.cpp
  32. +71 −0 bindings/python/mapnik_logger.cpp
  33. +37 −148 bindings/python/mapnik_map.cpp
  34. +76 −32 bindings/python/mapnik_markers_symbolizer.cpp
  35. +1 −2  bindings/python/mapnik_palette.cpp
  36. +4 −3 bindings/python/mapnik_parameters.cpp
  37. +5 −44 bindings/python/mapnik_point_symbolizer.cpp
  38. +16 −38 bindings/python/mapnik_polygon_pattern_symbolizer.cpp
  39. +13 −38 bindings/python/mapnik_polygon_symbolizer.cpp
  40. +1 −1  bindings/python/mapnik_proj_transform.cpp
  41. +1 −2  bindings/python/mapnik_projection.cpp
  42. +107 −117 bindings/python/mapnik_python.cpp
  43. +17 −6 bindings/python/mapnik_query.cpp
  44. +3 −1 bindings/python/mapnik_raster_colorizer.cpp
  45. +13 −57 bindings/python/mapnik_raster_symbolizer.cpp
  46. +3 −105 bindings/python/mapnik_rule.cpp
  47. +52 −0 bindings/python/mapnik_scaling_method.cpp
  48. +26 −46 bindings/python/mapnik_shield_symbolizer.cpp
  49. +32 −59 bindings/python/mapnik_stroke.cpp
  50. +37 −39 bindings/python/mapnik_style.cpp
  51. +9 −12 bindings/python/mapnik_svg.hpp
  52. +9 −1 bindings/python/mapnik_symbolizer.cpp
  53. +437 −21 bindings/python/mapnik_text_placement.cpp
  54. +0 −262 bindings/python/mapnik_text_symbolizer.cpp
  55. +109 −0 bindings/python/mapnik_threads.hpp
  56. +3 −7 bindings/python/mapnik_value_converter.hpp
  57. +0 −1  bindings/python/mapnik_view_transform.cpp
  58. +0 −1  bindings/python/python_cairo.cpp
  59. +472 −0 bindings/python/python_grid_utils.cpp
  60. +16 −409 bindings/python/python_grid_utils.hpp
  61. +36 −1 bindings/python/python_optional.hpp
  62. +68 −0 boost/geometry/extensions/index/rtree/helpers.hpp
  63. +774 −0 boost/geometry/extensions/index/rtree/rtree.hpp
  64. +253 −0 boost/geometry/extensions/index/rtree/rtree_leaf.hpp
  65. +493 −0 boost/geometry/extensions/index/rtree/rtree_node.hpp
  66. +263 −0 boost/gil/extension/toolbox/hsl.hpp
  67. +231 −0 boost/gil/extension/toolbox/hsv.hpp
  68. +1 −1  configure
  69. +0 −2  demo/c++/Makefile
  70. +5 −7 demo/c++/build.py
  71. +19 −15 demo/c++/rundemo.cpp
  72. +0 −2  demo/python/README.txt
  73. +4 −2 demo/python/rundemo.py
  74. +23 −0 demo/simple-renderer/render.py
  75. +2 −2 demo/test/charplacement.py
  76. +2 −2 demo/test/displacement.py
  77. +2 −2 demo/test/overlap.py
  78. +2 −2 demo/test/textspacing.py
  79. +0 −1  demo/viewer/about_dialog.cpp
  80. +0 −1  demo/viewer/about_dialog.hpp
  81. +1 −1  demo/viewer/build.py
  82. +0 −1  demo/viewer/info_dialog.cpp
  83. +0 −1  demo/viewer/info_dialog.hpp
  84. +0 −1  demo/viewer/layer_info_dialog.cpp
  85. +0 −1  demo/viewer/layer_info_dialog.hpp
  86. +0 −1  demo/viewer/layerdelegate.cpp
  87. +0 −1  demo/viewer/layerdelegate.hpp
  88. +3 −4 demo/viewer/layerlistmodel.cpp
  89. +2 −1  demo/viewer/layerlistmodel.hpp
  90. +0 −1  demo/viewer/layerwidget.cpp
  91. +0 −1  demo/viewer/layerwidget.hpp
  92. +47 −41 demo/viewer/main.cpp
  93. +30 −1 demo/viewer/mainwindow.cpp
  94. +5 −1 demo/viewer/mainwindow.hpp
  95. +166 −26 demo/viewer/mapwidget.cpp
  96. +15 −2 demo/viewer/mapwidget.hpp
  97. +0 −1  demo/viewer/styles_model.cpp
  98. +4 −1 demo/viewer/styles_model.hpp
  99. +4 −11 demo/viewer/viewer.pro
  100. +11 −3 deps/agg/build.py
  101. +4 −2 deps/agg/include/agg_basics.h
  102. +4 −3 deps/agg/include/agg_conv_transform.h
  103. +613 −351 deps/agg/include/agg_pixfmt_rgba.h
  104. +63 −35 deps/agg/include/agg_renderer_base.h
  105. +175 −150 deps/agg/include/agg_renderer_scanline.h
  106. +2 −2 deps/agg/include/agg_rendering_buffer.h
  107. +14 −31 deps/agg/include/agg_span_image_filter_rgba.h
  108. +5 −4 deps/agg/include/agg_trans_affine.h
  109. +147 −0 deps/agg/src/agg_pixfmt_rgba.cpp
  110. +1 −0  deps/agg/src/agg_trans_affine.cpp
  111. +24 −5 docs/contributing.markdown
  112. +10 −9 fonts/build.py
  113. +19 −0 include/build.py
  114. +138 −0 include/mapnik/agg_helpers.hpp
  115. +38 −24 include/mapnik/agg_renderer.hpp
  116. +0 −45 include/mapnik/arrow.hpp
  117. +23 −0 include/mapnik/attribute.hpp
  118. +50 −29 include/mapnik/attribute_collector.hpp
  119. +11 −6 include/mapnik/attribute_descriptor.hpp
  120. +99 −0 include/mapnik/boolean.hpp
  121. +15 −4 include/mapnik/box2d.hpp
  122. +4 −4 include/mapnik/building_symbolizer.hpp
  123. +26 −20 include/mapnik/cairo_renderer.hpp
  124. +15 −2 include/mapnik/char_info.hpp
  125. +35 −25 include/mapnik/color.hpp
  126. +3 −85 include/mapnik/color_factory.hpp
  127. +0 −2  include/mapnik/config.hpp
  128. +14 −16 include/mapnik/config_error.hpp
  129. +309 −169 include/mapnik/css_color_grammar.hpp
  130. +104 −0 include/mapnik/css_color_grammar_def.hpp
  131. +0 −420 include/mapnik/css_color_grammar_deprecated.hpp
  132. +40 −334 include/mapnik/ctrans.hpp
  133. +29 −27 include/mapnik/datasource.hpp
  134. +14 −14 include/mapnik/datasource_cache.hpp
  135. +321 −0 include/mapnik/debug.hpp
  136. +39 −24 include/mapnik/enumeration.hpp
  137. +46 −0 include/mapnik/expression.hpp
  138. +10 −0 include/mapnik/expression_evaluator.hpp
  139. +18 −133 include/mapnik/expression_grammar.hpp
  140. +25 −20 include/mapnik/expression_node.hpp
  141. +26 −1 include/mapnik/expression_string.hpp
  142. +1 −1  include/mapnik/factory.hpp
  143. +47 −17 include/mapnik/feature.hpp
  144. +22 −5 include/mapnik/feature_kv_iterator.hpp
  145. +2 −1  include/mapnik/feature_layer_desc.hpp
  146. +1 −11 include/mapnik/feature_style_processor.hpp
  147. +628 −0 include/mapnik/feature_style_processor_impl.hpp
  148. +23 −4 include/mapnik/feature_type_style.hpp
  149. +0 −35 include/mapnik/fill.hpp
  150. +2 −43 include/mapnik/filter_factory.hpp
  151. +69 −32 include/mapnik/font_engine_freetype.hpp
  152. +1 −0  include/mapnik/font_set.hpp
  153. +58 −0 include/mapnik/formatting/base.hpp
  154. +58 −0 include/mapnik/formatting/expression_format.hpp
  155. +59 −0 include/mapnik/formatting/format.hpp
  156. +47 −0 include/mapnik/formatting/list.hpp
  157. +57 −0 include/mapnik/formatting/registry.hpp
  158. +46 −0 include/mapnik/formatting/text.hpp
  159. +0 −51 include/mapnik/gamma.hpp
  160. +0 −1  include/mapnik/gamma_method.hpp
  161. +227 −3 include/mapnik/geom_util.hpp
  162. +22 −268 include/mapnik/geometry.hpp
  163. +3 −3 include/mapnik/gradient.hpp
  164. +9 −94 include/mapnik/graphics.hpp
  165. +20 −87 include/mapnik/grid/grid.hpp
  166. +285 −0 include/mapnik/grid/grid_marker_helpers.hpp
  167. +137 −0 include/mapnik/grid/grid_pixel.hpp
  168. +6 −0 include/mapnik/grid/grid_pixfmt.hpp
  169. +0 −1  include/mapnik/grid/grid_rasterizer.hpp
  170. +22 −20 include/mapnik/grid/grid_renderer.hpp
  171. +0 −1  include/mapnik/grid/grid_rendering_buffer.hpp
  172. +13 −5 include/mapnik/grid/grid_util.hpp
  173. +8 −10 include/mapnik/grid/grid_view.hpp
  174. +85 −33 include/mapnik/hextree.hpp
  175. +6 −4 include/mapnik/hit_test_filter.hpp
  176. +36 −120 include/mapnik/image_compositing.hpp
  177. +497 −0 include/mapnik/image_filter.hpp
  178. +48 −0 include/mapnik/image_filter_grammar.hpp
  179. +157 −0 include/mapnik/image_filter_types.hpp
  180. +4 −4 include/mapnik/image_reader.hpp
  181. +83 −0 include/mapnik/image_scaling.hpp
  182. +28 −64 include/mapnik/image_util.hpp
  183. +2 −0  include/mapnik/image_view.hpp
  184. +37 −0 include/mapnik/internal/dump_xml.hpp
  185. +127 −0 include/mapnik/json/feature_collection_grammar.hpp
  186. +56 −0 include/mapnik/json/feature_collection_parser.hpp
  187. +243 −0 include/mapnik/json/feature_generator_grammar.hpp
  188. +139 −0 include/mapnik/json/feature_grammar.hpp
  189. +84 −0 include/mapnik/json/geojson_generator.hpp
  190. +277 −0 include/mapnik/json/geometry_generator_grammar.hpp
  191. +132 −0 include/mapnik/json/geometry_grammar.hpp
  192. +56 −0 include/mapnik/json/geometry_parser.hpp
  193. +3 −3 include/mapnik/label_collision_detector.hpp
  194. +27 −18 include/mapnik/layer.hpp
  195. +0 −38 include/mapnik/libxml2_loader.hpp
  196. +22 −4 include/mapnik/line_symbolizer.hpp
  197. +2 −1  include/mapnik/load_map.hpp
  198. +7 −78 include/mapnik/map.hpp
  199. +5 −5 include/mapnik/mapped_memory_cache.hpp
  200. +30 −15 include/mapnik/marker.hpp
  201. +16 −15 include/mapnik/marker_cache.hpp
  202. +403 −0 include/mapnik/marker_helpers.hpp
  203. +225 −178 include/mapnik/markers_placement.hpp
  204. +26 −26 include/mapnik/markers_symbolizer.hpp
  205. +7 −5 include/mapnik/memory_featureset.hpp
  206. +0 −158 include/mapnik/metawriter.hpp
  207. +0 −54 include/mapnik/metawriter_factory.hpp
  208. +0 −119 include/mapnik/metawriter_inmem.hpp
  209. +0 −152 include/mapnik/metawriter_json.hpp
  210. +4 −4 include/mapnik/octree.hpp
  211. +374 −0 include/mapnik/offset_converter.hpp
  212. +14 −10 include/mapnik/palette.hpp
  213. +3 −2 include/mapnik/parse_path.hpp
  214. +48 −0 include/mapnik/parse_transform.hpp
  215. +6 −39 include/mapnik/path_expression_grammar.hpp
  216. +34 −0 include/mapnik/pixel_position.hpp
  217. +79 −15 include/mapnik/placement_finder.hpp
  218. +2 −2 include/mapnik/plugin.hpp
  219. +5 −5 include/mapnik/png_io.hpp
  220. +1 −1  include/mapnik/point_symbolizer.hpp
  221. +0 −1  include/mapnik/polygon_pattern_symbolizer.hpp
  222. +1 −3 include/mapnik/polygon_symbolizer.hpp
  223. +10 −12 include/mapnik/pool.hpp
  224. +62 −0 include/mapnik/processed_text.hpp
  225. +1 −404 include/mapnik/ptree_helpers.hpp
  226. +10 −6 include/mapnik/quad_tree.hpp
  227. +17 −14 include/mapnik/query.hpp
  228. +2 −1  include/mapnik/raster.hpp
  229. +0 −1  include/mapnik/raster_colorizer.hpp
  230. +36 −15 include/mapnik/raster_symbolizer.hpp
Sorry, we could not display the entire diff because too many files (1,462) changed.
View
11 .gitignore
@@ -39,7 +39,16 @@ tests/data/sqlite/*index
demo/c++/cairo-demo.pdf
demo/c++/cairo-demo.png
demo/c++/cairo-demo256.png
+demo/c++/cairo-demo.svg
+demo/c++/demo.tif
demo/c++/demo.jpg
demo/c++/demo.png
demo/c++/demo256.png
-
+demo/viewer/Makefile
+demo/viewer/Makefile.Debug
+demo/viewer/Makefile.Release
+demo/viewer/release/
+demo/viewer/ui_about.h
+demo/viewer/ui_info.h
+demo/viewer/ui_layer_info.h
+tests/cpp_tests/*-bin
View
115 AUTHORS.md
@@ -2,60 +2,61 @@
Mapnik is written by Artem Pavlenko with contributions from:
-Andy Allen
-AJ Ashton
-Matt Amos
-Lucio Asnaghi
-Justin Bronn
-Christopher Brown
-Jon Burgess
-Toby Collet
-Robert Coup
-Berteun Damman
-Craig de Stigter
-Jean-Francois Doyon
-David Eastcott
-Krzysztof Godlewski
-Beau Gunderson
-John Hague
-Dominic Hargreaves
-Aubrey Holland
-Tom Hughes
-Konstantin Käfer
-Mak Kolybabi
-Peter Körner
-Hermann Kraus
-Stella Laurenzo
-David Leaver
-Carlos López
-Dennis Luxen
-Tom MacWright
-Michal Migurski
-Andrii Mishkovskyi
-Ben Moores
-Dražen Odobašić
-Cameron Patrick
-Igor Podolskiy
-Reid Priedhorsky
-Brian Quinion
-Marcin Rudowski
-Christopher Schmidt
-Andreas Schneider
-Vincent Schut
-Ehud Shabtai
-David Siegel
-Steve Singer
-Paul Smith
-Vince Spader
-Philipp Spitzer
-Dane Springmeyer
-Dave Stubbs
-River Tarnell
-Oliver Tonnhofer
-Alberto Valverde
-Martijn van Oosterhout
-Andreas Volz
-Lennard voor den Dag
-Shaun Walbridge
-Nick Whitelegg
-Leslie Wu
+* Andy Allen
+* AJ Ashton
+* Matt Amos
+* Lucio Asnaghi
+* Justin Bronn
+* Christopher Brown
+* Jon Burgess
+* Toby Collet
+* Robert Coup
+* Berteun Damman
+* Craig de Stigter
+* Jean-Francois Doyon
+* David Eastcott
+* Krzysztof Godlewski
+* Beau Gunderson
+* John Hague
+* Dominic Hargreaves
+* Aubrey Holland
+* Tom Hughes
+* Konstantin Käfer
+* Mak Kolybabi
+* Peter Körner
+* Hermann Kraus
+* Stella Laurenzo
+* David Leaver
+* Carlos López
+* Dennis Luxen
+* Tom MacWright
+* Michal Migurski
+* Andrii Mishkovskyi
+* Ben Moores
+* Dražen Odobašić
+* Cameron Patrick
+* Igor Podolskiy
+* Reid Priedhorsky
+* Brian Quinion
+* Marcin Rudowski
+* Christopher Schmidt
+* Andreas Schneider
+* Vincent Schut
+* Ehud Shabtai
+* David Siegel
+* Steve Singer
+* Paul Smith
+* Vince Spader
+* Philipp Spitzer
+* Dane Springmeyer
+* Dave Stubbs
+* River Tarnell
+* Oliver Tonnhofer
+* Alberto Valverde
+* Martijn van Oosterhout
+* Andreas Volz
+* Lennard voor den Dag
+* Shaun Walbridge
+* Rich Wareham
+* Nick Whitelegg
+* Leslie Wu
View
483 CHANGELOG
@@ -1,483 +0,0 @@
-# $Id: CHANGELOG 776 2008-12-7 01:30:27Z dane $
-
-----------------
-Mapnik Changelog
-----------------
-
-A simple log of core changes affecting Mapnik usage.
-
-Developers: Please commit along with changes.
-
-For a complete change history, see the SVN log.
-
-
-Mapnik 2.1.0
-------------
-
-- Removed PointDatasource - use more robust MemoryDatasource instead (#1032)
-
-- SQLite - Added support for !intersects! token in sql subselects (#809) allow custom positioning of rtree spatial filter.
-
-- New CSV plugin - reads tabular files - autodetecting geo columns, newlines, and delimiters. Uses in-memory featureset for fast rendering and is not designed for large files (#902)
-
-- Fixed bug in shield line placement when dx/dy are used to shift the label relative to the placement point (Matt Amos) (#908)
-
-- Added <layer_by_sql> parameter in OGR plugin to select a layer by SQL query (besides name or index): see http://www.gdal.org/ogr/ogr_sql.html for specifications (kunitoki) (#472)
-
-- Added suppport for output maps as tiff files (addresses #967 partially)
-
-
-Mapnik 2.0.0
-------------
-
-- Add minimum-path-length property to text_symbolizer to allow labels to be placed only on lines of a certain length (#865)
-
-- Add support for png quantization using fixed palettes (#843)
-
-- Add AlsoFilter functionality - http://trac.mapnik.org/wiki/AlsoFilter
-
-- SQLite Plugin: optimize i/o using shared cache and no mutexes (#797)
-
-- Directly link input plugins to libmapnik to avoid having to set dlopen flags from binding languages (#790)
-
-- Throw an error during registration for fonts which Freetype2 does not report a family or style name (r2985).
-
-- Fixed quoting syntax for "table"."attribute" in PostGIS plugin (previously if table aliases were used quoting like "table.attribute" would cause query failure) (r2979).
-
-- Added the ability to control the PostGIS feature id by suppling a key_field to reference and integer attribute name (r2979).
-
-- Added alternative, more robust proj_transform functions to project a bbox using more points than just the four
- corners to ensure an optimally sized bbox despite proj4 out of bounds conditions. (olt)
-
-- Added map.base parameter that can be set to control where files with relative paths should be interpreted
- from when a map is loaded from a string or saved to a string. It defaults to an empty string which means
- that the base path will be the current working directory of the mapnik process. When a stylesheet is read
- from a file that files directory is used. And a custom value can still be passed as an argument to
- load_map_from_string().
-
-- Added python function 'render_grid' to allow conversion of grid buffer to python object containing list of grid
- pixels, list of keys, and a and dictionary of feature attributes.
-
-- Added new rendering backend, grid_renderer, that collects the attributes of rendered features and
- burns their ids into a grid buffer.
-
-- Added optional 'maximum-extent' parameter to map object. If set will be used, instead of combined
- layer extents, for return value of map.zoom_all(). Useful in cases where the combined layer extents
- cannot possibly be projected into the map srs or the user wishes to control map bounds without
- modifying the extents of each layer.
-
-- Support for NODATA values with grey and rgb images in GDAL plugin (#727)
-
-- Print warning if invalid XML property names are used (#110)
-
-- Made XML property names use consistent dashes, never underscores (#644)
-
-- Added support for drawing only first matching rule using filter-mode="first" in Style (#706)
-
-- Added support to PointSymbolizer ('ignore_placement') for skipping adding placed points to collision detector (#564)
-
-- Added ability to register fonts within XML using Map level 'font_directory' parameter (#168)
-
-- TextSymbolizer: Change text_convert to text_transform to better match css naming (r2211)
-
-- Shapefile Plugin: Throw error if attribute name is requested that does not exist (#604)
-
-- Upgraded to the latest proj4 string literal for EPSG:4326 (WGS84) as global default projection (#333)
-
-- Added 'mapnik_version_from_string()' function in python bindings to easily convert string representation
- of version number to the integer format used in 'mapnik/version.hpp'. e.g. '0.7.1' --> 701.
-
-- Added xinclude (http://www.w3.org/TR/xinclude/) support to libxml2-based xml parser (oldtopos) (#567)
-
-- Optimized rendering speeds by avoiding locking in the projection code (r2063) (r2713)
-
-- Added support for setting global alignment of polygon pattern fills (#203)
-
-- Added support for choosing OGR layer by index number using 'layer_by_index' parameter (r1904)
-
-- Added support for fractional halo widths (using FT Stroker) (#93)
-
-- Added support for reading jpeg images (in addition to png/tiff) for image symbolizers (#518)
-
-- Made libjpeg dependency optional at compile time and added mapnik2.has_jpeg() method to check for support in python (#545).
-
-- Fixed reading of PostGIS data on Big Endian systems (#515)
-
-- PostGIS: Added better support for alternative schemas (#500)
-
-- AGG Renderer - Enforced default gamma function on all symbolizers to ensure proper antialiasing
- even when gamma is modified on the PolygonSymbolizer. (#512)
-
-- Added ability to read pre 2.0.0 stylesheets, but prints a warning for deprecated syntax (r1592, #501)
-
-- Rasterlite Plugin: Experimental support for Rasterlite, to practically use sqlite database with wavelet compressed rasters (#469)
-
-- PNG: fixed png256 for large images and some improvements to reduce color corruptions (#522)
-
-- Implement MarkersSymbolizer in Cairo render and improve the markers placement finder. (#553)
-
-
-Mapnik 0.7.2 Release
---------------------
-
-- Added forward compatibility for Mapnik 2.0 XML syntax (https://trac.mapnik.org/wiki/Mapnik2/Changes)
-
-- Build fixes to ensure boost_threads are not used unless THREADING=multi build option is used
-
-- Fixes for the clang compiler
-
-- Support for latest libpng (>= 1.5.x) (r2999)
-
-- Fixes to the postgres pool
-
-- Fix for correct transparency levels in png256/png8 output (#540)
-
-- Various build system fixes, especially for gcc compiler on open solaris.
-
-- When plugins are not found, report the searched directories (#568)
-
-- Improved font loading support (#559)
-
-- Fix to shapeindex for allowing indexing of directory of shapefiles like `shapeindex dir/*shp`
-
-- Fixed handling of null and multipatch shapes in shapefile driver - avoiding inf loop (#573)
-
-- Fixed raster alpha blending (#589,#674)
-
-- Enhanced support for faster reprojection if proj >= 4.8 is used (#575)
-
-- Allow for late-binding of datasources (#622)
-
-- Fix to OSM plugin to avoid over-caching of data (#542)
-
-- Various fixes to sqlite, ogr, and occi driver backported from trunk.
-
-- Ensured that '\n' triggers linebreaks in text rendering (#584)
-
-- Support for boost filesystem v3
-
-- Fixes to cairo renderer to avoid missing images (r2526)
-
-- Fixed reading of label_position_tolerance on text_symbolizer and height for building_symbolizer
-
-
-Mapnik 0.7.0 Release
---------------------
-
-(Packaged from r1574)
-
-- Core: Fixed linking to external libagg (r1297,r1299)
-
-- Core: Completed full support for PPC (Big endian) architectures (r1352 -> r1357)
-
-- Gdal Plugin: Added support for Gdal overviews, enabling fast loading of > 1GB rasters (#54)
-
- * Use the gdaladdo utility to add overviews to existing GDAL datasets
-
-- PostGIS: Added an optional 'geometry_table' parameter. The 'geometry_table' used by Mapnik to look up
- metadata in the geometry_columns and calculate extents (when the 'geometry_field' and 'srid' parameters
- are not supplied). If 'geometry_table' is not specified Mapnik will attempt to determine the name of the
- table to query based on parsing the 'table' parameter, which may fail for complex queries with more than
- one 'from' keyword. Using this parameter should allow for existing metadata and table indexes to be used
- while opening the door to much more complicated subqueries being passed to the 'table' parameter without
- failing (#260, #426).
-
-- PostGIS Plugin: Added optional 'geometry_field' and 'srid' parameters. If specified these will allow
- Mapnik to skip several queries to try to determine these values dynamically, and can be helpful to avoid
- possible query failures during metadata lookup with complex subqueries as discussed in #260 and #436, but
- also solvable by specifying the 'geometry_table' parameter. (r1300,#376)
-
-- PostGIS: Added an optional 'extent_from_subquery' parameter that when true (while the 'extent' parameter is
- not provided and 'estimate_extent' is false) will direct Mapnik to calculate the extent upon the exact table
- or sql provided in the 'table' parameter. If a sub-select is used for the table parameter then this will,
- in cases where the subquery limits results, provide a faster and more accurate layer extent. It will have
- no effect if the 'table' parameter is simply an existing table. This parameter is false by default. (#456)
-
-- PostGIS Plugin: Added '!bbox!' token substitution ability in sql query string. This opens the door for various
- complex queries that may aggregate geometries to be kept fast by allowing proper placement of the bbox
- query to be used by indexes. (#415)
-
- * Pass the bbox token inside a subquery like: !bbox!
-
- * Valid Usages include:
-
- <Parameter name="table">
- (Select ST_Union(geom) as geom from table where ST_Intersects(geometry,!bbox!)) as map
- </Parameter>
-
- <Parameter name="table">
- (Select * from table where geom &amp;&amp; !bbox!) as map
- </Parameter>
-
-- PostGIS Plugin: Added 'scale_denominator' substitution ability in sql query string (#415/#465)
-
- * Pass the scale_denominator token inside a subquery like: !scale_denominator!
-
- * e.g. (Select * from table where field_value > !scale_denominator!) as map
-
-- PostGIS Plugin: Added support for quoted table names (r1454) (#393)
-
-- PostGIS: Add a 'persist_connection' option (default true), that when false will release
- the idle psql connection after datasource goes out of scope (r1337) (#433,#434)
-
-- PostGIS: Added support for BigInt (int8) postgres type (384)
-
-- PostGIS Plugin: Throw and report errors if SQL execution fails (r1291) (#363, #242)
-
-- PostGIS Plugin: Fixed problem in conversion of long numbers to strings (r1302,1303)
-
-- PostGIS Plugin: Added missing support for BigInt(int8) postgres datatypes (r1250) (#384)
-
-- OGR Plugin: Added support for reading multipoint features (#458)
-
-- Shape Plugin: Fixed bug in file extension stripping (#413)
-
-- Shape Plugin: Fixed missing compiler flags that causes crashing on newer g++ versions (#436)
-
-- PNG: Fixed problem with garbled/striped png256 output along sharp edges(#416,#445,#447,#202)
-
-- PNG: Added support for semi-transparency in png256 output (#477,#202)
-
-- PolygonSymbolizer: Added 'gamma' attribute to allow for dilation of polygon edges - a solution
- to gap artifacts or "ghost lines" between adjacent polygons and allows for slight sharpening of
- the edges of non overlapping polygons. Accepts any values but 0-1 is the recommended range.
-
-- TextSymbolizer: Large set of new attributes: 'text_transform', 'line_spacing', 'character_spacing',
- 'wrap_character', 'wrap_before', 'horizontal_alignment', 'justify_alignment', and 'opacity'.
-
- * More details at changesets: r1254 and r1341
-
-- SheildSymbolizer: Added special new attributes: 'unlock_image', 'VERTEX' placement, 'no_text' and many
- attributes previously only supported in the TextSymbolizer: 'allow_overlap', 'vertical_alignment',
- 'horizontal_alignment', 'justify_alignment', 'wrap_width', 'wrap_character', 'wrap_before', 'text_transform',
- 'line_spacing', 'character_spacing', and 'opacity'.
-
- * More details at changeset r1341
-
-- XML: Added support for using CDATA with libxml2 parser (r1364)
-
-- XML: Fixed memory leak in libxml2 implementation (#473)
-
-- XML: Added function to serialize map to string, called 'mapnik.save_map_to_string()' (#396)
-
-- XML: Added parameter to <Map> called 'minimum_version' to allow for enforcing the minimum Mapnik version
- needed for XML features used in the mapfiles. Uses Major.Minor.Point syntax, for example
- <Map minimum_version="0.6.1"> would throw an error if the user is running Mapnik less than 0.6.1.
-
-- XML: Added support for relative paths when using entities and 'mapnik.load_map_from_string()' (#440)
-
-- XML: Made width and height optional for symbolizers using images (r1543)
-
-- XML: Ensured that default values for layers are not serialized in save_map() (r1366)
-
-- XML: Added missing serialization of PointSymbolizer 'opacity' and 'allow_overlap' attributes (r1358)
-
-- XML: Default text vertical_alignment now dependent on dy (#485, r1527)
-
-- Python: Exposed ability to write to Cairo formats using 'mapnik.render_to_file()' and without pycairo (#381)
-
-- Python: Fixed potential crash if pycairo support is enabled but python-cairo module is missing (#392)
-
-- Python: Added 'mapnik.has_pycairo()' function to test for pycairo support (r1278) (#284)
-
-- Python: Added 'mapnik.register_plugins()' and 'mapnik.register_fonts()' functions (r1256)
-
-- Python: Pickling support for point_symbolizer (r1295) (#345)
-
-- Python: Ensured mapnik::config_errors now throw RuntimeError exception instead of UserWarning exception (#442)
-
-- Filters: Added support for '!=' as an alias to '<>' for not-equals filters (avoids &lt;&gt;) (r1326) (#427)
-
-- SCons: Improved boost auto-detection (r1255,r1279)
-
-- SCons: Fixed support for JOBS=N and FAST=True to enable faster compiling (r1440)
-
-- SCons: Ensured that -h or --help will properly print help on custom Mapnik options before a user
- has been able to properly run 'configure'. (r1514)
-
-- SCons: Added ability to link to custom icu library name using ICU_LIB_NAME (r1414)
-
-- SCons: Improved reliability of python linking on OSX (#380)
-
-- Fonts: Added unifont to auto-installed fonts, which is used by the OSM styles as a fallback font (r1328)
-
-
-
-Mapnik 0.6.1 Release
---------------------
-
-(Packaged from r1247)
-
-- Plugins: expose list of registered plugins as a 'plugin_names()' method of DatasourceCache (r1180)
-
-- XML: Fixed serialization and parsing bugs related to handling of integers and Enums (#328,#353)
-
-- SCons: Added the ability to set the PKG_CONFIG_PATH env setting (#217)
-
-- SCons: Improved linking to only required libraries for libmapnik (#371)
-
-- Shape Plugin: Added compile time flag to allow disabling the use of memory mapped files (r1213) (#342)
-
-- Core: Improved support for PPC (Big endian) architectures (r1198 -> r1213)
-
-- Scons: Improved auto-detection of boost libs/headers (r1200) (#297)
-
-- Plugins: Exposed list of available/registered plugins (r1180) (#246)
-
-- SCons: Improve build support for SunCC (patches from River Tarnell) (r1168, r1169)
-
-- Python: Pickling support for text_symbolizer (r1164) (#345)
-
-- Python: Pickling support for proj_transform and view/coord_transform (r1163) (#345)
-
-- Python: Pickling support for parameters (r1162) (#345)
-
-- Python: Pickling support for stroke objects (r1161) (#345)
-
-- Python: Pickling support for line_symbolizer (r1160) (#345)
-
-- Python: Pickling support for projection objects (r1159) (#345)
-
-- Python: Pickling support for shield_symbolizer (r1158) (#345)
-
-- Python: Pickling support for polygon_symbolizer (r1157) (#345)
-
-- Python: Pickling support for query objects (r1156) (#345)
-
-- Python: Pickling support for pattern symbolizers (r1155) (#345)
-
-- Python: Pickling support for raster_symbolizer (r1154) (#345)
-
-- Python: Added 'mapnik.has_cairo()' function to test for cairo support (r1152) (#284)
-
-- Python: Exposed dash_array get method (r1151) (#317)
-
-- Python: Pickling support for Coord objects (#345)
-
-- GDAL Plugin: Added an experimental option to open files in 'shared mode' (r1143)
-
-- Python: Exposed RasterSymbolizer options in Python (r1139)
-
-- Plugins: Fixed support for non-file based sources in GDAL and OGR plugins (#336,#337)
-
-- Plugins: Formal inclusion of new plugin for Kismet server (r1127) (#293)
-
-- Python: Made access to features and featuresets more Pythonic (r1121) (#171,#280,#283)
-
-- XML: Ensured relative paths in XML are interpreted relative to XML file location (r1124) (#326)
-
-- XML: Added ability to serialize all default symbolizer values by passing third argument to save_map(m,'file.xml',True)(r1117) (#327)
-
-- Core: Added support for alpha transparency when writing to png256 (patch from Marcin Rudowski) (#202)
-
-- SCons: Ensured ABI compatibility information is embedded in libmapnik.dylib on Mac OS X (#322)
-
-- SCons: Ensured that the full 'install_name' path would be added to libmapnik.dylib on Mac OS X (#374)
-
-- Tests: Added testing framework in Python using nose (r1101-r1105)
-
-- Raster Plugin: Added a tile/bbox-based read policy for large (rasters width * height > 1024*1024 will be loaded in chunks) (r1089)
-
-- OGCServer: Made lxml dependency optional (r1085) (#303)
-
-- Rasters: Handle rounding to allow better alignment of raster layers (r1079) (#295)
-
-- AGG Renderer: Added option to control output JPEG quality (r1078) (#198)
-
-- Plugins: Fixed segfault in OGR Plugin with empty geometries (r1074) (#292)
-
-
-
-Mapnik 0.6.0 Release
---------------------
-
-(Packaged from r1066)
-
-- Python: Added support for aspect_fix_mode (r1013)
-
-- OGCServer Fixed axis-ordering for WMS 1.3.0 request (r1051) (#241)
-
-- Plugins: Added option to all plugins to support using a 'base' path argument (r1042)
-
-- Symbolizers: RasterSymbolizer now support composing modes for hillshading (r1027)
-
-- SCons: Added options to build the rundemo and pgsql2sqlite tools (r989)
-
-- OGCServer: Added content-length output (r986)
-
-- SCons: Replaced LIBS/INCLUDES options for postgres and gdal with pg_config and gdal-config (r977)
-
-- SCons: Created an optional configure stage (r973)
-
-- Python: Added further pickling/copy support to Map, Layers, Datasources, Styles,and Rules (r907,r913,r921)
-
-- Plugins: Added Sqlite driver for reading sqlite databases (r881)
-
-- Python: Exposed a number of properties for the Text Symbolizer (r869)
-
-- Plugins: PostGIS plugin now accepts multi-line queries (r862)
-
-- Filter parsing: Allow numbers in the filter field name.
- This allows for shapefiles with columns like '1970'.
-
-- Plugins: Added OGR driver for reading all OGR supported formats (kunitoki) (r836) (#170)
-
-- XML: Added serialization of Fontsets (r807)
-
-- XML: Added support for reading xml from a string (r806)
-
-- C++: renamed mapnik::Color to mapnik::color (r796)
-
-- Python: Made available the scale_denominator property from the map in c++ and python (r794)
-
-- Python: Added ability to resize map and clear all layers and styles from python (r793)
-
-- Python: Exposed Proj to/from transformation for projected coordinate systems (r792,r822) (#117)
-
-- Memory Datasource: Added support for dynamically adding Points to map using Point Datasource (r790)
-
-- XML: Added xml serialization for abstract, title, minzoom, maxzoom, and queryable attributes (r787)
-
-- Core: Transformation is now skipped if srs values match exactly (r777)
-
-- Symbolizers: 'min_distance' now honored for POINT placement using Text Symbolizer (r771)
-
-- Plugins: PostGIS plugin now accepts a geometry_field,record_limit, cursor_size options (r769,r872)
-
-- Python: Added ability to transform as a method on Coord and Envelope objects (r764)
-
-- Python: Added docstrings to the Layer object (r763)
-
-- Plugins: Loosened the type checking in Shapefile Plugin dbf reader (r762)
-
-- Fonts: Added support for Right-to-left Hebrew text (r749)
-
-- Core: Added a Map buffer parameter - helps to avoid cut labels at tile edges (r744)
-
-- Symbolizers: Added opacity support to Point Symbolizer (r743)
-
-- Symbolizers: Added support of using Points with Shield Symbolizer (r741)
-
-- Plugins: PostGIS plugin now accepts alternate schemas (r773)
-
-- Core: Added a Map aspect_fix_mode to ensure proper syncing of map dimensions and bbox (r705)
-
-- Fonts: Added support for fallback fonts (r704)
-
-- Cairo: Cairo support exposed in Python (r666)
-
-- Plugins: Added OSM plugin for reading directly from OSM data (r663)
-
-- Filters: Added support for boolean expressions (r660)
-
-- Python: Added ability to open Image32 files (r652)
-
-- Cairo: Cairo rendering support added (r656)
-
-- Core: Added unicode support based on ICU (r650)
-
-- Core: Added support for single and multi threaded variants of Mapnik (r632,r634)
-
-- Plugins: Use memory mapped files for reading shape file (r628)
-
-- Core: Use streams to write images (i/o refactor) (r628) (#15)
View
699 CHANGELOG.md
@@ -0,0 +1,699 @@
+# Mapnik Changelog
+
+A simple log of core changes affecting Mapnik usage.
+
+Developers: Please commit along with changes.
+
+For a complete change history, see the git log.
+
+## Future
+
+- Support for encoding `literal` postgres types as strings 69fb17cd3/#1466
+
+- Fixed zoom_all behavior when Map maximum-extent is provided. Previously maximum-extent was used outright but
+ now the combined layer extents will be again respected: they will be clipped to the maximum-extent if possible
+ and only when back-projecting fails for all layers will the maximum-extent be used as a fallback (#1473)
+
+## Mapnik 2.1.0
+
+Released Aug 23, 2012
+
+(Packaged from a25aac8)
+
+- Feature-level compositing (comp-op) for all symbolizers (except building) in AGG and Cairo renderers (#1409)
+
+- Style-level compositing (comp-op) (#1409) and style-level opacity for AGG renderer (#314)
+
+- New experimental framework for image manipulation called `image-filters` to allow things to be done across entire layer canvas like burring (#1412)
+
+- Support for recoloring stroke, fill, and opacity of SVG files (#1410 / #659)
+
+- Support for data-driven transform expressions (#664)
+
+- New support for offsetting geometries / parallel lines in line_symbolizer (#927/#1269)
+
+- New support for clipping geometries - now default enabled on all symbolizers (#1116)
+
+- Framework for chainable geometry transformations (called `vertex_converters`) so that you can do things like clip, smooth, and offset at the same time (#927)
+
+- WKT parsing now is more robust and supports multi-geometries (#745)
+
+- New support for outputting WKT/WKB/GeoJSON/SVG from mapnik.Geometry objects (#1411)
+
+- New experimental python datasource plugin (#1337)
+
+- New experimental geojson datasource plugin using in-memory rtree indexing (#1413)
+
+- Cairo rendering is now much more similiar to AGG rendering as cairo backend now supports `scale_factor` (#1280) and other fixed have landed (#1343, #1233, #1344, #1242, #687, #737, #1006, #1071)
+
+- mapnik::Feature objects and datasource plugins now use a `Context` to store attribute schemas to reduce the memory footprint of features (#834)
+
+- Added Stroke `miterlimit` (#786)
+
+- Python: exposed Map `background_image` (and aliased `background` to `background_color`)
+
+- Python: exposed BuildingSymbolizer
+
+- Support in the CSV plugin for reading JSON encoded geometries (#1392)
+
+- Increased grid encoding performance (#1315)
+
+- Added support for setting opacity dynamically on images in polygon pattern and markers symbolizers
+
+- Added support for filtering on a features geometry type, either `point`, `linestring`, `polygon`,
+ or `collection` using the expression keyword of `[mapnik::geometry_type]` (#546)
+
+- MarkersSymbolizer width and height moved to expressions (#1102)
+
+- PostGIS: Added `simplify_geometries` option - will trigger ST_Simplify on geometries before returning to Mapnik (#1179)
+
+- Improved error feedback for invalid values passed to map.query_point
+
+- Fixed rendering of thin svg lines (#1129)
+
+- Improved logging/debugging system with release logs and file redirection (https://github.com/mapnik/mapnik/wiki/Runtime-Logging) (#937 and partially #986, #467)
+
+- GDAL: allow setting nodata value on the fly (will override value if nodata is set in data) (#1161)
+
+- GDAL: respect nodata for paletted/colormapped images (#1160)
+
+- PostGIS: Added a new option called `autodetect_key_field` (by default false) that if true will
+ trigger autodetection of the table primary key allowing for feature.id() to represent
+ globally unique ids. This option has no effect if the user has not manually supplied the `key_field` option. (#804)
+
+- Cairo: Add full rendering support for markers to match AGG renderer functionality (#1071)
+
+- Fix Markers rendering so that ellipse height/width units are pixels (previously were unintentionally radii) (#1134)
+
+- Added `ignore-placement` attribute to markers-symbolizer (#1135)
+
+- Removed PointDatasource - use more robust MemoryDatasource instead (#1032)
+
+- SQLite - Added support for !intersects! token in sql subselects (#809) allow custom positioning of rtree spatial filter.
+
+- New CSV plugin - reads tabular files - autodetecting geo columns, newlines, and delimiters. Uses in-memory featureset for fast rendering and is not designed for large files (#902)
+
+- Fixed bug in shield line placement when dx/dy are used to shift the label relative to the placement point (Matt Amos) (#908)
+
+- Added <layer_by_sql> parameter in OGR plugin to select a layer by SQL query (besides name or index): see http://www.gdal.org/ogr/ogr_sql.html for specifications (kunitoki) (#472)
+
+- Added support for output maps as tiff files (addresses #967 partially)
+
+- Added support for justify-alignment=auto. This is the new default. (#1125)
+
+- Added support for grouped rendering using the `group-by` layer option: https://github.com/mapnik/mapnik/wiki/Grouped-rendering
+
+
+## Mapnik 2.0.2
+
+Released Aug 3, 2012
+
+(Packaged from adb2ec741)
+
+- Fixed handling of empty WKB geometries (#1334)
+
+- Fixed naming of `stroke-dashoffset` in save_map (cc3cd5f63f28)
+
+- Fixed support for boost 1.50 (8dea5a5fe239233)
+
+- Fixed TextSymbolizer placement in Cairo backend so it respects avoid-edges and minimum-padding across all renderers (#1242)
+
+- Fixed ShieldSymbolizer placement so it respects avoid-edges and minimum-padding across all renderers (#1242)
+
+- Rolled back change made in 2.0.1 to marker width/height meaning that Mapnik > 2.0.2 will stick to assuming width/heigh are radii for back compatibility with 2.0.0. The reverted change is seen below as "Fix Markers rendering so that ellipse height/width units are pixels (previously were unintentionally radii)". Issue tracking this is #1163
+
+- XML: Fixed to avoid throwing if a `<Parameters>` element is encountered (which is supported in >= 2.1.x)
+
+- Support for PostGIS 2.0 in the pgsql2sqlite command (e69c44e/47e5b3c)
+
+- Fixed reference counting of Py_None when returning null attributes from Postgres during UTFGrid encoding, which could cause a Fatal Python error: deallocating None (#1221)
+
+- Fixed possible breakage registering plugins via python if a custom PREFIX or DESTDIR was used (e.g. macports/homebrew) (#1171)
+
+- Fixed memory leak in the case of proj >= 4.8 and a projection initialization error (#1173)
+
+
+## Mapnik 2.0.1
+
+Released April 10, 2012
+
+(Packaged from 57347e9106)
+
+- Support for PostGIS 2.0 (#956,#1083)
+
+- Switched back to "libmapnik" and "import mapnik" rather than "mapnik2" (mapnik2 will still work from python) (#941)
+
+- Restored Python 2.5 compatibility (#904)
+
+- Fixed `mapnik-config --version` (#903)
+
+- Cairo: Add full rendering support for markers to match AGG renderer functionality (#1071)
+
+- Fix Markers rendering so that ellipse height/width units are pixels (previously were unintentially radii) (#1134)
+
+- Added `ignore-placement` attribute to markers-symbolizer (#1135)
+
+- Removed svn_revision info from mapnik-config and python bindings as git is now used
+
+- Removed OGCServer from core - now at https://github.com/mapnik/OGCServer (e7f6267)
+
+- Fixed SQLite open stability across platforms/versions (#854)
+
+- Workaround for boost interprocess compile error with recent gcc versions (#950,#1001,#1082)
+
+- Fix possible memory corruption when using hextree mode for png color reduction (#1087)
+
+- Fixed bug in shield line placement when dx/dy are used to shift the label relative to the placement point (Matt Amos) (#908)
+
+- Fix to avoid modifying a feature if an attribute is requested that does not exist (0f5ab18ed)
+
+- Fixed ability to save to jpeg format from python (7387afd9) (#896)
+
+
+## Mapnik 2.0.0
+
+Released September 26, 2011
+
+(Packaged from 5b4c20eab3)
+
+- Add minimum-path-length property to text_symbolizer to allow labels to be placed only on lines of a certain length (#865)
+
+- Add support for png quantization using fixed palettes (#843)
+
+- Add AlsoFilter functionality - https://github.com/mapnik/mapnik/wiki/AlsoFilter
+
+- SQLite Plugin: optimize i/o using shared cache and no mutexes (#797)
+
+- Directly link input plugins to libmapnik to avoid having to set dlopen flags from binding languages (#790)
+
+- Throw an error during registration for fonts which Freetype2 does not report a family or style name (r2985).
+
+- Fixed quoting syntax for "table"."attribute" in PostGIS plugin (previously if table aliases were used quoting like "table.attribute" would cause query failure) (r2979).
+
+- Added the ability to control the PostGIS feature id by suppling a key_field to reference and integer attribute name (r2979).
+
+- Added alternative, more robust proj_transform functions to project a bbox using more points than just the four
+ corners to ensure an optimally sized bbox despite proj4 out of bounds conditions. (olt)
+
+- Added map.base parameter that can be set to control where files with relative paths should be interpreted
+ from when a map is loaded from a string or saved to a string. It defaults to an empty string which means
+ that the base path will be the current working directory of the mapnik process. When a stylesheet is read
+ from a file that files directory is used. And a custom value can still be passed as an argument to
+ load_map_from_string().
+
+- Added python function `render_grid` to allow conversion of grid buffer to python object containing list of grid
+ pixels, list of keys, and a and dictionary of feature attributes.
+
+- Added new rendering backend, grid_renderer, that collects the attributes of rendered features and
+ burns their ids into a grid buffer.
+
+- Added optional `maximum-extent` parameter to map object. If set will be used, instead of combined
+ layer extents, for return value of map.zoom_all(). Useful in cases where the combined layer extents
+ cannot possibly be projected into the map srs or the user wishes to control map bounds without
+ modifying the extents of each layer.
+
+- Support for NODATA values with grey and rgb images in GDAL plugin (#727)
+
+- Print warning if invalid XML property names are used (#110)
+
+- Made XML property names use consistent dashes, never underscores (#644)
+
+- Added support for drawing only first matching rule using filter-mode="first" in Style (#706)
+
+- Added support to PointSymbolizer (`ignore_placement`) for skipping adding placed points to collision detector (#564)
+
+- Added ability to register fonts within XML using Map level `font-directory` parameter (#168)
+
+- TextSymbolizer: Change text_convert to text_transform to better match css naming (r2211)
+
+- Shapefile Plugin: Throw error if attribute name is requested that does not exist (#604)
+
+- Upgraded to the latest proj4 string literal for EPSG:4326 (WGS84) as global default projection (#333)
+
+- Added `mapnik_version_from_string()` function in python bindings to easily convert string representation
+ of version number to the integer format used in `mapnik/version.hpp`. e.g. `0.7.1` --> `701`.
+
+- Added xinclude (http://www.w3.org/TR/xinclude/) support to libxml2-based xml parser (oldtopos) (#567)
+
+- Optimized rendering speeds by avoiding locking in the projection code (r2063) (r2713)
+
+- Added support for setting global alignment of polygon pattern fills (#203)
+
+- Added support for choosing OGR layer by index number using `layer_by_index` parameter (r1904)
+
+- Added support for fractional halo widths (using FT Stroker) (#93)
+
+- Added support for reading jpeg images (in addition to png/tiff) for image symbolizers (#518)
+
+- Made libjpeg dependency optional at compile time and added mapnik2.has_jpeg() method to check for support in python (#545).
+
+- Fixed reading of PostGIS data on Big Endian systems (#515)
+
+- PostGIS: Added better support for alternative schemas (#500)
+
+- AGG Renderer - Enforced default gamma function on all symbolizers to ensure proper antialiasing
+ even when gamma is modified on the PolygonSymbolizer. (#512)
+
+- Added ability to read pre 2.0.0 stylesheets, but prints a warning for deprecated syntax (r1592, #501)
+
+- Rasterlite Plugin: Experimental support for Rasterlite, to practically use sqlite database with wavelet compressed rasters (#469)
+
+- PNG: fixed png256 for large images and some improvements to reduce color corruptions (#522)
+
+- Implement MarkersSymbolizer in Cairo render and improve the markers placement finder. (#553)
+
+
+# Mapnik 0.7.2
+
+Released Oct 18, 2011
+
+(Packaged from bc5cabeb6a)
+
+- Added forward compatibility for Mapnik 2.0 XML syntax (https://github.com/mapnik/mapnik/wiki/Mapnik2/Changes)
+
+- Build fixes to ensure boost_threads are not used unless THREADING=multi build option is used
+
+- Fixes for the clang compiler
+
+- Support for latest libpng (>= 1.5.x) (r2999)
+
+- Fixes to the postgres pool
+
+- Fix for correct transparency levels in png256/png8 output (#540)
+
+- Various build system fixes, especially for gcc compiler on open solaris.
+
+- When plugins are not found, report the searched directories (#568)
+
+- Improved font loading support (#559)
+
+- Fix to shapeindex for allowing indexing of directory of shapefiles like `shapeindex dir/*shp`
+
+- Fixed handling of null and multipatch shapes in shapefile driver - avoiding inf loop (#573)
+
+- Fixed raster alpha blending (#589,#674)
+
+- Enhanced support for faster reprojection if proj >= 4.8 is used (#575)
+
+- Allow for late-binding of datasources (#622)
+
+- Fix to OSM plugin to avoid over-caching of data (#542)
+
+- Various fixes to sqlite, ogr, and occi driver backported from trunk.
+
+- Ensured that `\n` triggers linebreaks in text rendering (#584)
+
+- Support for boost filesystem v3
+
+- Fixes to cairo renderer to avoid missing images (r2526)
+
+- Fixed reading of label_position_tolerance on text_symbolizer and height for building_symbolizer
+
+
+# Mapnik 0.7.1
+
+Released March 23, 2010
+
+(Packaged from r1745/db89f1ca75)
+
+- Rasters: Various fixes and improvements to 8bit png output ([#522](https://github.com/mapnik/mapnik/issues/522),[#475](https://github.com/mapnik/mapnik/issues/475))
+
+- XML: Save map buffer_size when serializing map.
+
+- SCons: Added new build options `PRIORITIZE_LINKING` and `LINK_PRIORITY`. The first is a boolean (default True)
+ of whether to use the new sorting implementation that gives explcit preference to custom or local paths
+ during compile and linking that will affect builds when duplicate libraries and include directories are on the
+ system. LINK_PRIORITY defaults to prioritizing internal sources of the mapnik source folder, then local/user
+ installed libraries over system libraries, but the option can be customized. Sorting not only ensures that
+ compiling and linking will more likely match the desired libraries but also gives more likelyhood to avoid
+ the scenario where libraries are linked that don`t match the includes libmapnik compiled against.
+
+- XML: Fixed behavior of PolygonPatternSymbolizer and LinePatternSymbolizer whereby width, height,
+ and type of images is actually allowed to be optionally ommitted ([#508](https://github.com/mapnik/mapnik/issues/508)). This was added in r1543 but
+ only worked correctly for PointSymbolizer and ShieldSymbolizer.
+
+- Fixed reading of PostGIS data on Big Endian systems ([#515](https://github.com/mapnik/mapnik/issues/515))
+
+- PostGIS: Added better support for alterative schemas ([#500](https://github.com/mapnik/mapnik/issues/500))
+
+- AGG Renderer - Enforced default gamma function on all symbolizers to ensure proper antialiasing
+ even when gamma is modified on the PolygonSymbolizer. ([#512](https://github.com/mapnik/mapnik/issues/512))
+
+- PNG: fixed png256 for large images and some improvements to reduce color corruptions ([#522](https://github.com/mapnik/mapnik/issues/522))
+
+- PNG: Added new quantization method for indexed png format using hextree with full support for alpha
+ channel. Also new method has some optimizations for color gradients common when using elevation based
+ rasters. By default old method using octree is used. (r1680, r1683, [#477](https://github.com/mapnik/mapnik/issues/477))
+
+- PNG: Added initial support for passing options to png writter like number of colors, transparency
+ support, quantization method and possibly other in future using type parameter. For example
+ "png8:c=128:t=1:m=h" limits palette to 128 colors, uses only binary transparency (0 - none,
+ 1 - binary, 2 - full), and new method of quantization using hextree (h - hextree, o - octree).
+ Existing type "png256" can be also written using "png8:c=256:m=o:t=2" (r1680, r1683, [#477](https://github.com/mapnik/mapnik/issues/477))
+
+
+# Mapnik 0.7.0
+
+Released January, 19 2010
+
+(Packaged from r1574/a0da946be9)
+
+- Core: Fixed linking to external libagg (r1297,r1299)
+
+- Core: Completed full support for PPC (Big endian) architectures (r1352 -> r1357)
+
+- Gdal Plugin: Added support for Gdal overviews, enabling fast loading of > 1GB rasters (#54)
+
+ * Use the gdaladdo utility to add overviews to existing GDAL datasets
+
+- PostGIS: Added an optional `geometry_table` parameter. The `geometry_table` used by Mapnik to look up
+ metadata in the geometry_columns and calculate extents (when the `geometry_field` and `srid` parameters
+ are not supplied). If `geometry_table` is not specified Mapnik will attempt to determine the name of the
+ table to query based on parsing the `table` parameter, which may fail for complex queries with more than
+ one `from` keyword. Using this parameter should allow for existing metadata and table indexes to be used
+ while opening the door to much more complicated subqueries being passed to the `table` parameter without
+ failing (#260, #426).
+
+- PostGIS Plugin: Added optional `geometry_field` and `srid` parameters. If specified these will allow
+ Mapnik to skip several queries to try to determine these values dynamically, and can be helpful to avoid
+ possible query failures during metadata lookup with complex subqueries as discussed in #260 and #436, but
+ also solvable by specifying the `geometry_table` parameter. (r1300,#376)
+
+- PostGIS: Added an optional `extent_from_subquery` parameter that when true (while the `extent` parameter is
+ not provided and `estimate_extent` is false) will direct Mapnik to calculate the extent upon the exact table
+ or sql provided in the `table` parameter. If a sub-select is used for the table parameter then this will,
+ in cases where the subquery limits results, provide a faster and more accurate layer extent. It will have
+ no effect if the `table` parameter is simply an existing table. This parameter is false by default. (#456)
+
+- PostGIS Plugin: Added `!bbox!` token substitution ability in sql query string. This opens the door for various
+ complex queries that may aggregate geometries to be kept fast by allowing proper placement of the bbox
+ query to be used by indexes. (#415)
+
+ * Pass the bbox token inside a subquery like: !bbox!
+
+ * Valid Usages include:
+
+ <Parameter name="table">
+ (Select ST_Union(geom) as geom from table where ST_Intersects(geometry,!bbox!)) as map
+ </Parameter>
+
+ <Parameter name="table">
+ (Select * from table where geom &amp;&amp; !bbox!) as map
+ </Parameter>
+
+- PostGIS Plugin: Added `scale_denominator` substitution ability in sql query string (#415/#465)
+
+ * Pass the scale_denominator token inside a subquery like: !scale_denominator!
+
+ * e.g. (Select * from table where field_value > !scale_denominator!) as map
+
+- PostGIS Plugin: Added support for quoted table names (r1454) (#393)
+
+- PostGIS: Add a `persist_connection` option (default true), that when false will release
+ the idle psql connection after datasource goes out of scope (r1337) (#433,#434)
+
+- PostGIS: Added support for BigInt (int8) postgres type (384)
+
+- PostGIS Plugin: Throw and report errors if SQL execution fails (r1291) (#363, #242)
+
+- PostGIS Plugin: Fixed problem in conversion of long numbers to strings (r1302,1303)
+
+- PostGIS Plugin: Added missing support for BigInt(int8) postgres datatypes (r1250) (#384)
+
+- OGR Plugin: Added support for reading multipoint features (#458)
+
+- Shape Plugin: Fixed bug in file extension stripping (#413)
+
+- Shape Plugin: Fixed missing compiler flags that causes crashing on newer g++ versions (#436)
+
+- PNG: Fixed problem with garbled/striped png256 output along sharp edges(#416,#445,#447,#202)
+
+- PNG: Added support for semi-transparency in png256 output (#477,#202)
+
+- PolygonSymbolizer: Added `gamma` attribute to allow for dilation of polygon edges - a solution
+ to gap artifacts or "ghost lines" between adjacent polygons and allows for slight sharpening of
+ the edges of non overlapping polygons. Accepts any values but 0-1 is the recommended range.
+
+- TextSymbolizer: Large set of new attributes: `text_transform`, `line_spacing`, `character_spacing`,
+ `wrap_character`, `wrap_before`, `horizontal_alignment`, `justify_alignment`, and `opacity`.
+
+ * More details at changesets: r1254 and r1341
+
+- SheildSymbolizer: Added special new attributes: `unlock_image`, `VERTEX` placement, `no_text` and many
+ attributes previously only supported in the TextSymbolizer: `allow_overlap`, `vertical_alignment`,
+ `horizontal_alignment`, `justify_alignment`, `wrap_width`, `wrap_character`, `wrap_before`, `text_transform`,
+ `line_spacing`, `character_spacing`, and `opacity`.
+
+ * More details at changeset r1341
+
+- XML: Added support for using CDATA with libxml2 parser (r1364)
+
+- XML: Fixed memory leak in libxml2 implementation (#473)
+
+- XML: Added function to serialize map to string, called `mapnik.save_map_to_string()` (#396)
+
+- XML: Added parameter to <Map> called `minimum_version` to allow for enforcing the minimum Mapnik version
+ needed for XML features used in the mapfiles. Uses Major.Minor.Point syntax, for example
+ <Map minimum_version="0.6.1"> would throw an error if the user is running Mapnik less than 0.6.1.
+
+- XML: Added support for relative paths when using entities and `mapnik.load_map_from_string()` (#440)
+
+- XML: Made width and height optional for symbolizers using images (r1543)
+
+- XML: Ensured that default values for layers are not serialized in save_map() (r1366)
+
+- XML: Added missing serialization of PointSymbolizer `opacity` and `allow_overlap` attributes (r1358)
+
+- XML: Default text vertical_alignment now dependent on dy (#485, r1527)
+
+- Python: Exposed ability to write to Cairo formats using `mapnik.render_to_file()` and without pycairo (#381)
+
+- Python: Fixed potential crash if pycairo support is enabled but python-cairo module is missing (#392)
+
+- Python: Added `mapnik.has_pycairo()` function to test for pycairo support (r1278) (#284)
+
+- Python: Added `mapnik.register_plugins()` and `mapnik.register_fonts()` functions (r1256)
+
+- Python: Pickling support for point_symbolizer (r1295) (#345)
+
+- Python: Ensured mapnik::config_errors now throw RuntimeError exception instead of UserWarning exception (#442)
+
+- Filters: Added support for `!=` as an alias to `<>` for not-equals filters (avoids &lt;&gt;) (r1326) (#427)
+
+- SCons: Improved boost auto-detection (r1255,r1279)
+
+- SCons: Fixed support for JOBS=N and FAST=True to enable faster compiling (r1440)
+
+- SCons: Ensured that -h or --help will properly print help on custom Mapnik options before a user
+ has been able to properly run `configure`. (r1514)
+
+- SCons: Added ability to link to custom icu library name using ICU_LIB_NAME (r1414)
+
+- SCons: Improved reliability of python linking on OSX (#380)
+
+- Fonts: Added unifont to auto-installed fonts, which is used by the OSM styles as a fallback font (r1328)
+
+
+# Mapnik 0.6.1
+
+Released July 14, 2009
+
+(Packaged from r1247/353ff576c7)
+
+- Plugins: expose list of registered plugins as a `plugin_names()` method of DatasourceCache (r1180)
+
+- XML: Fixed serialization and parsing bugs related to handling of integers and Enums (#328,#353)
+
+- SCons: Added the ability to set the PKG_CONFIG_PATH env setting (#217)
+
+- SCons: Improved linking to only required libraries for libmapnik (#371)
+
+- Shape Plugin: Added compile time flag to allow disabling the use of memory mapped files (r1213) (#342)
+
+- Core: Improved support for PPC (Big endian) architectures (r1198 -> r1213)
+
+- Scons: Improved auto-detection of boost libs/headers (r1200) (#297)
+
+- Plugins: Exposed list of available/registered plugins (r1180) (#246)
+
+- SCons: Improve build support for SunCC (patches from River Tarnell) (r1168, r1169)
+
+- Python: Pickling support for text_symbolizer (r1164) (#345)
+
+- Python: Pickling support for proj_transform and view/coord_transform (r1163) (#345)
+
+- Python: Pickling support for parameters (r1162) (#345)
+
+- Python: Pickling support for stroke objects (r1161) (#345)
+
+- Python: Pickling support for line_symbolizer (r1160) (#345)
+
+- Python: Pickling support for projection objects (r1159) (#345)
+
+- Python: Pickling support for shield_symbolizer (r1158) (#345)
+
+- Python: Pickling support for polygon_symbolizer (r1157) (#345)
+
+- Python: Pickling support for query objects (r1156) (#345)
+
+- Python: Pickling support for pattern symbolizers (r1155) (#345)
+
+- Python: Pickling support for raster_symbolizer (r1154) (#345)
+
+- Python: Added `mapnik.has_cairo()` function to test for cairo support (r1152) (#284)
+
+- Python: Exposed dash_array get method (r1151) (#317)
+
+- Python: Pickling support for Coord objects (#345)
+
+- GDAL Plugin: Added an experimental option to open files in `shared mode` (r1143)
+
+- Python: Exposed RasterSymbolizer options in Python (r1139)
+
+- Plugins: Fixed support for non-file based sources in GDAL and OGR plugins (#336,#337)
+
+- Plugins: Formal inclusion of new plugin for Kismet server (r1127) (#293)
+
+- Python: Made access to features and featuresets more Pythonic (r1121) (#171,#280,#283)
+
+- XML: Ensured relative paths in XML are interpreted relative to XML file location (r1124) (#326)
+
+- XML: Added ability to serialize all default symbolizer values by passing third argument to save_map(m,`file.xml`,True)(r1117) (#327)
+
+- Core: Added support for alpha transparency when writing to png256 (patch from Marcin Rudowski) (#202)
+
+- SCons: Ensured ABI compatibility information is embedded in libmapnik.dylib on Mac OS X (#322)
+
+- SCons: Ensured that the full `install_name` path would be added to libmapnik.dylib on Mac OS X (#374)
+
+- Tests: Added testing framework in Python using nose (r1101-r1105)
+
+- Raster Plugin: Added a tile/bbox-based read policy for large (rasters width * height > 1024*1024 will be loaded in chunks) (r1089)
+
+- OGCServer: Made lxml dependency optional (r1085) (#303)
+
+- Rasters: Handle rounding to allow better alignment of raster layers (r1079) (#295)
+
+- AGG Renderer: Added option to control output JPEG quality (r1078) (#198)
+
+- Plugins: Fixed segfault in OGR Plugin with empty geometries (r1074) (#292)
+
+
+# Mapnik 0.6.0
+
+Released April 1, 2009
+
+(Packaged from r1066/c88e03436f)
+
+- Python: Added support for aspect_fix_mode (r1013)
+
+- OGCServer Fixed axis-ordering for WMS 1.3.0 request (r1051) (#241)
+
+- Plugins: Added option to all plugins to support using a `base` path argument (r1042)
+
+- Symbolizers: RasterSymbolizer now support composing modes for hillshading (r1027)
+
+- SCons: Added options to build the rundemo and pgsql2sqlite tools (r989)
+
+- OGCServer: Added content-length output (r986)
+
+- SCons: Replaced LIBS/INCLUDES options for postgres and gdal with pg_config and gdal-config (r977)
+
+- SCons: Created an optional configure stage (r973)
+
+- Python: Added further pickling/copy support to Map, Layers, Datasources, Styles,and Rules (r907,r913,r921)
+
+- Plugins: Added Sqlite driver for reading sqlite databases (r881)
+
+- Python: Exposed a number of properties for the Text Symbolizer (r869)
+
+- Plugins: PostGIS plugin now accepts multi-line queries (r862)
+
+- Filter parsing: Allow numbers in the filter field name.
+ This allows for shapefiles with columns like `1970`.
+
+- Plugins: Added OGR driver for reading all OGR supported formats (kunitoki) (r836) (#170)
+
+- XML: Added serialization of Fontsets (r807)
+
+- XML: Added support for reading xml from a string (r806)
+
+- C++: renamed mapnik::Color to mapnik::color (r796)
+
+- Python: Made available the scale_denominator property from the map in c++ and python (r794)
+
+- Python: Added ability to resize map and clear all layers and styles from python (r793)
+
+- Python: Exposed Proj to/from transformation for projected coordinate systems (r792,r822) (#117)
+
+- Memory Datasource: Added support for dynamically adding Points to map using Point Datasource (r790)
+
+- XML: Added xml serialization for abstract, title, minzoom, maxzoom, and queryable attributes (r787)
+
+- Core: Transformation is now skipped if srs values match exactly (r777)
+
+- Symbolizers: `min_distance` now honored for POINT placement using Text Symbolizer (r771)
+
+- Plugins: PostGIS plugin now accepts a geometry_field,record_limit, cursor_size options (r769,r872)
+
+- Python: Added ability to transform as a method on Coord and Envelope objects (r764)
+
+- Python: Added docstrings to the Layer object (r763)
+
+- Plugins: Loosened the type checking in Shapefile Plugin dbf reader (r762)
+
+- Fonts: Added support for Right-to-left Hebrew text (r749)
+
+- Core: Added a Map buffer parameter - helps to avoid cut labels at tile edges (r744)
+
+- Symbolizers: Added opacity support to Point Symbolizer (r743)
+
+- Symbolizers: Added support of using Points with Shield Symbolizer (r741)
+
+- Plugins: PostGIS plugin now accepts alternate schemas (r773)
+
+- Core: Added a Map aspect_fix_mode to ensure proper syncing of map dimensions and bbox (r705)
+
+- Fonts: Added support for fallback fonts (r704)
+
+- Cairo: Cairo support exposed in Python (r666)
+
+- Plugins: Added OSM plugin for reading directly from OSM data (r663)
+
+- Filters: Added support for boolean expressions (r660)
+
+- Python: Added ability to open Image32 files (r652)
+
+- Cairo: Cairo rendering support added (r656)
+
+- Core: Added unicode support based on ICU (r650)
+
+- Core: Added support for single and multi threaded variants of Mapnik (r632,r634)
+
+- Plugins: Use memory mapped files for reading shape file (r628)
+
+- Core: Use streams to write images (i/o refactor) (r628) (#15)
+
+# Mapnik 0.5.1
+
+Released April 15, 2008
+
+(Packaged from c29cb7386d)
+
+# Mapnik 0.5.0
+
+Released April 15, 2008
+
+(Packaged from 0464a3563c)
+
+# Mapnik 0.4.0
+
+Released February 26, 2007
+
+(Packaged from 8d73e3a8dc)
+
+# Mapnik 0.3.0
+
+Released May 22, 2006
+
+(Packaged from 3ae046ebe2)
View
40 INSTALL.md
@@ -15,9 +15,9 @@ If you need to uninstall do:
For more details see the 'Building' Section below.
-Platform specific install guides at http://trac.mapnik.org/wiki/MapnikInstallation
+Platform specific install guides at https://github.com/mapnik/mapnik/wiki/Mapnik-Installation
-For troubleshooting help see http://trac.mapnik.org/wiki/InstallationTroubleshooting
+For troubleshooting help see https://github.com/mapnik/mapnik/wiki/InstallationTroubleshooting
## Depends
@@ -26,7 +26,7 @@ Mapnik is cross platform and runs on Linux, Mac OSX, Solaris, *BSD, and Windows.
The build system should work for all posix/unix systems but for windows see:
- http://trac.mapnik.org/wiki/BuildingOnWindows
+ https://github.com/mapnik/mapnik/wiki/BuildingOnWindows
Build dependencies are:
@@ -37,10 +37,7 @@ Build dependencies are:
Mapnik Core depends on:
* Boost
- - >= 1.46 is recommended
- - >= 1.45 is required if compiling with clang++
- - >= 1.42 works on most systems and most compilers
- - >= 1.47 is required to support wkt/wkb geometry output (optional)
+ - >= 1.47 is required.
- These libraries are required:
- filesystem
- system
@@ -77,7 +74,7 @@ Optional dependencies:
Instructions for installing many of these dependencies on
various platforms can be found at the Mapnik Community Wiki
-(http://trac.mapnik.org/wiki/MapnikInstallation).
+(https://github.com/mapnik/mapnik/wiki/Mapnik-Installation).
@@ -127,7 +124,7 @@ If you want to see configure options do:
For more details on all the options see:
- http://trac.mapnik.org/wiki/UsingScons
+ https://github.com/mapnik/mapnik/wiki/UsingScons
## Testing Installation
@@ -158,11 +155,11 @@ For further tests see the `tests` folder within the Mapnik source code.
### Users
-Visit http://trac.mapnik.org/wiki/LearningMapnik for basic tutorials on making maps with Mapnik using the Python bindings.
+Visit https://github.com/mapnik/mapnik/wiki/LearningMapnik for basic tutorials on making maps with Mapnik using the Python bindings.
### Developers
-Visit http://trac.mapnik.org/#DevelopersCorner for resources for getting involved with Mapnik development.
+Read docs/contributing.markdown for resources for getting involved with Mapnik development.
## Mapnik Community
@@ -171,22 +168,7 @@ Visit http://trac.mapnik.org/#DevelopersCorner for resources for getting involve
Mapnik has an active community of talented users and developers making
amazing maps.
-If you are looking for further help on installation or usage and you can't
-find what you are looking for from searching the users list archives
-(http://lists.berlios.de/pipermail/mapnik-users/) or the trac wiki
-(http://trac.mapnik.org/), feel free to join the Mapnik community and
-introduce yourself.
+Please feel free to subscribe to the community list and post on both
+usage and development topics: http://mapnik.org/contact/
-You can get involved by:
-
- * Subscribing to the mapnik-users list:
-
- http://lists.berlios.de/mailman/listinfo/mapnik-users
-
- * Subscribing to the mapnik-developers list:
-
- http://lists.berlios.de/mailman/listinfo/mapnik-devel
-
- * Joining the #mapnik channel on irc://irc.freenode.net/mapnik
-
- * Signing up as a user or contributor at http://www.ohloh.net/p/mapnik/
+You can also get involved by joining the #mapnik channel on irc://irc.freenode.net/mapnik
View
42 Makefile
@@ -1,23 +1,53 @@
all: mapnik
install:
- python scons/scons.py install
+ @python scons/scons.py --config=cache --implicit-cache --max-drift=1 install
mapnik:
- python scons/scons.py
+ @python scons/scons.py --config=cache --implicit-cache --max-drift=1
clean:
- python scons/scons.py -c
+ @python scons/scons.py -c --config=cache --implicit-cache --max-drift=1
+ @if test -e ".sconsign.dblite"; then rm ".sconsign.dblite"; fi
-reset:
+distclean:
if test -e ".sconf_temp/"; then rm -r ".sconf_temp/"; fi
if test -e ".sconsign.dblite"; then rm ".sconsign.dblite"; fi
if test -e "config.cache"; then rm "config.cache"; fi
+reset: distclean
+
uninstall:
- python scons/scons.py uninstall
+ python scons/scons.py --config=cache --implicit-cache --max-drift=1 uninstall
test:
+ @echo "*** Running visual tests..."
+ @python tests/visual_tests/test.py -q || true
+ @echo "*** Running C++ tests..."
+ @for FILE in tests/cpp_tests/*-bin; do \
+ $${FILE}; \
+ done
+ @echo "*** Running python tests..."
@python tests/run_tests.py -q
-.PHONY: clean reset uninstall test install
+demo:
+ @echo "*** Running rundemo.cpp…"
+ cd demo/c++; ./rundemo `mapnik-config --prefix`/lib/mapnik
+
+pep8:
+ # https://gist.github.com/1903033
+ # gsed on osx
+ @pep8 -r --select=W293 -q --filename=*.py `pwd`/tests/ | xargs gsed -i 's/^[ \r\t]*$//'
+ @pep8 -r --select=W391 -q --filename=*.py `pwd`/tests/ | xargs gsed -i -e :a -e '/^\n*$/{$d;N;ba' -e '}'
+
+grind:
+ @for FILE in tests/cpp_tests/*-bin; do \
+ valgrind --leak-check=full --log-fd=1 $${FILE} | grep definitely; \
+ done
+
+render:
+ @for FILE in tests/data/good_maps/*xml; do \
+ nik2img.py $${FILE} /tmp/$$(basename $${FILE}).png; \
+ done
+
+.PHONY: clean reset uninstall test install demo
View
578 SConstruct
@@ -15,8 +15,6 @@
# You should have received a copy of the GNU Lesser General Public
# License along with this library; if not, write to the Free Software
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-#
-# $Id$
import os
@@ -34,6 +32,10 @@ try:
except:
HAS_DISTUTILS = False
+LIBDIR_SCHEMA_DEFAULT='lib'
+severities = ['debug', 'warn', 'error', 'none']
+
+py3 = None
# local file to hold custom user configuration variables
# Todo check timestamp, reload if changed?
@@ -46,24 +48,24 @@ SCONS_CONFIGURE_CACHE = 'config.cache'
SCONF_TEMP_DIR = '.sconf_temp'
# auto-search directories for boost libs/headers
BOOST_SEARCH_PREFIXES = ['/usr/local','/opt/local','/sw','/usr',]
-BOOST_MIN_VERSION = '1.41'
+BOOST_MIN_VERSION = '1.47'
CAIROMM_MIN_VERSION = '1.8.0'
DEFAULT_LINK_PRIORITY = ['internal','other','frameworks','user','system']
pretty_dep_names = {
- 'ociei':'Oracle database library | configure with OCCI_LIBS & OCCI_INCLUDES | more info: http://trac.mapnik.org/wiki/OCCI',
- 'gdal':'GDAL C++ library | configured using gdal-config program | try setting GDAL_CONFIG SCons option | more info: http://trac.mapnik.org/wiki/GDAL',
- 'ogr':'OGR-enabled GDAL C++ Library | configured using gdal-config program | try setting GDAL_CONFIG SCons option | more info: http://trac.mapnik.org/wiki/OGR',
- 'geos_c':'GEOS Simple Geometry Specification C Library | configured with GEOS_LIB & GEOS_INCLUDE | more info: http://trac.mapnik.org/wiki/GEOS',
+ 'ociei':'Oracle database library | configure with OCCI_LIBS & OCCI_INCLUDES | more info: https://github.com/mapnik/mapnik/wiki//OCCI',
+ 'gdal':'GDAL C++ library | configured using gdal-config program | try setting GDAL_CONFIG SCons option | more info: https://github.com/mapnik/mapnik/wiki/GDAL',
+ 'ogr':'OGR-enabled GDAL C++ Library | configured using gdal-config program | try setting GDAL_CONFIG SCons option | more info: https://github.com/mapnik/mapnik/wiki//OGR',
+ 'geos_c':'GEOS Simple Geometry Specification C Library | configured with GEOS_LIB & GEOS_INCLUDE | more info: https://github.com/mapnik/mapnik/wiki//GEOS',
'cairo':'Cairo C library | configured using pkg-config | try setting PKG_CONFIG_PATH SCons option',
'cairomm':'Cairomm C++ bindings to Cairo library | configured using pkg-config | try setting PKG_CONFIG_PATH SCons option',
'cairomm-version':'Cairomm version is too old (so cairo renderer will not be built), you need at least %s' % CAIROMM_MIN_VERSION,
'pycairo':'Python bindings to Cairo library | configured using pkg-config | try setting PKG_CONFIG_PATH SCons option',
'proj':'Proj.4 C Projections library | configure with PROJ_LIBS & PROJ_INCLUDES | more info: http://trac.osgeo.org/proj/',
- 'pg':'Postgres C Library requiered for PostGIS plugin | configure with pg_config program | more info: http://trac.mapnik.org/wiki/PostGIS',
- 'sqlite3':'SQLite3 C Library | configure with SQLITE_LIBS & SQLITE_INCLUDES | more info: http://trac.mapnik.org/wiki/SQLite',
+ 'pg':'Postgres C Library requiered for PostGIS plugin | configure with pg_config program | more info: https://github.com/mapnik/mapnik/wiki//PostGIS',
+ 'sqlite3':'SQLite3 C Library | configure with SQLITE_LIBS & SQLITE_INCLUDES | more info: https://github.com/mapnik/mapnik/wiki//SQLite',
'jpeg':'JPEG C library | configure with JPEG_LIBS & JPEG_INCLUDES',
'tiff':'TIFF C library | configure with TIFF_LIBS & TIFF_INCLUDES',
'png':'PNG C library | configure with PNG_LIBS & PNG_INCLUDES',
@@ -77,17 +79,17 @@ pretty_dep_names = {
'gdal-config':'gdal-config program | try setting GDAL_CONFIG SCons option',
'geos-config':'geos-config program | try setting GEOS_CONFIG SCons option',
'freetype-config':'freetype-config program | try setting FREETYPE_CONFIG SCons option',
- 'osm':'more info: http://trac.mapnik.org/wiki/OsmPlugin',
- 'curl':'libcurl is required for the "osm" plugin - more info: http://trac.mapnik.org/wiki/OsmPlugin',
+ 'osm':'more info: https://github.com/mapnik/mapnik/wiki//OsmPlugin',
+ 'curl':'libcurl is required for the "osm" plugin - more info: https://github.com/mapnik/mapnik/wiki//OsmPlugin',
'boost_regex_icu':'libboost_regex built with optional ICU unicode support is needed for unicode regex support in mapnik.',
'sqlite_rtree':'The SQLite plugin requires libsqlite3 built with RTREE support (-DSQLITE_ENABLE_RTREE=1)',
'pgsql2sqlite_rtree':'The pgsql2sqlite program requires libsqlite3 built with RTREE support (-DSQLITE_ENABLE_RTREE=1)'
}
-
+
# Core plugin build configuration
# opts.AddVariables still hardcoded however...
PLUGINS = { # plugins with external dependencies
- # configured by calling project, henche 'path':None
+ # configured by calling project, hence 'path':None
'postgis': {'default':True,'path':None,'inc':'libpq-fe.h','lib':'pq','lang':'C'},
'gdal': {'default':True,'path':None,'inc':'gdal_priv.h','lib':'gdal','lang':'C++'},
'ogr': {'default':True,'path':None,'inc':'ogrsf_frmts.h','lib':'gdal','lang':'C++'},
@@ -96,20 +98,24 @@ PLUGINS = { # plugins with external dependencies
'occi': {'default':False,'path':'OCCI','inc':'occi.h','lib':'ociei','lang':'C++'},
'sqlite': {'default':True,'path':'SQLITE','inc':'sqlite3.h','lib':'sqlite3','lang':'C'},
'rasterlite': {'default':False,'path':'RASTERLITE','inc':['sqlite3.h','rasterlite.h'],'lib':'rasterlite','lang':'C'},
-
+
# todo: osm plugin does also depend on libxml2 (but there is a separate check for that)
- 'osm': {'default':False,'path':None,'inc':'curl/curl.h','lib':'curl','lang':'C'},
+ 'osm': {'default':True,'path':None,'inc':'curl/curl.h','lib':'curl','lang':'C'},
# plugins without external dependencies requiring CheckLibWithHeader...
'shape': {'default':True,'path':None,'inc':None,'lib':None,'lang':'C++'},
'csv': {'default':True,'path':None,'inc':None,'lib':None,'lang':'C++'},
'raster': {'default':True,'path':None,'inc':None,'lib':None,'lang':'C++'},
+ 'geojson': {'default':True,'path':None,'inc':None,'lib':None,'lang':'C++'},
'kismet': {'default':False,'path':None,'inc':None,'lib':None,'lang':'C++'},
+ 'python': {'default':True,'path':None,'inc':None,'lib':None,'lang':'C++'},
}
#### SCons build options and initial setup ####
env = Environment(ENV=os.environ)
+env.Decider('MD5-timestamp')
+env.SourceCode(".", None)
def color_print(color,text,newline=True):
# 1 - red
@@ -133,7 +139,7 @@ def call(cmd, silent=False):
if not stderr:
return stdin.strip()
elif not silent:
- color_print(1,'Problem encounted with SCons scripts, please post bug report to: http://trac.mapnik.org\nError was: %s' % stderr)
+ color_print(1,'Problem encounted with SCons scripts, please post bug report to: https://github.com/mapnik/mapnik/issues \nError was: %s' % stderr)
def strip_first(string,find,replace=''):
if string.startswith(find):
@@ -158,7 +164,7 @@ def create_uninstall_target(env, path, is_glob=False):
Delete("$SOURCE"),
])
env.Alias("uninstall", "uninstall-"+path)
-
+
def shortest_name(libs):
name = '-'*200
for lib in libs:
@@ -170,20 +176,20 @@ def shortest_name(libs):
def sort_paths(items,priority):
"""Sort paths such that compiling and linking will globally prefer custom or local libs
over system libraries by fixing up the order libs are passed to gcc and the linker.
-
+
Ideally preference could be by-target instead of global, but our SCons implementation
is not currently utilizing different SCons build env()'s as we should.
-
+
Overally the current approach within these scripts is to prepend paths of preference
and append all others, but this does not give enough control (particularly due to the
approach of assuming /usr/LIBSCHEMA and letting paths be parsed and added by pkg-config).
-
+
In effect /usr/lib is likely to come before /usr/local/lib which makes linking against
custom built icu or boost impossible when those libraries are available in both places.
-
+
Sorting using a priority list allows this to be controlled, and fine tuned.
"""
-
+
new = []
path_types = {'internal':[],'other':[],'frameworks':[],'user':[],'system':[]}
# parse types of paths into logical/meaningful groups
@@ -234,23 +240,12 @@ def sort_paths(items,priority):
new.extend(v)
return new
-if platform.dist()[0] in ('Ubuntu','debian'):
- LIBDIR_SCHEMA='lib'
-elif platform.uname()[4] == 'x86_64' and platform.system() == 'Linux':
- LIBDIR_SCHEMA='lib64'
-elif platform.uname()[4] == 'ppc64':
- LIBDIR_SCHEMA='lib64'
-else:
- LIBDIR_SCHEMA='lib'
-
-
-
def pretty_dep(dep):
pretty = pretty_dep_names.get(dep)
if pretty:
return '%s (%s)' % (dep,pretty)
elif 'boost' in dep:
- return '%s (%s)' % (dep,'more info see: http://trac.mapnik.org/wiki/MapnikInstallation & http://www.boost.org')
+ return '%s (%s)' % (dep,'more info see: https://github.com/mapnik/mapnik/wiki//MapnikInstallation & http://www.boost.org')
return dep
@@ -268,6 +263,7 @@ opts.AddVariables(
('CXX', 'The C++ compiler to use to compile mapnik (defaults to g++).', 'g++'),
('CC', 'The C compiler used for configure checks of C libs (defaults to gcc).', 'gcc'),
('CUSTOM_CXXFLAGS', 'Custom C++ flags, e.g. -I<include dir> if you have headers in a nonstandard directory <include dir>', ''),
+ ('CUSTOM_CFLAGS', 'Custom C flags, e.g. -I<include dir> if you have headers in a nonstandard directory <include dir> (only used for configure checks)', ''),
('CUSTOM_LDFLAGS', 'Custom linker flags, e.g. -L<lib dir> if you have libraries in a nonstandard directory <lib dir>', ''),
EnumVariable('LINKING', "Set library format for libmapnik",'shared', ['shared','static']),
EnumVariable('RUNTIME_LINK', "Set preference for linking dependencies",'shared', ['shared','static']),
@@ -277,7 +273,7 @@ opts.AddVariables(
BoolVariable('DEBUG_UNDEFINED', 'Compile a version of Mapnik using clang/llvm undefined behavior asserts', 'False'),
ListVariable('INPUT_PLUGINS','Input drivers to include',DEFAULT_PLUGINS,PLUGINS.keys()),
('WARNING_CXXFLAGS', 'Compiler flags you can set to reduce warning levels which are placed after -Wall.', ''),
-
+
# SCons build behavior options
('CONFIG', "The path to the python file in which to save user configuration options. Currently : '%s'" % SCONS_LOCAL_CONFIG,SCONS_LOCAL_CONFIG),
BoolVariable('USE_CONFIG', "Use SCons user '%s' file (will also write variables after successful configuration)", 'True'),
@@ -285,16 +281,17 @@ opts.AddVariables(
# http://stackoverflow.com/questions/1318863/how-to-optimize-an-scons-script
BoolVariable('FAST', "Make SCons faster at the cost of less precise dependency tracking", 'False'),
BoolVariable('PRIORITIZE_LINKING', 'Sort list of lib and inc directories to ensure preferential compiling and linking (useful when duplicate libs)', 'True'),
- ('LINK_PRIORITY','Priority list in which to sort library and include paths (default order is internal, other, frameworks, user, then system - see source of `sort_paths` function for more detail)',','.join(DEFAULT_LINK_PRIORITY)),
-
+ ('LINK_PRIORITY','Priority list in which to sort library and include paths (default order is internal, other, frameworks, user, then system - see source of `sort_paths` function for more detail)',','.join(DEFAULT_LINK_PRIORITY)),
+
# Install Variables
('PREFIX', 'The install path "prefix"', '/usr/local'),
+ ('LIBDIR_SCHEMA', 'The library sub-directory appended to the "prefix", sometimes lib64 on 64bit linux systems', LIBDIR_SCHEMA_DEFAULT),
('PYTHON_PREFIX','Custom install path "prefix" for python bindings (default of no prefix)',''),
('DESTDIR', 'The root directory to install into. Useful mainly for binary package building', '/'),
('PATH', 'A custom path (or multiple paths divided by ":") to append to the $PATH env to prioritize usage of command line programs (if multiple are present on the system)', ''),
('PATH_REMOVE', 'A path prefix to exclude from all known command and compile paths', ''),
('PATH_REPLACE', 'Two path prefixes (divided with a :) to search/replace from all known command and compile paths', ''),
-
+
# Boost variables
# default is '/usr/include', see FindBoost method below
('BOOST_INCLUDES', 'Search path for boost include files', '',False),
@@ -303,33 +300,33 @@ opts.AddVariables(
('BOOST_TOOLKIT','Specify boost toolkit, e.g., gcc41.','',False),
('BOOST_ABI', 'Specify boost ABI, e.g., d.','',False),
('BOOST_VERSION','Specify boost version, e.g., 1_35.','',False),
- ('BOOST_PYTHON_LIB','Specify library name to specific Boost Python lib (e.g. "boost_python-py26")',''),
-
+ ('BOOST_PYTHON_LIB','Specify library name to specific Boost Python lib (e.g. "boost_python-py26")','boost_python'),
+
# Variables for required dependencies
('FREETYPE_CONFIG', 'The path to the freetype-config executable.', 'freetype-config'),
('XML2_CONFIG', 'The path to the xml2-config executable.', 'xml2-config'),
PathVariable('ICU_INCLUDES', 'Search path for ICU include files', '/usr/include', PathVariable.PathAccept),
- PathVariable('ICU_LIBS','Search path for ICU include files','/usr/' + LIBDIR_SCHEMA, PathVariable.PathAccept),
+ PathVariable('ICU_LIBS','Search path for ICU include files','/usr/' + LIBDIR_SCHEMA_DEFAULT, PathVariable.PathAccept),
('ICU_LIB_NAME', 'The library name for icu (such as icuuc, sicuuc, or icucore)', 'icuuc'),
PathVariable('PNG_INCLUDES', 'Search path for libpng include files', '/usr/include', PathVariable.PathAccept),
- PathVariable('PNG_LIBS','Search path for libpng include files','/usr/' + LIBDIR_SCHEMA, PathVariable.PathAccept),
- BoolVariable('JPEG', 'Build Mapnik with JPEG read and write support', 'True'),
+ PathVariable('PNG_LIBS','Search path for libpng library files','/usr/' + LIBDIR_SCHEMA_DEFAULT, PathVariable.PathAccept),
+ PathVariable('LTDL_INCLUDES', 'Search path for libltdl (part of libtool) include files', '/usr/include', PathVariable.PathAccept),
+ PathVariable('LTDL_LIBS','Search path for libltdl (ltdl.h) library files','/usr/' + LIBDIR_SCHEMA_DEFAULT, PathVariable.PathAccept),
+ BoolVariable('JPEG', 'Build Mapnik with JPEG read and write support', 'True'),
PathVariable('JPEG_INCLUDES', 'Search path for libjpeg include files', '/usr/include', PathVariable.PathAccept),
- PathVariable('JPEG_LIBS', 'Search path for libjpeg library files', '/usr/' + LIBDIR_SCHEMA, PathVariable.PathAccept),
+ PathVariable('JPEG_LIBS', 'Search path for libjpeg library files', '/usr/' + LIBDIR_SCHEMA_DEFAULT, PathVariable.PathAccept),
PathVariable('TIFF_INCLUDES', 'Search path for libtiff include files', '/usr/include', PathVariable.PathAccept),
- PathVariable('TIFF_LIBS', 'Search path for libtiff library files', '/usr/' + LIBDIR_SCHEMA, PathVariable.PathAccept),
- PathVariable('PROJ_INCLUDES', 'Search path for PROJ.4 include files', '/usr/local/include', PathVariable.PathAccept),
- PathVariable('PROJ_LIBS', 'Search path for PROJ.4 library files', '/usr/local/' + LIBDIR_SCHEMA, PathVariable.PathAccept),
+ PathVariable('TIFF_LIBS', 'Search path for libtiff library files', '/usr/' + LIBDIR_SCHEMA_DEFAULT, PathVariable.PathAccept),
+ PathVariable('PROJ_INCLUDES', 'Search path for PROJ.4 include files', '/usr/include', PathVariable.PathAccept),
+ PathVariable('PROJ_LIBS', 'Search path for PROJ.4 library files', '/usr/' + LIBDIR_SCHEMA_DEFAULT, PathVariable.PathAccept),
('PKG_CONFIG_PATH', 'Use this path to point pkg-config to .pc files instead of the PKG_CONFIG_PATH environment setting',''),
-
+
# Variables affecting rendering back-ends
-
+
BoolVariable('RENDERING_STATS', 'Output rendering statistics during style processing', 'False'),
-
- BoolVariable('INTERNAL_LIBAGG', 'Use provided libagg', 'True'),
- BoolVariable('SVG_RENDERER', 'build support for native svg renderer', 'False'),
-
+ #BoolVariable('SVG_RENDERER', 'build support for native svg renderer', 'False'),
+
# Variables for optional dependencies
('GEOS_CONFIG', 'The path to the geos-config executable.', 'geos-config'),
# Note: cairo, cairomm, and pycairo all optional but configured automatically through pkg-config
@@ -340,15 +337,20 @@ opts.AddVariables(
('GDAL_CONFIG', 'The path to the gdal-config executable for finding gdal and ogr details.', 'gdal-config'),
('PG_CONFIG', 'The path to the pg_config executable.', 'pg_config'),
PathVariable('OCCI_INCLUDES', 'Search path for OCCI include files', '/usr/lib/oracle/10.2.0.3/client/include', PathVariable.PathAccept),
- PathVariable('OCCI_LIBS', 'Search path for OCCI library files', '/usr/lib/oracle/10.2.0.3/client/'+ LIBDIR_SCHEMA, PathVariable.PathAccept),
+ PathVariable('OCCI_LIBS', 'Search path for OCCI library files', '/usr/lib/oracle/10.2.0.3/client/'+ LIBDIR_SCHEMA_DEFAULT, PathVariable.PathAccept),
PathVariable('SQLITE_INCLUDES', 'Search path for SQLITE include files', '/usr/include/', PathVariable.PathAccept),
- PathVariable('SQLITE_LIBS', 'Search path for SQLITE library files', '/usr/' + LIBDIR_SCHEMA, PathVariable.PathAccept),
+ PathVariable('SQLITE_LIBS', 'Search path for SQLITE library files', '/usr/' + LIBDIR_SCHEMA_DEFAULT, PathVariable.PathAccept),
PathVariable('RASTERLITE_INCLUDES', 'Search path for RASTERLITE include files', '/usr/include/', PathVariable.PathAccept),
- PathVariable('RASTERLITE_LIBS', 'Search path for RASTERLITE library files', '/usr/' + LIBDIR_SCHEMA, PathVariable.PathAccept),
-
+ PathVariable('RASTERLITE_LIBS', 'Search path for RASTERLITE library files', '/usr/' + LIBDIR_SCHEMA_DEFAULT, PathVariable.PathAccept),
+
+ # Variables for logging and statistics
+ BoolVariable('ENABLE_LOG', 'Enable logging, which is enabled by default when building in *debug*', 'False'),
+ BoolVariable('ENABLE_STATS', 'Enable global statistics during map processing', 'False'),
+ ('DEFAULT_LOG_SEVERITY', 'The default severity of the logger (eg. ' + ', '.join(severities), 'error'),
+
# Other variables
BoolVariable('SHAPE_MEMORY_MAPPED_FILE', 'Utilize memory-mapped files in Shapefile Plugin (higher memory usage, better performance)', 'True'),
- ('SYSTEM_FONTS','Provide location for python bindings to register fonts (if given aborts installation of bundled DejaVu fonts)',''),
+ ('SYSTEM_FONTS','Provide location for python bindings to register fonts (if provided then the bundled DejaVu fonts are not installed)',''),
('LIB_DIR_NAME','Name to use for the subfolder beside libmapnik where fonts and plugins are installed','mapnik'),
PathVariable('PYTHON','Full path to Python executable used to build bindings', sys.executable),
BoolVariable('FRAMEWORK_PYTHON', 'Link against Framework Python on Mac OS X', 'True'),
@@ -359,7 +361,7 @@ opts.AddVariables(
EnumVariable('THREADING','Set threading support','multi', ['multi','single']),
EnumVariable('XMLPARSER','Set xml parser','libxml2', ['libxml2','ptree']),
('JOBS', 'Set the number of parallel compilations', "1", lambda key, value, env: int(value), int),
- BoolVariable('DEMO', 'Compile demo c++ application', 'False'),
+ BoolVariable('DEMO', 'Compile demo c++ application', 'True'),
BoolVariable('PGSQL2SQLITE', 'Compile and install a utility to convert postgres tables to sqlite', 'False'),
BoolVariable('COLOR_PRINT', 'Print build status information in color', 'True'),
BoolVariable('SAMPLE_INPUT_PLUGINS', 'Compile and install sample plugins', 'False'),
@@ -371,7 +373,7 @@ opts.AddVariables(
pickle_store = [# Scons internal variables
'CC', # compiler user to check if c deps compile during configure
'CXX', # C++ compiler to compile mapnik
- 'CCFLAGS',
+ 'CFLAGS',
'CPPDEFINES',
'CPPFLAGS', # c preprocessor flags
'CPPPATH',
@@ -381,6 +383,7 @@ pickle_store = [# Scons internal variables
'LINKFLAGS',
'CUSTOM_LDFLAGS', # user submitted
'CUSTOM_CXXFLAGS', # user submitted
+ 'CUSTOM_CFLAGS', # user submitted
'MAPNIK_LIB_NAME',
'LINK',
'RUNTIME_LINK',
@@ -423,7 +426,7 @@ pickle_store = [# Scons internal variables
'CAIROMM_LIBPATHS',
'CAIROMM_LINKFLAGS',
'CAIROMM_CPPPATHS',
- 'SVG_RENDERER',
+ #'SVG_RENDERER',
'SQLITE_LINKFLAGS',
'BOOST_LIB_VERSION_FROM_HEADER'
]
@@ -445,7 +448,7 @@ HELP_REQUESTED = False
if ('-h' in command_line_args) or ('--help' in command_line_args):
HELP_REQUESTED = True
-
+
if 'configure' in command_line_args and not HELP_REQUESTED:
force_configure = True
@@ -480,10 +483,10 @@ for opt in pickle_store:
# if custom arguments are supplied make sure to accept them
if opts.args:
- # since we have custom arguments update environment with all opts to
+ # since we have custom arguments update environment with all opts to
# make sure to absorb the custom ones
opts.Update(env)
- # now since we've got custom arguments we'll disregard any
+ # now since we've got custom arguments we'll disregard any
# pickled environment and force another configuration
preconfigured = False
@@ -502,7 +505,7 @@ color_print(4,'\nWelcome to Mapnik...\n')
#### Custom Configure Checks ###
-def prioritize_paths(context,silent=True):
+def prioritize_paths(context,silent=True):
env = context.env
prefs = env['LINK_PRIORITY'].split(',')
if not silent:
@@ -570,7 +573,7 @@ def parse_config(context, config, checks='--libs --cflags'):
env['SKIPPED_DEPS'].append(tool)
conf.rollback_option(config)
else: # freetype and libxml2, not optional
- env['MISSING_DEPS'].append(tool)
+ env['MISSING_DEPS'].append(tool)
context.Result( ret )
return ret
@@ -635,18 +638,18 @@ def rollback_option(context,variable):
def FindBoost(context, prefixes, thread_flag):
"""Routine to auto-find boost header dir, lib dir, and library naming structure.
-
+
"""
context.Message( 'Searching for boost libs and headers... ' )
env = context.env
-
+
BOOST_LIB_DIR = None
BOOST_INCLUDE_DIR = None
BOOST_APPEND = None
env['BOOST_APPEND'] = str()
-
+
if env['THREADING'] == 'multi':
- search_lib = 'libboost_thread'
+ search_lib = 'libboost_thread'
else:
search_lib = 'libboost_filesystem'
@@ -655,7 +658,7 @@ def FindBoost(context, prefixes, thread_flag):
prefixes.insert(0,os.path.dirname(os.path.normpath(env['BOOST_INCLUDES'])))
prefixes.insert(0,os.path.dirname(os.path.normpath(env['BOOST_LIBS'])))
for searchDir in prefixes:
- libItems = glob(os.path.join(searchDir, LIBDIR_SCHEMA, '%s*.*' % search_lib))
+ libItems = glob(os.path.join(searchDir, env['LIBDIR_SCHEMA'], '%s*.*' % search_lib))
if not libItems:
libItems = glob(os.path.join(searchDir, 'lib/%s*.*' % search_lib))
incItems = glob(os.path.join(searchDir, 'include/boost*/'))
@@ -667,23 +670,23 @@ def FindBoost(context, prefixes, thread_flag):
if hasattr(match,'groups'):
BOOST_APPEND = match.groups()[0]
break
-
+
msg = str()
-
+
if BOOST_LIB_DIR:
msg += '\n *libs found: %s' % BOOST_LIB_DIR
env['BOOST_LIBS'] = BOOST_LIB_DIR
else:
- env['BOOST_LIBS'] = '/usr/' + LIBDIR_SCHEMA
+ env['BOOST_LIBS'] = '/usr/' + env['LIBDIR_SCHEMA']
msg += '\n *using default boost lib dir: %s' % env['BOOST_LIBS']
-
+
if BOOST_INCLUDE_DIR:
msg += '\n *headers found: %s' % BOOST_INCLUDE_DIR
env['BOOST_INCLUDES'] = BOOST_INCLUDE_DIR
else:
env['BOOST_INCLUDES'] = '/usr/include'
- msg += '\n *using default boost include dir: %s' % env['BOOST_INCLUDES']
-
+ msg += '\n *using default boost include dir: %s' % env['BOOST_INCLUDES']
+
if not env['BOOST_TOOLKIT'] and not env['BOOST_ABI'] and not env['BOOST_VERSION']:
if BOOST_APPEND:
msg += '\n *lib naming extension found: %s' % BOOST_APPEND
@@ -702,12 +705,12 @@ def FindBoost(context, prefixes, thread_flag):
# Constructing the BOOST_APPEND setting that will be used to find the