diff -Nru mapserver-7.0.7/apache/mod_mapserver.c mapserver-7.4.1/apache/mod_mapserver.c --- mapserver-7.0.7/apache/mod_mapserver.c 2017-11-15 19:24:35.000000000 +0000 +++ mapserver-7.4.1/apache/mod_mapserver.c 2019-07-12 12:05:08.000000000 +0000 @@ -40,7 +40,7 @@ msIO_apacheError (void *cbData, void *data, int byteCount) { /* error reporting is done through the log file... */ - ap_log_error (APLOG_MARK, APLOG_ERR, 0, NULL, (char*) data); + ap_log_error (APLOG_MARK, APLOG_ERR, 0, NULL, "%s", (char*) data); return strlen ((char*) data); } diff -Nru mapserver-7.0.7/cmake/FindOracle.cmake mapserver-7.4.1/cmake/FindOracle.cmake --- mapserver-7.0.7/cmake/FindOracle.cmake 2017-11-15 19:24:35.000000000 +0000 +++ mapserver-7.4.1/cmake/FindOracle.cmake 2019-07-12 12:05:08.000000000 +0000 @@ -37,7 +37,7 @@ ${ORACLE_HOME}/OCI/include) # Oracle XE on Windows set(ORACLE_OCI_NAMES clntsh libclntsh oci) - set(ORACLE_NNZ_NAMES nnz10 libnnz10 nnz11 libnnz11 nnz12 libnnz12 ociw32) + set(ORACLE_NNZ_NAMES nnz10 libnnz10 nnz11 libnnz11 nnz12 libnnz12 nnz18 libnnz18 ociw32) set(ORACLE_OCCI_NAMES libocci occi oraocci10 oraocci11 oraocci12) set(ORACLE_LIB_DIR diff -Nru mapserver-7.0.7/cmake/FindPHP5.cmake mapserver-7.4.1/cmake/FindPHP5.cmake --- mapserver-7.0.7/cmake/FindPHP5.cmake 2017-11-15 19:24:35.000000000 +0000 +++ mapserver-7.4.1/cmake/FindPHP5.cmake 1970-01-01 00:00:00.000000000 +0000 @@ -1,112 +0,0 @@ -# - Find PHP5 -# This module finds if PHP5 is installed and determines where the include files -# and libraries are. It also determines what the name of the library is. This -# code sets the following variables: -# -# PHP5_INCLUDE_PATH = path to where php.h can be found -# PHP5_EXECUTABLE = full path to the php4 binary -# -# file is derived from FindPHP4.cmake -# - -SET(PHP5_FOUND "NO") - -SET(PHP5_POSSIBLE_INCLUDE_PATHS - /usr/include/php5 - /usr/local/include/php5 - /usr/include/php - /usr/local/include/php - /usr/local/apache/php - ${PHP5_INCLUDES} - ) - -SET(PHP5_POSSIBLE_LIB_PATHS - /usr/lib -if(WIN32) - ${PHP5_INCLUDES}/Release_TS -endif(WIN32) - ) - -find_library(PHP5_LIBRARY - NAMES php5ts.lib - PATHS /sw /opt/local ${PHP5_INCLUDES}/Release_TS -) - -FIND_PATH(PHP5_FOUND_INCLUDE_PATH main/php.h - ${PHP5_POSSIBLE_INCLUDE_PATHS}) - -IF(PHP5_FOUND_INCLUDE_PATH) - SET(php5_paths "${PHP5_POSSIBLE_INCLUDE_PATHS}") - FOREACH(php5_path Zend main TSRM) - SET(php5_paths ${php5_paths} "${PHP5_FOUND_INCLUDE_PATH}/${php5_path}") - ENDFOREACH(php5_path Zend main TSRM) - SET(PHP5_INCLUDE_PATH "${php5_paths}" INTERNAL "PHP5 include paths") -ENDIF(PHP5_FOUND_INCLUDE_PATH) - -FIND_PROGRAM(PHP5_EXECUTABLE - NAMES php5 php - PATHS - /usr/local/bin - ) - -MARK_AS_ADVANCED( - PHP5_EXECUTABLE - PHP5_FOUND_INCLUDE_PATH - ) - -IF( NOT PHP5_CONFIG_EXECUTABLE ) -FIND_PROGRAM(PHP5_CONFIG_EXECUTABLE - NAMES php5-config php-config - ) -ENDIF( NOT PHP5_CONFIG_EXECUTABLE ) - -IF(PHP5_CONFIG_EXECUTABLE) - EXECUTE_PROCESS(COMMAND ${PHP5_CONFIG_EXECUTABLE} --version - OUTPUT_VARIABLE PHP5_VERSION) - STRING(REPLACE "\n" "" PHP5_VERSION "${PHP5_VERSION}") - - EXECUTE_PROCESS(COMMAND ${PHP5_CONFIG_EXECUTABLE} --extension-dir - OUTPUT_VARIABLE PHP5_EXTENSION_DIR) - STRING(REPLACE "\n" "" PHP5_EXTENSION_DIR "${PHP5_EXTENSION_DIR}") - - EXECUTE_PROCESS(COMMAND ${PHP5_CONFIG_EXECUTABLE} --includes - OUTPUT_VARIABLE PHP5_INCLUDES) - STRING(REPLACE "-I" "" PHP5_INCLUDES "${PHP5_INCLUDES}") - STRING(REPLACE " " ";" PHP5_INCLUDES "${PHP5_INCLUDES}") - STRING(REPLACE "\n" "" PHP5_INCLUDES "${PHP5_INCLUDES}") - LIST(GET PHP5_INCLUDES 0 PHP5_INCLUDE_DIR) - - set(PHP5_MAIN_INCLUDE_DIR ${PHP5_INCLUDE_DIR}/main) - set(PHP5_TSRM_INCLUDE_DIR ${PHP5_INCLUDE_DIR}/TSRM) - set(PHP5_ZEND_INCLUDE_DIR ${PHP5_INCLUDE_DIR}/Zend) - set(PHP5_REGEX_INCLUDE_DIR ${PHP5_INCLUDE_DIR}/regex) - set(PHP5_EXT_INCLUDE_DIR ${PHP5_INCLUDE_DIR}/ext) - set(PHP5_DATE_INCLUDE_DIR ${PHP5_INCLUDE_DIR}/ext/date/lib) - set(PHP5_STANDARD_INCLUDE_DIR ${PHP5_INCLUDE_DIR}/ext/standard) - - MESSAGE(STATUS ${PHP5_MAIN_INCLUDE_DIR}) - - IF(NOT PHP5_INCLUDE_PATH) - set(PHP5_INCLUDE_PATH ${PHP5_INCLUDES}) - ENDIF(NOT PHP5_INCLUDE_PATH) - - IF(PHP5_VERSION LESS 5) - MESSAGE(FATAL_ERROR "PHP version is not 5 or later") - ENDIF(PHP5_VERSION LESS 5) - - IF(PHP5_EXECUTABLE AND PHP5_INCLUDES) - set(PHP5_FOUND "yes") - MESSAGE(STATUS "Found PHP5-Version ${PHP5_VERSION} (using ${PHP5_CONFIG_EXECUTABLE})") - ENDIF(PHP5_EXECUTABLE AND PHP5_INCLUDES) - - FIND_PROGRAM(PHPUNIT_EXECUTABLE - NAMES phpunit phpunit2 - PATHS - /usr/local/bin - ) - - IF(PHPUNIT_EXECUTABLE) - MESSAGE(STATUS "Found phpunit: ${PHPUNIT_EXECUTABLE}") - ENDIF(PHPUNIT_EXECUTABLE) - -ENDIF(PHP5_CONFIG_EXECUTABLE) diff -Nru mapserver-7.0.7/cmake/FindPHP.cmake mapserver-7.4.1/cmake/FindPHP.cmake --- mapserver-7.0.7/cmake/FindPHP.cmake 1970-01-01 00:00:00.000000000 +0000 +++ mapserver-7.4.1/cmake/FindPHP.cmake 2019-07-12 12:05:08.000000000 +0000 @@ -0,0 +1,117 @@ +# - Find PHP +# This module finds if PHP is installed and determines where the include files +# and libraries are. It also determines what the name of the library is. This +# code sets the following variables: +# +# PHP_INCLUDE_PATH = path to where php.h can be found +# PHP_EXECUTABLE = full path to the php binary +# + +SET(PHP_FOUND "NO") + +SET(PHP_POSSIBLE_INCLUDE_PATHS + /usr/include/php + /usr/local/include/php + /usr/include/php + /usr/local/include/php + /usr/local/apache/php + ${PHP_INCLUDES} +) + +find_library(PHP_LIBRARY NAMES php5ts php5 php7ts php7 PATHS /sw /opt/local) + +if(WIN32) + string(SUBSTRING $ENV{VSCMD_VER} 0 2 VSCMD_VER) + SET(PHP_INCLUDE_PATH "C:/php-sdk/phpmaster/vc${VSCMD_VER}/$ENV{VSCMD_ARG_TGT_ARCH}/php-src") + SET(PHP_POSSIBLE_INCLUDE_PATHS ${PHP_INCLUDE_PATH}) + if(CMAKE_CL_64) + SET(PHP_INCLUDE_PATH "${PHP_INCLUDE_PATH}/$ENV{PLATFORM}") + endif(CMAKE_CL_64) + if(WITH_THREAD_SAFETY) + SET(PHP_INCLUDE_PATH "${PHP_INCLUDE_PATH}/Release_TS") + SET(PHP_LIBRARY_NAMES php5ts php7ts) + else(WITH_THREAD_SAFETY) + SET(PHP_INCLUDE_PATH "${PHP_INCLUDE_PATH}/Release") + SET(PHP_LIBRARY_NAMES php5 php7) + endif(WITH_THREAD_SAFETY) + find_library(PHP_LIBRARY NAMES ${PHP_LIBRARY_NAMES} PATHS ${PHP_INCLUDE_PATH}) +endif(WIN32) + + +FIND_PATH(PHP_FOUND_INCLUDE_PATH main/php.h ${PHP_POSSIBLE_INCLUDE_PATHS}) + +IF(PHP_FOUND_INCLUDE_PATH) + SET(php_paths "${PHP_POSSIBLE_INCLUDE_PATHS}") + FOREACH(php_path Zend main TSRM) + SET(php_paths ${php_paths} "${PHP_FOUND_INCLUDE_PATH}/${php_path}") + ENDFOREACH(php_path Zend main TSRM) + SET(PHP_INCLUDE_PATH "${php_paths}" INTERNAL "PHP include paths") +ENDIF(PHP_FOUND_INCLUDE_PATH) + +FIND_PROGRAM(PHP_EXECUTABLE + NAMES php + PATHS + /usr/local/bin + ) + +MARK_AS_ADVANCED( + PHP_EXECUTABLE + PHP_FOUND_INCLUDE_PATH + ) + +IF( NOT PHP_CONFIG_EXECUTABLE ) +FIND_PROGRAM(PHP_CONFIG_EXECUTABLE + NAMES php-config + ) +ENDIF( NOT PHP_CONFIG_EXECUTABLE ) + +IF(PHP_CONFIG_EXECUTABLE) + EXECUTE_PROCESS(COMMAND ${PHP_CONFIG_EXECUTABLE} --version + OUTPUT_VARIABLE PHP_VERSION) + STRING(REPLACE "\n" "" PHP_VERSION "${PHP_VERSION}") + + EXECUTE_PROCESS(COMMAND ${PHP_CONFIG_EXECUTABLE} --extension-dir + OUTPUT_VARIABLE PHP_EXTENSION_DIR) + STRING(REPLACE "\n" "" PHP_EXTENSION_DIR "${PHP_EXTENSION_DIR}") + + EXECUTE_PROCESS(COMMAND ${PHP_CONFIG_EXECUTABLE} --includes + OUTPUT_VARIABLE PHP_INCLUDES) + STRING(REPLACE "-I" "" PHP_INCLUDES "${PHP_INCLUDES}") + STRING(REPLACE " " ";" PHP_INCLUDES "${PHP_INCLUDES}") + STRING(REPLACE "\n" "" PHP_INCLUDES "${PHP_INCLUDES}") + LIST(GET PHP_INCLUDES 0 PHP_INCLUDE_DIR) + + set(PHP_MAIN_INCLUDE_DIR ${PHP_INCLUDE_DIR}/main) + set(PHP_TSRM_INCLUDE_DIR ${PHP_INCLUDE_DIR}/TSRM) + set(PHP_ZEND_INCLUDE_DIR ${PHP_INCLUDE_DIR}/Zend) + set(PHP_REGEX_INCLUDE_DIR ${PHP_INCLUDE_DIR}/regex) + set(PHP_EXT_INCLUDE_DIR ${PHP_INCLUDE_DIR}/ext) + set(PHP_DATE_INCLUDE_DIR ${PHP_INCLUDE_DIR}/ext/date/lib) + set(PHP_STANDARD_INCLUDE_DIR ${PHP_INCLUDE_DIR}/ext/standard) + + MESSAGE(STATUS ${PHP_MAIN_INCLUDE_DIR}) + + IF(NOT PHP_INCLUDE_PATH) + set(PHP_INCLUDE_PATH ${PHP_INCLUDES}) + ENDIF(NOT PHP_INCLUDE_PATH) + + IF(PHP_VERSION LESS 5) + MESSAGE(FATAL_ERROR "PHP version is not 5 or later") + ENDIF(PHP_VERSION LESS 5) + + IF(PHP_EXECUTABLE AND PHP_INCLUDES) + set(PHP_FOUND "yes") + MESSAGE(STATUS "Found PHP-Version ${PHP_VERSION} (using ${PHP_CONFIG_EXECUTABLE})") + ENDIF(PHP_EXECUTABLE AND PHP_INCLUDES) + + FIND_PROGRAM(PHPUNIT_EXECUTABLE + NAMES phpunit phpunit2 + PATHS + /usr/local/bin + ) + + IF(PHPUNIT_EXECUTABLE) + MESSAGE(STATUS "Found phpunit: ${PHPUNIT_EXECUTABLE}") + ENDIF(PHPUNIT_EXECUTABLE) + +ENDIF(PHP_CONFIG_EXECUTABLE) diff -Nru mapserver-7.0.7/cmake/FindProtobufC.cmake mapserver-7.4.1/cmake/FindProtobufC.cmake --- mapserver-7.0.7/cmake/FindProtobufC.cmake 1970-01-01 00:00:00.000000000 +0000 +++ mapserver-7.4.1/cmake/FindProtobufC.cmake 2019-07-12 12:05:08.000000000 +0000 @@ -0,0 +1,111 @@ +# - Find protobuf-c +# Find protobuf c implementation libraries, includes and the protoc-c compiler +# FindProtobufC was loosely based on FindProtobuf that is shipped with cmake +# +# Module defines: +# PROTOBUFC_FOUND - library, includes and compiler where found +# PROTOBUFC_INCLUDE_DIRS - include directories +# PROTOBUFC_LIBRARIES - protobuf-c libraries +# PROTOBUFC_EXECUTEABLE - protobuf-c compiler +# +# Environment variables: +# PROTOBUFC_ROOTDIR - optional - rootdir of protobuf-c installation +# +# Cache entries: +# PROTOBUFC_LIBRARY - detected protobuf-c library +# PROTOBUF_INCLUDE_DIR - detected protobuf-c include dir(s) +# PROTOBUF_COMPILER - detected protobuf-c compiler +# +#### +# +# ==================================================================== +# Example: +# +# find_package(ProtobufC REQUIRED) +# include_directories(${PROTOBUFC_INCLUDE_DIRS}) +# include_directories(${CMAKE_CURRENT_BINARY_DIR}) +# PROTOBUFC_GENERATE_C(PROTO_SOURCES PROTO_HEADERS protobuf.proto) +# add_executable(bar bar.c ${PROTO_SRCn} ${PROTO_HDRS}) +# target_link_libraries(bar ${PROTOBUF_LIBRARIES}) +# +# NOTE: You may need to link against pthreads, depending +# on the platform. +# +# NOTE: The PROTOBUF_GENERATE_CPP macro & add_executable() or add_library() +# calls only work properly within the same directory. +# +# ==================================================================== + +#============================================================================= +# Copyright 2013 Thinstuff Technologies GmbH +# Copyright 2013 Bernhard Miklautz +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +#============================================================================= + +set(PROTBUFC_SOURCE_EXTENSION "pb-c.c") +set(PROTBUFC_HEADER_EXTENSION "pb-c.h") +function(PROTOBUFC_GENERATE_C SOURCES HEADERS) + if(NOT ARGN) + message(SEND_ERROR "Error: PROTOBUFC_GENERATE_C() called without any proto files") + return() + endif(NOT ARGN) + + foreach(FIL ${ARGN}) + get_filename_component(ABS_FIL ${FIL} ABSOLUTE) + get_filename_component(FIL_WE ${FIL} NAME_WE) + get_filename_component(FIL_PATH ${ABS_FIL} PATH) + + list(APPEND ${SOURCES} "${CMAKE_CURRENT_BINARY_DIR}/${FIL_WE}.${PROTBUFC_SOURCE_EXTENSION}") + list(APPEND ${HEADERS} "${CMAKE_CURRENT_BINARY_DIR}/${FIL_WE}.${PROTBUFC_HEADER_EXTENSION}") + + add_custom_command( + OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/${FIL_WE}.${PROTBUFC_SOURCE_EXTENSION}" + "${CMAKE_CURRENT_BINARY_DIR}/${FIL_WE}.${PROTBUFC_HEADER_EXTENSION}" + COMMAND ${PROTOBUFC_COMPILER} + ARGS --c_out ${CMAKE_CURRENT_BINARY_DIR} -I ${CMAKE_CURRENT_SOURCE_DIR} -I ${FIL_PATH} ${ABS_FIL} + DEPENDS ${ABS_FIL} + COMMENT "Running protobuf-c compiler on ${FIL}" + VERBATIM ) + endforeach() + set_source_files_properties(${${SOURCES}} ${${HEADERS}} PROPERTIES GENERATED TRUE) + set(${SOURCES} ${${SOURCES}} PARENT_SCOPE) + set(${HEADERS} ${${HEADERS}} PARENT_SCOPE) +endfunction() + +find_library(PROTOBUFC_LIBRARY + NAMES "protobuf-c" + PATHS "/usr" "/usr/local" "/opt" ENV PROTOBUFC_ROOTDIR + PATH_SUFFIXES "lib") +mark_as_advanced(PROTOBUFC_LIBRARY) + +find_path(PROTOBUFC_INCLUDE_DIR + NAMES "google/protobuf-c/protobuf-c.h" + PATHS "/usr" "/usr/local" "/opt" ENV PROTOBUFC_ROOTDIR + PATH_SUFFIXES "include") +mark_as_advanced(PROTOBUFC_INCLUDE_DIR) + +find_program(PROTOBUFC_COMPILER + NAMES "protoc-c" + PATHS "/usr" "/usr/local" "/opt" ENV PROTOBUFC_ROOTDIR + PATH_SUFFIXES "bin") +mark_as_advanced(PROTOBUFC_COMPILER) + +include(FindPackageHandleStandardArgs) +FIND_PACKAGE_HANDLE_STANDARD_ARGS(ProtobufC DEFAULT_MSG PROTOBUFC_LIBRARY PROTOBUFC_COMPILER PROTOBUFC_INCLUDE_DIR ) + +if (PROTOBUFC_FOUND) + set(PROTOBUFC_LIBRARIES ${PROTOBUFC_LIBRARY}) + set(PROTOBUFC_INCLUDE_DIRS ${PROTOBUFC_INCLUDE_DIR}) + set(PROTOBUFC_EXECUTEABLE ${PROTOBUFC_COMPILER}) +endif(PROTOBUFC_FOUND) diff -Nru mapserver-7.0.7/cmake/FindPythonModule.cmake mapserver-7.4.1/cmake/FindPythonModule.cmake --- mapserver-7.0.7/cmake/FindPythonModule.cmake 1970-01-01 00:00:00.000000000 +0000 +++ mapserver-7.4.1/cmake/FindPythonModule.cmake 2019-07-12 12:05:08.000000000 +0000 @@ -0,0 +1,24 @@ +# Find if a Python module is installed +# Found at http://www.cmake.org/pipermail/cmake/2011-January/041666.html +# To use do: find_python_module(PyQt4 REQUIRED) +function(find_python_module module) + string(TOUPPER ${module} module_upper) + if(NOT PY_${module_upper}) + if(ARGC GREATER 1 AND ARGV1 STREQUAL "REQUIRED") + set(${module}_FIND_REQUIRED TRUE) + endif() + # A module's location is usually a directory, but for binary modules + # it's a .so file. + execute_process(COMMAND "${PYTHON_EXECUTABLE}" "-c" + "import re, ${module}; print(re.compile('/__init__.py.*').sub('',${module}.__file__))" + RESULT_VARIABLE _${module}_status + OUTPUT_VARIABLE _${module}_location + ERROR_QUIET + OUTPUT_STRIP_TRAILING_WHITESPACE) + if(NOT _${module}_status) + set(PY_${module_upper} ${_${module}_location} CACHE STRING + "Location of Python module ${module}") + endif(NOT _${module}_status) + endif(NOT PY_${module_upper}) + find_package_handle_standard_args(PY_${module} DEFAULT_MSG PY_${module_upper}) +endfunction(find_python_module) diff -Nru mapserver-7.0.7/CMakeLists.txt mapserver-7.4.1/CMakeLists.txt --- mapserver-7.0.7/CMakeLists.txt 2017-11-15 19:24:35.000000000 +0000 +++ mapserver-7.4.1/CMakeLists.txt 2019-07-12 12:05:08.000000000 +0000 @@ -16,8 +16,8 @@ set (MapServer_VERSION_MAJOR 7) -set (MapServer_VERSION_MINOR 0) -set (MapServer_VERSION_REVISION 7) +set (MapServer_VERSION_MINOR 4) +set (MapServer_VERSION_REVISION 1) set (MapServer_VERSION_SUFFIX "") set(TARGET_VERSION_MAJOR ${MapServer_VERSION_MAJOR}) @@ -33,6 +33,10 @@ MATH(EXPR MapServer_VERSION_NUM "${MapServer_VERSION_MAJOR}*10000+${MapServer_VERSION_MINOR}*100+${MapServer_VERSION_REVISION}") SET(CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake ${CMAKE_MODULE_PATH}) + +# Add custom function to check Python modules are installed +include(FindPythonModule) + if (APPLE) set(CMAKE_FIND_FRAMEWORK "LAST") endif (APPLE) @@ -92,7 +96,6 @@ check_function_exists("strrstr" HAVE_STRRSTR) check_function_exists("strcasecmp" HAVE_STRCASECMP) check_function_exists("strcasestr" HAVE_STRCASESTR) -check_function_exists("strdup" HAVE_STRDUP) check_function_exists("strlcat" HAVE_STRLCAT) check_function_exists("strlcpy" HAVE_STRLCPY) check_function_exists("strlen" HAVE_STRLEN) @@ -117,6 +120,7 @@ #options suported by the cmake builder option(WITH_PROJ "Choose if reprojection support should be built in" ON) +option(WITH_PROTOBUFC "Choose if protocol buffers support should be built in (required for vector tiles)" ON) option(WITH_KML "Enable native KML output support (requires libxml2 support)" OFF) option(WITH_SOS "Enable SOS Server support (requires PROJ and libxml2 support)" OFF) option(WITH_WMS "Enable WMS Server support (requires proj support)" ON) @@ -142,6 +146,7 @@ option(WITH_GIF "Enable GIF support (for PIXMAP loading)" ON) option(WITH_PYTHON "Enable Python mapscript support" OFF) option(WITH_PHP "Enable PHP mapscript support" OFF) +option(WITH_PHPNG "Enable PHPNG (SWIG) mapscript support" OFF) option(WITH_PERL "Enable Perl mapscript support" OFF) option(WITH_RUBY "Enable Ruby mapscript support" OFF) option(WITH_JAVA "Enable Java mapscript support" OFF) @@ -166,8 +171,8 @@ # Add compiler flags for warnings if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_COMPILER_IS_GNUCC) - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -Wdeclaration-after-statement") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall") + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -Werror=format-security -Wdeclaration-after-statement") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Werror=format-security") endif() if(NOT DEFINED CMAKE_INSTALL_LIBDIR) @@ -258,11 +263,12 @@ mapdraw.c maplibxml2.c mapquery.c maputil.c strptime.c mapdrawgdal.c mapraster.c mapuvraster.c mapdummyrenderer.c mapobject.c maprasterquery.c mapwcs.c maperror.c mapogcfilter.c mapregex.c mapwcs11.c mapfile.c -mapogcfiltercommon.c maprendering.c mapwcs20.c mapogcsld.c +mapogcfiltercommon.c maprendering.c mapwcs20.c mapogcsld.c mapmetadata.c mapresample.c mapwfs.c mapgdal.c mapogcsos.c mapscale.c mapwfs11.c mapwfs20.c mapgeomtransform.c mapogroutput.c mapwfslayer.c mapagg.cpp mapkml.cpp mapgeomutil.cpp mapkmlrenderer.cpp fontcache.c textlayout.c maputfgrid.cpp -mapogr.cpp mapcontour.c mapsmoothing.c mapv8.cpp ${REGEX_SOURCES} kerneldensity.c) +mapogr.cpp mapcontour.c mapsmoothing.c mapv8.cpp ${REGEX_SOURCES} kerneldensity.c +mapcompositingfilter.c mapmvt.c) set(mapserver_HEADERS cgiutil.h dejavu-sans-condensed.h dxfcolor.h fontcache.h hittest.h mapagg.h @@ -273,8 +279,39 @@ mapserver-api.h mapserver.h mapserv.h mapshape.h mapsymbol.h maptemplate.h mapthread.h maptile.h maptime.h maptree.h maputfgrid.h mapwcs.h uthash.h) +if(WIN32) + configure_file( + ${CMAKE_CURRENT_SOURCE_DIR}/version.rc.in + ${CMAKE_CURRENT_BINARY_DIR}/version.rc + @ONLY) + set(mapserver_SOURCES ${mapserver_SOURCES} ${CMAKE_CURRENT_BINARY_DIR}/version.rc) +endif(WIN32) + +if(WITH_PROTOBUFC) + find_package(ProtobufC) + if(NOT PROTOBUFC_FOUND) + report_optional_not_found(PROTOBUFC) + else(NOT PROTOBUFC_FOUND) + list(APPEND ALL_INCLUDE_DIRS ${PROTOBUFC_INCLUDE_DIR}) + + FILE(MAKE_DIRECTORY ${PROJECT_BINARY_DIR}/renderers/mvt) + # Create custom command for protoc-c + ADD_CUSTOM_COMMAND( + COMMAND ${PROTOBUFC_COMPILER} + ARGS --c_out=${PROJECT_BINARY_DIR}/renderers/mvt --proto_path=${PROJECT_SOURCE_DIR}/renderers/mvt ${PROJECT_SOURCE_DIR}/renderers/mvt/vector_tile.proto + OUTPUT ${PROJECT_BINARY_DIR}/renderers/mvt/vector_tile.pb-c.c ${PROJECT_BINARY_DIR}/renderers/mvt/vector_tile.pb-c.h + ) + + SET_SOURCE_FILES_PROPERTIES(${PROJECT_BINARY_DIR}/renderers/mvt/vector_tile.pb-c.h ${PROJECT_BINARY_DIR}/renderers/mvt/vector_tile.pb-c.c GENERATED) + set (vectortile_SOURCES ${PROJECT_BINARY_DIR}/renderers/mvt/vector_tile.pb-c.c) + + set (USE_PBF 1) + endif(NOT PROTOBUFC_FOUND) +endif (WITH_PROTOBUFC) + + if(BUILD_DYNAMIC) - add_library(mapserver SHARED ${mapserver_SOURCES} ${agg_SOURCES} ${v8_SOURCES}) + add_library(mapserver SHARED ${vectortile_SOURCES} ${mapserver_SOURCES} ${agg_SOURCES} ${v8_SOURCES}) set_target_properties( mapserver PROPERTIES VERSION ${MapServer_VERSION_STRING} SOVERSION 2 @@ -282,7 +319,7 @@ endif(BUILD_DYNAMIC) if(BUILD_STATIC) - add_library(mapserver_static STATIC ${mapserver_SOURCES} ${agg_SOURCES} ${v8_SOURCES}) + add_library(mapserver_static STATIC ${vectortile_SOURCES} ${mapserver_SOURCES} ${agg_SOURCES} ${v8_SOURCES}) set_target_properties( mapserver_static PROPERTIES VERSION ${MapServer_VERSION_STRING} SOVERSION 2 @@ -363,6 +400,12 @@ endif(NOT PROJ_FOUND) endif (WITH_PROJ) +if(USE_PBF) + include_directories(${PROJECT_BINARY_DIR}/renderers/mvt) + include_directories(${PROTOBUFC_INCLUDE_DIR}) + ms_link_libraries( ${PROTOBUFC_LIBRARY}) +endif() + if(WITH_PIXMAN) find_package(Pixman) if(PIXMAN_FOUND) @@ -826,6 +869,11 @@ set(USE_PHP_MAPSCRIPT 1) endif(WITH_PHP) +if(WITH_PHPNG) + add_subdirectory("mapscript/phpng") + set(USE_PHPNG_MAPSCRIPT 1) +endif(WITH_PHPNG) + if(WITH_APACHE_MODULE) add_subdirectory("apache") set(USE_APACHE_MODULE 1) @@ -857,7 +905,10 @@ endif(UNIX) if (WIN32) -ms_link_libraries( ${MS_EXTERNAL_LIBS} ws2_32.lib) + ms_link_libraries( ${MS_EXTERNAL_LIBS} ws2_32.lib) + if (MSVC) + set_target_properties(mapserver PROPERTIES COMPILE_FLAGS "/wd4267 /wd4244 /wd4018") + endif(MSVC) endif (WIN32) configure_file ( @@ -914,6 +965,7 @@ status_optional_component("POSTGIS" "${USE_POSTGIS}" "${POSTGRESQL_LIBRARY}") status_optional_component("GEOS" "${USE_GEOS}" "${GEOS_LIBRARY}") status_optional_component("FastCGI" "${USE_FASTCGI}" "${FCGI_LIBRARY}") +status_optional_component("PROTOBUFC" "${USE_PBF}" "${PROTOBUFC_LIBRARY}") if(USE_ORACLESPATIAL OR USE_ORACLE_PLUGIN) if(USE_ORACLESPATIAL) status_optional_component("Oracle Spatial" "${USE_ORACLESPATIAL}" "${ORACLE_LIBRARY}") @@ -943,6 +995,7 @@ message(STATUS " * Mapscripts") status_optional_feature("Python" "${USE_PYTHON_MAPSCRIPT}") status_optional_feature("PHP" "${USE_PHP_MAPSCRIPT}") +status_optional_feature("PHPNG" "${USE_PHPNG_MAPSCRIPT}") status_optional_feature("PERL" "${USE_PERL_MAPSCRIPT}") status_optional_feature("RUBY" "${USE_RUBY_MAPSCRIPT}") status_optional_feature("JAVA" "${USE_JAVA_MAPSCRIPT}") diff -Nru mapserver-7.0.7/CONTRIBUTING.md mapserver-7.4.1/CONTRIBUTING.md --- mapserver-7.0.7/CONTRIBUTING.md 1970-01-01 00:00:00.000000000 +0000 +++ mapserver-7.4.1/CONTRIBUTING.md 2019-07-12 12:05:08.000000000 +0000 @@ -0,0 +1,32 @@ +# How to contribute to MapServer + +Contributions to the MapServer project are most welcome, and can take many forms such as detailed bug reports, documentation, +tests, features, and patches. Note that all contributions are managed by the MapServer [Project Steering Committee](https://mapserver.org/psc.html). + +## Bugs and Help + +GitHub issues should only be created to log bugs. For general help and support the MapServer [mailing lists](http://mapserver.org/community/lists.html) +should be used. If you are unsure if you have discovered a bug, or may need help with configuring MapServer please +post to the [mapserver-users list](http://lists.osgeo.org/mailman/listinfo/mapserver-users). There is also +a [MapServer FAQ](http://www.mapserver.org/faq.html) which may have a solution to your problem. + +If you have discovered a bug, please refer to the [Bug Submission page](http://mapserver.org/development/bugs.html) for +guidelines on creating an issue on GitHub. Please also search the existing issues to see if the bug has already been reported, and +add any further details to the existing issue. + +For professional support please see the [MapServer Service Providers page](http://mapserver.org/community/service_providers.html). + +## Development + +A separate [mapserver-dev mailing list](http://lists.osgeo.org/mailman/listinfo/mapserver-dev) is available for developers +working on the MapServer code. + +Details on using GitHub can be found on the [MapServer GitHub page](http://mapserver.org/development/git.html) + +Additional developer notes can be found in the [MapServer wiki](https://github.com/mapserver/mapserver/wiki#developer-notes), including +coding style and guidelines, memory management, and working with Git. + +## Documentation + +The MapServer documentation is stored in a [separate repository](https://github.com/mapserver/docs). Please submit any documentation +issues or changes there. See the [Documentation Development Guide](http://mapserver.org/development/documentation.html) for further details. diff -Nru mapserver-7.0.7/debian/cgi-mapserver.install mapserver-7.4.1/debian/cgi-mapserver.install --- mapserver-7.0.7/debian/cgi-mapserver.install 2017-01-16 21:41:00.000000000 +0000 +++ mapserver-7.4.1/debian/cgi-mapserver.install 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -usr/lib/cgi-bin/mapserv diff -Nru mapserver-7.0.7/debian/cgi-mapserver.links mapserver-7.4.1/debian/cgi-mapserver.links --- mapserver-7.0.7/debian/cgi-mapserver.links 1970-01-01 00:00:00.000000000 +0000 +++ mapserver-7.4.1/debian/cgi-mapserver.links 2019-03-30 09:59:05.000000000 +0000 @@ -0,0 +1 @@ +usr/bin/mapserv usr/lib/cgi-bin/mapserv diff -Nru mapserver-7.0.7/debian/changelog mapserver-7.4.1/debian/changelog --- mapserver-7.0.7/debian/changelog 2018-03-01 09:35:17.000000000 +0000 +++ mapserver-7.4.1/debian/changelog 2019-07-25 16:00:00.000000000 +0000 @@ -1,14 +1,179 @@ -mapserver (7.0.7-1build2) bionic; urgency=high +mapserver (7.4.1-1~bionic2) bionic; urgency=medium - * No change rebuild against ruby-defaults without ruby2.3 support. + * Fix Python MapScript install. - -- Dimitri John Ledkov Thu, 01 Mar 2018 09:35:17 +0000 + -- Angelos Tzotsos Thu, 25 Jul 2019 18:00:00 +0200 -mapserver (7.0.7-1build1) bionic; urgency=medium +mapserver (7.4.1-1~bionic1) bionic; urgency=medium - * No-change rebuild for ruby2.5 update. + * Enable MapScript for Python 2. - -- Matthias Klose Thu, 01 Feb 2018 19:13:52 +0000 + -- Angelos Tzotsos Thu, 25 Jul 2019 18:00:00 +0200 + +mapserver (7.4.1-1~bionic0) bionic; urgency=medium + + * No change rebuild for Bionic. + + -- Angelos Tzotsos Sun, 14 Jul 2019 16:00:00 +0200 + +mapserver (7.4.1-1) unstable; urgency=medium + + * New upstream release. + * Bump Standards-Version to 4.4.0, no changes. + + -- Bas Couwenberg Sat, 13 Jul 2019 06:39:37 +0200 + +mapserver (7.4.0-1) unstable; urgency=medium + + * Update symbols for other architectures. + * Update gbp.conf to use --source-only-changes by default. + * Move from experimental to unstable. + + -- Bas Couwenberg Sun, 07 Jul 2019 08:41:08 +0200 + +mapserver (7.4.0-1~exp1) experimental; urgency=medium + + * New upstream release. + * Update 7.4.0~rc2 symbols for other architectures. + * Update 7.4.0 symbols for amd64. + + -- Bas Couwenberg Tue, 14 May 2019 17:28:54 +0200 + +mapserver (7.4.0~rc2-1~exp1) experimental; urgency=medium + + * New upstream release candidate. + * Update symbols for other architectures. + + -- Bas Couwenberg Fri, 10 May 2019 16:54:50 +0200 + +mapserver (7.4.0~rc1-1~exp1) experimental; urgency=medium + + * New upstream release candidate. + * Update 7.4.0~beta2 symbols for other architectures. + * Update 7.4.0~rc1 symbols for amd64. + + -- Bas Couwenberg Thu, 02 May 2019 06:27:49 +0200 + +mapserver (7.4.0~beta2-1~exp1) experimental; urgency=medium + + * New upstream beta release. + * Update symbols for other architectures. + * Drop patches applied upstream. Refresh remaining patches. + + -- Bas Couwenberg Thu, 18 Apr 2019 06:30:22 +0200 + +mapserver (7.4.0~beta1-1~exp1) experimental; urgency=medium + + * New upstream beta release. + * Remove package name from lintian overrides. + * Re-enable PHP MapScript, support for PHP 7 available now. + * Add python-setuptools to build dependencies. + * Switch Python MapScript to Python 3. + * Drop Ruby MapScript, causes FTBFS. + * Update symbols for amd64. + * Add patch to fix spelling errors. + * Use ttf-bitstream-vera instead of embedded copy. + * Add patch for shebang in Python MapScript example scripts. + * Set INSTALL_LIB_DIR to Multi-Arch path. + * Move all CMake options to dh_auto_configure override. + * Also build PHPNG MapScript (based on SWIG). + * Drop unused shlibs:Depends from cgi-mapserver package. + + -- Bas Couwenberg Sat, 30 Mar 2019 09:59:55 +0100 + +mapserver (7.2.2-1) unstable; urgency=medium + + * Update symbols for other architectures. + * Move from experimental to unstable. + + -- Bas Couwenberg Wed, 20 Feb 2019 05:43:10 +0100 + +mapserver (7.2.2-1~exp1) experimental; urgency=medium + + * New upstream release. + * Add Build-Depends-Package field to symbols file. + * Bump Standards-Version to 4.3.0, no changes. + * Refresh patches. + * Update copyright years for Open Source Geospatial Foundation. + * Update symbols for amd64. + * Add lintian overrides for file-references-package-build-path. + + -- Bas Couwenberg Tue, 19 Feb 2019 18:07:57 +0100 + +mapserver (7.2.1-1) unstable; urgency=medium + + * New upstream release. + * Bump Standards-Version to 4.2.1, no changes. + * Drop patches applied upstream. Refresh remaining patches. + * Fix docs install for README rename. + + -- Bas Couwenberg Tue, 02 Oct 2018 07:11:40 +0200 + +mapserver (7.2.0-5) unstable; urgency=medium + + * Bump Standards-Version to 4.2.0, no changes. + * Add patch to fix FTBFS with CMake 3.12.x. + (closes: #906605) + + -- Bas Couwenberg Sun, 19 Aug 2018 09:45:57 +0200 + +mapserver (7.2.0-4) unstable; urgency=medium + + * Drop autopkgtest to test installability. + * Add lintian override for testsuite-autopkgtest-missing. + + -- Bas Couwenberg Tue, 31 Jul 2018 21:45:41 +0200 + +mapserver (7.2.0-3) unstable; urgency=medium + + * Add upstream patch to update HISTORY.TXT for 7.2.0 release. + * Update symbols for mipsel. + + -- Bas Couwenberg Tue, 24 Jul 2018 20:02:20 +0200 + +mapserver (7.2.0-2) unstable; urgency=medium + + * Add patch to remove -beta2 version suffix. + * Update symbols for other architectures. + + -- Bas Couwenberg Tue, 24 Jul 2018 14:11:34 +0200 + +mapserver (7.2.0-1) unstable; urgency=medium + + * New upstream release. + * Bump Standards-Version to 4.1.5, no changes. + * Update symbols for amd64. + * Strip pre-releases from symbols version. + * Move from experimental to unstable. + + -- Bas Couwenberg Tue, 24 Jul 2018 08:08:43 +0200 + +mapserver (7.2.0~beta2-1~exp1) experimental; urgency=medium + + * New upstream beta release. + * Update symbols for other architectures. + + -- Bas Couwenberg Wed, 13 Jun 2018 18:15:40 +0200 + +mapserver (7.2.0~beta1-1~exp1) experimental; urgency=medium + + * New upstream beta release. + * Update copyright-format URL to use HTTPS. + * Bump Standards-Version to 4.1.4, no changes. + * Fix deprecated source override location. + * Update watch file to use HTTPS. + * Update Vcs-* URLs for Salsa. + * Strip trailing whitespace from control & rules files. + * Update copyright file, changes: + - Update copyright years for existing copyright holders + - Update license for Bison files + - Drop license & copyright for pygdioctx, removed upstream + * Add protobuf build dependencies for MVT support. + * Drop obsolete dbg package. + * Replace /usr/lib/cgi-bin/mapserv with symlink to /usr/bin/mapserv. + * Update symbols for amd64. + + -- Bas Couwenberg Wed, 09 May 2018 22:21:12 +0200 mapserver (7.0.7-1) unstable; urgency=medium @@ -509,7 +674,7 @@ -- Francesco Paolo Lovergine Fri, 23 Dec 2011 14:02:06 +0100 mapserver (6.0.1-1) unstable; urgency=low - + [ Alan Boudreault ] * New upstream release. @@ -558,7 +723,7 @@ * Fix Validation of symbol index values (CVE-2010-1678) [http://trac.osgeo.org/mapserver/ticket/3641] - + -- Alan Boudreault Thu, 06 Jan 2011 11:18:29 -0500 mapserver (5.6.5-1.1) unstable; urgency=low @@ -624,7 +789,7 @@ * New upstream release, with a few important bug fixes. * Modified ruby mapscript package to use ruby 1.9.1 instead of 1.9.0. (closes: #565831) - + [ Francesco Paolo Lovergine ] * Removed Fabio Tranchitella from Uploaders. diff -Nru mapserver-7.0.7/debian/control mapserver-7.4.1/debian/control --- mapserver-7.0.7/debian/control 2018-03-01 09:35:17.000000000 +0000 +++ mapserver-7.4.1/debian/control 2019-07-25 16:00:00.000000000 +0000 @@ -1,13 +1,12 @@ Source: mapserver -Maintainer: Ubuntu Developers -XSBC-Original-Maintainer: Debian GIS Project +Maintainer: Debian GIS Project Uploaders: Francesco Paolo Lovergine , Alan Boudreault , Bas Couwenberg Section: devel Priority: optional -Build-Depends: debhelper (>= 9), -# dh-php, +Build-Depends: debhelper (>= 9.20160114), + dh-php, dh-python, dpkg-dev (>= 1.16.1.1), cmake (>= 2.8.12.1-1.2), @@ -26,29 +25,29 @@ libjpeg-dev, libperl-dev, libpng-dev, + libprotobuf-c-dev, libpq-dev, libproj-dev, librsvg2-dev, libxml2-dev, libxslt1-dev, zlib1g-dev (>= 1.1.4), -# php-dev, + php-dev, pkg-config, pkg-kde-tools, - python-all (>= 2.6.6-3~), - python-all-dev (>= 2.6.6-3~), - ruby, - ruby-all-dev, - gem2deb, + protobuf-c-compiler, + python-all, + python-all-dev, + python-setuptools, swig, docbook2x, docbook-xsl, docbook-xml, xsltproc Build-Conflicts: libcurl3-openssl-dev -Standards-Version: 4.1.1 -Vcs-Browser: https://anonscm.debian.org/cgit/pkg-grass/mapserver.git -Vcs-Git: https://anonscm.debian.org/git/pkg-grass/mapserver.git +Standards-Version: 4.4.0 +Vcs-Browser: https://salsa.debian.org/debian-gis-team/mapserver +Vcs-Git: https://salsa.debian.org/debian-gis-team/mapserver.git Homepage: http://www.mapserver.org XS-Ruby-Versions: all @@ -61,9 +60,9 @@ mapserver-bin, mapserver-doc, libmapscript-perl, -# php-mapscript, - python-mapscript, - ruby-mapscript + php-mapscript, + php-mapscript-ng, + python-mapscript Pre-Depends: ${misc:Pre-Depends} Description: Shared library for MapServer This package contains the shared library. @@ -73,21 +72,6 @@ functionality in MapScript is provided by the suggested mapscript library packages. -Package: libmapserver-dbg -Architecture: any -Section: debug -Depends: libmapserver2 (= ${binary:Version}), - ${misc:Depends} -Breaks: libmapserver1-dbg (<< 7.0.0~) -Replaces: libmapserver1-dbg (<< 7.0.0~) -Description: Debugging symbols for libmapserver - MapServer is a CGI-based framework for Internet map services which - supports Open Geospatial Consortium (OGC) standards. Scripting - functionality in MapScript is provided by the suggested mapscript - library packages. - . - This package contains the debugging symbols for libmapserver. - Package: libmapserver-dev Architecture: any Section: libdevel @@ -97,9 +81,9 @@ mapserver-bin, mapserver-doc, libmapscript-perl, -# php-mapscript, - python-mapscript, - ruby-mapscript + php-mapscript, + php-mapscript-ng, + python-mapscript Breaks: libmapserver-6.2.1-dev (<< 6.4.0-1~), libmapserver1-dev (<< 7.0.0~) Replaces: libmapserver-6.2.1-dev (<< 6.4.0-1~), @@ -115,14 +99,13 @@ Package: cgi-mapserver Architecture: any Section: web -Depends: ${shlibs:Depends}, +Depends: mapserver-bin, ${misc:Depends} -Suggests: mapserver-bin, - mapserver-doc, +Suggests: mapserver-doc, libmapscript-perl, -# php-mapscript, - python-mapscript, - ruby-mapscript + php-mapscript, + php-mapscript-ng, + python-mapscript Description: CGI executable for MapServer This package contains the mapserv CGI program. It provides the MapServer template language, and can be used to implement Web Map @@ -142,9 +125,9 @@ mapserver-doc, shapelib, libmapscript-perl, -# php-mapscript, - python-mapscript, - ruby-mapscript + php-mapscript, + php-mapscript-ng, + python-mapscript Description: MapServer utilities This package provides command-line utilities for MapServer. . @@ -159,9 +142,9 @@ Depends: ${misc:Depends} Suggests: cgi-mapserver, libmapscript-perl, -# php-mapscript, - python-mapscript, - ruby-mapscript + php-mapscript, + php-mapscript-ng, + python-mapscript Description: documentation for MapServer This package provides some brief documentation for MapServer. . @@ -170,19 +153,37 @@ functionality in MapScript is provided by the suggested mapscript library packages. -#Package: php-mapscript -#Architecture: any -#Section: php -#Depends: ${php:Depends}, -# ${shlibs:Depends}, -# ${misc:Depends} -#Suggests: mapserver-bin, -# mapserver-doc -#Description: php-cgi module for MapServer -# PHP MapScript provides MapServer functions for PHP scripts. -# . -# MapServer is a CGI-based framework for Internet map services which -# supports Open Geospatial Consortium (OGC) standards. +Package: php-mapscript +Architecture: any +Section: php +Depends: ${php:Depends}, + ${shlibs:Depends}, + ${misc:Depends} +Suggests: mapserver-bin, + mapserver-doc +Description: php-cgi module for MapServer + PHP MapScript provides MapServer functions for PHP scripts. + . + MapServer is a CGI-based framework for Internet map services which + supports Open Geospatial Consortium (OGC) standards. + . + This package provides the traditional MapScript for PHP. + +Package: php-mapscript-ng +Architecture: any +Section: php +Depends: ${php:Depends}, + ${shlibs:Depends}, + ${misc:Depends} +Suggests: mapserver-bin, + mapserver-doc +Description: PHP MapServer module (SWIG) + PHP MapScript provides MapServer functions for PHP scripts. + . + MapServer is a CGI-based framework for Internet map services which + supports Open Geospatial Consortium (OGC) standards. + . + This package provides MapScript for PHP based on SWIG. Package: libmapscript-perl Architecture: any @@ -204,7 +205,8 @@ Package: python-mapscript Architecture: any Section: python -Depends: ${python:Depends}, +Depends: ttf-bitstream-vera, + ${python:Depends}, ${shlibs:Depends}, ${misc:Depends} Suggests: mapserver-bin, @@ -216,32 +218,6 @@ MapServer is a CGI-based framework for Internet map services which supports Open Geospatial Consortium (OGC) standards. -Package: ruby-mapscript -Architecture: any -Section: ruby -Depends: ruby | ruby-interpreter, - ${shlibs:Depends}, - ${misc:Depends} -Suggests: mapserver-bin, - mapserver-doc -Breaks: libmapscript-ruby (<< 6.4.0-1~), - libmapscript-ruby1.8 (<< 6.4.0-1~), - libmapscript-ruby1.9.1 (<< 6.4.0-1~) -Provides: libmapscript-ruby, - libmapscript-ruby1.8, - libmapscript-ruby1.9.1 -Replaces: libmapscript-ruby (<< 6.4.0-1~), - libmapscript-ruby1.8 (<< 6.4.0-1~), - libmapscript-ruby1.9.1 (<< 6.4.0-1~) -XB-Ruby-Versions: all -Description: MapServer library for Ruby - Ruby MapScript provides MapServer functions for Ruby scripts. - . - This package contains examples and the MapServer functions for Ruby. - . - MapServer is a CGI-based framework for Internet map services which - supports Open Geospatial Consortium (OGC) standards. - Package: libmapscript-java Architecture: any Section: java @@ -254,4 +230,3 @@ . MapServer is a CGI-based framework for Internet map services which supports Open Geospatial Consortium (OGC) standards. - diff -Nru mapserver-7.0.7/debian/copyright mapserver-7.4.1/debian/copyright --- mapserver-7.0.7/debian/copyright 2017-05-09 20:13:10.000000000 +0000 +++ mapserver-7.4.1/debian/copyright 2019-03-30 09:59:05.000000000 +0000 @@ -1,11 +1,12 @@ -Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ +Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ Upstream-Name: MapServer Upstream-Contact: The MapServer team Source: https://github.com/mapserver/mapserver Files: * -Copyright: 2008-2017, Open Source Geospatial Foundation. - 1996-2014, Regents of the University of Minnesota. +Copyright: 2008-2019, Open Source Geospatial Foundation. + 2006-2007, 2017, Tom Kralidis + 1996-2015, Regents of the University of Minnesota. 2011, 2013, Alan Boudreault, MapGears 2013, Even Rouault 2010-2011, EOX IT Services GmbH, Austria @@ -14,7 +15,6 @@ 2008, 2010, Paul Ramsey 2009-2010, Thomas Bonfort 2000-2006, 2008, Y. Assefa, DM Solutions Group inc. - 2006-2007, Tom Kralidis 2007, IS Consulting (www.mapdotnet.com) 2000-2005, DM Solutions Group 2004-2005, Sean Gillies @@ -63,18 +63,13 @@ Files: mapparser.c mapparser.h -Copyright: 1984, 1989-1990, 2000-2006, Free Software Foundation, Inc. -License: GPL-2+ with Bison exception +Copyright: 1984, 1989-1990, 2000-2011, Free Software Foundation, Inc. +License: GPL-3+ with Bison exception Files: uthash.h Copyright: 2003-2013, Troy D. Hanson License: BSD-1-clause -Files: mapscript/python/pygdioctx/pygdioctx.c - mapscript/python/pygdioctx/pygdioctx.h -Copyright: 1995, Richard Jones, Bureau of Meteorology Australia -License: BSD-3-clause-GDMODULE-LICENSE - Files: opengl/glext.h Copyright: 1991-2004, Silicon Graphics, Inc 2005, NVIDIA Corporation @@ -343,35 +338,6 @@ OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -License: BSD-3-clause-GDMODULE-LICENSE - All rights reserved. - . - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions - are met: - . - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in - the documentation and/or other materials provided with the - distribution. Neither the name of the Bureau of Meteorology - Australia nor the names of its contributors may be used to endorse - or promote products derived from this software without specific - prior written permission. - . - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR - CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY - OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - License: BSD-1-clause Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: @@ -487,11 +453,11 @@ ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -License: GPL-2+ with Bison exception +License: GPL-3+ with Bison exception This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. + the Free Software Foundation; either version 3 of the license, or + (at your option) any later version. . This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of @@ -499,9 +465,7 @@ GNU General Public License for more details. . You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301, USA. */ + along with this program; if not, see . As a special exception, you may create a larger work that contains part or all of the Bison parser skeleton and distribute that work @@ -517,8 +481,8 @@ version 2.2 of Bison. . On Debian systems, the full text of the GNU General Public - License version 2 can be found in the file - `/usr/share/common-licenses/GPL-2'. + License version 3 can be found in the file + `/usr/share/common-licenses/GPL-3'. License: SGI-B-1.1 License Applicability. Except to the extent portions of this file are diff -Nru mapserver-7.0.7/debian/gbp.conf mapserver-7.4.1/debian/gbp.conf --- mapserver-7.0.7/debian/gbp.conf 2017-08-06 16:12:08.000000000 +0000 +++ mapserver-7.4.1/debian/gbp.conf 2019-07-07 06:53:34.000000000 +0000 @@ -14,3 +14,6 @@ # Always use pristine-tar. pristine-tar = True + +[buildpackage] +pbuilder-options = --source-only-changes diff -Nru mapserver-7.0.7/debian/libmapscript-java.lintian-overrides mapserver-7.4.1/debian/libmapscript-java.lintian-overrides --- mapserver-7.0.7/debian/libmapscript-java.lintian-overrides 1970-01-01 00:00:00.000000000 +0000 +++ mapserver-7.4.1/debian/libmapscript-java.lintian-overrides 2019-03-30 09:59:05.000000000 +0000 @@ -0,0 +1,3 @@ +# https://github.com/mapserver/mapserver/issues/5746 +file-references-package-build-path * + diff -Nru mapserver-7.0.7/debian/libmapscript-perl.lintian-overrides mapserver-7.4.1/debian/libmapscript-perl.lintian-overrides --- mapserver-7.0.7/debian/libmapscript-perl.lintian-overrides 1970-01-01 00:00:00.000000000 +0000 +++ mapserver-7.4.1/debian/libmapscript-perl.lintian-overrides 2019-03-30 09:59:05.000000000 +0000 @@ -0,0 +1,3 @@ +# https://github.com/mapserver/mapserver/issues/5746 +file-references-package-build-path * + diff -Nru mapserver-7.0.7/debian/libmapserver2.lintian-overrides mapserver-7.4.1/debian/libmapserver2.lintian-overrides --- mapserver-7.0.7/debian/libmapserver2.lintian-overrides 1970-01-01 00:00:00.000000000 +0000 +++ mapserver-7.4.1/debian/libmapserver2.lintian-overrides 2019-03-30 09:59:05.000000000 +0000 @@ -0,0 +1,3 @@ +# https://github.com/mapserver/mapserver/issues/5746 +file-references-package-build-path * + diff -Nru mapserver-7.0.7/debian/libmapserver2.symbols mapserver-7.4.1/debian/libmapserver2.symbols --- mapserver-7.0.7/debian/libmapserver2.symbols 2017-11-15 20:00:35.000000000 +0000 +++ mapserver-7.4.1/debian/libmapserver2.symbols 2019-07-07 06:53:23.000000000 +0000 @@ -1,5 +1,6 @@ -# SymbolsHelper-Confirmed: 7.0.7 amd64 +# SymbolsHelper-Confirmed: 7.4.0 amd64 ppc64 libmapserver.so.2 #PACKAGE# #MINVER# +* Build-Depends-Package: libmapserver-dev BuildExpressionTree@Base 6.2.1 CleanVSIDir@Base 6.2.1 CompareEllipseRegion@Base 6.2.1 @@ -20,7 +21,6 @@ FLTFreeFilterEncodingNode@Base 6.2.1 FLTGetBBOX@Base 6.2.1 FLTGetBinaryComparisonCommonExpression@Base 6.2.1 - FLTGetBinaryComparisonExpresssion@Base 6.2.1 FLTGetBinaryComparisonSQLExpresssion@Base 6.2.1 FLTGetCapabilities@Base 6.2.1 FLTGetCommonExpression@Base 6.2.1 @@ -29,16 +29,11 @@ FLTGetFeatureIdCommonExpression@Base 6.2.1 FLTGetGeosOperator@Base 6.2.1 FLTGetIsBetweenComparisonCommonExpresssion@Base 6.2.1 - FLTGetIsBetweenComparisonExpresssion@Base 6.2.1 FLTGetIsBetweenComparisonSQLExpresssion@Base 6.2.1 FLTGetIsLikeComparisonCommonExpression@Base 6.2.1 - FLTGetIsLikeComparisonExpression@Base 6.2.1 FLTGetIsLikeComparisonSQLExpression@Base 6.2.1 FLTGetLogicalComparisonCommonExpression@Base 6.2.1 - FLTGetLogicalComparisonExpresssion@Base 6.2.1 FLTGetLogicalComparisonSQLExpresssion@Base 6.2.1 - FLTGetMapserverExpression@Base 6.2.1 - FLTGetNodeExpression@Base 6.2.1 FLTGetSQLExpression@Base 6.2.1 FLTGetShape@Base 6.2.1 FLTGetSpatialComparisonCommonExpression@Base 6.2.1 @@ -69,6 +64,7 @@ FLTPreParseFilterForAliasAndGroup@Base 7.0.0 FLTProcessPropertyIsNull@Base 7.0.3 FLTSimplify@Base 7.0.0 + FLTSplitFilters@Base 7.2.0 FLTValidFilterNode@Base 6.2.1 FLTValidForBBoxFilter@Base 6.2.1 FLTogrConvertGeometry@Base 6.2.1 @@ -87,6 +83,7 @@ LayerDefaultGetItems@Base 6.2.1 LayerDefaultGetNumFeatures@Base 6.2.1 LayerDefaultGetShape@Base 6.2.1 + LayerDefaultGetShapeCount@Base 7.2.0 LayerDefaultInitItemInfo@Base 6.2.1 LayerDefaultIsOpen@Base 6.2.1 LayerDefaultNextShape@Base 6.2.1 @@ -143,6 +140,7 @@ _Z23msOGREscapePropertyNameP8layerObjPKc@Base 6.2.1 _Z24aggCompositeRasterBufferP8imageObjP15rasterBufferObj20CompositingOperationi@Base 7.0.0 _Z24aggGetRasterBufferHandleP8imageObjP15rasterBufferObj@Base 6.2.1 + _Z24msOGRLayerGetNumFeaturesP8layerObj@Base 7.2.0 _Z25aggInitializeRasterBufferP15rasterBufferObjiii@Base 6.2.1 _Z25utfgridRenderPixmapSymbolP8imageObjddP9symbolObjP14symbolStyleObj@Base 7.0.0 _Z25utfgridRenderVectorSymbolP8imageObjddP9symbolObjP14symbolStyleObj@Base 7.0.0 @@ -192,6 +190,7 @@ _ZN10ClipperLib17E2InsertsBeforeE1ERNS_5TEdgeES1_@Base 6.2.1 _ZN10ClipperLib17FindAppendLinkEndEPNS_6OutRecE@Base 6.2.1 _ZN10ClipperLib17GetOverlapSegmentENS_8IntPointES0_S0_S0_RS0_S1_@Base 6.2.1 + (arch=armel armhf i386 kfreebsd-i386 m68k mips mipsel powerpc powerpcspe)_ZN10ClipperLib17PolyOffsetBuilder8DoSquareEd@Base 7.2.2 _ZN10ClipperLib17PolyOffsetBuilderC1ERKSt6vectorIS1_INS_8IntPointESaIS2_EESaIS4_EERS6_dNS_8JoinTypeEd@Base 6.2.1 _ZN10ClipperLib17PolyOffsetBuilderC2ERKSt6vectorIS1_INS_8IntPointESaIS2_EESaIS4_EERS6_dNS_8JoinTypeEd@Base 6.2.1 _ZN10ClipperLib18GetNextNonDupOutPtEPNS_5OutPtERS1_@Base 6.2.1 @@ -205,8 +204,7 @@ _ZN10ClipperLib4TopXERNS_5TEdgeEx@Base 6.2.1 _ZN10ClipperLib5GetDxENS_8IntPointES0_@Base 6.2.1 _ZN10ClipperLib5SetDxERNS_5TEdgeE@Base 6.2.1 - (arch=i386 m68k mips mipsel powerpc)_ZN10ClipperLib6Int128C1Ex@Base 7.0.6 - (arch=i386 m68k mips mipsel powerpc)_ZN10ClipperLib6Int128C2Ex@Base 7.0.6 + (arch=armel armhf i386 kfreebsd-i386 m68k mips mipsel powerpc powerpcspe)_ZN10ClipperLib6Int1286NegateERS0_@Base 7.2.2 _ZN10ClipperLib7Clipper10ClearJoinsEv@Base 6.2.1 _ZN10ClipperLib7Clipper11AddHorzJoinEPNS_5TEdgeEi@Base 6.2.1 _ZN10ClipperLib7Clipper11BuildResultERSt6vectorIS1_INS_8IntPointESaIS2_EESaIS4_EE@Base 6.2.1 @@ -220,8 +218,8 @@ _ZN10ClipperLib7Clipper13BuildResultExERSt6vectorINS_9ExPolygonESaIS2_EE@Base 6.2.1 _ZN10ClipperLib7Clipper13DeleteFromAELEPNS_5TEdgeE@Base 6.2.1 _ZN10ClipperLib7Clipper13DeleteFromSELEPNS_5TEdgeE@Base 6.2.1 - (arch=armel armhf hppa hurd-i386 i386 kfreebsd-i386 m68k mips mipsel powerpc powerpcspe sparc x32)_ZN10ClipperLib7Clipper13DisposeOutRecEjb@Base 7.0.6 - (arch=alpha amd64 arm64 ia64 kfreebsd-amd64 mips64el ppc64 ppc64el s390 s390x sparc64)_ZN10ClipperLib7Clipper13DisposeOutRecEmb@Base 7.0.1 + (arch=armel armhf hppa hurd-i386 i386 kfreebsd-i386 m68k mips mipsel powerpc powerpcspe sh4 sparc x32)_ZN10ClipperLib7Clipper13DisposeOutRecEjb@Base 7.2.0 + (arch=alpha amd64 arm64 ia64 kfreebsd-amd64 mips64el ppc64 ppc64el riscv64 s390 s390x sparc64)_ZN10ClipperLib7Clipper13DisposeOutRecEmb@Base 7.2.0 _ZN10ClipperLib7Clipper14ClearHorzJoinsEv@Base 6.2.1 _ZN10ClipperLib7Clipper14FixHoleLinkageEPNS_6OutRecE@Base 6.2.1 _ZN10ClipperLib7Clipper14InsertScanbeamEx@Base 6.2.1 @@ -315,8 +313,8 @@ _ZN11KmlRendererD0Ev@Base 6.4.0 _ZN11KmlRendererD1Ev@Base 6.4.0 _ZN11KmlRendererD2Ev@Base 6.4.0 - (arch=!amd64 !arm64 !kfreebsd-amd64 !mips64el !ppc64el !s390x !sparc64)_ZN12AGG2RendererD1Ev@Base 7.0.1 - (arch=!amd64 !arm64 !kfreebsd-amd64 !mips64el !ppc64el !s390x !sparc64)_ZN12AGG2RendererD2Ev@Base 7.0.1 + (arch=!amd64 !arm64 !kfreebsd-amd64 !mips64el !ppc64 !ppc64el !riscv64 !s390x !sparc64)_ZN12AGG2RendererD1Ev@Base 7.2.2 + (arch=!amd64 !arm64 !kfreebsd-amd64 !mips64el !ppc64 !ppc64el !riscv64 !s390x !sparc64)_ZN12AGG2RendererD2Ev@Base 7.2.2 _ZN12line_adaptor6vertexEPdS0_@Base 6.2.1 _ZN12line_adaptorD0Ev@Base 6.2.1 _ZN12line_adaptorD1Ev@Base 6.2.1 @@ -333,8 +331,8 @@ _ZN19polygon_adaptor_utfD0Ev@Base 7.0.0 _ZN19polygon_adaptor_utfD1Ev@Base 7.0.0 _ZN19polygon_adaptor_utfD2Ev@Base 7.0.0 - (optional=templinst|arch=alpha amd64 arm64 hppa ia64 kfreebsd-amd64 mips64el ppc64 ppc64el s390 s390x sparc sparc64 x32)_ZN9mapserver10conv_curveINS_20path_storage_integerIiLj6EEENS_6curve3ENS_6curve4EE6vertexEPdS6_@Base 6.4.0 - (optional=templinst|arch=alpha amd64 arm64 hppa ia64 kfreebsd-amd64 mips64el ppc64 ppc64el s390 s390x sparc sparc64 x32)_ZN9mapserver10conv_curveINS_20path_storage_integerIsLj6EEENS_6curve3ENS_6curve4EE6vertexEPdS6_@Base 6.4.0 + (optional=templinst|arch=alpha amd64 arm64 hppa ia64 kfreebsd-amd64 mips64el ppc64 ppc64el riscv64 s390 s390x sh4 sparc sparc64 x32)_ZN9mapserver10conv_curveINS_20path_storage_integerIiLj6EEENS_6curve3ENS_6curve4EE6vertexEPdS6_@Base 6.4.0 + (optional=templinst|arch=alpha amd64 arm64 hppa ia64 kfreebsd-amd64 mips64el ppc64 ppc64el riscv64 s390 s390x sh4 sparc sparc64 x32)_ZN9mapserver10conv_curveINS_20path_storage_integerIsLj6EEENS_6curve3ENS_6curve4EE6vertexEPdS6_@Base 6.4.0 (optional=templinst|arch=sparc)_ZN9mapserver10conv_curveINS_31serialized_integer_path_adaptorIsLj6EEENS_6curve3ENS_6curve4EED1Ev@Base 6.4.1 (optional=templinst|arch=sparc)_ZN9mapserver10conv_curveINS_31serialized_integer_path_adaptorIsLj6EEENS_6curve3ENS_6curve4EED2Ev@Base 6.4.1 (optional=templinst)_ZN9mapserver10conv_curveINS_9path_baseINS_20vertex_block_storageIdLj8ELj256EEEEENS_6curve3ENS_6curve4EE6vertexEPdS8_@Base 7.0.0 @@ -369,10 +367,10 @@ (optional=templinst)_ZN9mapserver11math_strokeINS_11pod_bvectorINS_10point_baseIdEELj6EEEE8calc_arcERS4_dddddd@Base 6.2.1 (optional=templinst)_ZN9mapserver11math_strokeINS_11pod_bvectorINS_10point_baseIdEELj6EEEE8calc_capERS4_RKNS_11vertex_distES9_d@Base 6.2.1 (optional=templinst)_ZN9mapserver11math_strokeINS_11pod_bvectorINS_10point_baseIdEELj6EEEE9calc_joinERS4_RKNS_11vertex_distES9_S9_dd@Base 6.2.1 - (optional=templinst|arch=alpha amd64 arm64 hppa kfreebsd-amd64 mips64el ppc64 ppc64el s390x sparc64 x32)_ZN9mapserver11pod_bvectorIN10ClipperLib8IntPointELj8EE14allocate_blockEj@Base 6.4.0 + (optional=templinst|arch=alpha amd64 arm64 hppa kfreebsd-amd64 mips64el ppc64 ppc64el riscv64 s390x sh4 sparc64 x32)_ZN9mapserver11pod_bvectorIN10ClipperLib8IntPointELj8EE14allocate_blockEj@Base 6.4.0 (optional=templinst)_ZN9mapserver11pod_bvectorIN10ClipperLib8IntPointELj8EED1Ev@Base 6.2.1 (optional=templinst)_ZN9mapserver11pod_bvectorIN10ClipperLib8IntPointELj8EED2Ev@Base 6.2.1 - (optional=templinst|arch=alpha amd64 arm64 hppa kfreebsd-amd64 mips64el ppc64 ppc64el s390x sparc64 x32)_ZN9mapserver11pod_bvectorINS_10point_baseIdEELj6EE14allocate_blockEj@Base 7.0.0 + (optional=templinst|arch=alpha amd64 arm64 hppa kfreebsd-amd64 mips64el ppc64 ppc64el riscv64 s390x sh4 sparc64 x32)_ZN9mapserver11pod_bvectorINS_10point_baseIdEELj6EE14allocate_blockEj@Base 7.0.0 (optional=templinst)_ZN9mapserver11pod_bvectorINS_10point_baseIdEELj6EED1Ev@Base 6.2.1 (optional=templinst)_ZN9mapserver11pod_bvectorINS_10point_baseIdEELj6EED2Ev@Base 6.2.1 (optional=templinst)_ZN9mapserver11pod_bvectorINS_11vertex_distELj6EED1Ev@Base 6.2.1 @@ -399,13 +397,15 @@ (optional=templinst)_ZN9mapserver11pod_bvectorIhLj12EED1Ev@Base 7.0.2 (optional=templinst)_ZN9mapserver11pod_bvectorIhLj12EED2Ev@Base 7.0.2 (optional=templinst)_ZN9mapserver11qsort_cellsINS_7cell_aaEEEvPPT_j@Base 6.2.1 - (optional=templinst|arch=!amd64 !arm64 !hppa !mips64el !ppc64el !s390x !sparc64)_ZN9mapserver12conv_clipperI15polygon_adaptorNS_11conv_strokeINS_9conv_dashINS_9path_baseINS_20vertex_block_storageIdLj8ELj256EEEEENS_12null_markersEEES8_EEE11end_contourERSt6vectorISC_IN10ClipperLib8IntPointESaISE_EESaISG_EE@Base 7.0.2 + (optional=templinst)_ZN9mapserver12conv_clipperI15polygon_adaptorNS_11conv_strokeINS_9conv_dashINS_9path_baseINS_20vertex_block_storageIdLj8ELj256EEEEENS_12null_markersEEES8_EEE11add_vertex_ERdSC_@Base 7.2.0 + (optional=templinst|arch=!amd64 !arm64 !hppa !kfreebsd-amd64 !mips64el !ppc64 !ppc64el !riscv64 !s390x !sh4 !sparc64)_ZN9mapserver12conv_clipperI15polygon_adaptorNS_11conv_strokeINS_9conv_dashINS_9path_baseINS_20vertex_block_storageIdLj8ELj256EEEEENS_12null_markersEEES8_EEE11end_contourERSt6vectorISC_IN10ClipperLib8IntPointESaISE_EESaISG_EE@Base 7.0.2 (optional=templinst)_ZN9mapserver12conv_clipperI15polygon_adaptorNS_11conv_strokeINS_9conv_dashINS_9path_baseINS_20vertex_block_storageIdLj8ELj256EEEEENS_12null_markersEEES8_EEE11next_vertexEPdSC_@Base 6.4.0 (optional=templinst)_ZN9mapserver12conv_clipperI15polygon_adaptorNS_11conv_strokeINS_9conv_dashINS_9path_baseINS_20vertex_block_storageIdLj8ELj256EEEEENS_12null_markersEEES8_EEE6rewindEj@Base 6.2.1 (optional=templinst)_ZN9mapserver12conv_clipperI15polygon_adaptorNS_11conv_strokeINS_9conv_dashINS_9path_baseINS_20vertex_block_storageIdLj8ELj256EEEEENS_12null_markersEEES8_EEE6vertexEPdSC_@Base 6.4.1 (optional=templinst)_ZN9mapserver12conv_clipperI15polygon_adaptorNS_11conv_strokeINS_9conv_dashINS_9path_baseINS_20vertex_block_storageIdLj8ELj256EEEEENS_12null_markersEEES8_EEED1Ev@Base 6.2.1 (optional=templinst)_ZN9mapserver12conv_clipperI15polygon_adaptorNS_11conv_strokeINS_9conv_dashINS_9path_baseINS_20vertex_block_storageIdLj8ELj256EEEEENS_12null_markersEEES8_EEED2Ev@Base 6.2.1 - (optional=templinst|arch=!amd64 !arm64 !hppa !mips64el !ppc64el !s390x !sparc64)_ZN9mapserver12conv_clipperI15polygon_adaptorNS_11conv_strokeINS_9path_baseINS_20vertex_block_storageIdLj8ELj256EEEEENS_12null_markersEEEE11end_contourERSt6vectorISA_IN10ClipperLib8IntPointESaISC_EESaISE_EE@Base 7.0.2 + (optional=templinst)_ZN9mapserver12conv_clipperI15polygon_adaptorNS_11conv_strokeINS_9path_baseINS_20vertex_block_storageIdLj8ELj256EEEEENS_12null_markersEEEE11add_vertex_ERdSA_@Base 7.2.0 + (optional=templinst|arch=!amd64 !arm64 !hppa !kfreebsd-amd64 !mips64el !ppc64 !ppc64el !riscv64 !s390x !sh4 !sparc64)_ZN9mapserver12conv_clipperI15polygon_adaptorNS_11conv_strokeINS_9path_baseINS_20vertex_block_storageIdLj8ELj256EEEEENS_12null_markersEEEE11end_contourERSt6vectorISA_IN10ClipperLib8IntPointESaISC_EESaISE_EE@Base 7.0.2 (optional=templinst)_ZN9mapserver12conv_clipperI15polygon_adaptorNS_11conv_strokeINS_9path_baseINS_20vertex_block_storageIdLj8ELj256EEEEENS_12null_markersEEEE11next_vertexEPdSA_@Base 6.4.0 (optional=templinst)_ZN9mapserver12conv_clipperI15polygon_adaptorNS_11conv_strokeINS_9path_baseINS_20vertex_block_storageIdLj8ELj256EEEEENS_12null_markersEEEE6rewindEj@Base 6.2.1 (optional=templinst)_ZN9mapserver12conv_clipperI15polygon_adaptorNS_11conv_strokeINS_9path_baseINS_20vertex_block_storageIdLj8ELj256EEEEENS_12null_markersEEEE6vertexEPdSA_@Base 6.4.1 @@ -460,7 +460,7 @@ (optional=templinst)_ZN9mapserver16comp_op_rgba_xorINS_5rgba8ENS_10order_bgraEE9blend_pixEPhjjjjj@Base 7.0.0 _ZN9mapserver16mcs7x12_mono_lowE@Base 6.2.1 (optional=templinst)_ZN9mapserver16render_scanlinesINS_22rasterizer_scanline_aaINS_18rasterizer_sl_clipINS_12ras_conv_intEEEEENS_11scanline_p8ENS_26renderer_scanline_aa_solidINS_13renderer_baseINS_23pixfmt_alpha_blend_rgbaINS_16blender_rgba_preINS_5rgba8ENS_10order_bgraEEENS_12row_accessorIhEEjEEEEEEEEvRT_RT0_RT1_@Base 6.2.1 - (optional=templinst)_ZN9mapserver16render_scanlinesINS_22rasterizer_scanline_aaINS_18rasterizer_sl_clipINS_12ras_conv_intEEEEENS_11scanline_u8ENS_19scanline_storage_aaIhEEEEvRT_RT0_RT1_@Base 6.2.1 + (optional=templinst)_ZN9mapserver16render_scanlinesINS_22rasterizer_scanline_aaINS_18rasterizer_sl_clipINS_12ras_conv_intEEEEENS_11scanline_u8ENS_19scanline_storage_aaIhEEEEvRT_RT0_RT1_@Base 7.2.0 (optional=templinst)_ZN9mapserver16render_scanlinesINS_22rasterizer_scanline_aaINS_18rasterizer_sl_clipINS_12ras_conv_intEEEEENS_11scanline_u8ENS_26renderer_scanline_aa_solidINS_13renderer_baseINS_23pixfmt_alpha_blend_rgbaINS_16blender_rgba_preINS_5rgba8ENS_10order_bgraEEENS_12row_accessorIhEEjEEEEEEEEvRT_RT0_RT1_@Base 6.2.1 (optional=templinst)_ZN9mapserver16render_scanlinesINS_22rasterizer_scanline_aaINS_18rasterizer_sl_clipINS_12ras_conv_intEEEEENS_12scanline_binENS_20scanline_storage_binEEEvRT_RT0_RT1_@Base 6.2.1 (optional=templinst)_ZN9mapserver16render_scanlinesINS_22rasterizer_scanline_aaINS_18rasterizer_sl_clipINS_12ras_conv_intEEEEENS_12scanline_binENS_27renderer_scanline_bin_solidINS_13renderer_baseI10pixfmt_utfI8utfpix32NS_13row_ptr_cacheIjEELj1ELj0EEEEEEEEvRT_RT0_RT1_@Base 7.0.0 @@ -474,8 +474,8 @@ (optional=templinst)_ZN9mapserver18comp_op_rgba_minusINS_5rgba8ENS_10order_bgraEE9blend_pixEPhjjjjj@Base 7.0.0 _ZN9mapserver18comp_op_table_rgbaINS_5rgba8ENS_10order_bgraEE14g_comp_op_funcE@Base 7.0.1 (optional=templinst)_ZN9mapserver18conv_adaptor_vcgenI12line_adaptorNS_10vcgen_dashENS_12null_markersEE6vertexEPdS5_@Base 6.2.1 - (optional=templinst|arch=alpha amd64 arm64 hppa kfreebsd-amd64 mips64el ppc64 ppc64el s390x sparc64 x32)_ZN9mapserver18conv_adaptor_vcgenI12line_adaptorNS_12vcgen_strokeENS_12null_markersEE6vertexEPdS5_@Base 6.4.0 - (optional=templinst|arch=alpha amd64 arm64 hppa kfreebsd-amd64 mips64el ppc64 ppc64el s390x sparc64 x32)_ZN9mapserver18conv_adaptor_vcgenI16line_adaptor_utfNS_12vcgen_strokeENS_12null_markersEE6vertexEPdS5_@Base 7.0.0 + (optional=templinst|arch=alpha amd64 arm64 hppa kfreebsd-amd64 mips64el ppc64 ppc64el riscv64 s390x sh4 sparc64 x32)_ZN9mapserver18conv_adaptor_vcgenI12line_adaptorNS_12vcgen_strokeENS_12null_markersEE6vertexEPdS5_@Base 6.4.0 + (optional=templinst|arch=alpha amd64 arm64 hppa kfreebsd-amd64 mips64el ppc64 ppc64el riscv64 s390x sh4 sparc64 x32)_ZN9mapserver18conv_adaptor_vcgenI16line_adaptor_utfNS_12vcgen_strokeENS_12null_markersEE6vertexEPdS5_@Base 7.0.0 (optional=templinst)_ZN9mapserver18conv_adaptor_vcgenINS_9conv_dashINS_9path_baseINS_20vertex_block_storageIdLj8ELj256EEEEENS_12null_markersEEENS_12vcgen_strokeES6_E6vertexEPdSA_@Base 6.2.1 (optional=templinst)_ZN9mapserver18conv_adaptor_vcgenINS_9path_baseINS_20vertex_block_storageIdLj8ELj256EEEEENS_10vcgen_dashENS_12null_markersEE6vertexEPdS8_@Base 6.2.1 (optional=templinst)_ZN9mapserver18conv_adaptor_vcgenINS_9path_baseINS_20vertex_block_storageIdLj8ELj256EEEEENS_12vcgen_strokeENS_12null_markersEE6vertexEPdS8_@Base 6.2.1 @@ -565,7 +565,6 @@ (optional=templinst|arch=sparc)_ZN9mapserver9path_baseINS_20vertex_block_storageIdLj8ELj256EEEE11concat_pathINS_14conv_transformINS_10conv_curveINS_31serialized_integer_path_adaptorIsLj6EEENS_6curve3ENS_6curve4EEENS_12trans_affineEEEEEvRT_j@Base 6.4.1 (optional=templinst)_ZN9mapserver9path_baseINS_20vertex_block_storageIdLj8ELj256EEEE6curve3Edddd@Base 7.0.0 (optional=templinst)_ZN9mapserver9path_baseINS_20vertex_block_storageIdLj8ELj256EEEE6curve4Edddddd@Base 7.0.0 - (optional=templinst|arch=!amd64)_ZN9mapserver9path_baseINS_20vertex_block_storageIdLj8ELj256EEEE6vertexEPdS4_@Base 7.0.2 _ZN9mapserver9verdana12E@Base 6.2.1 _ZN9mapserver9verdana13E@Base 6.2.1 _ZN9mapserver9verdana14E@Base 6.2.1 @@ -574,7 +573,7 @@ _ZN9mapserver9verdana18E@Base 6.2.1 _ZNK10ClipperLib16clipperException4whatEv@Base 6.2.1 (arch=sparc)_ZNK10ClipperLib6Int128dvERKS0_@Base 6.4.1 - (arch=!amd64 !arm64 !hppa !mips64el !ppc64el !s390x !sparc64)_ZNK10ClipperLib6Int128mlERKS0_@Base 7.0.2 + (arch=!amd64 !arm64 !hppa !kfreebsd-amd64 !mips64el !ppc64 !ppc64el !riscv64 !s390x !sh4 !sparc64)_ZNK10ClipperLib6Int128mlERKS0_@Base 7.0.2 _ZNK10ClipperLib7Clipper14IsContributingERKNS_5TEdgeE@Base 6.2.1 _ZNK10ClipperLib7Clipper17IsEvenOddFillTypeERKNS_5TEdgeE@Base 6.2.1 _ZNK10ClipperLib7Clipper20IsEvenOddAltFillTypeERKNS_5TEdgeE@Base 6.2.1 @@ -586,41 +585,43 @@ _ZNK9mapserver12trans_affine8is_equalERKS0_d@Base 6.2.1 _ZNK9mapserver12trans_affine8is_validEd@Base 6.2.1 _ZNK9mapserver12trans_affine8rotationEv@Base 6.2.1 - (arch=armel armhf hurd-i386 i386 kfreebsd-i386 m68k mips mipsel powerpc powerpcspe)_ZNK9mapserver12trans_affine9transformEPdS1_@Base 7.0.6 (optional=templinst)_ZNK9mapserver18rasterizer_sl_clipINS_12ras_conv_intEE11line_clip_yINS_19rasterizer_cells_aaINS_7cell_aaEEEEEvRT_iiiijj@Base 6.2.1 _ZNK9mapserver25font_engine_freetype_base14write_glyph_toEPh@Base 6.2.1 _ZNK9mapserver25font_engine_freetype_base8ascenderEv@Base 6.2.1 _ZNK9mapserver25font_engine_freetype_base9descenderEv@Base 6.2.1 _ZNK9mapserver25font_engine_freetype_base9find_faceEPKc@Base 6.2.1 _ZNK9mapserver25font_engine_freetype_base9num_facesEv@Base 6.2.1 - (optional=templinst|arch=!amd64 !arm64 !hppa !mips64el !ppc64el !s390x !sparc64)_ZNSt6vectorIN10ClipperLib11DoublePointESaIS1_EE17_M_default_appendEj@Base 7.0.2 - (optional=templinst|arch=!amd64 !arm64 !mips64el !ppc64el !s390x !sparc64)_ZNSt6vectorIN10ClipperLib8IntPointESaIS1_EE17_M_default_appendEj@Base 7.0.2 - (optional=templinst|arch=amd64 arm64 mips64el ppc64el s390x sparc64)_ZNSt6vectorIN10ClipperLib8IntPointESaIS1_EE17_M_default_appendEm@Base 7.0.2 + (optional=templinst|arch=!amd64 !arm64 !hppa !kfreebsd-amd64 !mips64el !ppc64 !ppc64el !riscv64 !s390x !sparc64)_ZNSt6vectorIN10ClipperLib11DoublePointESaIS1_EE17_M_default_appendEj@Base 7.0.2 + (optional=templinst)_ZNSt6vectorIN10ClipperLib11DoublePointESaIS1_EE17_M_default_appendEm@Base 7.4.0~rc1 + (optional=templinst|arch=!amd64 !arm64 !kfreebsd-amd64 !mips64el !ppc64 !ppc64el !riscv64 !s390x !sparc64)_ZNSt6vectorIN10ClipperLib8IntPointESaIS1_EE17_M_default_appendEj@Base 7.0.2 + (optional=templinst|arch=amd64 arm64 kfreebsd-amd64 mips64el ppc64 ppc64el riscv64 s390x sparc64)_ZNSt6vectorIN10ClipperLib8IntPointESaIS1_EE17_M_default_appendEm@Base 7.0.2 (optional=templinst)_ZNSt6vectorIN10ClipperLib8IntPointESaIS1_EE17_M_realloc_insertIJRKS1_EEEvN9__gnu_cxx17__normal_iteratorIPS1_S3_EEDpOT_@Base 7.0.7 (optional=templinst|subst)_ZNSt6vectorIN10ClipperLib8IntPointESaIS1_EE7reserveE{size_t}@Base 6.4.0 (optional=templinst)_ZNSt6vectorIN10ClipperLib8IntPointESaIS1_EEaSERKS3_@Base 6.2.1 - (optional=templinst|arch=!amd64 !arm64 !mips64el !ppc64el !s390x !sparc64)_ZNSt6vectorIN10ClipperLib9ExPolygonESaIS1_EE17_M_default_appendEj@Base 7.0.2 - (optional=templinst|arch=amd64 arm64 mips64el ppc64el s390x sparc64)_ZNSt6vectorIN10ClipperLib9ExPolygonESaIS1_EE17_M_default_appendEm@Base 7.0.2 + (optional=templinst|arch=!amd64 !arm64 !kfreebsd-amd64 !mips64el !ppc64 !ppc64el !riscv64 !s390x !sparc64)_ZNSt6vectorIN10ClipperLib9ExPolygonESaIS1_EE17_M_default_appendEj@Base 7.0.2 + (optional=templinst|arch=amd64 arm64 kfreebsd-amd64 mips64el ppc64 ppc64el riscv64 s390x sparc64)_ZNSt6vectorIN10ClipperLib9ExPolygonESaIS1_EE17_M_default_appendEm@Base 7.0.2 (optional=templinst)_ZNSt6vectorIN10ClipperLib9ExPolygonESaIS1_EE17_M_realloc_insertIJRKS1_EEEvN9__gnu_cxx17__normal_iteratorIPS1_S3_EEDpOT_@Base 7.0.7 (optional=templinst)_ZNSt6vectorIP10msExprNodeSaIS1_EE17_M_realloc_insertIJRKS1_EEEvN9__gnu_cxx17__normal_iteratorIPS1_S3_EEDpOT_@Base 7.0.7 (optional=templinst)_ZNSt6vectorIP10msExprNodeSaIS1_EE9push_backERKS1_@Base 7.0.5 (optional=templinst)_ZNSt6vectorIP10msExprNodeSaIS1_EEaSERKS3_@Base 7.0.5 - (optional=templinst|arch=!amd64 !arm64 !mips64el !ppc64el !s390x !sparc64)_ZNSt6vectorIPN10ClipperLib11HorzJoinRecESaIS2_EE17_M_default_appendEj@Base 7.0.2 + (optional=templinst|arch=armel armhf i386 kfreebsd-i386 m68k mips mipsel powerpc powerpcspe sh4)_ZNSt6vectorIPN10ClipperLib11HorzJoinRecESaIS2_EE17_M_default_appendEj@Base 7.2.0 + (optional=templinst)_ZNSt6vectorIPN10ClipperLib11HorzJoinRecESaIS2_EE17_M_default_appendEm@Base 7.4.0~rc1 (optional=templinst)_ZNSt6vectorIPN10ClipperLib5TEdgeESaIS2_EE17_M_realloc_insertIJRKS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_@Base 7.0.7 (optional=templinst)_ZNSt6vectorIPN10ClipperLib6OutRecESaIS2_EE17_M_realloc_insertIJRKS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_@Base 7.0.7 - (optional=templinst|arch=!amd64 !arm64 !mips64el !ppc64el !s390x !sparc64)_ZNSt6vectorIPN10ClipperLib7JoinRecESaIS2_EE17_M_default_appendEj@Base 7.0.2 - (optional=templinst)_ZNSt6vectorIPN10ClipperLib7JoinRecESaIS2_EE17_M_realloc_insertIJRKS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_@Base 7.0.7 - (optional=templinst|arch=!amd64 !arm64 !mips64el !ppc64el !s390x !sparc64)_ZNSt6vectorIS_IN10ClipperLib8IntPointESaIS1_EESaIS3_EE17_M_default_appendEj@Base 7.0.2 - (optional=templinst|arch=amd64 arm64 mips64el ppc64el s390x sparc64)_ZNSt6vectorIS_IN10ClipperLib8IntPointESaIS1_EESaIS3_EE17_M_default_appendEm@Base 7.0.2 + (optional=templinst|arch=armel armhf i386 kfreebsd-i386 m68k mips mipsel powerpc powerpcspe sh4)_ZNSt6vectorIPN10ClipperLib7JoinRecESaIS2_EE17_M_default_appendEj@Base 7.2.0 + (optional=templinst)_ZNSt6vectorIPN10ClipperLib7JoinRecESaIS2_EE17_M_default_appendEm@Base 7.4.0~rc1 + (optional=templinst)_ZNSt6vectorIPN10ClipperLib7JoinRecESaIS2_EE17_M_realloc_insertIJRKS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_@Base 7.2.0 + (optional=templinst|arch=!amd64 !arm64 !kfreebsd-amd64 !mips64el !ppc64 !ppc64el !riscv64 !s390x !sparc64)_ZNSt6vectorIS_IN10ClipperLib8IntPointESaIS1_EESaIS3_EE17_M_default_appendEj@Base 7.0.2 + (optional=templinst|arch=amd64 arm64 kfreebsd-amd64 mips64el ppc64 ppc64el riscv64 s390x sparc64)_ZNSt6vectorIS_IN10ClipperLib8IntPointESaIS1_EESaIS3_EE17_M_default_appendEm@Base 7.0.2 (optional=templinst)_ZNSt6vectorIS_IN10ClipperLib8IntPointESaIS1_EESaIS3_EE17_M_realloc_insertIJRKS3_EEEvN9__gnu_cxx17__normal_iteratorIPS3_S5_EEDpOT_@Base 7.0.7 (optional=templinst)_ZNSt6vectorIS_IN10ClipperLib8IntPointESaIS1_EESaIS3_EED1Ev@Base 6.2.1 (optional=templinst)_ZNSt6vectorIS_IN10ClipperLib8IntPointESaIS1_EESaIS3_EED2Ev@Base 6.2.1 (optional=templinst)_ZNSt6vectorIS_IN10ClipperLib8IntPointESaIS1_EESaIS3_EEaSERKS5_@Base 6.2.1 - (optional=templinst|arch=!alpha !amd64 !arm64 !kfreebsd-amd64 !mips64el !ppc64 !ppc64el !s390x !sparc64)_ZSt13__adjust_heapIN9__gnu_cxx17__normal_iteratorIPPN10ClipperLib6OutRecESt6vectorIS4_SaIS4_EEEEiS4_NS0_5__ops15_Iter_comp_iterIPFbS4_S4_EEEEvT_T0_SG_T1_T2_@Base 6.4.1 - (optional=templinst|arch=alpha amd64 arm64 kfreebsd-amd64 mips64el ppc64 ppc64el s390x sparc64)_ZSt13__adjust_heapIN9__gnu_cxx17__normal_iteratorIPPN10ClipperLib6OutRecESt6vectorIS4_SaIS4_EEEElS4_NS0_5__ops15_Iter_comp_iterIPFbS4_S4_EEEEvT_T0_SG_T1_T2_@Base 6.4.1 + (optional=templinst|arch=!alpha !amd64 !arm64 !kfreebsd-amd64 !mips64el !ppc64 !ppc64el !riscv64 !s390x !sparc64)_ZSt13__adjust_heapIN9__gnu_cxx17__normal_iteratorIPPN10ClipperLib6OutRecESt6vectorIS4_SaIS4_EEEEiS4_NS0_5__ops15_Iter_comp_iterIPFbS4_S4_EEEEvT_T0_SG_T1_T2_@Base 6.4.1 + (optional=templinst|arch=alpha amd64 arm64 kfreebsd-amd64 mips64el ppc64 ppc64el riscv64 s390x sparc64)_ZSt13__adjust_heapIN9__gnu_cxx17__normal_iteratorIPPN10ClipperLib6OutRecESt6vectorIS4_SaIS4_EEEElS4_NS0_5__ops15_Iter_comp_iterIPFbS4_S4_EEEEvT_T0_SG_T1_T2_@Base 6.4.1 (optional=templinst)_ZSt16__insertion_sortIN9__gnu_cxx17__normal_iteratorIPPN10ClipperLib6OutRecESt6vectorIS4_SaIS4_EEEENS0_5__ops15_Iter_comp_iterIPFbS4_S4_EEEEvT_SF_T0_@Base 6.4.1 - (optional=templinst|arch=!alpha !amd64 !arm64 !kfreebsd-amd64 !mips64el !ppc64 !ppc64el !s390x !sparc64)_ZSt16__introsort_loopIN9__gnu_cxx17__normal_iteratorIPPN10ClipperLib6OutRecESt6vectorIS4_SaIS4_EEEEiNS0_5__ops15_Iter_comp_iterIPFbS4_S4_EEEEvT_SF_T0_T1_@Base 6.4.1 - (optional=templinst|arch=alpha amd64 arm64 kfreebsd-amd64 mips64el ppc64 ppc64el s390x sparc64)_ZSt16__introsort_loopIN9__gnu_cxx17__normal_iteratorIPPN10ClipperLib6OutRecESt6vectorIS4_SaIS4_EEEElNS0_5__ops15_Iter_comp_iterIPFbS4_S4_EEEEvT_SF_T0_T1_@Base 6.4.1 + (optional=templinst|arch=!alpha !amd64 !arm64 !kfreebsd-amd64 !mips64el !ppc64 !ppc64el !riscv64 !s390x !sparc64)_ZSt16__introsort_loopIN9__gnu_cxx17__normal_iteratorIPPN10ClipperLib6OutRecESt6vectorIS4_SaIS4_EEEEiNS0_5__ops15_Iter_comp_iterIPFbS4_S4_EEEEvT_SF_T0_T1_@Base 6.4.1 + (optional=templinst|arch=alpha amd64 arm64 kfreebsd-amd64 mips64el ppc64 ppc64el riscv64 s390x sparc64)_ZSt16__introsort_loopIN9__gnu_cxx17__normal_iteratorIPPN10ClipperLib6OutRecESt6vectorIS4_SaIS4_EEEElNS0_5__ops15_Iter_comp_iterIPFbS4_S4_EEEEvT_SF_T0_T1_@Base 6.4.1 (optional=templinst|arch=sparc)_ZSt4sortIN9__gnu_cxx17__normal_iteratorIPPN10ClipperLib6OutRecESt6vectorIS4_SaIS4_EEEEPFbS4_S4_EEvT_SC_T0_@Base 6.4.1 (optional=templinst)_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_RKS8_@Base 7.0.5 _ZTI11KmlRenderer@Base 6.4.0 @@ -646,6 +647,20 @@ _ZTVN10ClipperLib16clipperExceptionE@Base 6.2.1 _ZTVN10ClipperLib7ClipperE@Base 6.2.1 _get_param_value@Base 7.0.0 + _msMetadataGetCharacterString@Base 7.2.0 + _msMetadataGetCodeList@Base 7.2.0 + _msMetadataGetContact@Base 7.2.0 + _msMetadataGetDate@Base 7.2.0 + _msMetadataGetDecimal@Base 7.2.0 + _msMetadataGetDistributionInfo@Base 7.2.0 + _msMetadataGetExtent@Base 7.2.0 + _msMetadataGetGMLTimePeriod@Base 7.2.0 + _msMetadataGetIdentificationInfo@Base 7.2.0 + _msMetadataGetInteger@Base 7.2.0 + _msMetadataGetOnline@Base 7.2.0 + _msMetadataGetReferenceSystemInfo@Base 7.2.0 + _msMetadataGetSpatialRepresentationInfo@Base 7.2.0 + _msMetadataGetURL@Base 7.2.0 _msSLDParseSizeParameter@Base 6.2.1 _msValidateTime@Base 6.2.1 _ms_script_prefix_am@Base 7.0.0 @@ -705,6 +720,7 @@ circleLayerDrawShape@Base 6.2.1 cleanupCairo@Base 6.2.1 cleanupDummy@Base 6.2.1 + cleanupResultCache@Base 7.2.0 closeLayerRasterCairo@Base 6.2.1 closeLayerVectorCairo@Base 6.2.1 clusterDestroyData@Base 6.2.1 @@ -741,6 +757,7 @@ freeClass@Base 6.2.1 freeClassHitTests@Base 6.4.0 freeCluster@Base 6.2.1 + freeCompositingFilter@Base 7.2.0 freeFeatureList@Base 6.2.1 freeGrid@Base 7.0.0 freeImageCache@Base 6.2.1 @@ -751,7 +768,7 @@ freeLabelHitTests@Base 6.4.0 freeLabelLeader@Base 7.0.0 freeLayer@Base 6.2.1 - freeLayerCompositers@Base 7.0.2 + freeLayerCompositer@Base 7.2.0 freeLayerHitTests@Base 6.4.0 freeLegend@Base 6.2.1 freeMapHitTests@Base 6.4.0 @@ -887,12 +904,17 @@ msAlphaBlendPM@Base 6.2.1 msAppendOutputFormat@Base 6.2.1 msAppendSymbol@Base 6.2.1 + msApplyBlackeningCompositingFilter@Base 7.2.0 + msApplyBlurringCompositingFilter@Base 7.2.0 + msApplyCompositingFilter@Base 7.2.0 msApplyDefaultOutputFormats@Base 6.2.1 msApplyDefaultSubstitutions@Base 6.2.1 - msApplyFilterToRasterBuffer@Base 7.0.0 + msApplyGrayscaleCompositingFilter@Base 7.2.0 msApplyMapConfigOptions@Base 6.2.1 msApplyOutputFormat@Base 6.2.1 msApplySubstitutions@Base 6.2.1 + msApplyTranslationCompositingFilter@Base 7.2.0 + msApplyWhiteningCompositingFilter@Base 7.2.0 msAxisDenormalizePoints@Base 6.2.1 msAxisNormalizePoints@Base 6.2.1 msAxisSwapShape@Base 6.2.1 @@ -1086,6 +1108,10 @@ msDrawRasterLayer@Base 6.2.1 msDrawRasterLayerGDAL@Base 6.2.1 msDrawRasterLayerLow@Base 6.2.1 + msDrawRasterLayerLowCheckIfMustDraw@Base 7.2.0 + msDrawRasterLayerLowCloseDataset@Base 7.2.0 + msDrawRasterLayerLowOpenDataset@Base 7.2.0 + msDrawRasterLayerLowWithDataset@Base 7.2.0 msDrawRasterLoadProjection@Base 6.4.0 msDrawRasterSetupTileLayer@Base 6.4.0 msDrawReferenceMap@Base 6.2.1 @@ -1102,7 +1128,6 @@ msDrawVectorLayer@Base 6.2.1 msDrawWMSLayer@Base 6.2.1 msDrawWMSLayerLow@Base 6.2.1 - msDumpLayer@Base 6.2.1 msDumpResult@Base 6.2.1 msEmbedLegend@Base 6.2.1 msEmbedScalebar@Base 6.2.1 @@ -1261,6 +1286,7 @@ msGetProjectionString@Base 6.2.1 msGetQueryResultBounds@Base 6.2.1 msGetRasterBufferKml@Base 6.4.0 + msGetShapeRAMSize@Base 7.2.0 msGetStringSize@Base 7.0.0 msGetSymbol@Base 6.2.1 msGetSymbolIndex@Base 6.2.1 @@ -1385,6 +1411,7 @@ msIsAxisInverted@Base 6.2.1 msIsAxisInvertedProj@Base 7.0.0 msIsDegenerateShape@Base 6.2.1 + msIsGlyphASpace@Base 7.2.0 msIsLayerQueryable@Base 6.2.1 msIsOuterRing@Base 6.2.1 msIsXMLTagValid@Base 6.2.1 @@ -1420,6 +1447,7 @@ msLayerGetProcessing@Base 6.2.1 msLayerGetProcessingKey@Base 6.2.1 msLayerGetShape@Base 6.2.1 + msLayerGetShapeCount@Base 7.2.0 msLayerInitItemInfo@Base 6.2.1 msLayerIsOpen@Base 6.2.1 msLayerIsVisible@Base 6.2.1 @@ -1444,6 +1472,7 @@ msLegendCalcSize@Base 6.2.1 msLibXml2GenerateList@Base 6.2.1 msLibXml2GetFirstChild@Base 7.0.0 + msLibXml2GetFirstChildElement@Base 7.2.0 msLibXml2GetFirstChildNs@Base 7.0.0 msLibXml2GetXPath@Base 6.2.1 msLibXml2GetXPathTree@Base 6.2.1 @@ -1471,6 +1500,7 @@ msLoadSymbolSet@Base 6.2.1 msLongToString@Base 6.2.1 msLookupHashTable@Base 6.2.1 + msMVTWriteTile@Base 7.2.0 msMapComputeGeotransform@Base 6.2.1 msMapGeorefToPixel@Base 6.2.1 msMapIgnoreMissingData@Base 6.2.1 @@ -1489,6 +1519,13 @@ msMaybeAllocateClassStyle@Base 6.2.1 msMergeRasterBufferKml@Base 6.4.0 msMergeRect@Base 6.2.1 + msMetadataCreateParamsObj@Base 7.2.0 + msMetadataDispatch@Base 7.2.0 + msMetadataFreeParamsObj@Base 7.2.0 + msMetadataGetExceptionReport@Base 7.2.0 + msMetadataGetLayerMetadata@Base 7.2.0 + msMetadataParseRequest@Base 7.2.0 + msMetadataSetGetMetadataURL@Base 7.2.0 msMoveClassDown@Base 6.2.1 msMoveClassUp@Base 6.2.1 msMoveLabelStyleDown@Base 6.2.1 @@ -1552,6 +1589,7 @@ msOWSIpInList@Base 6.4.0 msOWSIpInMetadata@Base 6.4.0 msOWSIpParse@Base 6.4.0 + msOWSLanguageNegotiation@Base 7.2.0 msOWSLookupMetadata2@Base 6.2.1 msOWSLookupMetadata@Base 6.2.1 msOWSLookupMetadataWithLanguage@Base 6.2.1 @@ -1607,6 +1645,7 @@ msOracleSpatialLayerWhichShapes@Base 6.2.1 msOutlineRenderingPrepareStyle@Base 7.0.0 msOutlineRenderingRestoreStyle@Base 7.0.0 + msOutputFormatResolveFromImage@Base 7.2.0 msOutputFormatValidate@Base 6.2.1 msOwsIsOutputFormatValid@Base 6.2.1 msPOSTGRESQLJoinClose@Base 6.2.1 @@ -1629,6 +1668,7 @@ msPopulateRendererVTableCairoRaster@Base 6.2.1 msPopulateRendererVTableCairoSVG@Base 6.2.1 msPopulateRendererVTableKML@Base 6.2.1 + msPopulateRendererVTableMVT@Base 7.2.0 msPopulateRendererVTableOGR@Base 6.2.1 msPopulateRendererVTableUTFGrid@Base 7.0.0 msPopulateTextSymbolForLabelAndString@Base 7.0.0 @@ -1652,7 +1692,9 @@ msPostGISLayerFreeItemInfo@Base 6.2.1 msPostGISLayerGetExtent@Base 7.0.0 msPostGISLayerGetItems@Base 6.2.1 + msPostGISLayerGetNumFeatures@Base 7.2.0 msPostGISLayerGetShape@Base 6.2.1 + msPostGISLayerGetShapeCount@Base 7.2.0 msPostGISLayerInitItemInfo@Base 6.2.1 msPostGISLayerInitializeVirtualTable@Base 6.2.1 msPostGISLayerIsOpen@Base 6.2.1 @@ -1740,7 +1782,6 @@ msReplaceSubstring@Base 6.2.1 msResampleGDALToMap@Base 6.2.1 msResetErrorList@Base 6.2.1 - msRestoreOldFilter@Base 6.2.1 msReturnNestedTemplateQuery@Base 6.2.1 msReturnOpenLayersPage@Base 6.2.1 msReturnPage@Base 6.2.1 @@ -1907,9 +1948,7 @@ msTileIndexAbsoluteDir@Base 6.2.1 msTileSetExtent@Base 6.2.1 msTileSetup@Base 6.2.1 - msTiledSHPClose@Base 6.2.1 msTiledSHPCloseVT@Base 6.2.1 - msTiledSHPGetShape@Base 6.2.1 msTiledSHPLayerFreeItemInfo@Base 6.2.1 msTiledSHPLayerGetExtent@Base 6.2.1 msTiledSHPLayerGetItems@Base 6.2.1 @@ -1917,10 +1956,6 @@ msTiledSHPLayerInitializeVirtualTable@Base 6.2.1 msTiledSHPLayerIsOpen@Base 6.2.1 msTiledSHPLayerSupportsCommonFilters@Base 6.2.1 - msTiledSHPNextShape@Base 6.2.1 - msTiledSHPOpenFile@Base 6.2.1 - msTiledSHPTryOpen@Base 6.2.1 - msTiledSHPWhichShapes@Base 6.2.1 msTimeCleanup@Base 6.2.1 msTimeCompare@Base 6.2.1 msTimeGetResolution@Base 6.2.1 @@ -1954,6 +1989,7 @@ msUVRASTERLayerNextShape@Base 6.2.1 msUVRASTERLayerOpen@Base 6.2.1 msUVRASTERLayerSetTimeFilter@Base 6.2.1 + msUVRASTERLayerUseMapExtentAndProjectionForNextWhichShapes@Base 7.2.0 msUVRASTERLayerWhichShapes@Base 6.2.1 msUnionLayerClose@Base 6.2.1 msUnionLayerCopyVirtualTable@Base 6.2.1 @@ -1984,6 +2020,8 @@ msValidateParameter@Base 6.2.1 msValidateTimeValue@Base 6.2.1 msValueToRange@Base 6.2.1 + msWCSApplyDatasetMetadataAsCreationOptions@Base 7.2.0 + msWCSApplyLayerCreationOptions@Base 7.2.0 msWCSCreateParamsObj20@Base 6.2.1 msWCSDescribeCoverage11@Base 6.2.1 msWCSDescribeCoverage20@Base 6.2.1 @@ -1991,6 +2029,7 @@ msWCSException11@Base 6.2.1 msWCSException20@Base 6.2.1 msWCSException@Base 6.2.1 + msWCSFreeCoverageMetadata@Base 7.2.0 msWCSFreeParams@Base 6.2.1 msWCSFreeParamsObj20@Base 6.2.1 msWCSGetCapabilities11@Base 6.2.1 @@ -2037,6 +2076,7 @@ msWFSUpdateRequestInfo@Base 6.2.1 msWMSApplyDimension@Base 6.2.1 msWMSApplyDimensionLayer@Base 6.2.1 + msWMSApplyFilter@Base 7.2.0 msWMSApplyTime@Base 6.2.1 msWMSDescribeLayer@Base 6.2.1 msWMSDispatch@Base 6.2.1 @@ -2062,7 +2102,6 @@ msWMSPrintScaleHint@Base 6.2.1 msWMSSetTimePattern@Base 6.2.1 msWMSValidateDimensionValue@Base 6.2.1 - msWrapText@Base 6.2.1 msWriteClassToString@Base 6.4.0 msWriteClusterToString@Base 6.4.0 msWriteError@Base 6.2.1 @@ -2138,6 +2177,7 @@ msyystring_size_tmp@Base 6.2.1 msyytext@Base 6.2.1 msyywrap@Base 6.2.1 + mvtWriteShape@Base 7.2.0 offsetAndTest@Base 6.2.1 ogrEnabled@Base 6.2.1 path@Base 6.2.1 @@ -2208,7 +2248,6 @@ setCoordinate@Base 6.2.1 setExtent@Base 6.2.1 setExtentFromShapes@Base 6.2.1 - sortLayerByMetadata@Base 6.2.1 sortLayerByOrder@Base 6.2.1 startLayerDummy@Base 6.2.1 startLayerRasterCairo@Base 6.2.1 @@ -2219,6 +2258,21 @@ strrstr@Base 6.2.1 unescape_url@Base 6.2.1 unicode_is_latin1@Base 7.0.0 + use_global_ft_cache@Base 7.2.0 + vector_tile__tile__descriptor@Base 7.2.0 + vector_tile__tile__feature__descriptor@Base 7.2.0 + vector_tile__tile__feature__init@Base 7.2.0 + vector_tile__tile__free_unpacked@Base 7.2.0 + vector_tile__tile__geom_type__descriptor@Base 7.2.0 + vector_tile__tile__get_packed_size@Base 7.2.0 + vector_tile__tile__init@Base 7.2.0 + vector_tile__tile__layer__descriptor@Base 7.2.0 + vector_tile__tile__layer__init@Base 7.2.0 + vector_tile__tile__pack@Base 7.2.0 + vector_tile__tile__pack_to_buffer@Base 7.2.0 + vector_tile__tile__unpack@Base 7.2.0 + vector_tile__tile__value__descriptor@Base 7.2.0 + vector_tile__tile__value__init@Base 7.2.0 (c++)"virtual thunk to ClipperLib::Clipper::Clear()@Base" 6.2.1 (c++)"virtual thunk to ClipperLib::Clipper::Reset()@Base" 6.2.1 (c++)"virtual thunk to ClipperLib::Clipper::~Clipper()@Base" 6.2.1 diff -Nru mapserver-7.0.7/debian/mapscript-ng.ini mapserver-7.4.1/debian/mapscript-ng.ini --- mapserver-7.0.7/debian/mapscript-ng.ini 1970-01-01 00:00:00.000000000 +0000 +++ mapserver-7.4.1/debian/mapscript-ng.ini 2019-07-07 06:53:23.000000000 +0000 @@ -0,0 +1 @@ +extension=php_mapscriptng.so diff -Nru mapserver-7.0.7/debian/mapserver-bin.lintian-overrides mapserver-7.4.1/debian/mapserver-bin.lintian-overrides --- mapserver-7.0.7/debian/mapserver-bin.lintian-overrides 1970-01-01 00:00:00.000000000 +0000 +++ mapserver-7.4.1/debian/mapserver-bin.lintian-overrides 2019-03-30 09:59:05.000000000 +0000 @@ -0,0 +1,3 @@ +# https://github.com/mapserver/mapserver/issues/5746 +file-references-package-build-path * + diff -Nru mapserver-7.0.7/debian/mapserver-doc.docs mapserver-7.4.1/debian/mapserver-doc.docs --- mapserver-7.0.7/debian/mapserver-doc.docs 2017-05-09 20:13:10.000000000 +0000 +++ mapserver-7.4.1/debian/mapserver-doc.docs 2019-03-30 09:59:05.000000000 +0000 @@ -1,4 +1,4 @@ -README +README.rst fonts symbols MIGRATION_GUIDE.txt diff -Nru mapserver-7.0.7/debian/patches/hardening.patch mapserver-7.4.1/debian/patches/hardening.patch --- mapserver-7.0.7/debian/patches/hardening.patch 2017-03-15 16:06:33.000000000 +0000 +++ mapserver-7.4.1/debian/patches/hardening.patch 1970-01-01 00:00:00.000000000 +0000 @@ -1,31 +0,0 @@ -Description: Add support for hardening build flags. -Author: Bas Couwenberg -Last-Update: 2013-09-02 -Forwarded: not-needed - ---- a/mapscript/ruby/CMakeLists.txt -+++ b/mapscript/ruby/CMakeLists.txt -@@ -7,6 +7,23 @@ include_directories(${PROJECT_SOURCE_DIR - include_directories(${PROJECT_SOURCE_DIR}/mapscript/ruby) - SWIG_ADD_MODULE(rubymapscript ruby ../mapscript.i) - -+# Ruby mapscript fails to build with -Werror=format-security -+ -+if(${CMAKE_C_FLAGS} MATCHES "-Werror=format-security") -+ string(REPLACE "-Werror=format-security" "" TMP "${CMAKE_C_FLAGS}") -+ set(CMAKE_C_FLAGS "${TMP}") -+endif(${CMAKE_C_FLAGS} MATCHES "-Werror=format-security") -+ -+if(${CMAKE_CXX_FLAGS} MATCHES "-Werror=format-security") -+ string(REPLACE "-Werror=format-security" "" TMP "${CMAKE_CXX_FLAGS}") -+ set(CMAKE_CXX_FLAGS "${TMP}") -+endif(${CMAKE_CXX_FLAGS} MATCHES "-Werror=format-security") -+ -+if(${CMAKE_CPP_FLAGS} MATCHES "-Werror=format-security") -+ string(REPLACE "-Werror=format-security" "" TMP "${CMAKE_CPP_FLAGS}") -+ set(CMAKE_CPP_FLAGS "${TMP}") -+endif(${CMAKE_CPP_FLAGS} MATCHES "-Werror=format-security") -+ - SWIG_LINK_LIBRARIES(rubymapscript ${RUBY_LIBRARY} ${MAPSERVER_LIBMAPSERVER}) - - set_target_properties(${SWIG_MODULE_rubymapscript_REAL_NAME} PROPERTIES PREFIX "") diff -Nru mapserver-7.0.7/debian/patches/java-hardening.patch mapserver-7.4.1/debian/patches/java-hardening.patch --- mapserver-7.0.7/debian/patches/java-hardening.patch 2017-03-15 16:06:33.000000000 +0000 +++ mapserver-7.4.1/debian/patches/java-hardening.patch 2019-03-30 09:59:05.000000000 +0000 @@ -6,9 +6,9 @@ --- a/mapscript/java/CMakeLists.txt +++ b/mapscript/java/CMakeLists.txt -@@ -15,6 +15,23 @@ SET (CMAKE_SWIG_OUTDIR "${CMAKE_CURRENT_ - SET(CMAKE_SWIG_FLAGS -package edu.umn.gis.mapscript) - SWIG_ADD_MODULE(javamapscript java ../mapscript.i) +@@ -20,6 +20,23 @@ else () + swig_add_module(javamapscript java ../mapscript.i) + endif () +# Java mapscript fails to build with -Werror=format-security + @@ -27,14 +27,13 @@ + set(CMAKE_CPP_FLAGS "${TMP}") +endif(${CMAKE_CPP_FLAGS} MATCHES "-Werror=format-security") + - SWIG_LINK_LIBRARIES(javamapscript ${MAPSERVER_LIBMAPSERVER}) + swig_link_libraries(javamapscript ${MAPSERVER_LIBMAPSERVER}) - ADD_CUSTOM_COMMAND(TARGET javamapscript -@@ -26,5 +43,5 @@ ADD_CUSTOM_COMMAND(TARGET javamapscript + add_custom_command(TARGET javamapscript +@@ -31,4 +48,5 @@ add_custom_command(TARGET javamapscript ) - get_target_property(LOC_MAPSCRIPT_LIB ${SWIG_MODULE_javamapscript_REAL_NAME} LOCATION) --install(FILES ${LOC_MAPSCRIPT_LIB} DESTINATION ${CMAKE_INSTALL_LIBDIR}) -- -+install(FILES ${LOC_MAPSCRIPT_LIB} DESTINATION lib/jni) + set(mapscript_files $) +-install(FILES ${mapscript_files} DESTINATION ${CMAKE_INSTALL_LIBDIR}) ++install(FILES ${mapscript_files} DESTINATION lib/jni) +install(FILES ${CMAKE_CURRENT_BINARY_DIR}/mapscript.jar DESTINATION share/java) diff -Nru mapserver-7.0.7/debian/patches/perl-mapscript-install.patch mapserver-7.4.1/debian/patches/perl-mapscript-install.patch --- mapserver-7.0.7/debian/patches/perl-mapscript-install.patch 2017-03-15 16:06:33.000000000 +0000 +++ mapserver-7.4.1/debian/patches/perl-mapscript-install.patch 2019-07-07 06:53:23.000000000 +0000 @@ -5,21 +5,23 @@ --- a/mapscript/perl/CMakeLists.txt +++ b/mapscript/perl/CMakeLists.txt -@@ -2,7 +2,7 @@ FIND_PACKAGE(SWIG REQUIRED) - INCLUDE(${SWIG_USE_FILE}) - FIND_PACKAGE(Perl REQUIRED) - FIND_PACKAGE(PerlLibs REQUIRED) +@@ -2,7 +2,7 @@ find_package(SWIG REQUIRED) + include(${SWIG_USE_FILE}) + find_package(Perl REQUIRED) + find_package(PerlLibs REQUIRED) -set(CUSTOM_PERL_SITE_ARCH_DIR ${PERL_SITEARCH} CACHE DIR "Custom installation directory for perl binary extension") +set(CUSTOM_PERL_VENDOR_ARCH_DIR ${PERL_VENDORARCH} CACHE DIR "Custom installation directory for perl binary extension") - INCLUDE_DIRECTORIES(${PERL_INCLUDE_PATH}) + include_directories(${PERL_INCLUDE_PATH}) include_directories(${PROJECT_SOURCE_DIR}/mapscript/swiginc) include_directories(${PROJECT_SOURCE_DIR}/mapscript/) -@@ -20,6 +20,6 @@ endif(APPLE) +@@ -23,8 +23,8 @@ if(APPLE) + set_target_properties(perlmapscript PROPERTIES SUFFIX ".bundle") + endif(APPLE) - get_target_property(LOC_MAPSCRIPT_LIB ${SWIG_MODULE_perlmapscript_REAL_NAME} LOCATION) - set(mapscript_files ${LOC_MAPSCRIPT_LIB} ${CMAKE_CURRENT_BINARY_DIR}/mapscript.pm) --install(FILES ${LOC_MAPSCRIPT_LIB} DESTINATION ${CUSTOM_PERL_SITE_ARCH_DIR}/auto/mapscript) --install(FILES ${CMAKE_CURRENT_BINARY_DIR}/mapscript.pm DESTINATION ${CUSTOM_PERL_SITE_ARCH_DIR}) -+install(FILES ${LOC_MAPSCRIPT_LIB} DESTINATION ${CUSTOM_PERL_VENDOR_ARCH_DIR}/auto/mapscript) -+install(FILES ${CMAKE_CURRENT_BINARY_DIR}/mapscript.pm DESTINATION ${CUSTOM_PERL_VENDOR_ARCH_DIR}) +-install(FILES $ DESTINATION ${CUSTOM_PERL_SITE_ARCH_DIR}/auto/mapscript) +-install(FILES $/mapscript.pm DESTINATION ${CUSTOM_PERL_SITE_ARCH_DIR}) ++install(FILES $ DESTINATION ${CUSTOM_PERL_VENDOR_ARCH_DIR}/auto/mapscript) ++install(FILES $/mapscript.pm DESTINATION ${CUSTOM_PERL_VENDOR_ARCH_DIR}) + file(COPY ${CMAKE_CURRENT_SOURCE_DIR}/tests DESTINATION ${CMAKE_CURRENT_BINARY_DIR}) + file(COPY ${CMAKE_CURRENT_SOURCE_DIR}/examples DESTINATION ${CMAKE_CURRENT_BINARY_DIR}) diff -Nru mapserver-7.0.7/debian/patches/ruby-mapscript-install.patch mapserver-7.4.1/debian/patches/ruby-mapscript-install.patch --- mapserver-7.0.7/debian/patches/ruby-mapscript-install.patch 2017-03-15 16:06:33.000000000 +0000 +++ mapserver-7.4.1/debian/patches/ruby-mapscript-install.patch 1970-01-01 00:00:00.000000000 +0000 @@ -1,15 +0,0 @@ -Description: Install Ruby mapscript to vendorarchdir instead of archdir. -Author: Bas Couwenberg -Last-Update: 2013-09-11 -Forwarded: not-needed - ---- a/mapscript/ruby/CMakeLists.txt -+++ b/mapscript/ruby/CMakeLists.txt -@@ -33,5 +33,5 @@ if(APPLE) - endif(APPLE) - - get_target_property(LOC_MAPSCRIPT_LIB ${SWIG_MODULE_rubymapscript_REAL_NAME} LOCATION) --execute_process(COMMAND ${RUBY_EXECUTABLE} -r rbconfig -e "puts RbConfig::CONFIG['sitearchdir']" OUTPUT_VARIABLE RUBY_SITEARCHDIR OUTPUT_STRIP_TRAILING_WHITESPACE) --install(FILES ${LOC_MAPSCRIPT_LIB} DESTINATION ${RUBY_SITEARCHDIR}) -+execute_process(COMMAND ${RUBY_EXECUTABLE} -r rbconfig -e "puts RbConfig::CONFIG['vendorarchdir']" OUTPUT_VARIABLE RUBY_VENDORARCHDIR OUTPUT_STRIP_TRAILING_WHITESPACE) -+install(FILES ${LOC_MAPSCRIPT_LIB} DESTINATION ${RUBY_VENDORARCHDIR}) diff -Nru mapserver-7.0.7/debian/patches/series mapserver-7.4.1/debian/patches/series --- mapserver-7.0.7/debian/patches/series 2017-06-18 11:09:09.000000000 +0000 +++ mapserver-7.4.1/debian/patches/series 2019-07-07 06:53:23.000000000 +0000 @@ -1,4 +1,2 @@ -hardening.patch perl-mapscript-install.patch -ruby-mapscript-install.patch java-hardening.patch diff -Nru mapserver-7.0.7/debian/php-mapscript.install mapserver-7.4.1/debian/php-mapscript.install --- mapserver-7.0.7/debian/php-mapscript.install 2017-05-09 20:13:10.000000000 +0000 +++ mapserver-7.4.1/debian/php-mapscript.install 2019-07-07 06:53:23.000000000 +0000 @@ -1,2 +1 @@ -usr/lib/php/ -etc/php/*/mods-available/ +usr/lib/php/*/php_mapscript.* diff -Nru mapserver-7.0.7/debian/php-mapscript-ng.install mapserver-7.4.1/debian/php-mapscript-ng.install --- mapserver-7.0.7/debian/php-mapscript-ng.install 1970-01-01 00:00:00.000000000 +0000 +++ mapserver-7.4.1/debian/php-mapscript-ng.install 2019-07-07 06:53:23.000000000 +0000 @@ -0,0 +1 @@ +usr/lib/php/*/php_mapscriptng.* diff -Nru mapserver-7.0.7/debian/php-mapscript-ng.lintian-overrides mapserver-7.4.1/debian/php-mapscript-ng.lintian-overrides --- mapserver-7.0.7/debian/php-mapscript-ng.lintian-overrides 1970-01-01 00:00:00.000000000 +0000 +++ mapserver-7.4.1/debian/php-mapscript-ng.lintian-overrides 2019-07-07 06:53:23.000000000 +0000 @@ -0,0 +1,4 @@ +# Build uses -D_FORTIFY_SOURCE=2, but hardening-check reports: +# Fortify Source functions: no, only unprotected functions found! +hardening-no-fortify-functions * + diff -Nru mapserver-7.0.7/debian/php-mapscript-ng.php mapserver-7.4.1/debian/php-mapscript-ng.php --- mapserver-7.0.7/debian/php-mapscript-ng.php 1970-01-01 00:00:00.000000000 +0000 +++ mapserver-7.4.1/debian/php-mapscript-ng.php 2019-07-07 06:53:23.000000000 +0000 @@ -0,0 +1 @@ +mod debian/mapscript-ng.ini diff -Nru mapserver-7.0.7/debian/php-mapscript-ng.postinst mapserver-7.4.1/debian/php-mapscript-ng.postinst --- mapserver-7.0.7/debian/php-mapscript-ng.postinst 1970-01-01 00:00:00.000000000 +0000 +++ mapserver-7.4.1/debian/php-mapscript-ng.postinst 2019-07-07 06:53:23.000000000 +0000 @@ -0,0 +1,10 @@ +#!/bin/sh + +set -e + +# Source debconf library. +. /usr/share/debconf/confmodule + +#DEBHELPER# + +exit 0 diff -Nru mapserver-7.0.7/debian/php-mapscript-ng.postrm mapserver-7.4.1/debian/php-mapscript-ng.postrm --- mapserver-7.0.7/debian/php-mapscript-ng.postrm 1970-01-01 00:00:00.000000000 +0000 +++ mapserver-7.4.1/debian/php-mapscript-ng.postrm 2019-07-07 06:53:23.000000000 +0000 @@ -0,0 +1,7 @@ +#!/bin/sh + +set -e + +#DEBHELPER# + +exit 0 diff -Nru mapserver-7.0.7/debian/php-mapscript-ng.prerm mapserver-7.4.1/debian/php-mapscript-ng.prerm --- mapserver-7.0.7/debian/php-mapscript-ng.prerm 1970-01-01 00:00:00.000000000 +0000 +++ mapserver-7.4.1/debian/php-mapscript-ng.prerm 2019-07-07 06:53:23.000000000 +0000 @@ -0,0 +1,7 @@ +#!/bin/sh + +set -e + +#DEBHELPER# + +exit 0 diff -Nru mapserver-7.0.7/debian/python-mapscript.lintian-overrides mapserver-7.4.1/debian/python-mapscript.lintian-overrides --- mapserver-7.0.7/debian/python-mapscript.lintian-overrides 1970-01-01 00:00:00.000000000 +0000 +++ mapserver-7.4.1/debian/python-mapscript.lintian-overrides 2019-07-07 06:53:23.000000000 +0000 @@ -0,0 +1,3 @@ +# https://github.com/mapserver/mapserver/issues/5746 +file-references-package-build-path * + diff -Nru mapserver-7.0.7/debian/ruby-mapscript.docs mapserver-7.4.1/debian/ruby-mapscript.docs --- mapserver-7.0.7/debian/ruby-mapscript.docs 2017-01-28 15:41:11.000000000 +0000 +++ mapserver-7.4.1/debian/ruby-mapscript.docs 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -mapscript/ruby/README diff -Nru mapserver-7.0.7/debian/ruby-mapscript.examples mapserver-7.4.1/debian/ruby-mapscript.examples --- mapserver-7.0.7/debian/ruby-mapscript.examples 2017-01-28 15:41:11.000000000 +0000 +++ mapserver-7.4.1/debian/ruby-mapscript.examples 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -mapscript/ruby/examples/* diff -Nru mapserver-7.0.7/debian/ruby-mapscript.install mapserver-7.4.1/debian/ruby-mapscript.install --- mapserver-7.0.7/debian/ruby-mapscript.install 2017-03-15 16:06:34.000000000 +0000 +++ mapserver-7.4.1/debian/ruby-mapscript.install 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -usr/lib/*/ruby/vendor_ruby/*/mapscript.so diff -Nru mapserver-7.0.7/debian/rules mapserver-7.4.1/debian/rules --- mapserver-7.0.7/debian/rules 2017-11-15 20:00:35.000000000 +0000 +++ mapserver-7.4.1/debian/rules 2019-07-25 16:00:00.000000000 +0000 @@ -22,55 +22,13 @@ CFLAGS += $(CPPFLAGS) CFLAGS += $(LDFLAGS) -RUBYVERSIONS := $(shell dh_ruby --print-supported) -#PHPAPI := $(shell php-config --phpapi) - MANPAGES := $(wildcard debian/man/*.*.xml) MS_VERSION := $(shell echo $(DEB_VERSION_UPSTREAM) | sed -e 's/\+.*//') BUILD_DATE := $(shell LC_ALL=C date -u "+%d %B %Y" -d "@$(SOURCE_DATE_EPOCH)") -CMAKE_OPTS := \ - -DCMAKE_BUILD_TYPE=RelWithDebInfo \ - -DCMAKE_EXE_LINKER_FLAGS="$(LDFLAGS)" \ - -DCMAKE_MODULE_LINKER_FLAGS="$(LDFLAGS)" \ - -DCMAKE_SHARED_LINKER_FLAGS="$(LDFLAGS)" \ - -DCMAKE_INSTALL_PREFIX=/usr \ - -DCMAKE_VERBOSE_MAKEFILE=1 \ - -DWITH_PROJ=1 \ - -DWITH_KML=1 \ - -DWITH_SOS=1 \ - -DWITH_WMS=1 \ - -DWITH_FRIBIDI=1 \ - -DWITH_HARFBUZZ=1 \ - -DWITH_ICONV=1 \ - -DWITH_CAIRO=1 \ - -DWITH_SVGCAIRO=0 \ - -DWITH_RSVG=1 \ - -DWITH_MYSQL=0 \ - -DWITH_FCGI=1 \ - -DWITH_GEOS=1 \ - -DWITH_POSTGIS=1 \ - -DWITH_GDAL=1 \ - -DWITH_OGR=1 \ - -DWITH_CURL=1 \ - -DWITH_CLIENT_WMS=1 \ - -DWITH_CLIENT_WFS=1 \ - -DWITH_WFS=1 \ - -DWITH_WCS=1 \ - -DWITH_LIBXML2=1 \ - -DWITH_THREAD_SAFETY=1 \ - -DWITH_GIF=1 \ - -DWITH_ORACLESPATIAL=0 \ - -DWITH_ORACLE_PLUGIN=0 \ - -DWITH_MSSQL2008=0 \ - -DWITH_EXEMPI=0 \ - -DWITH_XMLMAPFILE=0 \ - -DWITH_V8=0 \ - -DWITH_PIXMAN=0 - %: - dh $@ --with python2,pkgkde_symbolshelper \ + dh $@ --with php,python2,pkgkde_symbolshelper \ --parallel \ --buildsystem cmake @@ -82,26 +40,51 @@ -$(RM) -rf build-ruby*/ debian/tmp-ruby*/ override_dh_auto_configure: - dh_auto_configure -- $(CMAKE_OPTS) \ - -DWITH_PYTHON=1 \ - -DWITH_PHP=0 \ - -DWITH_PERL=1 \ - -DWITH_RUBY=0 \ - -DWITH_JAVA=1 \ - -DWITH_CSHARP=0 - - for RUBY in $(RUBYVERSIONS); do \ - dh_auto_configure --builddirectory=build-$$RUBY -- $(CMAKE_OPTS) \ - -DWITH_PYTHON=0 \ - -DWITH_PHP=0 \ - -DWITH_PERL=0 \ - -DWITH_RUBY=1 \ - -DWITH_JAVA=0 \ - -DWITH_CSHARP=0 \ - -DRUBY_EXECUTABLE=/usr/bin/$$RUBY \ - ; \ - done - + dh_auto_configure -- -DCMAKE_BUILD_TYPE=RelWithDebInfo \ + -DCMAKE_EXE_LINKER_FLAGS="$(LDFLAGS)" \ + -DCMAKE_MODULE_LINKER_FLAGS="$(LDFLAGS)" \ + -DCMAKE_SHARED_LINKER_FLAGS="$(LDFLAGS)" \ + -DCMAKE_INSTALL_PREFIX=/usr \ + -DCMAKE_VERBOSE_MAKEFILE=1 \ + -DINSTALL_LIB_DIR="/usr/lib/$(DEB_HOST_MULTIARCH)" \ + -DWITH_PROJ=1 \ + -DWITH_KML=1 \ + -DWITH_SOS=1 \ + -DWITH_WMS=1 \ + -DWITH_FRIBIDI=1 \ + -DWITH_HARFBUZZ=1 \ + -DWITH_ICONV=1 \ + -DWITH_CAIRO=1 \ + -DWITH_SVGCAIRO=0 \ + -DWITH_RSVG=1 \ + -DWITH_MYSQL=0 \ + -DWITH_FCGI=1 \ + -DWITH_GEOS=1 \ + -DWITH_POSTGIS=1 \ + -DWITH_GDAL=1 \ + -DWITH_OGR=1 \ + -DWITH_CURL=1 \ + -DWITH_CLIENT_WMS=1 \ + -DWITH_CLIENT_WFS=1 \ + -DWITH_WFS=1 \ + -DWITH_WCS=1 \ + -DWITH_LIBXML2=1 \ + -DWITH_THREAD_SAFETY=1 \ + -DWITH_GIF=1 \ + -DWITH_ORACLESPATIAL=0 \ + -DWITH_ORACLE_PLUGIN=0 \ + -DWITH_MSSQL2008=0 \ + -DWITH_EXEMPI=0 \ + -DWITH_XMLMAPFILE=0 \ + -DWITH_V8=0 \ + -DWITH_PIXMAN=0 \ + -DWITH_PYTHON=1 \ + -DWITH_PHP=1 \ + -DWITH_PHPNG=1 \ + -DWITH_PERL=1 \ + -DWITH_RUBY=0 \ + -DWITH_JAVA=1 \ + -DWITH_CSHARP=0 override_dh_auto_build: # Create man pages from DocBook XML @@ -112,55 +95,31 @@ dh_auto_build - for RUBY in $(RUBYVERSIONS); do \ - dh_auto_build --builddirectory=build-$$RUBY ; \ - done - override_dh_auto_test: # msautotest submodule is not used override_dh_auto_install: dh_auto_install - for RUBY in $(RUBYVERSIONS); do \ - dh_auto_install --builddirectory=build-$$RUBY --destdir=debian/tmp-$$RUBY ; \ - mkdir -p debian/tmp/`$$RUBY -r rbconfig -e "print RbConfig::CONFIG['vendorarchdir']"` ; \ - mv -v debian/tmp-$$RUBY`$$RUBY -r rbconfig -e "print RbConfig::CONFIG['vendorarchdir']"`/mapscript.so \ - debian/tmp`$$RUBY -r rbconfig -e "print RbConfig::CONFIG['vendorarchdir']"`/ ; \ - done - - -mkdir -p $(CURDIR)/debian/tmp/usr/lib/$(DEB_HOST_MULTIARCH)/ - -mv -v $(CURDIR)/debian/tmp/usr/lib/libmapserver*.so* $(CURDIR)/debian/tmp/usr/lib/$(DEB_HOST_MULTIARCH)/ - -sed -i "s/lib\/libmapserver/lib\/$(DEB_HOST_MULTIARCH)\/libmapserver/g" $(CURDIR)/debian/tmp/usr/share/*/cmake/*.cmake - # removing embedded rpath in binaries -find $(CURDIR)/debian/tmp/usr/bin -type f -exec chrpath --delete {} \; # removing embedded rpath in libraries -find $(CURDIR)/debian/tmp/usr/lib -name "*.so*" -type f -exec chrpath --delete {} \; - # CGI mapserver - -mkdir -p debian/tmp/usr/lib/cgi-bin - install -m755 debian/tmp/usr/bin/mapserv debian/tmp/usr/lib/cgi-bin/mapserv - - # TODO: Use dh_php for substvars & mapscript.ini installation - # PHP mapscript - #echo 'misc:Depends=phpapi-'$(PHPAPI) >> debian/php-mapscript.substvars - - #-mkdir -p debian/tmp/etc/php/7.0/mods-available/ - #install -m644 debian/mapscript.ini debian/tmp/etc/php/7.0/mods-available/ - override_dh_installchangelogs: dh_installchangelogs HISTORY.TXT override_dh_installexamples: dh_installexamples - #-chmod a-x $(CURDIR)/debian/php-mapscript/usr/share/doc/php-mapscript/examples/*.phtml + -chmod a-x $(CURDIR)/debian/php-mapscript/usr/share/doc/php-mapscript/examples/*.phtml override_dh_install: dh_install --autodest --list-missing + $(RM) $(CURDIR)/debian/*/usr/lib/python*/*-packages/mapscript/tests/data/vera/* + override_dh_compress: dh_compress -X.xml -X.xsd -X.xsl @@ -177,5 +136,4 @@ dh_java -plibmapscript-java override_dh_strip: - dh_strip --dbg-package=libmapserver-dbg - + dh_strip --dbgsym-migration='libmapserver-dbg (<< 7.2.0~)' diff -Nru mapserver-7.0.7/debian/source/lintian-overrides mapserver-7.4.1/debian/source/lintian-overrides --- mapserver-7.0.7/debian/source/lintian-overrides 1970-01-01 00:00:00.000000000 +0000 +++ mapserver-7.4.1/debian/source/lintian-overrides 2019-07-25 16:00:00.000000000 +0000 @@ -0,0 +1,6 @@ +# Only a single Python version is supported during the build +python-foo-but-no-python3-foo python-mapscript + +# Not worth the effort +testsuite-autopkgtest-missing + diff -Nru mapserver-7.0.7/debian/source.lintian-overrides mapserver-7.4.1/debian/source.lintian-overrides --- mapserver-7.0.7/debian/source.lintian-overrides 2017-11-15 20:00:35.000000000 +0000 +++ mapserver-7.4.1/debian/source.lintian-overrides 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -# download.osgeo.org is not available via HTTPS -mapserver source: debian-watch-uses-insecure-uri * - -# Only a single Python version is supported during the build -mapserver source: python-foo-but-no-python3-foo python-mapscript - diff -Nru mapserver-7.0.7/debian/tests/control mapserver-7.4.1/debian/tests/control --- mapserver-7.0.7/debian/tests/control 2017-06-21 19:00:55.000000000 +0000 +++ mapserver-7.4.1/debian/tests/control 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ -# Test installability -Depends: @ -Test-Command: /bin/true diff -Nru mapserver-7.0.7/debian/watch mapserver-7.4.1/debian/watch --- mapserver-7.0.7/debian/watch 2017-05-09 20:13:10.000000000 +0000 +++ mapserver-7.4.1/debian/watch 2019-03-30 09:59:05.000000000 +0000 @@ -2,5 +2,5 @@ opts=\ dversionmangle=s/\+(debian|dfsg|ds|deb)\d*$//,\ uversionmangle=s/(\d)[_\.\-\+]?((RC|rc|pre|dev|beta|alpha)\d*)$/$1~$2/;s/RC/rc/;s/-/./g \ -http://download.osgeo.org/mapserver/ \ +https://download.osgeo.org/mapserver/ \ (?:.*/)?(?:rel|v|mapserver)[\-\_]?(\d\S+)\.(?:tgz|tbz|txz|(?:tar\.(?:gz|bz2|xz))) diff -Nru mapserver-7.0.7/fontcache.c mapserver-7.4.1/fontcache.c --- mapserver-7.0.7/fontcache.c 2017-11-15 19:24:35.000000000 +0000 +++ mapserver-7.4.1/fontcache.c 2019-07-12 12:05:08.000000000 +0000 @@ -46,6 +46,7 @@ ft_cache cache; }; ft_thread_cache *ft_caches; +int use_global_ft_cache; #else ft_cache global_ft_cache; #endif @@ -102,9 +103,12 @@ #ifndef USE_THREAD return &global_ft_cache; #else - void* nThreadId = msGetThreadId(); + void* nThreadId = 0; ft_thread_cache *prev = NULL, *cur = ft_caches; + if (!use_global_ft_cache) + nThreadId = msGetThreadId(); + if( cur != NULL && cur->thread_id == nThreadId ) return &cur->cache; @@ -155,6 +159,12 @@ ft_cache *c = msGetFontCache(); msInitFontCache(c); #else + char* use_global_cache = getenv("MS_USE_GLOBAL_FT_CACHE"); + if (use_global_cache) + use_global_ft_cache = atoi(use_global_cache); + else + use_global_ft_cache = 0; + ft_caches = NULL; #endif } @@ -202,15 +212,23 @@ if(!key) { key = MS_DEFAULT_FONT_KEY; } +#ifdef USE_THREAD + if (use_global_ft_cache) + msAcquireLock(TLOCK_TTF); +#endif UT_HASH_FIND_STR(cache->face_cache,key,fc); if(!fc) { - char *fontfile = NULL; + const char *fontfile = NULL; fc = msSmallCalloc(1,sizeof(face_element)); if(fontset && strcmp(key,MS_DEFAULT_FONT_KEY)) { fontfile = msLookupHashTable(&(fontset->fonts),key); if(!fontfile) { msSetError(MS_MISCERR, "Could not find font with key \"%s\" in fontset", "msGetFontFace()", key); free(fc); +#ifdef USE_THREAD + if (use_global_ft_cache) + msReleaseLock(TLOCK_TTF); +#endif return NULL; } error = FT_New_Face(cache->library,fontfile,0, &(fc->face)); @@ -220,6 +238,10 @@ if(error) { msSetError(MS_MISCERR, "Freetype was unable to load font file \"%s\" for key \"%s\"", "msGetFontFace()", fontfile, key); free(fc); +#ifdef USE_THREAD + if (use_global_ft_cache) + msReleaseLock(TLOCK_TTF); +#endif return NULL; } if(!fc->face->charmap) { @@ -231,7 +253,10 @@ fc->font = msStrdup(key); UT_HASH_ADD_KEYPTR(hh,cache->face_cache,fc->font, strlen(key), fc); } - +#ifdef USE_THREAD + if (use_global_ft_cache) + msReleaseLock(TLOCK_TTF); +#endif return fc; } @@ -271,6 +296,10 @@ ft_cache *cache = msGetFontCache(); memset(&key,0,sizeof(outline_element_key)); key.glyph = glyph; +#ifdef USE_THREAD + if (use_global_ft_cache) + msAcquireLock(TLOCK_TTF); +#endif UT_HASH_FIND(hh,face->outline_cache,&key, sizeof(outline_element_key),oc); if(!oc) { FT_Matrix matrix; @@ -284,9 +313,13 @@ matrix.xy = matrix.yx = 0x00000L; pen.x = pen.y = 0; FT_Set_Transform(face->face, &matrix, &pen); - error = FT_Load_Glyph(face->face,glyph->key.codepoint,FT_LOAD_DEFAULT/*|FT_LOAD_IGNORE_TRANSFORM*/|FT_LOAD_NO_HINTING|FT_LOAD_IGNORE_GLOBAL_ADVANCE_WIDTH); + error = FT_Load_Glyph(face->face,glyph->key.codepoint,FT_LOAD_DEFAULT|FT_LOAD_NO_BITMAP/*|FT_LOAD_IGNORE_TRANSFORM*/|FT_LOAD_NO_HINTING|FT_LOAD_IGNORE_GLOBAL_ADVANCE_WIDTH); if(error) { msSetError(MS_MISCERR, "unable to load glyph %ud for font \"%s\"", "msGetGlyphByIndex()",glyph->key.codepoint, face->font); +#ifdef USE_THREAD + if (use_global_ft_cache) + msReleaseLock(TLOCK_TTF); +#endif return NULL; } error = FT_Outline_New(cache->library, face->face->glyph->outline.n_points, @@ -295,5 +328,17 @@ oc->key = key; UT_HASH_ADD(hh,face->outline_cache,key,sizeof(outline_element_key), oc); } +#ifdef USE_THREAD + if (use_global_ft_cache) + msReleaseLock(TLOCK_TTF); +#endif return oc; } + +int msIsGlyphASpace(glyphObj *glyph) { + /* space or tab, for now */ + unsigned int space,tab; + space = msGetGlyphIndex(glyph->face,0x20); + tab = msGetGlyphIndex(glyph->face,0x9); + return glyph->glyph->key.codepoint == space || glyph->glyph->key.codepoint == tab; +} diff -Nru mapserver-7.0.7/fontcache.h mapserver-7.4.1/fontcache.h --- mapserver-7.0.7/fontcache.h 2017-11-15 19:24:35.000000000 +0000 +++ mapserver-7.4.1/fontcache.h 2019-07-12 12:05:08.000000000 +0000 @@ -80,6 +80,7 @@ glyph_element* msGetBitmapGlyph(rendererVTableObj *renderer, unsigned int size, unsigned int unicode); unsigned int msGetGlyphIndex(face_element *face, unsigned int unicode); glyph_element* msGetGlyphByIndex(face_element *face, unsigned int size, unsigned int codepoint); +int msIsGlyphASpace(glyphObj *glyph); #ifdef __cplusplus } diff -Nru mapserver-7.0.7/HISTORY.TXT mapserver-7.4.1/HISTORY.TXT --- mapserver-7.0.7/HISTORY.TXT 2017-11-15 19:24:35.000000000 +0000 +++ mapserver-7.4.1/HISTORY.TXT 2019-07-12 12:05:08.000000000 +0000 @@ -12,6 +12,94 @@ details about recent point releases, please see the online changelog at: http://mapserver.org/development/changelog/ +7.4.1 release (2019-7-12) +------------------------- + +- No major changes, see detailed changelog for bug fixes + +7.4.0 release (2019-5-14) +------------------------- + +- No major changes, see detailed changelog for bug fixes + +7.4.0-rc2 release (2019-5-10) +---------------------------- + +- No major changes, see detailed changelog for bug fixes + +7.4.0-rc1 release (2019-5-1) +---------------------------- + +- No major changes, see detailed changelog for bug fixes + +7.4.0-beta2 release (2019-4-17) +------------------------------- + +- Addresses XSS issue with [layers] template tag (fix available in 6.4, 7.0 and 7.2 branches as well) + +- Added Perl/Mapscript to Travis CI + +- No other major changes, see detailed changelog for bug fixes + +7.4.0-beta1 release (2019-3-29) +------------------------------- + +- Python MapScript binding is available as installable Wheels with a full test suite and examples + +- C# MapScript binding is now compatible with .NET Core + +- PHP 7 MapScript binding support - both PHP/MapScript and Swig/MapScript + +- Added workaround to allow compiling against Proj 6 (#5766) + +7.2.2 release (2019-2-19) +-------------------------- + +- No major changes, see detailed changelog for bug fixes + +7.2.1 release (2018-10-1) +-------------------------- + +- No major changes, see detailed changelog for bug fixes + +7.2.0 release (2018-07-23) +-------------------------- + +- Fixed issue with ring handling with polygons in MVT support (#5626) + +- No other major changes, see detailed changelog for bug fixes + +7.2.0-beta2 release (2018-6-13) + +- Update beta1 release notes to remove reference to PHP7 support + +- No other major changes, see detailed changelog for bug fixes + +7.2.0-beta1 release (2018-5-9) +-------------------- + +- Support for Enhanced Layer Metadata Management (RFC82) + +- Calculate MINDISTANCE from label bounds instead of label center (#5369) + +- Reposition follow labels on maxoverlapangle colisions (RFC112) + +- Implement chainable compositing filters (RFC113) + +- Faster retrieval of shape count (RFC114) + +- WMS layer groups are now requestable + +- Support C-style multi-line content types (#5362) + +- Python 3.x support (#5561) + +- Support Vendor-Specific OGC FILTER parameter in WMS requests (RFC118) + +- Mapbox Vector Tile (MVT) Support (RFC119) + +- INSPIRE download service support for WCS 2.0 (RFC120) + 7.0.0 release (2015/07/24) -------------------------- @@ -1630,7 +1718,7 @@ - Fixed a scalebar rounding problem causing to draw zero scalebar width (#2890) -- SLD: if it conatins a Filer Encoding tag, try to always set the +- SLD: if it contains a Filter Encoding tag, try to always set the layer's FILTER element (#2889) - Add support for rendering INLINE layers with layer attributes (items) (#2870) diff -Nru mapserver-7.0.7/INSTALL.CMAKE mapserver-7.4.1/INSTALL.CMAKE --- mapserver-7.0.7/INSTALL.CMAKE 2017-11-15 19:24:35.000000000 +0000 +++ mapserver-7.4.1/INSTALL.CMAKE 2019-07-12 12:05:08.000000000 +0000 @@ -147,7 +147,7 @@ - option(WITH_THREAD_SAFETY "Choose if a thread-safe version of libmapserver should be built (only recommended for some mapscripts)" OFF) - option(WITH_GIF "Enable GIF support (for PIXMAP loading)" ON) - option(WITH_PYTHON "Enable Python mapscript support" OFF) - - option(WITH_PHP "Enable Python mapscript support" OFF) + - option(WITH_PHP "Enable PHP mapscript support" OFF) - option(WITH_PERL "Enable Perl mapscript support" OFF) - option(WITH_RUBY "Enable Ruby mapscript support" OFF) - option(WITH_JAVA "Enable Java mapscript support" OFF) diff -Nru mapserver-7.0.7/kerneldensity.c mapserver-7.4.1/kerneldensity.c --- mapserver-7.0.7/kerneldensity.c 2017-11-15 19:24:35.000000000 +0000 +++ mapserver-7.4.1/kerneldensity.c 2019-07-12 12:05:08.000000000 +0000 @@ -84,7 +84,7 @@ int status,layer_idx, i,j, nclasses=0, have_sample=0; rectObj searchrect; shapeObj shape; - layerObj *layer; + layerObj *layer = NULL; float *values = NULL; int radius = 10, im_width = image->width, im_height = image->height; int expand_searchrect=1; diff -Nru mapserver-7.0.7/Makefile mapserver-7.4.1/Makefile --- mapserver-7.0.7/Makefile 2017-11-15 19:24:35.000000000 +0000 +++ mapserver-7.4.1/Makefile 2019-07-12 12:05:08.000000000 +0000 @@ -2,12 +2,14 @@ PHP_MAPSCRIPT=build/mapscript/php/php_mapscript.so PYTHON_MAPSCRIPT_PATH=build/mapscript/python JAVA_MAPSCRIPT_PATH=build/mapscript/java +CSHARP_MAPSCRIPT_PATH=build/mapscript/csharp +PERL_MAPSCRIPT_PATH=build/mapscript/perl BUILDPATH=../../build FLEX=flex YACC=yacc CMAKEFLAGS=-DCMAKE_C_FLAGS="--coverage" -DCMAKE_CXX_FLAGS="--coverage" \ -DCMAKE_SHARED_LINKER_FLAGS="-lgcov" -DWITH_CLIENT_WMS=1 \ - -DWITH_CLIENT_WFS=1 -DWITH_KML=1 -DWITH_SOS=1 -DWITH_PHP=1 \ + -DWITH_CLIENT_WFS=1 -DWITH_KML=1 -DWITH_SOS=1 -DWITH_CSHARP=1 -DWITH_PHP=1 -DWITH_PERL=1 \ -DWITH_PYTHON=1 -DWITH_JAVA=1 -DWITH_THREAD_SAFETY=1 -DWITH_FRIBIDI=1 -DWITH_FCGI=0 -DWITH_EXEMPI=1 \ -DCMAKE_BUILD_TYPE=Release -DWITH_RSVG=1 -DWITH_CURL=1 -DWITH_HARFBUZZ=1 -DWITH_POINT_Z_M=1 all: cmakebuild @@ -37,16 +39,35 @@ mspython-testcase: test -f "$(PYTHON_MAPSCRIPT_PATH)/_mapscript.so" && (export PYTHONPATH="../../$(PYTHON_MAPSCRIPT_PATH)" && cd msautotest/mspython && python run_all_tests.py) +mspython-wheel: + cd build && cmake --build . --target pythonmapscript-wheel + php-testcase: test -f "$(PHP_MAPSCRIPT)" && (export PHP_MAPSCRIPT_SO="../../$(PHP_MAPSCRIPT)" && cd msautotest/php && ./run_test.sh) java-testcase: test -d "$(JAVA_MAPSCRIPT_PATH)" && (export JAVA_MAPSCRIPT_SO="../../$(JAVA_MAPSCRIPT_PATH)" && cd mapscript/java && ./run_test.sh) +csharp-testcase: + test -d "$(CSHARP_MAPSCRIPT_PATH)" && (export CSHARP_MAPSCRIPT_SO="../../$(CSHARP_MAPSCRIPT_PATH)" && cd mapscript/csharp && ./run_test.sh) + +perl-testcase: + cd "$(PERL_MAPSCRIPT_PATH)" \ + && PERL5LIB=`pwd` \ + && prove tests \ + && perl examples/RFC24.pl ../../../tests/test.map \ + && perl examples/shp_in_shp.pl --infile1 ../../../tests/line.shp --infile1_shpid 0 --infile2 ../../../tests/polygon.shp --infile2_shpid 0 \ + && perl examples/dump.pl --file ../../../tests/line.shp \ + && perl examples/thin.pl --input ../../../tests/polygon --output examples/junk --tolerance=5 + + + test: cmakebuild @$(MAKE) $(MFLAGS) wxs-testcase renderers-testcase misc-testcase gdal-testcase query-testcase mspython-testcase @./print-test-results.sh @$(MAKE) $(MFLAGS) php-testcase + @$(MAKE) $(MFLAGS) csharp-testcase + @$(MAKE) $(MFLAGS) perl-testcase lexer: maplexer.c diff -Nru mapserver-7.0.7/mapagg.cpp mapserver-7.4.1/mapagg.cpp --- mapserver-7.0.7/mapagg.cpp 2017-11-15 19:24:35.000000000 +0000 +++ mapserver-7.4.1/mapagg.cpp 2019-07-12 12:05:08.000000000 +0000 @@ -1333,15 +1333,10 @@ #endif } -rasterBufferObj* msApplyFilterToRasterBuffer(const rasterBufferObj *rb, CompositingFilter *filter) { - rasterBufferObj *rbret = (rasterBufferObj*)msSmallCalloc(sizeof(rasterBufferObj),1); - msCopyRasterBuffer(rbret,rb); - rendering_buffer b(rbret->data.rgba.pixels, rbret->width, rbret->height, rbret->data.rgba.row_step); +void msApplyBlurringCompositingFilter(rasterBufferObj *rb, unsigned int radius) { + rendering_buffer b(rb->data.rgba.pixels, rb->width, rb->height, rb->data.rgba.row_step); pixel_format pf(b); - /* for now, we only support a blurring filter */ - int radius = atoi(filter->filter); mapserver::stack_blur_rgba32(pf,radius,radius); - return rbret; } int msPopulateRendererVTableAGG(rendererVTableObj * renderer) diff -Nru mapserver-7.0.7/mapcairo.c mapserver-7.4.1/mapcairo.c --- mapserver-7.0.7/mapcairo.c 2017-11-15 19:24:35.000000000 +0000 +++ mapserver-7.4.1/mapcairo.c 2019-07-12 12:05:08.000000000 +0000 @@ -1017,6 +1017,7 @@ struct svg_symbol_cache *svg_cache; symbolStyleObj pixstyle; symbolObj pixsymbol; + int status; if(MS_SUCCESS != msPreloadSVGSymbol(symbol)) return MS_FAILURE; @@ -1084,10 +1085,9 @@ pixsymbol.pixmap_buffer = svg_cache->pixmap_buffer; pixsymbol.type = MS_SYMBOL_PIXMAP; - if(MS_SUCCESS != MS_IMAGE_RENDERER(img)->renderPixmapSymbol(img,x,y,&pixsymbol,&pixstyle)) - return MS_FAILURE; + status = MS_IMAGE_RENDERER(img)->renderPixmapSymbol(img,x,y,&pixsymbol,&pixstyle); MS_IMAGE_RENDERER(img)->freeSymbol(&pixsymbol); - return MS_SUCCESS; + return status; #else msSetError(MS_MISCERR, "SVG Symbols requested but MapServer is not built with libsvgcairo", "renderSVGSymbolCairo()"); diff -Nru mapserver-7.0.7/mapcluster.c mapserver-7.4.1/mapcluster.c --- mapserver-7.0.7/mapcluster.c 2017-11-15 19:24:35.000000000 +0000 +++ mapserver-7.4.1/mapcluster.c 2019-07-12 12:05:08.000000000 +0000 @@ -64,6 +64,10 @@ #define SPLITRATIO 0.55 #define TREE_MAX_DEPTH 10 +/* cluster algorithm */ +#define MSCLUSTER_ALGORITHM_FULL 0 +#define MSCLUSTER_ALGORITHM_SIMPLE 1 + /* cluster data */ struct cluster_info { double x; /* x position of the current point */ @@ -135,6 +139,8 @@ clusterCompareRegionFunc fnCompare; /* diagnostics */ int depth; + /* processing algorithm */ + int algorithm; }; @@ -438,6 +444,50 @@ } } +/* traverse the quadtree to find the neighbouring clusters and update data on the cluster*/ +static void findRelatedShapes2(msClusterLayerInfo* layerinfo, + clusterTreeNode *node, clusterInfo* current) +{ + int i; + clusterInfo* s; + + /* -------------------------------------------------------------------- */ + /* Does this node overlap the area of interest at all? If not, */ + /* return without adding to the list at all. */ + /* -------------------------------------------------------------------- */ + if(!msRectOverlap(&node->rect, ¤t->bounds)) + return; + + /* Modify the feature count of the related shapes */ + s = node->shapes; + while (s) { + if (layerinfo->fnCompare(s, current)) { + if (layerinfo->rank > 0) { + double r = (current->x - s->x) * (current->x - s->x) + (current->y - s->y) * (current->y - s->y); + if (r < layerinfo->rank) { + layerinfo->current = s; + layerinfo->rank = r; + } + } + else { + /* no rank was specified, return immediately */ + layerinfo->current = s; + return; + } + } + s = s->next; + } + + if (node->subnode[0] == NULL) + return; + + /* Recurse to subnodes if they exist */ + for (i = 0; i < 4; i++) { + if (node->subnode[i]) + findRelatedShapes2(layerinfo, node->subnode[i], current); + } +} + /* traverse the quadtree to find the neighbouring shapes and update some data on the related shapes (when removing a feature) */ static void findRelatedShapesRemove(msClusterLayerInfo* layerinfo, clusterTreeNode *node, clusterInfo* current) @@ -773,6 +823,72 @@ && !node->subnode[2] && !node->subnode[3]); } +/* collecting the cluster shapes, returns true if this subnode must be removed */ +static int collectClusterShapes2(layerObj* layer, msClusterLayerInfo* layerinfo, clusterTreeNode *node) +{ + int i; + clusterInfo* current = NULL; + clusterInfo* s; + + while (node->shapes) { + s = node->shapes; + /* removing from the list */ + node->shapes = s->next; + + InitShapeAttributes(layer, s); + + if (s->filter) { + s->next = layerinfo->finalized; + layerinfo->finalized = s; + ++layerinfo->numFinalized; + } else { + /* this shape is filtered */ + s->next = layerinfo->filtered; + layerinfo->filtered = s; + ++layerinfo->numFiltered; + } + + /* update the parameters of the related shapes if any */ + if (s->siblings) { + current = s->siblings; + while(current) { + UpdateShapeAttributes(layer, s, current); + + /* setting the average position to the cluster position */ + current->avgx = s->x; + current->avgy = s->y; + + if (current->next == NULL) { + if (layerinfo->get_all_shapes == MS_TRUE) { + /* insert the siblings into the finalization list */ + current->next = layerinfo->finalized; + layerinfo->finalized = s->siblings; + s->siblings = NULL; + } + break; + } + + current = current->next; + } + } + } + + /* Recurse to subnodes if they exist */ + for (i = 0; i < 4; i++) { + if (node->subnode[i] && collectClusterShapes2(layer, layerinfo, node->subnode[i])) { + /* placing this empty node to the finalization queue */ + node->subnode[i]->subnode[0] = layerinfo->finalizedNodes; + layerinfo->finalizedNodes = node->subnode[i]; + node->subnode[i] = NULL; + ++layerinfo->numFinalizedNodes; + } + } + + /* returns true is this subnode must be removed */ + return (!node->shapes && !node->subnode[0] && !node->subnode[1] + && !node->subnode[2] && !node->subnode[3]); +} + int selectClusterShape(layerObj* layer, long shapeindex) { int i; @@ -881,6 +997,7 @@ int status; clusterInfo* current; int depth; + char *pszProcessing; #ifdef USE_CLUSTER_EXTERNAL int layerIndex; #endif @@ -904,17 +1021,24 @@ layerinfo->current = layerinfo->finalized; /* restart */ + /* check whether the simplified algorithm was selected */ + pszProcessing = msLayerGetProcessingKey(layer, "CLUSTER_ALGORITHM"); + if(pszProcessing && !strncasecmp(pszProcessing,"SIMPLE",6)) + layerinfo->algorithm = MSCLUSTER_ALGORITHM_SIMPLE; + else + layerinfo->algorithm = MSCLUSTER_ALGORITHM_FULL; + /* check whether all shapes should be returned from a query */ if(msLayerGetProcessingKey(layer, "CLUSTER_GET_ALL_SHAPES") != NULL) layerinfo->get_all_shapes = MS_TRUE; else layerinfo->get_all_shapes = MS_FALSE; - /* check whether the location of the shapes should be preserved (no averaging) */ + /* check whether the location of the shapes should be preserved */ if(msLayerGetProcessingKey(layer, "CLUSTER_KEEP_LOCATIONS") != NULL) layerinfo->keep_locations = MS_TRUE; else - layerinfo->keep_locations = MS_FALSE; + layerinfo->keep_locations = MS_FALSE; /* check whether the maxdistance and the buffer parameters are specified in map units (scale independent clustering) */ @@ -1042,13 +1166,33 @@ if (layer->cluster.group.string) current->group = msClusterGetGroupText(&layer->cluster.group, ¤t->shape); - /*start a query for the related shapes */ - findRelatedShapes(layerinfo, layerinfo->root, current); - - /* add this shape to the tree */ - if (treeNodeAddShape(layerinfo, layerinfo->root, current, depth) != MS_SUCCESS) { - clusterInfoDestroyList(layerinfo, current); - return MS_FAILURE; + if (layerinfo->algorithm == MSCLUSTER_ALGORITHM_FULL) { + /*start a query for the related shapes */ + findRelatedShapes(layerinfo, layerinfo->root, current); + + /* add this shape to the tree */ + if (treeNodeAddShape(layerinfo, layerinfo->root, current, depth) != MS_SUCCESS) { + clusterInfoDestroyList(layerinfo, current); + return MS_FAILURE; + } + } + else if (layerinfo->algorithm == MSCLUSTER_ALGORITHM_SIMPLE) { + /* find a related cluster and try to assign */ + layerinfo->rank = 0; + layerinfo->current = NULL; + findRelatedShapes2(layerinfo, layerinfo->root, current); + if (layerinfo->current) { + /* store these points until all clusters are created */ + current->next = layerinfo->finalizedSiblings; + layerinfo->finalizedSiblings = current; + } + else { + /* if not found add this shape as a new cluster */ + if (treeNodeAddShape(layerinfo, layerinfo->root, current, depth) != MS_SUCCESS) { + clusterInfoDestroyList(layerinfo, current); + return MS_FAILURE; + } + } } if ((current = clusterInfoCreate(layerinfo)) == NULL) { @@ -1059,121 +1203,151 @@ clusterInfoDestroyList(layerinfo, current); - while (layerinfo->root) { + if (layerinfo->algorithm == MSCLUSTER_ALGORITHM_FULL) { + while (layerinfo->root) { #ifdef TESTCOUNT - int n; - double avgx, avgy; + int n; + double avgx, avgy; #endif - /* pick up the best cluster from the tree and do the finalization */ - /* the initial rank must be big enough */ - layerinfo->rank = (searchrect.maxx - searchrect.minx) * (searchrect.maxx - searchrect.minx) + - (searchrect.maxy - searchrect.miny) * (searchrect.maxy - searchrect.miny) + 1; - - layerinfo->current = NULL; - findBestCluster(layer, layerinfo, layerinfo->root); - - if (layerinfo->current == NULL) { - if (layer->debug >= MS_DEBUGLEVEL_VVV) - msDebug("Clustering terminated.\n"); - break; /* completed */ - } - - /* Update the feature count of the shape */ - InitShapeAttributes(layer, layerinfo->current); + /* pick up the best cluster from the tree and do the finalization */ + /* the initial rank must be big enough */ + layerinfo->rank = (searchrect.maxx - searchrect.minx) * (searchrect.maxx - searchrect.minx) + + (searchrect.maxy - searchrect.miny) * (searchrect.maxy - searchrect.miny) + 1; + + layerinfo->current = NULL; + findBestCluster(layer, layerinfo, layerinfo->root); + + if (layerinfo->current == NULL) { + if (layer->debug >= MS_DEBUGLEVEL_VVV) + msDebug("Clustering terminated.\n"); + break; /* completed */ + } - /* collecting the shapes of the cluster */ - collectClusterShapes(layerinfo, layerinfo->root, layerinfo->current); + /* Update the feature count of the shape */ + InitShapeAttributes(layer, layerinfo->current); + + /* collecting the shapes of the cluster */ + collectClusterShapes(layerinfo, layerinfo->root, layerinfo->current); - if (layer->debug >= MS_DEBUGLEVEL_VVV) { - msDebug("processing cluster %p: rank=%lf fcount=%d ncoll=%d nfin=%d nfins=%d nflt=%d bounds={%lf %lf %lf %lf}\n", layerinfo->current, layerinfo->rank, layerinfo->current->numsiblings + 1, + if (layer->debug >= MS_DEBUGLEVEL_VVV) { + msDebug("processing cluster %p: rank=%lf fcount=%d ncoll=%d nfin=%d nfins=%d nflt=%d bounds={%lf %lf %lf %lf}\n", layerinfo->current, layerinfo->rank, layerinfo->current->numsiblings + 1, layerinfo->current->numcollected, layerinfo->numFinalized, layerinfo->numFinalizedSiblings, layerinfo->numFiltered, layerinfo->current->bounds.minx, layerinfo->current->bounds.miny, layerinfo->current->bounds.maxx, layerinfo->current->bounds.maxy); - if (layerinfo->current->node) { - char pszBuffer[TREE_MAX_DEPTH + 1]; - clusterTreeNode* node = layerinfo->current->node; - int position = node->position; - int i = 1; - while (position > 0 && i <= TREE_MAX_DEPTH) { - pszBuffer[TREE_MAX_DEPTH - i] = '0' + (position % 4); - position = position >> 2; - ++i; - } - pszBuffer[TREE_MAX_DEPTH] = 0; - - msDebug(" ->node %p: count=%d index=%d pos=%s subn={%p %p %p %p} rect={%lf %lf %lf %lf}\n", - node, node->numshapes, node->index, pszBuffer + TREE_MAX_DEPTH - i + 1, - node->subnode[0], node->subnode[1], node->subnode[2], node->subnode[3], + if (layerinfo->current->node) { + char pszBuffer[TREE_MAX_DEPTH + 1]; + clusterTreeNode* node = layerinfo->current->node; + int position = node->position; + int i = 1; + while (position > 0 && i <= TREE_MAX_DEPTH) { + pszBuffer[TREE_MAX_DEPTH - i] = '0' + (position % 4); + position = position >> 2; + ++i; + } + pszBuffer[TREE_MAX_DEPTH] = 0; + + msDebug(" ->node %p: count=%d index=%d pos=%s subn={%p %p %p %p} rect={%lf %lf %lf %lf}\n", + node, node->numshapes, node->index, pszBuffer + TREE_MAX_DEPTH - i + 1, + node->subnode[0], node->subnode[1], node->subnode[2], node->subnode[3], node->rect.minx, node->rect.miny, node->rect.maxx, node->rect.maxy); + } } - } #ifdef TESTCOUNT - avgx = layerinfo->current->x; - avgy = layerinfo->current->y; - n = 0; + avgx = layerinfo->current->x; + avgy = layerinfo->current->y; + n = 0; #endif - if (layerinfo->current->numsiblings > 0) { - /* update the parameters due to the shape removal */ - findRelatedShapesRemove(layerinfo, layerinfo->root, layerinfo->current); - - if (layerinfo->current->filter == 0) { - /* filtered shapes has no siblings */ - layerinfo->current->numsiblings = 0; - layerinfo->current->avgx = layerinfo->current->x; - layerinfo->current->avgy = layerinfo->current->y; - } + if (layerinfo->current->numsiblings > 0) { + /* update the parameters due to the shape removal */ + findRelatedShapesRemove(layerinfo, layerinfo->root, layerinfo->current); + + if (layerinfo->current->filter == 0) { + /* filtered shapes has no siblings */ + layerinfo->current->numsiblings = 0; + layerinfo->current->avgx = layerinfo->current->x; + layerinfo->current->avgy = layerinfo->current->y; + } - /* update the parameters of the related shapes if any */ - if (layerinfo->finalizedSiblings) { - current = layerinfo->finalizedSiblings; - while(current) { - /* update the parameters due to the shape removal */ - findRelatedShapesRemove(layerinfo, layerinfo->root, current); - UpdateShapeAttributes(layer, layerinfo->current, current); + /* update the parameters of the related shapes if any */ + if (layerinfo->finalizedSiblings) { + current = layerinfo->finalizedSiblings; + while(current) { + /* update the parameters due to the shape removal */ + findRelatedShapesRemove(layerinfo, layerinfo->root, current); + UpdateShapeAttributes(layer, layerinfo->current, current); #ifdef TESTCOUNT - avgx += current->x; - avgy += current->y; - ++n; + avgx += current->x; + avgy += current->y; + ++n; #endif - /* setting the average position to the same value */ - current->avgx = layerinfo->current->avgx; - current->avgy = layerinfo->current->avgy; - - if (current->next == NULL) { - if (layerinfo->get_all_shapes == MS_TRUE) { - /* insert the siblings into the finalization list */ - current->next = layerinfo->finalized; - layerinfo->finalized = layerinfo->finalizedSiblings; - } else { + /* setting the average position to the same value */ + current->avgx = layerinfo->current->avgx; + current->avgy = layerinfo->current->avgy; + + if (current->next == NULL) { + if (layerinfo->get_all_shapes == MS_TRUE) { + /* insert the siblings into the finalization list */ + current->next = layerinfo->finalized; + layerinfo->finalized = layerinfo->finalizedSiblings; + } else { /* preserve the clustered siblings for later use */ - layerinfo->current->siblings = layerinfo->finalizedSiblings; + layerinfo->current->siblings = layerinfo->finalizedSiblings; + } + break; } - break; + + current = current->next; } - current = current->next; + layerinfo->finalizedSiblings = NULL; } - - layerinfo->finalizedSiblings = NULL; } - } #ifdef TESTCOUNT - avgx /= (n + 1); - avgy /= (n + 1); + avgx /= (n + 1); + avgy /= (n + 1); - if (layerinfo->current->numsiblings != n) - layerinfo->current->numsiblings = n; + if (layerinfo->current->numsiblings != n) + layerinfo->current->numsiblings = n; - if (fabs(layerinfo->current->avgx - avgx) / avgx > 0.000000001 || - fabs(layerinfo->current->avgy - avgy) / avgy > 0.000000001) { - layerinfo->current->avgx = avgx; - layerinfo->current->avgy = avgy; - } + if (fabs(layerinfo->current->avgx - avgx) / avgx > 0.000000001 || + fabs(layerinfo->current->avgy - avgy) / avgy > 0.000000001) { + layerinfo->current->avgx = avgx; + layerinfo->current->avgy = avgy; + } #endif + } + } + else if (layerinfo->algorithm == MSCLUSTER_ALGORITHM_SIMPLE) { + /* assingn stired points to clusters */ + while (layerinfo->finalizedSiblings) { + current = layerinfo->finalizedSiblings; + layerinfo->rank = maxDistanceX * maxDistanceX + maxDistanceY * maxDistanceY; + layerinfo->current = NULL; + findRelatedShapes2(layerinfo, layerinfo->root, current); + if (layerinfo->current) { + clusterInfo* s = layerinfo->current; + /* found a matching cluster */ + ++s->numsiblings; + /* assign to cluster */ + layerinfo->finalizedSiblings = current->next; + current->next = s->siblings; + s->siblings = current; + } + else { + /* this appears to be a bug */ + layerinfo->finalizedSiblings = current->next; + current->next = layerinfo->filtered; + layerinfo->filtered = current; + ++layerinfo->numFiltered; + } + } + + /* collecting the shapes of the cluster */ + collectClusterShapes2(layer, layerinfo, layerinfo->root); } /* set the pointer to the first shape */ @@ -1560,6 +1734,7 @@ vtable->LayerWhichShapes = msClusterLayerWhichShapes; vtable->LayerNextShape = msClusterLayerNextShape; vtable->LayerGetShape = msClusterLayerGetShape; + /* layer->vtable->LayerGetShapeCount, use default */ vtable->LayerClose = msClusterLayerClose; diff -Nru mapserver-7.0.7/mapcompositingfilter.c mapserver-7.4.1/mapcompositingfilter.c --- mapserver-7.0.7/mapcompositingfilter.c 1970-01-01 00:00:00.000000000 +0000 +++ mapserver-7.4.1/mapcompositingfilter.c 2019-07-12 12:05:08.000000000 +0000 @@ -0,0 +1,223 @@ +/****************************************************************************** + * + * Project: MapServer + * Purpose: RFC 113 Layer compositing + * Author: Thomas Bonfort and the MapServer team. + * + ****************************************************************************** + * Copyright (c) 1996-2015 Regents of the University of Minnesota. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies of this Software or works derived from this Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + *****************************************************************************/ +#include "mapserver.h" +#include +#define pixmove(rb,srcx,srcy,dstx,dsty) \ + memcpy(rb->data.rgba.pixels+dsty*rb->data.rgba.row_step+dstx*4,\ + rb->data.rgba.pixels+srcy*rb->data.rgba.row_step+srcx*4,\ + 4) +#define pixerase(rb,x,y) memset(rb->data.rgba.pixels+y*rb->data.rgba.row_step+x*4,0,4) + +void msApplyTranslationCompositingFilter(rasterBufferObj *rb, int xtrans, int ytrans) { + int src_sx,src_sy,dst_sx,dst_sy,x,y,dst_x,dst_y; + if(abs(xtrans)>=rb->width || abs(ytrans)>=rb->height) { + for(y = 0; yheight; y++) + for(x = 0; xwidth; x++) + pixerase(rb,x,y); + } + if(xtrans == 0 && ytrans == 0) + return; + if(xtrans>=0) { + if(ytrans>=0) { + src_sx = rb->width - xtrans - 1; + src_sy = rb->height - ytrans - 1; + dst_sx = rb->width - 1; + dst_sy = rb->height -1; + for(y = src_sy,dst_y= dst_sy;y>=0;y--,dst_y--) { + for(x = src_sx,dst_x= dst_sx;x>=0;x--,dst_x--) { + pixmove(rb,x,y,dst_x,dst_y); + } + } + for(y=0;ywidth;x++) + pixerase(rb,x,y); + for(y=ytrans;yheight;y++) + for(x=0;xwidth - xtrans - 1; + src_sy = - ytrans; + dst_sx = rb->width - 1; + dst_sy = 0; + for(y = src_sy,dst_y= dst_sy;yheight;y++,dst_y++) { + for(x = src_sx,dst_x= dst_sx;x>=0;x--,dst_x--) { + pixmove(rb,x,y,dst_x,dst_y); + } + } + for(y=0;yheight+ytrans;y++) + for(x=0;xheight+ytrans;yheight;y++) + for(x=0;xwidth;x++) + pixerase(rb,x,y); + } + } else { + if(ytrans>=0) { + src_sx = - xtrans; + src_sy = rb->height - ytrans - 1; + dst_sx = 0; + dst_sy = rb->height -1; + for(y = src_sy,dst_y= dst_sy;y>=0;y--,dst_y--) { + for(x = src_sx,dst_x= dst_sx;xwidth;x++,dst_x++) { + pixmove(rb,x,y,dst_x,dst_y); + } + } + for(y=0;ywidth;x++) + pixerase(rb,x,y); + for(y=ytrans;yheight;y++) + for(x=rb->width+xtrans;xwidth;x++) + pixerase(rb,x,y); + } else { + src_sx = - xtrans; + src_sy = - ytrans; + dst_sx = 0; + dst_sy = 0; + for(y = src_sy,dst_y= dst_sy;yheight;y++,dst_y++) { + for(x = src_sx,dst_x= dst_sx;xwidth;x++,dst_x++) { + pixmove(rb,x,y,dst_x,dst_y); + } + } + for(y=0;yheight+ytrans;y++) + for(x=rb->width+xtrans;xwidth;x++) + pixerase(rb,x,y); + for(y=rb->height+ytrans;yheight;y++) + for(x=0;xwidth;x++) + pixerase(rb,x,y); + } + } +} + +void msApplyBlackeningCompositingFilter(rasterBufferObj *rb) { + int row,col; + unsigned char *r,*g,*b; + for(row=0;rowheight;row++) { + r = rb->data.rgba.r + row*rb->data.rgba.row_step; + g = rb->data.rgba.g + row*rb->data.rgba.row_step; + b = rb->data.rgba.b + row*rb->data.rgba.row_step; + for(col=0;colwidth;col++) { + *r = *g = *b = 0; + r+=4;g+=4;b+=4; + } + } +} + +void msApplyWhiteningCompositingFilter(rasterBufferObj *rb) { + int row,col; + unsigned char *r,*g,*b,*a; + for(row=0;rowheight;row++) { + r = rb->data.rgba.r + row*rb->data.rgba.row_step; + g = rb->data.rgba.g + row*rb->data.rgba.row_step; + b = rb->data.rgba.b + row*rb->data.rgba.row_step; + a = rb->data.rgba.a + row*rb->data.rgba.row_step; + for(col=0;colwidth;col++) { + *r = *g = *b = *a; + r+=4;g+=4;b+=4;a+=4; + } + } +} + +void msApplyGrayscaleCompositingFilter(rasterBufferObj *rb) { + int row,col; + unsigned char *r,*g,*b; + for(row=0;rowheight;row++) { + r = rb->data.rgba.r + row*rb->data.rgba.row_step; + g = rb->data.rgba.g + row*rb->data.rgba.row_step; + b = rb->data.rgba.b + row*rb->data.rgba.row_step; + for(col=0;colwidth;col++) { + unsigned int mix = (unsigned int)*r + (unsigned int)*g + (unsigned int)*b; + mix /=3; + *r = *g = *b = (unsigned char)mix; + r+=4;g+=4;b+=4; + } + } +} + +int msApplyCompositingFilter(mapObj *map, rasterBufferObj *rb, CompositingFilter *filter) { + int rstatus; + regex_t regex; + regmatch_t pmatch[3]; + + /* test for blurring filter */ + regcomp(®ex, "blur\\(([0-9]+)\\)", REG_EXTENDED); + rstatus = regexec(®ex, filter->filter, 2, pmatch, 0); + regfree(®ex); + if(!rstatus) { + char *rad = malloc(pmatch[1].rm_eo - pmatch[1].rm_so + 1); + unsigned int irad; + strncpy(rad,filter->filter+pmatch[1].rm_so,pmatch[1].rm_eo-pmatch[1].rm_so); + rad[pmatch[1].rm_eo - pmatch[1].rm_so]=0; + //msDebug("got blur filter with radius %s\n",rad); + irad = atoi(rad); + free(rad); + irad = MS_NINT(irad*map->resolution/map->defresolution); + msApplyBlurringCompositingFilter(rb,irad); + return MS_SUCCESS; + } + + /* test for translation filter */ + regcomp(®ex, "translate\\((-?[0-9]+),(-?[0-9]+)\\)", REG_EXTENDED); + rstatus = regexec(®ex, filter->filter, 3, pmatch, 0); + regfree(®ex); + if(!rstatus) { + char *num; + int xtrans,ytrans; + num = malloc(pmatch[1].rm_eo - pmatch[1].rm_so + 1); + strncpy(num,filter->filter+pmatch[1].rm_so,pmatch[1].rm_eo-pmatch[1].rm_so); + num[pmatch[1].rm_eo - pmatch[1].rm_so]=0; + xtrans = atoi(num); + free(num); + num = malloc(pmatch[2].rm_eo - pmatch[2].rm_so + 1); + strncpy(num,filter->filter+pmatch[2].rm_so,pmatch[2].rm_eo-pmatch[2].rm_so); + num[pmatch[2].rm_eo - pmatch[2].rm_so]=0; + ytrans = atoi(num); + free(num); + //msDebug("got translation filter of radius %d,%d\n",xtrans,ytrans); + xtrans = MS_NINT(xtrans*map->resolution/map->defresolution); + ytrans = MS_NINT(ytrans*map->resolution/map->defresolution); + msApplyTranslationCompositingFilter(rb,xtrans,ytrans); + return MS_SUCCESS; + } + + /* test for grayscale filter */ + if(!strncmp(filter->filter,"grayscale()",strlen("grayscale()"))) { + msApplyGrayscaleCompositingFilter(rb); + return MS_SUCCESS; + } + if(!strncmp(filter->filter,"blacken()",strlen("blacken()"))) { + msApplyBlackeningCompositingFilter(rb); + return MS_SUCCESS; + } + if(!strncmp(filter->filter,"whiten()",strlen("whiten()"))) { + msApplyWhiteningCompositingFilter(rb); + return MS_SUCCESS; + } + + msSetError(MS_MISCERR,"unknown compositing filter (%s)", "msApplyCompositingFilter()", filter->filter); + return MS_FAILURE; +} diff -Nru mapserver-7.0.7/mapcontext.c mapserver-7.4.1/mapcontext.c --- mapserver-7.0.7/mapcontext.c 2017-11-15 19:24:35.000000000 +0000 +++ mapserver-7.4.1/mapcontext.c 2019-07-12 12:05:08.000000000 +0000 @@ -264,7 +264,8 @@ char *pszXMLName, char *pszMetadataName, char *pszHashDelimiter) { - char *pszHash, *pszXMLValue, *pszMetadata; + const char *pszHash, *pszXMLValue; + char *pszMetadata; if(psRoot == NULL || psRoot->psChild == NULL || metadata == NULL || pszMetadataName == NULL || pszXMLName == NULL) @@ -350,7 +351,9 @@ */ int msLoadMapContextLayerFormat(CPLXMLNode *psFormat, layerObj *layer) { - char *pszValue, *pszValue1, *pszHash; + const char *pszValue; + char *pszValue1; + const char* pszHash; if(psFormat->psChild != NULL && strcasecmp(psFormat->pszValue, "Format") == 0 ) { @@ -442,7 +445,9 @@ int nStyle) { char *pszValue, *pszValue1, *pszValue2; - char *pszHash, *pszStyle=NULL, *pszStyleName; + const char *pszHash; + char* pszStyle=NULL; + char *pszStyleName; CPLXMLNode *psStyleSLDBody; pszStyleName =(char*)CPLGetXMLValue(psStyle,"Name",NULL); @@ -576,7 +581,8 @@ int msLoadMapContextLayerDimension(CPLXMLNode *psDimension, layerObj *layer) { - char *pszValue, *pszHash; + char *pszValue; + const char *pszHash; char *pszDimension=NULL, *pszDimensionName=NULL; pszDimensionName =(char*)CPLGetXMLValue(psDimension,"name",NULL); @@ -805,7 +811,8 @@ { char *pszProj=NULL; char *pszValue; - char *pszHash, *pszName=NULL; + const char *pszHash; + char *pszName=NULL; CPLXMLNode *psFormatList, *psFormat, *psStyleList, *psStyle, *psExtension; CPLXMLNode *psDimensionList, *psDimension; int nStyle; @@ -1302,9 +1309,10 @@ int msWriteMapContext(mapObj *map, FILE *stream) { #if defined(USE_WMS_LYR) && defined(USE_OGR) - const char * version, *value; - char * tabspace=NULL, *pszValue, *pszChar,*pszSLD=NULL,*pszURL,*pszSLD2=NULL; - char *pszStyle, *pszCurrent, *pszStyleItem, *pszSLDBody; + const char * version; + char *pszEPSG; + char * tabspace=NULL, *pszChar,*pszSLD=NULL,*pszURL,*pszSLD2=NULL; + char *pszStyle, *pszStyleItem, *pszSLDBody; char *pszEncodedVal; int i, nValue, nVersion=OWS_VERSION_NOTSET; /* Dimension element */ @@ -1407,18 +1415,19 @@ if(tabspace) free(tabspace); tabspace = msStrdup(" "); - value = msOWSGetEPSGProj(&(map->projection), &(map->web.metadata), "MO", MS_TRUE); + msOWSGetEPSGProj(&(map->projection), &(map->web.metadata), "MO", MS_TRUE, &pszEPSG); msIO_fprintf( stream, "%s\n", tabspace ); - if(!value || (strcasecmp(value, "(null)") == 0)) + if(!pszEPSG || (strcasecmp(pszEPSG, "(null)") == 0)) msIO_fprintf(stream, "\n"); - pszEncodedVal = msEncodeHTMLEntities(value); + pszEncodedVal = msEncodeHTMLEntities(pszEPSG); msIO_fprintf( stream, "%s\n", tabspace, pszEncodedVal, map->extent.minx, map->extent.miny, map->extent.maxx, map->extent.maxy ); msFree(pszEncodedVal); + msFree(pszEPSG); /* Title, name */ if( nVersion >= OWS_0_1_7 && nVersion < OWS_1_0_0 ) { @@ -1441,7 +1450,7 @@ char **papszKeywords; int nKeywords, iKey; - pszValue = msLookupHashTable(&(map->web.metadata), + const char* pszValue = msLookupHashTable(&(map->web.metadata), "wms_keywordlist"); papszKeywords = msStringSplit(pszValue, ',', &nKeywords); if(nKeywords > 0 && papszKeywords) { @@ -1509,6 +1518,9 @@ /* Loop on all layer */ for(i=0; inumlayers; i++) { if(GET_LAYER(map, i)->status != MS_DELETE && GET_LAYER(map, i)->connectiontype == MS_WMS) { + const char* pszValue; + char* pszValueMod; + const char* pszCurrent; if(GET_LAYER(map, i)->status == MS_OFF) nValue = 1; else @@ -1547,21 +1559,21 @@ /* Get base url of the online resource to be the default value */ if(GET_LAYER(map, i)->connection) - pszValue = msStrdup( GET_LAYER(map, i)->connection ); + pszValueMod = msStrdup( GET_LAYER(map, i)->connection ); else - pszValue = msStrdup( "" ); - pszChar = strchr(pszValue, '?'); + pszValueMod = msStrdup( "" ); + pszChar = strchr(pszValueMod, '?'); if( pszChar ) - pszValue[pszChar - pszValue] = '\0'; + pszValueMod[pszChar - pszValueMod] = '\0'; if(msOWSPrintEncodeMetadata(stream, &(GET_LAYER(map, i)->metadata), NULL, "wms_onlineresource", OWS_WARN, " \n", - pszValue) == OWS_WARN) + pszValueMod) == OWS_WARN) msIO_fprintf(stream, "\n"); msIO_fprintf(stream, " \n"); - if(pszValue) - free(pszValue); + if(pszValueMod) + free(pszValueMod); /* */ /* Layer information */ @@ -1625,14 +1637,15 @@ GET_LAYER(map, i)->maxscaledenom); /* Layer SRS */ - pszValue = (char*)msOWSGetEPSGProj(&(GET_LAYER(map, i)->projection), + msOWSGetEPSGProj(&(GET_LAYER(map, i)->projection), &(GET_LAYER(map, i)->metadata), - "MO", MS_FALSE); - if(pszValue && (strcasecmp(pszValue, "(null)") != 0)) { - pszEncodedVal = msEncodeHTMLEntities(pszValue); + "MO", MS_FALSE, &pszEPSG); + if(pszEPSG && (strcasecmp(pszEPSG, "(null)") != 0)) { + pszEncodedVal = msEncodeHTMLEntities(pszEPSG); msIO_fprintf(stream, " %s\n", pszEncodedVal); msFree(pszEncodedVal); } + msFree(pszEPSG); /* Format */ if(msLookupHashTable(&(GET_LAYER(map, i)->metadata),"wms_formatlist")==NULL && @@ -1642,17 +1655,17 @@ pszURL = msStrdup( GET_LAYER(map, i)->connection ); else pszURL = msStrdup( "" ); - pszValue = pszURL; - pszValue = strstr( pszValue, "FORMAT=" ); - if( pszValue ) { - pszValue += 7; - pszChar = strchr(pszValue, '&'); + pszValueMod = pszURL; + pszValueMod = strstr( pszValueMod, "FORMAT=" ); + if( pszValueMod ) { + pszValueMod += 7; + pszChar = strchr(pszValueMod, '&'); if( pszChar ) - pszValue[pszChar - pszValue] = '\0'; - if(strcasecmp(pszValue, "") != 0) { - pszEncodedVal = msEncodeHTMLEntities(pszValue); + pszValueMod[pszChar - pszValueMod] = '\0'; + if(strcasecmp(pszValueMod, "") != 0) { + pszEncodedVal = msEncodeHTMLEntities(pszValueMod); msIO_fprintf( stream, " \n"); - msIO_fprintf(stream," %s\n",pszValue); + msIO_fprintf(stream," %s\n",pszValueMod); msIO_fprintf( stream, " \n"); msFree(pszEncodedVal); } @@ -1695,21 +1708,23 @@ /* First check the stylelist */ pszValue = msLookupHashTable(&(GET_LAYER(map, i)->metadata), "wms_stylelist"); - if(pszValue == NULL || strlen(msStringTrimLeft(pszValue)) < 1) { + while( pszValue && *pszValue == ' ' ) + pszValue ++; + if(pszValue == NULL || strlen(pszValue) < 1) { /* Check if the style is in the connection URL */ pszURL = ""; if(GET_LAYER(map, i)->connection) pszURL = msStrdup( GET_LAYER(map, i)->connection ); else pszURL = msStrdup( "" ); - pszValue = pszURL; + pszValueMod = pszURL; /* Grab the STYLES in the URL */ - pszValue = strstr( pszValue, "STYLES=" ); - if( pszValue ) { - pszValue += 7; - pszChar = strchr(pszValue, '&'); + pszValueMod = strstr( pszValueMod, "STYLES=" ); + if( pszValueMod ) { + pszValueMod += 7; + pszChar = strchr(pszValueMod, '&'); if( pszChar ) - pszValue[pszChar - pszValue] = '\0'; + pszValueMod[pszChar - pszValueMod] = '\0'; /* Check the SLD string from the URL */ if(GET_LAYER(map, i)->connection) @@ -1737,14 +1752,14 @@ pszSLDBody[pszChar - pszSLDBody] = '\0'; pszSLDBody += 9; } - if( (pszValue && (strcasecmp(pszValue, "") != 0)) || + if( (pszValueMod && (strcasecmp(pszValueMod, "") != 0)) || (pszSLD && (strcasecmp(pszSLD, "") != 0)) || (pszSLDBody && (strcasecmp(pszSLDBody, "") != 0))) { /* Write Name and Title */ msIO_fprintf( stream, " \n"); msIO_fprintf( stream, "