SHA256
1
0
forked from pool/graphviz

4 Commits

Author SHA256 Message Date
4a6de6f74b Accepting request 1282874 from graphics
OBS-URL: https://build.opensuse.org/request/show/1282874
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/graphviz?expand=0&rev=105
2025-06-18 13:53:18 +00:00
736833a325 Accepting request 1281692 from home:alarrosa:branches:graphics
- Update to 12.2.1
  * Added
    - Support for building the SWIG-generated R language bindings
      has been integrated into the CMake build system. This is
      controllable by the -DENABLE_R={AUTO|ON|OFF} option.
    - A sandboxing wrapper, dot_sandbox, is now included with
      Graphviz. Users should prefer their platform’s native
      security solutions, but if nothing better is available this
      wrapper offers safe processing of untrusted inputs in some
      scenarios.
  * Changed
    - JPEG images without an APP0 leading segment are supported for
      use in src fields and friends. Previously Graphviz was overly
      strict with the types of JPEGs it would recognize. #2619
    - The CMake build system now discovers and uses
      pango_fc_font_lock_face if possible, for the Pango plugin to
      provide more information about used fonts.
  * Fixed
    - The GVPR library program depath no longer acts on previously
      deleted nodes, causing unpredictable results. #1702 (closed)
    - Void-typed function parameters (int foo(void bar)) and
      variables void baz; in GVPR are gracefully rejected.
      #2585 (closed)
    - Input that induce a set node height but no set node width no
      longer crash with the failure "Assertion failed:
      (r->boundary[i] <= r->boundary[NUMDIMS + i]), function
      RTreeInsert". It is typically not obvious to users when their
      input falls into this situation, hence why the assertion
      message is quoted here. This was a regression in Graphviz
      12.0.0. #2613 (closed)

OBS-URL: https://build.opensuse.org/request/show/1281692
OBS-URL: https://build.opensuse.org/package/show/graphics/graphviz?expand=0&rev=199
2025-06-04 18:00:50 +00:00
de5b57e180 Accepting request 1243610 from graphics
OBS-URL: https://build.opensuse.org/request/show/1243610
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/graphviz?expand=0&rev=104
2025-02-07 21:46:55 +00:00
1352c6f1d4 - Add python3-setuptools BuildRequires: fix build/installation when
using python 3.13.

OBS-URL: https://build.opensuse.org/package/show/graphics/graphviz?expand=0&rev=197
2025-02-06 11:13:06 +00:00
11 changed files with 221 additions and 215 deletions

View File

@@ -1,4 +1,4 @@
<multibuild>
<package>addons</package>
<package>qt5</package>
<package>qt6</package>
</multibuild>

3
graphviz-12.2.1.tar.bz2 Normal file
View File

@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:a990b38c3ea807a06597ce8d46d87878e59bb3fb12609fd98c02a861a4ca81b8
size 26332351

View File

@@ -1,18 +0,0 @@
Silent warning:
>> tbl.c:173:15: warning: assignment to char * from incompatible pointer type char (*)[1] [-Wincompatible-pointer-types]
---
cmd/lefty/tbl.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
--- cmd/lefty/tbl.c
+++ cmd/lefty/tbl.c 2024-09-06 08:48:48.059367033 +0000
@@ -170,7 +170,7 @@ Tobj Tcode (Code_t *cp, int ci, int cl)
cp2[i] = cp[i];
if (cp2[i].next != C_NULL)
cp2[i].next -= ci;
- s = &cp[i].u.s;
+ s = &cp[i].u.s[0]; // gcc14
while (*s)
s++;
cn = (long) (s - (char *) &cp[i]) / sizeof (Code_t);

BIN
graphviz-2.49.3.tar.bz2 (Stored with Git LFS)

Binary file not shown.

View File

@@ -1,67 +0,0 @@
From 87cc54644e40fccc0651b7fedc137b3dd02b4514 Mon Sep 17 00:00:00 2001
From: Matthew Fernandez <matthew.fernandez@gmail.com>
Date: Mon, 21 Mar 2022 08:09:55 -0700
Subject: [PATCH] smyrna Init: squash -Wincompatible-pointer-types
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
OpenGL has an unorthodox API wherein the `gluTessCallback` functions prototype
indicates it takes a `void(*)(void)`, but its docs¹ explain that the type
actually varies depending on the second argument. As a result, the compiler
(correctly) warns that some of these `gluTessCallback` calls are passing
function pointers that do not have the same ABI. Presumably this works out
because at the end of the day a function pointer is just some bits in C and the
OpenGL implementation branches on the `which` argument and invokes the pointer
correctly. But if OpenGL really wanted to discard type safety this way, it is
not clear to me why they did not make the function pointer argument a `void*`.
Anyway, this commit squashes the compiler warnings which emerge when enabling
this in the CMake build system, failing the build.
Gitlab: related to #1836
¹ This is not the authoritative source, but Microsofts docs for their
implementation provide a good explanation.
https://docs.microsoft.com/en-us/windows/win32/opengl/glutess
---
cmd/smyrna/polytess.c | 25 ++++++++++++++++++++-----
1 file changed, 20 insertions(+), 5 deletions(-)
--- cmd/smyrna/polytess.c
+++ cmd/smyrna/polytess.c 2024-09-06 09:04:16.790734526 +0000
@@ -39,15 +39,30 @@ static void CALLBACK vertexCallback(GLvo
}
-static GLUtesselator* Init()
+// OpenGLs `gluTessCallback` function has a prototype indicating it takes a
+// `void(*)(void)`. But its documentation describes passing in various function
+// pointers with differing calling conventions. To use this API while also
+// pacifying all the various build environments, we need this rather silly
+// wrapper.
+#ifdef _MSC_VER
+// MSVC is of the (correct) opinion that casting between function pointers of
+// incompatible calling conventions is unacceptable behavior…
+#define MAKE_GLU_CALLBACK(f) f
+#else
+// …nevertheless other compilers insist we cast or they believe we have made a
+// typo
+#define MAKE_GLU_CALLBACK(f) ((void (*)(void))(f))
+#endif
+
+static GLUtesselator* Init(void)
{
// Create a new tessellation object
GLUtesselator* tobj = gluNewTess();
// Set callback functions
- gluTessCallback(tobj, GLU_TESS_VERTEX, &vertexCallback);
- gluTessCallback(tobj, GLU_TESS_BEGIN, &glBegin);
- gluTessCallback(tobj, GLU_TESS_END, &glEnd);
- gluTessCallback(tobj, GLU_TESS_COMBINE,&combineCallback);
+ gluTessCallback(tobj, GLU_TESS_VERTEX, MAKE_GLU_CALLBACK(vertexCallback));
+ gluTessCallback(tobj, GLU_TESS_BEGIN, MAKE_GLU_CALLBACK(glBegin));
+ gluTessCallback(tobj, GLU_TESS_END, MAKE_GLU_CALLBACK(glEnd));
+ gluTessCallback(tobj, GLU_TESS_COMBINE, MAKE_GLU_CALLBACK(combineCallback));
return tobj;
}

View File

@@ -1,8 +1,20 @@
--- tclpkg/mkpkgindex.sh
+++ tclpkg/mkpkgindex.sh
@@ -22,4 +22,4 @@
echo " package require Tk 8.3" >>pkgIndex.tcl
;;
esac
-echo " load [file join \$dir $lib] $2\"" >>pkgIndex.tcl
+echo " load $lib $2\"" >>pkgIndex.tcl
#--- tclpkg/mkpkgindex.sh
#+++ tclpkg/mkpkgindex.sh
#@@ -22,4 +22,4 @@
# echo " package require Tk 8.3" >>pkgIndex.tcl
# ;;
# esac
#-echo " load [file join \$dir $lib] $2\"" >>pkgIndex.tcl
#+echo " load $lib $2\"" >>pkgIndex.tcl
--- tclpkg/mkpkgindex.py
+++ tclpkg/mkpkgindex.py
@@ -39,7 +39,7 @@
f.write(f'package ifneeded {options.name} {version} "\n')
if "tk" in str(options.file):
f.write("\tpackage require Tk 8.3\n")
- f.write(f'\tload [file join $dir {options.file}] {options.name}"\n')
+ f.write(f'\tload {options.file} {options.name}"\n')
if __name__ == "__main__":

View File

@@ -1,11 +1,19 @@
--- configure.ac 2019-07-13 05:14:04.000000000 +0200
+++ configure.ac 2020-12-31 13:46:52.374560516 +0100
@@ -1116,7 +1116,7 @@ else
# PHP_INCLUDES="`$PHPCONFIG --includes`"
# PHP_INSTALL_DIR="`$PHPCONFIG --extension-dir`"
# PHP_INSTALL_DATADIR="/usr/share/php"
#- PHP_LIBS="`$PHPCONFIG --ldflags` `$PHPCONFIG --libs`"
#+ PHP_LIBS="`$PHPCONFIG --ldflags`"
# save_CPPFLAGS=$CPPFLAGS
# CPPFLAGS="$CPPFLAGS $PHP_INCLUDES"
# AC_CHECK_HEADER(php.h,,[
PHP_INCLUDES="`$PHPCONFIG --includes`"
PHP_INSTALL_DIR="`$PHPCONFIG --extension-dir`"
PHP_INSTALL_DATADIR="/usr/share/php"
- PHP_LIBS="`$PHPCONFIG --ldflags` `$PHPCONFIG --libs`"
+ PHP_LIBS="`$PHPCONFIG --ldflags`"
save_CPPFLAGS=$CPPFLAGS
CPPFLAGS="$CPPFLAGS $PHP_INCLUDES"
AC_CHECK_HEADER(php.h,,[
fi
fi
if test "$PHP" != ""; then

View File

@@ -1,8 +0,0 @@
--- graphviz-2.46.1/lib/vmalloc/Makefile.am.orig 2021-02-18 17:44:23.990163756 +0100
+++ graphviz-2.46.1/lib/vmalloc/Makefile.am 2021-02-18 17:46:38.615438829 +0100
@@ -9,4 +9,5 @@
vmopen.c \
vmstrdup.c
+libvmalloc_C_la_CFLAGS = -fno-strict-aliasing
EXTRA_DIST = vmalloc.vcxproj*

View File

@@ -1,3 +1,164 @@
-------------------------------------------------------------------
Fri May 30 10:49:41 UTC 2025 - Antonio Larrosa <alarrosa@suse.com>
- Update to 12.2.1
* Added
- Support for building the SWIG-generated R language bindings
has been integrated into the CMake build system. This is
controllable by the -DENABLE_R={AUTO|ON|OFF} option.
- A sandboxing wrapper, dot_sandbox, is now included with
Graphviz. Users should prefer their platforms native
security solutions, but if nothing better is available this
wrapper offers safe processing of untrusted inputs in some
scenarios.
* Changed
- JPEG images without an APP0 leading segment are supported for
use in src fields and friends. Previously Graphviz was overly
strict with the types of JPEGs it would recognize. #2619
- The CMake build system now discovers and uses
pango_fc_font_lock_face if possible, for the Pango plugin to
provide more information about used fonts.
* Fixed
- The GVPR library program depath no longer acts on previously
deleted nodes, causing unpredictable results. #1702 (closed)
- Void-typed function parameters (int foo(void bar)) and
variables void baz; in GVPR are gracefully rejected.
#2585 (closed)
- Input that induce a set node height but no set node width no
longer crash with the failure "Assertion failed:
(r->boundary[i] <= r->boundary[NUMDIMS + i]), function
RTreeInsert". It is typically not obvious to users when their
input falls into this situation, hence why the assertion
message is quoted here. This was a regression in Graphviz
12.0.0. #2613 (closed)
- Strings containing double quote characters preceded by escape
sequences (e.g. \n") are once again correctly escaped in dot
or canonical output. This was a regression in Graphviz 9.0.0.
#2614 (closed)
- dot_builtins no longer lists duplicate format options in its
error messages. #2604 (closed)
- A precision error that resulted in truncated edge lines has
been corrected. This was a regression in Graphviz 12.0.0.
#2620 (closed)
- The xlib plugin (-Tx11) resets its initialization state
during finalization. This fixes a rare scenario where
multiple input graphs are supplied and initialization for one
of the not-first graphs fails. In this scenario, finalization
would be unaware of this failure and act on invalid state.
- Update to 12.2.0
* Removed
- Visual Studio build files have been removed. CMake is now the
only supported build system on Windows.
* Added
- Support for building the SWIG-generated PHP language bindings
has been integrated into the CMake build system. This is
controllable by the -DENABLE_PHP={AUTO|ON|OFF} option.
- Support for building the SWIG-generated Python language
bindings has been integrated into the CMake build system.
This is controllable by the -DENABLE_PYTHON={AUTO|ON|OFF}
option.
* Changed
- An algorithm closer to that described in RFC 1942 and/or the
CSS 2.1 specification is now used for sizing table cells
within HTML-like labels. This is less scalable than the
network simplex algorithm it replaces, but in general
produces more intuitive results. #2159 (closed)
- Tooltips on table elements within HTML-like labels are now
propagated to SVGs produced by the core plugin (-Tsvg) even
when the elements do not have href attributes. #1425 (closed)
- In the Autotools build system, pkg-config is the only
supported way for discovering Guile. Previous use of
guile-config* has been removed. #2606 (closed)
- The Autotools release artifacts for macOS
(Darwin_*_graphviz-*.tar.gz) now use relative paths in links
to dependent libraries and plugins. This should make the tree
relocatable instead of having to live at
/Users/gitlab/builds. #2501 (closed)
- gml2gv no longer maps GML label attributes to Graphviz name
attributes. These are now mapped to Graphviz label
attributes. #2586 (closed)
* Fixed
- In the Autotools build system, the core plugin links against
libm, fixing some unresolvable symbols. This was a regression
in Graphviz 4.0.0. Though it would primarily have affected
non-Graphviz applications attempting to load this plugin on
Linux.
- The osage layout engine now understands a cluster to be
indicated by the common rules, including the "cluster" prefix
being case insensitive and the cluster=true attribute as an
alternative. #2187
- acyclic once again produces its output on stdout. This was a
regression in Graphviz 10.0.1. #2600 (closed)
- When using the Tclpathplan module, created vgpanes can once
again be named and addressed. This was a regression in
Graphviz 12.1.2.
- Omitting a polygon identifier when running triangulation
using the Tclpathplan module (e.g. vgpane0 triangulate
instead of vgpane0 triangulate 42) no longer goes unnoticed
and reads invalid memory. This bug seems to have existed
since the first revision of Graphviz.
- When using the Tclpathplan module, defining a malformed
<3-point polygon and then attempting to triangulate this
polygon no longer reads invalid memory. This case is now
rejected with an error during triangulation. Like the
previous entry, this bug seems to have existed since the
first revision of Graphviz.
- When using the Tclpathplan module, binding a panes
triangulation callback to a string ending in a trailing %
(e.g. vgpane0 bind triangle %) no longer causes later
out-of-bounds reads during triangulation. Like the previous
entries, this bug seems to have existed since the first
revision of Graphviz. #2596 (closed)
- Mouse right-clicks in Smyrna are no longer sticky. In some
contexts, right-clicking the mouse would register a mouse
down event but no mouse up event, leading Smyrna to believe
the user was dragging with the right button held down.
- Arrowhead missing from tail-end of edge #2437 (closed)
- The Ruby bindings package (libgv-ruby) is once again
installable on Ubuntu. This became uninstallable when
Ruby 1.8 was no longer available on Ubuntu, as it had a hard
coded dependency of Ruby 1.8. This has now been relaxed to
depend on any Ruby version ≥ 1.8. #2607 (closed)
- Generated GIFs and JPEGs display the graphed image instead
of a single solid color. This was a regression in Graphviz
12.1.1. #2609 (closed)
- The CMake build system includes some supporting pieces of the
SWIG-generated language bindings that were previously
missing. It also links further dependencies that were
previously missing.
- In the CMake build system, linking of the Guile language
bindings uses the full path to libguile, fixing issues on
macOS.
- The provided release packages for Debian-based operating
systems (only Ubuntu currently) have corrected package
dependencies. #2466 (closed)
- Discussion of gvpr -c "" in the gvpr man page has been
removed. This invocation did not do what was claimed.
#2584 (closed)
- To see the full changelog for all intermediate releases, see:
https://gitlab.com/graphviz/graphviz/-/blob/main/CHANGELOG.md
- Use Qt6 instead of Qt5 to build the gvedit tool.
- Drop patches already included in this version:
* gvc-detect-plugin-installation-failure-and-display-an-error.patch
* graphviz-87cc546.patch
- Drop patch that doesn't apply anymore since that code was
removed:
* graphviz-2.49.3-boo1225776-gcc14.patch
- Drop patch that doesn't apply anymore and doesn't seem to be
needed:
* graphviz-no_strict_aliasing.patch
- Rebase patches:
* graphviz-fix-pkgIndex.patch
* graphviz-no_php_extra_libs.patch
-------------------------------------------------------------------
Wed Feb 5 13:39:13 UTC 2025 - Dominique Leuenberger <dimstar@opensuse.org>
- Add python3-setuptools BuildRequires: fix build/installation when
using python 3.13.
-------------------------------------------------------------------
Fri Sep 6 09:08:28 UTC 2024 - Dr. Werner Fink <werner@suse.de>

View File

@@ -1,7 +1,7 @@
#
# spec file
# spec file for package graphviz
#
# Copyright (c) 2024 SUSE LLC
# Copyright (c) 2025 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -56,7 +56,7 @@
%bcond_with java
%bcond_with ocaml
Name: graphviz%{psuffix}
Version: 2.49.3
Version: 12.2.1
Release: 0
Summary: Graph Visualization Tools
License: EPL-1.0
@@ -72,16 +72,9 @@ Patch2: graphviz-array_overflow.patch
Patch3: graphviz-2.20.2-interpreter_names.patch
#PATCH-FIX-UPSTREAM Don't warn about harmless issues with swig generated code
Patch4: graphviz-useless_warnings.patch
Patch5: graphviz-no_strict_aliasing.patch
Patch6: graphviz-no_php_extra_libs.patch
# https://gitlab.com/graphviz/graphviz/-/issues/2303
Patch7: swig-4.1.0.patch
#PATCH-FIX-UPSTREAM gvc: detect plugin installation failure and display an error
Patch8: gvc-detect-plugin-installation-failure-and-display-an-error.patch
#PATCH-FIX-OPENSUSE Bug 1225776 - Flavor addons of package graphviz does not build with gcc14
Patch9: graphviz-2.49.3-boo1225776-gcc14.patch
#PATCH-FIX-UPSTREAM
Patch10: graphviz-87cc546.patch
BuildRequires: autoconf
BuildRequires: automake
BuildRequires: bison
@@ -108,6 +101,7 @@ BuildRequires: libjpeg-devel
BuildRequires: libpng-devel
BuildRequires: libwebp-devel
BuildRequires: perl
BuildRequires: python3-setuptools
BuildRequires: ruby-devel
BuildRequires: pkgconfig(cairo)
BuildRequires: pkgconfig(fontconfig)
@@ -142,24 +136,24 @@ BuildRequires: java-devel >= 1.6.0
BuildRequires: ocaml
%endif
%endif
%if "%{flavor}" == "qt5"
BuildRequires: pkgconfig(Qt5Core)
BuildRequires: pkgconfig(Qt5PrintSupport)
BuildRequires: pkgconfig(Qt5Widgets)
%if "%{flavor}" == "qt6"
BuildRequires: pkgconfig(Qt6Core)
BuildRequires: pkgconfig(Qt6PrintSupport)
BuildRequires: pkgconfig(Qt6Widgets)
%endif
%description
A collection of tools and tcl packages for the manipulation and layout
of graphs (as in nodes and edges, not as in bar charts).
%if "%{flavor}" == "qt5"
%if "%{flavor}" == "qt6"
%package -n graphviz-gvedit
Summary: Graph editor based on Qt
Group: Productivity/Graphics/Visualization/Graph
Requires: graphviz
%description -n graphviz-gvedit
The Qt5 graph editor included with graphviz.
The Qt6 graph editor included with graphviz.
%endif
%package -n graphviz-smyrna
@@ -208,14 +202,6 @@ Requires: java
A collection of tools and tcl packages for the manipulation and layout
of graphs (as in nodes and edges, not as in bar charts).
%package -n graphviz-x11
Summary: Graph editors based on X11
Group: Productivity/Graphics/Visualization/Graph
Requires: graphviz
%description -n graphviz-x11
The lefty/dotty/lneato X11 graph editors included with graphviz.
%package -n graphviz-lua
Summary: Lua extension for graphviz
Group: Productivity/Graphics/Visualization/Graph
@@ -364,15 +350,6 @@ Obsoletes: libgraphviz6 < %{version}-%{release}
The libxdot library provides support for parsing and deparsing graphical
operations specified by the xdot language.
%package -n liblab_gamut%{lab_gamut_soversion}
Summary: Library containing a rich set of graph drawing tools
Group: System/Libraries
Provides: libgraphviz6:%{_libdir}/liblab_gamut.so.1
Obsoletes: libgraphviz6 < %{version}-%{release}
%description -n liblab_gamut%{lab_gamut_soversion}
The lab_gamut library contains a rich set of graph drawing tools.
%package plugins-core
Summary: Core plugins for graphviz
Group: Productivity/Graphics/Visualization/Graph
@@ -393,7 +370,6 @@ Requires: libcdt%{cdt_soversion} = %{version}
Requires: libcgraph%{cgraph_soversion} = %{version}
Requires: libgvc%{gvc_soversion} = %{version}
Requires: libgvpr%{gvpr_soversion} = %{version}
Requires: liblab_gamut%{lab_gamut_soversion} = %{version}
Requires: libpathplan%{pathplan_soversion} = %{version}
Requires: libxdot%{xdot_soversion} = %{version}
@@ -409,12 +385,8 @@ programs that use the graphviz libraries including man3 pages.
%patch -P 2
%patch -P 3
%patch -P 4
%patch -P 5 -p1
%patch -P 6
%patch -P 7 -p1
%patch -P 8 -p1
%patch -P 9
%patch -P 10
# pkg-config returns 0 (TRUE) when guile-2.2 is present
if pkg-config --atleast-version=2.2 guile-2.2; then
@@ -426,10 +398,13 @@ rm -f contrib/gprof2dot.awk
# Fix path for lua/php install
sed -i \
-e 's@LUA_INSTALL_DIR="/usr.*@LUA_INSTALL_DIR=%{lua_archdir}@' \
-e 's@LUA_INSTALL_DIR="`$PKG_CONFIG.*@LUA_INSTALL_DIR="`$PKG_CONFIG --variable=INSTALL_CMOD lua$l`"@' \
-e 's@\(PHP_INSTALL_DIR=.*\)/php/modules@\1/php%{php_version}/extensions@' \
-e 's@\(PHP_INSTALL_DATADIR=.*\)/php@\1/php%{php_version}@' \
configure.ac
sed -i -e 's@LANGUAGE php7@LANGUAGE php8@' tclpkg/gv/CMakeLists.txt
%build
./autogen.sh RUBY_VER=%{?ruby_version}
CFLAGS="%{optflags} -ffast-math -fno-strict-aliasing -fno-strict-overflow -fPIC"
@@ -455,11 +430,10 @@ export LDFLAGS="-pie"
--without-visio \
%if "%{flavor}" == "addons"
--with-x \
--enable-lefty \
--with-smyrna \
RUBY_VER=%{ruby_version} \
%endif
%if "%{flavor}" == "qt5"
%if "%{flavor}" == "qt6"
--with-qt \
%endif
%if "%{flavor}" == ""
@@ -472,7 +446,7 @@ make %{?_smp_mflags}
%install
make install \
DESTDIR=%{buildroot} \
docdir=%{buildroot}%{_docdir}/%{mname} \
docdir=%{_docdir}/%{mname}-doc \
pkgconfigdir=%{_libdir}/pkgconfig
find %{buildroot} -type f -name "*.la" -delete -print
@@ -485,7 +459,6 @@ mkdir -p %{buildroot}/%{_docdir}
mkdir -p %{buildroot}%{_datadir}/%{nmame}
rm -f %{buildroot}/%{_libdir}/%{mname}/pkgIndex.tcl
chmod -x %{buildroot}%{_datadir}/%{mname}/lefty/*
mkdir -p %{buildroot}%{_libdir}/graphviz
touch %{buildroot}%{_libdir}/graphviz/%{config_file}
@@ -508,12 +481,13 @@ extension = gv.so
EOF
# Fix doc location
cp -a %{buildroot}%{_datadir}/%{mname}/doc %{buildroot}%{_defaultdocdir}/%{mname}-doc
%fdupes %{buildroot}%{_defaultdocdir}/%{mname}-doc
%fdupes %{buildroot}%{_datadir}/graphviz/demo
%else
rm -rf %{buildroot}%{_defaultdocdir}/%{mname}-doc
%endif
%if "%{flavor}" == "addons" || "%{flavor}" == "qt5"
%if "%{flavor}" == "addons" || "%{flavor}" == "qt6"
# Prune all the content of the base graphviz package
rm -rf %{buildroot}%{_libdir}/pkgconfig
rm -rf %{buildroot}%{_includedir}
@@ -525,9 +499,11 @@ rm -f %{buildroot}%{_mandir}/man7/*.7
rm -f %{buildroot}%{_libdir}/graphviz/%{config_file}
rm -f %{buildroot}%{_libdir}/graphviz/libgvplugin_core*
rm -f %{buildroot}%{_libdir}/graphviz/libgvplugin_dot_layout*
rm -f %{buildroot}%{_libdir}/graphviz/libgvplugin_kitty*
rm -f %{buildroot}%{_libdir}/graphviz/libgvplugin_neato_layout*
rm -f %{buildroot}%{_libdir}/graphviz/libgvplugin_vt*
# binaries removal
for i in acyclic bcomps ccomps circo cluster dijkstra dot dot2gxl dot_builtins edgepaint fdp gc gml2gv graphml2gv gv2gml gv2gxl gvcolor gvgen gvmap gvmap.sh gvpack gvpr gxl2dot gxl2gv mm2gv neato nop osage patchwork prune sccmap sfdp tred twopi unflatten vimdot; do
for i in acyclic bcomps ccomps circo cluster dijkstra dot dot2gxl dot_builtins dot_sandbox edgepaint fdp gc gml2gv graphml2gv gv2gml gv2gxl gvcolor gvgen gvmap gvmap.sh gvpack gvpr gxl2dot gxl2gv mm2gv neato nop osage patchwork prune sccmap sfdp tred twopi unflatten vimdot; do
rm -f %{buildroot}%{_bindir}/$i
rm -f %{buildroot}%{_mandir}/man1/$i.1
done
@@ -540,11 +516,6 @@ rm -f %{buildroot}%{_libdir}/lib{cdt,cgraph,gvc,gvpr,pathplan,xdot,lab_gamut}.so
for lib in libgdtclft* libgv_tcl.so libtcldot* libtclplan* ; do
mv %{buildroot}%{_libdir}/%{mname}/tcl/${lib} %{buildroot}%{_libdir}
done
# remove duplicated tcl files
for i in libgdtclft.so.0.0.0 libgv_tcl.so libtcldot.so.0.0.0 libtcldot_builtin.so.0.0.0 libtclplan.so.0.0.0; do
rm -f %{buildroot}%{_libdir}/tcl8.6/graphviz/$i
ln -s %{_libdir}/$i %{buildroot}%{_libdir}/tcl8.6/graphviz/$i
done
mkdir -p %{buildroot}%{_datadir}/tcl/%{mname}/
mv %{buildroot}%{_libdir}/%{mname}/tcl/pkgIndex.tcl %{buildroot}%{_datadir}/tcl/%{mname}/pkgIndex.tcl
# remove graphviz bindings from graphviz dir, these are installed into the language specific directories
@@ -554,15 +525,13 @@ rm -rf %{buildroot}%{_libdir}/graphviz/php
rm -rf %{buildroot}%{_libdir}/graphviz/python*
rm -rf %{buildroot}%{_libdir}/graphviz/ruby
%endif
%if "%{flavor}" == "" || "%{flavor}" == "qt5"
%if "%{flavor}" == "" || "%{flavor}" == "qt6"
# These are part of gnome subpkg
rm -f %{buildroot}%{_libdir}/graphviz/libgvplugin_pango*
rm -f %{buildroot}%{_libdir}/graphviz/libgvplugin_xlib*
# This is part of the gd subpkg only
rm -f %{buildroot}%{_mandir}/man1/{diffimg.1*,dotty.1*,lefty.1*,lneato.1*}
rm -f %{buildroot}%{_mandir}/man1/{diffimg.1*,dotty.1*,lneato.1*}
rm -f %{buildroot}%{_bindir}/{dotty,lneato}
# This is part of the x11 subpkg only
rm -rf %{buildroot}%{_datadir}/graphviz/lefty
%endif
# Remove wrongly located docs
rm -rf %{buildroot}%{_datadir}/%{mname}/doc
@@ -596,11 +565,7 @@ test -s %{_libdir}/graphviz/%{config_file} || echo "%{_libdir}/graphviz/%{config
%postun -n libxdot%{xdot_soversion} -p /sbin/ldconfig
%post -n liblab_gamut%{lab_gamut_soversion} -p /sbin/ldconfig
%postun -n liblab_gamut%{lab_gamut_soversion} -p /sbin/ldconfig
%if "%{flavor}" == "qt5"
%if "%{flavor}" == "qt6"
%files -n graphviz-gvedit
%license epl-v10.txt
%{_bindir}/gvedit
@@ -631,9 +596,7 @@ if test -x %{_bindir}/dot; then rm -f %{_libdir}/graphviz/%{config_file} ; %{_bi
%{_libdir}/graphviz/libgvplugin_gs*
%{_libdir}/graphviz/libgvplugin_rsvg*
%{_libdir}/graphviz/libgvplugin_pango*
%{_libdir}/graphviz/libgvplugin_gtk*
%{_libdir}/graphviz/libgvplugin_xlib*
%{_libdir}/graphviz/libgvplugin_gdk*
%post -n graphviz-gnome
%{_bindir}/dot -c
@@ -655,16 +618,6 @@ if test -x %{_bindir}/dot; then rm -f %{_libdir}/graphviz/%{config_file} ; %{_bi
%{lua_archdir}/gv.so
%{_mandir}/man3/gv.3lua%{ext_man}
%files -n graphviz-x11
%license epl-v10.txt
%{_bindir}/dotty
%{_bindir}/lefty
%{_bindir}/lneato
%{_datadir}/%{mname}/lefty
%{_mandir}/man1/dotty.1%{ext_man}
%{_mandir}/man1/lefty.1%{ext_man}
%{_mandir}/man1/lneato.1%{ext_man}
%if %{with ocaml}
%files -n graphviz-ocaml
%{_libdir}/graphviz/ocaml
@@ -678,7 +631,6 @@ if test -x %{_bindir}/dot; then rm -f %{_libdir}/graphviz/%{config_file} ; %{_bi
%files -n graphviz-php
%{phpext_dir}/gv.so
%{_datadir}/php%{php_version}/gv.php
%{_mandir}/man3/gv.3php%{ext_man}
%config(noreplace) %{phpconf_dir}/gv.ini
@@ -733,6 +685,7 @@ if test -x %{_bindir}/dot; then %{_bindir}/dot -c ; fi
%{_bindir}/dot
%{_bindir}/dot2gxl
%{_bindir}/dot_builtins
%{_bindir}/dot_sandbox
%{_bindir}/edgepaint
%{_bindir}/fdp
%{_bindir}/gc
@@ -821,9 +774,6 @@ if test -x %{_bindir}/dot; then %{_bindir}/dot -c ; fi
%files -n libxdot%{xdot_soversion}
%{_libdir}/libxdot.so.%{xdot_soversion}*
%files -n liblab_gamut%{lab_gamut_soversion}
%{_libdir}/liblab_gamut.so.%{lab_gamut_soversion}*
%files plugins-core
%dir %{_libdir}/%{name}
%ghost %{_libdir}/%{name}/%{config_file}
@@ -835,7 +785,6 @@ if test -x %{_bindir}/dot; then %{_bindir}/dot -c ; fi
%{_libdir}/libcgraph.so
%{_libdir}/libgvc.so
%{_libdir}/libgvpr.so
%{_libdir}/liblab_gamut.so
%{_libdir}/libpathplan.so
%{_libdir}/libxdot.so
%{_libdir}/pkgconfig/*.pc

View File

@@ -1,31 +0,0 @@
From: Matthew Fernandez <matthew.fernandez@gmail.com>
Subject: gvc: detect plugin installation failure and display an error
References: bsc#1219491
Patch-Mainline: 10.0.1
Git-commit: a95f977f5d809915ec4b14836d2b5b7f5e74881e
Git-repo: git@gitlab.com:graphviz/graphviz.git.git
Gitlab: fixes #2441
Reported-by: GJDuck
A malformed config6 file that leads to plugin search failing no longer causes
out-of-bounds memory reads. This now causes an error message and graceful
failure. #2441
Signed-off-by: <trenn@suse.com>
Index: graphviz-2.49.3/lib/gvc/gvconfig.c
===================================================================
--- graphviz-2.49.3.orig/lib/gvc/gvconfig.c
+++ graphviz-2.49.3/lib/gvc/gvconfig.c
@@ -183,6 +183,10 @@ static int gvconfig_plugin_install_from_
do {
api = token(&nest, &s);
gv_api = gvplugin_api(api);
+ if (gv_api == (api_t)-1) {
+ agerr(AGERR, "config error: %s %s not found\n", path, api);
+ return 0;
+ }
do {
if (nest == 2) {
type = token(&nest, &s);