source: trunk/dports/gis/qgis/Portfile @ 67606

Last change on this file since 67606 was 67606, checked in by vince@…, 8 years ago

Correction of some bugs, it works fine now

  • Property svn:eol-style set to native
  • Property svn:keywords set to Id
File size: 6.2 KB
Line 
1# -*- coding: utf-8; mode: tcl; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- vim:fenc=utf-8:ft=tcl:et:sw=4:ts=4:sts=4
2# $Id: Portfile 67606 2010-05-14 10:02:53Z vince@macports.org $
3
4PortSystem                      1.0
5PortGroup                       cmake   1.0
6name                            qgis
7version                         1.4.0
8categories                      gis
9maintainers                     vince
10description                     QGIS is a user-friendly GIS based on Qt 4
11long_description        QGIS is a GIS. It can visualize, inject data into \
12                                        PostGres/PostGIS, or serve as a Qt front-end to Grass. \
13                                        Extended with Python plugins, it can become a quite \
14                                        powerful GIS on its own.
15
16platforms                       darwin
17license                         GPL
18
19use_parallel_build      no
20homepage                        http://www.qgis.org/
21
22distname                        ${name}_${version}
23master_sites            http://download.osgeo.org/qgis/src/
24
25checksums                       md5     47710e7aa14c2a672c7f28457b0c956f \
26                                        sha1    105f353f36e9625d1eb15f1a315882f214dbe026 \
27                                        rmd160  47486732c8fe37aa6864d09c7420be22de5ea802
28
29worksrcdir                      ${name}-${version}
30
31post-extract {
32                                        system "cd ${worksrcpath} && mkdir build"
33}
34
35patchfiles                      patch-spatialite_c.diff \
36                                        patch-cmake_Python_cmake.diff \
37                                        patch-python_configure_py_in.diff
38
39depends_build           port:cmake
40                                                                       
41depends_lib                     port:libiconv \
42                                        port:expat \
43                                        port:openssl \
44                                        port:proj \
45                                        port:geos \
46                                        port:gdal \
47                                        port:sqlite3 \
48                                        port:gsl
49
50# Python related stuff
51# Checks if Python framework is not buggy
52set Python_FRM          "${frameworks_dir}/Python.framework"
53if {![file exists ${Python_FRM}]} {
54        ui_error                "Qgis requires python" 
55}
56
57set Pyver                       [exec python -V |& awk "{print \$2}"]
58
59# Eliminates minor (could also be done with strsed)
60set Pyversion           [join [lrange [split ${Pyver} "."] 0 1] ""]
61set Pyverpath           [join [lrange [split ${Pyver}   "."] 0 1] "."]
62               
63depends_lib-append      port:py${Pyversion}-pyqt4
64
65# Overrides default
66configure.dir           ${worksrcpath}/build                                                                   
67configure.cmd           cmake ..
68
69variant postgis                         description "Build postgis support" {
70       
71        depends_lib-append              port:postgis
72       
73        # Always choose latest installed postgresql version
74
75        set     PGSQL_DIR                       \
76                        [lindex [lsort -dec [glob -d ${prefix}/lib postgresql*]] 0]
77        configure.args-append   "-DPOSTGRESQL_PREFIX=${PGSQL_DIR}"
78        configure.args-append   "-DPOSTGRES_CONFIG=${PGSQL_DIR}/bin/pg_config"
79}
80
81
82variant grass63                         description "Build the grass (6.3) plugin" {
83
84        depends_lib-append              port:grass
85       
86        if {[file exists ${applications_dir}/GRASS-6.3.app]} {
87                configure.args-append \
88                        "-DGRASS_PREFIX=${applications_dir}/GRASS-6.3.app/Contents/MacOS"
89        } else {
90                configure.args-append   "-DGRASS_PREFIX=${prefix}"
91        }
92}
93
94
95variant grass64                         description "Build the grass (6.4) plugin" {
96
97        depends_lib-append              port:grass64
98       
99        if {[file exists ${applications_dir}/GRASS-6.4.app]} {
100                configure.args-append \
101                        "-DGRASS_PREFIX=${applications_dir}/GRASS-6.4.app/Contents/MacOS"
102        } else {
103                configure.args-append   "-DGRASS_PREFIX=${prefix}"
104        }
105}
106
107# LLVM cannot be used (Seg. faults in spatialite.c)
108
109#if {[string first llvm ${configure.cc}] != -1 || \
110#               [string first llvm ${configure.cxx}] != -1} {
111
112#       ui_msg "Warning: Qgis cannot be compiled with LLVM, switching to GCC\n"
113#       set configure.cc                gcc
114#       set configure.cxx               g++
115#}
116
117configure.args-append           "-DCMAKE_CXX_COMPILER=${configure.cxx}"
118configure.args-append           "-DCMAKE_C_COMPILER=${configure.cc}"
119configure.args-append           "-DEXPAT_INCLUDE_DIR=${prefix}/include"
120configure.args-append           "-DEXPAT_LIBRARY=${prefix}/lib/libexpat.dylib"
121configure.args-append           "-DCMAKE_INSTALL_PREFIX=${applications_dir}"
122configure.args-append           "-DGDAL_CONFIG=${prefix}/bin/gdal-config"
123configure.args-append           "-DGDAL_INCLUDE_DIR=${prefix}/include"
124configure.args-append           "-DGDAL_LIBRARY=${prefix}/lib/libgdal.dylib"
125configure.args-append           "-DGEOS_CONFIG=${prefix}/bin/geos-config"
126configure.args-append           "-DGEOS_INCLUDE_DIR=${prefix}/include"
127configure.args-append           "-DGEOS_LIBRARY=${prefix}/lib/libgeos_c.dylib"
128configure.args-append           "-DGEOS_LIB_NAME_WITH_PREFIX=-lgeos_c"
129configure.args-append           "-DGSL_CONFIG=${prefix}/bin/gsl-config"
130configure.args-append           "-DICONV_INCLUDE_DIR=${prefix}/include"
131configure.args-append           "-DICONV_LIBRARY=${prefix}/lib/libiconv.dylib"
132configure.args-append           "-DPROJ_INCLUDE_DIR=${prefix}/include"
133configure.args-append           "-DPROJ_LIBRARY=${prefix}/lib/libproj.dylib"
134configure.args-append           "-DOPENSSL_INCLUDE_DIR=${prefix}/include"
135configure.args-append           "-DOPENSSL_LIBRARIES=${prefix}/lib/libssl.dylib"
136configure.args-append           "-DPYTHON_INCLUDE_PATH=${Python_FRM}/Headers"
137configure.args-append           "-DPYUIC4_PROGRAM=${prefix}/bin/pyuic4-${Pyverpath}"
138configure.args-append           "-DPYRCC4_PROGRAM=${prefix}/bin/pyrcc4-${Pyverpath}"
139configure.args-append           \
140                                "-DSIP_BINARY_PATH=${Python_FRM}/Versions/${Pyverpath}/bin/sip"
141configure.args-append           "-DSIP_INCLUDE_DIR=${Python_FRM}/Headers"
142configure.args-append           "-DQT_QMAKE_EXECUTABLE=${prefix}/bin/qmake-mac"
143configure.args-append           "-DCMAKE_BUILD_TYPE=Release"
144       
145# This is a fake but don't ask me why it is needed
146configure.args-append           "-DSVN_MARKER=/usr/bin/svnversion"
147
148# Patch for proper linking of our own Python framework
149post-configure {
150        reinplace -E "s|(g\\+\\+\[^ ]+)|\\1 -F${frameworks_dir}|" \
151                ${worksrcpath}/build/src/python/CMakeFiles/qgispython.dir/link.txt
152}
153
154# Setup Python stuff in order to gracefully link against -framework Python
155pre-build {
156        if {! [file exists ${Python_FRM}/Headers]} {
157                ui_msg                          "Patching (temporarily) the Python framework\
158                                                        (See http://trac.macports.org/ticket/21614)"
159               
160                if {[variant_isset universal] && ${Pyversion} < 26} {
161                        ui_error                "Universal build requires Python > 2.5"
162                }
163                                                                                                 
164                system  "cd ${Python_FRM} ; \
165                        ln -s Versions/${Pyverpath}/include/python${Pyverpath} Headers ; \
166                        ln -s Versions/${Pyverpath}/Python . ; \
167                        ln -s Versions/${Pyverpath}/Resources . ; \
168                        touch /private/tmp/qgis_pypatch"
169        } else {
170                # Checks for inconsistencies and set dependencies accordingly
171       
172                if {${Pyver} != [exec cat ${Python_FRM}/Headers/patchlevel.h | \
173                                                grep "PY_VERSION " | awk "{print \$3}" | \
174                                                sed "s/\\\"//g"]} {     
175                        ui_error        "Inconsistent Python framework installation."
176                }
177        }
178}
179
180use_parallel_build                      yes
181build.dir                                       ${worksrcpath}/build
182
183post-destroot {
184        if {[file exists /private/tmp/qgis_pypatch]} {
185                ui_msg                          "Removing patched Framework"
186                system                          "cd ${Python_FRM} ; \
187                                                        rm -f Headers Python Resources ; \
188                                                        rm -f /private/tmp/qgis_pypatch"
189        }
190}
191
192destroot.target                         install
Note: See TracBrowser for help on using the repository browser.