From: Pacho Ramos Date: Fri, 27 Dec 2019 12:51:58 +0000 (+0100) Subject: sci-libs/plplot: Bump to 5.15.0 X-Git-Url: http://git.tremily.us/?a=commitdiff_plain;h=bb6e02b6dd02c5f5466dc82818490693ab361f81;p=gentoo.git sci-libs/plplot: Bump to 5.15.0 Closes: https://bugs.gentoo.org/604358 Closes: https://bugs.gentoo.org/606760 Closes: https://bugs.gentoo.org/624576 Closes: https://bugs.gentoo.org/624592 Closes: https://bugs.gentoo.org/645292 Closes: https://bugs.gentoo.org/659252 Closes: https://bugs.gentoo.org/661144 Closes: https://bugs.gentoo.org/666633 Package-Manager: Portage-2.3.84, Repoman-2.3.20 Signed-off-by: Pacho Ramos --- diff --git a/sci-libs/plplot/Manifest b/sci-libs/plplot/Manifest index cf7553946780..f8b1522a06ab 100644 --- a/sci-libs/plplot/Manifest +++ b/sci-libs/plplot/Manifest @@ -1 +1,2 @@ DIST plplot-5.12.0.tar.gz 16253895 BLAKE2B 5b89c0a6a478c6faf9bff2e2765eb6b13b6b1fc5644dbcdbc6aa88c510ad82a04253a7cb33d16816ff128eb866aad0f5cbccc365687ebb62022926f3c8545a0b SHA512 5566b9db0ddbb5ecaa677168f65f240197b2b8b23a02a812efc7e97fc79686b523591edad9c83de2e72935090d426b4cb9fe82496d9eb5a5a521c42161e9848b +DIST plplot-5.15.0.tar.gz 15380293 BLAKE2B 41f359c4e86c7a26fe53a9d82a9f02aeb97b5b6f44abca590621640c56e50a62823e8a03165a939689f5456cee419b8292ea34faccd07641bd4a953b6f1d73fe SHA512 54533245569b724a7ef90392cc6e9ae65873e6cbab923df0f841c8b43def5e4307690894c7681802209bd3c8df97f54285310a706428f79b3340cce3207087c8 diff --git a/sci-libs/plplot/files/Change-install-tree-location-of-wxPLViewer.patch b/sci-libs/plplot/files/Change-install-tree-location-of-wxPLViewer.patch new file mode 100644 index 000000000000..f23b199c5762 --- /dev/null +++ b/sci-libs/plplot/files/Change-install-tree-location-of-wxPLViewer.patch @@ -0,0 +1,117 @@ +From: Ole Streicher +Date: Wed, 20 Nov 2019 08:56:53 +0100 +Subject: Change install-tree location of wxPLViewer + +The wxPLViewer application is only used internally by the wxwidgets + +This is based on commit 4e9679b22 in upstream git, +author Alan W. Irwin + +https://sourceforge.net/p/plplot/plplot/ci/4e9679b2266e190f66969f21392cdcf9766a58c9 + +Closes: #944579 +--- + drivers/wxwidgets_dev.cpp | 32 ++++++-------------------------- + include/plplotP.h | 2 -- + src/plcore.c | 5 +---- + utils/CMakeLists.txt | 6 +++++- + 4 files changed, 12 insertions(+), 33 deletions(-) + +diff --git a/drivers/wxwidgets_dev.cpp b/drivers/wxwidgets_dev.cpp +index 6351c68..43e70be 100644 +--- a/drivers/wxwidgets_dev.cpp ++++ b/drivers/wxwidgets_dev.cpp +@@ -1753,32 +1753,12 @@ void wxPLDevice::SetupMemoryMap() + header->completeFlag = 0; + #endif // #ifdef PL_WXWIDGETS_IPC3 + +- //try to find the wxPLViewer executable, in the first instance just assume it +- //is in the path. +- //wxString exeName = wxT( "/nfs/see-fs-02_users/earpros/usr/src/plplot-plplot/build/utils/" NAME_wxPLViewer ); +- wxString exeName = wxT( NAME_wxPLViewer ); +- if ( plInBuildTree() ) +- { +- //if we are in the build tree check for the needed exe in there +- wxArrayString files; +- wxString utilsDir = wxString( wxT( BUILD_DIR ) ) + wxString( wxT( "/utils" ) ); +- wxDir::GetAllFiles( utilsDir, &files, exeName, wxDIR_FILES | wxDIR_DIRS ); +- if ( files.size() == 0 ) +- wxDir::GetAllFiles( utilsDir, &files, exeName + wxT( ".exe" ), wxDIR_FILES | wxDIR_DIRS ); +- if ( files.size() > 0 ) +- exeName = files[0]; +- } +- else +- { +- //check the plplot bin install directory +- wxArrayString files; +- wxDir::GetAllFiles( wxT( BIN_DIR ), &files, exeName, wxDIR_FILES | wxDIR_DIRS ); +- if ( files.size() == 0 ) +- wxDir::GetAllFiles( wxT( BIN_DIR ), &files, exeName + wxT( ".exe" ), wxDIR_FILES | wxDIR_DIRS ); +- if ( files.size() > 0 ) +- exeName = files[0]; +- } +- //Run the wxPlViewer with command line parameters telling it the location and size of the buffer ++ // The wxPLViewer executable has been built (build-tree case) ++ // or installed (install-tree case) in the drivers directory. ++ // So use the appropriate build-tree or install-tree location ++ // when referring to it. ++ wxString exeName = wxString( _( plGetDrvDir() ) ) + _( "/" ) + _( NAME_wxPLViewer ); ++ //Run wxPlViewer with command line parameters telling it the location and size of the buffer + wxString command; + command << wxT( "\"" ) << exeName << wxT( "\" " ) << wxString( mapName, wxConvUTF8 ) << wxT( " " ) << + mapSize << wxT( " " ) << m_width << wxT( " " ) << m_height; +diff --git a/include/plplotP.h b/include/plplotP.h +index 8d44e49..22a2036 100644 +--- a/include/plplotP.h ++++ b/include/plplotP.h +@@ -1275,10 +1275,8 @@ plwytik( PLFLT x, PLFLT y, PLBOOL minor, PLBOOL invert ); + + // get drivers directory + +-#ifdef ENABLE_DYNDRIVERS + PLDLLIMPEXP const char* + plGetDrvDir( void ); +-#endif + + #ifdef PL_HAVE_FREETYPE + PLDLLIMPEXP void +diff --git a/src/plcore.c b/src/plcore.c +index 84b8063..f57e756 100644 +--- a/src/plcore.c ++++ b/src/plcore.c +@@ -2966,7 +2966,7 @@ int plInBuildTree() + return inBuildTree; + } + +-#ifdef ENABLE_DYNDRIVERS ++// Need this for both the ENABLE_DYNDRIVERS case and the wxPLViewer case. + + PLCHAR_VECTOR + plGetDrvDir() +@@ -2998,9 +2998,6 @@ plGetDrvDir() + return drvdir; + } + +-#endif +- +- + //-------------------------------------------------------------------------- + // void plInitDispatchTable() + // +diff --git a/utils/CMakeLists.txt b/utils/CMakeLists.txt +index 5772910..f2a8411 100644 +--- a/utils/CMakeLists.txt ++++ b/utils/CMakeLists.txt +@@ -52,7 +52,11 @@ if(ENABLE_wxwidgets AND NOT OLD_WXWIDGETS) + ) + + set(wxPLViewer_link_libraries PLPLOT::plplotwxwidgets PLPLOT::plplotcxx ${wxwidgets_LINK_FLAGS} ${MATH_LIB} ${RT_LIB}) +- configure_executable_build(wxPLViewer "${wxPLViewer_SRCS}" "${wxPLViewer_link_libraries}" "${LIB_INSTALL_RPATH}" ${BIN_DIR}) ++ ++ # wxPLViewer depends on the plplotwxwidgets and plplotcxx libraries and is installed ++ # in the drivers directory. ++ set(LIB_INSTALL_RPATH ${LIB_DIR}) ++ configure_executable_build(wxPLViewer "${wxPLViewer_SRCS}" "${wxPLViewer_link_libraries}" "${LIB_INSTALL_RPATH}" ${DRV_DIR}) + + # Set this property rather than using the WIN32 signature of add_executable + # inside the configure_executable_build function. diff --git a/sci-libs/plplot/files/plplot-5.12.0-safe-string.patch b/sci-libs/plplot/files/plplot-5.12.0-safe-string.patch new file mode 100644 index 000000000000..5a3605168e61 --- /dev/null +++ b/sci-libs/plplot/files/plplot-5.12.0-safe-string.patch @@ -0,0 +1,20 @@ +--- plplot-5.12.0.old/examples/ocaml/x20.ml 2017-01-29 01:50:35.000000000 +0000 ++++ plplot-5.12.0/examples/ocaml/x20.ml 2017-11-18 12:10:33.476409441 +0000 +@@ -59,7 +59,7 @@ + let w, h = Scanf.sscanf w_h_line "%d %d" (fun w h -> w, h) in + let num_col = Scanf.sscanf num_col_line "%d" (fun n -> n) in + +- let img = String.make (w * h) ' ' in ++ let img = Bytes.make (w * h) ' ' in + let imf = Array.make_matrix w h 0.0 in + + (* Note that under 32bit OCaml, this will only work when reading strings up +@@ -72,7 +72,7 @@ + for j = 0 to h - 1 do + imf.(i).(j) <- + (* flip image up-down *) +- float_of_int (int_of_char (img.[(h - 1 - j ) * w + i])); ++ float_of_int (int_of_char (Bytes.get img ((h - 1 - j ) * w + i))); + done + done; + imf, w, h, num_col diff --git a/sci-libs/plplot/files/plplot-5.15.0-ieee.patch b/sci-libs/plplot/files/plplot-5.15.0-ieee.patch new file mode 100644 index 000000000000..065f59a52dfd --- /dev/null +++ b/sci-libs/plplot/files/plplot-5.15.0-ieee.patch @@ -0,0 +1,19 @@ +diff -up plplot-plplot-a9d9500c732d4eae47ed7fca687e02ec8a48d02c/cmake/modules/csiro.cmake.ieee plplot-plplot-a9d9500c732d4eae47ed7fca687e02ec8a48d02c/cmake/modules/csiro.cmake +--- plplot-plplot-a9d9500c732d4eae47ed7fca687e02ec8a48d02c/cmake/modules/csiro.cmake.ieee 2018-09-19 20:31:11.333168883 -0600 ++++ plplot-plplot-a9d9500c732d4eae47ed7fca687e02ec8a48d02c/cmake/modules/csiro.cmake 2018-09-19 20:31:56.323728783 -0600 +@@ -27,15 +27,6 @@ option(WITH_CSA "Enable use of the csa l + # expanded to a lot more cases as we gain platform experience. + set(NAN_CFLAGS ${CMAKE_C_FLAGS}) + if(PL_HAVE_QHULL OR WITH_CSA) +- if(CMAKE_SYSTEM_PROCESSOR MATCHES "i[0-9]86" AND NOT CMAKE_C_COMPILER MATCHES "gcc") +- set(NAN_CFLAGS "${NAN_CFLAGS} -mieee-fp") +- elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "alpha.*") +- if(CMAKE_C_COMPILER MATCHES "gcc") +- set(NAN_CFLAGS "${NAN_CFLAGS} -mieee") +- else(CMAKE_C_COMPILER MATCHES "gcc") +- set(NAN_CFLAGS "${NAN_CFLAGS} -ieee") +- endif(CMAKE_C_COMPILER MATCHES "gcc") +- endif(CMAKE_SYSTEM_PROCESSOR MATCHES "i[0-9]86" AND NOT CMAKE_C_COMPILER MATCHES "gcc") + if(NOT DEFINED NaNAwareCCompiler) + message(STATUS "Check for NaN awareness in C compiler") + try_run(RUN_RESULT COMPILE_RESULT diff --git a/sci-libs/plplot/files/plplot-5.15.0-multiarch.patch b/sci-libs/plplot/files/plplot-5.15.0-multiarch.patch new file mode 100644 index 000000000000..4fc5b0b43d9e --- /dev/null +++ b/sci-libs/plplot/files/plplot-5.15.0-multiarch.patch @@ -0,0 +1,56 @@ +diff -up plplot-5.15.0/examples/c/Makefile.examples.in.multiarch plplot-5.15.0/examples/c/Makefile.examples.in +--- plplot-5.15.0/examples/c/Makefile.examples.in.multiarch 2019-09-17 21:47:24.535984257 -0600 ++++ plplot-5.15.0/examples/c/Makefile.examples.in 2019-09-17 21:50:37.029009186 -0600 +@@ -23,9 +23,6 @@ SHELL = @SH_EXECUTABLE@ + CC = @CC@ + EXEEXT = @EXEEXT@ + +-PKG_CONFIG_ENV = @PKG_CONFIG_ENV@ +-install_tree_c_RPATHCMD = @install_tree_c_RPATHCMD@ +- + @extXdrawable_true@extXdrawable_EXECUTABLES_list = \ + @extXdrawable_true@ extXdrawable_demo$(EXEEXT) + +diff -up plplot-5.15.0/examples/c++/Makefile.examples.in.multiarch plplot-5.15.0/examples/c++/Makefile.examples.in +--- plplot-5.15.0/examples/c++/Makefile.examples.in.multiarch 2019-09-17 21:47:24.536984262 -0600 ++++ plplot-5.15.0/examples/c++/Makefile.examples.in 2019-09-17 21:50:18.672911449 -0600 +@@ -23,15 +23,10 @@ SHELL = @SH_EXECUTABLE@ + CXX = @CXX@ + EXEEXT = @EXEEXT@ + +-PKG_CONFIG_ENV = @PKG_CONFIG_ENV@ +-install_tree_cxx_RPATHCMD = @install_tree_cxx_RPATHCMD@ +- +-@wxwidgets_true@install_tree_wxwidgets_RPATHCMD = @install_tree_wxwidgets_RPATHCMD@ + @wxwidgets_true@PLPLOTWXWIDGETS_EXECUTABLES_list = \ + @wxwidgets_true@ @wxdemo_name@$(EXEEXT) + + @qt_gui_true@QT_MOC_EXECUTABLE = @QT_MOC_EXECUTABLE@ +-@qt_gui_true@install_tree_qt_RPATHCMD = @install_tree_qt_RPATHCMD@ + @qt_gui_true@qt_gui_EXECUTABLES_list = \ + @qt_gui_true@ qt_example$(EXEEXT) + +diff -up plplot-5.15.0/examples/fortran/Makefile.examples.in.multiarch plplot-5.15.0/examples/fortran/Makefile.examples.in +--- plplot-5.15.0/examples/fortran/Makefile.examples.in.multiarch 2019-09-17 21:47:24.537984268 -0600 ++++ plplot-5.15.0/examples/fortran/Makefile.examples.in 2019-09-17 21:48:01.062178741 -0600 +@@ -24,7 +24,6 @@ SHELL = @SH_EXECUTABLE@ + Fortran = @FC@ + EXEEXT = @EXEEXT@ + +-PKG_CONFIG_ENV = @PKG_CONFIG_ENV@ + install_tree_fortran_RPATHCMD = @install_tree_fortran_RPATHCMD@ + + EXECUTABLES_list = \ +diff -up plplot-5.15.0/examples/tk/Makefile.examples.in.multiarch plplot-5.15.0/examples/tk/Makefile.examples.in +--- plplot-5.15.0/examples/tk/Makefile.examples.in.multiarch 2019-09-17 21:47:24.538984273 -0600 ++++ plplot-5.15.0/examples/tk/Makefile.examples.in 2019-09-17 21:50:00.816816375 -0600 +@@ -24,9 +24,6 @@ SHELL = @SH_EXECUTABLE@ + CC = @CC@ + EXEEXT = @EXEEXT@ + +-PKG_CONFIG_ENV = @PKG_CONFIG_ENV@ +-install_tree_tk_RPATHCMD = @install_tree_tk_RPATHCMD@ +- + EXECUTABLES_list = xtk01$(EXEEXT) + # Second and fourth examples depend on itk. + @itk_true@itk_EXECUTABLES_list = xtk02$(EXEEXT) xtk04$(EXEEXT) 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 000000000000..f3fe04d84a7c --- /dev/null +++ b/sci-libs/plplot/files/plplot-5.15.0-ocaml-rpath.patch @@ -0,0 +1,166 @@ +commit 6b215267e7baeae83906bec8dab72a549aeda6c8 +Author: Alan W. Irwin +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 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 diff --git a/sci-libs/plplot/files/plplot-5.15.0-ocaml.patch b/sci-libs/plplot/files/plplot-5.15.0-ocaml.patch new file mode 100644 index 000000000000..6f0827f334e5 --- /dev/null +++ b/sci-libs/plplot/files/plplot-5.15.0-ocaml.patch @@ -0,0 +1,43 @@ +diff -up plplot-plplot-a9d9500c732d4eae47ed7fca687e02ec8a48d02c/bindings/ocaml/CMakeLists.txt.ocaml plplot-plplot-a9d9500c732d4eae47ed7fca687e02ec8a48d02c/bindings/ocaml/CMakeLists.txt +--- plplot-plplot-a9d9500c732d4eae47ed7fca687e02ec8a48d02c/bindings/ocaml/CMakeLists.txt.ocaml 2018-09-19 17:38:53.000000000 -0600 ++++ plplot-plplot-a9d9500c732d4eae47ed7fca687e02ec8a48d02c/bindings/ocaml/CMakeLists.txt 2018-09-19 20:32:29.884146436 -0600 +@@ -326,11 +326,11 @@ if(ENABLE_ocaml) + ${CMAKE_CURRENT_BINARY_DIR}/plplot.cmo + ) + +- # ocamlc -a -custom builds a *.cma library from *.cmo ++ # ocamlc -a builds a *.cma library from *.cmo + add_custom_command( + OUTPUT + ${CMAKE_CURRENT_BINARY_DIR}/plplot.cma +- COMMAND ${OCAMLC} -a -custom -o plplot.cma plplot_core.cmo plplot.cmo -dllib -lplplot_stubs -ccopt -L. -cclib -lplplot_stubs -ccopt -L${CAMLIDL_LIB_DIR} -cclib -lcamlidl ${ocaml_LIBRARIES_FLAGS} ++ COMMAND ${OCAMLC} -a -o plplot.cma plplot_core.cmo plplot.cmo -dllib -lplplot_stubs -ccopt -L. -cclib -lplplot_stubs -ccopt -L${CAMLIDL_LIB_DIR} -cclib -lcamlidl ${ocaml_LIBRARIES_FLAGS} + DEPENDS + ${CMAKE_CURRENT_BINARY_DIR}/plplot_core.cmo + ${CMAKE_CURRENT_BINARY_DIR}/plplot.cmo +@@ -341,7 +341,7 @@ if(ENABLE_ocaml) + add_custom_command( + OUTPUT + ${CMAKE_CURRENT_BINARY_DIR}/installed_plplot.cma +- COMMAND ${OCAMLC} -a -custom -o installed_plplot.cma plplot_core.cmo plplot.cmo -dllib -lplplot_stubs -ccopt -L. -cclib -lplplot_stubs -ccopt -L${CAMLIDL_LIB_DIR} -cclib -lcamlidl ${installed_ocaml_LIBRARIES_FLAGS} ++ COMMAND ${OCAMLC} -a -o installed_plplot.cma plplot_core.cmo plplot.cmo -dllib -lplplot_stubs -ccopt -L. -cclib -lplplot_stubs -ccopt -L${CAMLIDL_LIB_DIR} -cclib -lcamlidl ${installed_ocaml_LIBRARIES_FLAGS} + DEPENDS + ${CMAKE_CURRENT_BINARY_DIR}/plplot_core.cmo + ${CMAKE_CURRENT_BINARY_DIR}/plplot.cmo +diff -up plplot-plplot-a9d9500c732d4eae47ed7fca687e02ec8a48d02c/bindings/ocaml/plcairo/CMakeLists.txt.ocaml plplot-plplot-a9d9500c732d4eae47ed7fca687e02ec8a48d02c/bindings/ocaml/plcairo/CMakeLists.txt +--- plplot-plplot-a9d9500c732d4eae47ed7fca687e02ec8a48d02c/bindings/ocaml/plcairo/CMakeLists.txt.ocaml 2018-09-19 20:32:29.884146436 -0600 ++++ plplot-plplot-a9d9500c732d4eae47ed7fca687e02ec8a48d02c/bindings/ocaml/plcairo/CMakeLists.txt 2018-09-19 20:33:18.389750080 -0600 +@@ -91,11 +91,11 @@ if(ENABLE_ocaml AND OCAML_HAS_CAIRO) + ${CMAKE_CURRENT_BINARY_DIR}/plcairo.ml + ) + +- # ocamlc -a -custom builds a *.cma library from *.cmo ++ # ocamlc -a builds a *.cma library from *.cmo + add_custom_command( + OUTPUT + ${CMAKE_CURRENT_BINARY_DIR}/plcairo.cma +- COMMAND ${OCAMLC} -a -custom -o ${CMAKE_CURRENT_BINARY_DIR}/plcairo.cma -I ${PATH_TO_PLPLOT_CMA} plplot.cma ${CMAKE_CURRENT_BINARY_DIR}/plcairo.cmo -dllib -lplcairo_stubs -ccopt -L${CMAKE_CURRENT_BINARY_DIR} -cclib -lplcairo_stubs -ccopt -L${CMAKE_BINARY_DIR}/src -cclib -l${WRITEABLE_TARGET}plplot -dllpath ${CMAKE_BINARY_DIR}/src ++ COMMAND ${OCAMLC} -a -o ${CMAKE_CURRENT_BINARY_DIR}/plcairo.cma -I ${PATH_TO_PLPLOT_CMA} plplot.cma ${CMAKE_CURRENT_BINARY_DIR}/plcairo.cmo -dllib -lplcairo_stubs -ccopt -L${CMAKE_CURRENT_BINARY_DIR} -cclib -lplcairo_stubs -ccopt -L${CMAKE_BINARY_DIR}/src -cclib -l${WRITEABLE_TARGET}plplot -dllpath ${CMAKE_BINARY_DIR}/src + DEPENDS + ${CMAKE_CURRENT_BINARY_DIR}/plcairo.cmo + WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} diff --git a/sci-libs/plplot/files/replace-gdc-extensions.patch b/sci-libs/plplot/files/replace-gdc-extensions.patch new file mode 100644 index 000000000000..551926dc1540 --- /dev/null +++ b/sci-libs/plplot/files/replace-gdc-extensions.patch @@ -0,0 +1,434 @@ +Description: Replace gdc extensions in D binding and examples source code with equivalent standard D source code + This patch is needed to avoid FTBFS with recent gdc versions. +Origin: upstream, https://sourceforge.net/p/plplot/plplot/ci/74799e02c5435e491b46dfc1fd053753105c3441/ +Reviewed-by: Sébastien Villemot +Last-Update: 2019-10-08 +--- +This patch header follows DEP-3: http://dep.debian.net/deps/dep3/ +--- a/bindings/d/plplot.d ++++ b/bindings/d/plplot.d +@@ -298,7 +298,7 @@ void plfill3( PLFLT[] x, PLFLT[] y, PLFL + // Get the current device (keyword) name + void plgdev( out string p_dev ) + { +- char cdev[1024]; ++ char[1024] cdev; + c_plgdev( cdev.ptr ); + p_dev = to!string( cdev.ptr ); + } +@@ -306,7 +306,7 @@ void plgdev( out string p_dev ) + // Get the (current) output file name. Must be preallocated to >80 bytes + void plgfnam( out string fnam ) + { +- char cfnam[1024]; ++ char[1024] cfnam; + c_plgfnam( cfnam.ptr ); + fnam = to!string( cfnam.ptr ); + } +@@ -337,7 +337,7 @@ void plgriddata( PLFLT[] x, PLFLT[] y, + // Get the current library version number + void plgver( out string p_ver ) + { +- char cver[1024]; ++ char[1024] cver; + c_plgver( cver.ptr ); + p_ver = to!string( cver.ptr ); + } +--- a/examples/d/x01d.d ++++ b/examples/d/x01d.d +@@ -224,7 +224,7 @@ class plot { + + if ( do_test && test_xor ) + { +- writefln( "The -xor command line option can only be exercised if your " ++ writefln( "The -xor command line option can only be exercised if your " ~ + "system\nhas usleep(), which does not seem to happen." ); + } + } +@@ -294,4 +294,4 @@ class plot { + plcol0( 4 ); + plline( x, y ); + } +-} +\ No newline at end of file ++} +--- a/examples/d/x08d.d ++++ b/examples/d/x08d.d +@@ -24,7 +24,7 @@ + import plplot; + import std.string; + import std.math; +-import std.c.stdlib; ++import core.stdc.stdlib; + + //-------------------------------------------------------------------------- + // cmap1_init1 +@@ -92,8 +92,8 @@ int main( char[][] args ) + PLFLT[] alt = [ 60.0, 40.0 ]; + PLFLT[] az = [ 30.0, -30.0 ]; + +- string title[] = [ "#frPLplot Example 8 - Alt=60, Az=30", +- "#frPLplot Example 8 - Alt=40, Az=-30" ]; ++ string[] title = [ "#frPLplot Example 8 - Alt=60, Az=30", ++ "#frPLplot Example 8 - Alt=40, Az=-30" ]; + + // Parse and process command line arguments + plparseopts( args, PL_PARSE_FULL ); +--- a/examples/d/x11d.d ++++ b/examples/d/x11d.d +@@ -48,16 +48,16 @@ void cmap1_init() + //-------------------------------------------------------------------------- + int main( char[][] args ) + { +- const nlevel = 10; +- const XPTS = 35; // Data points in x +- const YPTS = 46; // Data points in y ++ const nlevel = 10; ++ const XPTS = 35; // Data points in x ++ const YPTS = 46; // Data points in y + +- int[] opt = [ DRAW_LINEXY, DRAW_LINEXY ]; ++ int[] opt = [ DRAW_LINEXY, DRAW_LINEXY ]; + +- PLFLT[] alt = [ 33.0, 17.0 ]; +- PLFLT[] az = [ 24.0, 115.0 ]; ++ PLFLT[] alt = [ 33.0, 17.0 ]; ++ PLFLT[] az = [ 24.0, 115.0 ]; + +- string title[] = [ "#frPLplot Example 11 - Alt=33, Az=24, Opt=3", ++ string[] title = [ "#frPLplot Example 11 - Alt=33, Az=24, Opt=3", + "#frPLplot Example 11 - Alt=17, Az=115, Opt=3" ]; + + PLFLT xx, yy; +--- a/examples/d/x15d.d ++++ b/examples/d/x15d.d +@@ -145,10 +145,10 @@ class plot { + //-------------------------------------------------------------------------- + public void plot2( PLFLT[][] z ) + { +- static PLINT nlin[10] = [ 1, 1, 1, 1, 1, 2, 2, 2, 2, 2 ]; +- static PLINT inc[10][2] = [ [450, 0], [-450, 0], [0, 0], [900, 0], [300, 0], ++ static PLINT[10] nlin = [ 1, 1, 1, 1, 1, 2, 2, 2, 2, 2 ]; ++ static PLINT[2][10] inc = [ [450, 0], [-450, 0], [0, 0], [900, 0], [300, 0], + [450, -450], [0, 900], [0, 450], [450, -450], [0, 900] ]; +- static PLINT del[10][2] = [ [2000, 2000], [2000, 2000], [2000, 2000], ++ static PLINT[2][10] del = [ [2000, 2000], [2000, 2000], [2000, 2000], + [2000, 2000], [2000, 2000], [2000, 2000], + [2000, 2000], [2000, 2000], [4000, 4000], + [4000, 2000] ]; +@@ -191,11 +191,11 @@ class plot { + //-------------------------------------------------------------------------- + public void plot3() + { +- static PLFLT xx[2][5] = [ [-1.0, 1.0, 1.0, -1.0, -1.0], ++ static PLFLT[5][2] xx = [ [-1.0, 1.0, 1.0, -1.0, -1.0], + [-1.0, 1.0, 1.0, -1.0, -1.0] ]; +- static PLFLT yy[2][5] = [ [1.0, 1.0, 0.0, 0.0, 1.0], ++ static PLFLT[5][2] yy = [ [1.0, 1.0, 0.0, 0.0, 1.0], + [-1.0, -1.0, 0.0, 0.0, -1.0] ]; +- static PLFLT zz[2][5] = [ [0.0, 0.0, 1.0, 1.0, 0.0], ++ static PLFLT[5][2] zz = [ [0.0, 0.0, 1.0, 1.0, 0.0], + [0.0, 0.0, 1.0, 1.0, 0.0] ]; + + pladv( 0 ); +--- a/examples/d/x16d.d ++++ b/examples/d/x16d.d +@@ -195,7 +195,7 @@ int main( char[][] args ) + string[] axis_opts = [ + "bcvtm", + ]; +- PLFLT[] values[NUM_AXES]; ++ PLFLT[][NUM_AXES] values; + for ( size_t i = 0; i < NUM_AXES; i++ ) + { + values[i] = new PLFLT[ns]; +@@ -207,7 +207,7 @@ int main( char[][] args ) + 0, + ]; + const int NUM_LABELS = 1; +- PLINT label_opts[] = [ ++ PLINT[] label_opts = [ + PL_COLORBAR_LABEL_BOTTOM, + ]; + string[] labels = [ +--- a/examples/d/x17d.d ++++ b/examples/d/x17d.d +@@ -4,7 +4,7 @@ + import std.string; + import std.math; + import std.stdio; +-import std.c.stdlib; ++import core.stdc.stdlib; + import plplot; + + +--- a/examples/d/x18d.d ++++ b/examples/d/x18d.d +@@ -6,9 +6,9 @@ import std.string; + + import plplot; + +-int opt[] = [ 1, 0, 1, 0 ]; +-PLFLT alt[] = [ 20.0, 35.0, 50.0, 65.0 ]; +-PLFLT az[] = [ 30.0, 40.0, 50.0, 60.0 ]; ++int[] opt = [ 1, 0, 1, 0 ]; ++PLFLT[] alt = [ 20.0, 35.0, 50.0, 65.0 ]; ++PLFLT[] az = [ 30.0, 40.0, 50.0, 60.0 ]; + + //-------------------------------------------------------------------------- + // main +@@ -81,7 +81,7 @@ int main( char[][] args ) + + void test_poly( int k ) + { +- PLINT draw[][] = [ [ 1, 1, 1, 1 ], ++ PLINT[][] draw = [ [ 1, 1, 1, 1 ], + [ 1, 0, 1, 0 ], + [ 0, 1, 0, 1 ], + [ 1, 1, 0, 0 ] ]; +--- a/examples/d/x19d.d ++++ b/examples/d/x19d.d +@@ -4,7 +4,7 @@ + + import std.math; + import std.string; +-import std.c.string; ++import core.stdc.string; + + import plplot; + +@@ -109,15 +109,15 @@ int main( char[][] args ) + PLFLT maxy = 80; + + //variables for the shapelib example +- const PLINT nbeachareas = 2; +- const PLINT beachareas[] = [ 23, 24 ]; +- const nwoodlandareas = 94; +- PLINT woodlandareas[94]; +- const PLINT nshingleareas = 22; +- const PLINT shingleareas[] = [ 0, 1, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 217, 2424, 2425, 2426, 2427, 2428, 2491, 2577 ]; +- const PLINT ncragareas = 2024; +- PLINT cragareas[2024]; +- const PLINT majorroads[] = [ 33, 48, 71, 83, 89, 90, 101, 102, 111 ]; ++ const PLINT nbeachareas = 2; ++ const PLINT[] beachareas = [ 23, 24 ]; ++ const nwoodlandareas = 94; ++ PLINT[94] woodlandareas; ++ const PLINT nshingleareas = 22; ++ const PLINT[] shingleareas = [ 0, 1, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 217, 2424, 2425, 2426, 2427, 2428, 2491, 2577 ]; ++ const PLINT ncragareas = 2024; ++ PLINT[2024] cragareas; ++ const PLINT[] majorroads = [ 33, 48, 71, 83, 89, 90, 101, 102, 111 ]; + + plinit(); + +@@ -173,8 +173,8 @@ int main( char[][] args ) + // Show Baltimore, MD on the map + plcol0( 2 ); + plssym( 0.0, 2.0 ); +- PLFLT x[1] = -76.6125; +- PLFLT y[1] = 39.2902778; ++ PLFLT[1] x = -76.6125; ++ PLFLT[1] y = 39.2902778; + plpoin( x, y, 18 ); + plssym( 0.0, 1.0 ); + plptex( -76.6125, 43.0, 0.0, 0.0, 0.0, "Baltimore, MD" ); +--- a/examples/d/x23d.d ++++ b/examples/d/x23d.d +@@ -336,14 +336,14 @@ int main( char[][] args ) + } + else if ( page == 14 ) + { +- text = format( "Page 15, %s, %s, %s: #<0x%1x0>#<0x%1x1>#<0x%1x2>" ++ text = format( "Page 15, %s, %s, %s: #<0x%1x0>#<0x%1x1>#<0x%1x2>" ~ + "The quick brown fox jumps over the lazy dog", + family[family_index], style[style_index], weight[weight_index], + family_index, style_index, weight_index ); + } + else if ( page == 15 ) + { +- text = format( "Page 16, %s, %s, %s: #<%s/>#<%s/>#<%s/>" ++ text = format( "Page 16, %s, %s, %s: #<%s/>#<%s/>#<%s/>" ~ + "The quick brown fox jumps over the lazy dog", + family[family_index], style[style_index], weight[weight_index], + family[family_index], style[style_index], weight[weight_index] ); +--- a/examples/d/x33d.d ++++ b/examples/d/x33d.d +@@ -30,7 +30,7 @@ import plplot; + import std.math; + import std.string; + +-static PLINT position_options[16] = [ ++static PLINT[16] position_options = [ + PL_POSITION_LEFT | PL_POSITION_TOP | PL_POSITION_OUTSIDE, + PL_POSITION_TOP | PL_POSITION_OUTSIDE, + PL_POSITION_RIGHT | PL_POSITION_TOP | PL_POSITION_OUTSIDE, +@@ -50,7 +50,7 @@ static PLINT position_options[16] = [ + ]; + + // Pick 5 arbitrary UTF-8 symbols useful for plotting points (✠✚✱✪✽✺✰✴✦). +-static string special_symbols[5] = [ ++static string[5] special_symbols = [ + "✰", + "✴", + "✱", +@@ -61,14 +61,14 @@ static string special_symbols[5] = [ + // plcolorbar options + + // Colorbar type options +-const int COLORBAR_KINDS = 4; +-static PLINT colorbar_option_kinds[COLORBAR_KINDS] = [ ++const int COLORBAR_KINDS = 4; ++static PLINT[COLORBAR_KINDS] colorbar_option_kinds = [ + PL_COLORBAR_SHADE, + PL_COLORBAR_SHADE | PL_COLORBAR_SHADE_LABEL, + PL_COLORBAR_IMAGE, + PL_COLORBAR_GRADIENT + ]; +-static string colorbar_option_kind_labels[COLORBAR_KINDS] = [ ++static string[COLORBAR_KINDS] colorbar_option_kind_labels = [ + "Shade colorbars", + "Shade colorbars with custom labels", + "Image colorbars", +@@ -76,14 +76,14 @@ static string colorbar_option_kind_label + ]; + + // Which side of the page are we positioned relative to? +-const int COLORBAR_POSITIONS = 4; +-static PLINT colorbar_position_options[COLORBAR_POSITIONS] = [ ++const int COLORBAR_POSITIONS = 4; ++static PLINT[COLORBAR_POSITIONS] colorbar_position_options = [ + PL_POSITION_LEFT, + PL_POSITION_RIGHT, + PL_POSITION_TOP, + PL_POSITION_BOTTOM + ]; +-static string colorbar_position_option_labels[COLORBAR_POSITIONS] = [ ++static string[COLORBAR_POSITIONS] colorbar_position_option_labels = [ + "Left", + "Right", + "Top", +@@ -91,14 +91,14 @@ static string colorbar_position_option_l + ]; + + // Colorbar label positioning options +-const int COLORBAR_LABELS = 4; +-static PLINT colorbar_label_options[COLORBAR_LABELS] = [ ++const int COLORBAR_LABELS = 4; ++static PLINT[COLORBAR_LABELS] colorbar_label_options = [ + PL_COLORBAR_LABEL_LEFT, + PL_COLORBAR_LABEL_RIGHT, + PL_COLORBAR_LABEL_TOP, + PL_COLORBAR_LABEL_BOTTOM + ]; +-static string colorbar_label_option_labels[COLORBAR_LABELS] = [ ++static string[COLORBAR_LABELS] colorbar_label_option_labels = [ + "Label left", + "Label right", + "Label top", +@@ -106,14 +106,14 @@ static string colorbar_label_option_labe + ]; + + // Colorbar cap options +-const int COLORBAR_CAPS = 4; +-static PLINT colorbar_cap_options[COLORBAR_CAPS] = [ ++const int COLORBAR_CAPS = 4; ++static PLINT[COLORBAR_CAPS] colorbar_cap_options = [ + PL_COLORBAR_CAP_NONE, + PL_COLORBAR_CAP_LOW, + PL_COLORBAR_CAP_HIGH, + PL_COLORBAR_CAP_LOW | PL_COLORBAR_CAP_HIGH + ]; +-static string colorbar_cap_option_labels[COLORBAR_CAPS] = [ ++static string[COLORBAR_CAPS] colorbar_cap_option_labels = [ + "No caps", + "Low cap", + "High cap", +@@ -126,20 +126,20 @@ void + plcolorbar_example_page( int kind_i, int label_i, int cap_i, PLINT cont_color, PLFLT cont_width, PLINT n_values, PLFLT [] values ) + { + // Parameters for the colorbars on this page +- PLINT position_i, position, opt; +- PLFLT x, y, x_length, y_length; +- PLFLT ticks[1] = [ 0.0 ]; +- PLINT sub_ticks[1] = [ 0 ]; ++ PLINT position_i, position, opt; ++ PLFLT x, y, x_length, y_length; ++ PLFLT[1] ticks = [ 0.0 ]; ++ PLINT[1] sub_ticks = [ 0 ]; + PLFLT low_cap_color, high_cap_color; + PLINT vertical, ifn; + PLINT n_axes = 1; + string[] axis_opts; +- PLINT n_labels = 1; +- PLINT label_opts[1] = [ 0 ]; ++ PLINT n_labels = 1; ++ PLINT[1] label_opts = [ 0 ]; + string[] label; + string title; + PLFLT colorbar_width, colorbar_height; +- PLINT n_values_array[1]; ++ PLINT[1] n_values_array; + PLFLT[][] values_array; + + axis_opts.length = 1; +@@ -279,26 +279,26 @@ const int MAX_NLEGEND = 7; + + int main( char[][] args ) + { +- int i, k; +- PLINT opt; +- PLINT nlegend, nturn; +- PLINT opt_array[MAX_NLEGEND]; +- PLINT text_colors[MAX_NLEGEND]; +- PLINT box_colors[MAX_NLEGEND]; +- PLINT box_patterns[MAX_NLEGEND]; +- PLFLT box_scales[MAX_NLEGEND]; +- PLFLT box_line_widths[MAX_NLEGEND]; +- PLINT line_colors[MAX_NLEGEND]; +- PLINT line_styles[MAX_NLEGEND]; +- PLFLT line_widths[MAX_NLEGEND]; +- PLINT symbol_numbers[MAX_NLEGEND]; +- PLINT symbol_colors[MAX_NLEGEND]; +- PLFLT symbol_scales[MAX_NLEGEND]; +- string text[MAX_NLEGEND]; +- string symbols[MAX_NLEGEND]; +- PLFLT legend_width, legend_height, x, y, xstart, ystart; +- PLFLT max_height, text_scale; +- PLINT position, opt_base, nrow, ncolumn; ++ int i, k; ++ PLINT opt; ++ PLINT nlegend, nturn; ++ PLINT[MAX_NLEGEND] opt_array; ++ PLINT[MAX_NLEGEND] text_colors; ++ PLINT[MAX_NLEGEND] box_colors; ++ PLINT[MAX_NLEGEND] box_patterns; ++ PLFLT[MAX_NLEGEND] box_scales; ++ PLFLT[MAX_NLEGEND] box_line_widths; ++ PLINT[MAX_NLEGEND] line_colors; ++ PLINT[MAX_NLEGEND] line_styles; ++ PLFLT[MAX_NLEGEND] line_widths; ++ PLINT[MAX_NLEGEND] symbol_numbers; ++ PLINT[MAX_NLEGEND] symbol_colors; ++ PLFLT[MAX_NLEGEND] symbol_scales; ++ string[MAX_NLEGEND] text; ++ string[MAX_NLEGEND] symbols; ++ PLFLT legend_width, legend_height, x, y, xstart, ystart; ++ PLFLT max_height, text_scale; ++ PLINT position, opt_base, nrow, ncolumn; + + // Parse and process command line arguments + plparseopts( args, PL_PARSE_FULL ); +@@ -822,9 +822,9 @@ int main( char[][] args ) + if ( colorbar ) + { + // Color bar examples +- PLFLT values_small[2] = [ -1.0e-20, 1.0e-20 ]; +- PLFLT values_uneven[9] = [ -1.0e-20, 2.0e-20, 2.6e-20, 3.4e-20, 6.0e-20, 7.0e-20, 8.0e-20, 9.0e-20, 10.0e-20 ]; +- PLFLT values_even[9] = [ -2.0e-20, -1.0e-20, 0.0e-20, 1.0e-20, 2.0e-20, 3.0e-20, 4.0e-20, 5.0e-20, 6.0e-20 ]; ++ PLFLT[2] values_small = [ -1.0e-20, 1.0e-20 ]; ++ PLFLT[9] values_uneven = [ -1.0e-20, 2.0e-20, 2.6e-20, 3.4e-20, 6.0e-20, 7.0e-20, 8.0e-20, 9.0e-20, 10.0e-20 ]; ++ PLFLT[9] values_even = [ -2.0e-20, -1.0e-20, 0.0e-20, 1.0e-20, 2.0e-20, 3.0e-20, 4.0e-20, 5.0e-20, 6.0e-20 ]; + + // Use unsaturated green background colour to contrast with black caps. + plscolbg( 70, 185, 70 ); diff --git a/sci-libs/plplot/plplot-5.15.0.ebuild b/sci-libs/plplot/plplot-5.15.0.ebuild new file mode 100644 index 000000000000..bafe731a8d46 --- /dev/null +++ b/sci-libs/plplot/plplot-5.15.0.ebuild @@ -0,0 +1,288 @@ +# Copyright 1999-2019 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=6 + +WX_GTK_VER=3.0-gtk3 +FORTRAN_NEEDED=fortran +PYTHON_COMPAT=( python3_{6,7,8} ) + +inherit cmake-utils flag-o-matic fortran-2 java-pkg-opt-2 python-single-r1 toolchain-funcs virtualx wxwidgets + +DESCRIPTION="Multi-language scientific plotting library" +HOMEPAGE="http://plplot.sourceforge.net/" +SRC_URI="mirror://sourceforge/${PN}/${P}.tar.gz" + +LICENSE="LGPL-2" +SLOT="0/14" # SONAME of libplplot.so +KEYWORDS="~amd64 ~x86 ~amd64-linux ~x86-linux" + +IUSE="cairo cxx doc +dynamic examples fortran gd java jpeg latex lua ocaml octave pdf + png python qhull qt5 shapefile svg tcl test threads tk truetype wxwidgets X" +REQUIRED_USE=" + python? ( ${PYTHON_REQUIRED_USE} ) + qt5? ( dynamic ) + test? ( latex ) + tk? ( tcl ) +" + +RESTRICT=" + !test? ( test ) + octave? ( test ) +" + +RDEPEND=" + cairo? ( x11-libs/cairo:0=[svg?,X] ) + gd? ( media-libs/gd:2=[jpeg?,png?] ) + java? ( >=virtual/jre-1.5:* ) + latex? ( + app-text/ghostscript-gpl + virtual/latex-base + ) + lua? ( dev-lang/lua:0= ) + ocaml? ( + dev-lang/ocaml + dev-ml/camlidl + cairo? ( dev-ml/cairo-ocaml[gtk] ) + ) + octave? ( sci-mathematics/octave:0= ) + pdf? ( media-libs/libharu:0= ) + python? ( + ${PYTHON_DEPS} + dev-python/numpy[${PYTHON_USEDEP}] + qt5? ( dev-python/PyQt5[${PYTHON_USEDEP}] ) + ) + qhull? ( media-libs/qhull:0= ) + qt5? ( + dev-qt/qtgui:5 + dev-qt/qtsvg:5 + dev-qt/qtprintsupport:5 + ) + shapefile? ( sci-libs/shapelib:0= ) + tcl? ( + dev-lang/tcl:0= + dev-tcltk/itcl:0= + tk? ( + dev-lang/tk:0= + dev-tcltk/itk + ) + ) + truetype? ( + media-fonts/freefont + media-libs/lasi:0= + gd? ( media-libs/gd:2=[truetype] ) + ) + wxwidgets? ( + x11-libs/wxGTK:${WX_GTK_VER}=[X] + x11-libs/agg:0=[truetype?] + ) + X? ( + x11-libs/libX11:0= + x11-libs/libXau:0= + x11-libs/libXdmcp:0= + )" + +DEPEND="${RDEPEND} + virtual/pkgconfig + java? ( + >=virtual/jdk-1.5 + dev-lang/swig + ) + ocaml? ( dev-ml/findlib ) + octave? ( >=dev-lang/swig-3.0.12 ) + python? ( dev-lang/swig ) + test? ( + media-fonts/font-misc-misc + media-fonts/font-cursor-misc + ) +" + +PATCHES=( + "${FILESDIR}"/${PN}-5.9.6-python.patch + + # Fedora patches + "${FILESDIR}"/${PN}-5.15.0-ocaml-rpath.patch + "${FILESDIR}"/${PN}-5.15.0-ieee.patch + "${FILESDIR}"/${PN}-5.15.0-multiarch.patch + "${FILESDIR}"/${PN}-5.15.0-ocaml.patch + "${FILESDIR}"/${PN}-5.12.0-safe-string.patch +) + +pkg_setup() { + use python && python-single-r1_pkg_setup + use java && java-pkg-opt-2_pkg_setup + use fortran && fortran-2_pkg_setup +} + +src_prepare() { + use wxwidgets && need-wxwidgets unicode + cmake-utils_src_prepare + + # avoid installing license + sed -i -e '/COPYING.LIB/d' CMakeLists.txt || die + + # prexify hard-coded /usr/include in cmake modules + sed -i \ + -e "s:/usr/include:${EPREFIX}/usr/include:g" \ + -e "s:/usr/lib:${EPREFIX}/usr/$(get_libdir):g" \ + -e "s:/usr/share:${EPREFIX}/usr/share:g" \ + cmake/modules/*.cmake || die + + # change default install directories for doc and examples + local f + while IFS="" read -d $'\0' -r f; do + sed -i -e 's:${DATA_DIR}/examples:${DOC_DIR}/examples:g' "${f}" || die + done < <(find "${S}" -name CMakeLists.txt -print0) + + sed -i \ + -e 's:${VERSION}::g' \ + -e "s:doc/\${PACKAGE}:doc/${PF}:" \ + cmake/modules/instdirs.cmake || die + + java-utils-2_src_prepare +} + +src_configure() { + # - don't build doc, it pulls in a whole stack of horrible dependencies + # - Bindings: + # * Ada is a mess in Gentoo, don't use + # * D has been removed from Gentoo, don't use + # * Qt4 has been disabled, as it is deprecated and unsupported upstream + # - DPLD_* drivers need to use ON/OFF instead of the usex defaults yes/no, as + # the testsuite performs a string comparison to determine which tests to run + + # Octave bindings now require C++11 support, #609980 + append-cxxflags -std=c++11 + + local mycmakeargs=( + # The build system does not honour CMAKE_INSTALL_LIBDIR as a + # relative dir, which is against the spirit of GNUInstallDirs, #610066 + -DCMAKE_INSTALL_LIBDIR="${EPREFIX}"/usr/$(get_libdir) + + ## Features + -DBUILD_DOC=OFF + -DBUILD_DOX_DOC=OFF + -DUSE_RPATH=OFF + -DPREBUILT_DOC=$(usex doc) + -DHAVE_SHAPELIB=$(usex shapefile) + -DWITH_FREETYPE=$(usex truetype) + -DPL_HAVE_PTHREAD=$(usex threads) + -DPL_HAVE_QHULL=$(usex qhull) + -DPLPLOT_USE_QT5=$(usex qt5) + + ## Tests + -DBUILD_TEST=$(usex test) + + ## Bindings + -DENABLE_ada=OFF + -DENABLE_d=OFF + -DENABLE_ocaml=$(usex ocaml) + -DENABLE_pyqt4=OFF + -DENABLE_cxx=$(usex cxx) + -DENABLE_DYNDRIVERS=$(usex dynamic) + -DENABLE_fortran=$(usex fortran) + -DENABLE_java=$(usex java) + -DENABLE_lua=$(usex lua) + -DENABLE_octave=$(usex octave) + -DENABLE_python=$(usex python) + -DENABLE_qt=$(usex qt5) + -DENABLE_tcl=$(usex tcl) + -DENABLE_itcl=$(usex tcl) + -DENABLE_tk=$(usex tk) + -DENABLE_itk=$(usex tk) + -DENABLE_wxwidgets=$(usex wxwidgets) + + ## Drivers + -DPLD_cgm=OFF + -DPLD_gif=OFF + -DPLD_jpeg=OFF + -DPLD_plmeta=OFF + -DPLD_png=OFF + -DPLD_pstex=OFF + -DPLD_wxpng=OFF + -DPLD_mem=ON + -DPLD_null=ON + -DPLD_wingcc=ON + # Cairo + $(usex cairo "" "-DDEFAULT_NO_CAIRO_DEVICES=ON") + -DPLD_epscairo=$(usex cairo ON OFF) + -DPLD_extcairo=$(usex cairo ON OFF) + -DPLD_memcairo=$(usex cairo ON OFF) + -DPLD_pdfcairo=$(usex cairo ON OFF) + -DPLD_pngcairo=$(usex cairo ON OFF) + -DPLD_pscairo=$(usex cairo ON OFF) + -DPLD_svgcairo=$(usex cairo ON OFF) + -DPLD_xcairo=$(usex cairo ON OFF) + # LaTeX + -DPLD_ps=$(usex latex ON OFF) + # PDF + -DPLD_pdf=$(usex pdf ON OFF) + # Qt + -DPLD_aqt=$(usex qt5 ON OFF) + -DPLD_bmpqt=$(usex qt5 ON OFF) + -DPLD_epsqt=$(usex qt5 ON OFF) + -DPLD_extqt=$(usex qt5 ON OFF) + -DPLD_jpgqt=$(usex qt5 ON OFF) + -DPLD_memqt=$(usex qt5 ON OFF) + -DPLD_pdfqt=$(usex qt5 ON OFF) + -DPLD_pngqt=$(usex qt5 ON OFF) + -DPLD_ppmqt=$(usex qt5 ON OFF) + -DPLD_qtwidget=$(usex qt5 ON OFF) + -DPLD_svgqt=$(usex qt5 ON OFF) + -DPLD_tiffqt=$(usex qt5 ON OFF) + # SVG + -DPLD_svg=$(usex svg ON OFF) + # Tk + -DPLD_ntk=$(usex tk ON OFF) + -DPLD_tk=$(usex tk ON OFF) + -DPLD_tkwin=$(usex tk ON OFF) + # Truetype + -DPLD_psttf=$(usex truetype ON OFF) + # Wx + -DPLD_wxwidgets=$(usex wxwidgets ON OFF) + # X + -DPLD_xfig=$(usex X ON OFF) + -DPLD_xwin=$(usex X ON OFF) + ) + + use truetype && mycmakeargs+=( + -DPL_FREETYPE_FONT_PATH="${EPREFIX}"/usr/share/fonts/freefont + ) + use shapefile && mycmakeargs+=( + -DSHAPELIB_INCLUDE_DIR="${EPREFIX}"/usr/include/libshp + ) + use ocaml && mycmakeargs+=( + -DOCAML_INSTALL_DIR="$(ocamlc -where)" + ) + use python && mycmakeargs+=( + -DENABLE_pyqt5=$(usex qt5) + ) + + cmake-utils_src_configure + + # clean up bloated pkg-config files (help linking properly on prefix) + sed -i \ + -e "/Cflags/s:-I\(${EPREFIX}\|\)/usr/include[[:space:]]::g" \ + -e "/Libs/s:-L\(${EPREFIX}\|\)/usr/lib\(64\|\)[[:space:]]::g" \ + -e "s:${LDFLAGS}::g" \ + "${BUILD_DIR}"/pkgcfg/*pc || die +} + +src_test() { + virtx cmake-utils_src_test +} + +src_install() { + cmake-utils_src_install + + if use examples; then + docompress -x /usr/share/doc/${PF}/examples + else + rm -r "${ED%/}"/usr/share/doc/${PF}/examples || die + fi + + if use java; then + java-pkg_dojar "${BUILD_DIR}"/examples/java/${PN}.jar + java-pkg_regso "${EPREFIX}"/usr/$(get_libdir)/jni/plplotjavac_wrap.so + fi +}