To the PLplot developers and Brad King: @Brad:
I am including you in this discussion because I thought you might be interested in these good PLplot results with your fork of Ninja. @Developers: Ninja should be of interest to us as a back-end for CMake because ninja works on all platforms and has a reputation for being fast because of its design philosophy (which is to execute all the low-level build system stuff as quickly as possible while leaving all the complex decision making for builds to higher-level build system software such as CMake). And Brad King's fork of ninja is of interest to us because it fixes Fortran issues with the upstream version. I. Building, testing, and installing Brad King's fork of ninja. I attach a bash script to do that. It should be run as follows: ./king_ninja_git_build.sh v1.9.0.g99df1.kitware.dyndep-1.jobserver-1 Here are the extra messages (i.e., those without leading '[') that are generated by ninja_test The last one of these should be "passed". Raise [ulimit -n] above 1025 (currently 1024) to make this test go ninja: warning: -jN forced on command line; ignoring GNU make jobserver. passed @Brad: In response to that first message I tried ulimit -n 1026 (which worked according to ulimit -a), but then after that ninja_test failed with ninja: fatal: pipe: Too many open files and the only way to fix that was to go back to "ulimit -n 1024" I don't know the significance of the second message, but I thought you should be informed of it. II. PLplot testing of Brad's fork on ninja @Everybody: This is a preliminary test of PLplot because I found that the Java, Octave, and Ada components of PLplot did not work with ninja. I need to investigate further to decide whether these issues are due to our own language-support issues for Ada, build-system issues for all three components, and/or CMake/ninja issues. But for now I shut down those components with -DENABLE_java=OFF -DENABLE_octave=OFF -DENABLE_ada=OFF and under these conditions the times required to configure PLplot with cmake were as follows: -G"Ninja" real 0m8.732s user 0m6.867s sys 0m3.156s -G"Unix Makefiles" real 0m9.730s user 0m7.781s sys 0m3.134s ==> Significant configuration time advantage for Ninja Here were the times required to build the test_noninteractive target after each of the above clean configurations: -G"Ninja" software@merlin> time env PATH=/home/software/ninja/install-v1.9.0.g99df1.kitware.dyndep-1.jobserver-1/bin:$PATH ninja -j16 test_noninteractive >& test_noninteractive.out real 1m5.298s user 7m19.614s sys 0m47.019s -G"Unix Makefiles software@merlin> time (make -j16 test_noninteractive >& test_noninteractive.out) real 1m21.388s user 7m31.672s sys 0m58.231s ==> Significant run-time advantage for Ninja In both cases the resulting test_noninteractive.out file showed no obvious run-time issues and gave a clean difference report for the default svg device, e.g., c++ Missing examples : Differing graphical output : Missing stdout :Differing stdout : d
Missing examples : Differing graphical output : Missing stdout :Differing stdout : fortran
Missing examples : Differing graphical output : Missing stdout :Differing stdout : lua
Missing examples : Differing graphical output : Missing stdout :Differing stdout : ocaml
Missing examples : Differing graphical output : Missing stdout :Differing stdout : python
Missing examples : Differing graphical output : Missing stdout :Differing stdout : tcl
Missing examples : Differing graphical output : Missing stdout : Differing stdout : By the way, I haven't tested this, but apparently an even more significant speed advantage for Ninja is it reduces the CMake reconfiguration time when, for example, you have edited one PLplot file and wish to reconfigure/rebuild. So for now, I would advise all those that are not interested in the Java, Octave, or Ada components of PLplot to give the Brad King fork of ninja a try. In particular since ninja has been designed from the ground up to support parallel builds while parallel builds are an add-on for the GNU-make case it is likely you should get good parallel build results for ninja on the Cygwin and MSYS2 platforms where Arjen's experience is that parallel builds are not reliable on those two platforms for GNU-make. I haven't tried upstream ninja, but since Brad's fork of that software is designed to fix fortran issues, then I assume everything that worked above except the fortran component should work well if one of you prefers to try the upstream version of ninja. Alan __________________________ Alan W. Irwin 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.org); 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 __________________________
king_ninja_git_build.sh.gz
Description: compressed bash script to build, test, and install the King fork of ninja
_______________________________________________ Plplot-devel mailing list Plplot-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/plplot-devel