remove osx packaging support files: moved to https://github.com/mapnik/mapnik-packaging
This commit is contained in:
parent
03ea9feb99
commit
2b7fd14e84
25 changed files with 0 additions and 2872 deletions
|
@ -1,26 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>CFBundleDevelopmentRegion</key>
|
||||
<string>English</string>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>Mapnik</string>
|
||||
<key>CFBundleGetInfoString</key>
|
||||
<string>Mapnik 2.0.0-1</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>org.mapnik</string>
|
||||
<key>CFBundleInfoDictionaryVersion</key>
|
||||
<string>2.0</string>
|
||||
<key>CFBundleName</key>
|
||||
<string>Mapnik</string>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>FMWK</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>0.2.0</string>
|
||||
<key>CFBundleSignature</key>
|
||||
<string>????</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>Mapnik 2.0.0-1</string>
|
||||
</dict>
|
||||
</plist>
|
|
@ -1,7 +0,0 @@
|
|||
A few scripts to assist with building a Mapnik.framework for OS X.
|
||||
|
||||
It is not currently meant for others to use, but eventually I may
|
||||
add docs and instructions such that others can build their own
|
||||
framework packages.
|
||||
|
||||
Contact Dane (dane@dbsgeo.com) with any questions.
|
|
@ -1,29 +0,0 @@
|
|||
CXX = 'clang++'
|
||||
CC = 'clang'
|
||||
CUSTOM_CXXFLAGS = '-arch i386 -arch x86_64 -mmacosx-version-min=10.6 -isysroot /Developer/SDKs/MacOSX10.6.sdk -isystem osx/sources/include'
|
||||
CUSTOM_LDFLAGS = '-arch i386 -arch x86_64 -Wl,-search_paths_first -Wl,-syslibroot,/Developer/SDKs/MacOSX10.6.sdk -Losx/sources/lib '
|
||||
RUNTIME_LINK = 'static'
|
||||
INPUT_PLUGINS = 'gdal,ogr,postgis,shape,sqlite'
|
||||
DESTDIR = './osx/sources/'
|
||||
PATH_INSERT = './osx/sources/bin/'
|
||||
BOOST_INCLUDES = 'osx/sources/include'
|
||||
BOOST_LIBS = 'osx/sources/lib'
|
||||
FREETYPE_CONFIG = './osx/sources/bin/freetype-config'
|
||||
ICU_INCLUDES = './osx/sources/include'
|
||||
ICU_LIB_NAME = 'icucore'
|
||||
PNG_INCLUDES = './osx/sources/include'
|
||||
PNG_LIBS = './osx/sources/lib'
|
||||
JPEG_INCLUDES = './osx/sources/include'
|
||||
JPEG_LIBS = './osx/sources/lib'
|
||||
TIFF_INCLUDES = './osx/sources/include'
|
||||
TIFF_LIBS = './osx/sources/lib'
|
||||
PROJ_INCLUDES = './osx/sources/include'
|
||||
PROJ_LIBS = './osx/sources/lib'
|
||||
PKG_CONFIG_PATH = './osx/sources/lib/pkgconfig'
|
||||
CAIRO_INCLUDES = './osx/sources/include/'
|
||||
CAIRO_LIBS = './osx/sources/lib'
|
||||
SQLITE_INCLUDES = './osx/sources/include'
|
||||
SQLITE_LIBS = './osx/sources/lib'
|
||||
BINDINGS = 'none'
|
||||
DEMO = True
|
||||
PGSQL2SQLITE = True
|
|
@ -1,29 +0,0 @@
|
|||
CXX = 'clang++'
|
||||
CC = 'clang'
|
||||
CUSTOM_CXXFLAGS = '-arch i386 -arch x86_64 -mmacosx-version-min=10.6 -isysroot /Developer/SDKs/MacOSX10.6.sdk -isystem osx/sources/include'
|
||||
CUSTOM_LDFLAGS = '-arch i386 -arch x86_64 -headerpad_max_install_names -Wl,-search_paths_first -Wl,-syslibroot,/Developer/SDKs/MacOSX10.6.sdk -Losx/sources/lib '
|
||||
INPUT_PLUGINS = 'gdal,geos,ogr,osm,postgis,raster,shape,sqlite'
|
||||
PREFIX = '/Library/Frameworks/Mapnik.framework/Versions/2.0/unix'
|
||||
PYTHON_PREFIX = '/Library/Frameworks/Mapnik.framework/Versions/2.0/unix'
|
||||
DESTDIR = '/Users/dane/projects/mapnik-dev/trunk-build/osx/'
|
||||
PATH_INSERT = './osx/sources/bin/'
|
||||
BOOST_INCLUDES = 'osx/sources/include'
|
||||
BOOST_LIBS = 'osx/sources/lib'
|
||||
BOOST_PYTHON_LIB = 'boost_python32'
|
||||
PNG_INCLUDES = '/Library/Frameworks/UnixImageIO.framework/unix/include'
|
||||
PNG_LIBS = '/Library/Frameworks/UnixImageIO.framework/unix/lib'
|
||||
JPEG_INCLUDES = '/Library/Frameworks/UnixImageIO.framework/unix/include'
|
||||
JPEG_LIBS = '/Library/Frameworks/UnixImageIO.framework/unix/lib'
|
||||
TIFF_INCLUDES = '/Library/Frameworks/UnixImageIO.framework/unix/include'
|
||||
TIFF_LIBS = '/Library/Frameworks/UnixImageIO.framework/unix/lib'
|
||||
PROJ_INCLUDES = '/Library/Frameworks/PROJ.framework/unix/include'
|
||||
PROJ_LIBS = '/Library/Frameworks/PROJ.framework/unix/lib'
|
||||
PKG_CONFIG_PATH = './osx/sources/lib/pkgconfig'
|
||||
GEOS_CONFIG = '/Library/Frameworks/GEOS.framework/unix/bin/geos-config'
|
||||
SQLITE_INCLUDES = './osx/sources/include'
|
||||
SQLITE_LIBS = './osx/sources/lib'
|
||||
PYTHON = '/Library/Frameworks/Python.framework/Versions/3.2/bin/python3.2m'
|
||||
PYTHON_DYNAMIC_LOOKUP = True
|
||||
BINDINGS = 'all'
|
||||
DEMO = True
|
||||
PGSQL2SQLITE = True
|
|
@ -1,17 +0,0 @@
|
|||
{\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf350
|
||||
{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
|
||||
{\colortbl;\red255\green255\blue255;}
|
||||
\margl1440\margr1440\vieww9000\viewh8400\viewkind0
|
||||
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural\pardirnatural
|
||||
|
||||
\f0\b\fs24 \cf0 Learning Mapnik\
|
||||
\
|
||||
|
||||
\b0 Find documentation at: {\field{\*\fldinst{HYPERLINK "http://mapnik.org/documentation/"}}{\fldrslt mapnik.org}}\
|
||||
|
||||
\b \
|
||||
|
||||
\b0 Join Mapnik IRC (chat): at {\field{\*\fldinst{HYPERLINK "irc://irc.freenode.net#mapnik"}}{\fldrslt irc.freenode.net}}\
|
||||
\
|
||||
Sign up and post to the community mailing list: {\field{\*\fldinst{HYPERLINK "http://lists.berlios.de/mailman/listinfo/mapnik-users"}}{\fldrslt Mapnik users}}\
|
||||
}
|
|
@ -1,28 +0,0 @@
|
|||
{\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf350
|
||||
{\fonttbl\f0\fnil\fcharset0 LucidaGrande;}
|
||||
{\colortbl;\red255\green255\blue255;\red0\green0\blue153;}
|
||||
\margl1440\margr1440\vieww18660\viewh8460\viewkind0
|
||||
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural\pardirnatural
|
||||
|
||||
\f0\b\fs28 \cf0 Mapnik
|
||||
\b0 is an OpenSource C++/Python toolkit for developing mapping applications.
|
||||
\fs26 \
|
||||
|
||||
\fs24 \
|
||||
At the core is a C++ shared library providing algorithms/patterns for spatial data access and visualization.\
|
||||
\
|
||||
Essentially a collection of geographic objects (map, layer, datasource, feature, geometry), the library doesn't rely on "windowing systems" and can be deployed in any server environment. \
|
||||
\
|
||||
It is intended to play fair in a multi-threaded environment and is aimed primarily, but not exclusively, at web-based development.\
|
||||
\
|
||||
High-level Python bindings (boost.python) facilitate rapid application development, targeting zope3, django etc.\
|
||||
\
|
||||
Mapnik is a free software and is released under LGPL (GNU Lesser General Public Licence) (see COPYING)\
|
||||
\
|
||||
For further information see:\
|
||||
\'95 {\field{\*\fldinst{HYPERLINK "http://mapnik.org"}}{\fldrslt \cf2 \expnd0\expndtw0\kerning0
|
||||
\ul \ulc2 http://mapnik.org}}\
|
||||
\'95 {\field{\*\fldinst{HYPERLINK "http://trac.mapnik.org"}}{\fldrslt \cf2 \expnd0\expndtw0\kerning0
|
||||
\ul \ulc2 http://trac.mapnik.org}}\
|
||||
\'95 {\field{\*\fldinst{HYPERLINK "http://ohloh.net/p/mapnik"}}{\fldrslt \cf2 \expnd0\expndtw0\kerning0
|
||||
\ul \ulc2 http://ohloh.net/p/mapnik}}}
|
|
@ -1,177 +0,0 @@
|
|||
{\rtf1\ansi\ansicpg1252\cocoartf949\cocoasubrtf540
|
||||
{\fonttbl\f0\fnil\fcharset0 LucidaGrande;}
|
||||
{\colortbl;\red255\green255\blue255;\red0\green0\blue153;}
|
||||
\margl1440\margr1440\vieww9000\viewh8400\viewkind0
|
||||
\deftab720
|
||||
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardeftab720\ql\qnatural\pardirnatural
|
||||
|
||||
\f0\b\fs22 \cf0 \expnd0\expndtw0\kerning0
|
||||
GNU LESSER GENERAL PUBLIC LICENSE
|
||||
\b0 \
|
||||
|
||||
\b Version 3, 29 June 2007
|
||||
\b0 \
|
||||
\
|
||||
Copyright (C) 2007 Free Software Foundation, Inc. <{\field{\*\fldinst{HYPERLINK "http://fsf.org"}}{\fldrslt \cf2 \expnd0\expndtw0\kerning0
|
||||
\ul \ulc2 http://fsf.org/}}>\
|
||||
Everyone is permitted to copy and distribute verbatim copies\
|
||||
of this license document, but changing it is not allowed.\
|
||||
\
|
||||
\
|
||||
This version of the GNU Lesser General Public License incorporates\
|
||||
the terms and conditions of version 3 of the GNU General Public\
|
||||
License, supplemented by the additional permissions listed below.\
|
||||
\
|
||||
0. Additional Definitions.\
|
||||
\
|
||||
As used herein, "this License" refers to version 3 of the GNU Lesser\
|
||||
General Public License, and the "GNU GPL" refers to version 3 of the GNU\
|
||||
General Public License.\
|
||||
\
|
||||
"The Library" refers to a covered work governed by this License,\
|
||||
other than an Application or a Combined Work as defined below.\
|
||||
\
|
||||
An "Application" is any work that makes use of an interface provided\
|
||||
by the Library, but which is not otherwise based on the Library.\
|
||||
Defining a subclass of a class defined by the Library is deemed a mode\
|
||||
of using an interface provided by the Library.\
|
||||
\
|
||||
A "Combined Work" is a work produced by combining or linking an\
|
||||
Application with the Library. The particular version of the Library\
|
||||
with which the Combined Work was made is also called the "Linked\
|
||||
Version".\
|
||||
\
|
||||
The "Minimal Corresponding Source" for a Combined Work means the\
|
||||
Corresponding Source for the Combined Work, excluding any source code\
|
||||
for portions of the Combined Work that, considered in isolation, are\
|
||||
based on the Application, and not on the Linked Version.\
|
||||
\
|
||||
The "Corresponding Application Code" for a Combined Work means the\
|
||||
object code and/or source code for the Application, including any data\
|
||||
and utility programs needed for reproducing the Combined Work from the\
|
||||
Application, but excluding the System Libraries of the Combined Work.\
|
||||
\
|
||||
1. Exception to Section 3 of the GNU GPL.\
|
||||
\
|
||||
You may convey a covered work under sections 3 and 4 of this License\
|
||||
without being bound by section 3 of the GNU GPL.\
|
||||
\
|
||||
2. Conveying Modified Versions.\
|
||||
\
|
||||
If you modify a copy of the Library, and, in your modifications, a\
|
||||
facility refers to a function or data to be supplied by an Application\
|
||||
that uses the facility (other than as an argument passed when the\
|
||||
facility is invoked), then you may convey a copy of the modified\
|
||||
version:\
|
||||
\
|
||||
a) under this License, provided that you make a good faith effort to\
|
||||
ensure that, in the event an Application does not supply the\
|
||||
function or data, the facility still operates, and performs\
|
||||
whatever part of its purpose remains meaningful, or\
|
||||
\
|
||||
b) under the GNU GPL, with none of the additional permissions of\
|
||||
this License applicable to that copy.\
|
||||
\
|
||||
3. Object Code Incorporating Material from Library Header Files.\
|
||||
\
|
||||
The object code form of an Application may incorporate material from\
|
||||
a header file that is part of the Library. You may convey such object\
|
||||
code under terms of your choice, provided that, if the incorporated\
|
||||
material is not limited to numerical parameters, data structure\
|
||||
layouts and accessors, or small macros, inline functions and templates\
|
||||
(ten or fewer lines in length), you do both of the following:\
|
||||
\
|
||||
a) Give prominent notice with each copy of the object code that the\
|
||||
Library is used in it and that the Library and its use are\
|
||||
covered by this License.\
|
||||
\
|
||||
b) Accompany the object code with a copy of the GNU GPL and this license\
|
||||
document.\
|
||||
\
|
||||
4. Combined Works.\
|
||||
\
|
||||
You may convey a Combined Work under terms of your choice that,\
|
||||
taken together, effectively do not restrict modification of the\
|
||||
portions of the Library contained in the Combined Work and reverse\
|
||||
engineering for debugging such modifications, if you also do each of\
|
||||
the following:\
|
||||
\
|
||||
a) Give prominent notice with each copy of the Combined Work that\
|
||||
the Library is used in it and that the Library and its use are\
|
||||
covered by this License.\
|
||||
\
|
||||
b) Accompany the Combined Work with a copy of the GNU GPL and this license\
|
||||
document.\
|
||||
\
|
||||
c) For a Combined Work that displays copyright notices during\
|
||||
execution, include the copyright notice for the Library among\
|
||||
these notices, as well as a reference directing the user to the\
|
||||
copies of the GNU GPL and this license document.\
|
||||
\
|
||||
d) Do one of the following:\
|
||||
\
|
||||
0) Convey the Minimal Corresponding Source under the terms of this\
|
||||
License, and the Corresponding Application Code in a form\
|
||||
suitable for, and under terms that permit, the user to\
|
||||
recombine or relink the Application with a modified version of\
|
||||
the Linked Version to produce a modified Combined Work, in the\
|
||||
manner specified by section 6 of the GNU GPL for conveying\
|
||||
Corresponding Source.\
|
||||
\
|
||||
1) Use a suitable shared library mechanism for linking with the\
|
||||
Library. A suitable mechanism is one that (a) uses at run time\
|
||||
a copy of the Library already present on the user's computer\
|
||||
system, and (b) will operate properly with a modified version\
|
||||
of the Library that is interface-compatible with the Linked\
|
||||
Version.\
|
||||
\
|
||||
e) Provide Installation Information, but only if you would otherwise\
|
||||
be required to provide such information under section 6 of the\
|
||||
GNU GPL, and only to the extent that such information is\
|
||||
necessary to install and execute a modified version of the\
|
||||
Combined Work produced by recombining or relinking the\
|
||||
Application with a modified version of the Linked Version. (If\
|
||||
you use option 4d0, the Installation Information must accompany\
|
||||
the Minimal Corresponding Source and Corresponding Application\
|
||||
Code. If you use option 4d1, you must provide the Installation\
|
||||
Information in the manner specified by section 6 of the GNU GPL\
|
||||
for conveying Corresponding Source.)\
|
||||
\
|
||||
5. Combined Libraries.\
|
||||
\
|
||||
You may place library facilities that are a work based on the\
|
||||
Library side by side in a single library together with other library\
|
||||
facilities that are not Applications and are not covered by this\
|
||||
License, and convey such a combined library under terms of your\
|
||||
choice, if you do both of the following:\
|
||||
\
|
||||
a) Accompany the combined library with a copy of the same work based\
|
||||
on the Library, uncombined with any other library facilities,\
|
||||
conveyed under the terms of this License.\
|
||||
\
|
||||
b) Give prominent notice with the combined library that part of it\
|
||||
is a work based on the Library, and explaining where to find the\
|
||||
accompanying uncombined form of the same work.\
|
||||
\
|
||||
6. Revised Versions of the GNU Lesser General Public License.\
|
||||
\
|
||||
The Free Software Foundation may publish revised and/or new versions\
|
||||
of the GNU Lesser General Public License from time to time. Such new\
|
||||
versions will be similar in spirit to the present version, but may\
|
||||
differ in detail to address new problems or concerns.\
|
||||
\
|
||||
Each version is given a distinguishing version number. If the\
|
||||
Library as you received it specifies that a certain numbered version\
|
||||
of the GNU Lesser General Public License "or any later version"\
|
||||
applies to it, you have the option of following the terms and\
|
||||
conditions either of that published version or of any later version\
|
||||
published by the Free Software Foundation. If the Library as you\
|
||||
received it does not specify a version number of the GNU Lesser\
|
||||
General Public License, you may choose any version of the GNU Lesser\
|
||||
General Public License ever published by the Free Software Foundation.\
|
||||
\
|
||||
If the Library as you received it specifies that a proxy can decide\
|
||||
whether future versions of the GNU Lesser General Public License shall\
|
||||
apply, that proxy's public statement of acceptance of any version is\
|
||||
permanent authorization for you to choose that version for the\
|
||||
Library.}
|
Binary file not shown.
Before Width: | Height: | Size: 13 KiB |
|
@ -1,150 +0,0 @@
|
|||
{\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf350
|
||||
{\fonttbl\f0\fnil\fcharset0 LucidaGrande;\f1\fnil\fcharset0 AndaleMono;}
|
||||
{\colortbl;\red255\green255\blue255;}
|
||||
\margl1440\margr1440\vieww11580\viewh11940\viewkind0
|
||||
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural\pardirnatural
|
||||
|
||||
\f0\fs32 \cf0 Welcome to Mapnik!
|
||||
\fs34 \
|
||||
|
||||
\fs24 \
|
||||
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural\pardirnatural
|
||||
|
||||
\b\fs28 \cf0 Quickstart
|
||||
\b0\fs22 \
|
||||
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural\pardirnatural
|
||||
|
||||
\fs24 \cf0 \
|
||||
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural\pardirnatural
|
||||
|
||||
\b \cf0 \'95
|
||||
\b0 Install the "Mapnik.pkg".\
|
||||
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural\pardirnatural
|
||||
|
||||
\b\fs22 \cf0 \
|
||||
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural\pardirnatural
|
||||
|
||||
\fs24 \cf0 \'95
|
||||
\b0 Test your installation via Python:\
|
||||
\
|
||||
Open the Terminal.app and confirm that below command returns 'True':\
|
||||
\
|
||||
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural\pardirnatural
|
||||
|
||||
\f1 \cf0 $ python -c "import mapnik2; print 'Mapnik.framework' in mapnik2.__file__"
|
||||
\f0 \
|
||||
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural\pardirnatural
|
||||
|
||||
\fs26 \cf0 \
|
||||
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural\pardirnatural
|
||||
|
||||
\fs24 \cf0 If it does then Mapnik is installed correctly! You can now head along to {\field{\*\fldinst{HYPERLINK "http://mapnik.org"}}{\fldrslt http://mapnik.org}} for documentation.
|
||||
\b\fs22 \
|
||||
|
||||
\b0\fs24 \
|
||||
If it does not then you may need to add this line to your environment settings:\
|
||||
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural\pardirnatural
|
||||
|
||||
\f1 \cf0 \
|
||||
export PYTHONPATH=/Library/Frameworks/Mapnik.framework/Python:$PYTHONPATH\
|
||||
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural\pardirnatural
|
||||
|
||||
\f0 \cf0 \
|
||||
\
|
||||
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural\pardirnatural
|
||||
|
||||
\b\fs28 \cf0 Details\
|
||||
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural\pardirnatural
|
||||
|
||||
\b0\fs24 \cf0 \
|
||||
This installer only works for Snow Leopard (10.6).\
|
||||
\
|
||||
This install should play nicely with any existing installations of Mapnik.\
|
||||
\
|
||||
It automatically puts the following lines in your ~/.bash_profile to enable Mapnik:\
|
||||
\
|
||||
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural\pardirnatural
|
||||
|
||||
\f1 \cf0 export PATH=/Library/Frameworks/Mapnik.framework/Programs:$PATH\
|
||||
export PYTHONPATH=/Library/Frameworks/Mapnik.framework/Python:$PYTHONPATH\
|
||||
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural\pardirnatural
|
||||
|
||||
\f0 \cf0 \
|
||||
It also enables the Mapnik python bindings for QGIS/Python2.6 by putting a 'mapnik2.pth' file in:\
|
||||
\
|
||||
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural\pardirnatural
|
||||
|
||||
\f1 \cf0 /Library/Python/2.6/site-packages\
|
||||
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural\pardirnatural
|
||||
|
||||
\f0 \cf0 \
|
||||
This Mapnik installer includes:\
|
||||
\
|
||||
*
|
||||
\b Mapnik Core
|
||||
\b0 (mapnik library)\
|
||||
*
|
||||
\b Python bindings
|
||||
\b0 compatible with versions:\
|
||||
- 2.5, 2.6, 2.7, and 3.1\
|
||||
*
|
||||
\b Datasources
|
||||
\b0 (aka "input plugins"):\
|
||||
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural\pardirnatural
|
||||
|
||||
\fs22 \cf0 - Shapefile, PostGIS, Raster, GDAL, OGR,\
|
||||
GEOS, SQLite, Rasterlite, OSM, Kismet \
|
||||
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural\pardirnatural
|
||||
|
||||
\fs24 \cf0 *
|
||||
\b Dependencies:
|
||||
\b0 Boost, ICU, Cairo, Freetype2 and other minor libraries\
|
||||
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural\pardirnatural
|
||||
|
||||
\fs26 \cf0 *
|
||||
\b GDAL_Complete-1.8.dmg
|
||||
\b0 from:\
|
||||
|
||||
\fs24 - http://www.kyngchaos.com/software/frameworks
|
||||
\fs26 \
|
||||
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural\pardirnatural
|
||||
|
||||
\fs24 \cf0 \
|
||||
\
|
||||
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural\pardirnatural
|
||||
|
||||
\b\fs28 \cf0 Uninstalling\
|
||||
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural\pardirnatural
|
||||
|
||||
\b0\fs24 \cf0 \
|
||||
To disable this installation remove the lines including '
|
||||
\f1 /Library/Frameworks/Mapnik.framework'
|
||||
\f0 from your ~/.bash_profile\
|
||||
\
|
||||
And remove this file\
|
||||
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural\pardirnatural
|
||||
|
||||
\f1 \cf0 \
|
||||
/Library/Python/2.6/site-packages/mapnik2.pth\
|
||||
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural\pardirnatural
|
||||
|
||||
\f0 \cf0 \
|
||||
To fully remove the Installation remove this folder:\
|
||||
\
|
||||
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural\pardirnatural
|
||||
|
||||
\f1 \cf0 /Library/Frameworks/Mapnik.framework\
|
||||
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural\pardirnatural
|
||||
|
||||
\f0 \cf0 \
|
||||
\
|
||||
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural\pardirnatural
|
||||
|
||||
\b\fs28 \cf0 Issues?\
|
||||
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural\pardirnatural
|
||||
|
||||
\b0\fs24 \cf0 \
|
||||
Any questions or problems with the installer please get in touch with Dane (
|
||||
\b dane@dbsgeo.com
|
||||
\b0 ).\
|
||||
}
|
|
@ -1,15 +0,0 @@
|
|||
#!/bin/bash
|
||||
|
||||
# TODO
|
||||
# - find safer way to do this: http://trac.mapnik.org/ticket/776
|
||||
# - check for ~/.profile so that adding a new bash_profile does not override
|
||||
|
||||
# backup bash_profile
|
||||
cp ~/.bash_profile ~/.bash_profile.mapnik.backup
|
||||
|
||||
# add installer Programs to PATH
|
||||
# by appending new entries to bash_profile
|
||||
echo '' >> ~/.bash_profile
|
||||
echo '# Settings for Mapnik.framework Installer to enable Mapnik programs and python bindings' >> ~/.bash_profile
|
||||
echo 'export PATH=/Library/Frameworks/Mapnik.framework/Programs:$PATH' >> ~/.bash_profile
|
||||
echo 'export PYTHONPATH=/Library/Frameworks/Mapnik.framework/Python:$PYTHONPATH' >> ~/.bash_profile
|
|
@ -1,14 +0,0 @@
|
|||
Index: libs/python/src/converter/builtin_converters.cpp
|
||||
===================================================================
|
||||
--- libs/python/src/converter/builtin_converters.cpp (revision 56305)
|
||||
+++ libs/python/src/converter/builtin_converters.cpp (revision 71050)
|
||||
@@ -432,5 +432,8 @@
|
||||
{
|
||||
int err = PyUnicode_AsWideChar(
|
||||
- (PyUnicodeObject *)intermediate
|
||||
+#if PY_VERSION_HEX < 0x03020000
|
||||
+ (PyUnicodeObject *)
|
||||
+#endif
|
||||
+ intermediate
|
||||
, &result[0]
|
||||
, result.size());
|
|
@ -1,14 +0,0 @@
|
|||
Index: libs/python/src/converter/builtin_converters.cpp
|
||||
===================================================================
|
||||
--- libs/python/src/converter/builtin_converters.cpp (revision 67415)
|
||||
+++ libs/python/src/converter/builtin_converters.cpp (working copy)
|
||||
@@ -375,7 +375,8 @@
|
||||
static unaryfunc* get_slot(PyObject* obj)
|
||||
{
|
||||
#if PY_VERSION_HEX >= 0x03000000
|
||||
- return (PyUnicode_Check(obj)) ? &py_unicode_as_string_unaryfunc : 0;
|
||||
+ return (PyUnicode_Check(obj)) ? &py_unicode_as_string_unaryfunc :
|
||||
+ PyBytes_Check(obj) ? &py_object_identity : 0;
|
||||
#else
|
||||
return (PyString_Check(obj)) ? &obj->ob_type->tp_str : 0;
|
||||
|
|
@ -1,15 +0,0 @@
|
|||
Index: utils/mapnik-config/SConscript
|
||||
===================================================================
|
||||
--- utils/mapnik-config/SConscript (revision 2594)
|
||||
+++ utils/mapnik-config/SConscript (working copy)
|
||||
@@ -64,8 +64,8 @@
|
||||
version='%(version)s'
|
||||
mapnik_libname=%(mapnik_libname)s
|
||||
private_libs='%(private_libs)s'
|
||||
-other_libs='%(other_libs)s'
|
||||
-other_includes='%(other_includes)s'
|
||||
+other_libs='-arch i386 -arch x86_64 -headerpad_max_install_names -L/Library/Frameworks/Mapnik.framework/unix/lib -L/Library/Frameworks/UnixImageIO.framework/unix/lib -L/Library/Frameworks/PROJ.framework/unix/lib -lfreetype -licuuc -lboost_filesystem -lboost_regex -lboost_thread -lboost_system -lcairomm-1.0 -lcairo'
|
||||
+other_includes='-arch i386 -arch x86_64 -I/Library/Frameworks/Mapnik.framework/unix/include -I/Library/Frameworks/Mapnik.framework/unix/include/cairo -I/Library/Frameworks/Mapnik.framework/unix/include/cairomm-1.0 -I/Library/Frameworks/Mapnik.framework/unix/include/sigc++-2.0 -I/Library/Frameworks/Mapnik.framework/unix/lib/sigc++-2.0/include/ -I/Library/Frameworks/Mapnik.framework/unix/include/freetype2 -I/Library/Frameworks/UnixImageIO.framework/unix/include -I/Library/Frameworks/PROJ.framework/unix/include -I/usr/include/libxml2'
|
||||
fonts='%(fonts)s'
|
||||
input_plugins='%(input_plugins)s'
|
||||
svn_revision='%(svn_revision)s'
|
|
@ -1,26 +0,0 @@
|
|||
Index: plugins/input/postgis/SConscript
|
||||
===================================================================
|
||||
--- plugins/input/postgis/SConscript (revision 2476)
|
||||
+++ plugins/input/postgis/SConscript (working copy)
|
||||
@@ -33,7 +33,11 @@
|
||||
"""
|
||||
)
|
||||
|
||||
-libraries = ['pq']
|
||||
+static = '-lintl -liconv -lxml2 -lpam -lssl -lcrypto -lkrb5 -lldap -lreadline -lz'
|
||||
+libraries = ['pq_s']
|
||||
+libraries.extend(static.split(' '))
|
||||
+ldflags = env['CUSTOM_LDFLAGS']
|
||||
+ldflags += ' -framework CoreFoundation'
|
||||
|
||||
if env['PLATFORM'] == 'Darwin':
|
||||
libraries.append('mapnik2')
|
||||
@@ -41,7 +45,7 @@
|
||||
if env['THREADING'] == 'multi':
|
||||
libraries.append('boost_thread%s' % env['BOOST_APPEND'])
|
||||
|
||||
-input_plugin = plugin_env.SharedLibrary('../postgis', source=postgis_src, SHLIBPREFIX='', SHLIBSUFFIX='.input', LIBS=libraries, LINKFLAGS=env['CUSTOM_LDFLAGS'])
|
||||
+input_plugin = plugin_env.SharedLibrary('../postgis', source=postgis_src, SHLIBPREFIX='', SHLIBSUFFIX='.input', LIBS=libraries, LINKFLAGS=ldflags)
|
||||
|
||||
if env['PLATFORM'] == 'Darwin':
|
||||
# if the plugin links to libmapnik2 ensure it is built first
|
|
@ -1,14 +0,0 @@
|
|||
Index: tests/run_tests.py
|
||||
===================================================================
|
||||
--- tests/run_tests.py (revision 2488)
|
||||
+++ tests/run_tests.py (working copy)
|
||||
@@ -46,7 +46,8 @@
|
||||
|
||||
if not quiet:
|
||||
print "- mapnik2 path: %s" % mapnik2.__file__
|
||||
- print "- _mapnik2.so path: %s" % mapnik2._mapnik2.__file__
|
||||
+ if hasattr(mapnik2,'_mapnik2'):
|
||||
+ print "- _mapnik2.so path: %s" % mapnik2._mapnik2.__file__
|
||||
print "- Input plugins path: %s" % mapnik2.inputpluginspath
|
||||
print "- Font path: %s" % mapnik2.fontscollectionpath
|
||||
print
|
|
@ -1,82 +0,0 @@
|
|||
Index: demo/viewer/viewer.pro
|
||||
===================================================================
|
||||
--- demo/viewer/viewer.pro (revision 2594)
|
||||
+++ demo/viewer/viewer.pro (working copy)
|
||||
@@ -5,14 +5,33 @@
|
||||
TEMPLATE = app
|
||||
|
||||
INCLUDEPATH += /usr/local/include/
|
||||
-INCLUDEPATH += /usr/boost/include/
|
||||
-INCLUDEPATH += /usr/X11/include/
|
||||
-INCLUDEPATH += /usr/X11/include/freetype2
|
||||
+INCLUDEPATH += /Library/Frameworks/Mapnik.framework/unix/include
|
||||
+INCLUDEPATH += /Library/Frameworks/Mapnik.framework/unix/include/cairo
|
||||
+INCLUDEPATH += /Library/Frameworks/Mapnik.framework/unix/include/cairomm-1.0
|
||||
+INCLUDEPATH += /Library/Frameworks/Mapnik.framework/unix/include/sigc++-2.0
|
||||
+INCLUDEPATH += /Library/Frameworks/Mapnik.framework/unix/lib/sigc++-2.0/include/
|
||||
+INCLUDEPATH += /Library/Frameworks/Mapnik.framework/unix/include/freetype2
|
||||
+INCLUDEPATH += /Library/Frameworks/UnixImageIO.framework/unix/include
|
||||
+INCLUDEPATH += /Library/Frameworks/PROJ.framework/unix/include
|
||||
+INCLUDEPATH += /usr/include/libxml2
|
||||
INCLUDEPATH += .
|
||||
|
||||
-QMAKE_CXXFLAGS +=' -DDARWIN -Wno-missing-field-initializers -ansi'
|
||||
-unix:LIBS = -L/usr/local/lib -L/usr/X11/lib -lmapnik2 -lfreetype
|
||||
-unix:LIBS += -lboost_system -licuuc -lboost_filesystem -lboost_regex
|
||||
+QMAKE_CXXFLAGS +=' -arch i386 -arch x86_64 -DDARWIN -Wno-missing-field-initializers -ansi'
|
||||
+unix:LIBS = -arch i386
|
||||
+unix:LIBS += -arch x86_64
|
||||
+unix:LIBS += -headerpad_max_install_names
|
||||
+unix:LIBS += -L/Library/Frameworks/Mapnik.framework/unix/lib
|
||||
+unix:LIBS += -lmapnik2
|
||||
+unix:LIBS += -L/Library/Frameworks/UnixImageIO.framework/unix/lib
|
||||
+unix:LIBS += -L/Library/Frameworks/PROJ.framework/unix/lib
|
||||
+unix:LIBS += -lfreetype
|
||||
+unix:LIBS += -licuuc
|
||||
+unix:LIBS += -lboost_filesystem
|
||||
+unix:LIBS += -lboost_regex
|
||||
+unix:LIBS += -lboost_thread
|
||||
+unix:LIBS += -lboost_system
|
||||
+unix:LIBS += -lcairomm-1.0
|
||||
+unix:LIBS += -lcairo
|
||||
|
||||
# Input
|
||||
|
||||
Index: demo/viewer/main.cpp
|
||||
===================================================================
|
||||
--- demo/viewer/main.cpp (revision 2594)
|
||||
+++ demo/viewer/main.cpp (working copy)
|
||||
@@ -43,22 +43,24 @@
|
||||
|
||||
// register input plug-ins
|
||||
QString plugins_dir = settings.value("mapnik/plugins_dir",
|
||||
- QVariant("/usr/local/lib/mapnik2/input/")).toString();
|
||||
+ QVariant("/Library/Frameworks/Mapnik.framework/Versions/2.0/unix/lib/mapnik2/input/")).toString();
|
||||
datasource_cache::instance()->register_datasources(plugins_dir.toStdString());
|
||||
// register fonts
|
||||
- int count = settings.beginReadArray("mapnik/fonts");
|
||||
- for (int index=0; index < count; ++index)
|
||||
- {
|
||||
- settings.setArrayIndex(index);
|
||||
- QString font_dir = settings.value("dir").toString();
|
||||
- freetype_engine::register_fonts(font_dir.toStdString());
|
||||
- }
|
||||
+ //int count = settings.beginReadArray("mapnik/fonts");
|
||||
+ //for (int index=0; index < count; ++index)
|
||||
+ //{
|
||||
+ // settings.setArrayIndex(index);
|
||||
+ // QString font_dir = settings.value("dir").toString();
|
||||
+ freetype_engine::register_fonts("/Library/Frameworks/Mapnik.framework/Versions/2.0/unix/lib/mapnik2/fonts");
|
||||
+ //}
|
||||
settings.endArray();
|
||||
|
||||
QApplication app( argc, argv );
|
||||
MainWindow window;
|
||||
window.show();
|
||||
- if (argc > 1) window.open(argv[1]);
|
||||
+ if (argc > 1) {
|
||||
+ window.open(argv[1]);
|
||||
+ }
|
||||
if (argc >= 3)
|
||||
{
|
||||
QStringList list = QString(argv[2]).split(",");
|
|
@ -1,17 +0,0 @@
|
|||
import sys
|
||||
|
||||
ver_int = int('%s%s' % (sys.version_info[0],sys.version_info[1]))
|
||||
ver_str = '%s.%s' % (sys.version_info[0],sys.version_info[1])
|
||||
|
||||
path_insert = '/Library/Frameworks/Mapnik.framework/Versions/2.0/unix/lib/python%s/site-packages/'
|
||||
|
||||
if ver_int < 26:
|
||||
raise ImportError('Cairo bindings are only available for python versions >= 2.6')
|
||||
elif ver_int in (26,27,31):
|
||||
sys.path.insert(0, path_insert % ver_str)
|
||||
from cairo import *
|
||||
elif ver_int > 31:
|
||||
raise ImportError('Cairo bindings are only available for python versions <= 3.1')
|
||||
else:
|
||||
raise ImportError('Cairo bindings are only available for python versions 2.6, 2.7, and 3.1')
|
||||
|
|
@ -1,779 +0,0 @@
|
|||
#
|
||||
# This file is part of Mapnik (C++/Python mapping toolkit)
|
||||
# Copyright (C) 2009 Artem Pavlenko, Dane Springmeyer
|
||||
#
|
||||
# Mapnik is free software; you can redistribute it and/or
|
||||
# modify it under the terms of the GNU General Public License
|
||||
# as published by the Free Software Foundation; either version 2
|
||||
# of the License, or any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
#
|
||||
|
||||
"""Mapnik Python module.
|
||||
|
||||
Boost Python bindings to the Mapnik C++ shared library.
|
||||
|
||||
Several things happen when you do:
|
||||
|
||||
>>> import mapnik
|
||||
|
||||
1) Mapnik C++ objects are imported via the '__init__.py' from the '_mapnik.so' shared object
|
||||
(_mapnik.pyd on win) which references libmapnik.so (linux), libmapnik.dylib (mac), or
|
||||
mapnik.dll (win32).
|
||||
|
||||
2) The paths to the input plugins and font directories are imported from the 'paths.py'
|
||||
file which was constructed and installed during SCons installation.
|
||||
|
||||
3) All available input plugins and TrueType fonts are automatically registered.
|
||||
|
||||
4) Boost Python metaclass injectors are used in the '__init__.py' to extend several
|
||||
objects adding extra convenience when accessed via Python.
|
||||
|
||||
"""
|
||||
|
||||
import os
|
||||
import sys
|
||||
import warnings
|
||||
|
||||
try:
|
||||
from ctypes import RTLD_NOW, RTLD_GLOBAL
|
||||
except ImportError:
|
||||
try:
|
||||
from DLFCN import RTLD_NOW, RTLD_GLOBAL
|
||||
except ImportError:
|
||||
RTLD_NOW = 2
|
||||
RTLD_GLOBAL = 256
|
||||
|
||||
flags = sys.getdlopenflags()
|
||||
sys.setdlopenflags(RTLD_NOW | RTLD_GLOBAL)
|
||||
|
||||
ver_int = int('%s%s' % (sys.version_info[0],sys.version_info[1]))
|
||||
ver_str = '%s.%s' % (sys.version_info[0],sys.version_info[1])
|
||||
|
||||
path_insert = '/Library/Frameworks/Mapnik.framework/Versions/2.0/unix/lib/python%s/site-packages/mapnik2'
|
||||
|
||||
if ver_int < 25:
|
||||
raise ImportError('Mapnik bindings are only available for python versions >= 2.5')
|
||||
elif ver_int in (25,26,27,31,32):
|
||||
sys.path.insert(0, path_insert % ver_str)
|
||||
from _mapnik2 import *
|
||||
elif ver_int > 32:
|
||||
raise ImportError('Mapnik bindings are only available for python versions <= 3.1')
|
||||
else:
|
||||
raise ImportError('Mapnik bindings are only available for python versions 2.5, 2.6, 2.7, and 3.1')
|
||||
|
||||
from paths import inputpluginspath, fontscollectionpath
|
||||
|
||||
#import printing
|
||||
#printing.renderer = render
|
||||
|
||||
# The base Boost.Python class
|
||||
BoostPythonMetaclass = Coord.__class__
|
||||
|
||||
class _MapnikMetaclass(BoostPythonMetaclass):
|
||||
def __init__(self, name, bases, dict):
|
||||
for b in bases:
|
||||
if type(b) not in (self, type):
|
||||
for k,v in list(dict.items()):
|
||||
if hasattr(b, k):
|
||||
setattr(b, '_c_'+k, getattr(b, k))
|
||||
setattr(b,k,v)
|
||||
return type.__init__(self, name, bases, dict)
|
||||
|
||||
# metaclass injector compatible with both python 2 and 3
|
||||
# http://mikewatkins.ca/2008/11/29/python-2-and-3-metaclasses/
|
||||
_injector = _MapnikMetaclass('_injector', (object, ), {})
|
||||
|
||||
def render_grid(m,layer,key,resolution=4,fields=[]):
|
||||
return render_grid_(m,layer,key,resolution,fields)
|
||||
|
||||
def Filter(*args,**kwargs):
|
||||
warnings.warn("'Filter' is deprecated and will be removed in Mapnik 2.0.1, use 'Expression' instead",
|
||||
DeprecationWarning, 2)
|
||||
return Expression(*args, **kwargs)
|
||||
|
||||
class Envelope(Box2d):
|
||||
def __init__(self, *args, **kwargs):
|
||||
warnings.warn("'Envelope' is deprecated and will be removed in Mapnik 2.0.1, use 'Box2d' instead",
|
||||
DeprecationWarning, 2)
|
||||
Box2d.__init__(self, *args, **kwargs)
|
||||
|
||||
class _Coord(Coord,_injector):
|
||||
"""
|
||||
Represents a point with two coordinates (either lon/lat or x/y).
|
||||
|
||||
Following operators are defined for Coord:
|
||||
|
||||
Addition and subtraction of Coord objects:
|
||||
|
||||
>>> Coord(10, 10) + Coord(20, 20)
|
||||
Coord(30.0, 30.0)
|
||||
>>> Coord(10, 10) - Coord(20, 20)
|
||||
Coord(-10.0, -10.0)
|
||||
|
||||
Addition, subtraction, multiplication and division between
|
||||
a Coord and a float:
|
||||
|
||||
>>> Coord(10, 10) + 1
|
||||
Coord(11.0, 11.0)
|
||||
>>> Coord(10, 10) - 1
|
||||
Coord(-9.0, -9.0)
|
||||
>>> Coord(10, 10) * 2
|
||||
Coord(20.0, 20.0)
|
||||
>>> Coord(10, 10) / 2
|
||||
Coord(5.0, 5.0)
|
||||
|
||||
Equality of coords (as pairwise equality of components):
|
||||
>>> Coord(10, 10) is Coord(10, 10)
|
||||
False
|
||||
>>> Coord(10, 10) == Coord(10, 10)
|
||||
True
|
||||
"""
|
||||
def __repr__(self):
|
||||
return 'Coord(%s,%s)' % (self.x, self.y)
|
||||
|
||||
def forward(self, projection):
|
||||
"""
|
||||
Projects the point from the geographic coordinate
|
||||
space into the cartesian space. The x component is
|
||||
considered to be longitude, the y component the
|
||||
latitude.
|
||||
|
||||
Returns the easting (x) and northing (y) as a
|
||||
coordinate pair.
|
||||
|
||||
Example: Project the geographic coordinates of the
|
||||
city center of Stuttgart into the local
|
||||
map projection (GK Zone 3/DHDN, EPSG 31467)
|
||||
>>> p = Projection('+init=epsg:31467')
|
||||
>>> Coord(9.1, 48.7).forward(p)
|
||||
Coord(3507360.12813,5395719.2749)
|
||||
"""
|
||||
return forward_(self, projection)
|
||||
|
||||
def inverse(self, projection):
|
||||
"""
|
||||
Projects the point from the cartesian space
|
||||
into the geographic space. The x component is
|
||||
considered to be the easting, the y component
|
||||
to be the northing.
|
||||
|
||||
Returns the longitude (x) and latitude (y) as a
|
||||
coordinate pair.
|
||||
|
||||
Example: Project the cartesian coordinates of the
|
||||
city center of Stuttgart in the local
|
||||
map projection (GK Zone 3/DHDN, EPSG 31467)
|
||||
into geographic coordinates:
|
||||
>>> p = Projection('+init=epsg:31467')
|
||||
>>> Coord(3507360.12813,5395719.2749).inverse(p)
|
||||
Coord(9.1, 48.7)
|
||||
"""
|
||||
return inverse_(self, projection)
|
||||
|
||||
class _Box2d(Box2d,_injector):
|
||||
"""
|
||||
Represents a spatial envelope (i.e. bounding box).
|
||||
|
||||
|
||||
Following operators are defined for Box2d:
|
||||
|
||||
Addition:
|
||||
e1 + e2 is equvalent to e1.expand_to_include(e2) but yields
|
||||
a new envelope instead of modifying e1
|
||||
|
||||
Subtraction:
|
||||
Currently e1 - e2 returns e1.
|
||||
|
||||
Multiplication and division with floats:
|
||||
Multiplication and division change the width and height of the envelope
|
||||
by the given factor without modifying its center..
|
||||
|
||||
That is, e1 * x is equivalent to:
|
||||
e1.width(x * e1.width())
|
||||
e1.height(x * e1.height()),
|
||||
except that a new envelope is created instead of modifying e1.
|
||||
|
||||
e1 / x is equivalent to e1 * (1.0/x).
|
||||
|
||||
Equality: two envelopes are equal if their corner points are equal.
|
||||
"""
|
||||
|
||||
def __repr__(self):
|
||||
return 'Box2d(%s,%s,%s,%s)' % \
|
||||
(self.minx,self.miny,self.maxx,self.maxy)
|
||||
|
||||
def forward(self, projection):
|
||||
"""
|
||||
Projects the envelope from the geographic space
|
||||
into the cartesian space by projecting its corner
|
||||
points.
|
||||
|
||||
See also:
|
||||
Coord.forward(self, projection)
|
||||
"""
|
||||
return forward_(self, projection)
|
||||
|
||||
def inverse(self, projection):
|
||||
"""
|
||||
Projects the envelope from the cartesian space
|
||||
into the geographic space by projecting its corner
|
||||
points.
|
||||
|
||||
See also:
|
||||
Coord.inverse(self, projection).
|
||||
"""
|
||||
return inverse_(self, projection)
|
||||
|
||||
class _Projection(Projection,_injector):
|
||||
|
||||
def __repr__(self):
|
||||
return "Projection('%s')" % self.params()
|
||||
|
||||
def forward(self,obj):
|
||||
"""
|
||||
Projects the given object (Box2d or Coord)
|
||||
from the geographic space into the cartesian space.
|
||||
|
||||
See also:
|
||||
Box2d.forward(self, projection),
|
||||
Coord.forward(self, projection).
|
||||
"""
|
||||
return forward_(obj,self)
|
||||
|
||||
def inverse(self,obj):
|
||||
"""
|
||||
Projects the given object (Box2d or Coord)
|
||||
from the cartesian space into the geographic space.
|
||||
|
||||
See also:
|
||||
Box2d.inverse(self, projection),
|
||||
Coord.inverse(self, projection).
|
||||
"""
|
||||
return inverse_(obj,self)
|
||||
|
||||
def get_types(num):
|
||||
dispatch = {1: int,
|
||||
2: float,
|
||||
3: float,
|
||||
4: str,
|
||||
5: Geometry2d,
|
||||
6: object}
|
||||
return dispatch.get(num)
|
||||
|
||||
class _Datasource(Datasource,_injector):
|
||||
|
||||
def describe(self):
|
||||
return Describe(self)
|
||||
|
||||
def field_types(self):
|
||||
return map(get_types,self._field_types())
|
||||
|
||||
def all_features(self,fields=None):
|
||||
query = Query(self.envelope())
|
||||
attributes = fields or self.fields()
|
||||
for fld in attributes:
|
||||
query.add_property_name(fld)
|
||||
return self.features(query).features
|
||||
|
||||
def featureset(self,fields=None):
|
||||
query = Query(self.envelope())
|
||||
attributes = fields or self.fields()
|
||||
for fld in attributes:
|
||||
query.add_property_name(fld)
|
||||
return self.features(query)
|
||||
|
||||
class _DeprecatedFeatureProperties(object):
|
||||
|
||||
def __init__(self, feature):
|
||||
self._feature = feature
|
||||
|
||||
def __getitem__(self, name):
|
||||
warnings.warn("indexing feature.properties is deprecated, index the "
|
||||
"feature object itself for the same effect", DeprecationWarning, 2)
|
||||
return self._feature[name]
|
||||
|
||||
def __iter__(self):
|
||||
warnings.warn("iterating feature.properties is deprecated, iterate the "
|
||||
"feature object itself for the same effect", DeprecationWarning, 2)
|
||||
return iter(self._feature)
|
||||
|
||||
class _Feature(Feature, _injector):
|
||||
"""
|
||||
A Feature.
|
||||
|
||||
TODO: docs
|
||||
"""
|
||||
@property
|
||||
def properties(self):
|
||||
return _DeprecatedFeatureProperties(self)
|
||||
|
||||
@property
|
||||
def attributes(self):
|
||||
#XXX Returns a copy! changes to it won't affect feat.'s attrs.
|
||||
# maybe deprecate?
|
||||
return dict(self)
|
||||
|
||||
@property
|
||||
def geometries(self):
|
||||
return [self.get_geometry(i) for i in xrange(self.num_geometries())]
|
||||
|
||||
def __init__(self, id, geometry=None, **properties):
|
||||
Feature._c___init__(self, id)
|
||||
if geometry is not None:
|
||||
self.add_geometry(geometry)
|
||||
for k, v in properties.iteritems():
|
||||
self[k] = v
|
||||
|
||||
class _Color(Color,_injector):
|
||||
|
||||
def __repr__(self):
|
||||
return "Color(%r)" % self.to_hex_string()
|
||||
|
||||
class _Symbolizers(Symbolizers,_injector):
|
||||
|
||||
def __getitem__(self, idx):
|
||||
sym = Symbolizers._c___getitem__(self, idx)
|
||||
return sym.symbol()
|
||||
|
||||
def _add_symbol_method_to_symbolizers(vars=globals()):
|
||||
|
||||
def symbol_for_subcls(self):
|
||||
return self
|
||||
|
||||
def symbol_for_cls(self):
|
||||
return getattr(self,self.type())()
|
||||
|
||||
for name, obj in vars.items():
|
||||
if name.endswith('Symbolizer') and not name.startswith('_'):
|
||||
if name == 'Symbolizer':
|
||||
symbol = symbol_for_cls
|
||||
else:
|
||||
symbol = symbol_for_subcls
|
||||
type('dummy', (obj,_injector), {'symbol': symbol})
|
||||
_add_symbol_method_to_symbolizers()
|
||||
|
||||
def Datasource(**keywords):
|
||||
"""Wrapper around CreateDatasource.
|
||||
|
||||
Create a Mapnik Datasource using a dictionary of parameters.
|
||||
|
||||
Keywords must include:
|
||||
|
||||
type='plugin_name' # e.g. type='gdal'
|
||||
|
||||
See the convenience factory methods of each input plugin for
|
||||
details on additional required keyword arguments.
|
||||
|
||||
"""
|
||||
|
||||
return CreateDatasource(keywords)
|
||||
|
||||
# convenience factory methods
|
||||
|
||||
def Shapefile(**keywords):
|
||||
"""Create a Shapefile Datasource.
|
||||
|
||||
Required keyword arguments:
|
||||
file -- path to shapefile without extension
|
||||
|
||||
Optional keyword arguments:
|
||||
base -- path prefix (default None)
|
||||
encoding -- file encoding (default 'utf-8')
|
||||
|
||||
>>> from mapnik import Shapefile, Layer
|
||||
>>> shp = Shapefile(base='/home/mapnik/data',file='world_borders')
|
||||
>>> lyr = Layer('Shapefile Layer')
|
||||
>>> lyr.datasource = shp
|
||||
|
||||
"""
|
||||
keywords['type'] = 'shape'
|
||||
return CreateDatasource(keywords)
|
||||
|
||||
def PostGIS(**keywords):
|
||||
"""Create a PostGIS Datasource.
|
||||
|
||||
Required keyword arguments:
|
||||
dbname -- database name to connect to
|
||||
table -- table name or subselect query
|
||||
|
||||
*Note: if using subselects for the 'table' value consider also
|
||||
passing the 'geometry_field' and 'srid' and 'extent_from_subquery'
|
||||
options and/or specifying the 'geometry_table' option.
|
||||
|
||||
Optional db connection keyword arguments:
|
||||
user -- database user to connect as (default: see postgres docs)
|
||||
password -- password for database user (default: see postgres docs)
|
||||
host -- portgres hostname (default: see postgres docs)
|
||||
port -- postgres port (default: see postgres docs)
|
||||
initial_size -- integer size of connection pool (default: 1)
|
||||
max_size -- integer max of connection pool (default: 10)
|
||||
persist_connection -- keep connection open (default: True)
|
||||
|
||||
Optional table-level keyword arguments:
|
||||
extent -- manually specified data extent (comma delimited string, default: None)
|
||||
estimate_extent -- boolean, direct PostGIS to use the faster, less accurate `estimate_extent` over `extent` (default: False)
|
||||
extent_from_subquery -- boolean, direct Mapnik to query Postgis for the extent of the raw 'table' value (default: uses 'geometry_table')
|
||||
geometry_table -- specify geometry table to use to look up metadata (default: automatically parsed from 'table' value)
|
||||
geometry_field -- specify geometry field to use (default: first entry in geometry_columns)
|
||||
srid -- specify srid to use (default: auto-detected from geometry_field)
|
||||
row_limit -- integer limit of rows to return (default: 0)
|
||||
cursor_size -- integer size of binary cursor to use (default: 0, no binary cursor is used)
|
||||
multiple_geometries -- boolean, direct the Mapnik wkb reader to interpret as multigeometries (default False)
|
||||
|
||||
>>> from mapnik import PostGIS, Layer
|
||||
>>> params = dict(dbname='mapnik',table='osm',user='postgres',password='gis')
|
||||
>>> params['estimate_extent'] = False
|
||||
>>> params['extent'] = '-20037508,-19929239,20037508,19929239'
|
||||
>>> postgis = PostGIS(**params)
|
||||
>>> lyr = Layer('PostGIS Layer')
|
||||
>>> lyr.datasource = postgis
|
||||
|
||||
"""
|
||||
keywords['type'] = 'postgis'
|
||||
return CreateDatasource(keywords)
|
||||
|
||||
|
||||
def Raster(**keywords):
|
||||
"""Create a Raster (Tiff) Datasource.
|
||||
|
||||
Required keyword arguments:
|
||||
file -- path to stripped or tiled tiff
|
||||
lox -- lowest (min) x/longitude of tiff extent
|
||||
loy -- lowest (min) y/latitude of tiff extent
|
||||
hix -- highest (max) x/longitude of tiff extent
|
||||
hiy -- highest (max) y/latitude of tiff extent
|
||||
|
||||
Hint: lox,loy,hix,hiy make a Mapnik Box2d
|
||||
|
||||
Optional keyword arguments:
|
||||
base -- path prefix (default None)
|
||||
|
||||
>>> from mapnik import Raster, Layer
|
||||
>>> raster = Raster(base='/home/mapnik/data',file='elevation.tif',lox=-122.8,loy=48.5,hix=-122.7,hiy=48.6)
|
||||
>>> lyr = Layer('Tiff Layer')
|
||||
>>> lyr.datasource = raster
|
||||
|
||||
"""
|
||||
keywords['type'] = 'raster'
|
||||
return CreateDatasource(keywords)
|
||||
|
||||
def Gdal(**keywords):
|
||||
"""Create a GDAL Raster Datasource.
|
||||
|
||||
Required keyword arguments:
|
||||
file -- path to GDAL supported dataset
|
||||
|
||||
Optional keyword arguments:
|
||||
base -- path prefix (default None)
|
||||
shared -- boolean, open GdalDataset in shared mode (default: False)
|
||||
bbox -- tuple (minx, miny, maxx, maxy). If specified, overrides the bbox detected by GDAL.
|
||||
|
||||
>>> from mapnik import Gdal, Layer
|
||||
>>> dataset = Gdal(base='/home/mapnik/data',file='elevation.tif')
|
||||
>>> lyr = Layer('GDAL Layer from TIFF file')
|
||||
>>> lyr.datasource = dataset
|
||||
|
||||
"""
|
||||
keywords['type'] = 'gdal'
|
||||
if 'bbox' in keywords:
|
||||
if isinstance(keywords['bbox'], (tuple, list)):
|
||||
keywords['bbox'] = ','.join([str(item) for item in keywords['bbox']])
|
||||
return CreateDatasource(keywords)
|
||||
|
||||
def Occi(**keywords):
|
||||
"""Create a Oracle Spatial (10g) Vector Datasource.
|
||||
|
||||
Required keyword arguments:
|
||||
user -- database user to connect as
|
||||
password -- password for database user
|
||||
host -- oracle host to connect to (does not refer to SID in tsnames.ora)
|
||||
table -- table name or subselect query
|
||||
|
||||
Optional keyword arguments:
|
||||
initial_size -- integer size of connection pool (default 1)
|
||||
max_size -- integer max of connection pool (default 10)
|
||||
extent -- manually specified data extent (comma delimited string, default None)
|
||||
estimate_extent -- boolean, direct Oracle to use the faster, less accurate estimate_extent() over extent() (default False)
|
||||
encoding -- file encoding (default 'utf-8')
|
||||
geometry_field -- specify geometry field (default 'GEOLOC')
|
||||
use_spatial_index -- boolean, force the use of the spatial index (default True)
|
||||
multiple_geometries -- boolean, direct the Mapnik wkb reader to interpret as multigeometries (default False)
|
||||
|
||||
>>> from mapnik import Occi, Layer
|
||||
>>> params = dict(host='myoracle',user='scott',password='tiger',table='test')
|
||||
>>> params['estimate_extent'] = False
|
||||
>>> params['extent'] = '-20037508,-19929239,20037508,19929239'
|
||||
>>> oracle = Occi(**params)
|
||||
>>> lyr = Layer('Oracle Spatial Layer')
|
||||
>>> lyr.datasource = oracle
|
||||
"""
|
||||
keywords['type'] = 'occi'
|
||||
return CreateDatasource(keywords)
|
||||
|
||||
def Ogr(**keywords):
|
||||
"""Create a OGR Vector Datasource.
|
||||
|
||||
Required keyword arguments:
|
||||
file -- path to OGR supported dataset
|
||||
layer -- name of layer to use within datasource (optional if layer_by_index is used)
|
||||
|
||||
Optional keyword arguments:
|
||||
layer_by_index -- choose layer by index number instead of by layer name.
|
||||
base -- path prefix (default None)
|
||||
encoding -- file encoding (default 'utf-8')
|
||||
multiple_geometries -- boolean, direct the Mapnik wkb reader to interpret as multigeometries (default False)
|
||||
|
||||
>>> from mapnik import Ogr, Layer
|
||||
>>> datasource = Ogr(base='/home/mapnik/data',file='rivers.geojson',layer='OGRGeoJSON')
|
||||
>>> lyr = Layer('OGR Layer from GeoJSON file')
|
||||
>>> lyr.datasource = datasource
|
||||
|
||||
"""
|
||||
keywords['type'] = 'ogr'
|
||||
return CreateDatasource(keywords)
|
||||
|
||||
def SQLite(**keywords):
|
||||
"""Create a SQLite Datasource.
|
||||
|
||||
Required keyword arguments:
|
||||
file -- path to SQLite database file
|
||||
table -- table name or subselect query
|
||||
|
||||
Optional keyword arguments:
|
||||
base -- path prefix (default None)
|
||||
encoding -- file encoding (default 'utf-8')
|
||||
extent -- manually specified data extent (comma delimited string, default None)
|
||||
metadata -- name of auxillary table containing record for table with xmin, ymin, xmax, ymax, and f_table_name
|
||||
geometry_field -- name of geometry field (default 'the_geom')
|
||||
key_field -- name of primary key field (default 'OGC_FID')
|
||||
row_offset -- specify a custom integer row offset (default 0)
|
||||
row_limit -- specify a custom integer row limit (default 0)
|
||||
wkb_format -- specify a wkb type of 'spatialite' (default None)
|
||||
multiple_geometries -- boolean, direct the Mapnik wkb reader to interpret as multigeometries (default False)
|
||||
use_spatial_index -- boolean, instruct sqlite plugin to use Rtree spatial index (default True)
|
||||
|
||||
>>> from mapnik import SQLite, Layer
|
||||
>>> sqlite = SQLite(base='/home/mapnik/data',file='osm.db',table='osm',extent='-20037508,-19929239,20037508,19929239')
|
||||
>>> lyr = Layer('SQLite Layer')
|
||||
>>> lyr.datasource = sqlite
|
||||
|
||||
"""
|
||||
keywords['type'] = 'sqlite'
|
||||
return CreateDatasource(keywords)
|
||||
|
||||
def Rasterlite(**keywords):
|
||||
"""Create a Rasterlite Datasource.
|
||||
|
||||
Required keyword arguments:
|
||||
file -- path to Rasterlite database file
|
||||
table -- table name or subselect query
|
||||
|
||||
Optional keyword arguments:
|
||||
base -- path prefix (default None)
|
||||
extent -- manually specified data extent (comma delimited string, default None)
|
||||
|
||||
>>> from mapnik import Rasterlite, Layer
|
||||
>>> rasterlite = Rasterlite(base='/home/mapnik/data',file='osm.db',table='osm',extent='-20037508,-19929239,20037508,19929239')
|
||||
>>> lyr = Layer('Rasterlite Layer')
|
||||
>>> lyr.datasource = rasterlite
|
||||
|
||||
"""
|
||||
keywords['type'] = 'rasterlite'
|
||||
return CreateDatasource(keywords)
|
||||
|
||||
def Osm(**keywords):
|
||||
"""Create a Osm Datasource.
|
||||
|
||||
Required keyword arguments:
|
||||
file -- path to OSM file
|
||||
|
||||
Optional keyword arguments:
|
||||
encoding -- file encoding (default 'utf-8')
|
||||
url -- url to fetch data (default None)
|
||||
bbox -- data bounding box for fetching data (default None)
|
||||
|
||||
>>> from mapnik import Osm, Layer
|
||||
>>> datasource = Osm(file='test.osm')
|
||||
>>> lyr = Layer('Osm Layer')
|
||||
>>> lyr.datasource = datasource
|
||||
|
||||
"""
|
||||
# note: parser only supports libxml2 so not exposing option
|
||||
# parser -- xml parser to use (default libxml2)
|
||||
keywords['type'] = 'osm'
|
||||
return CreateDatasource(keywords)
|
||||
|
||||
def Kismet(**keywords):
|
||||
"""Create a Kismet Datasource.
|
||||
|
||||
Required keyword arguments:
|
||||
host -- kismet hostname
|
||||
port -- kismet port
|
||||
|
||||
Optional keyword arguments:
|
||||
encoding -- file encoding (default 'utf-8')
|
||||
extent -- manually specified data extent (comma delimited string, default None)
|
||||
|
||||
>>> from mapnik import Kismet, Layer
|
||||
>>> datasource = Kismet(host='localhost',port=2501,extent='-179,-85,179,85')
|
||||
>>> lyr = Layer('Kismet Server Layer')
|
||||
>>> lyr.datasource = datasource
|
||||
|
||||
"""
|
||||
keywords['type'] = 'kismet'
|
||||
return CreateDatasource(keywords)
|
||||
|
||||
def Geos(**keywords):
|
||||
"""Create a GEOS Vector Datasource.
|
||||
|
||||
Required keyword arguments:
|
||||
wkt -- inline WKT text of the geometry
|
||||
|
||||
Optional keyword arguments:
|
||||
multiple_geometries -- boolean, direct the GEOS wkt reader to interpret as multigeometries (default False)
|
||||
extent -- manually specified data extent (comma delimited string, default None)
|
||||
|
||||
>>> from mapnik import Geos, Layer
|
||||
>>> datasource = Geos(wkt='MULTIPOINT(100 100, 50 50, 0 0)')
|
||||
>>> lyr = Layer('GEOS Layer from WKT string')
|
||||
>>> lyr.datasource = datasource
|
||||
|
||||
"""
|
||||
keywords['type'] = 'geos'
|
||||
return CreateDatasource(keywords)
|
||||
|
||||
def mapnik_version_string(version=mapnik_version()):
|
||||
"""Return the Mapnik version as a string."""
|
||||
patch_level = version % 100
|
||||
minor_version = version / 100 % 1000
|
||||
major_version = version / 100000
|
||||
return '%s.%s.%s' % ( major_version, minor_version,patch_level)
|
||||
|
||||
def mapnik_version_from_string(version_string):
|
||||
"""Return the Mapnik version from a string."""
|
||||
n = version_string.split('.')
|
||||
return (int(n[0]) * 100000) + (int(n[1]) * 100) + (int(n[2]));
|
||||
|
||||
def register_plugins(path=inputpluginspath):
|
||||
"""Register plugins located by specified path"""
|
||||
DatasourceCache.instance().register_datasources(path)
|
||||
|
||||
def register_fonts(path=fontscollectionpath,valid_extensions=['.ttf','.otf','.ttc','.pfa','.pfb','.ttc','.dfont']):
|
||||
"""Recursively register fonts using path argument as base directory"""
|
||||
for dirpath, _, filenames in os.walk(path):
|
||||
for filename in filenames:
|
||||
if os.path.splitext(filename)[1] in valid_extensions:
|
||||
FontEngine.instance().register_font(os.path.join(dirpath, filename))
|
||||
|
||||
# auto-register known plugins and fonts
|
||||
register_plugins()
|
||||
register_fonts()
|
||||
|
||||
#set dlopen flags back to the original
|
||||
sys.setdlopenflags(flags)
|
||||
|
||||
# Explicitly export API members to avoid namespace pollution
|
||||
# and ensure correct documentation processing
|
||||
__all__ = [
|
||||
# classes
|
||||
'Color',
|
||||
'Coord',
|
||||
#'ColorBand',
|
||||
'CompositeOp',
|
||||
'DatasourceCache',
|
||||
'Box2d',
|
||||
'Feature',
|
||||
'Featureset',
|
||||
'FontEngine',
|
||||
'Geometry2d',
|
||||
'GlyphSymbolizer',
|
||||
'Image',
|
||||
'ImageView',
|
||||
'Layer',
|
||||
'Layers',
|
||||
'LinePatternSymbolizer',
|
||||
'LineSymbolizer',
|
||||
'Map',
|
||||
'MarkersSymbolizer',
|
||||
'Names',
|
||||
'Parameter',
|
||||
'Parameters',
|
||||
'PointDatasource',
|
||||
'PointSymbolizer',
|
||||
'PolygonPatternSymbolizer',
|
||||
'PolygonSymbolizer',
|
||||
'ProjTransform',
|
||||
'Projection',
|
||||
'Query',
|
||||
'RasterSymbolizer',
|
||||
'RasterColorizer',
|
||||
'Rule', 'Rules',
|
||||
'ShieldSymbolizer',
|
||||
'Singleton',
|
||||
'Stroke',
|
||||
'Style',
|
||||
'Symbolizer',
|
||||
'Symbolizers',
|
||||
'TextSymbolizer',
|
||||
'ViewTransform',
|
||||
# enums
|
||||
'aspect_fix_mode',
|
||||
'point_placement',
|
||||
'label_placement',
|
||||
'line_cap',
|
||||
'line_join',
|
||||
'text_transform',
|
||||
'vertical_alignment',
|
||||
'horizontal_alignment',
|
||||
'justify_alignment',
|
||||
'pattern_alignment',
|
||||
'filter_mode',
|
||||
# functions
|
||||
# datasources
|
||||
'Datasource',
|
||||
'CreateDatasource',
|
||||
'Shapefile',
|
||||
'PostGIS',
|
||||
'Raster',
|
||||
'Gdal',
|
||||
'Occi',
|
||||
'Ogr',
|
||||
'SQLite',
|
||||
'Osm',
|
||||
'Kismet',
|
||||
'Describe',
|
||||
# version and environment
|
||||
'mapnik_version_string',
|
||||
'mapnik_version',
|
||||
'mapnik_svn_revision',
|
||||
'has_cairo',
|
||||
'has_pycairo',
|
||||
# factory methods
|
||||
'Expression',
|
||||
'PathExpression',
|
||||
# load/save/render
|
||||
'load_map',
|
||||
'load_map_from_string',
|
||||
'save_map',
|
||||
'save_map_to_string',
|
||||
'render',
|
||||
'render_grid',
|
||||
'render_tile_to_file',
|
||||
'render_to_file',
|
||||
# other
|
||||
'register_plugins',
|
||||
'register_fonts',
|
||||
'scale_denominator',
|
||||
# deprecated
|
||||
'Filter',
|
||||
'Envelope',
|
||||
]
|
|
@ -1,43 +0,0 @@
|
|||
# script to build boost python versions
|
||||
# this should be run with the boost source directory as the cwd
|
||||
|
||||
import os
|
||||
import sys
|
||||
|
||||
USER_JAM = """
|
||||
import option ;
|
||||
import feature ;
|
||||
if ! darwin in [ feature.values <toolset> ]
|
||||
{
|
||||
using darwin ;
|
||||
}
|
||||
project : default-build <toolset>darwin ;
|
||||
using python
|
||||
: %(ver)s # version
|
||||
: %(system)s/Library/Frameworks/Python.framework/Versions/%(ver)s/bin/python%(ver)s%(variant)s # cmd-or-prefix
|
||||
: %(system)s/Library/Frameworks/Python.framework/Versions/%(ver)s/include/python%(ver)s%(variant)s # includes
|
||||
: %(system)s/Library/Frameworks/Python.framework/Versions/%(ver)s/lib/python%(ver)s/config%(variant)s # a lib actually symlink
|
||||
: <toolset>darwin # condition
|
||||
;
|
||||
libraries = --with-python ;
|
||||
"""
|
||||
|
||||
def compile_lib(ver,arch='32_64'):
|
||||
if ver in ('3.2'):
|
||||
open('user-config.jam','w').write(USER_JAM % {'ver':ver,'system':'','variant':'m'})
|
||||
elif ver in ('2.5','2.6'):
|
||||
# build against system pythons so we can reliably link against FAT binaries
|
||||
open('user-config.jam','w').write(USER_JAM % {'ver':ver,'system':'/System','variant':''})
|
||||
else:
|
||||
# for 2.7 and above hope that python.org provides 64 bit ready binaries...
|
||||
open('user-config.jam','w').write(USER_JAM % {'ver':ver,'system':'','variant':''})
|
||||
cmd = "./bjam -q --with-python -a -j2 --ignore-site-config --user-config=user-config.jam link=shared toolset=darwin -d2 address-model=%s architecture=x86 variant=release stage" % arch#linkflags=-search_paths_first
|
||||
print cmd
|
||||
os.system(cmd)
|
||||
|
||||
if __name__ == '__main__':
|
||||
if not len(sys.argv) > 2:
|
||||
sys.exit('usage: %s <ver> <arch>' % os.path.basename(sys.argv[0]))
|
||||
compile_lib(sys.argv[1],sys.argv[2])
|
||||
|
||||
|
|
@ -1,18 +0,0 @@
|
|||
# http://www.python.org/download/releases/
|
||||
# http://www.python.org/ftp/python/
|
||||
|
||||
# 2.5.4 (2.5.5 did not provide binaries)
|
||||
wget http://www.python.org/ftp/python/2.5.4/python-2.5.4-macosx.dmg
|
||||
|
||||
# 2.6.6
|
||||
wget http://www.python.org/ftp/python/2.6.6/python-2.6.6-macosx10.3.dmg
|
||||
|
||||
# 2.7
|
||||
wget http://www.python.org/ftp/python/2.7.2/python-2.7.2-macosx10.6.dmg
|
||||
|
||||
# 3.1.x does not provide 64 bit versions for some reasons, so skip...
|
||||
#wget http://www.python.org/ftp/python/3.1.3/python-3.1.3-macosx10.3.dmg
|
||||
#wget http://www.python.org/ftp/python/3.1.2/Python-3.1.2.tar.bz2
|
||||
|
||||
# 3.2
|
||||
wget http://www.python.org/ftp/python/3.2.1/python-3.2.1-macosx10.6.dmg
|
|
@ -1,68 +0,0 @@
|
|||
import os
|
||||
import re
|
||||
import sys
|
||||
import datetime
|
||||
from subprocess import PIPE, Popen, call as subcall
|
||||
|
||||
now = datetime.datetime.now()
|
||||
date = now.strftime('%Y_%m_%d') # year, mon, day
|
||||
|
||||
INSTALL = False
|
||||
|
||||
plat = 'snow_leopard'
|
||||
arch = 'intel'
|
||||
version = '2.0.0'#-dev
|
||||
|
||||
def get(cmd):
|
||||
try:
|
||||
sub = cmd.split(' ')
|
||||
response = Popen(sub, stdin=PIPE, stdout=PIPE, stderr=PIPE)
|
||||
cm = response.communicate()
|
||||
return cm[0]
|
||||
if not cm[0]:
|
||||
sys.exit(cm[1])
|
||||
except OSError, E:
|
||||
sys.exit(E)
|
||||
|
||||
if plat == 'snow_leopard':
|
||||
short_plat = 'snow'
|
||||
else:
|
||||
short_plat = plat
|
||||
|
||||
def get_svn():
|
||||
pattern = r'(\d+)(.*)'
|
||||
svn_version = get('svnversion ../')
|
||||
return re.match(pattern,svn_version).groups()[0]
|
||||
|
||||
svn = get_svn()
|
||||
|
||||
identifier = '''mapnik build log
|
||||
----------------
|
||||
version: %(version)s
|
||||
os: %(plat)s
|
||||
arch: %(arch)s
|
||||
date: %(date)s
|
||||
svn revision: %(svn)s
|
||||
|
||||
''' % locals()
|
||||
|
||||
if __name__ == '__main__':
|
||||
|
||||
|
||||
if not os.path.exists('installer'):
|
||||
sys.exit("must be run from directory below 'installer' dir")
|
||||
|
||||
print 'removing old files'
|
||||
#os.system('rm installer/pkg/Mapnik.pkg')
|
||||
os.system('rm installer/*dmg')
|
||||
|
||||
print 'writing build log'
|
||||
open('installer/pkg/build_log.txt','w').write(identifier)
|
||||
|
||||
cmd = 'packagemaker --doc installer/mapnik.pmdoc --out installer/pkg/Mapnik.pkg'
|
||||
print cmd
|
||||
#os.system(cmd)
|
||||
|
||||
cmd = 'hdiutil create "installer/mapnik_%s_%s_%s_%s_%s.dmg" -volname "Mapnik %s" -fs HFS+ -srcfolder installer/pkg' % (version,short_plat,arch,date,svn,version)
|
||||
print cmd
|
||||
os.system(cmd)
|
|
@ -1,421 +0,0 @@
|
|||
|
||||
# start here
|
||||
cd osx/sources
|
||||
|
||||
# build icu and boost for packaging up within Mapnik Framework
|
||||
|
||||
# local install location
|
||||
PREFIX=/Users/dane/projects/mapnik-dev/trunk-build/osx/sources
|
||||
mkdir -p $PREFIX
|
||||
export DYLD_LIBRARY_PATH=$PREFIX/lib
|
||||
# final resting place
|
||||
INSTALL=/Library/Frameworks/Mapnik.framework/unix/lib
|
||||
export DYLD_LIBRARY_PATH=$PREFIX/lib
|
||||
export PKG_CONFIG_PATH=$PREFIX/lib/pkgconfig
|
||||
export CFLAGS="-O3 -arch i386 -arch x86_64"
|
||||
export CXXFLAGS="-O3 -arch i386 -arch x86_64"
|
||||
export LDFLAGS="-arch i386 -arch x86_64 -headerpad_max_install_names"
|
||||
# universal flags
|
||||
export CFLAGS="-O3 -arch i386 -arch x86_64"
|
||||
export CXXFLAGS="-O3 -arch i386 -arch x86_64"
|
||||
export LDFLAGS="-arch i386 -arch x86_64 -headerpad_max_install_names"
|
||||
|
||||
|
||||
# make a directory to hold icu and boost
|
||||
mkdir -p ../deps
|
||||
cd ../deps
|
||||
|
||||
# ICU
|
||||
wget http://download.icu-project.org/files/icu4c/4.6/icu4c-4_6-src.tgz
|
||||
tar xvf icu4c-4_6-src.tgz
|
||||
cd icu/source
|
||||
|
||||
# universal flags
|
||||
#./runConfigureICU MacOSX --prefix=$PREFIX --disable-static --enable-shared --disable-samples --disable-icuio --disable-layout --disable-tests --disable-extras --with-library-bits=64
|
||||
./runConfigureICU MacOSX --prefix=$PREFIX --disable-static --enable-shared --with-library-bits=64
|
||||
make install -j4
|
||||
# note -R is needed to preserve the symlinks
|
||||
#cp -R lib/libicuuc.* ../../../sources/lib/
|
||||
#cp -R lib/libicudata.* ../../../sources/lib/
|
||||
cd ../../../sources/lib/
|
||||
|
||||
|
||||
# libicuuc
|
||||
install_name_tool -id $INSTALL/libicuuc.46.dylib libicuuc.46.0.dylib
|
||||
# --enable-layout
|
||||
#install_name_tool -change ../lib/libicudata.46.0.dylib $INSTALL/libicudata.46.dylib libicuuc.46.0.dylib
|
||||
#--disable-layout
|
||||
install_name_tool -change libicudata.46.dylib $INSTALL/libicudata.46.dylib libicuuc.46.0.dylib
|
||||
# libicudata
|
||||
install_name_tool -id $INSTALL/libicudata.46.dylib libicudata.46.0.dylib
|
||||
# libicui18n - needed by boost_regex
|
||||
install_name_tool -id $INSTALL/libicui18n.46.dylib libicui18n.46.0.dylib
|
||||
# --enable-layout
|
||||
#install_name_tool -change ../lib/libicudata.46.0.dylib $INSTALL/libicudata.46.dylib libicui18n.46.0.dylib
|
||||
#--disable-layout
|
||||
install_name_tool -change libicudata.46.dylib $INSTALL/libicudata.46.dylib libicui18n.46.0.dylib
|
||||
install_name_tool -change libicuuc.46.dylib $INSTALL/libicuuc.46.dylib libicui18n.46.0.dylib
|
||||
cd ../
|
||||
|
||||
|
||||
# freetype2
|
||||
wget http://download.savannah.gnu.org/releases/freetype/freetype-2.4.4.tar.gz
|
||||
tar xvf freetype-2.4.4.tar.gz
|
||||
export CFLAGS="-O3 -arch i386 -arch x86_64"
|
||||
export LDFLAGS="-arch i386 -arch x86_64 -headerpad_max_install_names"
|
||||
cd freetype-2.4.4
|
||||
./configure --prefix=$PREFIX
|
||||
make -j4
|
||||
make install
|
||||
install_name_tool -id $INSTALL/libfreetype.6.dylib ../../sources/lib/libfreetype.6.dylib
|
||||
cd ../
|
||||
|
||||
# pkg-config so we get cairo and friends configured correctly
|
||||
wget http://pkgconfig.freedesktop.org/releases/pkg-config-0.26.tar.gz
|
||||
tar xvf pkg-config-0.26.tar.gz
|
||||
cd pkg-config-0.26
|
||||
./configure --disable-dependency-tracking --prefix=$PREFIX
|
||||
make -j4
|
||||
make install
|
||||
|
||||
# pixman
|
||||
wget http://cairographics.org/releases/pixman-0.22.2.tar.gz
|
||||
tar xvf pixman-0.22.2.tar.gz
|
||||
cd pixman-0.22.2
|
||||
./configure --disable-dependency-tracking --prefix=$PREFIX
|
||||
make -j4
|
||||
make install
|
||||
cd ../../sources/lib/
|
||||
install_name_tool -id $INSTALL/libpixman-1.0.dylib ../../sources/lib/libpixman-1.0.dylib
|
||||
cd ../
|
||||
|
||||
# fontconfig
|
||||
wget http://www.freedesktop.org/software/fontconfig/release/fontconfig-2.8.0.tar.gz
|
||||
tar xvf fontconfig-2.8.0.tar.gz
|
||||
cd fontconfig-2.8.0
|
||||
./configure --disable-dependency-tracking --prefix=$PREFIX \
|
||||
--with-freetype-config=$PREFIX/bin/freetype-config
|
||||
make -j4
|
||||
make install
|
||||
install_name_tool -id $INSTALL/libfontconfig.1.dylib ../../sources/lib/libfontconfig.1.dylib
|
||||
cd ../
|
||||
|
||||
# Cairo
|
||||
wget http://cairographics.org/releases/cairo-1.10.2.tar.gz
|
||||
tar xvf cairo-1.10.2.tar.gz
|
||||
cd cairo-1.10.2
|
||||
# NOTE: PKG_CONFIG_PATH must be correctly set by this point
|
||||
export LDFLAGS="-L/Library/Frameworks/UnixImageIO.framework/unix/lib "$LDFLAGS
|
||||
export CFLAGS="-I/Library/Frameworks/UnixImageIO.framework/unix/include "$CFLAGS
|
||||
export png_CFLAGS="-I/Library/Frameworks/UnixImageIO.framework/unix/include"
|
||||
export png_LIBS="-I/Library/Frameworks/UnixImageIO.framework/unix/lib -lpng15"
|
||||
./configure \
|
||||
--disable-valgrind \
|
||||
--enable-gobject=no \
|
||||
--enable-static=no \
|
||||
--enable-xlib=no \
|
||||
--enable-xlib-xrender=no \
|
||||
--enable-xcb=no \
|
||||
--enable-xlib-xcb=no \
|
||||
--enable-xcb-shm=no \
|
||||
--enable-xcb-drm=no \
|
||||
--disable-dependency-tracking \
|
||||
--prefix=$PREFIX
|
||||
|
||||
make -j4
|
||||
make install
|
||||
install_name_tool -id $INSTALL/libcairo.2.dylib ../../sources/lib/libcairo.2.dylib
|
||||
cd ../
|
||||
|
||||
# since linking to libpng framework (which does not provide a pkg-config) fake it:
|
||||
# match to /Library/Frameworks/UnixImageIO.framework/unix/
|
||||
# vim ../sources/lib/pkgconfig/libpng.pc
|
||||
|
||||
prefix=/Library/Frameworks/UnixImageIO.framework/unix
|
||||
exec_prefix=${prefix}
|
||||
libdir=${exec_prefix}/lib
|
||||
includedir=${prefix}/include/libpng15
|
||||
|
||||
Name: libpng
|
||||
Description: Loads and saves PNG files
|
||||
Version: 1.5
|
||||
Libs: -L${libdir} -lpng15
|
||||
Libs.private: -lz
|
||||
Cflags: -I${includedir}
|
||||
|
||||
|
||||
# libsigcxx
|
||||
wget http://ftp.gnome.org/pub/GNOME/sources/libsigc++/2.2/libsigc++-2.2.10.tar.bz2
|
||||
tar xvf libsigc++-2.2.10.tar.bz2
|
||||
cd libsigc++-2.2.10
|
||||
./configure --disable-dependency-tracking --prefix=$PREFIX
|
||||
make -j4
|
||||
make install
|
||||
install_name_tool -id $INSTALL/libsigc-2.0.dylib ../../sources/lib/libsigc-2.0.dylib
|
||||
cd ../
|
||||
|
||||
wget http://cairographics.org/releases/cairomm-1.9.8.tar.gz
|
||||
tar xvf cairomm-1.9.8.tar.gz
|
||||
cd cairomm-1.9.8
|
||||
# NOTE: PKG_CONFIG_PATH must be correctly set by this point
|
||||
export LDFLAGS="-L$PREFIX/lib -lcairo -lsigc-2.0 "$LDFLAGS
|
||||
export CFLAGS="-I$PREFIX/include -I$PREFIX/include/cairo -I$PREFIX/include/freetype2 -I$PREFIX/lib/sigc++-2.0/include -I$PREFIX/include/sigc++-2.0 -I$PREFIX/include/sigc++-2.0/sigc++ "$CFLAGS
|
||||
export CXXFLAGS="-I$PREFIX/include "$CFLAGS
|
||||
|
||||
./configure --disable-dependency-tracking --prefix=$PREFIX
|
||||
make -j4
|
||||
make install
|
||||
|
||||
install_name_tool -id $INSTALL/libcairomm-1.0.1.dylib ../../sources/lib/libcairomm-1.0.1.dylib
|
||||
|
||||
# also make sure cairo and friends did not link against anything in /opt/local or /usr/local
|
||||
otool -L ../../sources/lib/*dylib | grep local
|
||||
|
||||
# ensure we're linking to the right image libs
|
||||
otool -L ../../sources/lib/*dylib | grep UnixImageIO
|
||||
|
||||
# pycairo
|
||||
# >= python 3.1
|
||||
#wget http://cairographics.org/releases/pycairo-1.8.10.tar.bz2
|
||||
#tar xvf pycairo-1.8.10.tar.bz2
|
||||
#./waf configure
|
||||
|
||||
#wget http://cairographics.org/releases/pycairo-1.8.8.tar.gz
|
||||
#tar xvf pycairo-1.8.8.tar.gz
|
||||
#cd pycairo-1.8.8
|
||||
|
||||
# py25
|
||||
# line 35 of configure.ac AM_PATH_PYTHON(2.5)
|
||||
#export PATH=/Library/Frameworks/Python.framework/Versions/2.5/bin/:$PATH
|
||||
#./configure --prefix=$PREFIX
|
||||
#make -j4 install
|
||||
|
||||
# py26
|
||||
#export PATH=/Library/Frameworks/Python.framework/Versions/2.6/bin/:$PATH
|
||||
#./configure --prefix=$PREFIX
|
||||
#make -j4 install
|
||||
|
||||
#py27
|
||||
#export PATH=/Library/Frameworks/Python.framework/Versions/2.7/bin/:$PATH
|
||||
#make clean
|
||||
#./configure --prefix=$PREFIX
|
||||
#make -j4 install
|
||||
|
||||
|
||||
# boost
|
||||
cd ../../deps
|
||||
wget http://voxel.dl.sourceforge.net/project/boost/boost/1.47.0/boost_1_47_0.tar.bz2
|
||||
tar xjvf boost_1_47_0.tar.bz2
|
||||
cd boost_1_47_0
|
||||
|
||||
# edit tools/build/v2/tools/python.jam, line 980, replace with:
|
||||
if $(target-os) in windows cygwin
|
||||
{
|
||||
alias python_for_extensions : python : $(target-requirements) ;
|
||||
}
|
||||
else if $(target-os) = darwin
|
||||
{
|
||||
alias python_for_extensions
|
||||
:
|
||||
: $(target-requirements)
|
||||
:
|
||||
: $(usage-requirements) <linkflags>"-undefined dynamic_lookup"
|
||||
;
|
||||
}
|
||||
|
||||
./bootstrap.sh
|
||||
./bjam --prefix=$PREFIX --with-thread --with-filesystem \
|
||||
--with-regex --with-program_options --with-system --with-chrono \
|
||||
-sHAVE_ICU=1 -sICU_PATH=$PREFIX \
|
||||
toolset=darwin \
|
||||
address-model=32_64 \
|
||||
architecture=x86 \
|
||||
link=shared \
|
||||
variant=release \
|
||||
stage
|
||||
|
||||
./bjam --prefix=$PREFIX --with-thread --with-filesystem \
|
||||
--with-regex --with-program_options --with-system --with-chrono \
|
||||
-sHAVE_ICU=1 -sICU_PATH=$PREFIX \
|
||||
toolset=darwin \
|
||||
address-model=32_64 \
|
||||
architecture=x86 \
|
||||
link=shared \
|
||||
variant=release \
|
||||
install
|
||||
|
||||
# if needed, rebuild regex without icu..
|
||||
./bjam --prefix=$PREFIX --with-regex \
|
||||
--disable-icu -a \
|
||||
toolset=darwin \
|
||||
address-model=32_64 \
|
||||
architecture=x86 \
|
||||
link=shared \
|
||||
variant=release \
|
||||
install
|
||||
|
||||
# toolset=clang-darwin cxxflags="-fPIC" linkflags="-undefined dynamic_lookup"
|
||||
|
||||
# boost python for various versions are done in python script
|
||||
python ../../scripts/build_boost_pythons.py 2.5 32_64
|
||||
mv stage/lib/libboost_python.dylib stage/lib/libboost_python25.dylib
|
||||
cp stage/lib/libboost_python25.dylib ../../sources/lib/libboost_python25.dylib
|
||||
|
||||
python ../../scripts/build_boost_pythons.py 2.6 32_64
|
||||
mv stage/lib/libboost_python.dylib stage/lib/libboost_python26.dylib
|
||||
cp stage/lib/libboost_python26.dylib ../../sources/lib/libboost_python26.dylib
|
||||
|
||||
python ../../scripts/build_boost_pythons.py 2.7 32_64
|
||||
mv stage/lib/libboost_python.dylib stage/lib/libboost_python27.dylib
|
||||
cp stage/lib/libboost_python27.dylib ../../sources/lib/libboost_python27.dylib
|
||||
|
||||
python ../../scripts/build_boost_pythons.py 3.1 32_64
|
||||
mv stage/lib/libboost_python3.dylib stage/lib/libboost_python31.dylib
|
||||
cp stage/lib/libboost_python31.dylib ../../sources/lib/libboost_python31.dylib
|
||||
|
||||
python ../../scripts/build_boost_pythons.py 3.2 32_64
|
||||
mv stage/lib/libboost_python3.dylib stage/lib/libboost_python32.dylib
|
||||
cp stage/lib/libboost_python32.dylib ../../sources/lib/libboost_python32.dylib
|
||||
|
||||
|
||||
#cp stage/lib/libboost_*dylib ../../sources/lib/
|
||||
|
||||
cd ../../sources/lib
|
||||
|
||||
# fix boost pythons
|
||||
install_name_tool -id $INSTALL/libboost_python25.dylib libboost_python25.dylib
|
||||
install_name_tool -id $INSTALL/libboost_python26.dylib libboost_python26.dylib
|
||||
install_name_tool -id $INSTALL/libboost_python27.dylib libboost_python27.dylib
|
||||
install_name_tool -id $INSTALL/libboost_python31.dylib libboost_python31.dylib
|
||||
install_name_tool -id $INSTALL/libboost_python32.dylib libboost_python32.dylib
|
||||
|
||||
# fix boost libs
|
||||
install_name_tool -id $INSTALL/libboost_system.dylib libboost_system.dylib
|
||||
install_name_tool -id $INSTALL/libboost_filesystem.dylib libboost_filesystem.dylib
|
||||
install_name_tool -id $INSTALL/libboost_regex.dylib libboost_regex.dylib
|
||||
install_name_tool -id $INSTALL/libboost_program_options.dylib libboost_program_options.dylib
|
||||
install_name_tool -id $INSTALL/libboost_thread.dylib libboost_thread.dylib
|
||||
install_name_tool -change libboost_system.dylib $INSTALL/libboost_system.dylib libboost_filesystem.dylib
|
||||
#install_name_tool -change libicui18n.46.dylib $INSTALL/libicui18n.46.dylib libboost_regex.dylib
|
||||
|
||||
# currently broken, waiting on http://www.gaia-gis.it/rasterlite2/
|
||||
# rasterlite we must bundle as it is not available in the SQLite.framework
|
||||
#cd ../../deps
|
||||
#svn co https://www.gaia-gis.it/svn/librasterlite
|
||||
#export LDFLAGS="-arch i386 -arch x86_64 -headerpad_max_install_names -L/Library/Frameworks/SQLite3.framework/unix/lib -L/Library/Frameworks/UnixImageIO.framework/unix/lib -L/Library/Frameworks/PROJ.framework/unix/lib"
|
||||
#export CFLAGS="-Os -arch i386 -arch x86_64 -I/Library/Frameworks/SQLite3.framework/unix/include -I/Library/Frameworks/UnixImageIO.framework/unix/include -I/Library/Frameworks/PROJ.framework/unix/include"
|
||||
#export CXXFLAGS=$CFLAGS
|
||||
#cd librasterlite
|
||||
#./configure --disable-dependency-tracking --prefix=$PREFIX
|
||||
#make clean
|
||||
#make -j4
|
||||
#make install
|
||||
#cd ../../sources/lib
|
||||
#install_name_tool -id $INSTALL/librasterlite.0.dylib librasterlite.0.dylib
|
||||
|
||||
# sqlite with rtree
|
||||
cd ../../deps
|
||||
wget http://www.sqlite.org/sqlite-autoconf-3070701.tar.gz
|
||||
tar xvf sqlite-autoconf-3070701.tar.gz
|
||||
cd sqlite-autoconf-3070701
|
||||
export CFLAGS="-DSQLITE_ENABLE_RTREE=1 -O3 "$CFLAGS
|
||||
./configure --prefix=$PREFIX --enable-static=yes --enable-shared=no --disable-dependency-tracking
|
||||
make -j4 && make install
|
||||
|
||||
|
||||
### MAPNIK ###
|
||||
|
||||
# make sure we set DYLD path so we can link to libs without installing
|
||||
export DYLD_LIBRARY_PATH=$PREFIX/lib
|
||||
|
||||
# compile mapnik using osx/config.py
|
||||
scons PKG_CONFIG_PATH=$PREFIX/lib/pkgconfig -j2 install BINDINGS=''
|
||||
|
||||
# then compile each python version..
|
||||
|
||||
# 2.5
|
||||
rm bindings/python/*os
|
||||
rm bindings/python/mapnik/_mapnik2.so
|
||||
scons configure BINDINGS=python PYTHON=/usr/bin/python2.5 BOOST_PYTHON_LIB=boost_python25
|
||||
scons -j2 install
|
||||
cp bindings/python/mapnik/_mapnik2.so osx/python/_mapnik2_25.so
|
||||
|
||||
# 2.6
|
||||
rm bindings/python/*os
|
||||
rm bindings/python/mapnik/_mapnik2.so
|
||||
scons configure BINDINGS=python PYTHON=/usr/bin/python2.6 BOOST_PYTHON_LIB=boost_python26
|
||||
scons -j2 install
|
||||
cp bindings/python/mapnik/_mapnik2.so osx/python/_mapnik2_26.so
|
||||
|
||||
# 2.7
|
||||
rm bindings/python/*os
|
||||
rm bindings/python/mapnik/_mapnik2.so
|
||||
scons configure BINDINGS=python PYTHON=/Library/Frameworks/Python.framework/Versions/2.7/bin/python2.7 BOOST_PYTHON_LIB=boost_python27
|
||||
scons -j2 install
|
||||
cp bindings/python/mapnik/_mapnik2.so osx/python/_mapnik2_27.so
|
||||
|
||||
|
||||
# 3.1
|
||||
# needs patch: http://trac.mapnik.org/wiki/Python3k
|
||||
rm bindings/python/*os
|
||||
rm bindings/python/mapnik/_mapnik2.so
|
||||
scons configure BINDINGS=python PYTHON=/Library/Frameworks/Python.framework/Versions/3.1/bin/python3.1 BOOST_PYTHON_LIB=boost_python31
|
||||
scons -j2 install
|
||||
cp bindings/python/mapnik/_mapnik2.so osx/python/_mapnik2_31.so
|
||||
|
||||
# 3.2
|
||||
rm bindings/python/*os
|
||||
rm bindings/python/mapnik/_mapnik2.so
|
||||
scons configure BINDINGS=python PYTHON=/Library/Frameworks/Python.framework/Versions/3.2/bin/python3.2m BOOST_PYTHON_LIB=boost_python32
|
||||
scons -j2 install
|
||||
cp bindings/python/mapnik/_mapnik2.so osx/python/_mapnik2_32.so
|
||||
|
||||
|
||||
|
||||
|
||||
# build a ton of versions of node (just to be safe about ABI)
|
||||
cd ../../deps
|
||||
|
||||
for VER in {"0.2.4","0.2.5","0.2.6","0.3.0","0.3.1","0.3.2","0.3.3","0.3.4","0.3.5","0.3.6","0.3.7"}
|
||||
do
|
||||
wget http://nodejs.org/dist/node-v$VER.tar.gz
|
||||
tar xvf node-v$VER.tar.gz
|
||||
cd node-v$VER
|
||||
./configure --prefix=$PREFIX/node$VER
|
||||
make
|
||||
make install
|
||||
cd ../
|
||||
done
|
||||
|
||||
# node-mapnik
|
||||
cd ../../deps
|
||||
git clone git://github.com/mapnik/node-mapnik.git
|
||||
cd node-mapnik
|
||||
#export PATH=../../Library/Frameworks/Mapnik.framework/Programs:$PATH
|
||||
export PATH=/Library/Frameworks/Mapnik.framework/Programs:$PATH
|
||||
|
||||
# TODO - needs work
|
||||
# only 64 bit
|
||||
# versioned module
|
||||
# all targets
|
||||
# custom node prefix
|
||||
# cairo support
|
||||
|
||||
#CXXFLAGS=" -g -DNDEBUG -O3 -Wall -DBOOST_SPIRIT_THREADSAFE -DMAPNIK_THREADSAFE -ansi -finline-functions -Wno-inline -fPIC -arch x86_64 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE -DEV_MULTIPLICITY=0 -I/Library/Frameworks/Mapnik.framework/Versions/2.0/unix/include -I/Library/Frameworks/Mapnik.framework/Versions/2.0/unix/include/freetype2 "
|
||||
|
||||
#for VER in {"0.2.4","0.2.5","0.2.6","0.3.0","0.3.1","0.3.2","0.3.3","0.3.4"}
|
||||
#for VER in {"0.3.4","0.3.5","0.3.6","0.3.7"}
|
||||
#do
|
||||
# mkdir build/default/src/$VER
|
||||
# mkdir lib/$VER
|
||||
# NODE_PREFIX="$PREFIX/node$VER"
|
||||
# export PATH=$NODE_PREFIX/bin:$PATH
|
||||
# OBJ="build/default/src/$VER/_mapnik_1.o"
|
||||
# TARGET="lib/$VER/_mapnik.node"
|
||||
# g++ $CXXFLAGS -I$NODE_PREFIX/include/node src/_mapnik.cc -c -o $OBJ
|
||||
# LDFLAGS="-L/Library/Frameworks/Mapnik.framework/Versions/2.0/unix/lib -lmapnik2 -bundle -#undefined dynamic_lookup"
|
||||
# g++ $OBJ -o $TARGET $LDFLAGS
|
||||
#done
|
||||
|
||||
|
||||
# then re-run wrap.py
|
|
@ -1,340 +0,0 @@
|
|||
# build notes for compiling mapnik deps statically
|
||||
# and "FAT" (aka. universal) in order to allow
|
||||
# linking a fully standalone libmapnik.a
|
||||
|
||||
PREFIX=`pwd`/osx/sources
|
||||
mkdir -p $PREFIX
|
||||
export DYLD_LIBRARY_PATH=$PREFIX/lib
|
||||
export DYLD_LIBRARY_PATH=$PREFIX/lib
|
||||
export PKG_CONFIG_PATH=$PREFIX/lib/pkgconfig
|
||||
export PATH=$PREFIX/bin:$PATH
|
||||
export CORE_CFLAGS="-O3 -arch x86_64 -arch i386 -mmacosx-version-min=10.6 -isysroot /Developer/SDKs/MacOSX10.6.sdk"
|
||||
export CORE_CXXFLAGS=$CORE_CFLAGS
|
||||
export CORE_LDFLAGS="-Wl,-search_paths_first -arch x86_64 -arch i386 -Wl,-syslibroot,/Developer/SDKs/MacOSX10.6.sdk"
|
||||
export ARCHFLAGS="-arch x86_64 -arch i386"
|
||||
|
||||
|
||||
cd osx
|
||||
mkdir -p deps
|
||||
cd deps
|
||||
|
||||
|
||||
# icucore headers - temporary workaround until I can get more recent icu versions working
|
||||
wget http://www.opensource.apple.com/tarballs/ICU/ICU-400.38.tar.gz
|
||||
tar xvf ICU-400.38.tar.gz
|
||||
cd ICU-400.38
|
||||
make install
|
||||
cp -R build/usr/local/include/unicode/ ../../sources/include/unicode
|
||||
cd ../
|
||||
|
||||
# boost
|
||||
wget http://voxel.dl.sourceforge.net/project/boost/boost/1.47.0/boost_1_47_0.tar.bz2
|
||||
tar xjvf boost_1_47_0.tar.bz2
|
||||
cd boost_1_47_0
|
||||
./bootstrap.sh
|
||||
|
||||
# no icu variant
|
||||
./bjam --prefix=$PREFIX -j2 -d2 \
|
||||
--with-thread \
|
||||
--with-filesystem \
|
||||
--with-program_options --with-system --with-chrono \
|
||||
--with-regex --disable-icu \
|
||||
toolset=darwin \
|
||||
macosx-version=10.6 \
|
||||
address-model=32_64 \
|
||||
architecture=x86 \
|
||||
link=static \
|
||||
variant=release \
|
||||
stage
|
||||
|
||||
./bjam --prefix=$PREFIX -j2 -d2 \
|
||||
--with-thread \
|
||||
--with-filesystem \
|
||||
--with-program_options --with-system --with-chrono \
|
||||
--with-regex --disable-icu \
|
||||
toolset=darwin \
|
||||
macosx-version=10.6 \
|
||||
address-model=32_64 \
|
||||
architecture=x86 \
|
||||
link=static \
|
||||
variant=release \
|
||||
install
|
||||
|
||||
cd ../
|
||||
|
||||
# universal flags
|
||||
export CFLAGS=$CORE_CFLAGS
|
||||
export CXXFLAGS=$CORE_CXXFLAGS
|
||||
export LDFLAGS=$CORE_LDFLAGS
|
||||
|
||||
# sqlite
|
||||
wget http://www.sqlite.org/sqlite-autoconf-3070701.tar.gz
|
||||
tar xvf sqlite-autoconf-3070701.tar.gz
|
||||
cd sqlite-autoconf-3070701
|
||||
export CFLAGS="-DSQLITE_ENABLE_RTREE=1 -O3 "$CFLAGS
|
||||
./configure --prefix=$PREFIX --enable-static --disable-shared --disable-dependency-tracking
|
||||
make -j4
|
||||
make install
|
||||
cd ../
|
||||
|
||||
|
||||
# freetype
|
||||
wget http://download.savannah.gnu.org/releases/freetype/freetype-2.4.6.tar.bz2
|
||||
tar xvf freetype-2.4.6.tar.bz2
|
||||
cd freetype-2.4.6
|
||||
./configure --prefix=$PREFIX --enable-static --disable-shared --disable-dependency-tracking
|
||||
make -j4
|
||||
make install
|
||||
cd ../
|
||||
|
||||
# proj4
|
||||
wget http://download.osgeo.org/proj/proj-datumgrid-1.5.zip
|
||||
#wget http://download.osgeo.org/proj/proj-4.7.0.tar.gz
|
||||
#tar xvf proj-4.7.0.tar.gz
|
||||
#cd proj-4.7.0
|
||||
# we use trunk instead for better threading support
|
||||
svn co http://svn.osgeo.org/metacrs/proj/trunk/proj proj-trunk # at the time pre-release 4.8.0
|
||||
cd proj-trunk/nad
|
||||
unzip ../../proj-datumgrid-1.5.zip
|
||||
cd ../
|
||||
./configure --prefix=$PREFIX --enable-static --disable-shared --disable-dependency-tracking
|
||||
make -j4
|
||||
make install
|
||||
cd ../
|
||||
|
||||
# libpng
|
||||
wget ftp://ftp.simplesystems.org/pub/libpng/png/src/libpng-1.5.5.tar.gz
|
||||
tar xvf libpng-1.5.5.tar.gz
|
||||
cd libpng-1.5.5
|
||||
./configure --prefix=$PREFIX --enable-static --disable-shared --disable-dependency-tracking
|
||||
make -j4
|
||||
make install
|
||||
cd ../
|
||||
|
||||
# libjpeg
|
||||
wget http://www.ijg.org/files/jpegsrc.v8c.tar.gz
|
||||
tar xvf jpegsrc.v8c.tar.gz
|
||||
cd jpeg-8c
|
||||
./configure --prefix=$PREFIX --enable-static --disable-shared --disable-dependency-tracking
|
||||
make -j4
|
||||
make install
|
||||
cd ../
|
||||
|
||||
# libtiff
|
||||
wget http://download.osgeo.org/libtiff/tiff-3.9.5.tar.gz
|
||||
tar xvf tiff-3.9.5.tar.gz
|
||||
cd tiff-3.9.5
|
||||
./configure --prefix=$PREFIX --enable-static --disable-shared --disable-dependency-tracking
|
||||
make -j4
|
||||
make install
|
||||
cd ../
|
||||
|
||||
# gettext which provides libintl for libpq
|
||||
wget http://ftp.gnu.org/pub/gnu/gettext/gettext-0.18.1.1.tar.gz
|
||||
tar xvf gettext-0.18.1.1.tar.gz
|
||||
cd gettext-0.18.1.1
|
||||
export CC=gcc
|
||||
export CXX=g++
|
||||
./configure --prefix=$PREFIX --enable-static --disable-shared --disable-dependency-tracking \
|
||||
--without-included-gettext --disable-debug --without-included-glib \
|
||||
--without-included-libcroco --without-included-libxml \
|
||||
--without-emacs --without-git --without-cvs
|
||||
make -j4
|
||||
make install
|
||||
cd ../
|
||||
|
||||
|
||||
# postgis
|
||||
# install postgres 9.x client from somewhere.
|
||||
# http://www.kyngchaos.com/software/postgres works nicely
|
||||
# then copy the clients static libpq.a to a prioritized directory:
|
||||
cp /usr/local/pgsql/lib/libpq.a osx/sources/lib/libpq.a
|
||||
# then edit plugins/input/postgis/SConscript adding more libs to link to
|
||||
|
||||
|
||||
# gdal 1.8.1
|
||||
wget http://download.osgeo.org/gdal/gdal-1.8.1.tar.gz
|
||||
tar xvf gdal-1.8.1.tar.gz
|
||||
cd gdal-1.8.1
|
||||
./configure --prefix=$PREFIX --enable-static --disable-shared --disable-dependency-tracking \
|
||||
--with-libtiff=$PREFIX \
|
||||
--with-jpeg=$PREFIX \
|
||||
--with-png=$PREFIX \
|
||||
--with-static-proj4=$PREFIX \
|
||||
--with-sqlite3=no \
|
||||
--with-spatialite=no \
|
||||
--with-curl=no \
|
||||
--with-geos=no \
|
||||
--with-pcraster=no \
|
||||
--with-cfitsio=no \
|
||||
--with-odbc=no \
|
||||
--with-libkml=no \
|
||||
--with-pcidsk=no \
|
||||
--with-jasper=no \
|
||||
--with-gif=no \
|
||||
--with-pg=no \
|
||||
--with-hide-internal-symbols=yes \
|
||||
--with-vfk=no \
|
||||
--with-grib=no
|
||||
|
||||
make -j4
|
||||
make install
|
||||
cd ../
|
||||
|
||||
|
||||
# cairo and friends
|
||||
|
||||
# pkg-config so we get cairo and friends configured correctly
|
||||
# note: we use 0.25 because >= 0.26 no long bundles glib and we don't
|
||||
# want to have to depend on an external glib dep
|
||||
wget http://pkgconfig.freedesktop.org/releases/pkg-config-0.25.tar.gz
|
||||
tar xvf pkg-config-0.25.tar.gz
|
||||
cd pkg-config-0.25
|
||||
# patch glib.h
|
||||
# change line 198 to:
|
||||
# ifndef G_INLINE_FUNC inline
|
||||
./configure --disable-debug --disable-dependency-tracking --prefix=$PREFIX
|
||||
make -j4
|
||||
make install
|
||||
cd ../
|
||||
|
||||
# pixman
|
||||
wget http://cairographics.org/releases/pixman-0.22.2.tar.gz
|
||||
tar xvf pixman-0.22.2.tar.gz
|
||||
cd pixman-0.22.2
|
||||
./configure --enable-static --disable-shared --disable-dependency-tracking --prefix=$PREFIX
|
||||
make -j4
|
||||
make install
|
||||
cd ../
|
||||
|
||||
# fontconfig
|
||||
wget http://www.freedesktop.org/software/fontconfig/release/fontconfig-2.8.0.tar.gz
|
||||
tar xvf fontconfig-2.8.0.tar.gz
|
||||
cd fontconfig-2.8.0
|
||||
./configure --enable-static --disable-shared --disable-dependency-tracking --prefix=$PREFIX \
|
||||
--with-freetype-config=$PREFIX/bin/freetype-config
|
||||
make -j4
|
||||
make install
|
||||
cd ../
|
||||
|
||||
|
||||
# cairo
|
||||
wget http://cairographics.org/releases/cairo-1.10.2.tar.gz
|
||||
tar xvf cairo-1.10.2.tar.gz
|
||||
cd cairo-1.10.2
|
||||
# NOTE: PKG_CONFIG_PATH must be correctly set by this point
|
||||
export LDFLAGS="-L$PREFIX/lib "$CORE_LDFLAGS
|
||||
export CFLAGS="-I$PREFIX/include "$CORE_CFLAGS
|
||||
export png_CFLAGS="-I$PREFIX/include"
|
||||
export png_LIBS="-I$PREFIX/lib -lpng"
|
||||
./configure \
|
||||
--enable-static --disable-shared \
|
||||
--enable-pdf=yes \
|
||||
--enable-ft=yes \
|
||||
--enable-png=yes \
|
||||
--enable-svg=yes \
|
||||
--enable-ps=yes \
|
||||
--enable-fc=yes \
|
||||
--enable-trace=no \
|
||||
--enable-gtk-doc=no \
|
||||
--enable-qt=no \
|
||||
--enable-quartz=no \
|
||||
--enable-quartz-font=no \
|
||||
--enable-quartz-image=no \
|
||||
--enable-win32=no \
|
||||
--enable-win32-font=no \
|
||||
--enable-skia=no \
|
||||
--enable-os2=no \
|
||||
--enable-beos=no \
|
||||
--enable-drm=no \
|
||||
--enable-drm-xr=no \
|
||||
--enable-gallium=no \
|
||||
--enable-gl=no \
|
||||
--enable-directfb=no \
|
||||
--enable-vg=no \
|
||||
--enable-egl=no \
|
||||
--enable-glx=no \
|
||||
--enable-wgl=no \
|
||||
--enable-test-surfaces=no \
|
||||
--enable-tee=no \
|
||||
--enable-xml=no \
|
||||
--enable-interpreter=no \
|
||||
--disable-valgrind \
|
||||
--enable-gobject=no \
|
||||
--enable-static=no \
|
||||
--enable-xlib=no \
|
||||
--enable-xlib-xrender=no \
|
||||
--enable-xcb=no \
|
||||
--enable-xlib-xcb=no \
|
||||
--enable-xcb-shm=no \
|
||||
--enable-xcb-drm=no \
|
||||
--disable-dependency-tracking \
|
||||
--prefix=$PREFIX
|
||||
make -j4
|
||||
make install
|
||||
cd ../
|
||||
|
||||
|
||||
# libsigcxx
|
||||
wget http://ftp.gnome.org/pub/GNOME/sources/libsigc++/2.2/libsigc++-2.2.10.tar.bz2
|
||||
tar xvf libsigc++-2.2.10.tar.bz2
|
||||
cd libsigc++-2.2.10
|
||||
export CFLAGS=$CORE_CFLAGS
|
||||
export CXXFLAGS=$CORE_CXXFLAGS
|
||||
export LDFLAGS=$CORE_LDFLAGS
|
||||
./configure --enable-static --disable-shared --disable-dependency-tracking --prefix=$PREFIX
|
||||
make -j4
|
||||
make install
|
||||
cd ../
|
||||
|
||||
# cairomm
|
||||
wget http://cairographics.org/releases/cairomm-1.10.0.tar.gz
|
||||
tar xvf cairomm-1.10.0.tar.gz
|
||||
cd cairomm-1.10.0
|
||||
# NOTE: PKG_CONFIG_PATH must be correctly set by this point
|
||||
export LDFLAGS="-L$PREFIX/lib -lcairo -lfontconfig -lsigc-2.0 "$CORE_LDFLAGS
|
||||
export CFLAGS="-I$PREFIX/include -I$PREFIX/include/cairo -I$PREFIX/include/freetype2 -I$PREFIX/include/fontconfig -I$PREFIX/lib/sigc++-2.0/include -I$PREFIX/include/sigc++-2.0 -I$PREFIX/include/sigc++-2.0/sigc++ "$CORE_CFLAGS
|
||||
export CXXFLAGS="-I$PREFIX/include "$CFLAGS
|
||||
|
||||
./configure --enable-static --disable-shared \
|
||||
--disable-dependency-tracking --prefix=$PREFIX
|
||||
make -j4
|
||||
make install
|
||||
cd ../
|
||||
|
||||
# mapnik
|
||||
|
||||
# config.py
|
||||
|
||||
CXX = 'clang++'
|
||||
CC = 'clang++'
|
||||
CUSTOM_CXXFLAGS = '-arch x86_64 -arch i386 -mmacosx-version-min=10.6 -isysroot /Developer/SDKs/MacOSX10.6.sdk'
|
||||
CUSTOM_LDFLAGS = '-Wl,-search_paths_first -arch x86_64 -arch i386 -Wl,-syslibroot,/Developer/SDKs/MacOSX10.6.sdk'
|
||||
INPUT_PLUGINS = 'gdal,ogr,postgis,shape'
|
||||
DESTDIR = './osx/sources/'
|
||||
BOOST_INCLUDES = './osx/sources/include'
|
||||
BOOST_LIBS = './osx/sources/lib'
|
||||
FREETYPE_CONFIG = './osx/sources/bin/freetype-config'
|
||||
ICU_INCLUDES = './osx/sources/include'
|
||||
ICU_LIB_NAME = 'icucore'
|
||||
PNG_INCLUDES = './osx/sources/include'
|
||||
PNG_LIBS = './osx/sources/lib'
|
||||
JPEG_INCLUDES = './osx/sources/include'
|
||||
JPEG_LIBS = './osx/sources/lib'
|
||||
TIFF_INCLUDES = './osx/sources/include'
|
||||
TIFF_LIBS = './osx/sources/lib'
|
||||
PROJ_INCLUDES = './osx/sources/include'
|
||||
PROJ_LIBS = './osx/sources/lib'
|
||||
PKG_CONFIG_PATH = './osx/sources/lib/pkgconfig'
|
||||
SQLITE_INCLUDES = './osx/sources/include'
|
||||
SQLITE_LIBS = './osx/sources/lib'
|
||||
BINDINGS = 'none'
|
||||
|
||||
|
||||
# fixup the mapnik-config
|
||||
# we need to remove the local paths so that 'other-libs' and 'other-includes' look something like:
|
||||
|
||||
other_libs='-Wl,-search_paths_first -arch x86_64 -arch i386 -Wl,-syslibroot,/Developer/SDKs/MacOSX10.6.sdk -L/usr/lib -lfreetype -licucore -lboost_filesystem -lboost_regex -lcairomm-1.0 -lcairo -lboost_thread -lboost_system'
|
||||
|
||||
other_includes='-arch x86_64 -arch i386 -mmacosx-version-min=10.6 -isysroot /Developer/SDKs/MacOSX10.6.sdk -arch x86_64 -arch i386 -mmacosx-version-min=10.6 -isysroot /Developer/SDKs/MacOSX10.6.sdk -DU_HIDE_DRAFT_API -DUDISABLE_RENAMING -DHAVE_JPEG -ansi -Wall -ftemplate-depth-200 -DDARWIN -DBOOST_SPIRIT_THREADSAFE -DMAPNIK_THREADSAFE -O3 -finline-functions -Wno-inline -DNDEBUG -DHAVE_CAIRO -I/usr/include/libxml2 -DHAVE_CAIRO -DLIBTOOL_SUPPORTS_ADVISE'
|
||||
|
|
@ -1,286 +0,0 @@
|
|||
|
||||
PREFIX=/Users/dane/projects/mapnik-dev/trunk-build-static/osx/sources
|
||||
mkdir -p $PREFIX
|
||||
export DYLD_LIBRARY_PATH=$PREFIX/lib
|
||||
# final resting place
|
||||
INSTALL=/Library/Frameworks/Mapnik.framework/unix/lib
|
||||
export DYLD_LIBRARY_PATH=$PREFIX/lib
|
||||
export PKG_CONFIG_PATH=$PREFIX/lib/pkgconfig
|
||||
export PATH=$PREFIX/bin:$PATH
|
||||
export CFLAGS="-O3 -arch x86_64"
|
||||
export CXXFLAGS="-O3 -arch x86_64"
|
||||
export LDFLAGS="-arch x86_64"
|
||||
|
||||
|
||||
cd osx
|
||||
mkdir -p deps
|
||||
cd deps
|
||||
|
||||
|
||||
wget http://download.icu-project.org/files/icu4c/4.6.1/icu4c-4_6_1-src.tgz
|
||||
tar xvf icu4c-4_6_1-src.tgz
|
||||
cd icu/source
|
||||
|
||||
# universal flags
|
||||
export CFLAGS="-O3 -arch x86_64"
|
||||
export CXXFLAGS="-O3 -arch x86_64"
|
||||
export LDFLAGS="-arch x86_64"
|
||||
./runConfigureICU MacOSX --prefix=$PREFIX --enable-static --disable-shared \
|
||||
--with-library-bits=64 --enable-release \
|
||||
--with-data-packaging=static
|
||||
|
||||
#Data Packaging: archive
|
||||
# This means: ICU data will be stored in a single .dat file.
|
||||
# To locate data: ICU will look in /Users/dane/projects/mapnik-dev/trunk-build-static/osx/sources/share/icu/4.6 which is the #installation location. Call u_setDataDirectory() or use the ICU_DATA environment variable to override.
|
||||
|
||||
make install -j4
|
||||
|
||||
ln -s `pwd`/../sources/lib `pwd`/../sources/lib64
|
||||
|
||||
|
||||
|
||||
wget http://voxel.dl.sourceforge.net/project/boost/boost/1.47.0/boost_1_47_0.tar.bz2
|
||||
tar xjvf boost_1_47_0.tar.bz2
|
||||
cd boost_1_47_0
|
||||
./bootstrap.sh
|
||||
#--prefix-dir
|
||||
|
||||
# architecture=x86 prevents icu link test from working?
|
||||
l
|
||||
./bjam --prefix=$PREFIX --with-python \
|
||||
--with-thread \
|
||||
--with-filesystem \
|
||||
--with-program_options --with-system --with-chrono \
|
||||
--with-regex define=U_STATIC_IMPLEMENTATION=1 \
|
||||
-sHAVE_ICU=1 -sICU_PATH=$PREFIX \
|
||||
toolset=darwin \
|
||||
address-model=64 \
|
||||
link=static \
|
||||
variant=release \
|
||||
stage
|
||||
|
||||
./bjam --prefix=$PREFIX --with-python \
|
||||
--with-thread \
|
||||
--with-filesystem \
|
||||
--with-program_options --with-system --with-chrono \
|
||||
--with-regex define=U_STATIC_IMPLEMENTATION=1 \
|
||||
-sHAVE_ICU=1 -sICU_PATH=$PREFIX \
|
||||
toolset=darwin \
|
||||
address-model=64 \
|
||||
link=static \
|
||||
variant=release \
|
||||
install
|
||||
|
||||
# no icu variant
|
||||
./bjam --prefix=$PREFIX --with-python \
|
||||
--with-thread \
|
||||
--with-filesystem \
|
||||
--with-program_options --with-system --with-chrono \
|
||||
--with-regex --disable-icu \
|
||||
toolset=darwin \
|
||||
address-model=64 \
|
||||
link=static \
|
||||
variant=release \
|
||||
install
|
||||
|
||||
|
||||
./bjam --prefix=$PREFIX -a \
|
||||
--with-regex define=U_STATIC_IMPLEMENTATION=1 \
|
||||
-sHAVE_ICU=1 -sICU_PATH=$PREFIX \
|
||||
toolset=darwin \
|
||||
address-model=64 \
|
||||
link=static \
|
||||
variant=release \
|
||||
stage
|
||||
|
||||
cp stage/lib/libboost_regex.a ../../sources/lib/
|
||||
|
||||
|
||||
tar xvf ../deps/freetype-2.4.4.tar.gz
|
||||
export CFLAGS="-O3 -arch x86_64"
|
||||
export LDFLAGS="-arch x86_64"
|
||||
cd freetype-2.4.4
|
||||
./configure --prefix=$PREFIX \
|
||||
--enable-static \
|
||||
--disable-shared
|
||||
make -j4
|
||||
make install
|
||||
|
||||
|
||||
|
||||
wget http://download.osgeo.org/proj/proj-4.7.0.tar.gz
|
||||
tar xvf proj-4.7.0.tar.gz
|
||||
cd proj-4.7.0
|
||||
export CFLAGS="-O3 -arch x86_64"
|
||||
export CXXFLAGS="-O3 -arch x86_64"
|
||||
export LDFLAGS="-arch x86_64"
|
||||
./configure --prefix=$PREFIX --enable-static --disable-shared --disable-dependency-tracking
|
||||
make
|
||||
make install
|
||||
|
||||
|
||||
wget http://downloads.sourceforge.net/project/libpng/libpng12/1.2.44/libpng-1.2.44.tar.bz2
|
||||
tar xvf libpng-1.2.44.tar.bz2
|
||||
./configure --prefix=$PREFIX --enable-static --disable-shared --disable-dependency-tracking
|
||||
make -j4
|
||||
make install
|
||||
|
||||
wget http://www.ijg.org/files/jpegsrc.v8c.tar.gz
|
||||
tar xvf jpegsrc.v8c.tar.gz
|
||||
cd jpeg-8c
|
||||
export CFLAGS="-O3 -arch x86_64"
|
||||
export CXXFLAGS="-O3 -arch x86_64"
|
||||
export LDFLAGS="-arch x86_64"
|
||||
./configure --prefix=$PREFIX --enable-static --disable-shared --disable-dependency-tracking
|
||||
make -j4
|
||||
make install
|
||||
|
||||
wget http://download.osgeo.org/libtiff/tiff-3.9.4.zip
|
||||
tar xvf tiff-3.9.4.zip
|
||||
export CFLAGS="-O3 -arch x86_64"
|
||||
export CXXFLAGS="-O3 -arch x86_64"
|
||||
export LDFLAGS="-arch x86_64"
|
||||
cd tiff-3.9.4
|
||||
./configure --prefix=$PREFIX --enable-static --disable-shared --disable-dependency-tracking
|
||||
make -j4
|
||||
make install
|
||||
|
||||
|
||||
# gdal 1.8
|
||||
./configure --prefix=$PREFIX --disable-static --enable-shared --disable-dependency-tracking \
|
||||
|
||||
export CFLAGS="-O3 -arch x86_64"
|
||||
export CXXFLAGS="-O3 -arch x86_64"
|
||||
export LDFLAGS="-arch x86_64"
|
||||
./configure --prefix=$PREFIX --enable-static --disable-shared --disable-dependency-tracking \
|
||||
--with-libtiff=$PREFIX \
|
||||
--with-jpeg=$PREFIX \
|
||||
--with-png=$PREFIX \
|
||||
--with-geos=no \
|
||||
--with-pcraster=no \
|
||||
--with-libkml=no \
|
||||
--with-pcidsk=no \
|
||||
--with-jasper=no \
|
||||
--with-gif=no \
|
||||
--with-pg=no
|
||||
|
||||
make -j4
|
||||
|
||||
file ../../sources/lib/libgdal.a
|
||||
|
||||
ldd ../../sources/lib/libgdal.dylib
|
||||
|
||||
|
||||
# cairo and friends
|
||||
|
||||
# pkg-config so we get cairo and friends configured correctly
|
||||
wget http://pkgconfig.freedesktop.org/releases/pkg-config-0.26.tar.gz
|
||||
tar xvf pkg-config-0.26.tar.gz
|
||||
cd pkg-config-0.26
|
||||
./configure --disable-dependency-tracking --prefix=$PREFIX
|
||||
make -j4
|
||||
make install
|
||||
cd ../
|
||||
|
||||
wget http://cairographics.org/releases/pixman-0.22.2.tar.gz
|
||||
tar xvf pixman-0.22.2.tar.gz
|
||||
cd pixman-0.22.2
|
||||
./configure --enable-static --disable-shared --disable-dependency-tracking --prefix=$PREFIX
|
||||
make -j4
|
||||
make install
|
||||
cd ../
|
||||
|
||||
wget http://www.freedesktop.org/software/fontconfig/release/fontconfig-2.8.0.tar.gz
|
||||
tar xvf fontconfig-2.8.0.tar.gz
|
||||
cd fontconfig-2.8.0
|
||||
./configure --enable-static --disable-shared --disable-dependency-tracking --prefix=$PREFIX \
|
||||
--with-freetype-config=$PREFIX/bin/freetype-config
|
||||
make -j4
|
||||
make install
|
||||
cd ../
|
||||
|
||||
|
||||
# Cairo
|
||||
wget http://cairographics.org/releases/cairo-1.10.2.tar.gz
|
||||
tar xvf cairo-1.10.2.tar.gz
|
||||
cd cairo-1.10.2
|
||||
# NOTE: PKG_CONFIG_PATH must be correctly set by this point
|
||||
export LDFLAGS="-L$PREFIX/lib "$LDFLAGS
|
||||
export CFLAGS="-I$PREFIX/include "$CFLAGS
|
||||
export png_CFLAGS="-I$PREFIX/include"
|
||||
export png_LIBS="-I$PREFIX/lib -lpng12"
|
||||
./configure \
|
||||
--enable-static --disable-shared \
|
||||
--enable-pdf=yes \
|
||||
--enable-ft=yes \
|
||||
--enable-png=yes \
|
||||
--enable-svg=yes \
|
||||
--enable-ps=yes \
|
||||
--enable-fc=yes \
|
||||
--enable-trace=no \
|
||||
--enable-gtk-doc=no \
|
||||
--enable-qt=no \
|
||||
--enable-quartz=no \
|
||||
--enable-quartz-font=no \
|
||||
--enable-quartz-image=no \
|
||||
--enable-win32=no \
|
||||
--enable-win32-font=no \
|
||||
--enable-skia=no \
|
||||
--enable-os2=no \
|
||||
--enable-beos=no \
|
||||
--enable-drm=no \
|
||||
--enable-drm-xr=no \
|
||||
--enable-gallium=no \
|
||||
--enable-gl=no \
|
||||
--enable-directfb=no \
|
||||
--enable-vg=no \
|
||||
--enable-egl=no \
|
||||
--enable-glx=no \
|
||||
--enable-wgl=no \
|
||||
--enable-test-surfaces=no \
|
||||
--enable-tee=no \
|
||||
--enable-xml=no \
|
||||
--enable-interpreter=no \
|
||||
--disable-valgrind \
|
||||
--enable-gobject=no \
|
||||
--enable-static=no \
|
||||
--enable-xlib=no \
|
||||
--enable-xlib-xrender=no \
|
||||
--enable-xcb=no \
|
||||
--enable-xlib-xcb=no \
|
||||
--enable-xcb-shm=no \
|
||||
--enable-xcb-drm=no \
|
||||
--disable-dependency-tracking \
|
||||
--prefix=$PREFIX
|
||||
make -j4
|
||||
make install
|
||||
cd ../
|
||||
|
||||
|
||||
# libsigcxx
|
||||
wget http://ftp.gnome.org/pub/GNOME/sources/libsigc++/2.2/libsigc++-2.2.10.tar.bz2
|
||||
tar xvf libsigc++-2.2.10.tar.bz2
|
||||
cd libsigc++-2.2.10
|
||||
./configure --enable-static --disable-shared --disable-dependency-tracking --prefix=$PREFIX
|
||||
make -j4
|
||||
make install
|
||||
cd ../
|
||||
|
||||
wget http://cairographics.org/releases/cairomm-1.10.0.tar.gz
|
||||
tar xvf cairomm-1.10.0.tar.gz
|
||||
cd cairomm-1.10.0
|
||||
# NOTE: PKG_CONFIG_PATH must be correctly set by this point
|
||||
export CFLAGS="-O3 -arch x86_64"
|
||||
export CXXFLAGS="-O3 -arch x86_64"
|
||||
export LDFLAGS="-arch x86_64"
|
||||
export LDFLAGS="-L$PREFIX/lib -lcairo -lfontconfig -lsigc-2.0 "$LDFLAGS
|
||||
export CFLAGS="-I$PREFIX/include -I$PREFIX/include/cairo -I$PREFIX/include/freetype2 -I$PREFIX/include/fontconfig -I$PREFIX/lib/sigc++-2.0/include -I$PREFIX/include/sigc++-2.0 -I$PREFIX/include/sigc++-2.0/sigc++ "$CFLAGS
|
||||
# undef CAIRO_HAS_FT_FONT in include/cairo/cairo-features.h
|
||||
#mv ../../sources/lib/pkgconfig/cairo-ft.pc ../../sources/lib/pkgconfig/_cairo-ft.pc
|
||||
#export CFLAGS="-DNCAIRO_HAS_FT_FONT -I$PREFIX/include -I$PREFIX/include/cairo -I$PREFIX/lib/sigc++-2.0/include -I$PREFIX/include/sigc++-2.0 -I$PREFIX/include/sigc++-2.0/sigc++ "
|
||||
export CXXFLAGS="-I$PREFIX/include "$CFLAGS
|
||||
|
||||
./configure --enable-static --disable-shared \
|
||||
--disable-dependency-tracking --prefix=$PREFIX
|
||||
make -j4
|
||||
make install
|
257
osx/wrap.py
257
osx/wrap.py
|
@ -1,257 +0,0 @@
|
|||
#!/usr/bin/env python
|
||||
|
||||
import os
|
||||
import glob
|
||||
import shutil
|
||||
from os.path import join
|
||||
import sys
|
||||
|
||||
def sym(target,link):
|
||||
relative = os.path.relpath(target,link)
|
||||
if relative.startswith('../'):
|
||||
relative = relative.replace('../','',1)
|
||||
try:
|
||||
if os.path.exists(link):
|
||||
os.unlink(link)
|
||||
os.symlink(relative,link)
|
||||
except OSError, e:
|
||||
raise OSError('%s: %s' % (e,link))
|
||||
|
||||
def copy_all_items(pattern,place,recursive=True):
|
||||
items = glob.glob(pattern)
|
||||
for i in items:
|
||||
if recursive:
|
||||
# -R is needed to preserve symlinks
|
||||
os.system('cp -R %s %s' % (i,place))
|
||||
else:
|
||||
shutil.copy(i,place)
|
||||
|
||||
def drop(path):
|
||||
if os.path.islink(path) or os.path.lexists(path):
|
||||
if os.path.isabs(path):
|
||||
print 'not deleting item as it is an absolute path: %' % path
|
||||
else:
|
||||
os.system('rm -r %s' % path)
|
||||
|
||||
if __name__ == "__main__":
|
||||
|
||||
|
||||
# include headers for a full SDK?
|
||||
INCLUDE_HEADERS = True
|
||||
|
||||
INCLUDE_NODE = False
|
||||
|
||||
INCLUDE_PYTHON = True
|
||||
|
||||
INCLUDE_CAIRO = True
|
||||
|
||||
INCLUDE_PYCAIRO = False
|
||||
|
||||
# final resting place
|
||||
install_path = '/Library/Frameworks'
|
||||
|
||||
# move to this dir
|
||||
here = os.path.dirname(os.path.realpath(__file__))
|
||||
os.chdir(here)
|
||||
|
||||
# relative path to DESTDIR output
|
||||
framework = 'Library/Frameworks/Mapnik.framework'
|
||||
|
||||
# Framework version, likely should be 2.0.0..
|
||||
version = '2.0'
|
||||
|
||||
# Versions/Current symlink
|
||||
current = join(framework,'Versions',version)
|
||||
|
||||
# HERE WE GO...
|
||||
|
||||
# set up symlinks
|
||||
# from existing directory, to link
|
||||
active = join(framework,'Versions/Current')
|
||||
#drop('rm -rf %s' % active)
|
||||
sym(current,active)
|
||||
|
||||
# point top level 'unix' to active one
|
||||
sym(join(active,'unix'),join(framework,'unix'))
|
||||
|
||||
# create headers directory if needed
|
||||
if INCLUDE_HEADERS:
|
||||
if not os.path.exists(join(active,'unix/include')):
|
||||
os.mkdir(join(active,'unix/include'))
|
||||
|
||||
# Mapnik Headers
|
||||
if INCLUDE_HEADERS:
|
||||
sym(join(active,'unix/include'),join(active,'Headers'))
|
||||
sym(join(active,'Headers'),join(framework,'Headers'))
|
||||
else:
|
||||
# purge the installed headers of mapnik
|
||||
drop('rm -rf %s' % join(active,'unix/include'))
|
||||
|
||||
if INCLUDE_CAIRO:
|
||||
|
||||
# install cairo libs and deps
|
||||
copy_all_items('sources/lib/libcairo*dylib',join(active,'unix/lib'),recursive=True)
|
||||
copy_all_items('sources/lib/libfontconfig*dylib',join(active,'unix/lib'),recursive=True)
|
||||
copy_all_items('sources/lib/libsigc-2.0*dylib',join(active,'unix/lib'),recursive=True)
|
||||
copy_all_items('sources/lib/libpixman*dylib',join(active,'unix/lib'),recursive=True)
|
||||
|
||||
# install cairo includes
|
||||
if INCLUDE_HEADERS:
|
||||
# what is layout?
|
||||
for group in ['cairo','cairomm-1.0','fontconfig','pixman-1','pycairo','sigc++-2.0','layout']:
|
||||
if not os.path.exists(join(active,'unix/include/%s' % group)):
|
||||
os.mkdir(join(active,'unix/include/%s' % group))
|
||||
copy_all_items('sources/include/%s/*' % group,join(active,'unix/include/%s' % group),recursive=True)
|
||||
|
||||
if not INCLUDE_PYCAIRO:
|
||||
drop('rm -rf %s' % join(active,'unix/include/pycairo'))
|
||||
|
||||
# likely uneeded
|
||||
if not os.path.exists(join(active,'unix/lib/sigc++-2.0')):
|
||||
os.mkdir(join(active,'unix/lib/sigc++-2.0'))
|
||||
copy_all_items('sources/lib/sigc++-2.0/*',join(active,'unix/lib/sigc++-2.0'),recursive=True)
|
||||
|
||||
|
||||
# install icu libs
|
||||
copy_all_items('sources/lib/libicuu*dylib',join(active,'unix/lib'),recursive=True)
|
||||
copy_all_items('sources/lib/libicud*dylib',join(active,'unix/lib'),recursive=True)
|
||||
copy_all_items('sources/lib/libicui1*dylib',join(active,'unix/lib'),recursive=True)
|
||||
|
||||
# install icu includes
|
||||
if INCLUDE_HEADERS:
|
||||
if not os.path.exists(join(active,'unix/include/unicode')):
|
||||
os.mkdir(join(active,'unix/include/unicode'))
|
||||
copy_all_items('sources/include/unicode/*',join(active,'unix/include/unicode'),recursive=True)
|
||||
|
||||
# install boost libs
|
||||
copy_all_items('sources/lib/libboost*dylib',join(active,'unix/lib'),recursive=True)
|
||||
|
||||
# install boost includes
|
||||
if INCLUDE_HEADERS:
|
||||
if not os.path.exists(join(active,'unix/include/boost')):
|
||||
os.mkdir(join(active,'unix/include/boost'))
|
||||
copy_all_items('sources/include/boost/*',join(active,'unix/include/boost'),recursive=True)
|
||||
|
||||
# install rasterlite lib
|
||||
copy_all_items('sources/lib/librasterlite*dylib',join(active,'unix/lib'),recursive=True)
|
||||
|
||||
# install freetype2 libs
|
||||
copy_all_items('sources/lib/libfreetype*dylib',join(active,'unix/lib'),recursive=True)
|
||||
|
||||
# install freetype2 includes
|
||||
if INCLUDE_HEADERS:
|
||||
if not os.path.exists(join(active,'unix/include/freetype2')):
|
||||
os.mkdir(join(active,'unix/include/freetype2'))
|
||||
copy_all_items('sources/include/freetype2/*',join(active,'unix/include/freetype2'),recursive=True)
|
||||
copy_all_items('sources/include/ft2build.h',join(active,'unix/include/'),recursive=True)
|
||||
|
||||
# Node-mapnik bindings location
|
||||
if INCLUDE_NODE:
|
||||
if not os.path.exists(join(active,'unix/lib/node')):
|
||||
os.mkdir(join(active,'unix/lib/node'))
|
||||
os.mkdir(join(active,'unix/lib/node/mapnik'))
|
||||
sym(join(active,'unix/lib/node'),join(active,'Node'))
|
||||
sym(join(active,'Node'),join(framework,'Node'))
|
||||
|
||||
# do this later...
|
||||
copy_all_items('deps/node-mapnik/mapnik/*',join(active,'unix/lib/node/mapnik/'),recursive=True)
|
||||
else:
|
||||
drop('rm -r %s' % join(active,'Node'))
|
||||
drop('rm -r %s' % join(framework,'Node'))
|
||||
drop('rm -r %s' % join(active,'unix/lib/node/'))
|
||||
|
||||
# Resources
|
||||
if not os.path.exists(join(active,'Resources')):
|
||||
os.mkdir(join(active,'Resources'))
|
||||
# TODO - put docs and other stuff here...
|
||||
# or link to /share
|
||||
sym(join(active,'Resources'),join(framework,'Resources'))
|
||||
shutil.copy('Info.plist',join(active,'Resources'))
|
||||
|
||||
# Programs
|
||||
sym(join(active,'unix/bin'),join(active,'Programs'))
|
||||
sym(join(active,'Programs'),join(framework,'Programs'))
|
||||
|
||||
# Datasources
|
||||
sym(join(active,'unix/lib/mapnik2/input'),join(active,'Datasources'))
|
||||
sym(join(active,'Datasources'),join(framework,'Datasources'))
|
||||
|
||||
# Fonts
|
||||
# TODO - move fonts to main level...
|
||||
sym(join(active,'unix/lib/mapnik2/fonts'),join(active,'Fonts'))
|
||||
sym(join(active,'Fonts'),join(framework,'Fonts'))
|
||||
|
||||
# symlinks to user and system font directories.
|
||||
# TODO - NEED TO BENCHMARK performance hit of extra loading time and memory usage
|
||||
#sym('/Library/Fonts', join(fonts,'Library'))
|
||||
#sym('/System/Library/Fonts', join(fonts,'System'))
|
||||
|
||||
# symlink the lib
|
||||
sym(join(active,'unix/lib/libmapnik2.dylib'),join(active,'Mapnik'))
|
||||
sym(join(active,'Mapnik'),join(framework,'Mapnik'))
|
||||
|
||||
# Python
|
||||
if INCLUDE_PYTHON:
|
||||
#python_versions = glob.glob('unix/lib/python*')
|
||||
#for py in python_versions:
|
||||
# py_dir = join(active,'%s/site-packages' % py)
|
||||
if not os.path.exists(join(active,'Python')):
|
||||
os.mkdir(join(active,'Python'))
|
||||
os.mkdir(join(active,'Python/mapnik2'))
|
||||
if INCLUDE_PYCAIRO:
|
||||
os.mkdir(join(active,'Python/cairo'))
|
||||
shutil.copy('python/mapnik.py',join(active,'Python/mapnik2/__init__.py'))
|
||||
if INCLUDE_PYCAIRO:
|
||||
if not os.path.exists(join(active,'Python/cairo/')):
|
||||
os.mkdir(join(active,'Python/cairo/'))
|
||||
shutil.copy('python/cairo.py',join(active,'Python/cairo/__init__.py'))
|
||||
else:
|
||||
drop('rm -rf %s' % join(active,'Python/cairo'))
|
||||
|
||||
#sym(py_dir,join(active,'Python'))
|
||||
sym(join(active,'Python'),join(framework,'Python'))
|
||||
|
||||
|
||||
# pycairo module
|
||||
for pyver in glob.glob('sources/lib/python*'):
|
||||
ver = os.path.basename(pyver)
|
||||
to = join(active,'unix/lib/%s/site-packages/cairo/' % ver)
|
||||
if INCLUDE_PYCAIRO:
|
||||
assert os.path.exists(join(active,'unix/lib/%s' % ver))
|
||||
assert os.path.exists(join(active,'unix/lib/%s/site-packages' % ver))
|
||||
if not os.path.exists(to):
|
||||
os.mkdir(to)
|
||||
copy_all_items('sources/lib/%s/site-packages/cairo/*' % ver,to,recursive=True)
|
||||
else:
|
||||
drop('rm -r %s' % to)
|
||||
|
||||
# try to start using relative paths..
|
||||
#paths_py = '''
|
||||
#import os
|
||||
#inputpluginspath = os.path.normpath(os.path.join(os.path.dirname(__file__),'../../../../Datasources'))
|
||||
#fontscollectionpath = os.path.normpath(os.path.join(os.path.dirname(__file__),'../../../../Fonts'))
|
||||
#'''
|
||||
|
||||
#paths_py = '''
|
||||
#inputpluginspath = '%(install_path)s/Mapnik.framework/Datasources'
|
||||
#fontscollectionpath = '%(install_path)s/Mapnik.framework/Fonts'
|
||||
#'''
|
||||
|
||||
# TODO - consider making _mapnik.so import dependent on version
|
||||
# so we can simplify install..
|
||||
|
||||
# done via scons install...
|
||||
#mapnik_module = join(py_dir,'mapnik2')
|
||||
#open(mapnik_module+'/paths.py','w').write(paths_py % locals())
|
||||
#shutil.copy('../bindings/python/mapnik/__init__.py',mapnik_module)
|
||||
|
||||
# pth file
|
||||
pth ='''import sys; sys.path.insert(0,'%(install_path)s/Mapnik.framework/Python')
|
||||
''' % locals()
|
||||
|
||||
# TODO - testing hack, will add this local python binding to sys path for snow leopard
|
||||
#open('/Library/Python/2.6/site-packages/mapnik.pth','w').write(pth)
|
||||
|
||||
# Stash in resources as well
|
||||
open(join(active,'Resources/mapnik2.pth'),'w').write(pth)
|
||||
|
Loading…
Reference in a new issue