From de0ccf77b92cbbfc46a7ce60989ce6bb136fc4d2 Mon Sep 17 00:00:00 2001 From: Sandro Mani Date: Wed, 4 Mar 2020 16:12:19 +0100 Subject: [PATCH] Update to 7.4.3 --- .gitignore | 1 + mapserver-swig-4.0.1.patch | 204 +++++++++++++++++++++++++++++++++++++ mapserver.spec | 81 +++++++-------- sources | 2 +- 4 files changed, 242 insertions(+), 46 deletions(-) create mode 100644 mapserver-swig-4.0.1.patch diff --git a/.gitignore b/.gitignore index 3d2e3cc..6838f4b 100644 --- a/.gitignore +++ b/.gitignore @@ -13,3 +13,4 @@ /mapserver-208bb3a10fccdc9c1bdab175915072270abb1b45.tar.gz /mapserver-d5c22cd3113ba85f5b1f1c406fe4055f75d04ce3.tar.gz /mapserver-7fe9b2b9f74796731cba2f7f09c8f41875f020e4.tar.gz +/mapserver-7.4.3.tar.gz diff --git a/mapserver-swig-4.0.1.patch b/mapserver-swig-4.0.1.patch new file mode 100644 index 0000000..f7c967f --- /dev/null +++ b/mapserver-swig-4.0.1.patch @@ -0,0 +1,204 @@ +diff -rupN --no-dereference mapserver-rel-7-4-3/mapscript/csharp/swig_csharp_extensions.i mapserver-rel-7-4-3-new/mapscript/csharp/swig_csharp_extensions.i +--- mapserver-rel-7-4-3/mapscript/csharp/swig_csharp_extensions.i 2019-12-16 18:59:03.000000000 +0100 ++++ mapserver-rel-7-4-3-new/mapscript/csharp/swig_csharp_extensions.i 2020-03-03 18:55:31.278654827 +0100 +@@ -224,17 +224,20 @@ + } + %} + ++#if SWIG_VERSION < 0x040000 + %typemap(csfinalize) SWIGTYPE %{ + /* %typemap(csfinalize) SWIGTYPE */ + ~$csclassname() { + Dispose(); + } + %} ++#endif + + %typemap(csconstruct, excode=SWIGEXCODE) SWIGTYPE %{: this($imcall, true, null) {$excode + } + %} + ++#if SWIG_VERSION < 0x040000 + %typemap(csdestruct, methodname="Dispose", methodmodifiers="public") SWIGTYPE { + lock(this) { + if(swigCPtr.Handle != System.IntPtr.Zero && swigCMemOwn) { +@@ -246,6 +249,7 @@ + System.GC.SuppressFinalize(this); + } + } ++#endif + + %typemap(csdestruct_derived, methodname="Dispose", methodmodifiers="public") TYPE { + lock(this) { +diff -rupN --no-dereference mapserver-rel-7-4-3/mapscript/python/pyextend.i mapserver-rel-7-4-3-new/mapscript/python/pyextend.i +--- mapserver-rel-7-4-3/mapscript/python/pyextend.i 2019-12-16 18:59:03.000000000 +0100 ++++ mapserver-rel-7-4-3-new/mapscript/python/pyextend.i 2020-03-03 18:55:31.277654829 +0100 +@@ -13,6 +13,7 @@ + * + *****************************************************************************/ + ++ + /* fromstring: Factory for mapfile objects */ + + %pythoncode %{ +@@ -222,15 +223,13 @@ def fromstring(data, mappath=None): + } + } + +- def getItemDefinitions(self): +- return self._item_definitions ++ @property ++ def itemdefinitions(self): ++ return self._item_definitions + +- def setItemDefinitions(self, item_definitions): ++ @itemdefinitions.setter ++ def itemdefinitions(self, item_definitions): + self._item_definitions = item_definitions +- +- __swig_getmethods__["itemdefinitions"] = getItemDefinitions +- __swig_setmethods__["itemdefinitions"] = setItemDefinitions +- + %} + } + +@@ -426,25 +425,14 @@ def fromstring(data, mappath=None): + memcpy( *argout, self->pattern, sizeof(double) * *pnListSize); + } + +- void patternlength_set2(int patternlength) +- { +- msSetError(MS_MISCERR, "pattern is read-only", "patternlength_set()"); +- } + + %pythoncode %{ + +- __swig_setmethods__["patternlength"] = _mapscript.styleObj_patternlength_set2 +- __swig_getmethods__["patternlength"] = _mapscript.styleObj_patternlength_get +- if _newclass:patternlength = _swig_property(_mapscript.styleObj_patternlength_get, _mapscript.styleObj_patternlength_set2) +- +- __swig_setmethods__["pattern"] = _mapscript.styleObj_pattern_set +- __swig_getmethods__["pattern"] = _mapscript.styleObj_pattern_get +- if _newclass:pattern = _swig_property(_mapscript.styleObj_pattern_get, _mapscript.styleObj_pattern_set) +-%} ++pattern = property(pattern_get, pattern_set) + ++%} + } + +- + /****************************************************************************** + * Extensions to hashTableObj - add dict methods + *****************************************************************************/ +diff -rupN --no-dereference mapserver-rel-7-4-3/mapscript/python/pymodule.i mapserver-rel-7-4-3-new/mapscript/python/pymodule.i +--- mapserver-rel-7-4-3/mapscript/python/pymodule.i 2019-12-16 18:59:03.000000000 +0100 ++++ mapserver-rel-7-4-3-new/mapscript/python/pymodule.i 2020-03-03 18:55:31.277654829 +0100 +@@ -17,7 +17,7 @@ + *****************************************************************************/ + + /* Translates Python None to C NULL for strings */ +-%typemap(in,parse="z") char * ""; ++//%typemap(in,parse="z") char * ""; + + /* To support imageObj::getBytes */ + %typemap(out) gdBuffer { +@@ -210,33 +210,15 @@ MapServerError = _mapscript.MapServerErr + MapServerChildError = _mapscript.MapServerChildError + %} + +-/* The bogus "if 1:" is to introduce a new scope to work around indentation +- handling with pythonappend in different versions. (#3180) */ +-%feature("pythonappend") layerObj %{if 1: +- self.p_map=None +- try: +- # python 2.5 +- if args and len(args)!=0: +- self.p_map=args[0] +- except NameError: +- # python 2.6 +- if map: +- self.p_map=map +- %} +- +-/* The bogus "if 1:" is to introduce a new scope to work around indentation +- handling with pythonappend in different versions. (#3180) */ +-%feature("pythonappend") classObj %{if 1: +- self.p_layer =None +- try: +- # python 2.5 +- if args and len(args)!=0: +- self.p_layer=args[0] +- except NameError: +- # python 2.6 +- if layer: +- self.p_layer=layer +- %} ++%feature("pythonappend") layerObj %{ ++ self.p_map = None ++ if map: ++ self.p_map = map%} ++ ++%feature("pythonappend") classObj %{ ++ self.p_layer = None ++ if layer: ++ self.p_layer = layer%} + + %feature("shadow") insertClass %{ + def insertClass(*args): +diff -rupN --no-dereference mapserver-rel-7-4-3/mapscript/python/tests/cases/style_test.py mapserver-rel-7-4-3-new/mapscript/python/tests/cases/style_test.py +--- mapserver-rel-7-4-3/mapscript/python/tests/cases/style_test.py 2019-12-16 18:59:03.000000000 +0100 ++++ mapserver-rel-7-4-3-new/mapscript/python/tests/cases/style_test.py 2020-03-03 18:55:31.278654827 +0100 +@@ -175,6 +175,53 @@ class NewStylesTestCase(MapTestCase): + self.assertRaises(mapscript.MapServerChildError, + class0.insertStyle, None) + ++ def testPattern(self): ++ """See https://github.com/mapserver/mapserver/issues/4943""" ++ ++ si = mapscript.styleObj() ++ assert si.pattern == () ++ assert si.patternlength == 0 ++ ++ def testPattern2(self): ++ ++ si = mapscript.styleObj() ++ si.pattern = [2.0, 3, 4] ++ assert si.pattern == (2.0, 3.0, 4.0) ++ assert si.patternlength == 3 ++ ++ def testPattern3(self): ++ """a pattern must have at least 2 elements""" ++ ++ si = mapscript.styleObj() ++ exception = None ++ try: ++ si.pattern = [1.0] ++ except Exception: ++ exception = True ++ assert exception is True ++ ++ def testPattern4(self): ++ """a pattern can have a max of 10 elements ++ This is set in mapsymbol.h with #define MS_MAXPATTERNLENGTH 10""" ++ ++ si = mapscript.styleObj() ++ exception = None ++ try: ++ si.pattern = [i for i in range(11)] ++ except Exception: ++ exception = True ++ assert exception is True ++ ++ def testPattern5(self): ++ """pattern length is read-only""" ++ si = mapscript.styleObj() ++ exception = None ++ try: ++ si.patternlength = 0 ++ except Exception: ++ exception = True ++ assert exception is True ++ + + class BrushCachingTestCase(MapTestCase): + diff --git a/mapserver.spec b/mapserver.spec index 36755a7..91b5d41 100644 --- a/mapserver.spec +++ b/mapserver.spec @@ -3,23 +3,25 @@ %global project_name mapserver # MapServer doesn't support PHP 7 yet. See: # https://github.com/mapserver/mapserver/issues/5252 -%global php_mapscript 0 +%global php_mapscript 1 # MapServer should support Python 3 but still builds with Python 2. # This should be investigated. -%global python_mapscript 0 +%global python_mapscript 1 -%global commit 7fe9b2b9f74796731cba2f7f09c8f41875f020e4 -%global shortcommit %(c=%{commit}; echo ${c:0:7}) Name: mapserver -Version: 7.2.2 -Release: 5.git%{shortcommit}%{?dist} +Version: 7.4.3 +Release: 1%{?dist} Summary: Environment for building spatially-enabled internet applications +%global dashver %(echo %version | sed 's|\\.|-|g') License: BSD URL: http://www.mapserver.org -Source0: https://github.com/%{project_owner}/%{project_name}/archive/%{commit}/%{project_name}-%{commit}.tar.gz +Source0: https://github.com/%{project_owner}/%{project_name}/archive/rel-%{dashver}/%{project_name}-%{version}.tar.gz +# Fix build with swig-4.0.1 +# https://github.com/mapserver/mapserver/pull/5983 +Patch0: mapserver-swig-4.0.1.patch Requires: httpd Requires: dejavu-sans-fonts @@ -56,6 +58,9 @@ BuildRequires: proj-devel => 5.2.0 BuildRequires: readline-devel BuildRequires: swig BuildRequires: zlib-devel +# See %%prep below +BuildRequires: /usr/share/fonts/dejavu-sans-fonts/DejaVuSans.ttf +BuildRequires: /usr/share/fonts/dejavu-sans-fonts/DejaVuSans-Bold.ttf %description @@ -90,7 +95,7 @@ Requires: php(api) = %{php_core_api} %description -n php-%{name} The PHP/Mapscript extension provides full map customization capabilities within the PHP scripting language. -%endif # end php_mapscript +%endif %package perl @@ -117,7 +122,7 @@ Requires: python3 %description -n python3-mapserver The Python/Mapscript extension provides full map customization capabilities within the Python programming language. -%endif # end python_mapscript +%endif %package java Summary: Java/Mapscript map making extensions to Java @@ -141,15 +146,11 @@ the ruby programming language. %prep -%setup -q -n %{project_owner}-%{commit} +%autosetup -p1 -n %{project_owner}-rel-%{dashver} # replace fonts for tests with symlinks -rm -rf tests/vera/Vera.ttf -rm -rf tests/vera/VeraBd.ttf -pushd tests/vera/ -ln -sf /usr/share/fonts/dejavu/DejaVuSans.ttf Vera.ttf -ln -sf /usr/share/fonts/dejavu/DejaVuSans-Bold.ttf VeraBd.ttf -popd +ln -sf /usr/share/fonts/dejavu-sans-fonts/DejaVuSans.ttf tests/vera/Vera.ttf +ln -sf /usr/share/fonts/dejavu-sans-fonts/DejaVuSans-Bold.ttf tests/vera/VeraBd.ttf # Force swig to regenerate the wrapper rm -rf mapscript/perl/mapscript_wrap.c @@ -163,15 +164,9 @@ cd build export CFLAGS="${CFLAGS} -ldl -fPIC -fno-strict-aliasing" export CXXFLAGS="%{optflags} -fno-strict-aliasing" -cmake -DINSTALL_LIB_DIR=%{_libdir} \ - -DCMAKE_INSTALL_PREFIX=%{_prefix} \ +%cmake -DINSTALL_LIB_DIR=%{_libdir} \ -DCMAKE_SKIP_RPATH=ON \ - -DCMAKE_CXX_FLAGS_RELEASE="%{optflags} -fno-strict-aliasing" \ - -DCMAKE_C_FLAGS_RELEASE="%{optflags} -fno-strict-aliasing" \ - -DCMAKE_VERBOSE_MAKEFILE=ON \ - -DCMAKE_BUILD_TYPE="Release" \ -DCMAKE_SKIP_INSTALL_RPATH=ON \ - -DCMAKE_SKIP_RPATH=ON \ -DWITH_CAIRO=TRUE \ -DWITH_CLIENT_WFS=TRUE \ -DWITH_CLIENT_WMS=TRUE \ @@ -192,12 +187,12 @@ cmake -DINSTALL_LIB_DIR=%{_libdir} \ -DCUSTOM_PERL_SITE_ARCH_DIR="%{perl_vendorarch}" \ %if 0%{php_mapscript} -DWITH_PHP=TRUE \ -%endif # end php_mapscript +%endif -DWITH_POSTGIS=TRUE \ -DWITH_PROJ=TRUE \ %if 0%{python_mapscript} -DWITH_PYTHON=TRUE \ -%endif # end python_mapscript +%endif -DWITH_RUBY=TRUE \ -DWITH_V8=FALSE \ -DWITH_SOS=TRUE \ @@ -219,20 +214,13 @@ cmake -DINSTALL_LIB_DIR=%{_libdir} \ -Wno-dev \ .. - -make %{?_smp_mflags} +%make_build %install -mkdir -p %{buildroot}%{_libexecdir} -%if 0%{php_mapscript} -mkdir -p %{buildroot}%{php_inidir} -mkdir -p %{buildroot}%{php_extdir} -%endif # end php_mapscript -mkdir -p %{buildroot}%{_bindir} -mkdir -p %{buildroot}%{_datadir}/%{name} -mkdir -p %{buildroot}%{_includedir}/%{name}/ +%make_install -C build +mkdir -p %{buildroot}%{_datadir}/%{name} install -p -m 644 xmlmapfile/mapfile.xsd %{buildroot}%{_datadir}/%{name} install -p -m 644 xmlmapfile/mapfile.xsl %{buildroot}%{_datadir}/%{name} @@ -240,12 +228,6 @@ install -p -m 644 xmlmapfile/mapfile.xsl %{buildroot}%{_datadir}/%{name} mkdir -p %{buildroot}%{_javadir} install -p -m 644 build/mapscript/java/mapscript.jar %{buildroot}%{_javadir}/ -# install header -install -p -m 644 *.h %{buildroot}%{_includedir}/%{name}/ - -cd build -make DESTDIR=%{buildroot} install %{?_smp_mflags} - %if 0%{php_mapscript} # install php config file mkdir -p %{buildroot}%{php_inidir} @@ -253,7 +235,13 @@ cat > %{buildroot}%{php_inidir}/%{ini_name} < - 7.4.3-1 +- Update to 7.4.3 + * Tue Mar 03 2020 Sandro Mani - 7.2.2-5.git7fe9b2b - Rebuild (gdal) diff --git a/sources b/sources index 646b090..678c4e0 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (mapserver-7fe9b2b9f74796731cba2f7f09c8f41875f020e4.tar.gz) = 119363d5ed5135c8363fcf305b702531350853cd3063f0cb946bbaddb0080c257594cf331e84ce7c24c8bfa04ff1d2308f07cea50ec185d35151a1cbd63330f4 +SHA512 (mapserver-7.4.3.tar.gz) = 5943f976b8116f6c580e7c7e1ffea4bcc257d216d5105815167c7fb72542a45b7fa50ffe44c95b40eaf36647733a32ae92102c8688b6bef6dcd7a5a669bae498