diff options
author | AstroFloyd <AstroFloyd@gmail.com> | 2023-05-18 11:33:15 +0200 |
---|---|---|
committer | AstroFloyd <AstroFloyd@gmail.com> | 2023-05-18 11:33:15 +0200 |
commit | 46fcf164c587d6fb0fb7f8e6a8c6d4246899997d (patch) | |
tree | 82a2831e53c0b026fe29f563b91474aabceae114 /sci-libs/plplot/files/plplot-5.15.0-ocaml-rpath.patch | |
parent | sys-apps/man-pages-linux-kernel-api: BLAKE2B for Manifest - v4.5.2. (diff) | |
download | AstroFloyd-46fcf164c587d6fb0fb7f8e6a8c6d4246899997d.tar.gz AstroFloyd-46fcf164c587d6fb0fb7f8e6a8c6d4246899997d.tar.bz2 AstroFloyd-46fcf164c587d6fb0fb7f8e6a8c6d4246899997d.zip |
sci-libs/plplot: revision bump to v5.15.0-r2.
Signed-off-by: AstroFloyd <AstroFloyd@gmail.com>
Diffstat (limited to 'sci-libs/plplot/files/plplot-5.15.0-ocaml-rpath.patch')
-rw-r--r-- | sci-libs/plplot/files/plplot-5.15.0-ocaml-rpath.patch | 166 |
1 files changed, 166 insertions, 0 deletions
diff --git a/sci-libs/plplot/files/plplot-5.15.0-ocaml-rpath.patch b/sci-libs/plplot/files/plplot-5.15.0-ocaml-rpath.patch new file mode 100644 index 0000000..f3fe04d --- /dev/null +++ b/sci-libs/plplot/files/plplot-5.15.0-ocaml-rpath.patch @@ -0,0 +1,166 @@ +commit 6b215267e7baeae83906bec8dab72a549aeda6c8 +Author: Alan W. Irwin <airwin@users.sourceforge.net> +Date: Mon Sep 23 17:39:31 2019 -0700 + + Build system: Fix ocaml examples core build for -DUSE_RPATH=OFF case + + Thanks to Orion Poplawski for reporting this issue which is that the + *core build_tree* rpath manipulations for the ocaml examples were + being (incorrectly) skipped for the -DUSE_RPATH=OFF case. The fix for + this issue required non-trivial CMake logic changes so was extensively + tested (see below). + + Tested by: Alan W. Irwin <airwin@users.sourceforge.net> on Linux + (Debian Buster = Stable) with the following steps: + + # Choose these prefixes to assure that the source, build, and install + # trees have blanks in their pathnames (to test those cases during + # this comprehensive test) + COMPREHENSIVE_TEST_PREFIX="/home/software/plplot/HEAD/comprehensive_test_disposeable blank" + SOURCE_PREFIX="/home/software/plplot/HEAD/plplot blank .git" + + # Set CMAKE_PREFIX_PATH to access local versions of lua and libLASi to + # avoid important bugs in the Debian Testing versions of those + # packages. Also access a local version of libqhull to test that + # additional rpath possibility. + + # Put a local build of CMake-3.15.20190829-g3ec986c first on the PATH to thoroughly + # test our build system for a locally built CMake version that includes an + # essential fix so that D language support works properly for the ldc2 and dmd compilers. + + # For this particular test use the gdc D compiler if D enabled (which it was not, see below). + + # Use the -DUSE_INCRTCL_VERSION_4=ON option to help CMake find Tcl/Tk + # components. (This step will not be necessary as soon as the PLplot + # build system is modified to make Tcl/Tk/Itcl/Itk/Iwidgets finding + # more robust.) + + # Use -DSWIG_EXECUTABLE=/home/software/swig/install/bin/swig to test + # swig-4.0.0 that I built for myself. + + # To save time, constrain the test to just the ocaml binding and svg device. + + # To save a lot of babysitting of this test, constrain the test by dropping + # the interactive component. + + time (nice -19 env CMAKE_PREFIX_PATH=/home/software/lua/install-5.3.5:/home/software/lasi_svn/install:/home/software/qhull/install PATH=/home/software/cmake/install-3ec986ce8e/bin:"$PATH" DC=gdc "$SOURCE_PREFIX"/scripts/comprehensive_test.sh --prefix "$COMPREHENSIVE_TEST_PREFIX" --cmake_added_options "-DUSE_INCRTCL_VERSION_4=ON -DSWIG_EXECUTABLE=/home/software/swig/install/bin/swig -DDEFAULT_NO_BINDINGS=ON -DENABLE_ocaml=ON -DDEFAULT_NO_DEVICES=ON -DPLD_svg=ON " --build_command "make -j18" --ctest_command "ctest -j18" --do_test_interactive no) + + The time result on my Ryzen 7 1700 system with 16 hardware threads was + + real 4m12.625s + user 4m22.128s + sys 0m58.076s + + The above test was repeated with the following changes: + + # Specify LD_LIBRARY_PATH to workaround the lack of special rpath + # support for external local versions of software + + # Use the -DUSE_RPATH=OFF cmake option to drop all install-tree + # rpath support (and to ignore any special rpath support for + # external local versions of software). + + # Further constrain the test to be performed just for the core build tree + # since -DUSE_RPATH=OFF will obviously give bad results for the install + # tree for this non-standard installation location. + + time (nice -19 env CMAKE_PREFIX_PATH=/home/software/lua/install-5.3.5:/home/software/lasi_svn/install:/home/software/qhull/install PATH=/home/software/cmake/install-3ec986ce8e/bin:"$PATH" DC=gdc LD_LIBRARY_PATH=/home/software/lasi_svn/install/lib:/home/software/qhull/install/lib "$SOURCE_PREFIX"/scripts/comprehensive_test.sh --prefix "$COMPREHENSIVE_TEST_PREFIX" --cmake_added_options "-DUSE_INCRTCL_VERSION_4=ON -DSWIG_EXECUTABLE=/home/software/swig/install/bin/swig -DDEFAULT_NO_BINDINGS=ON -DENABLE_ocaml=ON -DDEFAULT_NO_DEVICES=ON -DPLD_svg=ON -DUSE_RPATH=OFF" --build_command "make -j18" --ctest_command "ctest -j18" --do_test_interactive no --do_test_install_tree no --do_test_traditional_install_tree no) + + The time result on my Ryzen 7 1700 system with 16 hardware threads was + + real 1m57.888s + user 1m42.156s + sys 0m26.478s + + Both these comprehensive tests (one which tests that the default + -DUSE_RPATH=ON still works for the ocaml case and one similar to + Orion's test case which tests that -DUSER_RPATH=OFF works for the + ocaml case in the core build tree) ran without issues (e.g., there + were no hangs or other obvious errors) and was followed up by the + evaluation procedure documented in doc/wiki_source/Testing_PLplot. + Those evaluations showed no configure, build, or obvious run-time + errors (i.e., no non-zero return codes for any of the steps in these + comprehensive tests), and the difference test results (done with the + default svg device) were perfect as well. + +diff --git a/examples/CMakeLists.txt b/examples/CMakeLists.txt +index 93cb01b..5bcbceb 100644 +--- a/examples/CMakeLists.txt ++++ b/examples/CMakeLists.txt +@@ -343,27 +343,24 @@ if(CORE_BUILD) + # Extra layer of -Wl indirection required for the nagfor compiler + string(REPLACE "-Wl," "-Wl,-Wl,," install_tree_fortran_RPATHCMD ${install_tree_fortran_RPATHCMD}) + endif(install_tree_fortran_RPATHCMD AND CMAKE_Fortran_COMPILER MATCHES "nagfor") ++ endif(USE_RPATH AND NOT WIN32_OR_CYGWIN) ++ ++ # ocaml is a special case not handled by the above logic for other languages ++ # because the (unofficial) CMake language support is ++ # implemented with low-level add_custom commands/targets so that rpath ++ # must be specified for 3 cases (the traditional build of the installed ++ # examples, and the CMake-based build of the build-tree and install-tree examples). ++ # Furthermore, the rpath syntax is different for ocaml. ++ if(ENABLE_ocaml) ++ set(language ocaml) + +- # ocaml is a special case because the (unofficial) CMake language support is +- # implemented with low-level add_custom commands/targets so that rpath +- # must be specified for 3 cases (the traditional build of the installed +- # examples, and the CMake-based build of the build-tree and install-tree examples). +- # Furthermore, the rpath syntax is different for ocaml. +- if(ENABLE_ocaml) +- set(language ocaml) ++ if(USE_RPATH AND NOT WIN32_OR_CYGWIN) + # Each of the installed examples that are built depend on a library installed in ${LIB_DIR}. + set(install_tree_${language}_RPATH ${LIB_DIR}) +- # The ocaml examples depend on the plplot library ++ # The ocaml examples depend on the plplot library so use INSTALL_RPATH ++ # property of that library target. + set(tll_arguments PLPLOT::plplot) + process_rpath(install_tree_${language}_RPATH "${tll_arguments}") +- +- # Special case of the ocaml build-tree examples. +- # Must be done before ${install_tree_${language}_RPATH gets transformed +- # from official CMake list to colon-separated form. +- set(build_tree_${language}_RPATH ${install_tree_${language}_RPATH}) +- list(REMOVE_ITEM build_tree_${language}_RPATH ${LIB_DIR}) +- list(APPEND build_tree_${language}_RPATH ${CMAKE_BINARY_DIR}/src) +- + # Transform from semicolon- to colon-separated list. (Quotes + # for last argument required to process whole argument as string + # containing semicolons rather than as the concatanated elements +@@ -372,19 +369,30 @@ if(CORE_BUILD) + # install- and build-tree versions of CMake-based build of ocaml + # examples + string(REGEX REPLACE ";" ":" install_tree_${language}_RPATH "${install_tree_${language}_RPATH}") +- string(REGEX REPLACE ";" ":" build_tree_${language}_RPATH "${build_tree_${language}_RPATH}") + string(REPLACE " " "\\ " install_tree_${language}_RPATH_ESCAPED "${install_tree_${language}_RPATH}") +- string(REPLACE " " "\\ " build_tree_${language}_RPATH_ESCAPED "${build_tree_${language}_RPATH}") +- + # install_tree_ocaml_RPATHCMD needed in configured traditional + # Makefile for the ocaml subdirectory. + # Ocaml compiler requires -ccopt in front of every -Wl option: + set(install_tree_${language}_RPATHCMD "-ccopt -Wl,-rpath -ccopt -Wl,\"${install_tree_${language}_RPATH_ESCAPED}\"") ++ endif(USE_RPATH AND NOT WIN32_OR_CYGWIN) + +- endif(ENABLE_ocaml) ++ # Special case of the ocaml build-tree examples. ++ # Follow above process_rpath logic but with some changes ++ # appropriate for the core build of the ocaml examples. ++ set(build_tree_${language}_RPATH ${CMAKE_BINARY_DIR}/src) ++ set(tll_arguments PLPLOT::plplot) ++ process_rpath(build_tree_${language}_RPATH "${tll_arguments}") + ++ # Get rid of any mention of ${LIB_DIR} for the core build version ++ # of the examples. ++ # Must be done before ${build_tree_${language}_RPATH gets transformed ++ # from official CMake list to colon-separated form. ++ list(REMOVE_ITEM build_tree_${language}_RPATH ${LIB_DIR}) + +- endif(USE_RPATH AND NOT WIN32_OR_CYGWIN) ++ string(REGEX REPLACE ";" ":" build_tree_${language}_RPATH "${build_tree_${language}_RPATH}") ++ string(REPLACE " " "\\ " build_tree_${language}_RPATH_ESCAPED "${build_tree_${language}_RPATH}") ++ ++ endif(ENABLE_ocaml) + + # Install Chloe.pgm in installed examples directory so that all implementations + # of example 20 in the various examples subdirectories can conveniently |