--- Begin Message ---
Package: extrema
Version: 4.4.5.dfsg-3
Severity: important
Tags: patch sid jessie
User: freewx-ma...@lists.alioth.debian.org
Usertags: wx3.0
Control: block 748169 by -1
Dear maintainer,
We're aiming to migrate the archive to using wxwidgets3.0 instead of
wxwidgets2.8, and intend to drop wxwidgets2.8 before jessie is released.
I've rebuilt your package using the attached patches. Some of the wx3.0
patch is based on Alexander Ovchinnikov's patch for clang support in
#742158.
However, the rebuilt package segfaults when run, and I can't see what's
going on. In gdb it seems GetEvtMethod() must have returned an invalid
non-NULL method pointer which then gets called, but the base class
implementation just returns NULL, and it doesn't seem to be overridden
anywhere in wxwidgets3.0 or in extrema. I'm hoping someone more
familiar with the package can get further.
Cheers,
Olly
diff -Nru extrema-4.4.5.dfsg/debian/changelog extrema-4.4.5.dfsg/debian/changelog
--- extrema-4.4.5.dfsg/debian/changelog 2011-10-22 15:26:34.000000000 +1300
+++ extrema-4.4.5.dfsg/debian/changelog 2014-06-27 20:56:50.000000000 +1200
@@ -1,3 +1,15 @@
+extrema (4.4.5.dfsg-3.1) unstable; urgency=low
+
+ * Non-maintainer upload.
+ * Fix build system bugs - new patches:
+ + configure-replace-LF-macros.patch
+ + fix-missing-DESTDIR.patch
+ * Update to use wxwidgets3.0
+ + New patch wx3.0.patch, based on patch originally proposed to fix FTBFS
+ with clang in #742158.
+
+ -- Olly Betts <o...@survex.com> Fri, 27 Jun 2014 20:56:30 +1200
+
extrema (4.4.5.dfsg-3) unstable; urgency=low
* Manage patches via quilt instead of directly
diff -Nru extrema-4.4.5.dfsg/debian/control extrema-4.4.5.dfsg/debian/control
--- extrema-4.4.5.dfsg/debian/control 2011-10-22 15:26:34.000000000 +1300
+++ extrema-4.4.5.dfsg/debian/control 2013-11-16 05:46:11.000000000 +1300
@@ -2,7 +2,7 @@
Section: science
Priority: optional
Maintainer: Christine Spang <christ...@debian.org>
-Build-Depends: debhelper (>= 7.0.50~), autotools-dev, libwxgtk2.8-dev
+Build-Depends: debhelper (>= 7.0.50~), autotools-dev, libwxgtk3.0-dev
Standards-Version: 3.9.2
Homepage: http://exsitewebware.com/extrema/
Vcs-git: git://git.debian.org/git/collab-maint/extrema
diff -Nru extrema-4.4.5.dfsg/debian/patches/configure-replace-LF-macros.patch extrema-4.4.5.dfsg/debian/patches/configure-replace-LF-macros.patch
--- extrema-4.4.5.dfsg/debian/patches/configure-replace-LF-macros.patch 1970-01-01 12:00:00.000000000 +1200
+++ extrema-4.4.5.dfsg/debian/patches/configure-replace-LF-macros.patch 2014-05-15 18:40:45.000000000 +1200
@@ -0,0 +1,32 @@
+Description: configure uses 3 LF_* macros which are never defined
+ Expand these according to old documentation found in the wayback machine.
+Author: Olly Betts <o...@survex.com>
+Last-Update: 2014-05-15
+
+--- extrema-4.4.5.dfsg.orig/configure.ac
++++ extrema-4.4.5.dfsg/configure.ac
+@@ -17,9 +17,21 @@ AC_INIT([extrema],[4.4.5],[Joseph L. Chu
+ # use gnu strictness
+ AM_INIT_AUTOMAKE([1.9])
+
+-LF_CONFIGURE_CC
+-LF_CONFIGURE_CXX
+-LF_SET_WARNINGS
++# https://web.archive.org/web/20030117041928/http://wso.williams.edu/how/info/autoconf/tutorial_9.html#SEC41
++# LF_CONFIGURE_CC is apparently equivalent to:
++AC_PROG_CC
++AC_PROG_CPP
++AC_AIX
++AC_ISC_POSIX
++AC_MINIX
++AC_HEADER_STDC
++# LF_CONFIGURE_CXX is apparently equivalent to:
++AC_PROG_CXX
++AC_PROG_CXXCPP
++# followed by LF_CPP_PORTABILITY, which doesn't seem to do anything useful
++# for a modern C++ compiler
++
++# LF_SET_WARNINGS adds a "--with-warnings" option to the configure script.
+
+ AC_DISABLE_SHARED
+ AC_PROG_LIBTOOL
diff -Nru extrema-4.4.5.dfsg/debian/patches/fix-missing-DESTDIR.patch extrema-4.4.5.dfsg/debian/patches/fix-missing-DESTDIR.patch
--- extrema-4.4.5.dfsg/debian/patches/fix-missing-DESTDIR.patch 1970-01-01 12:00:00.000000000 +1200
+++ extrema-4.4.5.dfsg/debian/patches/fix-missing-DESTDIR.patch 2014-05-15 18:41:50.000000000 +1200
@@ -0,0 +1,14 @@
+Description: Add $(DESTDIR) to cp commands in src/Makefile.am
+Author: Olly Betts <o...@survex.com>
+Last-Update: 2014-05-15
+
+--- extrema-4.4.5.dfsg.orig/src/Makefile.am
++++ extrema-4.4.5.dfsg/src/Makefile.am
+@@ -33,5 +33,5 @@ extrema_SOURCES = extrema.cpp extrema.h
+ extrema_LDADD = libextrema.la $(WX_LIBS) $(GTK_LIBS) $(MUD_LIB) $(MINUIT_LIB)
+
+ install-data-local:
+- -cp -Rf ../Images $(pkgdatadir)/Images
+- -cp -Rf ../Help $(pkgdatadir)/Help
++ -cp -Rf ../Images $(DESTDIR)$(pkgdatadir)/Images
++ -cp -Rf ../Help $(DESTDIR)$(pkgdatadir)/Help
diff -Nru extrema-4.4.5.dfsg/debian/patches/series extrema-4.4.5.dfsg/debian/patches/series
--- extrema-4.4.5.dfsg/debian/patches/series 2011-10-22 15:26:34.000000000 +1300
+++ extrema-4.4.5.dfsg/debian/patches/series 2014-05-15 18:41:23.000000000 +1200
@@ -1 +1,4 @@
00_fix_gcc4_ftbfs.patch
+wx3.0.patch
+configure-replace-LF-macros.patch
+fix-missing-DESTDIR.patch
diff -Nru extrema-4.4.5.dfsg/debian/patches/wx3.0.patch extrema-4.4.5.dfsg/debian/patches/wx3.0.patch
--- extrema-4.4.5.dfsg/debian/patches/wx3.0.patch 1970-01-01 12:00:00.000000000 +1200
+++ extrema-4.4.5.dfsg/debian/patches/wx3.0.patch 2014-06-27 21:06:44.000000000 +1200
@@ -0,0 +1,177 @@
+Description: Fix to build with wxwidgets3.0
+ Based on patch originally proposed to fix FTBFS with clang and wx2.8.
+Author: Alexander Ovchinnikov <sanek23...@gmail.com>
+Origin: debian
+Forwarded: no
+Last-Update: 2014-05-14
+
+--- a/src/Commands/CMD_grid.cpp
++++ b/src/Commands/CMD_grid.cpp
+@@ -167,7 +167,7 @@
+ if( dup.size() > 0 )
+ {
+ if( qualifiers[wxT("MESSAGES")] )
+- ExGlobals::WarningMessage( wxString(wxT("GRID: "))+dup.size()+wxT(" duplicate points found") );
++ ExGlobals::WarningMessage( wxString(wxT("GRID: "))+wxString::Format(wxT("%lu"),dup.size())+wxT(" duplicate points found") );
+ for( std::size_t i=0; i<dup.size(); ++i )
+ {
+ std::size_t j = dup.size()-i-1;
+--- a/src/Commands/CMD_set.cpp
++++ b/src/Commands/CMD_set.cpp
+@@ -3290,7 +3290,7 @@
+ {
+ wxString tmp( wxT("unknown keyword: ") );
+ tmp += keyword;
+- throw ECommandError( command+tmp.c_str() );
++ throw ECommandError( command+tmp );
+ }
+ if( multipleEntries )goto TOP;
+ }
+--- a/src/Graphics/GRA_axis.cpp
++++ b/src/Graphics/GRA_axis.cpp
+@@ -1103,7 +1103,8 @@
+ //
+ if( nPos <= 0 )return wxString(wxT(" "));
+ wxChar digit[] = wxT("0123456789");
+- wxChar minus=wxT('-'), dec=wxT('.'), blank=wxT(' '), star=wxT('*');
++ wxChar minus=wxT('-'), dec=wxT('.'), star=wxT('*');
++ wxUniChar blank=wxT(' ');
+ //
+ // determine nint, the number of digits to the left of the
+ // decimal point, and ndec2, the number of decimal places,
+--- a/src/Graphics/GRA_setOfCharacteristics.cpp
++++ b/src/Graphics/GRA_setOfCharacteristics.cpp
+@@ -193,7 +193,7 @@
+ }
+
+ GRA_characteristic *GRA_setOfCharacteristics::Get( wxString const &name ) const
+-{ return Get( name.c_str() ); }
++{ return Get( static_cast<wxChar const*>( name.c_str() ) ); }
+
+ GRA_characteristic *GRA_setOfCharacteristics::Get( wxChar const *name ) const
+ {
+--- a/src/Graphics/GRA_stringCharacteristic.cpp
++++ b/src/Graphics/GRA_stringCharacteristic.cpp
+@@ -48,7 +48,7 @@
+ std::size_t length = s.size();
+ for( std::size_t i=0; i<length; ++i )
+ {
+- switch ( s[i] )
++ switch ( static_cast<wxChar>(s[i]) )
+ {
+ case wxT('<'):
+ result += wxT("<");
+--- a/src/Variables/Variable.cpp
++++ b/src/Variables/Variable.cpp
+@@ -100,7 +100,7 @@
+ else if( newState == -20 )
+ throw EVariableError( wxT("no variable name was given") );
+ else if( newState == -30 )
+- throw EVariableError( uName[i]+wxT(" is an invalid character in ")+name );
++ throw EVariableError( uName[i]+wxString(wxT(" is an invalid character in "))+name );
+ ++i;
+ }
+ if( start == -1 )throw EVariableError(wxT("no variable name was given"));
+--- a/src/wxForms/AnalysisMessagePanel.cpp
++++ b/src/wxForms/AnalysisMessagePanel.cpp
+@@ -83,7 +83,7 @@
+ std::ios_base::openmode mode;
+ fd = new wxFileDialog( this, wxT("Save command history"), wxT(""), wxT(""),
+ wxT("Text files (*.txt)|*.txt|Any file (*.*)|*.*"),
+- wxSAVE|wxOVERWRITE_PROMPT|wxCHANGE_DIR );
++ wxFD_SAVE|wxFD_OVERWRITE_PROMPT|wxFD_CHANGE_DIR );
+ mode = std::ios_base::out;
+ wxString filename;
+ if( fd->ShowModal() == wxID_OK )filename = fd->GetPath();
+--- a/src/wxForms/AnalysisSpeedButtonPanel.cpp
++++ b/src/wxForms/AnalysisSpeedButtonPanel.cpp
+@@ -163,7 +163,7 @@
+ wxFileDialog *fd;
+ fd = new wxFileDialog( this, wxT("Save session"), wxT(""), wxT(""),
+ wxT("xml files (*.xml)|*.xml"),
+- wxSAVE|wxOVERWRITE_PROMPT|wxCHANGE_DIR );
++ wxFD_SAVE|wxFD_OVERWRITE_PROMPT|wxFD_CHANGE_DIR );
+ wxString filename;
+ if( fd->ShowModal() == wxID_OK )filename = fd->GetPath();
+ if( filename.empty() )return;
+@@ -195,7 +195,7 @@
+ wxFileDialog *fd;
+ fd = new wxFileDialog( this, wxT("Save session"), wxT(""), wxT(""),
+ wxT("xml files (*.xml)|*.xml"),
+- wxOPEN|wxFILE_MUST_EXIST|wxCHANGE_DIR );
++ wxFD_OPEN|wxFD_FILE_MUST_EXIST|wxFD_CHANGE_DIR );
+ wxString filename;
+ if( fd->ShowModal() == wxID_OK )filename = fd->GetPath();
+ if( filename.empty() )return;
+--- a/src/wxForms/ChooseFilePanel.cpp
++++ b/src/wxForms/ChooseFilePanel.cpp
+@@ -96,13 +96,13 @@
+ if( read_ )
+ {
+ fd = new wxFileDialog( this, message_, wxT(""), wxT(""), fileType_,
+- wxOPEN|wxFILE_MUST_EXIST|wxCHANGE_DIR );
++ wxFD_OPEN|wxFD_FILE_MUST_EXIST|wxFD_CHANGE_DIR );
+ mode = std::ios_base::in;
+ }
+ else
+ {
+ fd = new wxFileDialog( this, message_, wxT(""), wxT(""), fileType_,
+- wxSAVE|wxOVERWRITE_PROMPT|wxCHANGE_DIR );
++ wxFD_SAVE|wxFD_OVERWRITE_PROMPT|wxFD_CHANGE_DIR );
+ mode = std::ios_base::out;
+ }
+ wxString filename;
+@@ -147,11 +147,11 @@
+
+ void ChooseFilePanel::RemoveFilename()
+ {
+- if( filenameComboBox_->IsEmpty() )return;
++ if( filenameComboBox_->wxChoice::IsEmpty() )return;
+ int i = filenameComboBox_->GetSelection();
+ filenameComboBox_->Delete( i );
+ i > 0 ? filenameComboBox_->SetSelection(i-1) : filenameComboBox_->SetSelection(0);
+- if( filenameComboBox_->IsEmpty() )filenameComboBox_->SetValue( wxT("") );
++ if( filenameComboBox_->wxChoice::IsEmpty() )filenameComboBox_->SetValue( wxT("") );
+ }
+
+ wxString ChooseFilePanel::GetSelection()
+--- a/src/wxForms/VisualizationSpeedButtonPanel.cpp
++++ b/src/wxForms/VisualizationSpeedButtonPanel.cpp
+@@ -163,7 +163,7 @@
+ wxString wildcard( wxT("Encapsulated PostScript (*.eps)|*.eps|PNG file (*.png)|*.png|JPEG file (*.jpeg)|*.jpeg") );
+ #endif
+ wxFileDialog *fd = new wxFileDialog( this, wxT("Choose an output file"), wxT(""), wxT(""),
+- wildcard, wxSAVE|wxOVERWRITE_PROMPT|wxCHANGE_DIR );
++ wildcard, wxFD_SAVE|wxFD_OVERWRITE_PROMPT|wxFD_CHANGE_DIR );
+ if( fd->ShowModal() != wxID_OK )return;
+ wxString filename( fd->GetFilename() );
+ if( filename.empty() )return;
+--- a/src/wxForms/VisualizationWindow.cpp
++++ b/src/wxForms/VisualizationWindow.cpp
+@@ -501,7 +501,7 @@
+ {
+ wxString wildcard( wxT("PostScript (*.eps)|*.eps") );
+ wxFileDialog *fd = new wxFileDialog( this, wxT("Choose an output file"), wxT(""), wxT(""),
+- wildcard, wxSAVE|wxOVERWRITE_PROMPT|wxCHANGE_DIR );
++ wildcard, wxFD_SAVE|wxFD_OVERWRITE_PROMPT|wxFD_CHANGE_DIR );
+ if( fd->ShowModal() != wxID_OK )return;
+ wxString filename( fd->GetFilename() );
+ if( filename.empty() )return;
+@@ -530,7 +530,7 @@
+ {
+ wxString wildcard( wxT("PNG (*.png)|*.png") );
+ wxFileDialog *fd = new wxFileDialog( this, wxT("Choose an output file"), wxT(""), wxT(""),
+- wildcard, wxSAVE|wxOVERWRITE_PROMPT|wxCHANGE_DIR );
++ wildcard, wxFD_SAVE|wxFD_OVERWRITE_PROMPT|wxFD_CHANGE_DIR );
+ if( fd->ShowModal() != wxID_OK )return;
+ wxString filename( fd->GetFilename() );
+ if( filename.empty() )return;
+@@ -561,7 +561,7 @@
+ {
+ wxString wildcard( wxT("JPEG (*.jpeg)|*.jpeg") );
+ wxFileDialog *fd = new wxFileDialog( this, wxT("Choose an output file"), wxT(""), wxT(""),
+- wildcard, wxSAVE|wxOVERWRITE_PROMPT|wxCHANGE_DIR );
++ wildcard, wxFD_SAVE|wxFD_OVERWRITE_PROMPT|wxFD_CHANGE_DIR );
+ if( fd->ShowModal() != wxID_OK )return;
+ wxString filename( fd->GetFilename() );
+ if( filename.empty() )return;
--- End Message ---