From: Alan W. I. <ir...@be...> - 2017-06-21 01:01:43
|
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 __________________________ |