On 2017-06-20 11:36-0700 Alan W. Irwin wrote:
Also now that I have finally found a partner who is willing to test
the wxwidgets IPC methods on a native Windows platform, I have a
number of IPC build system and code changes in mind.
If you have looked at the code at all now, you can see it is a bit of
a complex #ifdef thicket that is therefore hard to understand by
definition. But (see cmake/modules/wxwidgets.cmake) the macro
PL_HAVE_UNNAMED_POSIX_SEMAPHORES is permanently disabled. That
disablement (done several months ago) is because although the #ifdef
PL_HAVE_UNNAMED_POSIX_SEMAPHORES code stanzas currently work in the
Linux case, they are superseded by the named semaphores approach that
works for all POSIX platforms including Linux. So my first order of
business is to follow up on that permanent disablement by
removing all #ifdef PL_HAVE_UNNAMED_POSIX_SEMAPHORES code stanzas
(and, in fact, all references to PL_HAVE_UNNAMED_POSIX_SEMAPHORES in
our source tree) to reduce the #ifdef complexity of the IPC code.
Also, if you look at cmake/modules/wxwidgets.cmake you will see the
macro PL_WXWIDGETS_IPC3 is permanently enabled. My second order of
business is to turn that temporarily back into an option which will be
ON by default. The old IPC code that is enabled when that option is
turned OFF by the user used to work OK on both Windows and Linux. So
turning this temporarily back into an option should allow us to test
both -DPL_WXWIDGETS_IPC3 ON and OFF on both Linux and Windows.
Previously -DPL_WXWIDGETS_IPC3 OFF worked OK on both the Linux
platform and the native Windows MSVC platform so my guess is it should
also work on MinGW-w64/MSYS2 to provide a benchmark to test how well
-DPL_WXWIDGETS_IPC3 ON works on that platform. And ultimately once we
make the code corrections so that -DPL_WXWIDGETS_IPC3 ON builds and
runs fine on that native Windows platform, I intend to remove all
the "old" IPC code that is used when -DPL_WXWIDGETS_IPC3 OFF in the
interests of reducing complexity.
@Phil: your participation in these proposed IPC tests in the MSVC case
(or any platform you can get your hands on) would be most welcome. And
if you could let Arjen know your source of reliable wxwidgets
libraries for the MSVC case, that would be most welcome as well.
More later...
To Arjen and Phil:
I have now made these 4 additional wxwidgets-related commits:
2bc0626 IPC for wxwidgets: Reenable the PL_WXWIDGETS_IPC3 option
e07d5e5 IPC for wxwidgets: Purge PL_HAVE_UNNAMED_POSIX_SEMAPHORES
2faff23 IPC for wxwidgets: Fix use of WIN32 and PL_WXWIDGETS_IPC3 preprocessor
macros
8fd52f8 Build System: Implement the PAUSE_CERTAIN_INTERACTIVE_DEVICES option
2faff23 is the most important one and fixes and obvious preprocessor
bug in the code that should likely sort out the build issue that Arjen
found.
With these changes, the IPC code now has been reduced to either using the 3
named
semaphores approach (-DPL_WXWIDGETS_IPC3=ON) to communicate between
wxPLViewer and -dev wxwidgets or the old version of the IPC code that
used one named semaphore + a circular buffer (-DPL_WXWIDGETS_IPC3=OFF)
to communicate between wxPLViewer and -dev wxwidgets. So please test
both the default -DPL_WXWIDGETS_IPC3=ON and the
-DPL_WXWIDGETS_IPC3=OFF cases (as I have just done for Linux).
@Arjen: if the above fix solves the build issue you found on
MinGW-w64/MSYS2 and run-time results for the test_c_wxwidgets target
look good for -DPAUSE_CERTAIN_INTERACTIVE_DEVICES=ON, please follow up
with a comprehensive test report on that platform for just wxwidgets
which you should be able to obtain (without
-DPAUSE_CERTAIN_INTERACTIVE_DEVICES set to avoid interactive pain) as
follows (subject to any additional script parameters you need to set for the
MinGW-w64/MSYS2 platform):
scripts/comprehensive_test.sh --cmake_added_options "-DDEFAULT_NO_DEVICES=ON
-DPLD_wxwidgets=ON -DDEFAULT_NO_BINDINGS=ON -DENABLE_wxwidgets=ON -DENABLE_cxx=ON"
--do_test_noninteractive no --do_ctest no
I just tried the above command on Linux (Debian Jessie), and obtained
complete success in a relatively short amount of time (~15 minutes).
@Phil and Arjen:
A similar comprehensive test of wxwidgets on the MSVC platform would be useful
as well.
@Those with access to Mac OS X:
A similar comprehensive test of wxwidgets on Mac OS X would be useful as well.
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