From 3b6fe994129f0de755d2dbe380fc9957d1a4d2ba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniele=20Vigan=C3=B2?= Date: Thu, 18 Jan 2018 14:35:53 +0100 Subject: [PATCH] Port Debian patches to solve segfaults with shapefiles --- .gitignore | 1 + saga/saga-projections-gcc6.patch | 135 +++++++++++++++++++++++++++++++ saga/saga-spelling-errors.patch | 132 ++++++++++++++++++++++++++++++ saga/saga.spec | 11 ++- 4 files changed, 278 insertions(+), 1 deletion(-) create mode 100644 saga/saga-projections-gcc6.patch create mode 100644 saga/saga-spelling-errors.patch diff --git a/.gitignore b/.gitignore index af7a6a1..2f407f7 100644 --- a/.gitignore +++ b/.gitignore @@ -13,3 +13,4 @@ /qgis-2.18.12.tar.bz2 /qgis-2.18.13.tar.bz2 /qgis-2.18.14.tar.bz2 +/qgis-2.18.15.tar.bz2 diff --git a/saga/saga-projections-gcc6.patch b/saga/saga-projections-gcc6.patch new file mode 100644 index 0000000..74bc916 --- /dev/null +++ b/saga/saga-projections-gcc6.patch @@ -0,0 +1,135 @@ +From f3c103afb8be0e3fc79c0777ae9bfbd7d3ebdca3 Mon Sep 17 00:00:00 2001 +Applied-Upstream: https://sourceforge.net/p/saga-gis/code/ci/f3c103afb8be0e3fc79c0777ae9bfbd7d3ebdca3/ +From: oconrad +Date: Thu, 18 Aug 2016 13:01:36 +0200 +Subject: saga_api, CSG_MetaData, gcc v6 compatibility: is_valid() function + removed (you can use () operator to check if a child entry with given name + exists) + + +diff --git a/saga-gis/src/saga_core/saga_api/metadata.cpp b/saga-gis/src/saga_core/saga_api/metadata.cpp +index 030be0c..4e2f135 100644 +--- a/src/saga_core/saga_api/metadata.cpp ++++ b/src/saga_core/saga_api/metadata.cpp +@@ -174,17 +174,6 @@ void CSG_MetaData::Destroy(void) + /////////////////////////////////////////////////////////// + + //--------------------------------------------------------- +-bool CSG_MetaData::is_Valid(void) const +-{ +- return( this != NULL ); +-} +- +- +-/////////////////////////////////////////////////////////// +-// // +-/////////////////////////////////////////////////////////// +- +-//--------------------------------------------------------- + CSG_MetaData * CSG_MetaData::Add_Child(void) + { + return( Ins_Child(-1) ); +diff --git a/saga-gis/src/saga_core/saga_api/metadata.h b/saga-gis/src/saga_core/saga_api/metadata.h +index 905a668..858be49 100644 +--- a/src/saga_core/saga_api/metadata.h ++++ b/src/saga_core/saga_api/metadata.h +@@ -157,8 +157,6 @@ public: + const CSG_MetaData & operator [] (int Index) const { return( *Get_Child(Index ) ); } + const CSG_MetaData & operator [] (const CSG_String &Name) const { return( *Get_Child(_Get_Child(Name)) ); } + +- bool is_Valid (void) const; +- + int Get_Property_Count (void) const { return( m_Prop_Names.Get_Count() ); } + const CSG_String & Get_Property_Name (int i) const { return( m_Prop_Names [i] ); } + const SG_Char * Get_Property (int i) const { return( i >= 0 && i < m_Prop_Values.Get_Count() ? m_Prop_Values[i].c_str() : NULL ); } +diff --git a/saga-gis/src/saga_core/saga_api/projections.cpp b/saga-gis/src/saga_core/saga_api/projections.cpp +index d84d386..638c0da 100644 +--- a/src/saga_core/saga_api/projections.cpp ++++ b/src/saga_core/saga_api/projections.cpp +@@ -220,7 +220,7 @@ double SG_Get_Projection_Unit_To_Meter (TSG_Projection_Unit Unit) + //--------------------------------------------------------- + bool SG_Set_Projection_Unit (const CSG_MetaData &m, TSG_Projection_Unit &Unit, CSG_String &Name, double &To_Meter) + { +- if( m["UNIT"].is_Valid() ) ++ if( m("UNIT") ) + { + if( m["UNIT"].Get_Property("name", Name) && (Unit = SG_Get_Projection_Unit(Name)) != SG_PROJ_UNIT_Undefined ) + { +@@ -1042,8 +1042,8 @@ bool CSG_Projections::WKT_to_Proj4(CSG_String &Proj4, const CSG_String &WKT) con + // ] + if( !m.Get_Name().Cmp("GEOGCS") ) + { +- if( !m["DATUM"].is_Valid() +- || !m["DATUM"]["SPHEROID"].is_Valid() ++ if( !m("DATUM") ++ || !m["DATUM"]("SPHEROID") + || m["DATUM"]["SPHEROID"].Get_Children_Count() != 2 + || !m["DATUM"]["SPHEROID"][0].Get_Content().asDouble(a) || a <= 0.0 + || !m["DATUM"]["SPHEROID"][1].Get_Content().asDouble(d) || d < 0.0 ) +@@ -1056,7 +1056,7 @@ bool CSG_Projections::WKT_to_Proj4(CSG_String &Proj4, const CSG_String &WKT) con + Proj4 += CSG_String::Format(SG_T(" +a=%f"), a); // Semimajor radius of the ellipsoid axis + Proj4 += CSG_String::Format(SG_T(" +b=%f"), d > 0.0 ? a - a / d : a); // Semiminor radius of the ellipsoid axis + +- if( m["DATUM"]["TOWGS84"].is_Valid() && m["DATUM"]["TOWGS84"].Get_Children_Count() == 7 ) ++ if( m["DATUM"]("TOWGS84") && m["DATUM"]["TOWGS84"].Get_Children_Count() == 7 ) + { + for(i=0; i<7; i++) + { +@@ -1064,7 +1064,7 @@ bool CSG_Projections::WKT_to_Proj4(CSG_String &Proj4, const CSG_String &WKT) con + } + } + +- if( m["PRIMEM"].is_Valid() && m["PRIMEM"].Get_Content().asDouble(d) && d != 0.0 ) ++ if( m("PRIMEM") && m["PRIMEM"].Get_Content().asDouble(d) && d != 0.0 ) + { + Proj4 += CSG_String::Format(SG_T(" +pm=%f"), d); + } +@@ -1090,7 +1090,7 @@ bool CSG_Projections::WKT_to_Proj4(CSG_String &Proj4, const CSG_String &WKT) con + // ] + if( !m.Get_Name().Cmp(SG_T("PROJCS")) ) + { +- if( !m["PROJECTION"].is_Valid() ) ++ if( !m("PROJECTION") ) + { + SG_UI_Msg_Add_Error(CSG_String::Format(SG_T(">> WKT: %s"), _TL("no projection specified"))); + +@@ -1104,9 +1104,9 @@ bool CSG_Projections::WKT_to_Proj4(CSG_String &Proj4, const CSG_String &WKT) con + return( false ); + } + +- if( !m["GEOGCS"].is_Valid() +- || !m["GEOGCS"]["DATUM"].is_Valid() +- || !m["GEOGCS"]["DATUM"]["SPHEROID"].is_Valid() ++ if( !m("GEOGCS") ++ || !m["GEOGCS"]("DATUM") ++ || !m["GEOGCS"]["DATUM"]("SPHEROID") + || m["GEOGCS"]["DATUM"]["SPHEROID"].Get_Children_Count() != 2 + || !m["GEOGCS"]["DATUM"]["SPHEROID"][0].Get_Content().asDouble(a) || a <= 0.0 + || !m["GEOGCS"]["DATUM"]["SPHEROID"][1].Get_Content().asDouble(d) || d < 0.0 ) +@@ -1121,7 +1121,7 @@ bool CSG_Projections::WKT_to_Proj4(CSG_String &Proj4, const CSG_String &WKT) con + Proj4 += CSG_String::Format(SG_T(" +a=%f"), a); + Proj4 += CSG_String::Format(SG_T(" +b=%f"), d <= 0.0 ? a : a - a / d); // Semiminor radius of the ellipsoid axis + +- if( m["GEOGCS"]["DATUM"]["TOWGS84"].is_Valid() && m["GEOGCS"]["DATUM"]["TOWGS84"].Get_Children_Count() == 7 ) ++ if( m["GEOGCS"]["DATUM"]("TOWGS84") && m["GEOGCS"]["DATUM"]["TOWGS84"].Get_Children_Count() == 7 ) + { + for(i=0; i<7; i++) + { +@@ -1129,7 +1129,7 @@ bool CSG_Projections::WKT_to_Proj4(CSG_String &Proj4, const CSG_String &WKT) con + } + } + +- if( m["PRIMEM"].is_Valid() && m["PRIMEM"].Get_Content().asDouble(d) && d != 0.0 ) ++ if( m("PRIMEM") && m["PRIMEM"].Get_Content().asDouble(d) && d != 0.0 ) + { + Proj4 += CSG_String::Format(SG_T(" +pm=%f"), d); + } +@@ -1149,7 +1149,7 @@ bool CSG_Projections::WKT_to_Proj4(CSG_String &Proj4, const CSG_String &WKT) con + } + } + +- if( m["UNIT"].is_Valid() && m["UNIT"].Get_Content().asDouble(d) && d != 0.0 && d != 1.0 ) ++ if( m("UNIT") && m["UNIT"].Get_Content().asDouble(d) && d != 0.0 && d != 1.0 ) + { + Proj4 += CSG_String::Format(SG_T(" +to_meter=%f"), d); + } diff --git a/saga/saga-spelling-errors.patch b/saga/saga-spelling-errors.patch new file mode 100644 index 0000000..379807b --- /dev/null +++ b/saga/saga-spelling-errors.patch @@ -0,0 +1,132 @@ +Description: Fix spelling errors. + * minium -> minimum + * coodinate -> coordinate + * contributers -> contributors + * ins't -> isn't + * Internation -> International +Author: Bas Couwenberg +Forwarded: https://sourceforge.net/p/saga-gis/patches/15/ +Applied-Upstream: https://sourceforge.net/p/saga-gis/code/ci/ed0361f4a2d25ac727cc184ceaca3125ef6c7dfe/ + https://sourceforge.net/p/saga-gis/code/ci/450e5927b0b0759d23b8b31258cc431e9d5aa844/ + +--- a/src/modules/grid/grid_filter/Filter_Multi_Dir_Lee.cpp ++++ b/src/modules/grid/grid_filter/Filter_Multi_Dir_Lee.cpp +@@ -190,7 +190,7 @@ CFilter_Multi_Dir_Lee::CFilter_Multi_Dir + Set_Author(_TL("Copyrights (c) 2003 by Andre Ringeler")); + + Set_Description (_TW( +- "The module searches for the minium variance within 16 directions " ++ "The module searches for the minimum variance within 16 directions " + "and applies a Lee Filter in the direction of minimum variance. The " + "filter is edge-preserving and can be used to remove speckle noise " + "from SAR images or to smooth DTMs. Applied to DTMs, this filter " +--- a/src/modules/terrain_analysis/ta_hydrology/Flow_RecursiveDown.cpp ++++ b/src/modules/terrain_analysis/ta_hydrology/Flow_RecursiveDown.cpp +@@ -128,7 +128,7 @@ CFlow_RecursiveDown::CFlow_RecursiveDown + + Parameters.Add_Value( + NULL , "MINDQV" , _TL("DEMON - Min. DQV"), +- _TL("DEMON - Minium Drainage Quota Volume (DQV) for traced flow tubes"), ++ _TL("DEMON - Minimum Drainage Quota Volume (DQV) for traced flow tubes"), + PARAMETER_TYPE_Double , 0.0, 0.0, true, 1.0, true + ); + +--- a/src/saga_core/saga_gui/res/saga.bra.txt ++++ b/src/saga_core/saga_gui/res/saga.bra.txt +@@ -1216,7 +1216,7 @@ TEXT TRANSLATION + "DEM without Sinks" "MDE sem skins" + "DEMON" "DEMON" + "DEMON - Min. DQV" "DEMON - Min. DQV" +-"DEMON - Minium Drainage Quota Volume (DQV) for traced flow tubes" "DEMON - Volume mínimo de drenagem do contigente (DQV) para tubos de fluxo rastreados" ++"DEMON - Minimum Drainage Quota Volume (DQV) for traced flow tubes" "DEMON - Volume mínimo de drenagem do contigente (DQV) para tubos de fluxo rastreados" + "DESCRIPTION" "Descrição" + "DIFF_MEAN" "DIFF_MEAN" + "DN" "DN" +--- a/src/saga_core/saga_gui/res/saga.ger.txt ++++ b/src/saga_core/saga_gui/res/saga.ger.txt +@@ -1216,7 +1216,7 @@ TEXT TRANSLATION + "DEM without Sinks" "" + "DEMON" "DEMON" + "DEMON - Min. DQV" "" +-"DEMON - Minium Drainage Quota Volume (DQV) for traced flow tubes" "DEMON - Minimales Abflussquotenvolumen (DQV) für aufgezeichnete Fließröhren" ++"DEMON - Minimum Drainage Quota Volume (DQV) for traced flow tubes" "DEMON - Minimales Abflussquotenvolumen (DQV) für aufgezeichnete Fließröhren" + "DESCRIPTION" "BESCHREIBUNG" + "DIFF_MEAN" "DIFFERENZ_DURCHSCHNITT" + "DN" "" +--- a/src/saga_core/saga_gui/res/saga.lng.txt ++++ b/src/saga_core/saga_gui/res/saga.lng.txt +@@ -1216,7 +1216,7 @@ TEXT TRANSLATION + "DEM without Sinks" "" + "DEMON" "" + "DEMON - Min. DQV" "" +-"DEMON - Minium Drainage Quota Volume (DQV) for traced flow tubes" "" ++"DEMON - Minimum Drainage Quota Volume (DQV) for traced flow tubes" "" + "DESCRIPTION" "" + "DIFF_MEAN" "" + "DN" "" +--- a/src/modules/projection/pj_proj4/crs_grid_geogcoords.cpp ++++ b/src/modules/projection/pj_proj4/crs_grid_geogcoords.cpp +@@ -79,7 +79,7 @@ CCRS_Grid_GeogCoords::CCRS_Grid_GeogCoor + Set_Description (_TW( + "Creates for a given grid geographic coordinate information, " + "i.e. two grids specifying the longitude and latitude for each cell. " +- "The coodinate system of the input grid has to be defined. " ++ "The coordinate system of the input grid has to be defined. " + )); + + Set_Description (Get_Description() + "\n" + CSG_CRSProjector::Get_Description()); +--- a/src/saga_core/saga_cmd/man/saga_cmd.1 ++++ b/src/saga_core/saga_cmd/man/saga_cmd.1 +@@ -221,7 +221,7 @@ Multiple input files can be specified by + On the website of \fIhttp://www.saga\-gis.org\fR, a list of known bugs can be found and new bug reports can be submitted. + .SH "AUTHORS" + .IX Header "AUTHORS" +-\&\fB\s-1SAGA\s0\fR was written by Olaf Conrad with help from a large number of contributers. This manual page was written by Johan Van de Wauw. ++\&\fB\s-1SAGA\s0\fR was written by Olaf Conrad with help from a large number of contributors. This manual page was written by Johan Van de Wauw. + Both are released under the \s-1GNU\s0 General Public License v2. + .PP + More info \fIhttp://www.saga\-gis.org\fR +--- a/src/saga_core/saga_gui/man/saga_gui.1 ++++ b/src/saga_core/saga_gui/man/saga_gui.1 +@@ -142,7 +142,7 @@ Graphical user interface to the System f + On the project website: \fIhttp://www.saga\-gis.org\fR, a list of known bugs can be found and new bug reports can be submitted. + .SH "AUTHORS" + .IX Header "AUTHORS" +-\&\fB\s-1SAGA\s0\fR was written by Olaf Conrad with help from a large number of contributers. This manual page was written by Johan Van de Wauw. ++\&\fB\s-1SAGA\s0\fR was written by Olaf Conrad with help from a large number of contributors. This manual page was written by Johan Van de Wauw. + Both are released under the \s-1GNU\s0 General Public License v2. + .PP + More info \fIhttp://www.saga\-gis.org\fR +--- a/src/modules/pointcloud/pointcloud_tools/pc_reclass_extract.cpp ++++ b/src/modules/pointcloud/pointcloud_tools/pc_reclass_extract.cpp +@@ -91,7 +91,7 @@ CPC_Reclass_Extract::CPC_Reclass_Extract + "In addition to these settings, two special cases ('NoData values' and 'other values' not " + "included in the parameter setup) are supported:\n" + "In mode (a) and (b) the 'NoData option' is evaluated before the method settings, in mode " +- "(c) the option is evaluated only if the NoData value ins't included in the lookup table.\n" ++ "(c) the option is evaluated only if the NoData value isn't included in the lookup table.\n" + "The 'other values' option is always evaluated after checking the method settings.\n\n") + ); + +--- a/src/saga_core/saga_api/projections.cpp ++++ b/src/saga_core/saga_api/projections.cpp +@@ -1639,7 +1639,7 @@ bool CSG_Projections::_Set_Dictionary(CS + { "hammer" , " ", "Hammer_Eckert_Greifendorff" , "*) Hammer & Eckert-Greifendorff" }, + { "hatano" , " ", "Hatano_Asymmetrical_Equal_Area" , "*) Hatano Asymmetrical Equal Area" }, + { "igh" , " ", "World_Goode_Homolosine_Land" , "*) Interrupted Goode Homolosine" }, +- { "imw_p" , " ", "Internation_Map_of_the_World_Polyconic" , "*) Internation Map of the World Polyconic" }, ++ { "imw_p" , " ", "International_Map_of_the_World_Polyconic" , "*) International Map of the World Polyconic" }, + { "kav5" , " ", "Kavraisky_V" , "*) Kavraisky V" }, + { "kav7" , " ", "Kavraisky_VII" , "*) Kavraisky VII" }, + { "krovak" , " ", "Krovak" , "Krovak" }, +--- a/src/saga_core/saga_gui/res/saga_dic.txt ++++ b/src/saga_core/saga_gui/res/saga_dic.txt +@@ -50,7 +50,7 @@ PROJ4 DIR WKT DESC + "hammer" " " "Hammer_Eckert_Greifendorff" "*) Hammer & Eckert-Greifendorff" + "hatano" " " "Hatano_Asymmetrical_Equal_Area" "*) Hatano Asymmetrical Equal Area" + "igh" " " "Interrupted_Goodes_Homolosine" "*) Interrupted Goode's Homolosine" +-"imw_p" " " "Internation_Map_of_the_World_Polyconic" "*) Internation Map of the World Polyconic" ++"imw_p" " " "International_Map_of_the_World_Polyconic" "*) International Map of the World Polyconic" + "kav5" " " "Kavraisky_V" "*) Kavraisky V" + "kav7" " " "Kavraisky_VII" "*) Kavraisky VII" + "krovak" " " "Krovak" "Krovak" diff --git a/saga/saga.spec b/saga/saga.spec index 6e77c15..f9749ac 100644 --- a/saga/saga.spec +++ b/saga/saga.spec @@ -1,6 +1,6 @@ Name: saga Version: 2.3.1 -Release: 2%{?dist} +Release: 3%{?dist} Summary: Geographic information system with an API for processing geodata Group: Applications/Engineering @@ -12,6 +12,8 @@ License: GPLv2 and LGPLv2 URL: http://www.saga-gis.org #Source0: https://sourceforge.net/projects/saga-gis/files/SAGA%20-%202.3/SAGA%20%{version}/saga_%{version}_gpl2.tar.gz Source0: %{name}_%{version}_gpl2.tar.gz +Patch0: %{name}-projections-gcc6.patch +Patch1: %{name}-spelling-errors.patch BuildRequires: libappstream-glib BuildRequires: desktop-file-utils @@ -68,6 +70,9 @@ This package includes the headers and development libraries for SAGA. %prep %setup -q -n %{name}-%{version} +%patch0 -p1 +%patch1 -p1 + # Convert to UNIX line-breaks sed -i 's/\r//' AUTHORS @@ -145,6 +150,10 @@ appstream-util validate-relax --nonet %{buildroot}/%{_datadir}/appdata/%{name}.a %changelog +* Thu Jan 18 2018 Daniele Viganò - 2.3.1-3 +- Add from Debian to address segfaults with shapefiles and newer GCC +- Add a patch from Debian to fix spelling + * Tue Aug 29 2017 Daniele Viganò - 2.3.1-2 - Sync with upstream master - Python 2 binary package renamed to python2-saga