freebsd-ports/databases/grass7/Makefile
Loïc Bartoletti 7413681f8c databases/grass7: remove use of sbrk
sbrk is deprecated and is not present on some architectures. There is only one use of this function in grass for the r.terraflow module.
Its use will be removed in the next version, so I integrate this patch now to use it on architectures that don't have sbrk.

Thanks to mikael@ for the tests on aarch64
2021-02-07 18:14:38 +00:00

217 lines
8 KiB
Makefile

# Created by: Mikael URANKAR and Loïc BARTOLETTI
# $FreeBSD$
PORTNAME= grass
PORTVERSION= 7.8.5
PORTREVISION= 2
CATEGORIES= databases geography
MASTER_SITES= https://grass.osgeo.org/%SUBDIR%/ \
http://grass.cict.fr/%SUBDIR%/ \
http://grass.fbk.eu/%SUBDIR%/ \
http://grass.gis-lab.info/%SUBDIR%/ \
http://grass.meteo.uni.wroc.pl/%SUBDIR%/ \
http://grass.polytechnic.edu.na/%SUBDIR%/ \
http://grass.unibuc.ro/%SUBDIR%/ \
http://mirrors.ibiblio.org/grass/%SUBDIR%/ \
http://pinus.gntech.ac.kr/grass/%SUBDIR%/ \
http://wgbis.ces.iisc.ernet.in/grass/%SUBDIR%/ \
http://wgrass.media.osaka-cu.ac.jp/grassh/%SUBDIR%/
MASTER_SITE_SUBDIR= grass${VER}/source
PKGNAMESUFFIX= 7
MAINTAINER= lbartoletti@FreeBSD.org
COMMENT= Open source Geographical Information System (GIS)
LICENSE= GPLv2+
LICENSE_FILE= ${WRKSRC}/GPL.TXT
BROKEN_sparc64= Does not configure on sparc64
BUILD_DEPENDS= ${PY_NUMPY} \
${PYTHON_SITELIBDIR}/six.py:devel/py-six@${PY_FLAVOR}
LIB_DEPENDS= libgdal.so:graphics/gdal \
libpng.so:graphics/png \
libproj.so:graphics/proj \
libtiff.so:graphics/tiff \
libfftw3.so:math/fftw3 \
libfontconfig.so:x11-fonts/fontconfig \
libfreetype.so:print/freetype2 \
libgeos.so:graphics/geos
RUN_DEPENDS= ${PY_NUMPY} \
${PYTHON_SITELIBDIR}/six.py:devel/py-six@${PY_FLAVOR}
USES= blaslapack compiler:c11 gl gmake gnome iconv \
jpeg perl5 pkgconfig python:3.6+ readline shebangfix xorg
SHEBANG_GLOB= *.py
SHEBANG_LANG= nviz
nviz_OLD_CMD= nviz
nviz_CMD= ${PREFIX}/${GRASS_INST_DIR}/bin/nviz
USE_XORG= sm ice x11 xext xi xmu xrender xt
USE_GL= gl glu
USE_GNOME= cairo
USE_WX= 3.0
WX_COMPS= wx:build python:run
GNU_CONFIGURE= yes
CONFIGURE_ARGS= --with-includes=${LOCALBASE}/include \
--with-libs=${LOCALBASE}/lib \
--with-opengl-includes=${LOCALBASE}/include/ \
--with-opengl-libs=${LOCALBASE}/lib/ \
--with-freetype \
--with-freetype-includes=${LOCALBASE}/include/freetype2 \
--with-blas \
--with-lapack \
--with-cairo \
--with-readline \
--enable-largefile \
--with-wxwidgets=${WX_CONFIG} \
--with-proj-share=${LOCALBASE}/share/proj \
--with-proj-includes=${LOCALBASE}/include \
--with-proj-libs=${LOCALBASE}/lib \
--with-proj=${LOCALBASE}/bin/proj \
--with-geos=${LOCALBASE}/bin/geos-config \
--with-gdal=${LOCALBASE}/bin/gdal-config \
--with-pthread=yes \
--with-openmp \
--prefix=${LOCALBASE} \
--exec-prefix=${LOCALBASE}
CFLAGS+= -std=c11
SUB_FILES= pkg-message
SUB_LIST= PYTHON_CMD=${PYTHON_CMD}
BINARY_ALIAS= python3=${PYTHON_CMD}
ALL_TARGET= default
USE_LDCONFIG= ${PREFIX}/${GRASS_INST_DIR}/lib
MAKE_ENV+= TARGET="${CONFIGURE_TARGET}"
VER= ${PORTVERSION:R:C/\.//}
PLIST_SUB= GRASS_INST_DIR="${GRASS_INST_DIR}" \
VERSION="${PORTVERSION}" VERS="${PORTVERSION:C/([0-9]+).([0-9]+)(.*)/\1.\2/}" \
VER="${VER}" MAJVER="${PKGNAMESUFFIX}"
OPTIONS_DEFINE= LAS NETCDF NLS PDAL ZSTD
OPTIONS_MULTI= DB
OPTIONS_MULTI_DB= MYSQL ODBC PGSQL SQLITE
#OPTIONS_SINGLE= BLAS
#OPTIONS_SINGLE_BLAS= ATLAS NETLIB GOTOBLAS OPENBLAS
OPTIONS_DEFAULT= LAS NETCDF NLS PDAL PGSQL SQLITE ZSTD
OPTIONS_SUB= yes
# BLAS/LAPACK: Only netlib compile the maxmimum number of modules
#BLAS_DESC= BLAS/LAPACK support
#GOTOBLAS_DESC= GotoBLAS implementationS
#ATLAS_USES= blaslapack:atlas
#NETLIB_USES= blaslapack
#GOTOBLAS_USES= blaslapack:gotoblas
#OPENBLAS_USES= blaslapack:openblas
LAS_DESC= Enable LiDAR modules
PDAL_DESC= Enable points cloud data modules
DB_DESC= Database support
LAS_CONFIGURE_ON= --with-liblas=yes
LAS_LIB_DEPENDS= liblas.so:devel/liblas \
libboost_program_options.so:devel/boost-libs \
libboost_thread.so:devel/boost-libs \
libgeotiff.so:graphics/libgeotiff
MYSQL_USES= mysql
MYSQL_CONFIGURE_ON= --with-mysql \
--with-mysql-includes=${LOCALBASE}/include/mysql \
--with-mysql-libs=${LOCALBASE}/lib/mysql
NETCDF_CONFIGURE_ON= --with-netcdf=${LOCALBASE}/bin/nc-config
NETCDF_LIB_DEPENDS= libnetcdf.so:science/netcdf
NLS_CONFIGURE_WITH= nls
NLS_USES= gettext
ODBC_LIB_DEPENDS= libodbc.so:databases/unixODBC
ODBC_CONFIGURE_WITH= odbc
PDAL_CONFIGURE_ON= --with-pdal=${LOCALBASE}/bin/pdal-config
PDAL_LIB_DEPENDS= libpdal_base.so:math/pdal
PGSQL_USES= pgsql
PGSQL_CONFIGURE_WITH= postgres
SQLITE_USES= sqlite
SQLITE_CONFIGURE_WITH= sqlite
SQLITE_RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}sqlite3>0:databases/py-sqlite3@${PY_FLAVOR}
ZSTD_CONFIGURE_WITH= zstd
ZSTD_LIB_DEPENDS= libzstd.so:archivers/zstd
.include <bsd.port.pre.mk>
.if ${ARCH} == "i386" && ${OSVERSION} < 1200000
# clang 7.x and 8.x do not build properly on 11i386
CPP= clang-cpp${LLVM_DEFAULT}
CC= clang${LLVM_DEFAULT}
CXX= clang++${LLVM_DEFAULT}
BUILD_DEPENDS+= clang${LLVM_DEFAULT}:devel/llvm${LLVM_DEFAULT}
.endif
.if !defined (GRASS_INST_DIR)
GRASS_INST_DIR= ${PORTNAME}${VER}
.endif
MANDIRS= ${PREFIX}/grass${VER}/docs/man/man1
post-patch:
${REINPLACE_CMD} -e \
's|make -C|$$(MAKE) -C| ; \
/^BINDIR/s|=.*|= $${DESTDIR}$${UNIX_BIN}| ; \
/test /s| $$(INST_DIR)| $${DESTDIR}$${INST_DIR}|g ; \
/tar /s| $$(INST_DIR)| $${DESTDIR}$${INST_DIR}|g ; \
/chmod /s| $$(INST_DIR)| $${DESTDIR}$${INST_DIR}|g ; \
/tar /s| $$(INST_DIR)| $${DESTDIR}$${INST_DIR}|g ; \
/rm /s| $$(INST_DIR)| $${DESTDIR}$${INST_DIR}|g ; \
/$$(MAKE) /s| $$(INST_DIR)| $${DESTDIR}$${INST_DIR}|g ; \
/^$$(INST_DIR)\//s|$$(INST_DIR)|$${DESTDIR}$${INST_DIR}|g ; \
s|> $$(INST_DIR)|> $${DESTDIR}$${INST_DIR}|' \
${WRKSRC}/include/Make/Install.make
${REINPLACE_CMD} \
's|= python3|= ${PYTHON_CMD:T}|' ${WRKSRC}/include/Make/Platform.make.in
${REINPLACE_CMD} -e \
"s|'make'|'gmake'|g; \
s|gcc|${CC}|" ${WRKSRC}/scripts/g.extension/g.extension.py
${REINPLACE_CMD} \
's|$$(ARCH)|$$(TARGET)|g' ${WRKSRC}/include/Make/Grass.make
# Replace hardcoded python interpreter to PYTHON_CMD
${REINPLACE_CMD} "s|'GRASS_PYTHON', 'python'|'GRASS_PYTHON', \'${PYTHON_CMD}\'|g" \
${WRKSRC}/scripts/wxpyimgview/wxpyimgview.py
${REINPLACE_CMD} 's|GRASS_PYTHON=python|GRASS_PYTHON=${PYTHON_CMD}|g' \
${WRKSRC}/lib/init/grass.sh
${REINPLACE_CMD} \
"s|environ\['GRASS_PYTHON'\] = "'"python3"'"|environ['GRASS_PYTHON'] = "'"${PYTHON_CMD}"'"|g" \
${WRKSRC}/lib/python/script/setup.py
post-install:
# remove useless files
${RM} -rf ${STAGEDIR}${PREFIX}/${GRASS_INST_DIR}/etc/db.test/
${RM} -rf ${STAGEDIR}${PREFIX}/${GRASS_INST_DIR}/demolocation/PERMANENT/.tmp/
${RM} -rf ${STAGEDIR}${PREFIX}/${GRASS_INST_DIR}/docs/html/colortables/*bak.png
# fix pkg-plist issues
# poudriere testport, poudriere bulk -t and make ports can create different pkg-plist
for i in `${FIND} ${WRKSRC}/scripts -type f \( -name *jpg -o -name *png -o -name *gxm \) -print`; do \
${INSTALL_DATA} $$i ${STAGEDIR}${LOCALBASE}/${PORTNAME}${VER}/docs/html; \
done
for i in `${FIND} ${WRKSRC}/gui/wxpython -type f \( -name *jpg -o -name *png -o -name *gxm \) -print`; do \
${INSTALL_DATA} $$i ${STAGEDIR}${LOCALBASE}/${PORTNAME}${VER}/docs/html; \
done
for i in `${FIND} ${WRKSRC}/raster -type f \( -name *jpg -o -name *png -o -name *gxm \) -print`; do \
${INSTALL_DATA} $$i ${STAGEDIR}${LOCALBASE}/${PORTNAME}${VER}/docs/html; \
done
for i in `${FIND} ${WRKSRC}/imagery -type f \( -name *jpg -o -name *png -o -name *gxm \) -print`; do \
${INSTALL_DATA} $$i ${STAGEDIR}${LOCALBASE}/${PORTNAME}${VER}/docs/html; \
done
${INSTALL_SCRIPT} ${WRKSRC}/scripts/wxpyimgview/wxpyimgview_gui.py ${STAGEDIR}${PREFIX}/${GRASS_INST_DIR}/etc/wxpyimgview_gui.py
${MKDIR} ${STAGEDIR}${PREFIX}/${GRASS_INST_DIR}/etc/d.polar
${INSTALL_DATA} ${WRKSRC}/scripts/d.polar/ps_defs.eps ${STAGEDIR}${PREFIX}/${GRASS_INST_DIR}/etc/d.polar
# STRIP PART
${STRIP_CMD} ${STAGEDIR}${PREFIX}/${GRASS_INST_DIR}/bin/*
${STRIP_CMD} ${STAGEDIR}${PREFIX}/${GRASS_INST_DIR}/driver/db/*
.for i in clean_temp current_time_s_ms echo i.find lock run r.watershed/seg r.watershed/ram lister/vector lister/cell
${STRIP_CMD} ${STAGEDIR}${PREFIX}/${GRASS_INST_DIR}/etc/${i}
.endfor
${STRIP_CMD} ${STAGEDIR}${PREFIX}/${GRASS_INST_DIR}/tools/g.echo
${STRIP_CMD} ${STAGEDIR}${PREFIX}/${GRASS_INST_DIR}/lib/*
# symlink grass7
${LN} -sf ${PORTNAME}${VER} \
${STAGEDIR}${PREFIX}/bin/${PORTNAME}${PKGNAMESUFFIX}
.include <bsd.port.post.mk>