diff options
author | Natanael Copa <ncopa@alpinelinux.org> | 2019-10-11 18:29:23 +0000 |
---|---|---|
committer | Natanael Copa <ncopa@alpinelinux.org> | 2019-10-11 18:35:15 +0000 |
commit | 3c39f8786cf34b5f5ed9ee893df1cf44a17d50d6 (patch) | |
tree | 3f12963a66e9fb3df2fe49823011ad864239e4b3 | |
parent | 319b7568e7c37714ee24b98f6664b28158129b00 (diff) | |
download | aports-3c39f8786cf34b5f5ed9ee893df1cf44a17d50d6.tar.bz2 aports-3c39f8786cf34b5f5ed9ee893df1cf44a17d50d6.tar.xz |
community/opencpn: upgrade to 4.8.8
-rw-r--r-- | community/opencpn/APKBUILD | 20 | ||||
-rw-r--r-- | community/opencpn/Replace-some-wx-arrays-with-std-vector.patch | 273 | ||||
-rw-r--r-- | community/opencpn/compile-without-wxUSE_XLOCALE.patch | 45 |
3 files changed, 328 insertions, 10 deletions
diff --git a/community/opencpn/APKBUILD b/community/opencpn/APKBUILD index cb56fa61fd..8ff52f3113 100644 --- a/community/opencpn/APKBUILD +++ b/community/opencpn/APKBUILD @@ -2,38 +2,38 @@ # Contributor: ScrumpyJack <scrumpyjack@st.ilet.to> # Maintainer: ScrumpyJack <scrumpyjack@st.ilet.to> pkgname=opencpn -pkgver=4.8.4 +pkgver=4.8.8 pkgrel=0 pkgdesc="OpenCPN is a cross platform electronic navigation system" url="http://opencpn.org" arch="x86 x86_64" license="GPL-2.0" -depends="" makedepends="wxgtk-dev libexecinfo-dev linux-headers curl-dev cmake gpsd portaudio-dev tinyxml-dev" -install="" subpackages="$pkgname-doc $pkgname-lang" -source="$pkgname-$pkgver.tar.gz::https://github.com/OpenCPN/OpenCPN/archive/v${pkgver}.tar.gz +source="$pkgname-$pkgver.tar.gz::https://github.com/OpenCPN/OpenCPN/archive/v$pkgver.tar.gz CMakeList.txt.patch CMakeList-wxWidgets.patch + Replace-some-wx-arrays-with-std-vector.patch + compile-without-wxUSE_XLOCALE.patch " -builddir="$srcdir/OpenCPN-${pkgver}" +builddir="$srcdir/OpenCPN-$pkgver" build() { - cd "$builddir" cmake -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_INSTALL_PREFIX=/usr \ -DBUNDLE_GSHHS=CRUDE \ -DBUNDLE_TCDATA=ON \ - -DBUNDLE_DOCS=ON || return 1 + -DBUNDLE_DOCS=ON make } package() { - cd "$builddir" make DESTDIR="$pkgdir" install } -sha512sums="d5b06446772cd23677bef56a994b98f1ab6709687cf414954d951718f68b04a27f1fd2010a7c6e2fbc57c29639282fe9bc25a6e2c1b46a23d67a7817ce61fc9f opencpn-4.8.4.tar.gz +sha512sums="4fa94655d7b9d389f5f335c15898e7138c792c71b824720fedd762ccd71c01481e5a24598b85211dba0c7d89d0ad0b2ebc2afc38301235829d4aa6f499c6f9b2 opencpn-4.8.8.tar.gz a0cb0742f5d93e9e32529775d2d90ccaad6bec7e217e2fa08c6a3130c0cfbdb91ed4bf3a14db2a453f95a59d383fb7d698c33795f326597edf7d2e198d094b64 CMakeList.txt.patch -34d17ee1e01eceb79702c642bdfb392178633525aca059c07bc424691aaafb5252d56c4c3b9d42d7273f6663f33b1a18ee653964274b790cf6bd2ab6e57a8635 CMakeList-wxWidgets.patch" +34d17ee1e01eceb79702c642bdfb392178633525aca059c07bc424691aaafb5252d56c4c3b9d42d7273f6663f33b1a18ee653964274b790cf6bd2ab6e57a8635 CMakeList-wxWidgets.patch +882577101e4ef767ce11c5bad34f5d7a9cecdf0f764bcfaf54ebf840d9aebceeef2947c42c794af31747af6d688e328f410cefea513662875aef5cbea76c5b1d Replace-some-wx-arrays-with-std-vector.patch +83ef403b7b5b7e9d44d87aabedce84923241092d32e2905f01566287dd99cac72fd60060c34d81022c4b9c064ff7707fdfdebe24f9a1260301f3f1d886650acb compile-without-wxUSE_XLOCALE.patch" diff --git a/community/opencpn/Replace-some-wx-arrays-with-std-vector.patch b/community/opencpn/Replace-some-wx-arrays-with-std-vector.patch new file mode 100644 index 0000000000..cddfcd4199 --- /dev/null +++ b/community/opencpn/Replace-some-wx-arrays-with-std-vector.patch @@ -0,0 +1,273 @@ +From 9ac4ad6ff62dd449d8e1e6abef98521cae3e1839 Mon Sep 17 00:00:00 2001 +From: Pavel Kalian <pavel@kalian.cz> +Date: Thu, 21 Jun 2018 17:08:06 -0300 +Subject: [PATCH] Replace some wx arrays with std::vector (Fixes build with + current wxWidgets codebase) + +--- + include/s57chart.h | 2 +- + src/routemanagerdialog.cpp | 38 ++++++++--------- + src/s57chart.cpp | 61 +++++++++++++--------------- + src/wxsvg/include/wxSVG/NodeList.h | 2 +- + src/wxsvg/include/wxSVG/SVGElement.h | 2 + + 5 files changed, 51 insertions(+), 54 deletions(-) + +diff --git a/include/s57chart.h b/include/s57chart.h +index 42af908c71..2b8eefc014 100644 +--- a/include/s57chart.h ++++ b/include/s57chart.h +@@ -160,7 +160,7 @@ class s57chart : public ChartBase + bool IsPointInObjArea(float lat, float lon, float select_radius, S57Obj *obj); + wxString GetObjectAttributeValueAsString( S57Obj *obj, int iatt, wxString curAttrName ); + static wxString GetAttributeValueAsString( S57attVal *pAttrVal, wxString AttrName ); +- static int CompareLights( const void** l1, const void** l2 ); ++ static bool CompareLights( const S57Light* l1, const S57Light* l2 ); + wxString CreateObjDescriptions( ListOfObjRazRules* rule); + static wxString GetAttributeDecode(wxString& att, int ival); + +diff --git a/src/routemanagerdialog.cpp b/src/routemanagerdialog.cpp +index 56dcbbeb99..d677a42dd5 100644 +--- a/src/routemanagerdialog.cpp ++++ b/src/routemanagerdialog.cpp +@@ -33,6 +33,8 @@ + #include <wx/clipbrd.h> + + #include <iostream> ++#include <vector> ++#include <algorithm> + + #include "styles.h" + #include "dychart.h" +@@ -1523,14 +1525,11 @@ void RouteManagerDialog::OnTrkRightClick( wxListEvent &event ) + PopupMenu( &menu ); + } + +-WX_DEFINE_ARRAY( Track*, TrackArray ); +- +-static int CompareTracks( Track** track1, Track** track2 ) ++static bool CompareTracks( Track* track1, Track* track2 ) + { +- TrackPoint* start1 = ( *track1 )->GetPoint(0); +- TrackPoint* start2 = ( *track2 )->GetPoint(0); +- if( start1->GetCreateTime() > start2->GetCreateTime() ) return 1; +- return -1; // Two tracks starting at the same time is not possible. ++ TrackPoint* start1 = track1->GetPoint(0); ++ TrackPoint* start2 = track2->GetPoint(0); ++ return start1->GetCreateTime() < start2->GetCreateTime(); + } + + void RouteManagerDialog::OnTrkMenuSelected( wxCommandEvent &event ) +@@ -1616,8 +1615,8 @@ void RouteManagerDialog::OnTrkMenuSelected( wxCommandEvent &event ) + TrackPoint* tPoint; + TrackPoint* newPoint; + TrackPoint* lastPoint; +- TrackArray mergeList; +- TrackArray deleteList; ++ std::vector<Track*> mergeList; ++ std::vector<Track*> deleteList; + bool runningSkipped = false; + + ::wxBeginBusyCursor(); +@@ -1626,17 +1625,17 @@ void RouteManagerDialog::OnTrkMenuSelected( wxCommandEvent &event ) + item = m_pTrkListCtrl->GetNextItem( item, wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED ); + if( item == -1 ) break; + Track* track = pTrackList->Item( m_pTrkListCtrl->GetItemData( item ) )->GetData(); +- mergeList.Add( track ); ++ mergeList.push_back( track ); + } + +- mergeList.Sort( (CMPFUNC_wxArrayTrackArray) CompareTracks ); ++ std::sort(mergeList.begin(), mergeList.end(), CompareTracks ); + +- targetTrack = mergeList.Item( 0 ); ++ targetTrack = mergeList[ 0 ]; + lastPoint = targetTrack->GetLastPoint(); + +- for( unsigned int t = 1; t < mergeList.Count(); t++ ) { +- +- mergeTrack = mergeList.Item( t ); ++ for(auto const& mergeTrack: mergeList) { ++ if(mergeTrack == *mergeList.begin()) ++ continue; + + if( mergeTrack->IsRunning() ) { + runningSkipped = true; +@@ -1654,18 +1653,17 @@ void RouteManagerDialog::OnTrkMenuSelected( wxCommandEvent &event ) + + lastPoint = newPoint; + } +- deleteList.Add( mergeTrack ); ++ deleteList.push_back( mergeTrack ); + } + +- for( unsigned int i = 0; i < deleteList.Count(); i++ ) { +- Track* deleteTrack = deleteList.Item( i ); ++ for(auto const& deleteTrack: deleteList) { + g_pAIS->DeletePersistentTrack( deleteTrack ); + pConfig->DeleteConfigTrack( deleteTrack ); + g_pRouteMan->DeleteTrack( deleteTrack ); + } + +- mergeList.Clear(); +- deleteList.Clear(); ++ mergeList.clear(); ++ deleteList.clear(); + + ::wxEndBusyCursor(); + +diff --git a/src/s57chart.cpp b/src/s57chart.cpp +index 1144b3ddcc..2a363e8771 100644 +--- a/src/s57chart.cpp ++++ b/src/s57chart.cpp +@@ -5101,29 +5101,25 @@ wxString s57chart::GetAttributeValueAsString( S57attVal *pAttrVal, wxString Attr + return value; + } + +-int s57chart::CompareLights( const void** l1ptr, const void** l2ptr ) ++bool s57chart::CompareLights( const S57Light* l1, const S57Light* l2 ) + { +- S57Light l1 = *(S57Light*) *l1ptr; +- S57Light l2 = *(S57Light*) *l2ptr; ++ int positionDiff = l1->position.Cmp( l2->position ); ++ if( positionDiff != 0 ) return true; + +- int positionDiff = l1.position.Cmp( l2.position ); +- if( positionDiff != 0 ) return positionDiff; + +- double angle1, angle2; +- int attrIndex1 = l1.attributeNames.Index( _T("SECTR1") ); +- int attrIndex2 = l2.attributeNames.Index( _T("SECTR1") ); ++ int attrIndex1 = l1->attributeNames.Index( _T("SECTR1") ); ++ int attrIndex2 = l2->attributeNames.Index( _T("SECTR1") ); + + // This should put Lights without sectors last in the list. +- if( attrIndex1 == wxNOT_FOUND && attrIndex2 == wxNOT_FOUND ) return 0; +- if( attrIndex1 != wxNOT_FOUND && attrIndex2 == wxNOT_FOUND ) return -1; +- if( attrIndex1 == wxNOT_FOUND && attrIndex2 != wxNOT_FOUND ) return 1; ++ if( attrIndex1 == wxNOT_FOUND && attrIndex2 == wxNOT_FOUND ) return false; ++ if( attrIndex1 != wxNOT_FOUND && attrIndex2 == wxNOT_FOUND ) return true; ++ if( attrIndex1 == wxNOT_FOUND && attrIndex2 != wxNOT_FOUND ) return false; + +- l1.attributeValues.Item( attrIndex1 ).ToDouble( &angle1 ); +- l2.attributeValues.Item( attrIndex2 ).ToDouble( &angle2 ); ++ double angle1, angle2; ++ l1->attributeValues.Item( attrIndex1 ).ToDouble( &angle1 ); ++ l2->attributeValues.Item( attrIndex2 ).ToDouble( &angle2 ); + +- if( angle1 == angle2 ) return 0; +- if( angle1 > angle2 ) return 1; +- return -1; ++ return angle1 < angle2; + } + + static const char *type2str( GeoPrim_t type) +@@ -5161,7 +5157,7 @@ wxString s57chart::CreateObjDescriptions( ListOfObjRazRules* rule_list ) + wxString objText; + wxString lightsHtml; + wxString positionString; +- wxArrayPtrVoid lights; ++ std::vector<S57Light*> lights; + S57Light* curLight = NULL; + + for( ListOfObjRazRules::Node *node = rule_list->GetLast(); node; node = node->GetPrevious() ) { +@@ -5252,7 +5248,7 @@ wxString s57chart::CreateObjDescriptions( ListOfObjRazRules* rule_list ) + curLight = new S57Light; + curLight->position = positionString; + curLight->hasSectors = false; +- lights.Add( curLight ); ++ lights.push_back( curLight ); + } + } + +@@ -5352,30 +5348,31 @@ wxString s57chart::CreateObjDescriptions( ListOfObjRazRules* rule_list ) + } + } // Object for loop + +- if( lights.Count() > 0 ) { ++ if( !lights.empty() ) { + + // For lights we now have all the info gathered but no HTML output yet, now + // run through the data and build a merged table for all lights. + +- lights.Sort( ( CMPFUNC_wxArraywxArrayPtrVoid )( &s57chart::CompareLights ) ); ++ std::sort(lights.begin(), lights.end(), s57chart::CompareLights); + + wxString lastPos; + +- for( unsigned int curLightNo = 0; curLightNo < lights.Count(); curLightNo++ ) { +- S57Light* thisLight = (S57Light*) lights.Item( curLightNo ); ++ for(auto const& thisLight: lights) { + int attrIndex; + + if( thisLight->position != lastPos ) { + + lastPos = thisLight->position; + +- if( curLightNo > 0 ) lightsHtml << _T("</table>\n<hr noshade>\n"); ++ if( thisLight != *lights.begin() ) ++ lightsHtml << _T("</table>\n<hr noshade>\n"); ++ curLight++; + + lightsHtml << _T("<b>Light</b> <font size=-2>(LIGHTS)</font><br>"); + lightsHtml << _T("<font size=-2>") << thisLight->position << _T("</font><br>\n"); + +- if( curLight && curLight->hasSectors ) lightsHtml +- <<_("<font size=-2>(Sector angles are True Bearings from Seaward)</font><br>"); ++ if( curLight && curLight->hasSectors ) ++ lightsHtml <<_("<font size=-2>(Sector angles are True Bearings from Seaward)</font><br>"); + + lightsHtml << _T("<table>"); + } +@@ -5386,12 +5383,12 @@ wxString s57chart::CreateObjDescriptions( ListOfObjRazRules* rule_list ) + attrIndex = thisLight->attributeNames.Index( _T("COLOUR") ); + if( attrIndex != wxNOT_FOUND ) { + wxString color = thisLight->attributeValues.Item( attrIndex ); +- if( color == _T("red (3)") ) lightsHtml +- << _T("<table border=0><tr><td bgcolor=red> </td></tr></table> "); +- if( color == _T("green (4)") ) lightsHtml +- << _T("<table border=0><tr><td bgcolor=green> </td></tr></table> "); +- if( color == _T("white (1)") ) lightsHtml +- << _T("<table border=0><tr><td bgcolor=yellow> </td></tr></table> "); ++ if( color == _T("red (3)") ) ++ lightsHtml << _T("<table border=0><tr><td bgcolor=red> </td></tr></table> "); ++ if( color == _T("green (4)") ) ++ lightsHtml << _T("<table border=0><tr><td bgcolor=green> </td></tr></table> "); ++ if( color == _T("white (1)") ) ++ lightsHtml << _T("<table border=0><tr><td bgcolor=yellow> </td></tr></table> "); + } + + lightsHtml << _T("</font></td><td><font size=-1><nobr><b>"); +@@ -5474,7 +5471,7 @@ wxString s57chart::CreateObjDescriptions( ListOfObjRazRules* rule_list ) + lightsHtml << _T("</table><hr noshade>\n"); + ret_val = lightsHtml << ret_val; + +- lights.Clear(); ++ lights.clear(); + } + + return ret_val; +diff --git a/src/wxsvg/include/wxSVG/NodeList.h b/src/wxsvg/include/wxSVG/NodeList.h +index 4d91c39cd9..9c4e7b1e6b 100644 +--- a/src/wxsvg/include/wxSVG/NodeList.h ++++ b/src/wxsvg/include/wxSVG/NodeList.h +@@ -13,6 +13,6 @@ + + #include "SVGElement.h" + #include <wx/dynarray.h> +-WX_DECLARE_OBJARRAY(wxSVGElement*, wxNodeList); ++WX_DECLARE_OBJARRAY(wxSVGElementP, wxNodeList); + + #endif //wxSVG_NODE_LIST_H +diff --git a/src/wxsvg/include/wxSVG/SVGElement.h b/src/wxsvg/include/wxSVG/SVGElement.h +index c472b4654a..f47fb89659 100644 +--- a/src/wxsvg/include/wxSVG/SVGElement.h ++++ b/src/wxsvg/include/wxSVG/SVGElement.h +@@ -18,6 +18,8 @@ class wxSVGDocument; + #include "SVGAnimatedType.h" + #include "SVGDTD.h" + ++typedef wxSVGElement* wxSVGElementP; ++ + class wxSVGElement: + public wxSvgXmlElement + { diff --git a/community/opencpn/compile-without-wxUSE_XLOCALE.patch b/community/opencpn/compile-without-wxUSE_XLOCALE.patch new file mode 100644 index 0000000000..7e0a84c039 --- /dev/null +++ b/community/opencpn/compile-without-wxUSE_XLOCALE.patch @@ -0,0 +1,45 @@ +From 9ad3d30db042f0a89673195de92d0c81a50affd3 Mon Sep 17 00:00:00 2001 +From: didier <didier@users.sourceforge.net> +Date: Mon, 17 Dec 2018 15:12:38 +0100 +Subject: [PATCH] compile without wxUSE_XLOCALE + +--- + include/OCPNPlatform.h | 2 +- + src/OCPNPlatform.cpp | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/include/OCPNPlatform.h b/include/OCPNPlatform.h +index d6bc4915d1..751ae8590c 100644 +--- a/include/OCPNPlatform.h ++++ b/include/OCPNPlatform.h +@@ -160,9 +160,9 @@ class OCPNPlatform + + void SetLocaleSearchPrefixes( void ); + wxString GetDefaultSystemLocale(); +- wxString GetAdjustedAppLocale(); + + #if wxUSE_XLOCALE ++ wxString GetAdjustedAppLocale(); + wxString ChangeLocale(wxString &newLocaleID, wxLocale *presentLocale, wxLocale** newLocale); + #endif + +diff --git a/src/OCPNPlatform.cpp b/src/OCPNPlatform.cpp +index 785ff183b5..70ac73306d 100644 +--- a/src/OCPNPlatform.cpp ++++ b/src/OCPNPlatform.cpp +@@ -818,6 +818,7 @@ wxString OCPNPlatform::GetDefaultSystemLocale() + } + + ++#if wxUSE_XLOCALE || !wxCHECK_VERSION(3,0,0) + wxString OCPNPlatform::GetAdjustedAppLocale() + { + wxString adjLocale = g_locale; +@@ -851,7 +852,6 @@ wxString OCPNPlatform::GetAdjustedAppLocale() + } + + +-#if wxUSE_XLOCALE || !wxCHECK_VERSION(3,0,0) + + wxString OCPNPlatform::ChangeLocale(wxString &newLocaleID, wxLocale *presentLocale, wxLocale** newLocale) + { |