Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package gnuplot for openSUSE:Factory checked in at 2023-09-21 22:13:12 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/gnuplot (Old) and /work/SRC/openSUSE:Factory/.gnuplot.new.1770 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "gnuplot" Thu Sep 21 22:13:12 2023 rev:92 rq:1112274 version:5.4.9 Changes: -------- --- /work/SRC/openSUSE:Factory/gnuplot/gnuplot-doc.changes 2023-05-23 14:53:18.358043849 +0200 +++ /work/SRC/openSUSE:Factory/.gnuplot.new.1770/gnuplot-doc.changes 2023-09-21 22:13:25.951926689 +0200 @@ -1,0 +2,19 @@ +Tue Sep 12 10:39:22 UTC 2023 - Dr. Werner Fink <wer...@suse.de> + +- Update to gnuplot 5.4.9 + * NEW qt: support building with Qt6 + * CHANGE check plugin version at time of import Bug #2629 + * FIX prevent segfault if GNUPLOT_DRIVER_DIR is invalid + * FIX (regression) only y autoscale yerrorbars to points in xrange Bug #2631 + * FIX possible memory corruption if clipping causes 0-size polygons + * FIX wxt: initialization of key box toggle state + * FIX post: handle pixmaps Bug #2644 + +------------------------------------------------------------------- +Mon Jun 19 06:55:17 UTC 2023 - Dr. Werner Fink <wer...@suse.de> + +- Update to gnuplot 5.4.8 + * FIX version reporting in Windows binaries + No other changes + +------------------------------------------------------------------- --- /work/SRC/openSUSE:Factory/gnuplot/gnuplot.changes 2023-06-20 16:40:15.704441896 +0200 +++ /work/SRC/openSUSE:Factory/.gnuplot.new.1770/gnuplot.changes 2023-09-21 22:13:26.107932351 +0200 @@ -1,0 +2,12 @@ +Tue Sep 12 10:39:22 UTC 2023 - Dr. Werner Fink <wer...@suse.de> + +- Update to gnuplot 5.4.9 + * NEW qt: support building with Qt6 + * CHANGE check plugin version at time of import Bug #2629 + * FIX prevent segfault if GNUPLOT_DRIVER_DIR is invalid + * FIX (regression) only y autoscale yerrorbars to points in xrange Bug #2631 + * FIX possible memory corruption if clipping causes 0-size polygons + * FIX wxt: initialization of key box toggle state + * FIX post: handle pixmaps Bug #2644 + +------------------------------------------------------------------- Old: ---- gnuplot-5.4.8.tar.gz New: ---- gnuplot-5.4.9.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ gnuplot.spec ++++++ --- /var/tmp/diff_new_pack.qanI6S/_old 2023-09-21 22:13:29.316048784 +0200 +++ /var/tmp/diff_new_pack.qanI6S/_new 2023-09-21 22:13:29.320048930 +0200 @@ -78,7 +78,7 @@ BuildRequires: tex(textgreek.sty) %endif URL: https://www.gnuplot.info/ -Version: 5.4.8 +Version: 5.4.9 Release: 0 %global underscore 5_4 %if "%{flavor}" == "" ++++++ Gnuplot_5_4.pdf ++++++ (binary differes) ++++++ gnuplot-5.4.8.tar.gz -> gnuplot-5.4.9.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gnuplot-5.4.8/NEWS new/gnuplot-5.4.9/NEWS --- old/gnuplot-5.4.8/NEWS 2023-06-02 07:08:19.000000000 +0200 +++ new/gnuplot-5.4.9/NEWS 2023-09-04 23:20:21.000000000 +0200 @@ -1,3 +1,13 @@ +Changes in 5.4.9 +================ +* NEW qt: support building with Qt6 +* CHANGE check plugin version at time of import Bug #2629 +* FIX prevent segfault if GNUPLOT_DRIVER_DIR is invalid +* FIX (regression) only y autoscale yerrorbars to points in xrange Bug #2631 +* FIX possible memory corruption if clipping causes 0-size polygons +* FIX wxt: initialization of key box toggle state +* FIX post: handle pixmaps Bug #2644 + Changes in 5.4.8 ================ * FIX version reporting in Windows binaries diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gnuplot-5.4.8/PATCHLEVEL new/gnuplot-5.4.9/PATCHLEVEL --- old/gnuplot-5.4.8/PATCHLEVEL 2023-06-02 01:12:49.000000000 +0200 +++ new/gnuplot-5.4.9/PATCHLEVEL 2023-09-04 23:20:21.000000000 +0200 @@ -1 +1 @@ -8 +9 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gnuplot-5.4.8/RELEASE_NOTES new/gnuplot-5.4.9/RELEASE_NOTES --- old/gnuplot-5.4.8/RELEASE_NOTES 2023-06-02 01:18:34.000000000 +0200 +++ new/gnuplot-5.4.9/RELEASE_NOTES 2023-09-04 23:20:21.000000000 +0200 @@ -1,14 +1,13 @@ - Gnuplot Version 5.4.8 Release Notes + Gnuplot Version 5.4.9 Release Notes =================================== -The 5.4.8 patchlevel release contains various non-critical bug fixes -to the current stable version 5.4. -Also the latex terminals have been updated to work with texlive2023. - -Note: Version reporting in the Windows binaries for 5.4.7 was incorrect. -Rather than letting the generic source distribution get out of sync with -the binaries, the version has been bumped to 5.4.8 in both. -There are no other changes between patchlevels 7 and 8. +The 5.4.9 patchlevel release contains various non-critical bug fixes +to the current stable gnuplot version 5.4. +It also includes a change to the configuration system to support +linking against Qt6 (previous releases checked only for Qt5 or Qt4). + +This is probably the final update to version 5.4, +as a full release of version 6 is expected by the end of this year. Gnuplot development is tracked in a git repository on SourceForge. You can generate a complete history of changes using "git log" @@ -16,14 +15,24 @@ git clone -b branch-5-4-stable git://git.code.sf.net/p/gnuplot/gnuplot-main -Release Notes date: 01-Jun-2023 +Release Notes date: 04-Sep-2023 + +Changes in 5.4.9 +================ +* NEW qt: support building with Qt6 +* CHANGE check plugin version at time of import Bug #2629 +* FIX prevent segfault if GNUPLOT_DRIVER_DIR is invalid +* FIX (regression) only y autoscale yerrorbars to points in xrange Bug #2631 +* FIX possible memory corruption if clipping causes 0-size polygons +* FIX wxt: initialization of key box toggle state +* FIX post: handle pixmaps Bug #2644 + Changes in 5.4.8 ================ * FIX version reporting in Windows binaries No other changes - Changes in 5.4.7 ================ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gnuplot-5.4.8/configure new/gnuplot-5.4.9/configure --- old/gnuplot-5.4.8/configure 2023-06-02 05:20:07.000000000 +0200 +++ new/gnuplot-5.4.9/configure 2023-08-26 05:13:06.000000000 +0200 @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.71 for gnuplot 5.4.8. +# Generated by GNU Autoconf 2.71 for gnuplot 5.4.9. # # # Copyright (C) 1992-1996, 1998-2017, 2020-2021 Free Software Foundation, @@ -608,8 +608,8 @@ # Identity of this package. PACKAGE_NAME='gnuplot' PACKAGE_TARNAME='gnuplot' -PACKAGE_VERSION='5.4.8' -PACKAGE_STRING='gnuplot 5.4.8' +PACKAGE_VERSION='5.4.9' +PACKAGE_STRING='gnuplot 5.4.9' PACKAGE_BUGREPORT='' PACKAGE_URL='' @@ -1453,7 +1453,7 @@ # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures gnuplot 5.4.8 to adapt to many kinds of systems. +\`configure' configures gnuplot 5.4.9 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1524,7 +1524,7 @@ if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of gnuplot 5.4.8:";; + short | recursive ) echo "Configuration of gnuplot 5.4.9:";; esac cat <<\_ACEOF @@ -1700,7 +1700,7 @@ test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -gnuplot configure 5.4.8 +gnuplot configure 5.4.9 generated by GNU Autoconf 2.71 Copyright (C) 2021 Free Software Foundation, Inc. @@ -2331,7 +2331,7 @@ This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by gnuplot $as_me 5.4.8, which was +It was created by gnuplot $as_me 5.4.9, which was generated by GNU Autoconf 2.71. Invocation command line was $ $0$ac_configure_args_raw @@ -3838,7 +3838,7 @@ # Define the identity of the package. PACKAGE='gnuplot' - VERSION='5.4.8' + VERSION='5.4.9' printf "%s\n" "#define PACKAGE \"$PACKAGE\"" >>confdefs.h @@ -8623,8 +8623,7 @@ # Put the nasty error message in config.log where it belongs echo "$LIBCERF_PKG_ERRORS" >&5 - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: -Package requirements (libcerf) were not met: + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Package requirements (libcerf) were not met: $LIBCERF_PKG_ERRORS @@ -8635,8 +8634,7 @@ and LIBCERF_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details. " >&5 -printf "%s\n" "$as_me: WARNING: -Package requirements (libcerf) were not met: +printf "%s\n" "$as_me: WARNING: Package requirements (libcerf) were not met: $LIBCERF_PKG_ERRORS @@ -12501,8 +12499,7 @@ # Put the nasty error message in config.log where it belongs echo "$libgd_PKG_ERRORS" >&5 - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: -Package requirements (gdlib) were not met: + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Package requirements (gdlib) were not met: $libgd_PKG_ERRORS @@ -12513,8 +12510,7 @@ and libgd_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details. " >&5 -printf "%s\n" "$as_me: WARNING: -Package requirements (gdlib) were not met: +printf "%s\n" "$as_me: WARNING: Package requirements (gdlib) were not met: $libgd_PKG_ERRORS @@ -15393,8 +15389,7 @@ # Put the nasty error message in config.log where it belongs echo "$CAIROPANGO_PKG_ERRORS" >&5 - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: -Package requirements (cairo >= 0.9.0 pango >= 1.22 pangocairo >= 1.10) were not met: + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Package requirements (cairo >= 0.9.0 pango >= 1.22 pangocairo >= 1.10) were not met: $CAIROPANGO_PKG_ERRORS @@ -15405,8 +15400,7 @@ and CAIROPANGO_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details. " >&5 -printf "%s\n" "$as_me: WARNING: -Package requirements (cairo >= 0.9.0 pango >= 1.22 pangocairo >= 1.10) were not met: +printf "%s\n" "$as_me: WARNING: Package requirements (cairo >= 0.9.0 pango >= 1.22 pangocairo >= 1.10) were not met: $CAIROPANGO_PKG_ERRORS @@ -16075,8 +16069,7 @@ # Put the nasty error message in config.log where it belongs echo "$CAIROPDF_PKG_ERRORS" >&5 - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: -Package requirements ( cairo >= 1.2 cairo-pdf >= 1.2 pango >= 1.22 pangocairo >= 1.10 glib-2.0 >= 2.28) were not met: + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Package requirements ( cairo >= 1.2 cairo-pdf >= 1.2 pango >= 1.22 pangocairo >= 1.10 glib-2.0 >= 2.28) were not met: $CAIROPDF_PKG_ERRORS @@ -16087,8 +16080,7 @@ and CAIROPDF_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details. " >&5 -printf "%s\n" "$as_me: WARNING: -Package requirements ( cairo >= 1.2 cairo-pdf >= 1.2 pango >= 1.22 pangocairo >= 1.10 glib-2.0 >= 2.28) were not met: +printf "%s\n" "$as_me: WARNING: Package requirements ( cairo >= 1.2 cairo-pdf >= 1.2 pango >= 1.22 pangocairo >= 1.10 glib-2.0 >= 2.28) were not met: $CAIROPDF_PKG_ERRORS @@ -16274,12 +16266,146 @@ enable_qt_ok=no fi - if test "x${with_qt}" = "xqt5"; then - try_qt4=no - else + if test "x${with_qt}" = "xqt4"; then try_qt4=yes + else + try_qt4=no fi + if test "x${with_qt}" != "xqt4"; then + pkg_failed="not_tried" + if test "x${with_qt}" != "xqt5"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking Checking for Qt6 support libraries" >&5 +printf %s "checking Checking for Qt6 support libraries... " >&6; } + +pkg_failed=no +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for QT" >&5 +printf %s "checking for QT... " >&6; } + +if test -n "$PKG_CONFIG"; then + if test -n "$QT_CFLAGS"; then + pkg_cv_QT_CFLAGS="$QT_CFLAGS" + else + if test -n "$PKG_CONFIG" && \ + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"Qt6Core Qt6Gui Qt6Network Qt6Svg Qt6PrintSupport Qt6Core5Compat\""; } >&5 + ($PKG_CONFIG --exists --print-errors "Qt6Core Qt6Gui Qt6Network Qt6Svg Qt6PrintSupport Qt6Core5Compat") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_QT_CFLAGS=`$PKG_CONFIG --cflags "Qt6Core Qt6Gui Qt6Network Qt6Svg Qt6PrintSupport Qt6Core5Compat" 2>/dev/null` +else + pkg_failed=yes +fi + fi +else + pkg_failed=untried +fi +if test -n "$PKG_CONFIG"; then + if test -n "$QT_LIBS"; then + pkg_cv_QT_LIBS="$QT_LIBS" + else + if test -n "$PKG_CONFIG" && \ + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"Qt6Core Qt6Gui Qt6Network Qt6Svg Qt6PrintSupport Qt6Core5Compat\""; } >&5 + ($PKG_CONFIG --exists --print-errors "Qt6Core Qt6Gui Qt6Network Qt6Svg Qt6PrintSupport Qt6Core5Compat") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_QT_LIBS=`$PKG_CONFIG --libs "Qt6Core Qt6Gui Qt6Network Qt6Svg Qt6PrintSupport Qt6Core5Compat" 2>/dev/null` +else + pkg_failed=yes +fi + fi +else + pkg_failed=untried +fi + + + +if test $pkg_failed = yes; then + +if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then + _pkg_short_errors_supported=yes +else + _pkg_short_errors_supported=no +fi + if test $_pkg_short_errors_supported = yes; then + QT_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "Qt6Core Qt6Gui Qt6Network Qt6Svg Qt6PrintSupport Qt6Core5Compat"` + else + QT_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "Qt6Core Qt6Gui Qt6Network Qt6Svg Qt6PrintSupport Qt6Core5Compat"` + fi + # Put the nasty error message in config.log where it belongs + echo "$QT_PKG_ERRORS" >&5 + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Package requirements (Qt6Core Qt6Gui Qt6Network Qt6Svg Qt6PrintSupport Qt6Core5Compat) were not met: + +$QT_PKG_ERRORS + +Consider adjusting the PKG_CONFIG_PATH environment variable if you +installed software in a non-standard prefix. + +Alternatively, you may set the environment variables QT_CFLAGS +and QT_LIBS to avoid the need to call pkg-config. +See the pkg-config man page for more details. +" >&5 +printf "%s\n" "$as_me: WARNING: Package requirements (Qt6Core Qt6Gui Qt6Network Qt6Svg Qt6PrintSupport Qt6Core5Compat) were not met: + +$QT_PKG_ERRORS + +Consider adjusting the PKG_CONFIG_PATH environment variable if you +installed software in a non-standard prefix. + +Alternatively, you may set the environment variables QT_CFLAGS +and QT_LIBS to avoid the need to call pkg-config. +See the pkg-config man page for more details. +" >&2;} +elif test $pkg_failed = untried; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: +The pkg-config script could not be found or is too old. Make sure it +is in your PATH or set the PKG_CONFIG environment variable to the full +path to pkg-config. + +Alternatively, you may set the environment variables QT_CFLAGS +and QT_LIBS to avoid the need to call pkg-config. +See the pkg-config man page for more details. + +To get pkg-config, see <http://www.freedesktop.org/software/pkgconfig>." >&5 +printf "%s\n" "$as_me: WARNING: +The pkg-config script could not be found or is too old. Make sure it +is in your PATH or set the PKG_CONFIG environment variable to the full +path to pkg-config. + +Alternatively, you may set the environment variables QT_CFLAGS +and QT_LIBS to avoid the need to call pkg-config. +See the pkg-config man page for more details. + +To get pkg-config, see <http://www.freedesktop.org/software/pkgconfig>." >&2;} +else + QT_CFLAGS=$pkg_cv_QT_CFLAGS + QT_LIBS=$pkg_cv_QT_LIBS + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + : +fi + fi + if test $pkg_failed = no; then + QT6LOC=`$PKG_CONFIG --variable=libexecdir Qt6Core` + if test "x${QT6LOC}" != "x"; then + UIC=${QT6LOC}/uic + MOC=${QT6LOC}/moc + RCC=${QT6LOC}/rcc + else + UIC=uic-qt6 + MOC=moc-qt6 + RCC=rcc-qt6 + fi + LRELEASE=lrelease-qt6 + CXXFLAGS="$CXXFLAGS -fPIC" + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: The Qt terminal will use Qt6." >&5 +printf "%s\n" "The Qt terminal will use Qt6." >&6; } + QTVER="6" + else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking Checking for Qt5 support libraries" >&5 +printf %s "checking Checking for Qt5 support libraries... " >&6; } pkg_failed=no { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for QT" >&5 @@ -16339,8 +16465,7 @@ # Put the nasty error message in config.log where it belongs echo "$QT_PKG_ERRORS" >&5 - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: -Package requirements (Qt5Core Qt5Gui Qt5Network Qt5Svg Qt5PrintSupport) were not met: + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Package requirements (Qt5Core Qt5Gui Qt5Network Qt5Svg Qt5PrintSupport) were not met: $QT_PKG_ERRORS @@ -16351,8 +16476,7 @@ and QT_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details. " >&5 -printf "%s\n" "$as_me: WARNING: -Package requirements (Qt5Core Qt5Gui Qt5Network Qt5Svg Qt5PrintSupport) were not met: +printf "%s\n" "$as_me: WARNING: Package requirements (Qt5Core Qt5Gui Qt5Network Qt5Svg Qt5PrintSupport) were not met: $QT_PKG_ERRORS @@ -16391,20 +16515,25 @@ printf "%s\n" "yes" >&6; } : fi - if test $pkg_failed = no; then - try_qt4=no - QT5LOC=`$PKG_CONFIG --variable=host_bins Qt5Core` - if test "x${QT5LOC}" != "x"; then - UIC=${QT5LOC}/uic - MOC=${QT5LOC}/moc - RCC=${QT5LOC}/rcc - LRELEASE=${QT5LOC}/lrelease + if test $pkg_failed = no; then + QT5LOC=`$PKG_CONFIG --variable=host_bins Qt5Core` + if test "x${QT5LOC}" != "x"; then + UIC=${QT5LOC}/uic + MOC=${QT5LOC}/moc + RCC=${QT5LOC}/rcc + LRELEASE=${QT5LOC}/lrelease + fi + CXXFLAGS="$CXXFLAGS -fPIC" + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: The Qt terminal will use Qt5." >&5 +printf "%s\n" "The Qt terminal will use Qt5." >&6; } + QTVER="5" fi - CXXFLAGS="$CXXFLAGS -fPIC" fi fi - if test ${try_qt4} != no; then + if test ${try_qt4} = yes; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking Checking for Qt4 support" >&5 +printf %s "checking Checking for Qt4 support... " >&6; } pkg_failed=no { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for QT" >&5 @@ -16464,8 +16593,7 @@ # Put the nasty error message in config.log where it belongs echo "$QT_PKG_ERRORS" >&5 - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: -Package requirements (QtCore >= 4.5 QtGui >= 4.5 QtNetwork >= 4.5 QtSvg >= 4.5) were not met: + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Package requirements (QtCore >= 4.5 QtGui >= 4.5 QtNetwork >= 4.5 QtSvg >= 4.5) were not met: $QT_PKG_ERRORS @@ -16476,8 +16604,7 @@ and QT_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details. " >&5 -printf "%s\n" "$as_me: WARNING: -Package requirements (QtCore >= 4.5 QtGui >= 4.5 QtNetwork >= 4.5 QtSvg >= 4.5) were not met: +printf "%s\n" "$as_me: WARNING: Package requirements (QtCore >= 4.5 QtGui >= 4.5 QtNetwork >= 4.5 QtSvg >= 4.5) were not met: $QT_PKG_ERRORS @@ -16530,10 +16657,6 @@ printf "%s\n" "The Qt terminal will use Qt4." >&6; } QTVER="4" fi - else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: The Qt terminal will use Qt5." >&5 -printf "%s\n" "The Qt terminal will use Qt5." >&6; } - QTVER="5" fi fi @@ -17428,7 +17551,7 @@ # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by gnuplot $as_me 5.4.8, which was +This file was extended by gnuplot $as_me 5.4.9, which was generated by GNU Autoconf 2.71. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -17496,7 +17619,7 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config='$ac_cs_config_escaped' ac_cs_version="\\ -gnuplot config.status 5.4.8 +gnuplot config.status 5.4.9 configured by $0, generated by GNU Autoconf 2.71, with options \\"\$ac_cs_config\\" @@ -18589,9 +18712,13 @@ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Qt terminal: yes (qt5)" >&5 printf "%s\n" " Qt terminal: yes (qt5)" >&6; } fi + if test "$QTVER" = 6; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Qt : yes (qt6)" >&5 +printf "%s\n" " Qt : yes (qt6)" >&6; } + fi else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Qt terminal: no (use --with-qt or --with-qt=qt4 to enable" >&5 -printf "%s\n" " Qt terminal: no (use --with-qt or --with-qt=qt4 to enable" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Qt : no (use --with-qt or --with-qt=qt4 or --with-qt=qt5 to enable" >&5 +printf "%s\n" " Qt : no (use --with-qt or --with-qt=qt4 or --with-qt=qt5 to enable" >&6; } fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: " >&5 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gnuplot-5.4.8/configure.ac new/gnuplot-5.4.9/configure.ac --- old/gnuplot-5.4.8/configure.ac 2023-06-02 01:13:08.000000000 +0200 +++ new/gnuplot-5.4.9/configure.ac 2023-09-04 23:20:21.000000000 +0200 @@ -5,7 +5,7 @@ dnl and also in PATCHLEVEL and src/version.c dnl -AC_INIT(gnuplot, 5.4.8) +AC_INIT(gnuplot, 5.4.9) AC_CONFIG_SRCDIR(src/graphics.c) AC_PREREQ([2.69]) @@ -990,29 +990,55 @@ enable_qt_ok=no fi - dnl First check for Qt5 - if test "x${with_qt}" = "xqt5"; then - try_qt4=no - else + dnl Qt4 only by special request + if test "x${with_qt}" = "xqt4"; then try_qt4=yes + else + try_qt4=no fi + if test "x${with_qt}" != "xqt4"; then - PKG_CHECK_MODULES_NOFAIL(QT, [Qt5Core Qt5Gui Qt5Network Qt5Svg Qt5PrintSupport]) + pkg_failed="not_tried" + if test "x${with_qt}" != "xqt5"; then + AC_MSG_CHECKING([Checking for Qt6 support libraries]) + PKG_CHECK_MODULES_NOFAIL(QT, [Qt6Core Qt6Gui Qt6Network Qt6Svg Qt6PrintSupport Qt6Core5Compat]) + fi if test $pkg_failed = no; then - try_qt4=no - QT5LOC=`$PKG_CONFIG --variable=host_bins Qt5Core` - if test "x${QT5LOC}" != "x"; then - UIC=${QT5LOC}/uic - MOC=${QT5LOC}/moc - RCC=${QT5LOC}/rcc - LRELEASE=${QT5LOC}/lrelease + QT6LOC=`$PKG_CONFIG --variable=libexecdir Qt6Core` + if test "x${QT6LOC}" != "x"; then + UIC=${QT6LOC}/uic + MOC=${QT6LOC}/moc + RCC=${QT6LOC}/rcc + else + UIC=uic-qt6 + MOC=moc-qt6 + RCC=rcc-qt6 fi + LRELEASE=lrelease-qt6 CXXFLAGS="$CXXFLAGS -fPIC" + AC_MSG_RESULT([The Qt terminal will use Qt6.]) + QTVER="6" + else + AC_MSG_CHECKING([Checking for Qt5 support libraries]) + PKG_CHECK_MODULES_NOFAIL(QT, [Qt5Core Qt5Gui Qt5Network Qt5Svg Qt5PrintSupport]) + if test $pkg_failed = no; then + QT5LOC=`$PKG_CONFIG --variable=host_bins Qt5Core` + if test "x${QT5LOC}" != "x"; then + UIC=${QT5LOC}/uic + MOC=${QT5LOC}/moc + RCC=${QT5LOC}/rcc + LRELEASE=${QT5LOC}/lrelease + fi + CXXFLAGS="$CXXFLAGS -fPIC" + AC_MSG_RESULT([The Qt terminal will use Qt5.]) + QTVER="5" + fi fi fi - dnl No Qt5, check for Qt4.5 or greater - if test ${try_qt4} != no; then + dnl Explicit request for qt4 + if test ${try_qt4} = yes; then + AC_MSG_CHECKING([Checking for Qt4 support]) PKG_CHECK_MODULES_NOFAIL(QT, [QtCore >= 4.5 QtGui >= 4.5 QtNetwork >= 4.5 QtSvg >= 4.5]) if test $pkg_failed != no; then enable_qt_ok=no @@ -1026,9 +1052,6 @@ AC_MSG_RESULT([The Qt terminal will use Qt4.]) QTVER="4" fi - else - AC_MSG_RESULT([The Qt terminal will use Qt5.]) - QTVER="5" fi fi @@ -1283,8 +1306,11 @@ if test "$QTVER" = 5; then AC_MSG_RESULT([ Qt terminal: yes (qt5)]) fi + if test "$QTVER" = 6; then + AC_MSG_RESULT([ Qt : yes (qt6)]) + fi else - AC_MSG_RESULT([ Qt terminal: no (use --with-qt or --with-qt=qt4 to enable]) + AC_MSG_RESULT([ Qt : no (use --with-qt or --with-qt=qt4 or --with-qt=qt5 to enable]) fi AC_MSG_RESULT([]) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gnuplot-5.4.8/demo/plugin/README new/gnuplot-5.4.9/demo/plugin/README --- old/gnuplot-5.4.8/demo/plugin/README 2022-05-26 21:35:50.000000000 +0200 +++ new/gnuplot-5.4.9/demo/plugin/README 2023-09-04 23:20:02.000000000 +0200 @@ -19,7 +19,7 @@ If you are building _only_ this plugin demo, under linux a minimal build command is - gcc -shared -lm -o demo_plugin.so demo_plugin.c + gcc -shared -lm -fPIC -o demo_plugin.so demo_plugin.c Under Windows + mingw it is @@ -28,7 +28,7 @@ An equivalent build command should work for the uigamma plugin or one you have created yourself. - gcc -shared -lm -o uigamma_plugin.so uigamma_plugin.c + gcc -shared -lm -fPIC -o uigamma_plugin.so uigamma_plugin.c Type "help import" in a gnuplot session for examples of how to load a function from a plugin library. The suggested sequence diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gnuplot-5.4.8/demo/plugin/gnuplot_plugin.h new/gnuplot-5.4.9/demo/plugin/gnuplot_plugin.h --- old/gnuplot-5.4.8/demo/plugin/gnuplot_plugin.h 2020-10-13 23:14:48.000000000 +0200 +++ new/gnuplot-5.4.9/demo/plugin/gnuplot_plugin.h 2023-09-04 23:20:21.000000000 +0200 @@ -1,7 +1,10 @@ /* * DATA_TYPES and struct value must match definitions in - * #include <gp_types.h> + * #include <gp_types.h> + * This version matches gnuplot 5.4 */ +#define PLUGIN_VERSION 5.4 + #include <inttypes.h> /* C99 type definitions */ enum DATA_TYPES { INTGR=1, @@ -9,6 +12,7 @@ STRING, DATABLOCK, ARRAY, + VOXELGRID, NOTDEFINED, /* exists, but value is currently undefined */ INVALID_VALUE, /* used only for error return by external functions */ INVALID_NAME /* used only to trap errors in linked axis function definition */ @@ -46,6 +50,9 @@ DLLEXPORT void *gnuplot_init(struct value(*)(int, struct value *, void *)); DLLEXPORT void gnuplot_fini(void *); +/* report gnuplot version number that this plugin was built for */ +DLLEXPORT double gnuplot_version(void) {return PLUGIN_VERSION;} + /* Check that the number of parameters declared in the gnuplot import * statement matches the actual number of parameters in the exported * function diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gnuplot-5.4.8/docs/gnuplot.doc new/gnuplot-5.4.9/docs/gnuplot.doc --- old/gnuplot-5.4.8/docs/gnuplot.doc 2023-04-21 05:50:18.000000000 +0200 +++ new/gnuplot-5.4.9/docs/gnuplot.doc 2023-09-04 23:20:22.000000000 +0200 @@ -16284,12 +16284,12 @@ column values. Note that matrix rows and columns are indexed starting from 0, so the row with index N is the (N+1)th row. Syntax: - plot 'file' every {<column_incr>} - {:{<row_incr>} - {:{<start_column>} - {:{<start_row>} - {:{<end_column>} - {:<end_row>}}}}} + plot 'file' matrix every {<column_incr>} + {:{<row_incr>} + {:{<start_column>} + {:{<start_row>} + {:{<end_column>} + {:<end_row>}}}}} Examples: plot 'file' matrix every :::N::N # plot all values in row with index N plot 'file' matrix every ::3::7 # plot columns 3 to 7 for all rows Binary files old/gnuplot-5.4.8/docs/gnuplot.pdf and new/gnuplot-5.4.9/docs/gnuplot.pdf differ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gnuplot-5.4.8/m4/pkg.m4 new/gnuplot-5.4.9/m4/pkg.m4 --- old/gnuplot-5.4.8/m4/pkg.m4 2017-12-22 18:32:30.000000000 +0100 +++ new/gnuplot-5.4.9/m4/pkg.m4 2023-09-04 23:20:02.000000000 +0200 @@ -200,8 +200,7 @@ echo "$$1[]_PKG_ERRORS" >&AS_MESSAGE_LOG_FD ifelse([$4], , [AC_MSG_WARN(dnl -[ -Package requirements ($2) were not met: +[Package requirements ($2) were not met: $$1_PKG_ERRORS diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gnuplot-5.4.8/src/Makefile.am new/gnuplot-5.4.9/src/Makefile.am --- old/gnuplot-5.4.8/src/Makefile.am 2023-04-21 05:50:18.000000000 +0200 +++ new/gnuplot-5.4.9/src/Makefile.am 2023-09-04 23:20:22.000000000 +0200 @@ -122,7 +122,7 @@ GNUPLOT_QT = `echo gnuplot_qt | sed '$(transform)'`$(EXEEXT) -AM_CPPFLAGS += -DGNUPLOT_QT=\"$(GNUPLOT_QT)\" +AM_CPPFLAGS += $(QT_CFLAGS) -DGNUPLOT_QT=\"$(GNUPLOT_QT)\" # Call the moc preprocessor qtterminal/moc_%.cpp : qtterminal/%.h diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gnuplot-5.4.8/src/Makefile.in new/gnuplot-5.4.9/src/Makefile.in --- old/gnuplot-5.4.8/src/Makefile.in 2023-06-02 05:20:06.000000000 +0200 +++ new/gnuplot-5.4.9/src/Makefile.in 2023-08-26 05:13:05.000000000 +0200 @@ -97,7 +97,7 @@ @BUILD_WXWIDGETS_TRUE@am__append_2 = wxterminal/wxt_gui.cpp @BUILD_GPCAIRO_TRUE@am__append_3 = wxterminal/gp_cairo.c wxterminal/gp_cairo_helpers.c @BUILD_BITMAP_TRUE@am__append_4 = bitmap.c -@BUILD_QT_TRUE@am__append_5 = -DGNUPLOT_QT=\"$(GNUPLOT_QT)\" +@BUILD_QT_TRUE@am__append_5 = $(QT_CFLAGS) -DGNUPLOT_QT=\"$(GNUPLOT_QT)\" @BUILD_QT_TRUE@@HAVE_LRELEASE_TRUE@am__append_6 = -DQTGNUPLOT_DATA_DIR=\"$(qtgnuplotdir)\" # Qt terminal sources diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gnuplot-5.4.8/src/datafile.c new/gnuplot-5.4.9/src/datafile.c --- old/gnuplot-5.4.8/src/datafile.c 2023-04-21 05:51:22.000000000 +0200 +++ new/gnuplot-5.4.9/src/datafile.c 2023-09-04 23:20:40.000000000 +0200 @@ -1129,27 +1129,6 @@ /* Perhaps it should be a parameter to df_readline? */ df_current_plot = plot; - /* If either 'set datafile columnhead' or 'set key autotitle columnhead' - * is in effect we always treat the * first data row as non-data - * (df_readline() will return DF_COLUMN_HEADERS rather than the column count). - * This is true even if the key is off or the data is read from 'stats' - * or from 'fit' rather than plot. - */ - column_for_key_title = NO_COLUMN_HEADER; - df_already_got_headers = FALSE; - if ((&keyT)->auto_titles == COLUMNHEAD_KEYTITLES) - parse_1st_row_as_headers = TRUE; - else if (df_columnheaders) - parse_1st_row_as_headers = TRUE; - else - parse_1st_row_as_headers = FALSE; - /* Pseudofiles '+' and '++' can never have column headers */ - if (df_pseudodata > 0) - parse_1st_row_as_headers = FALSE; - /* Data pulled from an array also cannot have column headers */ - if (df_array) - parse_1st_row_as_headers = FALSE; - if (!cmd_filename) int_error(c_token, "missing filename"); if (!cmd_filename[0]) { @@ -1165,9 +1144,27 @@ df_filename = gp_strdup(cmd_filename); } - /* defer opening until we have parsed the modifiers... */ + /* If either 'set datafile columnhead' or 'set key autotitle columnhead' + * is in effect we always treat the * first data row as non-data + * (df_readline() will return DF_COLUMN_HEADERS rather than the column count). + * This is true even if the key is off or the data is read from 'stats' + * or from 'fit' rather than plot. + */ + column_for_key_title = NO_COLUMN_HEADER; + df_already_got_headers = FALSE; + if ((&keyT)->auto_titles == COLUMNHEAD_KEYTITLES) + parse_1st_row_as_headers = TRUE; + else if (df_columnheaders) + parse_1st_row_as_headers = TRUE; + else + parse_1st_row_as_headers = FALSE; + /* arrays or internally generated data ('+' or '++') never have column headers */ + if (df_array || (df_filename[0] == '+')) + parse_1st_row_as_headers = FALSE; - /* pm 25.11.2001 allow any order of options */ + /* + * Defer opening the input file until we have parsed the modifiers + */ while (!END_OF_COMMAND) { /* look for binary / matrix */ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gnuplot-5.4.8/src/external.c new/gnuplot-5.4.9/src/external.c --- old/gnuplot-5.4.8/src/external.c 2020-10-13 23:14:48.000000000 +0200 +++ new/gnuplot-5.4.9/src/external.c 2023-09-04 23:20:22.000000000 +0200 @@ -59,6 +59,7 @@ ]*/ #include "external.h" +#include "version.h" #ifdef HAVE_EXTERNAL_FUNCTIONS @@ -75,6 +76,7 @@ typedef struct value (*exfn_t)(int, struct value *, void *); typedef void * (*infn_t)(exfn_t); typedef void (*fifn_t)(void *); +typedef double (*vfn_t)(void); struct exft_entry { exfn_t exfn; @@ -106,13 +108,19 @@ } #endif - /* - Parse the string argument for a dll filename and function. Create a - one-item action list that calls a plugin function. Call the _init, - if present. _init may return a pointer to private data that is - handed over to the external function for each call. -*/ + * 1) Parse the string argument for a dll filename and function. + * 2) Create a one-item action list that calls a plugin function. + * 3) Check the gnuplot version number reported by the plugin. + * 4) Call the _init function if present; this is exported by the + * plugin as gnuplot_init(). + * This function may return a pointer to private data that is + * handed over to the external function for each call. + * 5) Save the destructor function if present; this is exported by + * the plugin as gnuplot_fini(). This function is called + * if and when the user function name associated with the + * plugin function is reassign to something else. + */ struct at_type * external_at(const char *func_name) @@ -123,6 +131,7 @@ exfn_t exfn; infn_t infn; fifn_t fifn; + vfn_t vfn; struct at_type *at = NULL; if (!isstring(c_token)) @@ -168,6 +177,7 @@ strcat(nfile, DLL_EXT); /* 2nd try: "file.so" */ dl = DLL_OPEN(nfile); + err = DLL_ERROR(dl); } #endif #ifdef DLL_PATHSEP @@ -176,11 +186,13 @@ strcat(nfile, file); /* 3rd try: "./file" */ dl = DLL_OPEN(nfile); + err = DLL_ERROR(dl); #ifdef DLL_EXT if (!dl && no_ext) { strcat(nfile, DLL_EXT); /* 4th try: "./file.so" */ dl = DLL_OPEN(nfile); + err = DLL_ERROR(dl); } #endif } @@ -208,6 +220,7 @@ infn = (infn_t)DLL_SYM(dl, "gnuplot_init"); fifn = (fifn_t)DLL_SYM(dl, "gnuplot_fini"); + vfn = (vfn_t)DLL_SYM(dl, "gnuplot_version"); if (!(at = gp_alloc(sizeof(struct at_type), "external_at"))) goto bailout; @@ -231,6 +244,15 @@ at->actions[0].arg.exf_arg->private = 0x0; else at->actions[0].arg.exf_arg->private = (*infn)(exfn); + + /* Check for version compatibility */ + if (!vfn) + int_warn(NO_CARET, "plugin provides no version information"); + else { + double plugin_version = (*vfn)(); + if (plugin_version != gnuplot_ver) + int_warn(NO_CARET, "plugin built for version %.1f", plugin_version); + } bailout: c_token++; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gnuplot-5.4.8/src/gadgets.c new/gnuplot-5.4.9/src/gadgets.c --- old/gnuplot-5.4.8/src/gadgets.c 2023-05-17 06:29:21.000000000 +0200 +++ new/gnuplot-5.4.9/src/gadgets.c 2023-09-04 23:20:22.000000000 +0200 @@ -545,16 +545,22 @@ void intersect_polyedge_with_boundary(gpiPoint first, gpiPoint second, gpiPoint *intersect, gpiPoint *clip_boundary) { - /* this routine is called only if one point is outside and the other - is inside, which implies that clipping is needed at a horizontal - boundary, that second.y is different from first.y and no division - by zero occurs. Same for vertical boundary and x coordinates. */ + /* This routine is called only if one point is outside and the other + * is inside, which implies that clipping is needed at a horizontal + * boundary, that second.y is different from first.y and no division + * by zero occurs. Same for vertical boundary and x coordinates. + * Conversion to double is needed to prevent integer overflow. + */ + double dx = (second.x - first.x); + double dy = (second.y - first.y); if (clip_boundary[0].y == clip_boundary[1].y) { /* horizontal */ (*intersect).y = clip_boundary[0].y; - (*intersect).x = first.x + (clip_boundary[0].y - first.y) * (second.x - first.x)/(second.y - first.y); + (*intersect).x = first.x + + (double)(clip_boundary[0].y - first.y) * dx/dy; } else { /* vertical */ (*intersect).x = clip_boundary[0].x; - (*intersect).y = first.y + (clip_boundary[0].x - first.x) * (second.y - first.y)/(second.x - first.x); + (*intersect).y = first.y + + (double)(clip_boundary[0].x - first.x) * dy/dx; } } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gnuplot-5.4.8/src/graphics.c new/gnuplot-5.4.9/src/graphics.c --- old/gnuplot-5.4.8/src/graphics.c 2023-05-17 06:29:21.000000000 +0200 +++ new/gnuplot-5.4.9/src/graphics.c 2023-09-04 23:20:22.000000000 +0200 @@ -5246,6 +5246,8 @@ for (k=0; k<N_corners; k++) clipped[k] = corners[k]; clip_polygon(clipped, corners, N_corners, &N_corners); + if (N_corners <= 0) + continue; } if (rectangular_image && term->fillbox diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gnuplot-5.4.8/src/plot2d.c new/gnuplot-5.4.9/src/plot2d.c --- old/gnuplot-5.4.8/src/plot2d.c 2023-05-03 05:47:06.000000000 +0200 +++ new/gnuplot-5.4.9/src/plot2d.c 2023-09-04 23:20:22.000000000 +0200 @@ -1386,9 +1386,9 @@ case YERRORLINES: /* auto-scale ylow yhigh */ cp->xlow = xlow; /* really theta if polar; CRD_PTSIZE otherwise */ cp->xhigh = xhigh; /* really theta if polar; CRD_PTTYPE otherwise */ - STORE_AND_UPDATE_RANGE(cp->ylow, ylow, dummy_type, current_plot->y_axis, + STORE_AND_UPDATE_RANGE(cp->ylow, ylow, cp->type, current_plot->y_axis, current_plot->noautoscale, cp->ylow = -VERYLARGE); - STORE_AND_UPDATE_RANGE(cp->yhigh, yhigh, dummy_type, current_plot->y_axis, + STORE_AND_UPDATE_RANGE(cp->yhigh, yhigh, cp->type, current_plot->y_axis, current_plot->noautoscale, cp->yhigh = -VERYLARGE); break; case BOXES: /* auto-scale to xlow xhigh */ @@ -2640,9 +2640,10 @@ if (equals(c_token,"fs") || almost_equals(c_token,"fill$style")) { if (this_plot->plot_style == SPIDERPLOT) this_plot->fill_properties = spiderplot_style.fillstyle; - else + else { this_plot->fill_properties = default_fillstyle; - this_plot->fill_properties.fillpattern = pattern_num; + this_plot->fill_properties.fillpattern = pattern_num; + } parse_fillstyle(&this_plot->fill_properties); if (this_plot->plot_style == FILLEDCURVES && this_plot->fill_properties.fillstyle == FS_EMPTY) @@ -2779,9 +2780,10 @@ if (!set_fillstyle) { if (this_plot->plot_style == SPIDERPLOT) this_plot->fill_properties = spiderplot_style.fillstyle; - else + else { this_plot->fill_properties = default_fillstyle; - this_plot->fill_properties.fillpattern = pattern_num; + this_plot->fill_properties.fillpattern = pattern_num; + } parse_fillstyle(&this_plot->fill_properties); } if ((this_plot->fill_properties.fillstyle == FS_PATTERN) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gnuplot-5.4.8/src/pm3d.c new/gnuplot-5.4.9/src/pm3d.c --- old/gnuplot-5.4.8/src/pm3d.c 2023-04-24 05:18:15.000000000 +0200 +++ new/gnuplot-5.4.9/src/pm3d.c 2023-09-04 23:20:22.000000000 +0200 @@ -1617,6 +1617,9 @@ clip_polygon( ocorners, icorners, nv, &nv ); } + if (nv <= 0) + return; + if (fillstyle) icorners[0].style = fillstyle; else if (default_fillstyle.fillstyle == FS_EMPTY) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gnuplot-5.4.8/src/qtterminal/QtGnuplotItems.cpp new/gnuplot-5.4.9/src/qtterminal/QtGnuplotItems.cpp --- old/gnuplot-5.4.8/src/qtterminal/QtGnuplotItems.cpp 2022-05-26 21:35:50.000000000 +0200 +++ new/gnuplot-5.4.9/src/qtterminal/QtGnuplotItems.cpp 2023-09-04 23:20:03.000000000 +0200 @@ -45,6 +45,10 @@ #include <QtGui> +#if QT_VERSION < QT_VERSION_CHECK(5, 11, 0) + #define horizontalAdvance width +#endif + ///////////////////////////// // QtGnuplotEnhanced @@ -111,7 +115,7 @@ qreal QtGnuplotEnhancedFragment::width() const { QFontMetricsF metrics(m_font); - return metrics.width(m_text); + return metrics.horizontalAdvance(m_text); } void QtGnuplotEnhancedFragment::paint(QPainter* painter, const QStyleOptionGraphicsItem* option, QWidget* widget) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gnuplot-5.4.8/src/qtterminal/gnuplot_qt.cpp new/gnuplot-5.4.9/src/qtterminal/gnuplot_qt.cpp --- old/gnuplot-5.4.8/src/qtterminal/gnuplot_qt.cpp 2017-12-22 18:32:30.000000000 +0100 +++ new/gnuplot-5.4.9/src/qtterminal/gnuplot_qt.cpp 2023-09-04 23:20:03.000000000 +0200 @@ -88,13 +88,20 @@ // Load translations for the qt library QTranslator qtTranslator; - qtTranslator.load("qt_" + QLocale::system().name(), QLibraryInfo::location(QLibraryInfo::TranslationsPath)); - application.installTranslator(&qtTranslator); +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + if (qtTranslator.load("qt_" + QLocale::system().name(), + QLibraryInfo::path(QLibraryInfo::TranslationsPath))) + application.installTranslator(&qtTranslator); +#else + if (qtTranslator.load("qt_" + QLocale::system().name(), + QLibraryInfo::location(QLibraryInfo::TranslationsPath))) + application.installTranslator(&qtTranslator); +#endif // Load translations for the qt terminal QTranslator translator; - translator.load("qtgnuplot_" + QLocale::system().name(), qt_gnuplot_data_dir); - application.installTranslator(&translator); + if (translator.load("qtgnuplot_" + QLocale::system().name(), qt_gnuplot_data_dir)) + application.installTranslator(&translator); // Start application.exec(); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gnuplot-5.4.8/src/qtterminal/qt_conversion.cpp new/gnuplot-5.4.9/src/qtterminal/qt_conversion.cpp --- old/gnuplot-5.4.8/src/qtterminal/qt_conversion.cpp 2017-12-22 18:32:30.000000000 +0100 +++ new/gnuplot-5.4.9/src/qtterminal/qt_conversion.cpp 2023-09-04 23:20:03.000000000 +0200 @@ -41,6 +41,15 @@ * under either the GPL or the gnuplot license. ]*/ +/* + * Qt6 no longer supports other 8-bit encodings natively, relegating the + * QTextCodec functions to a compatibility module Core5Compat. + * FIXME: roll our own? + */ +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + #include <QTextCodec> +#endif + static QColor qt_colorList[12] = { Qt::white, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gnuplot-5.4.8/src/util.c new/gnuplot-5.4.9/src/util.c --- old/gnuplot-5.4.8/src/util.c 2023-04-21 05:50:18.000000000 +0200 +++ new/gnuplot-5.4.9/src/util.c 2023-09-04 23:20:22.000000000 +0200 @@ -1050,7 +1050,7 @@ /* Print problem line from data file to the terminal */ df_showdata(); - } else { + } else if (gp_input_line) { /* If the current line was built by concatenation of lines inside */ /* a {bracketed clause}, try to reconstruct the true line number */ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gnuplot-5.4.8/src/version.c new/gnuplot-5.4.9/src/version.c --- old/gnuplot-5.4.8/src/version.c 2023-06-02 01:14:19.000000000 +0200 +++ new/gnuplot-5.4.9/src/version.c 2023-09-04 23:27:46.000000000 +0200 @@ -35,12 +35,13 @@ #include "syscfg.h" /* for FAQ_LOCATION */ +const double gnuplot_ver = 5.4; const char gnuplot_version[] = "5.4"; -const char gnuplot_patchlevel[] = "8"; +const char gnuplot_patchlevel[] = "9"; #ifdef DEVELOPMENT_VERSION #include "timestamp.h" #else -const char gnuplot_date[] = "2023-06-01"; +const char gnuplot_date[] = "2023-09-04"; #endif const char gnuplot_copyright[] = "Copyright (C) 1986-1993, 1998, 2004, 2007-2023"; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gnuplot-5.4.8/src/version.h new/gnuplot-5.4.9/src/version.h --- old/gnuplot-5.4.8/src/version.h 2020-10-13 23:14:48.000000000 +0200 +++ new/gnuplot-5.4.9/src/version.h 2023-09-04 23:20:03.000000000 +0200 @@ -35,6 +35,7 @@ #include "syscfg.h" +extern const double gnuplot_ver; extern const char gnuplot_version[]; extern const char gnuplot_patchlevel[]; extern const char gnuplot_date[]; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gnuplot-5.4.8/src/wxterminal/gp_cairo.c new/gnuplot-5.4.9/src/wxterminal/gp_cairo.c --- old/gnuplot-5.4.8/src/wxterminal/gp_cairo.c 2023-04-21 05:50:06.000000000 +0200 +++ new/gnuplot-5.4.9/src/wxterminal/gp_cairo.c 2023-09-04 23:20:22.000000000 +0200 @@ -401,6 +401,9 @@ /* begin by stroking any open path */ gp_cairo_stroke(plot); + if (n <= 0) + return; + if (plot->polygons_saturate) { int i; path_item *path; @@ -464,13 +467,15 @@ /* if there's only one polygon, draw it directly */ if (path->previous == NULL) { FPRINTF((stderr,"processing one polygon\n")); - cairo_move_to(plot->cr, path->corners[0].x, path->corners[0].y); - for (i=1;i<path->n;++i) - cairo_line_to(plot->cr, path->corners[i].x, path->corners[i].y); - cairo_close_path(plot->cr); - plot->color = path->color; - gp_cairo_fill( plot, path->corners->style & 0xf, path->corners->style >> 4 ); - cairo_fill(plot->cr); + if (path->n > 0) { + cairo_move_to(plot->cr, path->corners[0].x, path->corners[0].y); + for (i = 1; i < path->n; i++) + cairo_line_to(plot->cr, path->corners[i].x, path->corners[i].y); + cairo_close_path(plot->cr); + plot->color = path->color; + gp_cairo_fill( plot, path->corners->style & 0xf, path->corners->style >> 4 ); + cairo_fill(plot->cr); + } free(path->corners); free(path); plot->polygon_path_last = NULL; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gnuplot-5.4.8/src/wxterminal/wxt_gui.cpp new/gnuplot-5.4.9/src/wxterminal/wxt_gui.cpp --- old/gnuplot-5.4.8/src/wxterminal/wxt_gui.cpp 2023-04-21 05:50:18.000000000 +0200 +++ new/gnuplot-5.4.9/src/wxterminal/wxt_gui.cpp 2023-09-04 23:20:22.000000000 +0200 @@ -1564,11 +1564,12 @@ static void wxt_update_key_box( unsigned int x, unsigned int y ) { if (wxt_max_key_boxes <= wxt_cur_plotno) { + int first_new_keybox = wxt_max_key_boxes; wxt_max_key_boxes = wxt_cur_plotno + 10; wxt_key_boxes = (wxtBoundingBox *)realloc(wxt_key_boxes, wxt_max_key_boxes * sizeof(wxtBoundingBox)); - wxt_initialize_key_boxes(wxt_cur_plotno); - wxt_initialize_hidden(wxt_cur_plotno); + wxt_initialize_key_boxes(first_new_keybox); + wxt_initialize_hidden(first_new_keybox); } wxtBoundingBox *bb = &(wxt_key_boxes[wxt_cur_plotno]); y = term->ymax - y; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gnuplot-5.4.8/term/post.trm new/gnuplot-5.4.9/term/post.trm --- old/gnuplot-5.4.8/term/post.trm 2023-04-21 05:50:18.000000000 +0200 +++ new/gnuplot-5.4.9/term/post.trm 2023-09-04 23:20:22.000000000 +0200 @@ -3441,7 +3441,7 @@ { gdImagePtr png_img; int m, n, pixel; - if (color_mode == IC_RGB) { + if (color_mode == IC_RGB || color_mode == IC_RGBA) { png_img = gdImageCreateTrueColor(M, N); } else { /* we would need a gray scale image, but libgd does not support @@ -3453,7 +3453,7 @@ int_error(NO_CARET, "GNUPLOT (post.trm): failed to create libgd image structure"); } - if (color_mode == IC_RGB) { + if (color_mode == IC_RGB || color_mode == IC_RGBA) { rgb_color rgb1; rgb255_color rgb255; for (n = 0; n < N; n++) { @@ -3464,6 +3464,9 @@ rgb255_from_rgb1(rgb1, &rgb255); pixel = gdImageColorResolve(png_img, (int)rgb255.r, (int)rgb255.g, (int)rgb255.b); gdImageSetPixel(png_img, m, n, pixel); + if (color_mode == IC_RGBA) { + image++; /* ignore alpha channel */ + } } } } else { @@ -3548,7 +3551,7 @@ int m, n; - if (color_mode == IC_RGB) { + if (color_mode == IC_RGB || color_mode == IC_RGBA) { format = CAIRO_FORMAT_RGB24; } else { format = CAIRO_FORMAT_A8; @@ -3556,7 +3559,7 @@ stride = cairo_format_stride_for_width(format, M); image255 = (unsigned char *) gp_alloc(N * stride, "Postscript image bytes"); - if (color_mode == IC_RGB) { + if (color_mode == IC_RGB || color_mode == IC_RGBA) { /* Adapted from gp_cairo_helpers.c (use unsigned int to respect endianess of the platform). */ rgb_color rgb1; rgb255_color rgb255; @@ -3569,6 +3572,9 @@ rgb1.b = *image++; rgb255_from_rgb1(rgb1, &rgb255); *image255_ptr++ = (0xFF<<24) + (rgb255.r<<16) + (rgb255.g<<8) + rgb255.b; + if (color_mode == IC_RGBA) { + image++; /* ignore alpha channel */ + } } } } else { @@ -3715,14 +3721,22 @@ unsigned char tuple5[5]; int max_encoded_bytes; char *encoded_image, *encoded_image_ptr; + unsigned ncomponents; unsigned long total_bits; + int current_channel; #define ASCII_PER_LINE 78 /* 18.1.2009 RGB images ("plot ... with rgbimage") are drawn always in color, * i.e. for both "set term post color" and "set term post mono". */ - total_bits = bits_per_component*M*N*((color_mode == IC_RGB /* && ps_params->color */) ? 3 : 1); + if (color_mode == IC_RGB) + ncomponents = 3; + else if (color_mode == IC_RGBA) /* alpha channel will be ignored */ + ncomponents = 3; + else + ncomponents = 1; + total_bits = bits_per_component * ncomponents * M * N; /* At the end of each image line, data is aligned to the nearest 8 bits, * which means potentially adding 7 bits per line. @@ -3751,24 +3765,30 @@ i_line = ASCII_PER_LINE; i_element = 0; coord_remaining = M*N; - if (color_mode == IC_RGB /* && ps_params->color */) { + if (color_mode == IC_RGB) { + end_of_line *= 3; + coord_remaining *= 3; + } + if (color_mode == IC_RGBA) { end_of_line *= 3; coord_remaining *= 3; } bits_remaining = 32; bits_start = 0; tuple4 = 0; + current_channel = 0; while (coord_remaining) { - unsigned short us_tmp; - if (0 /* color_mode == IC_RGB && !ps_params->color */) { - coordval c_tmp; - c_tmp = *coord_ptr++; - c_tmp += *coord_ptr++; - c_tmp += *coord_ptr++; - us_tmp = (unsigned short) (c_tmp*(max_colors-1)/3.0 + 0.5); - } else - us_tmp = (unsigned short) ((*coord_ptr++) * max_colors); + unsigned short us_tmp = (*coord_ptr++) * max_colors; + + /* Ignore alpha channel */ + if (color_mode == IC_RGBA) { + current_channel++; + if (current_channel == 4) { + current_channel = 0; + continue; + } + } if (us_tmp > (max_colors-1)) us_tmp = max_colors-1; @@ -3897,15 +3917,18 @@ fprintf(gppsfile, "%s[ %d 0 0 %d 0 0 ]\n", space, M, N); if (ps_params->level1) { fprintf(gppsfile, "/imagebuf %d string def\n", - (M*N*bits_per_component*((color_mode == IC_RGB /* && ps_params->color */) ? 3 : 1) + 7)/8); + (M*N*bits_per_component*((color_mode == IC_RGB || color_mode == IC_RGBA) ? 3 : 1) + 7)/8); fputs("{currentfile imagebuf readhexstring pop}\n", gppsfile); } else if (ps_params->level3) { fprintf(gppsfile, " currentfile /ASCII85Decode filter << /Predictor 15 /BitsPerComponent %d /Colors %d /Columns %d >> /FlateDecode filter\n", - bits_per_component, (color_mode == IC_RGB) ? 3 : 1, M); + bits_per_component, (color_mode == IC_RGB || color_mode == IC_RGBA) ? 3 : 1, M); } else { fprintf(gppsfile, " currentfile /ASCII85Decode filter\n"); } - if (color_mode == IC_RGB /* && ps_params->color */) { + if (color_mode == IC_RGB) { + fprintf(gppsfile, "%sfalse 3\n" + "%scolorimage\n", space, space); + } else if (color_mode == IC_RGBA) { fprintf(gppsfile, "%sfalse 3\n" "%scolorimage\n", space, space); } else @@ -3958,14 +3981,10 @@ /* Color and gray scale images do not need a palette and can use * the 5 operand form of the image routine. */ -#if 0 - /* 18.1.2009 It was decided to use the custom palette (i.e. colours) also - for the monochrome postscript output. - */ - if ((color_mode == IC_RGB) || (sm_palette.colorMode == SMPAL_COLOR_MODE_GRAY) || !ps_params->color) -#else - if ((color_mode == IC_RGB) || (sm_palette.colorMode == SMPAL_COLOR_MODE_RGB && !ps_params->color) || (sm_palette.colorMode == SMPAL_COLOR_MODE_GRAY)) -#endif + if ((color_mode == IC_RGB) + || (color_mode == IC_RGBA) + || (sm_palette.colorMode == SMPAL_COLOR_MODE_RGB && !ps_params->color) + || (sm_palette.colorMode == SMPAL_COLOR_MODE_GRAY)) five_operand_image = TRUE; else five_operand_image = FALSE; @@ -3981,15 +4000,17 @@ cscale = 1.0; #ifdef HAVE_DEFLATE_ENCODER - if (ps_params->level3) + if (ps_params->level3) { encoded_image = (void *)PS_encode_png_image(M, N, image, color_mode, bits_per_component, max_colors, cscale, &num_encoded_bytes); - else + } else { #endif encoded_image = PS_encode_image(M, N, image, color_mode, bits_per_component, max_colors, cscale, - (ps_params->level1 ? PS_ASCII_HEX : PS_ASCII85), &num_encoded_bytes); + (ps_params->level1 ? PS_ASCII_HEX : PS_ASCII85), + &num_encoded_bytes); + } fputs("%%%%BeginImage\n", gppsfile); @@ -4064,7 +4085,7 @@ } else if (ps_params->level3) { fprintf(gppsfile, " /DataSource currentfile /ASCII85Decode filter "); fprintf(gppsfile, "<< /Predictor 15 /BitsPerComponent %d /Colors %d /Columns %d >> /FlateDecode filter\n", - bits_per_component, (color_mode == IC_RGB) ? 3 : 1, M); + bits_per_component, (color_mode == IC_RGB || color_mode == IC_RGBA) ? 3 : 1, M); } else { fputs(" /DataSource currentfile /ASCII85Decode filter\n", gppsfile); }