Hi Alan

> I think you will agree with me that smells like a workaround rather
> than a fundamental fix.

yes, I agree.

>> Eventually, we had to change our
>> minimum acceptable wxwidgets version from 2.8 to 3.0 because of one
>> commit which only worked for 3.0.

hhm, ok
I have to double check this but the comments in your code say ::Bind() is 
only available
for 3.0, and ::Bind()  is not used

so probably the code as of now is compatible with 2.8 (meaning it only has 
2.8 calls, not 3.0 calls)


>>I would appreciate
>> your thoughts on this matter of moving to pure 3.0.

we could try the ::Bind()   route, yes, to see what happens

another thing
wxPLplotwindow.h is a header file
we can try to move the implementation to a .ccp file (with templates there 
are some idiosyncrasies about the use of headers versus .cpp,
that's why I never use templates)


>>I would be willing to hold the release for you for a few
>> extra days beyond December 27th

that would be great, that should be enough to have a better idea.
I have more time to work on this on the weekends only.

-Pedro


----- Original Message ----- 
From: "Alan W. Irwin" <ir...@beluga.phys.uvic.ca>
To: "Pedro Vicente" <pedro.vice...@space-research.org>; "Phil Rosenberg" 
<p.d.rosenb...@gmail.com>
Cc: "PLplot development list" <plplot-devel@lists.sourceforge.net>
Sent: Thursday, December 15, 2016 12:35 AM
Subject: Re: [Plplot-devel] wxPLplotDemo.cpp -- linux build error


> On 2016-12-14 22:30-0500 Pedro Vicente wrote:
>
>> Hi Alan
>>
>> see my replies between your questions
>>
>>> This certainly qualifies as a release-critical wxwidgets bug.  And you
>>> have certainly supplied enough information that Phil should find this
>>> to be straightforward to reproduce.
>>
>> easy to reproduce on the PLplot code, but not immediatley obvious to find 
>> the root cause.
>
> Amen!
>
>>
>> My speculation is that it happens because this function located in 
>> \bindings\wxwidgets\wxPLplotwindow.h
>>
>> void wxPLplotwindow<WXWINDOW>::OnCreate( wxWindowCreateEvent &event )
>> {
>>   if ( !m_created )
>>
>> is not automatically called in an wxwidgets event triggered by this code 
>> in wxPLplotDemo.cpp, the Create() call
>>
>> wxPLplotwindow<wxFrame> *frame = new wxPLplotwindow<wxFrame>();
>> frame->Create( NULL, wxID_ANY, wxT( "wxPLplotDemo" ) );
>>
>> this can be easily confirmed if you put a print statement here
>>
>> void wxPLplotwindow<WXWINDOW>::OnCreate( wxWindowCreateEvent &event )
>> {
>> wxLogDebug("wxPLplotwindow<WXWINDOW>::OnCreate");
>>   if ( !m_created )
>>
>> so, my solution is simple, it's just to specifically call the code that 
>> is inside
>> void wxPLplotwindow<WXWINDOW>::OnCreate
>>
>>
>> I did this by doing a function that I called CreatePLplotstream(), that 
>> contains the stream initialization code
>> that is in
>> wxPLplotwindow<WXWINDOW>::OnCreate
>>
>>
>> so, in the demo code the call is now
>>
>> wxPLplotwindow<wxFrame> *frame = new wxPLplotwindow<wxFrame>();
>> frame->Create( NULL, wxID_ANY, wxT( "wxPLplotDemo" ) );
>> frame->CreatePLplotstream();
>
> I think you will agree with me that smells like a workaround rather
> than a fundamental fix.  Nevertheless, if you turn that change into a
> PLplot patch AND that solves the present build issue for all the Linux
> distros you have tried, and if it works here on Debian Jessie, then I
> will apply that patch as a temporary fix for the release which we can
> undo afterwards (or even before the release if we are lucky) with a
> more fundamental fix.
>
>>
>>> Do you see any use of (presumably deprecated) wxwidgets-2.x calls
>>> in our wxwidgets binding or device driver?  If so, that might be
>>> a good place to start to work on this issue.
>>
>>
>> not sure, I'll check
>>
>> events are explained here
>>
>> http://docs.wxwidgets.org/3.1/overview_events.html
>>
>> I always do a static event table in my code.
>> it's also possible to do a dynamic event (with ::Bind())
>> actually in the PLplot code this is done another way, that I am not sure 
>> about
>>
>> //We use connect instead of Bind for compatiblity with wxWidgets 2.8
>> //but should move to bind in the future.
>> WXWINDOW::Connect( wxEVT_CREATE, wxWindowCreateEventHandler( 
>> wxPLplotwindow<WXWINDOW>::OnCreate ) );
>
> Implementing a fundamental fix for the current build issue is already
> way beyond my meager C++ and wxwidgets expertise, but I do have some
> sense of the overview that may help you.
>
> One issue you should be aware of is git blame results are obfuscated
> by our code styling events (often triggered by me) which amount to
> putting random blanks in the code to make it conform to our style.
>
> So
>
> software@raven> git blame bindings/wxwidgets/wxPLplotwindow.h |grep '2\.8'
> 39a6c01b (Alan W. Irwin  2015-02-14 19:32:12 -0800  90)     //We use 
> connect instead of Bind for compatiblity with wxWidgets 2.8
> 39a6c01b (Alan W. Irwin  2015-02-14 19:32:12 -0800 123)     //on at least 
> one system (CentOS with intel compiler and wxWidgets 2.8.12).
>
> "shows" I was the author of the above comment in commit 39a6c01b, but
> that was a styling commit so you have to back off one commit to 39a6c01b^ 
> to find the true
> author/commit which then shows the following:
>
> software@raven> git blame 39a6c01b^ bindings/wxwidgets/wxPLplotwindow.h 
> |grep '2\.8'
> cf59c54a (Phil Rosenberg 2015-01-15 14:18:42 +0000  75)         //We use 
> connect instead of Bind for compatiblity with wxWidgets 2.8
> fa121bd5 (Phil Rosenberg 2015-01-20 15:56:53 +0000 102)         //on at 
> least one system (CentOS with intel compiler and wxWidgets 2.8.12).
>
> Also, if you look at the git log for references to wxwidgets 2.8 and
> 3.0, it appears we tried to keep backwards compatibility with 2.8 for
> quite a while (the commit messages for cf59c54a, and fa121bd5 but also
> other commits mention maintaining compatibility with 2.8) even though
> principal development was on 3.0.  Eventually, we had to change our
> minimum acceptable wxwidgets version from 2.8 to 3.0 because of one
> commit which only worked for 3.0.  So it does appear our code is a
> mixture of wxwidgets-2.8 (supported typically by an extra commit after
> some development on 3.0) and 3.0, and it might be a bit of an effort
> to remove all that wxwidgets-2.8 support.
>
> @Phil:
>
> If you are in e-mail contact, i.e., reading this, I would appreciate
> your thoughts on this matter of moving to pure 3.0. If it is
> straightforward to do, and you have time to work on that before
> Christmas, I would be willing to hold the release for you for a few
> extra days beyond December 27th until you are done and the result
> thoroughly checked on Debian Jessie, Windows, and all the different
> Linux distros available to Pedro.  I advise this change eventually in
> any case because the mixture of 2.8 and 3.0 we have now appears not to
> be well supported on most Linux distros unless Pedro's workaround
> turns out to (temporarily) save the day for us.
>
> Alan
> __________________________
> Alan W. Irwin
>
> Astronomical research affiliation with Department of Physics and 
> Astronomy,
> University of Victoria (astrowww.phys.uvic.ca).
>
> Programming affiliations with the FreeEOS equation-of-state
> implementation for stellar interiors (freeeos.sf.net); the Time
> Ephemerides project (timeephem.sf.net); PLplot scientific plotting
> software package (plplot.sf.net); the libLASi project
> (unifont.org/lasi); the Loads of Linux Links project (loll.sf.net);
> and the Linux Brochure Project (lbproject.sf.net).
> __________________________
>
> Linux-powered Science
> __________________________
> 


------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most 
engaging tech sites, SlashDot.org! http://sdm.link/slashdot
_______________________________________________
Plplot-devel mailing list
Plplot-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/plplot-devel

Reply via email to