| 1 |
# Created by: Mikael URANKAR and Loïc BARTOLETTI |
| 2 |
# $FreeBSD$ |
| 3 |
|
| 4 |
PORTNAME= grass |
| 5 |
PORTVERSION= 7.8.5 |
| 6 |
PORTREVISION= 3 |
| 7 |
CATEGORIES= databases geography |
| 8 |
MASTER_SITES= https://grass.osgeo.org/%SUBDIR%/ \ |
| 9 |
http://grass.cict.fr/%SUBDIR%/ \ |
| 10 |
http://grass.fbk.eu/%SUBDIR%/ \ |
| 11 |
http://grass.gis-lab.info/%SUBDIR%/ \ |
| 12 |
http://grass.meteo.uni.wroc.pl/%SUBDIR%/ \ |
| 13 |
http://grass.polytechnic.edu.na/%SUBDIR%/ \ |
| 14 |
http://grass.unibuc.ro/%SUBDIR%/ \ |
| 15 |
http://mirrors.ibiblio.org/grass/%SUBDIR%/ \ |
| 16 |
http://pinus.gntech.ac.kr/grass/%SUBDIR%/ \ |
| 17 |
http://wgbis.ces.iisc.ernet.in/grass/%SUBDIR%/ \ |
| 18 |
http://wgrass.media.osaka-cu.ac.jp/grassh/%SUBDIR%/ |
| 19 |
MASTER_SITE_SUBDIR= grass${VER}/source |
| 20 |
PKGNAMESUFFIX= 7 |
| 21 |
|
| 22 |
MAINTAINER= lbartoletti@FreeBSD.org |
| 23 |
COMMENT= Open source Geographical Information System (GIS) |
| 24 |
|
| 25 |
LICENSE= GPLv2+ |
| 26 |
LICENSE_FILE= ${WRKSRC}/GPL.TXT |
| 27 |
|
| 28 |
BROKEN_sparc64= Does not configure on sparc64 |
| 29 |
BROKEN_i386= Does not configure on i386: Could not determine External PROJ major version |
| 30 |
|
| 31 |
BUILD_DEPENDS= ${PY_NUMPY} \ |
| 32 |
${PYTHON_SITELIBDIR}/six.py:devel/py-six@${PY_FLAVOR} |
| 33 |
LIB_DEPENDS= libgdal.so:graphics/gdal \ |
| 34 |
libpng.so:graphics/png \ |
| 35 |
libproj.so:graphics/proj \ |
| 36 |
libtiff.so:graphics/tiff \ |
| 37 |
libfftw3.so:math/fftw3 \ |
| 38 |
libfontconfig.so:x11-fonts/fontconfig \ |
| 39 |
libfreetype.so:print/freetype2 \ |
| 40 |
libgeos.so:graphics/geos |
| 41 |
RUN_DEPENDS= ${PY_NUMPY} \ |
| 42 |
${PYTHON_SITELIBDIR}/six.py:devel/py-six@${PY_FLAVOR} |
| 43 |
|
| 44 |
USES= blaslapack compiler:c11 gl gmake gnome iconv \ |
| 45 |
jpeg perl5 pkgconfig python:3.6+ readline shebangfix xorg |
| 46 |
SHEBANG_GLOB= *.py |
| 47 |
SHEBANG_LANG= nviz |
| 48 |
nviz_OLD_CMD= nviz |
| 49 |
nviz_CMD= ${PREFIX}/${GRASS_INST_DIR}/bin/nviz |
| 50 |
USE_XORG= sm ice x11 xext xi xmu xrender xt |
| 51 |
USE_GL= gl glu |
| 52 |
USE_GNOME= cairo |
| 53 |
USE_WX= 3.0 |
| 54 |
WX_COMPS= wx:build python:run |
| 55 |
GNU_CONFIGURE= yes |
| 56 |
|
| 57 |
CONFIGURE_ARGS= --with-includes=${LOCALBASE}/include \ |
| 58 |
--with-libs=${LOCALBASE}/lib \ |
| 59 |
--with-opengl-includes=${LOCALBASE}/include/ \ |
| 60 |
--with-opengl-libs=${LOCALBASE}/lib/ \ |
| 61 |
--with-freetype \ |
| 62 |
--with-freetype-includes=${LOCALBASE}/include/freetype2 \ |
| 63 |
--with-blas \ |
| 64 |
--with-lapack \ |
| 65 |
--with-cairo \ |
| 66 |
--with-readline \ |
| 67 |
--enable-largefile \ |
| 68 |
--with-wxwidgets=${WX_CONFIG} \ |
| 69 |
--with-proj-share=${LOCALBASE}/share/proj \ |
| 70 |
--with-proj-includes=${LOCALBASE}/include \ |
| 71 |
--with-proj-libs=${LOCALBASE}/lib \ |
| 72 |
--with-proj=${LOCALBASE}/bin/proj \ |
| 73 |
--with-geos=${LOCALBASE}/bin/geos-config \ |
| 74 |
--with-gdal=${LOCALBASE}/bin/gdal-config \ |
| 75 |
--with-pthread=yes \ |
| 76 |
--with-openmp \ |
| 77 |
--prefix=${LOCALBASE} \ |
| 78 |
--exec-prefix=${LOCALBASE} |
| 79 |
|
| 80 |
CFLAGS+= -std=c11 |
| 81 |
|
| 82 |
SUB_FILES= pkg-message |
| 83 |
SUB_LIST= PYTHON_CMD=${PYTHON_CMD} |
| 84 |
BINARY_ALIAS= python3=${PYTHON_CMD} |
| 85 |
ALL_TARGET= default |
| 86 |
USE_LDCONFIG= ${PREFIX}/${GRASS_INST_DIR}/lib |
| 87 |
MAKE_ENV+= TARGET="${CONFIGURE_TARGET}" |
| 88 |
VER= ${PORTVERSION:R:C/\.//} |
| 89 |
|
| 90 |
PLIST_SUB= GRASS_INST_DIR="${GRASS_INST_DIR}" \ |
| 91 |
VERSION="${PORTVERSION}" VERS="${PORTVERSION:C/([0-9]+).([0-9]+)(.*)/\1.\2/}" \ |
| 92 |
VER="${VER}" MAJVER="${PKGNAMESUFFIX}" |
| 93 |
|
| 94 |
OPTIONS_DEFINE= LAS NETCDF NLS PDAL ZSTD |
| 95 |
OPTIONS_MULTI= DB |
| 96 |
OPTIONS_MULTI_DB= MYSQL ODBC PGSQL SQLITE |
| 97 |
#OPTIONS_SINGLE= BLAS |
| 98 |
#OPTIONS_SINGLE_BLAS= ATLAS NETLIB GOTOBLAS OPENBLAS |
| 99 |
OPTIONS_DEFAULT= LAS NETCDF NLS PDAL PGSQL SQLITE ZSTD |
| 100 |
OPTIONS_SUB= yes |
| 101 |
|
| 102 |
# BLAS/LAPACK: Only netlib compile the maxmimum number of modules |
| 103 |
#BLAS_DESC= BLAS/LAPACK support |
| 104 |
#GOTOBLAS_DESC= GotoBLAS implementationS |
| 105 |
#ATLAS_USES= blaslapack:atlas |
| 106 |
#NETLIB_USES= blaslapack |
| 107 |
#GOTOBLAS_USES= blaslapack:gotoblas |
| 108 |
#OPENBLAS_USES= blaslapack:openblas |
| 109 |
LAS_DESC= Enable LiDAR modules |
| 110 |
PDAL_DESC= Enable points cloud data modules |
| 111 |
DB_DESC= Database support |
| 112 |
LAS_CONFIGURE_ON= --with-liblas=yes |
| 113 |
LAS_LIB_DEPENDS= liblas.so:devel/liblas \ |
| 114 |
libboost_program_options.so:devel/boost-libs \ |
| 115 |
libboost_thread.so:devel/boost-libs \ |
| 116 |
libgeotiff.so:graphics/libgeotiff |
| 117 |
MYSQL_USES= mysql |
| 118 |
MYSQL_CONFIGURE_ON= --with-mysql \ |
| 119 |
--with-mysql-includes=${LOCALBASE}/include/mysql \ |
| 120 |
--with-mysql-libs=${LOCALBASE}/lib/mysql |
| 121 |
NETCDF_CONFIGURE_ON= --with-netcdf=${LOCALBASE}/bin/nc-config |
| 122 |
NETCDF_LIB_DEPENDS= libnetcdf.so:science/netcdf |
| 123 |
NLS_CONFIGURE_WITH= nls |
| 124 |
NLS_USES= gettext |
| 125 |
ODBC_LIB_DEPENDS= libodbc.so:databases/unixODBC |
| 126 |
ODBC_CONFIGURE_WITH= odbc |
| 127 |
PDAL_CONFIGURE_ON= --with-pdal=${LOCALBASE}/bin/pdal-config |
| 128 |
PDAL_LIB_DEPENDS= libpdal_base.so:math/pdal |
| 129 |
PGSQL_USES= pgsql |
| 130 |
PGSQL_CONFIGURE_WITH= postgres |
| 131 |
SQLITE_USES= sqlite |
| 132 |
SQLITE_CONFIGURE_WITH= sqlite |
| 133 |
SQLITE_RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}sqlite3>0:databases/py-sqlite3@${PY_FLAVOR} |
| 134 |
ZSTD_CONFIGURE_WITH= zstd |
| 135 |
ZSTD_LIB_DEPENDS= libzstd.so:archivers/zstd |
| 136 |
|
| 137 |
.include <bsd.port.pre.mk> |
| 138 |
|
| 139 |
.if ${ARCH} == "i386" && ${OSVERSION} < 1200000 |
| 140 |
# clang 7.x and 8.x do not build properly on 11i386 |
| 141 |
CPP= clang-cpp${LLVM_DEFAULT} |
| 142 |
CC= clang${LLVM_DEFAULT} |
| 143 |
CXX= clang++${LLVM_DEFAULT} |
| 144 |
BUILD_DEPENDS+= clang${LLVM_DEFAULT}:devel/llvm${LLVM_DEFAULT} |
| 145 |
.endif |
| 146 |
|
| 147 |
.if !defined (GRASS_INST_DIR) |
| 148 |
GRASS_INST_DIR= ${PORTNAME}${VER} |
| 149 |
.endif |
| 150 |
|
| 151 |
MANDIRS= ${PREFIX}/grass${VER}/docs/man/man1 |
| 152 |
|
| 153 |
post-patch: |
| 154 |
${REINPLACE_CMD} -e \ |
| 155 |
's|make -C|$$(MAKE) -C| ; \ |
| 156 |
/^BINDIR/s|=.*|= $${DESTDIR}$${UNIX_BIN}| ; \ |
| 157 |
/test /s| $$(INST_DIR)| $${DESTDIR}$${INST_DIR}|g ; \ |
| 158 |
/tar /s| $$(INST_DIR)| $${DESTDIR}$${INST_DIR}|g ; \ |
| 159 |
/chmod /s| $$(INST_DIR)| $${DESTDIR}$${INST_DIR}|g ; \ |
| 160 |
/tar /s| $$(INST_DIR)| $${DESTDIR}$${INST_DIR}|g ; \ |
| 161 |
/rm /s| $$(INST_DIR)| $${DESTDIR}$${INST_DIR}|g ; \ |
| 162 |
/$$(MAKE) /s| $$(INST_DIR)| $${DESTDIR}$${INST_DIR}|g ; \ |
| 163 |
/^$$(INST_DIR)\//s|$$(INST_DIR)|$${DESTDIR}$${INST_DIR}|g ; \ |
| 164 |
s|> $$(INST_DIR)|> $${DESTDIR}$${INST_DIR}|' \ |
| 165 |
${WRKSRC}/include/Make/Install.make |
| 166 |
${REINPLACE_CMD} \ |
| 167 |
's|= python3|= ${PYTHON_CMD:T}|' ${WRKSRC}/include/Make/Platform.make.in |
| 168 |
${REINPLACE_CMD} -e \ |
| 169 |
"s|'make'|'gmake'|g; \ |
| 170 |
s|gcc|${CC}|" ${WRKSRC}/scripts/g.extension/g.extension.py |
| 171 |
${REINPLACE_CMD} \ |
| 172 |
's|$$(ARCH)|$$(TARGET)|g' ${WRKSRC}/include/Make/Grass.make |
| 173 |
# Replace hardcoded python interpreter to PYTHON_CMD |
| 174 |
${REINPLACE_CMD} "s|'GRASS_PYTHON', 'python'|'GRASS_PYTHON', \'${PYTHON_CMD}\'|g" \ |
| 175 |
${WRKSRC}/scripts/wxpyimgview/wxpyimgview.py |
| 176 |
${REINPLACE_CMD} 's|GRASS_PYTHON=python|GRASS_PYTHON=${PYTHON_CMD}|g' \ |
| 177 |
${WRKSRC}/lib/init/grass.sh |
| 178 |
${REINPLACE_CMD} \ |
| 179 |
"s|environ\['GRASS_PYTHON'\] = "'"python3"'"|environ['GRASS_PYTHON'] = "'"${PYTHON_CMD}"'"|g" \ |
| 180 |
${WRKSRC}/lib/python/script/setup.py |
| 181 |
|
| 182 |
post-install: |
| 183 |
# remove useless files |
| 184 |
${RM} -rf ${STAGEDIR}${PREFIX}/${GRASS_INST_DIR}/etc/db.test/ |
| 185 |
${RM} -rf ${STAGEDIR}${PREFIX}/${GRASS_INST_DIR}/demolocation/PERMANENT/.tmp/ |
| 186 |
${RM} -rf ${STAGEDIR}${PREFIX}/${GRASS_INST_DIR}/docs/html/colortables/*bak.png |
| 187 |
|
| 188 |
# fix pkg-plist issues |
| 189 |
# poudriere testport, poudriere bulk -t and make ports can create different pkg-plist |
| 190 |
for i in `${FIND} ${WRKSRC}/scripts -type f \( -name *jpg -o -name *png -o -name *gxm \) -print`; do \ |
| 191 |
${INSTALL_DATA} $$i ${STAGEDIR}${LOCALBASE}/${PORTNAME}${VER}/docs/html; \ |
| 192 |
done |
| 193 |
for i in `${FIND} ${WRKSRC}/gui/wxpython -type f \( -name *jpg -o -name *png -o -name *gxm \) -print`; do \ |
| 194 |
${INSTALL_DATA} $$i ${STAGEDIR}${LOCALBASE}/${PORTNAME}${VER}/docs/html; \ |
| 195 |
done |
| 196 |
for i in `${FIND} ${WRKSRC}/raster -type f \( -name *jpg -o -name *png -o -name *gxm \) -print`; do \ |
| 197 |
${INSTALL_DATA} $$i ${STAGEDIR}${LOCALBASE}/${PORTNAME}${VER}/docs/html; \ |
| 198 |
done |
| 199 |
for i in `${FIND} ${WRKSRC}/imagery -type f \( -name *jpg -o -name *png -o -name *gxm \) -print`; do \ |
| 200 |
${INSTALL_DATA} $$i ${STAGEDIR}${LOCALBASE}/${PORTNAME}${VER}/docs/html; \ |
| 201 |
done |
| 202 |
${INSTALL_SCRIPT} ${WRKSRC}/scripts/wxpyimgview/wxpyimgview_gui.py ${STAGEDIR}${PREFIX}/${GRASS_INST_DIR}/etc/wxpyimgview_gui.py |
| 203 |
${MKDIR} ${STAGEDIR}${PREFIX}/${GRASS_INST_DIR}/etc/d.polar |
| 204 |
${INSTALL_DATA} ${WRKSRC}/scripts/d.polar/ps_defs.eps ${STAGEDIR}${PREFIX}/${GRASS_INST_DIR}/etc/d.polar |
| 205 |
|
| 206 |
# STRIP PART |
| 207 |
${STRIP_CMD} ${STAGEDIR}${PREFIX}/${GRASS_INST_DIR}/bin/* |
| 208 |
${STRIP_CMD} ${STAGEDIR}${PREFIX}/${GRASS_INST_DIR}/driver/db/* |
| 209 |
.for i in clean_temp current_time_s_ms echo i.find lock run r.watershed/seg r.watershed/ram lister/vector lister/cell |
| 210 |
${STRIP_CMD} ${STAGEDIR}${PREFIX}/${GRASS_INST_DIR}/etc/${i} |
| 211 |
.endfor |
| 212 |
${STRIP_CMD} ${STAGEDIR}${PREFIX}/${GRASS_INST_DIR}/tools/g.echo |
| 213 |
${STRIP_CMD} ${STAGEDIR}${PREFIX}/${GRASS_INST_DIR}/lib/* |
| 214 |
|
| 215 |
# symlink grass7 |
| 216 |
${LN} -sf ${PORTNAME}${VER} \ |
| 217 |
${STAGEDIR}${PREFIX}/bin/${PORTNAME}${PKGNAMESUFFIX} |
| 218 |
.include <bsd.port.post.mk> |