1PORTNAME= qgis 2DISTVERSION= 3.44.6 3CATEGORIES= graphics geography 4MASTER_SITES= https://qgis.org/downloads/ 5 6MAINTAINER= ports@MidnightBSD.org 7COMMENT= Free and Open Source Geographic Information System 8WWW= https://qgis.org/en/site/ 9 10LICENSE= gpl2 11LICENSE_FILE= ${WRKSRC}/doc/LICENSE 12 13BUILD_DEPENDS= gpsbabel>=1.7.0:astro/gpsbabel \ 14 opencl>=0:devel/opencl \ 15 ${PY_SETUPTOOLS} \ 16 ${PYTHON_PKGNAMEPREFIX}cycler>=0.11.0:devel/py-cycler@${PY_FLAVOR} \ 17 ${PYTHON_PKGNAMEPREFIX}python-dateutil>=2.8.2:devel/py-python-dateutil@${PY_FLAVOR} \ 18 ${PYTHON_PKGNAMEPREFIX}future>=0.18.2:devel/py-future@${PY_FLAVOR} \ 19 ${PYTHON_PKGNAMEPREFIX}httplib2>=0.20.2:www/py-httplib2@${PY_FLAVOR} \ 20 ${PYTHON_PKGNAMEPREFIX}jedi>=0.18.1:devel/py-jedi@${PY_FLAVOR} \ 21 ${PYTHON_PKGNAMEPREFIX}Jinja2>=3.1.2:devel/py-Jinja2@${PY_FLAVOR} \ 22 ${PYTHON_PKGNAMEPREFIX}markupsafe>=2.1.1:textproc/py-markupsafe@${PY_FLAVOR} \ 23 ${PYTHON_PKGNAMEPREFIX}matplotlib>=3.4.3:math/py-matplotlib@${PY_FLAVOR} \ 24 ${PYTHON_PKGNAMEPREFIX}mock>=4.0.3:devel/py-mock@${PY_FLAVOR} \ 25 ${PYTHON_PKGNAMEPREFIX}OWSLib>=0.27.2:graphics/py-OWSLib@${PY_FLAVOR} \ 26 ${PYTHON_PKGNAMEPREFIX}pbr>=5.10.0:devel/py-pbr@${PY_FLAVOR} \ 27 ${PYTHON_PKGNAMEPREFIX}pip>=22.2.2:devel/py-pip@${PY_FLAVOR} \ 28 ${PYTHON_PKGNAMEPREFIX}plotly>=4.14.3:graphics/py-plotly@${PY_FLAVOR} \ 29 ${PYTHON_PKGNAMEPREFIX}pygments>=2.13.0:textproc/py-pygments@${PY_FLAVOR} \ 30 ${PYTHON_PKGNAMEPREFIX}pyproj>=3.4.0:graphics/py-pyproj@${PY_FLAVOR} \ 31 ${PYTHON_PKGNAMEPREFIX}pytz>=2020.5:devel/py-pytz@${PY_FLAVOR} \ 32 ${PYTHON_PKGNAMEPREFIX}requests>=2.28.0:www/py-requests@${PY_FLAVOR} \ 33 ${PYTHON_PKGNAMEPREFIX}six>=1.16.0:devel/py-six@${PY_FLAVOR} \ 34 ${PYTHON_PKGNAMEPREFIX}sqlite3>=3.7.16:databases/py-sqlite3@${PY_FLAVOR} \ 35 ${PYTHON_PKGNAMEPREFIX}pyyaml>=5.4.1:devel/py-pyyaml@${PY_FLAVOR} 36LIB_DEPENDS= libabsl_log_internal_check_op.so:devel/abseil \ 37 libdraco.so:archivers/draco \ 38 libexiv2.so:graphics/exiv2 \ 39 libexpat.so:textproc/expat2 \ 40 libfreexl.so:textproc/freexl \ 41 libgdal.so:graphics/gdal \ 42 libgeos.so:graphics/geos \ 43 libgsl.so:math/gsl \ 44 libhdf5.so:science/hdf5 \ 45 libminizip.so:archivers/minizip \ 46 libnetcdf.so:science/netcdf \ 47 libOpenCL.so:devel/ocl-icd \ 48 libpdalcpp.so:math/pdal \ 49 libproj.so:graphics/proj \ 50 libprotobuf-lite.so:devel/protobuf \ 51 libqca-qt5.so:devel/qca@qt5 \ 52 libqjson-qt5.so:devel/qjson \ 53 libqscintilla2_qt5.so:devel/qscintilla2@qt5 \ 54 libqt5keychain.so:security/qtkeychain@qt5 \ 55 libqwt.so:x11-toolkits/qwt6@qt5 \ 56 librttopo.so:devel/librttopo \ 57 libspatialite.so:databases/spatialite \ 58 libsz.so:science/libaec \ 59 libxerces-c.so:textproc/xerces-c3 \ 60 libzip.so:archivers/libzip \ 61 libzstd.so:archivers/zstd 62RUN_DEPENDS= astyle:devel/astyle \ 63 opencl>=0:devel/opencl \ 64 ${PYTHON_PKGNAMEPREFIX}black>=22.10:devel/py-black@${PY_FLAVOR} \ 65 ${PYTHON_PKGNAMEPREFIX}cycler>=0.11.0:devel/py-cycler@${PY_FLAVOR} \ 66 ${PYTHON_PKGNAMEPREFIX}python-dateutil>=2.8.2:devel/py-python-dateutil@${PY_FLAVOR} \ 67 ${PYTHON_PKGNAMEPREFIX}fiona>=1.8.21:graphics/py-fiona@${PY_FLAVOR} \ 68 ${PYTHON_PKGNAMEPREFIX}future>=0.18.2:devel/py-future@${PY_FLAVOR} \ 69 ${PYTHON_PKGNAMEPREFIX}gdal>=3.5.2:graphics/py-gdal@${PY_FLAVOR} \ 70 ${PYTHON_PKGNAMEPREFIX}geojson>=2.3.0:devel/py-geojson@${PY_FLAVOR} \ 71 ${PYTHON_PKGNAMEPREFIX}geopandas>=0.11.1:graphics/py-geopandas@${PY_FLAVOR} \ 72 ${PYTHON_PKGNAMEPREFIX}httplib2>=0.20.2:www/py-httplib2@${PY_FLAVOR} \ 73 ${PYTHON_PKGNAMEPREFIX}jedi>=0.18.1:devel/py-jedi@${PY_FLAVOR} \ 74 ${PYTHON_PKGNAMEPREFIX}Jinja2>=3.1.2:devel/py-Jinja2@${PY_FLAVOR} \ 75 ${PYTHON_PKGNAMEPREFIX}laspy>=2.5.1:misc/py-laspy@${PY_FLAVOR} \ 76 ${PYTHON_PKGNAMEPREFIX}markupsafe>=2.1.1:textproc/py-markupsafe@${PY_FLAVOR} \ 77 ${PYTHON_PKGNAMEPREFIX}matplotlib>=3.4.3:math/py-matplotlib@${PY_FLAVOR} \ 78 ${PYTHON_PKGNAMEPREFIX}mock>=4.0.3:devel/py-mock@${PY_FLAVOR} \ 79 ${PYTHON_PKGNAMEPREFIX}nbformat>=5.7.0:devel/py-nbformat@${PY_FLAVOR} \ 80 ${PYTHON_PKGNAMEPREFIX}netCDF4>=1.6.2:science/py-netCDF4@${PY_FLAVOR} \ 81 ${PYTHON_PKGNAMEPREFIX}networkx>=2.8.8:math/py-networkx@${PY_FLAVOR} \ 82 ${PYTHON_PKGNAMEPREFIX}nltk>=3.7:textproc/py-nltk@${PY_FLAVOR} \ 83 ${PYNUMPY} \ 84 ${PYTHON_PKGNAMEPREFIX}OWSLib>=0.27.2:graphics/py-OWSLib@${PY_FLAVOR} \ 85 ${PYTHON_PKGNAMEPREFIX}pandas>=1.5.0:math/py-pandas@${PY_FLAVOR} \ 86 ${PYTHON_PKGNAMEPREFIX}pbr>=5.10.0:devel/py-pbr@${PY_FLAVOR} \ 87 ${PY_PILLOW} \ 88 ${PYTHON_PKGNAMEPREFIX}pip>=22.2.2:devel/py-pip@${PY_FLAVOR} \ 89 ${PYTHON_PKGNAMEPREFIX}plotly>=4.14.3:graphics/py-plotly@${PY_FLAVOR} \ 90 ${PYTHON_PKGNAMEPREFIX}psutil>=5.9.2:sysutils/py-psutil@${PY_FLAVOR} \ 91 ${PYTHON_PKGNAMEPREFIX}psycopg2>=2.9.4:databases/py-psycopg2@${PY_FLAVOR} \ 92 ${PYTHON_PKGNAMEPREFIX}pygments>=2.13.0:textproc/py-pygments@${PY_FLAVOR} \ 93 ${PYTHON_PKGNAMEPREFIX}pyproj>=3.4.0:graphics/py-pyproj@${PY_FLAVOR} \ 94 ${PYTHON_PKGNAMEPREFIX}pyrsgis>=0.4.1:graphics/py-pyrsgis@${PY_FLAVOR} \ 95 ${PYTHON_PKGNAMEPREFIX}pytz>=2020.5:devel/py-pytz@${PY_FLAVOR} \ 96 ${PYTHON_PKGNAMEPREFIX}rasterio>=1.3.2:graphics/py-rasterio@${PY_FLAVOR} \ 97 ${PYTHON_PKGNAMEPREFIX}requests>=2.28.0:www/py-requests@${PY_FLAVOR} \ 98 ${PYTHON_PKGNAMEPREFIX}scikit-image>=0.19.3:graphics/py-scikit-image@${PY_FLAVOR} \ 99 ${PYTHON_PKGNAMEPREFIX}scikit-learn>=1.1.3:science/py-scikit-learn@${PY_FLAVOR} \ 100 ${PYTHON_PKGNAMEPREFIX}shapely>=1.8.5:devel/py-shapely@${PY_FLAVOR} \ 101 ${PYTHON_PKGNAMEPREFIX}six>=1.16.0:devel/py-six@${PY_FLAVOR} \ 102 ${PYTHON_PKGNAMEPREFIX}sqlite3>=3.7.16:databases/py-sqlite3@${PY_FLAVOR} \ 103 ${PYTHON_PKGNAMEPREFIX}termcolor>=2.1.0:devel/py-termcolor@${PY_FLAVOR} \ 104 ${PYTHON_PKGNAMEPREFIX}xcffib>=0.11.1:x11/py-xcffib@${PY_FLAVOR} \ 105 ${PYTHON_PKGNAMEPREFIX}xlrd>=2.0.1:textproc/py-xlrd@${PY_FLAVOR} \ 106 ${PYTHON_PKGNAMEPREFIX}pyyaml>=5.4.1:devel/py-pyyaml@${PY_FLAVOR} 107 108### Fortran is needed by numpy, GRASS, etc. 109USES= bison cmake compiler:features desktop-file-utils \ 110 fortran gl gmake gnome iconv pgsql pyqt:5 python qt:5 \ 111 shebangfix sqlite:3 tar:bz2 112USE_GL= gl 113USE_GNOME= libxml2 114USE_LDCONFIG= yes 115USE_PYQT= pyqt5 pysip qscintilla2 qtbuilder:build sip:build webengine 116USE_QT= 3d buildtools:build core concurrent dbus declarative \ 117 designer:build qdoc:build gamepad gui linguist:build location \ 118 multimedia network printsupport qmake:build script serialport \ 119 sql sql-pgsql sql-sqlite3 svg testlib uitools:build \ 120 webchannel webengine widgets xml 121 122SHEBANG_FILES= src/plugins/grass/scripts/*.py 123 124# Python_EXECUTABLE: Use the default version if multiple Pythons are available 125CMAKE_ARGS+= -DCMAKE_BUILD_TYPE:STRING=Release \ 126 -DHAVE_PGCONFIG=1 \ 127 -DPYRCC_PROGRAM:FILEPATH=${LOCALBASE}/bin/pyrcc5-${PYTHON_VER} \ 128 -DPYUIC_PROGRAM:FILEPATH=${LOCALBASE}/bin/pyuic5-${PYTHON_VER} \ 129 -DPython_EXECUTABLE=${PYTHON_CMD} \ 130 -DQSCI_SIP_DIR:PATH=${PYQT_SIPDIR}/Qsci \ 131 -DQWT_INCLUDE_DIR:PATH=${LOCALBASE}/include/qt5/qwt6 \ 132 -DQWT_LIBRARY:FILEPATH=${LOCALBASE}/lib/qt5/libqwt.so \ 133 -DQGIS_MANUAL_SUBDIR:PATH=share/man 134# [2025-10-25] Use internal spatialindex, as the one in the ports is too new: 135# -- Found Spatialindex: /usr/local/lib/libspatialindex.so (2.1.0) 136# CMake Error at CMakeLists.txt:460 (message): 137# Cannot build QGIS using libspatialindex >= 2.1, see 138# https://github.com/libspatialindex/libspatialindex/issues/276 139CMAKE_ON= USE_OPENCL WITH_ASTYLE WITH_BINDINGS WITH_COPC \ 140 WITH_CUSTOM_WIDGETS WITH_DRACO WITH_EPT \ 141 WITH_INTERNAL_LAZPERF WITH_INTERNAL_MDAL \ 142 WITH_POSTGRESQL WITH_QTWEBENGINE WITH_INTERNAL_SPATIALINDEX 143CMAKE_OFF= BUILD_WITH_QT6 ENABLE_TESTS USE_CCACHE WITH_QTWEBKIT \ 144 WITH_QWTPOLAR 145 146CONFLICTS_INSTALL= qgis-ltr 147 148PLIST_SUB= DISTVERSION=${PORTVERSION} 149 150.if !defined(MAINTAINER_MODE) 151CMAKE_ARGS+= -Wno-dev 152CMAKE_OFF+= SUPPRESS_QT_WARNINGS 153.endif 154 155OPTIONS_DEFINE= SERVER GRASS 156OPTIONS_DEFAULT= SERVER GRASS 157NO_OPTIONS_SORT= yes 158OPTIONS_SUB= yes 159 160GRASS_DESC= Add GRASS GIS to processing tools 161SERVER_DESC= Enable QGIS server 162 163GRASS_BUILD_DEPENDS= grass8:databases/grass8 164GRASS_RUN_DEPENDS= ${GRASS_BUILD_DEPENDS} 165GRASS_CMAKE_BOOL= WITH_GRASS8 166SERVER_LIB_DEPENDS= libfcgi.so:www/fcgi 167SERVER_CMAKE_BOOL= WITH_SERVER WITH_SERVER_PLUGINS WITH_QSPATIALITE 168 169.include <bsd.port.pre.mk> 170 171pre-patch: 172 # Only PostgreSQL Client headers, not Server 173 @${REINPLACE_CMD} -e 's|set(POSTGRES_INCLUDE_DIR \$${PostgreSQL_INCLUDE_DIRS})|set(POSTGRES_INCLUDE ${LOCALBASE}/include)|g' \ 174 ${WRKSRC}/cmake/FindPostgres.cmake 175 176post-patch: 177 @${REINPLACE_CMD} -e 's|%%LOCALBASE%%|${LOCALBASE}|g' \ 178 ${WRKSRC}/cmake/FindGRASS.cmake 179# On i386, '-mllvm -inline-threshold=128' does not build under all circumstances 180# See bugs 242557 and 241687. 181.if ${OPSYS} == FreeBSD && ${ARCH} == "i386" 182 @${REINPLACE_CMD} -e 's|"-mllvm -inline-threshold=128"|"-O1"|g' \ 183 ${WRKSRC}/src/core/CMakeLists.txt 184.endif 185 186pre-configure: 187 ${MKDIR} ${CONFIGURE_WRKSRC}/bin && ${LN} -s ${PYTHON_CMD} ${CONFIGURE_WRKSRC}/bin/python3 188 189post-install: 190 @${RM} ${DATADIR}/python/pytz/tzfile.py.bak 191 @${FIND} ${LOCALBASE} -name "__pycache__" -delete 192 @${RM} /tmp/srs.db 193 194check: 195 @cd ${WRKSRC} && ${SETENV} ${MAKE_ENV} ${MAKE_CMD} check 196 197.include <bsd.port.post.mk> 198