Hi Alan
Sorry for top posting, but I’m on my phone which doesn't seem to indent older 
text so I think this is simpler.

A common scenario for me (I thought this may have been Laurent’s issue, but it 
seems not) is that I make a change in the wxWidgets part of plplot, then in 
visual studio I right click an example and select run. This triggers plplot to 
rebuild (in visual studio static builds all the devices are built into a single 
plplot library) and the example builds and runs. I hit the appropriate number 
to select wxWidgets and I find my change has made no different.

I try a few more things and find nothing helps.

Then I realise that wxPLViewer hasn't been rebuilding and was built with code 
before my changes. So I right click that project, hit build, test my changes, 
probably revert some changes and get back to my original change. Rebuilding 
wxPLViewer manually as I go.

Mostly now I remember to do the manual build. But occasionally I forget and it 
often takes me ages to realise the problem.

The deal is that although there is no build time dependency of the examples 
upon wxPLViewer, there is a run time dependency. Does that make sense?

Phil

Sent from my Windows 10 phone

From: Alan W. Irwin
Sent: 28 December 2016 01:42
To: Phil Rosenberg; Pedro Vicente; Laurent Berger; PLplot development list
Subject: wxwidgets-related dependencies

On 2016-12-27 23:41-0000 p.d.rosenb...@gmail.com wrote:

> Hi Laurent
> I know you have said you have cleaned and you have rebuilt. However, there 
> may be a build tree dependency issue catching us out. Can you ensure you 
> specifically rebuild the wxPlviewer project by right clicking it and 
> selecting build in visual studio? If you just right click an example and 
> click build or debug then this project doesn't get built/rebuilt. This means 
> in a previously used build tree you may be using a stale wxplviewer 
> executable or in a fresh tree you may end up using the wxplviewer from your 
> last build of the INSTALL project as a local version may not be found.
>

> Alan – I have mentioned this before. What is needed is for all
examples to depend upon the wxPLViewer executable, which in turn
depends upon plplot and the wxWidgets driver, so that if changes are
made to plplot or the driver then building of an example triggers a
rebuild of wxPLViewer.

Hi Phil:

You definitely do not want any of our standard examples to depend
on wxPLViewer.  Because the two are normally completely unrelated.

Of course, the test_c_wxwidgets target is a completely different story
since it specifically runs a subset of our C examples with -dev
wxwidgets so that target currently depends on the wxPLViewer target,
i.e., when test_c_wxwidgets is built, an attempt is always made to
build wxPLViewer first.  (Of course, nothing is done if wxPLViewer is
completely up to date, i.e, all its own direct and indirect
dependencies, e.g., the plplot, plplotcxx, and plplotwxwidgets
libraries are already built and it is already built.)

So shouldn't that chain of dependencies already satisfy your
dependency needs?  That is, the current situation is if code in any of
the plplot, plplotcxx, or plplotwxwidgets libraries is changed, then
an attempt to rebuild test_c_wxwidgets will attempt to rebuild the
particular library dependency with changed code and relink wxPLViewer
against the changed set of libraries.  A small complication for this
dependency chain exists for the case of shared libraries + dynamic
devices (the only case where the wxwidgets target exists because for
only this case the wxwidgets device driver code is built into an
independent dll rather than being embedded in the plplot library). But
here also you are covered because for this case the test_c_wxwidgets
depends on the wxwidgets target.  So any change in the (for this case
independent) wxwidgets device driver code will result in a rebuild of
wxwidgets.  That code does not link in any way to wxPLViewer so I
don't see any reason to rebuild wxPLViewer if the wxwidgets device
driver code is changed and rebuilt.  Of course, wxPLViewer will get
rebuilt if its common code with the wxwidgets device driver,
drivers/wxwidgets_comms.cpp, gets changed.

So I think we have it completely covered, but if you see any flaw in
my argument above that leads to that conclusion, please let me know.

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