git: 0f1b84815628 - main - graphics/mapserver: Improve port

From: Daniel Engberg <diizzy_at_FreeBSD.org>
Date: Thu, 04 Jul 2024 21:52:24 UTC
The branch main has been updated by diizzy:

URL: https://cgit.FreeBSD.org/ports/commit/?id=0f1b848156286e5121019b5d18ff3461ef543657

commit 0f1b848156286e5121019b5d18ff3461ef543657
Author:     Daniel Engberg <diizzy@FreeBSD.org>
AuthorDate: 2024-07-04 21:49:53 +0000
Commit:     Daniel Engberg <diizzy@FreeBSD.org>
CommitDate: 2024-07-04 21:50:03 +0000

    graphics/mapserver: Improve port
    
    * Modernize Makefile
    * Reduce amount of options and align port to closer match other
      distros in terms of functionality
    * Switch to from libsvg to librsvg2
    * Remove invalid options (such as PHP)
    * Prefix binaries
    * Use framework helpers for INSTALL sections
    
    PR:             279897
    Reviewed by:    wen (maintainer)
---
 graphics/mapserver/Makefile  | 334 ++++++++++++++++---------------------------
 graphics/mapserver/pkg-plist |  20 ++-
 2 files changed, 135 insertions(+), 219 deletions(-)

diff --git a/graphics/mapserver/Makefile b/graphics/mapserver/Makefile
index da12c3d09187..b9dd95ed3f34 100644
--- a/graphics/mapserver/Makefile
+++ b/graphics/mapserver/Makefile
@@ -1,217 +1,135 @@
-PORTNAME=		mapserver
-PORTVERSION=		8.0.2
-CATEGORIES=		graphics www geography
-MASTER_SITES=		https://download.osgeo.org/mapserver/
-
-MAINTAINER=		wen@FreeBSD.org
-COMMENT=		System for developing web-based GIS applications
+PORTNAME=	mapserver
+DISTVERSION=	8.0.2
+PORTREVISION=	1
+CATEGORIES=	graphics www geography
+MASTER_SITES=	https://download.osgeo.org/${PORTNAME}/
+
+MAINTAINER=	wen@FreeBSD.org
+COMMENT=	System for developing web-based GIS applications
 WWW=		https://mapserver.org/
 
-LICENSE=		MIT
-
-LIB_DEPENDS=		libgd.so:graphics/gd \
-			libproj.so:graphics/proj \
-			libpng.so:graphics/png \
-			libgif.so:graphics/giflib \
-			libsvg.so:graphics/libsvg \
-			libfreetype.so:print/freetype2
-
-USES=			compiler:c++11-lang cpe cmake gnome jpeg \
-			localbase:ldflags
-CPE_VENDOR=		osgeo
-LDFLAGS+=		-pthread
-CMAKE_ARGS+=		-DCMAKE_PREFIX_PATH=${LOCALBASE} \
-			-DCMAKE_INSTALL_PREFIX=${PREFIX} \
-			-DWITH_GD=1
-MAKE_JOBS_UNSAFE=	yes
-
-PROG_FILES=		legend scalebar shptree shptreetst shptreevis \
-			sortshp msencrypt tile4ms mapserv
-
-OPTIONS_DEFINE=		CAIRO CAIRO_SVG CLIENT_WMS CLIENT_WFS CURL DEBUG \
-			FASTCGI FRIBIDI GDAL GEOS HARFBUZZ KML \
-			PERL PHP POSTGIS PROTOBUFC PYTHON WCS WFS WMS
-OPTIONS_DEFAULT=	CAIRO FRIBIDI GDAL GEOS \
-			HARFBUZZ POSTGIS PROTOBUFC WCS WFS
-CAIRO_SVG_DESC=		Cairo SVG parser support
-GDAL_DESC=		GDAL library support
-FRIBIDI_DESC=		Fribidi library support
-KML_DESC=		KML support
-WMS_DESC=		WMS Server support
-WFS_DESC=		WFS Server support
-WCS_DESC=		WCS Server support
-
-.include <bsd.port.options.mk>
-
-.if ${PORT_OPTIONS:MPYTHON}
-USES+=			python
-BUILD_DEPENDS+=		swig:devel/swig
-CMAKE_ARGS+=		-DWITH_PYTHON=yes
-PLIST_SUB+=		PYTHON=""
-MAP_EGG=		MapScript-${PORTVERSION}-${PYTHON_VERSION:S/thon//}
-PLIST_SUB+=		MAP_EGG=${MAP_EGG}
-.else
-PLIST_SUB+=		PYTHON="@comment "
-.endif
-
-.if ${PORT_OPTIONS:MCAIRO}
-LIB_DEPENDS+=		libcairo.so:graphics/cairo \
-			libexpat.so:textproc/expat2
-CMAKE_ARGS+=		-DWITH_CAIRO=1
-.else
-CMAKE_ARGS+=		-DWITH_CAIRO=0
-.endif
-
-.if ${PORT_OPTIONS:MFRIBIDI}
-LIB_DEPENDS+=		libfribidi.so:converters/fribidi \
-			libharfbuzz.so:print/harfbuzz
-CMAKE_ARGS+=		-DWITH_FRIBIDI=1 -DWITH_HARFBUZZ=1
-.else
-CMAKE_ARGS+=		-DWITH_FRIBIDI=0 -DWITH_HARFBUZZ=0
-.endif
-
-.if ${PORT_OPTIONS:MHARFBUZZ}
-LIB_DEPENDS+=		libfribidi.so:converters/fribidi \
-			libharfbuzz.so:print/harfbuzz
-CMAKE_ARGS+=		-DWITH_FRIBIDI=1 -DWITH_HARFBUZZ=1
-.else
-CMAKE_ARGS+=		-DWITH_FRIBIDI=0 -DWITH_HARFBUZZ=0
-.endif
-
-.if ${PORT_OPTIONS:MPROTOBUFC}
-LIB_DEPENDS+=		libprotobuf-c.so:devel/protobuf-c
-CMAKE_ARGS+=		-DWITH_PROTOBUFC=1
-.else
-CMAKE_ARGS+=		-DWITH_PROTOBUFC=0
-.endif
-
-.if ${PORT_OPTIONS:MCAIRO_SVG}
-LIB_DEPENDS+=		libcairo.so:graphics/cairo \
-			libsvg-cairo.so:graphics/libsvg-cairo \
-			libexpat.so:textproc/expat2
-CMAKE_ARGS+=		-DWITH_SVGCAIRO=1 -DWITH_CAIRO=1
-USES+=			pkgconfig
-.else
-CMAKE_ARGS+=		-DWITH_SVGCAIRO=0
-.endif
-
-.if ${PORT_OPTIONS:MKML}
-LIB_DEPENDS+=		libxml2.so:textproc/libxml2
-CMAKE_ARGS+=		-DWITH_KML=1
-.else
-CMAKE_ARGS+=		-DWITH_KML=0
-.endif
-
-.if ${PORT_OPTIONS:MWMS}
-CMAKE_ARGS+=		-DWITH_WMS=1
-.else
-CMAKE_ARGS+=		-DWITH_WMS=0
-.endif
-
-.if ${PORT_OPTIONS:MWFS}
-CMAKE_ARGS+=		-DWITH_WFS=1
-.else
-CMAKE_ARGS+=		-DWITH_WFS=0
-.endif
-
-.if ${PORT_OPTIONS:MWCS}
-CMAKE_ARGS+=		-DWITH_WCS=1
-.else
-CMAKE_ARGS+=		-DWITH_WCS=0
-.endif
-
-.if ${PORT_OPTIONS:MGDAL}
-USES+=			iconv
-LIB_DEPENDS+=		libgdal.so:graphics/gdal
-CMAKE_ARGS+=		-DWITH_GDAL=1
-.else
-CMAKE_ARGS+=		-DWITH_GDAL=0
-.endif
-
-.if ${PORT_OPTIONS:MGEOS}
-LIB_DEPENDS+=		libgeos.so:graphics/geos
-CMAKE_ARGS+=		-DWITH_GEOS=1
-.else
-CMAKE_ARGS+=		-DWITH_GEOS=0
-.endif
-
-.if ${PORT_OPTIONS:MPOSTGIS}
-USES+=			pgsql
-CMAKE_ARGS+=		-DWITH_POSTGIS=1
-.else
-CMAKE_ARGS+=		-DWITH_POSTGIS=0
-.endif
-
-.if ${PORT_OPTIONS:MPHP}
-USES+=			php:build
-CMAKE_ARGS+=		-DWITH_PHP=1
-PLIST_SUB+=		PHP=""
-.else
-CMAKE_ARGS+=		-DWITH_PHP=0
-PLIST_SUB+=		PHP="@comment "
-.endif
-
-.if ${PORT_OPTIONS:MPERL}
-USES+=		perl5
-BUILD_DEPENDS=	swig:devel/swig
-CMAKE_ARGS+=	-DWITH_PERL=1
-PLIST_SUB+=	PERL=""
-.else
-CMAKE_ARGS+=	-DWITH_PERL=0
-PLIST_SUB+=	PERL="@comment "
-.endif
-
-.if ${PORT_OPTIONS:MCURL}
-LIB_DEPENDS+=		libcurl.so:ftp/curl
-CMAKE_ARGS+=		-DWITH_CURL=1
-.else
-CMAKE_ARGS+=		-DWITH_CURL=0
-.endif
-
-.if ${PORT_OPTIONS:MFASTCGI}
-BUILD_DEPENDS+=		${LOCALBASE}/bin/cgi-fcgi:www/fcgi
-CMAKE_ARGS+=		-DWITH_FCGI=1
-.else
-CMAKE_ARGS+=		-DWITH_FCGI=0
-.endif
-
-.if ${PORT_OPTIONS:MDEBUG}
-CMAKE_ARGS+=		-DCMAKE_BUILD_TYPE=Debug
-.else
-CMAKE_ARGS+=		-DCMAKE_BUILD_TYPE=Release
-.endif
-
-.if ${PORT_OPTIONS:MCLIENT_WMS}
-LIB_DEPENDS+=		libcurl.so:ftp/curl
-LIB_DEPENDS+=		libgdal.so:graphics/gdal
-CMAKE_ARGS+=		-DWITH_CURL=1 -DWITH_GDAL=1 -DWITH_CLIENT_WMS=1
-.endif
-
-.if ${PORT_OPTIONS:MCLIENT_WFS}
-LIB_DEPENDS+=		libcurl.so:ftp/curl
-LIB_DEPENDS+=		libgdal.so:graphics/gdal
-CMAKE_ARGS+=		-DWITH_CURL=1 -DWITH_GDAL=1 -DWITH_CLIENT_WFS=1
-.endif
+LICENSE=	MIT
+
+LIB_DEPENDS=	libfreetype.so:print/freetype2 \
+		libfribidi.so:converters/fribidi \
+		libgdal.so:graphics/gdal \
+		libgeos.so:graphics/geos \
+		libgif.so:graphics/giflib \
+		libharfbuzz.so:print/harfbuzz \
+		libpng.so:graphics/png \
+		libproj.so:graphics/proj
+
+USES=		cmake compiler:c++11-lang cpe gnome iconv jpeg \
+		localbase:ldflags
+CPE_VENDOR=	osgeo
+USE_GNOME=	libxml2
+
+CMAKE_OFF=	WITH_CSHARP \
+		WITH_JAVA \
+		WITH_MYSQL \
+		WITH_ORACLE_PLUGIN \
+		WITH_ORACLESPATIAL \
+		WITH_PIXMAN \
+		WITH_RUBY \
+		WITH_SVGCAIRO \
+		WITH_THREAD_SAFETY \
+		WITH_V8
+
+CMAKE_ON=	CMAKE_SKIP_RPATH \
+		WITH_FRIBIDI \
+		WITH_GEOS \
+		WITH_GIF \
+		WITH_HARFBUZZ \
+		WITH_ICONV \
+		WITH_KML \
+		WITH_LIBXML2 \
+		WITH_OGCAPI \
+		WITH_POSTGIS \
+		WITH_SOS \
+		WITH_WMS
+
+CMAKE_ARGS=	-DCMAKE_DISABLE_FIND_PACKAGE_MySQL:BOOL=True \
+		-DCMAKE_DISABLE_FIND_PACKAGE_PIXMAN:BOOL=True \
+		-DCMAKE_DISABLE_FIND_PACKAGE_SVGCairo:BOOL=True \
+		-DCMAKE_DISABLE_FIND_PACKAGE_V8:BOOL=True
+
+OPTIONS_DEFINE=		CAIRO CURL EXEMPI FASTCGI LIBRSVG2 PERL PHPNG \
+			POSTGIS PROTOBUFC PYTHON WCS WFS XMLMAPFILE
+OPTIONS_DEFAULT=	CAIRO CURL FASTCGI LIBRSVG2 POSTGIS PROTOBUFC WCS WFS
+OPTIONS_SUB=		yes
+
+EXEMPI_DESC=		XMP Metadata support
+PHPNG_DESC=		PHPNG (SWIG) mapscript support
+PROTOBUFC_DESC=		Protocol buffers support (req. for vector tiles)
+WFS_DESC=               WFS Server support
+WCS_DESC=               WCS Server support
+XMLMAPFILE_DESC=	XML mapfile support
+
+CAIRO_LIB_DEPENDS=	libcairo.so:graphics/cairo
+CAIRO_CMAKE_BOOL=	WITH_CAIRO
+CAIRO_CMAKE_OFF=	-DCMAKE_DISABLE_FIND_PACKAGE_Cairo:BOOL=True
+
+CURL_LIB_DEPENDS=	libcurl.so:ftp/curl
+CURL_CMAKE_BOOL=	WITH_CURL WITH_CLIENT_WFS WITH_CLIENT_WMS
+CURL_CMAKE_OFF=		-DCMAKE_DISABLE_FIND_PACKAGE_CURL:BOOL=True
+
+EXEMPI_LIB_DEPENDS=	libexempi.so:textproc/exempi
+EXEMPI_CURL_BOOL=	WITH_EXEMPI
+EXEMPI_CMAKE_OFF=	-DCMAKE_DISABLE_FIND_PACKAGE_Exempi:BOOL=True
+
+FASTCGI_LIB_DEPENDS=	libfcgi.so:www/fcgi
+FASTCGI_CMAKE_BOOL=	WITH_FCGI
+FASTCGI_CMAKE_OFF=	-DCMAKE_DISABLE_FIND_PACKAGE_FCGI:BOOL=True
+
+LIBRSVG2_USE=		GNOME=librsvg2
+LIBRSVG2_CMAKE_BOOL=	WITH_RSVG
+LIBRSVG2_CMAKE_OFF=	-DCMAKE_DISABLE_FIND_PACKAGE_RSVG:BOOL=True
+LIBRSVG2_IMPLIES=	CAIRO
+
+PERL_BUILD_DEPEDNS=	swig:devel/swig
+PERL_USES=		perl5
+PERL_CMAKE_BOOL=	WITH_PERL
+
+PHPNG_BUILD_DEPENDS=	swig:devel/swig
+PHPNG_CMAKE_BOOL=	WITH_PHPNG
+
+POSTGIS_USES=		pgsql
+POSTGIS_CMAKE_BOOL=	WITH_POSTGIS
+POSTGIS_CMAKE_OFF=	-DCMAKE_DISABLE_FIND_PACKAGE_PostgreSQL:BOOL=True
+
+PROTOBUFC_LIB_DEPENDS=  libprotobuf-c.so:devel/protobuf-c
+PROTOBUFC_CMAKE_BOOL=   WITH_PROTOBUFC
+PROTOBUFC_CMAKE_OFF=    -DCMAKE_DISABLE_FIND_PACKAGE_ProtobufC:BOOL=True
+
+PYTHON_BUILD_DEPENDS=	swig:devel/swig
+PYTHON_USES=		python
+PYTHON_CMAKE_BOOL=	WITH_PYTHON
+
+WCS_CMAKE_BOOL=		WITH_WCS
+
+WFS_CMAKE_BOOL=		WITH_WFS
+
+XMLMAPFILE_USE=		GNOME=libxslt
+XMLMAPFILE_CMAKE_BOOL=	WITH_XMLMAPFILE
+XMLMAPFILE_CMAKE_OFF=	-DCMAKE_DISABLE_FIND_PACKAGE_LibXslt:BOOL=True
 
 do-install:
-.for f in ${PROG_FILES}
-	${STRIP_CMD} ${BUILD_WRKSRC}/${f}
-	${INSTALL_SCRIPT} ${BUILD_WRKSRC}/${f} ${STAGEDIR}${PREFIX}/bin
-.endfor
-	${INSTALL_PROGRAM} ${BUILD_WRKSRC}/libmapserver.so.${PORTVERSION} ${STAGEDIR}${PREFIX}/lib
-
-	@${LN} -sf libmapserver.so.${PORTVERSION} ${STAGEDIR}${PREFIX}/lib/libmapserver.so.2
-	@${LN} -sf libmapserver.so.2 ${STAGEDIR}${PREFIX}/lib/libmapserver.so
-
-do-install-PHP-on:
-	@${MKDIR} ${STAGEDIR}${PREFIX}/lib/php/${PHP_EXT_DIR}
-	${INSTALL_PROGRAM} ${BUILD_WRKSRC}/mapscript/php/php_mapscript.so \
-		${STAGEDIR}${PREFIX}/lib/php/${PHP_EXT_DIR}/
-	@${MKDIR} ${STAGEDIR}${PREFIX}/etc/php
-	@${ECHO_CMD} "extension=php_mapscript.so" > ${STAGEDIR}${PREFIX}/etc/php/ext-20-php_mapscript.ini
+	${INSTALL_PROGRAM} ${BUILD_WRKSRC}/legend ${STAGEDIR}${PREFIX}/bin/mapserver_legend
+	${INSTALL_PROGRAM} ${BUILD_WRKSRC}/mapserv ${STAGEDIR}${PREFIX}/bin/mapserver_mapserv
+	${INSTALL_PROGRAM} ${BUILD_WRKSRC}/msencrypt ${STAGEDIR}${PREFIX}/bin/mapserver_msencrypt
+	${INSTALL_PROGRAM} ${BUILD_WRKSRC}/scalebar ${STAGEDIR}${PREFIX}/bin/mapserver_scalebar
+	${INSTALL_PROGRAM} ${BUILD_WRKSRC}/shptree ${STAGEDIR}${PREFIX}/bin/mapserver_shptree
+	${INSTALL_PROGRAM} ${BUILD_WRKSRC}/shptreetst ${STAGEDIR}${PREFIX}/bin/mapserver_shptreetst
+	${INSTALL_PROGRAM} ${BUILD_WRKSRC}/shptreevis ${STAGEDIR}${PREFIX}/bin/mapserver_shptreevis
+	${INSTALL_PROGRAM} ${BUILD_WRKSRC}/sortshp ${STAGEDIR}${PREFIX}/bin/mapserver_sortshp
+	${INSTALL_PROGRAM} ${BUILD_WRKSRC}/tile4ms ${STAGEDIR}${PREFIX}/bin/mapserver_tile4ms
+	${INSTALL_LIB} ${BUILD_WRKSRC}/libmapserver.so.${DISTVERSION} ${STAGEDIR}${PREFIX}/lib
+	${RLN} libmapserver.so.${DISTVERSION} ${STAGEDIR}${PREFIX}/lib/libmapserver.so.2
+	${RLN} libmapserver.so.2 ${STAGEDIR}${PREFIX}/lib/libmapserver.so
 
 do-install-PYTHON-on:
 	@${MKDIR} ${STAGEDIR}${PYTHON_SITELIBDIR}/
-	(cd ${BUILD_WRKSRC}/mapscript/python && ${CP} mapscript.py _mapscript.so ${STAGEDIR}${PYTHON_SITELIBDIR}/)
+	${INSTALL_SCRIPT} ${BUILD_WRKSRC}/mapscript/python/mapscript.py ${STAGEDIR}${PYTHON_SITELIBDIR}
+	${INSTALL_LIB} ${BUILD_WRKSRC}/mapscript/python/_mapscript.so ${STAGEDIR}${PYTHON_SITELIBDIR}
 
 .include <bsd.port.mk>
diff --git a/graphics/mapserver/pkg-plist b/graphics/mapserver/pkg-plist
index ff35a64d1b3d..95c9b840fdba 100644
--- a/graphics/mapserver/pkg-plist
+++ b/graphics/mapserver/pkg-plist
@@ -1,16 +1,14 @@
-bin/legend
-bin/mapserv
-bin/msencrypt
-bin/scalebar
-bin/shptree
-bin/shptreetst
-bin/shptreevis
-bin/sortshp
-bin/tile4ms
-%%PHP%%etc/php/ext-20-php_mapscript.ini
+bin/mapserver_legend
+bin/mapserver_mapserv
+bin/mapserver_msencrypt
+bin/mapserver_scalebar
+bin/mapserver_shptree
+bin/mapserver_shptreetst
+bin/mapserver_shptreevis
+bin/mapserver_sortshp
+bin/mapserver_tile4ms
 lib/libmapserver.so
 lib/libmapserver.so.2
 lib/libmapserver.so.8.0.2
-%%PHP%%lib/php/%%PHP_EXT_DIR%%/php_mapscript.so
 %%PYTHON%%%%PYTHON_SITELIBDIR%%/mapscript.py
 %%PYTHON%%%%PYTHON_SITELIBDIR%%/_mapscript.so