From d1ba0caf19fcd7472934bc7aebcd8d43e36e9c66 Mon Sep 17 00:00:00 2001 From: Alfredo Tupone Date: Thu, 9 Apr 2026 22:07:11 +0200 Subject: [PATCH] dev-lang/gdl: add 1.1.3 Signed-off-by: Alfredo Tupone --- dev-lang/gdl/Manifest | 1 + dev-lang/gdl/files/gdl-1.1.3-cmake.patch | 110 ++++++++++++ .../gdl/files/gdl-1.1.3-test_rounding.patch | 24 +++ dev-lang/gdl/gdl-1.1.3.ebuild | 159 ++++++++++++++++++ 4 files changed, 294 insertions(+) create mode 100644 dev-lang/gdl/files/gdl-1.1.3-cmake.patch create mode 100644 dev-lang/gdl/files/gdl-1.1.3-test_rounding.patch create mode 100644 dev-lang/gdl/gdl-1.1.3.ebuild diff --git a/dev-lang/gdl/Manifest b/dev-lang/gdl/Manifest index d70e9cbb3bc08..f5f1b419bdc5c 100644 --- a/dev-lang/gdl/Manifest +++ b/dev-lang/gdl/Manifest @@ -1,2 +1,3 @@ DIST gdl-1.0.4.tar.gz 33219638 BLAKE2B db0e843cf2e3f07d6f53d3a8b46cb95303cd0ae199c98099f45bbdfe5d206f325a8f9814935e876a3dfee3a46da0144766b18fa54b38a653567a429a88f06250 SHA512 3206bdd88b0478493221c0552e62620f1c9acbfec6f1900d73d932caae12401bf825e8893c81f844965f79e332bedb6ea99e6ea6f2b21427022efa60d1326eb0 DIST gdl-1.0.6.tar.gz 33302678 BLAKE2B 826769f70d91059686a32af811f3c3e7295c3be0f3d9f2cecae62a8906c45fa09d3ed9d39049ef4f5e858456d7687be482a5c536b0b54aaa27967e5ca62aa5cb SHA512 8a10e2d33d99aa2d29a085957a726b7d1af8e73fdb7c725508c929b5dbbff55e3fbb9265e9aa9c14e73bf72f6409aac24817032bd81007b694ebb689c02aa75a +DIST gdl-1.1.3.tar.gz 33933705 BLAKE2B 4592d1d0a0d40b2d961adace8dbb930d6edb1a78c36726996cc6c1504ce3dc04d732c659206289611f57caa9b4d6f4b1ebbf4ad8adaa3c6c0fee8f5ade8fe0b4 SHA512 4f4af5c5176a97d366d098fe27223895b90d6eed99a37cb144d334fd7751da8f27b06c4f09b7ac6628389387e8ad1108dbb6197a549d9c2b9ffce1da7ba418ac diff --git a/dev-lang/gdl/files/gdl-1.1.3-cmake.patch b/dev-lang/gdl/files/gdl-1.1.3-cmake.patch new file mode 100644 index 0000000000000..e40d17cb4ccd8 --- /dev/null +++ b/dev-lang/gdl/files/gdl-1.1.3-cmake.patch @@ -0,0 +1,110 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index f7b8801d..8281aee1 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -505,36 +505,16 @@ + # -DMAGICK=ON|OFF + # -DMAGICKDIR=DIR + if(MAGICK) +- set(CMAKE_PREFIX_PATH ${MAGICKDIR}) +- find_package(ImageMagick QUIET COMPONENTS Magick++ MagickWand MagickCore) +- mark_as_advanced(ImageMagick_EXECUTABLE_DIR ImageMagick_Magick++_INCLUDE_DIR ImageMagick_Magick++_LIBRARY +- ImageMagick_MagickCore_INCLUDE_DIR ImageMagick_MagickCore_LIBRARY ImageMagick_MagickWand_INCLUDE_DIR ImageMagick_MagickWand_LIBRARY) +- set(USE_MAGICK ${ImageMagick_FOUND}) +- set(HAS_IMAGEMAGICK ${ImageMagick_FOUND}) +- if(ImageMagick_FOUND) +- find_program(MAGICKXXCONFIG Magick++-config) +- if(MAGICKXXCONFIG) +- execute_process(COMMAND ${MAGICKXXCONFIG} "--libs" OUTPUT_VARIABLE MAGICKXXCONFIGLIBS OUTPUT_STRIP_TRAILING_WHITESPACE) +- set(LIBRARIES ${LIBRARIES} ${MAGICKXXCONFIGLIBS}) +- execute_process(COMMAND ${MAGICKXXCONFIG} "--cxxflags" OUTPUT_VARIABLE MAGICKXXCONFIGCXXFLAGS OUTPUT_STRIP_TRAILING_WHITESPACE) +- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${MAGICKXXCONFIGCXXFLAGS}") +- else(MAGICKXXCONFIG) +- message(FATAL_ERROR "ImageMagick is required but was not found (Magick++-config).\n" +- "Use -DMAGICKDIR=DIR to specify the ImageMagick directory.\n" +- "Use -DMAGICK=OFF to not use it.\n" +- "(suitable Debian/Ubuntu package: libmagick++-dev)\n" +- "(suitable Fedora/CentOS package: ImageMagick-c++-devel)") +- endif(MAGICKXXCONFIG) +- set(LIBRARIES ${LIBRARIES} ${ImageMagick_LIBRARIES}) +- include_directories(${ImageMagick_INCLUDE_DIRS} ${ImageMagick_MagickCore_INCLUDE_DIRS}) +- set(MAGICK_LIBRARIES ${ImageMagick_LIBRARIES}) +- else(ImageMagick_FOUND) +- message(FATAL_ERROR "ImageMagick is required but was not found.\n" +- "Use -DMAGICKDIR=DIR to specify the ImageMagick directory.\n" +- "Use -DMAGICK=OFF to not use it.\n" +- "(suitable Debian/Ubuntu package: libmagick++-dev)\n" +- "(suitable Fedora/CentOS package: ImageMagick-c++-devel)") +- endif(ImageMagick_FOUND) ++ find_package(PkgConfig REQUIRED) ++ pkg_check_modules(Magick++ REQUIRED Magick++) ++ pkg_check_modules(MagickWand REQUIRED MagickWand) ++ pkg_check_modules(MagickCore REQUIRED MagickCore) ++ ++ set(MAGICK_LIBRARIES ${Magick++_LIBRARIES} ${MagickWand_LIBRARIES} ${MagickCore_LIBRARIES}) ++ set(LIBRARIES ${LIBRARIES} ${MAGICK_LIBRARIES}) ++ include_directories(${Magick++_INCLUDE_DIRS}) ++ include_directories(${MagickWand_INCLUDE_DIRS}) ++ include_directories(${MagickCore_INCLUDE_DIRS}) + endif(MAGICK) + + # libtiff +@@ -895,20 +877,8 @@ endif(GLPK) + # -DSHAPELIB=ON|OFF + # -DSHAPELIBDIR=DIR + if(SHAPELIB) +- set(CMAKE_PREFIX_PATH ${SHAPELIBDIR}) +- find_package(SHAPELIB QUIET) +- set(USE_SHAPELIB ${SHAPELIB_FOUND}) +- if(SHAPELIB_FOUND) +- set(LIBRARIES ${LIBRARIES} ${SHAPELIB_LIBRARIES}) +- include_directories(${SHAPELIB_INCLUDE_DIR}) +- else(SHAPELIB_FOUND) +- message(FATAL_ERROR "SHAPELIB (http://shapelib.maptools.org/) is required but was not found.\n" +- "Use -DSHAPELIBDIR=DIR to specify the SHAPELIB-devel directory tree.\n" +- "Use -DSHAPELIB=OFF to not use it.\n" +- "shapelib is often in package libshp-devel.\n" +- "(suitable Debian/Ubuntu package: libshp-dev)\n" +- "(suitable Fedora/CentOS package: shapelib-devel)\n") +- endif(SHAPELIB_FOUND) ++ find_package(PkgConfig REQUIRED) ++ pkg_check_modules(shapelib REQUIRED shapelib) + endif(SHAPELIB) + # EXPAT for IDLffXMLSAX and IDLffXMLDOM + # -DEXPAT=ON|OFF +diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt +index 968ead9d..b0623de4 100644 +--- a/src/CMakeLists.txt ++++ b/src/CMakeLists.txt +@@ -221,11 +221,11 @@ + set_source_files_properties(libinit_cl.cpp PROPERTIES COMPILE_FLAGS -Wno-deprecated-declarations) + #whereami + add_library(whereami STATIC ${CMAKE_SOURCE_DIR}/src/whereami/src/whereami.c) +-add_subdirectory(antlr) ++find_library(ANTLR_LIBRARY NAMES antlr) + add_subdirectory(plplot) + add_subdirectory(dlm) + +-include_directories(${CMAKE_SOURCE_DIR} ${CMAKE_SOURCE_DIR}/src ${CMAKE_SOURCE_DIR}/src/antlr ${CMAKE_BINARY_DIR}/src ${CMAKE_SOURCE_DIR}/src/whereami/src ${CMAKE_BINARY_DIR}) ++include_directories(${CMAKE_SOURCE_DIR} ${CMAKE_SOURCE_DIR}/src ${CMAKE_BINARY_DIR}/src ${CMAKE_SOURCE_DIR}/src/whereami/src ${CMAKE_BINARY_DIR}) + link_directories(${LINK_DIRECTORIES}) + + if(PYTHON_MODULE) #GDL.so +@@ -249,8 +249,7 @@ + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}") + endif(USE_OPENMP) + +-add_dependencies(gdl plplot antlr whereami) # be sure that antlr is built before gdl +-target_link_libraries(gdl plplot antlr whereami) # link antlr against gdl. added librt for mmap (unix only, not osx, apparently) ++target_link_libraries(gdl plplot ${ANTLR_LIBRARY} whereami) # link antlr against gdl. added librt for mmap (unix only, not osx, apparently) + if(TARGET Eigen3::Eigen) + target_link_libraries(gdl Eigen3::Eigen) + endif() +--- a/src/dlm/CMakeLists.txt 2026-04-09 22:04:52.899683498 +0200 ++++ b/src/dlm/CMakeLists.txt 2026-04-09 22:05:08.327507279 +0200 +@@ -1,4 +1,4 @@ +-cmake_minimum_required(VERSION 3.5) ++cmake_minimum_required(VERSION 3.10) + ## if (NOT MINGW ) + ## project(MyLittleProject VERSION 1.0.0 DESCRIPTION "loadable shared library providing command MYCOMMAND") + ## set(CMAKE_SHARED_LIBRARY_PREFIX "") # prevent to prepend 'lib' to all .so names diff --git a/dev-lang/gdl/files/gdl-1.1.3-test_rounding.patch b/dev-lang/gdl/files/gdl-1.1.3-test_rounding.patch new file mode 100644 index 0000000000000..514996f208298 --- /dev/null +++ b/dev-lang/gdl/files/gdl-1.1.3-test_rounding.patch @@ -0,0 +1,24 @@ +--- a/testsuite/test_rounding.pro 2026-04-09 20:47:09.851979075 +0200 ++++ b/testsuite/test_rounding.pro 2026-04-09 21:01:46.643929351 +0200 +@@ -51,12 +51,17 @@ + expected=[123, -123] + ; + for ii=0, N_ELEMENTS(list_numeric_types)-1 do begin ++ ;; Cannot assign negative values to unsigned. Dropping the negative seed ++ ;; for those unsigned types ++ is_unsigned = (types[ii] EQ 1) OR (types[ii] EQ 12) OR (types[ii] EQ 13) OR (types[ii] EQ 15) ++ tseed = is_unsigned ? seed[0] : seed ++ texpected = is_unsigned ? expected[0] : expected + ;; +- if KEYWORD_SET(round) then res_int=ROUND(FIX(seed, type=types[ii])) +- if KEYWORD_SET(ceil) then res_int=CEIL(FIX(seed, type=types[ii])) +- if KEYWORD_SET(floor) then res_int=FLOOR(FIX(seed, type=types[ii])) ++ if KEYWORD_SET(round) then res_int=ROUND(FIX(tseed, type=types[ii])) ++ if KEYWORD_SET(ceil) then res_int=CEIL(FIX(tseed, type=types[ii])) ++ if KEYWORD_SET(floor) then res_int=FLOOR(FIX(tseed, type=types[ii])) + ;; +- expected_int=FIX(expected, type=list_numeric_types[ii]) ++ expected_int=FIX(texpected, type=list_numeric_types[ii]) + ;; + if KEYWORD_SET(verbose) then begin + HELP, res_int diff --git a/dev-lang/gdl/gdl-1.1.3.ebuild b/dev-lang/gdl/gdl-1.1.3.ebuild new file mode 100644 index 0000000000000..c2fb2b4aa78b6 --- /dev/null +++ b/dev-lang/gdl/gdl-1.1.3.ebuild @@ -0,0 +1,159 @@ +# Copyright 1999-2026 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +WX_GTK_VER="3.2-gtk3" +PYTHON_COMPAT=( python3_{11..14} ) + +inherit cmake flag-o-matic python-single-r1 toolchain-funcs virtualx wxwidgets + +DESCRIPTION="GNU Data Language" +HOMEPAGE="https://github.com/gnudatalanguage/gdl" +SRC_URI="https://github.com/gnudatalanguage/${PN}/releases/download/v${PV}/${PN}-v${PV}.tar.gz -> ${P}.tar.gz" +S="${WORKDIR}/${PN}-v${PV}" + +LICENSE="GPL-2" +SLOT="0" +KEYWORDS="~amd64 ~x86" +IUSE=" + +eigen fftw glpk graphicsmagick gshhs hdf hdf5 +imagemagick netcdf + openmp png proj postscript python shapelib tiff udunits wxwidgets +" +REQUIRED_USE="python? ( ${PYTHON_REQUIRED_USE} )" + +RDEPEND=" + dev-cpp/antlr-cpp:2= + dev-libs/expat + net-libs/libtirpc:= + sci-libs/gsl:= + sys-libs/ncurses:= + sys-libs/readline:= + virtual/zlib:= + x11-libs/libX11 + fftw? ( sci-libs/fftw:3.0= ) + glpk? ( sci-mathematics/glpk:= ) + gshhs? ( + sci-geosciences/gshhs-data + sci-geosciences/gshhs:= + ) + hdf? ( sci-libs/hdf:= ) + hdf5? ( sci-libs/hdf5:= ) + imagemagick? ( + !graphicsmagick? ( media-gfx/imagemagick:=[cxx] ) + graphicsmagick? ( media-gfx/graphicsmagick:=[cxx] ) + ) + netcdf? ( sci-libs/netcdf:= ) + png? ( media-libs/libpng:= ) + proj? ( sci-libs/proj:= ) + postscript? ( dev-libs/pslib ) + python? ( + ${PYTHON_DEPS} + $(python_gen_cond_dep ' + dev-python/numpy[${PYTHON_USEDEP}] + ') + ) + shapelib? ( sci-libs/shapelib:= ) + tiff? ( + media-libs/tiff:= + sci-libs/libgeotiff:= + ) + udunits? ( sci-libs/udunits ) + wxwidgets? ( x11-libs/wxGTK:${WX_GTK_VER}=[X] ) +" +DEPEND="${RDEPEND} + eigen? ( dev-cpp/eigen:3 ) +" +BDEPEND=" + virtual/pkgconfig +" + +PATCHES=( + "${FILESDIR}"/${PN}-1.0.4-r3-musl.patch + "${FILESDIR}"/${PN}-1.1.3-cmake.patch + "${FILESDIR}"/${PN}-1.1.3-test_rounding.patch +) +DOCS=( AUTHORS HACKING NEWS PYTHON.txt README README.md ) + +pkg_pretend() { + [[ ${MERGE_TYPE} != binary ]] && use openmp && tc-check-openmp +} + +pkg_setup() { + [[ ${MERGE_TYPE} != binary ]] && use openmp && tc-check-openmp + use python && python-single-r1_pkg_setup +} + +src_prepare() { + use hdf5 && has_version sci-libs/hdf5[mpi] && export CXX=mpicxx + + # remove bundled antlr + rm -r src/antlr || die + + # gentoo: avoid install files in datadir directory + # and manually install them in src_install + sed -e '/AUTHORS/d' -i CMakeLists.txt || die + + cmake_src_prepare +} + +src_configure() { + use wxwidgets && setup-wxwidgets unicode + # -Werror=strict-aliasing + # https://bugs.gentoo.org/930966 + # https://github.com/gnudatalanguage/gdl/issues/1852 + # + # Do not trust with LTO either. + append-flags -fno-strict-aliasing + filter-lto + + # MPI is still very buggy + # x11=off does not compile + local mycmakeargs=( + -DMPI=OFF + -DREADLINE=ON + -DX11=ON + -DEXPAT=ON + -DEIGEN3=$(usex eigen) + -DFFTW=$(usex fftw) + -DGRIB=OFF + -DGLPK=$(usex glpk) + -DHDF=$(usex hdf) + -DHDF5=$(usex hdf5) + -DLIBPROJ=$(usex proj) + -DNETCDF=$(usex netcdf) + -DOPENMP=$(usex openmp) + -DPNGLIB=$(usex png) + -DUDUNITS2=$(usex udunits) + -DWXWIDGETS=$(usex wxwidgets) + -DGRAPHICSMAGICK=$(usex imagemagick $(usex graphicsmagick)) + -DMAGICK=$(usex imagemagick $(usex !graphicsmagick)) + -DTIFF=$(usex tiff) + -DGEOTIFF=$(usex tiff) + -DPYTHON_MODULE=$(usex python) + -DPYTHON=$(usex python) + -DSHAPELIB=$(usex shapelib) + -DQHULL=OFF + ) + + if use python; then + # automatically selection ignores EPYTHON + mycmakeargs+=( + -DPYTHONVERSION="${EPYTHON#python}" + ) + fi + + cmake_src_configure +} + +src_test() { + PLPLOT_DRV_DIR=src/plplotdriver virtx cmake_src_test +} + +src_install() { + cmake_src_install + + newenvd - 50gdl <<-_EOF_ + GDL_PATH="+${EPREFIX}/usr/share/gnudatalanguage" + _EOF_ +}