aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNatanael Copa <ncopa@alpinelinux.org>2019-10-11 18:29:23 +0000
committerNatanael Copa <ncopa@alpinelinux.org>2019-10-11 18:35:15 +0000
commit3c39f8786cf34b5f5ed9ee893df1cf44a17d50d6 (patch)
tree3f12963a66e9fb3df2fe49823011ad864239e4b3
parent319b7568e7c37714ee24b98f6664b28158129b00 (diff)
downloadaports-3c39f8786cf34b5f5ed9ee893df1cf44a17d50d6.tar.bz2
aports-3c39f8786cf34b5f5ed9ee893df1cf44a17d50d6.tar.xz
community/opencpn: upgrade to 4.8.8
-rw-r--r--community/opencpn/APKBUILD20
-rw-r--r--community/opencpn/Replace-some-wx-arrays-with-std-vector.patch273
-rw-r--r--community/opencpn/compile-without-wxUSE_XLOCALE.patch45
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>&nbsp;&nbsp;&nbsp;</td></tr></table> ");
+- if( color == _T("green (4)") ) lightsHtml
+- << _T("<table border=0><tr><td bgcolor=green>&nbsp;&nbsp;&nbsp;</td></tr></table> ");
+- if( color == _T("white (1)") ) lightsHtml
+- << _T("<table border=0><tr><td bgcolor=yellow>&nbsp;&nbsp;&nbsp;</td></tr></table> ");
++ if( color == _T("red (3)") )
++ lightsHtml << _T("<table border=0><tr><td bgcolor=red>&nbsp;&nbsp;&nbsp;</td></tr></table> ");
++ if( color == _T("green (4)") )
++ lightsHtml << _T("<table border=0><tr><td bgcolor=green>&nbsp;&nbsp;&nbsp;</td></tr></table> ");
++ if( color == _T("white (1)") )
++ lightsHtml << _T("<table border=0><tr><td bgcolor=yellow>&nbsp;&nbsp;&nbsp;</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)
+ {