pkgsrc-WIP-changes archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
graphviz: Update to 13.1.0
Module Name: pkgsrc-wip
Committed By: Michael Baeuerle <micha%NetBSD.org@localhost>
Pushed By: micha
Date: Mon Jul 14 12:40:09 2025 +0200
Changeset: a799dfb41212d311d97c5b69e40ab72ad275f84a
Modified Files:
Makefile
Added Files:
graphviz/COMMIT_MSG
graphviz/DEINSTALL
graphviz/DESCR
graphviz/INSTALL
graphviz/Makefile
graphviz/PLIST
graphviz/buildlink3.mk
graphviz/distinfo
graphviz/options.mk
graphviz/patches/patch-config_config__perl.pl
graphviz/patches/patch-configure.ac
graphviz/patches/patch-lib_gvc_Makefile.am
graphviz/patches/patch-lib_gvpr_actions.c
graphviz/patches/patch-lib_gvpr_compile.h
graphviz/patches/patch-plugin_gs_gvloadimage__gs.c
Log Message:
graphviz: Update to 13.1.0
- A new command line option, `-Afoo=bar`, serves as a shorthand way of writing
`-Gfoo=bar -Nfoo=bar -Efoo=bar`. #2278
- Inter-cluster edges are no longer spuriously duplicated. #162, #258, #2615
- When using the CMake build system, configuration no longer fails with syntax
errors when PangoCairo is unavailable. This was a regression in Graphviz
13.0.0. #2697
- When using the CMake build system, the minimum required version of CMake has
been upgraded 3.14.1 → 3.21.
- Building Graphviz from source now requires a C compiler with ISO C17 support.
- Processing a graph with GVPR now makes explicit the default `"\N"` label for
nodes.
- Graphs with large weights no longer trigger double `free`s. #1494, #2331
- `nop` preserves empty string labels. #2436
- The order of programmatic calls to `gvContext`/`gvContextPlugin` and
`agmemread` no longer affects default node labels. #2434
- Adjacency matrices are sparse and expanded on demand, removing out-of-bounds
accesses when computing these for some graphs. #1472
- Support for building the SWIG-generated Ruby language bindings has been
integrated into the CMake build system. This is controllable by the
`-DENABLE_RUBY={AUTO|ON|OFF}` option.
- A new plugin for outputting ASCII art has been implemented, `-Tascii`. This
relies on [AA-lib](https://aa-project.sourceforge.net/aalib/) and is only
supported in the CMake build system. #2421
- In gvpr, a new function `rename()` has been added for nodes. See `man gvpr`
for more information.
- If Quartz is enabled on macOS, the autotools build will include support for it
as a built-in plugin for static builds, for dependency free i.e. PDF support.
- Improved `agwrite` so it is much faster (linear not quadratic) when there are
many small subgraphs. #2593
- **Breaking**: `rank_t.cache_nc` is now a `int64_t`.
- **Breaking**: The `agreadline` function has been removed. #2558
- **Breaking**: `gvRenderData` takes its `length` parameter as a `size_t *`. The
`GVJ_t` fields `output_data_allocated` and `output_data_position` have type
`size_t`.
- The `GRAPHVIZ_CLI` variable in the CMake build system now additionally
controls whether the utilities `diffimg` and `prune` are built.
- **Breaking**: The cgraph macros `agnew` and `agnnew` have been removed.
- **Breaking**: The cgraph functions `agalloc`, `agrealloc`, and `agfree` have
been removed.
- **Breaking**: The cdt queue types, `DT_QUEUE`, `Dtqueue`, `_Dtqueue` have been
removed.
- **Breaking**: The cdt aliases `struct _dthold_s`, `struct _dtdata_s`,
`struct _dtmethod_s`, `struct _dtstat_s` have been removed.
- **Breaking**: The cdt type `_Dttree` has been removed.
- **Breaking**: The cdt aliases `struct _dtlink_s`, `struct _dtdisc_s`, and
`struct _dt_s` have been renamed to `struct dtlink_s_`, `struct dtdisc_s_`,
and `struct dt_s_` respectively.
- **Breaking**: The cdt macro `DT_PRIME` has been removed.
- **Breaking**: The cdt field `Dt_t.data` is now a `Dtdata_t` instead of
`Dtdata_t *`.
- **Breaking**: `GVJ_t.imagedata` is now an `unsigned char *`.
- The sandboxer implemented in Graphviz 12.2.1, `dot_sandbox`, supports macOS.
- The baseline version of Autoconf required to build Graphviz from source has
been upgraded 2.61 → 2.69.
- Building Graphviz from source now requires a C compiler with ISO C11 support.
- GVPR programs are now able to print `char` and `unsigned` variables. #2587
- CMake projects using Graphviz as a subproject (`add_subdirectory`) can now
link against and use `cgraph`, `pathplan`, and `xdot`.
- CMake projects using Graphviz as an installed third-party dependency can now
discover its libraries with `find_package(graphviz)` and then use them as e.g.
`target_link_libraries(myapp PRIVATE graphviz::cgraph)`. #2598
- Verbose `checkpath` warnings about ports not lying in their expected boxes
have been removed.
- In verbose mode (`-v`) the dot layout algorithm now notes when it is entering
each layout phase. #2540
- **Breaking**: The `EXPANDBP` macro has been removed.
- **Breaking**: The `EXPANDBB` macro has been removed.
- **Breaking**: `Agclos_t.strdict` is now an opaque pointer.
- **Breaking**: `agstrfree` takes an extra parameter indicating whether the
string being freed is an HTML-like string.
- **Breaking**: The `agcanon` function has been removed.
- **Breaking**: The `Agiddisc_t.alloc` member has been removed.
- **Breaking**: The `cflag` parameter to `agidsubg` has been removed.
- The CMake build system now installs libgvpr.
- The CMake build system now sets `DFLT_GVPRPATH` when compiling libgvpr.
- The CMake build system now installs the included library of gvpr programs.
- **Breaking**: The `all` parameter to `exclose` has been removed.
- MinGW on 32-bit x86 (“mingw32”) is no longer supported as a platform.
Installers and release archives for this platform are no longer provided.
#2649
- `gvgen` supports a new option, `-u<seed>`, for specifying the initial state of
the random number generator (RNG). The way in which the RNG is seeded has
slightly changed.
- **Breaking**: libcgraph’s SO name has been updated 6 → 7.
- The core plugin’s SVG output (`-Tsvg`, `-Tsvg_inline`) now sets
`xml:space="preserve"` on text elements for more accurate display.
- **Breaking**: To duplicate strings, you now should distinguish between regular
text strings and HTML-like strings. Regular text strings are handled through
`agstrdup_text` and HTML-like strings are handled through `agstrdup_html`. The
The `agstrdup` function has been retained for backwards compatibility, but
should be avoided where possible due to its ambiguity with respect to the
caller’s intent. Similarly for string binding, `agstrbind` has gained two
variants `agstrbind_text` and `agstrbind_html`. These should be used in
preference to `agstrbind` whenever possible. Similarly for attribute
creation/lookup, `agattr` has gained two variants `agattr_text` and
`agattr_html`. These should be used in preference to `agattr` whenever
possible. Similarly for safe attribute creation/lookup, `agsafeset` has gained
two variants `agsafeset_text` and `agsafeset_html`. These should be used in
preference to `agsafeset` whenever possible. Similarly, `agxset` has gained
two variants `agxset_text` and `agxset_html`. These should be used in
preference to `agxset` whenever possible. Similarly, `agset` has gained two
variants `agset_text` and `agset_html`. These should be used in preference to
`agset` whenever possible. #2089, #2641
- **Breaking**: The `EDGEOF` macro has been removed.
- The Autotools build system enables large file support on 32-bit platforms.
- **Breaking**: The Graphviz plugin version has been updated 6 → 8. A side
effect of this is the config6 file becoming config8.
- The core plugin’s SVG output (`-Tsvg`, `-Tsvg_inline`) uses a `viewBox` that
matches the image’s dimensions. This reverts behavior introduced in Graphviz
2.38.0 to the behavior Graphviz 2.36.0 and prior had. The difference is most
apparent when using a non-default `dpi` setting. #2669
- The Tcl bindings have been updated for compatibility with Tcl 9. #2668
- The SVG output format (`-Tsvg`, `-Tsvg_inline`) no longer duplicates font
families.
- **Breaking**: The function `aginternalmapclearlocalnames` has been removed.
#2664
- In gvpr programs, the `#` and `in` operators now work on `ARGV`. #2582
- **Breaking**: `xdot_color_stop.frac` is now a `double`.
- The GD plugin’s PNG output (`-Tpng:cairo:gd`) now sets DPI in the written PNG.
#1617
- The GDI+ plugin’s output (`-T*:cairo:gdiplus`) now sets DPI in the written
output. #1617
- The Quartz plugin’s PNG output (`-Tpng:cairo:quartz`) now sets DPI in the
written PNG. #1617
- **Breaking**: The `agconcat` function now takes an extra `filename` parameter.
If you are updating calling code, passing `NULL` for this parameter is a
reasonable migration strategy.
- **Breaking**: The `agsetfile` function has been removed.
- The GDK plugin’s output (`-T*:cairo:gdk`) now sets DPI in written JPEGs and
PNGs. #1617
- **Breaking**: The `Agsym_t` struct has gained a new member, `owner`.
- Numeric overflows when computing the total crossings in a graph with a large
number of crossings have been avoided. #2621
- A `free` of an invalid pointer has been fixed in the GD plugin. This was a
regression in Graphviz 12.1.1.
- A double-`free` when using rotated images was fixed in the GD plugin. This was
a regression in Graphviz 2.26.0.
- Guile 2.2 discovery has been restored in the Autotools build system. This was
a regression in Graphviz 12.2.0. #2624
- Legacy information about memory disciplines has been removed from the cgraph
man page.
- Some information in the gvc.3 man page that contradicted the gvc.h public
header has been corrected.
- Smyrna is once again compilable on macOS. This was a regression in Graphviz
10.0.1. #2631
- non-HTML (regular) strings and HTML-like strings are no longer considered
equivalent internally. This allows you to have a non-HTML string and an
HTML-like string with the same textual content. #2089
- Smyrna no longer crashes when selecting `Edit→Attributes` with no open graph.
#2635
- A bug in point map handling, where comparison of integer points were accessed
as doubles, has been corrected. The user facing consequences of this is
unknown, but could potentially lead to crashes, at least on 32-bit platforms.
Point maps are used by the neato layout engine. This was a regression in
Graphviz 12.0.0.
- The executables in the Windows 64-bit Debug release artifacts were statically
linked, not dynamically linked like the 64-bit Release and all the 32-bit
executables. This has now been corrected. This was a regression in Graphviz
12.0.0. #2630
- The `viewBox` attribute of an included SVG image no longer overrides the
`height` and `width` attributes, even when it precedes them. This was a
regression in Graphviz 2.30. #2636
- The interpretation of `viewBox` attributes in included SVG images has been
corrected. #2636
- Parsing of JPEG images used as node shapes has been corrected. This fixes a
problem where no or incorrectly sized images appeared in the output. Please
note that a bug in the GD plugin, which causes Graphviz to crash in Windows
Debug builds, now unfortunately seems to always occur when using the GD
plugin and JPEG images as node shapes. See
https://graphviz.org/docs/outputs/#image-formats for details. #2619
- `twopi` no longer crashes when processing graphs with `splines="ortho"`. #2643
- Network simplex functions have been refactored to avoid recursion. Now graphs
with deep node chains that previously caused stack overflows can be processed.
#2646
- Calling the GVPR function `lock` with a second argument `> 2³¹ - 1` is no
longer misinterpreted as a negative number.
- Out-of-bounds accesses during `gvgen` random tree generation have been fixed.
#2640
- `gvmap` no longer reads out-of-bounds memory when processing the
`-c_opacity=…` command line option. This was a regression in Graphviz 2.49.0.
- Using `rankdir=LR` in combination with `ltail` no longer causes crashes in
edge cases. #1949
- Using `splines=curved` no longer causes crashes when cut points unexpectedly
do not intersect bounding boxes. #1453
- In the CMake build system, the configuration step during installation
(`dot -c`) now anticipates that `$LD_LIBRARY_PATH` and `$DYLD_LIBRARY_PATH`
may be non-empty. #2676
- Failures during installing nodes into ranks now results in a graceful exit
rather than referencing invalid memory. #1581
- When using the Tcl bindings, deleting a graph no longer triggers a
use-after-free. This was a regression in Graphviz 2.30. #2618
- The `layout` command in the Tcl bindings works once again. This was a
regression in Graphviz 2.42.0. #2618
- In the CMake build system, configuring with
`-DENABLE_PYTHON=ON -DENABLE_SWIG=ON` no longer spuriously fails. #2675
- An assertion failure when processing graphs with empty ranks has been fixed.
#1514
- Using GVPR to set a default attribute on a subgraph whose root graph has no
default for that attribute no longer incorrectly sets the default on the root
graph. #2639
- Mingle no longer crashes when doing Y coordinate search. This was a regression
in Graphviz 2.47.0. #2599
- Smyrna no longer frees invalid pointers when processing xdot input. This was a
regression in Graphviz 2.50.0. #2687
- Smyrna no longer crashes when processing xdot gradient colors or font
characters. This was a regression in Graphviz 2.34.0.
To see a diff of this commit:
https://wip.pkgsrc.org/cgi-bin/gitweb.cgi?p=pkgsrc-wip.git;a=commitdiff;h=a799dfb41212d311d97c5b69e40ab72ad275f84a
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
diffstat:
Makefile | 1 +
graphviz/COMMIT_MSG | 234 ++++++++++++++++++
graphviz/DEINSTALL | 9 +
graphviz/DESCR | 8 +
graphviz/INSTALL | 9 +
graphviz/Makefile | 139 +++++++++++
graphviz/PLIST | 268 +++++++++++++++++++++
graphviz/buildlink3.mk | 22 ++
graphviz/distinfo | 11 +
graphviz/options.mk | 98 ++++++++
graphviz/patches/patch-config_config__perl.pl | 15 ++
graphviz/patches/patch-configure.ac | 24 ++
graphviz/patches/patch-lib_gvc_Makefile.am | 15 ++
graphviz/patches/patch-lib_gvpr_actions.c | 15 ++
graphviz/patches/patch-lib_gvpr_compile.h | 20 ++
graphviz/patches/patch-plugin_gs_gvloadimage__gs.c | 33 +++
16 files changed, 921 insertions(+)
diffs:
diff --git a/Makefile b/Makefile
index 92bfe3182f..0897cd0dda 100644
--- a/Makefile
+++ b/Makefile
@@ -1409,6 +1409,7 @@ SUBDIR+= gramscii
SUBDIR+= grandr
SUBDIR+= granite
SUBDIR+= graphmonkey
+SUBDIR+= graphviz
SUBDIR+= grass
SUBDIR+= grass-Spearfish
SUBDIR+= graveman
diff --git a/graphviz/COMMIT_MSG b/graphviz/COMMIT_MSG
new file mode 100644
index 0000000000..4c4d821177
--- /dev/null
+++ b/graphviz/COMMIT_MSG
@@ -0,0 +1,234 @@
+graphics/graphviz: Update to 13.1.0
+
+## [13.1.0] – 2025-07-01
+
+### Added
+
+- A new command line option, `-Afoo=bar`, serves as a shorthand way of writing
+ `-Gfoo=bar -Nfoo=bar -Efoo=bar`. #2278
+
+### Fixed
+
+- Inter-cluster edges are no longer spuriously duplicated. #162, #258, #2615
+- When using the CMake build system, configuration no longer fails with syntax
+ errors when PangoCairo is unavailable. This was a regression in Graphviz
+ 13.0.0. #2697
+
+## [13.0.1] – 2025-06-15
+
+### Changed
+
+- When using the CMake build system, the minimum required version of CMake has
+ been upgraded 3.14.1 → 3.21.
+- Building Graphviz from source now requires a C compiler with ISO C17 support.
+- Processing a graph with GVPR now makes explicit the default `"\N"` label for
+ nodes.
+
+### Fixed
+
+- Graphs with large weights no longer trigger double `free`s. #1494, #2331
+- `nop` preserves empty string labels. #2436
+- The order of programmatic calls to `gvContext`/`gvContextPlugin` and
+ `agmemread` no longer affects default node labels. #2434
+- Adjacency matrices are sparse and expanded on demand, removing out-of-bounds
+ accesses when computing these for some graphs. #1472
+
+## [13.0.0] – 2025-06-08
+
+### Added
+
+- Support for building the SWIG-generated Ruby language bindings has been
+ integrated into the CMake build system. This is controllable by the
+ `-DENABLE_RUBY={AUTO|ON|OFF}` option.
+- A new plugin for outputting ASCII art has been implemented, `-Tascii`. This
+ relies on [AA-lib](https://aa-project.sourceforge.net/aalib/) and is only
+ supported in the CMake build system. #2421
+- In gvpr, a new function `rename()` has been added for nodes. See `man gvpr`
+ for more information.
+
+### Changed
+
+- If Quartz is enabled on macOS, the autotools build will include support for it
+ as a built-in plugin for static builds, for dependency free i.e. PDF support.
+- Improved `agwrite` so it is much faster (linear not quadratic) when there are
+ many small subgraphs. #2593
+- **Breaking**: `rank_t.cache_nc` is now a `int64_t`.
+- **Breaking**: The `agreadline` function has been removed. #2558
+- **Breaking**: `gvRenderData` takes its `length` parameter as a `size_t *`. The
+ `GVJ_t` fields `output_data_allocated` and `output_data_position` have type
+ `size_t`.
+- The `GRAPHVIZ_CLI` variable in the CMake build system now additionally
+ controls whether the utilities `diffimg` and `prune` are built.
+- **Breaking**: The cgraph macros `agnew` and `agnnew` have been removed.
+- **Breaking**: The cgraph functions `agalloc`, `agrealloc`, and `agfree` have
+ been removed.
+- **Breaking**: The cdt queue types, `DT_QUEUE`, `Dtqueue`, `_Dtqueue` have been
+ removed.
+- **Breaking**: The cdt aliases `struct _dthold_s`, `struct _dtdata_s`,
+ `struct _dtmethod_s`, `struct _dtstat_s` have been removed.
+- **Breaking**: The cdt type `_Dttree` has been removed.
+- **Breaking**: The cdt aliases `struct _dtlink_s`, `struct _dtdisc_s`, and
+ `struct _dt_s` have been renamed to `struct dtlink_s_`, `struct dtdisc_s_`,
+ and `struct dt_s_` respectively.
+- **Breaking**: The cdt macro `DT_PRIME` has been removed.
+- **Breaking**: The cdt field `Dt_t.data` is now a `Dtdata_t` instead of
+ `Dtdata_t *`.
+- **Breaking**: `GVJ_t.imagedata` is now an `unsigned char *`.
+- The sandboxer implemented in Graphviz 12.2.1, `dot_sandbox`, supports macOS.
+- The baseline version of Autoconf required to build Graphviz from source has
+ been upgraded 2.61 → 2.69.
+- Building Graphviz from source now requires a C compiler with ISO C11 support.
+- GVPR programs are now able to print `char` and `unsigned` variables. #2587
+- CMake projects using Graphviz as a subproject (`add_subdirectory`) can now
+ link against and use `cgraph`, `pathplan`, and `xdot`.
+- CMake projects using Graphviz as an installed third-party dependency can now
+ discover its libraries with `find_package(graphviz)` and then use them as e.g.
+ `target_link_libraries(myapp PRIVATE graphviz::cgraph)`. #2598
+- Verbose `checkpath` warnings about ports not lying in their expected boxes
+ have been removed.
+- In verbose mode (`-v`) the dot layout algorithm now notes when it is entering
+ each layout phase. #2540
+- **Breaking**: The `EXPANDBP` macro has been removed.
+- **Breaking**: The `EXPANDBB` macro has been removed.
+- **Breaking**: `Agclos_t.strdict` is now an opaque pointer.
+- **Breaking**: `agstrfree` takes an extra parameter indicating whether the
+ string being freed is an HTML-like string.
+- **Breaking**: The `agcanon` function has been removed.
+- **Breaking**: The `Agiddisc_t.alloc` member has been removed.
+- **Breaking**: The `cflag` parameter to `agidsubg` has been removed.
+- The CMake build system now installs libgvpr.
+- The CMake build system now sets `DFLT_GVPRPATH` when compiling libgvpr.
+- The CMake build system now installs the included library of gvpr programs.
+- **Breaking**: The `all` parameter to `exclose` has been removed.
+- MinGW on 32-bit x86 (“mingw32”) is no longer supported as a platform.
+ Installers and release archives for this platform are no longer provided.
+ #2649
+- `gvgen` supports a new option, `-u<seed>`, for specifying the initial state of
+ the random number generator (RNG). The way in which the RNG is seeded has
+ slightly changed.
+- **Breaking**: libcgraph’s SO name has been updated 6 → 7.
+- The core plugin’s SVG output (`-Tsvg`, `-Tsvg_inline`) now sets
+ `xml:space="preserve"` on text elements for more accurate display.
+- **Breaking**: To duplicate strings, you now should distinguish between regular
+ text strings and HTML-like strings. Regular text strings are handled through
+ `agstrdup_text` and HTML-like strings are handled through `agstrdup_html`. The
+ The `agstrdup` function has been retained for backwards compatibility, but
+ should be avoided where possible due to its ambiguity with respect to the
+ caller’s intent. Similarly for string binding, `agstrbind` has gained two
+ variants `agstrbind_text` and `agstrbind_html`. These should be used in
+ preference to `agstrbind` whenever possible. Similarly for attribute
+ creation/lookup, `agattr` has gained two variants `agattr_text` and
+ `agattr_html`. These should be used in preference to `agattr` whenever
+ possible. Similarly for safe attribute creation/lookup, `agsafeset` has gained
+ two variants `agsafeset_text` and `agsafeset_html`. These should be used in
+ preference to `agsafeset` whenever possible. Similarly, `agxset` has gained
+ two variants `agxset_text` and `agxset_html`. These should be used in
+ preference to `agxset` whenever possible. Similarly, `agset` has gained two
+ variants `agset_text` and `agset_html`. These should be used in preference to
+ `agset` whenever possible. #2089, #2641
+- **Breaking**: The `EDGEOF` macro has been removed.
+- The Autotools build system enables large file support on 32-bit platforms.
+- **Breaking**: The Graphviz plugin version has been updated 6 → 8. A side
+ effect of this is the config6 file becoming config8.
+- The core plugin’s SVG output (`-Tsvg`, `-Tsvg_inline`) uses a `viewBox` that
+ matches the image’s dimensions. This reverts behavior introduced in Graphviz
+ 2.38.0 to the behavior Graphviz 2.36.0 and prior had. The difference is most
+ apparent when using a non-default `dpi` setting. #2669
+- The Tcl bindings have been updated for compatibility with Tcl 9. #2668
+- The SVG output format (`-Tsvg`, `-Tsvg_inline`) no longer duplicates font
+ families.
+- **Breaking**: The function `aginternalmapclearlocalnames` has been removed.
+ #2664
+- In gvpr programs, the `#` and `in` operators now work on `ARGV`. #2582
+- **Breaking**: `xdot_color_stop.frac` is now a `double`.
+- The GD plugin’s PNG output (`-Tpng:cairo:gd`) now sets DPI in the written PNG.
+ #1617
+- The GDI+ plugin’s output (`-T*:cairo:gdiplus`) now sets DPI in the written
+ output. #1617
+- The Quartz plugin’s PNG output (`-Tpng:cairo:quartz`) now sets DPI in the
+ written PNG. #1617
+- **Breaking**: The `agconcat` function now takes an extra `filename` parameter.
+ If you are updating calling code, passing `NULL` for this parameter is a
+ reasonable migration strategy.
+- **Breaking**: The `agsetfile` function has been removed.
+- The GDK plugin’s output (`-T*:cairo:gdk`) now sets DPI in written JPEGs and
+ PNGs. #1617
+- **Breaking**: The `Agsym_t` struct has gained a new member, `owner`.
+
+### Fixed
+
+- Numeric overflows when computing the total crossings in a graph with a large
+ number of crossings have been avoided. #2621
+- A `free` of an invalid pointer has been fixed in the GD plugin. This was a
+ regression in Graphviz 12.1.1.
+- A double-`free` when using rotated images was fixed in the GD plugin. This was
+ a regression in Graphviz 2.26.0.
+- Guile 2.2 discovery has been restored in the Autotools build system. This was
+ a regression in Graphviz 12.2.0. #2624
+- Legacy information about memory disciplines has been removed from the cgraph
+ man page.
+- Some information in the gvc.3 man page that contradicted the gvc.h public
+ header has been corrected.
+- Smyrna is once again compilable on macOS. This was a regression in Graphviz
+ 10.0.1. #2631
+- non-HTML (regular) strings and HTML-like strings are no longer considered
+ equivalent internally. This allows you to have a non-HTML string and an
+ HTML-like string with the same textual content. #2089
+- Smyrna no longer crashes when selecting `Edit→Attributes` with no open graph.
+ #2635
+- A bug in point map handling, where comparison of integer points were accessed
+ as doubles, has been corrected. The user facing consequences of this is
+ unknown, but could potentially lead to crashes, at least on 32-bit platforms.
+ Point maps are used by the neato layout engine. This was a regression in
+ Graphviz 12.0.0.
+- The executables in the Windows 64-bit Debug release artifacts were statically
+ linked, not dynamically linked like the 64-bit Release and all the 32-bit
+ executables. This has now been corrected. This was a regression in Graphviz
+ 12.0.0. #2630
+- The `viewBox` attribute of an included SVG image no longer overrides the
+ `height` and `width` attributes, even when it precedes them. This was a
+ regression in Graphviz 2.30. #2636
+- The interpretation of `viewBox` attributes in included SVG images has been
+ corrected. #2636
+- Parsing of JPEG images used as node shapes has been corrected. This fixes a
+ problem where no or incorrectly sized images appeared in the output. Please
+ note that a bug in the GD plugin, which causes Graphviz to crash in Windows
+ Debug builds, now unfortunately seems to always occur when using the GD
+ plugin and JPEG images as node shapes. See
+ https://graphviz.org/docs/outputs/#image-formats for details. #2619
+- `twopi` no longer crashes when processing graphs with `splines="ortho"`. #2643
+- Network simplex functions have been refactored to avoid recursion. Now graphs
+ with deep node chains that previously caused stack overflows can be processed.
+ #2646
+- Calling the GVPR function `lock` with a second argument `> 2³¹ - 1` is no
+ longer misinterpreted as a negative number.
+- Out-of-bounds accesses during `gvgen` random tree generation have been fixed.
+ #2640
+- `gvmap` no longer reads out-of-bounds memory when processing the
+ `-c_opacity=…` command line option. This was a regression in Graphviz 2.49.0.
+- Using `rankdir=LR` in combination with `ltail` no longer causes crashes in
+ edge cases. #1949
+- Using `splines=curved` no longer causes crashes when cut points unexpectedly
+ do not intersect bounding boxes. #1453
+- In the CMake build system, the configuration step during installation
+ (`dot -c`) now anticipates that `$LD_LIBRARY_PATH` and `$DYLD_LIBRARY_PATH`
+ may be non-empty. #2676
+- Failures during installing nodes into ranks now results in a graceful exit
+ rather than referencing invalid memory. #1581
+- When using the Tcl bindings, deleting a graph no longer triggers a
+ use-after-free. This was a regression in Graphviz 2.30. #2618
+- The `layout` command in the Tcl bindings works once again. This was a
+ regression in Graphviz 2.42.0. #2618
+- In the CMake build system, configuring with
+ `-DENABLE_PYTHON=ON -DENABLE_SWIG=ON` no longer spuriously fails. #2675
+- An assertion failure when processing graphs with empty ranks has been fixed.
+ #1514
+- Using GVPR to set a default attribute on a subgraph whose root graph has no
+ default for that attribute no longer incorrectly sets the default on the root
+ graph. #2639
+- Mingle no longer crashes when doing Y coordinate search. This was a regression
+ in Graphviz 2.47.0. #2599
+- Smyrna no longer frees invalid pointers when processing xdot input. This was a
+ regression in Graphviz 2.50.0. #2687
+- Smyrna no longer crashes when processing xdot gradient colors or font
+ characters. This was a regression in Graphviz 2.34.0.
diff --git a/graphviz/DEINSTALL b/graphviz/DEINSTALL
new file mode 100644
index 0000000000..c747484fad
--- /dev/null
+++ b/graphviz/DEINSTALL
@@ -0,0 +1,9 @@
+# $NetBSD: DEINSTALL,v 1.2 2009/05/17 12:55:52 sno Exp $
+
+: ${PKG_PREFIX=@PREFIX@}
+
+case ${STAGE} in
+DEINSTALL)
+ ${RM} ${PKG_PREFIX}/lib/graphviz/config6
+ ;;
+esac
diff --git a/graphviz/DESCR b/graphviz/DESCR
new file mode 100644
index 0000000000..b854a133f1
--- /dev/null
+++ b/graphviz/DESCR
@@ -0,0 +1,8 @@
+Graphviz is a set of graph drawing tools from AT&T Research and Lucent Bell
+Laboratories.
+
+It includes:
+- dot: makes hierarchical layouts of directed graphs
+- neato: makes "spring" model layouts of undirected graphs
+- libcgraph: the base library for graph tools
+- various associated utilities
diff --git a/graphviz/INSTALL b/graphviz/INSTALL
new file mode 100644
index 0000000000..fe5def208f
--- /dev/null
+++ b/graphviz/INSTALL
@@ -0,0 +1,9 @@
+# $NetBSD: INSTALL,v 1.1 2007/09/21 17:40:38 joerg Exp $
+
+: ${PKG_PREFIX=@PREFIX@}
+
+case ${STAGE} in
+POST-INSTALL)
+ ${PKG_PREFIX}/bin/dot -c
+ ;;
+esac
diff --git a/graphviz/Makefile b/graphviz/Makefile
new file mode 100644
index 0000000000..0e2d8bfb2d
--- /dev/null
+++ b/graphviz/Makefile
@@ -0,0 +1,139 @@
+# $NetBSD: Makefile,v 1.301 2025/07/13 08:17:38 wiz Exp $
+
+DISTNAME= graphviz-13.1.0
+CATEGORIES= graphics
+MASTER_SITES= ${MASTER_SITE_GITLAB:=api/v4/projects/4207231/packages/generic/graphviz-releases/${PKGVERSION_NOREV}/}
+EXTRACT_SUFX= .tar.xz
+
+MAINTAINER= micha%NetBSD.org@localhost
+HOMEPAGE= https://www.graphviz.org/
+COMMENT= Graph Drawing Programs from AT&T Research and Lucent Bell Labs
+LICENSE= epl-v1.0
+
+CHECK_FILES_SKIP+= ${PREFIX}/lib/graphviz/config6
+CHECK_PORTABILITY_SKIP+= windows/*
+
+USE_LANGUAGES= c c++
+USE_CC_FEATURES= c17
+USE_CXX_FEATURES= c++17 unique_ptr
+
+USE_TOOLS+= automake autoreconf makeinfo bison flex gmake groff pkg-config
+USE_LIBTOOL= yes
+GNU_CONFIGURE= yes
+GNU_CONFIGURE_STRICT= no # has sub-configures
+CONFIGURE_ARGS+= --disable-d
+CONFIGURE_ARGS+= --disable-debug
+CONFIGURE_ARGS+= --disable-go
+CONFIGURE_ARGS+= --disable-guile
+CONFIGURE_ARGS+= --disable-io
+CONFIGURE_ARGS+= --disable-java
+CONFIGURE_ARGS+= --disable-javascript
+CONFIGURE_ARGS+= --disable-man-pdfs
+CONFIGURE_ARGS+= --disable-ocaml
+CONFIGURE_ARGS+= --disable-perl
+CONFIGURE_ARGS+= --disable-php
+CONFIGURE_ARGS+= --disable-python
+CONFIGURE_ARGS+= --disable-python3
+CONFIGURE_ARGS+= --disable-r
+CONFIGURE_ARGS+= --disable-ruby
+CONFIGURE_ARGS+= --disable-sharp
+CONFIGURE_ARGS+= --enable-ltdl
+CONFIGURE_ARGS+= --enable-rpath
+CONFIGURE_ARGS+= --without-ann
+CONFIGURE_ARGS+= --without-devil
+CONFIGURE_ARGS+= --without-gdiplus
+CONFIGURE_ARGS+= --without-gdk
+CONFIGURE_ARGS+= --without-glade
+CONFIGURE_ARGS+= --without-glitz
+CONFIGURE_ARGS+= --without-glut
+CONFIGURE_ARGS+= --without-gtk
+CONFIGURE_ARGS+= --without-gtkgl
+CONFIGURE_ARGS+= --without-gtkglext
+CONFIGURE_ARGS+= --without-lasi
+CONFIGURE_ARGS+= --without-ming
+CONFIGURE_ARGS+= --without-qt
+CONFIGURE_ARGS+= --without-smyrna
+CONFIGURE_ARGS+= --with-digcola
+CONFIGURE_ARGS+= --with-expat
+CONFIGURE_ARGS+= --with-fontconfig
+CONFIGURE_ARGS+= --with-freetype2
+CONFIGURE_ARGS+= --with-gts
+CONFIGURE_ARGS+= --with-ipsepcola
+CONFIGURE_ARGS+= --with-ortho
+CONFIGURE_ARGS+= --with-pangocairo
+CONFIGURE_ARGS+= --with-sfdp
+CONFIGURE_ARGS+= --disable-tcl
+CONFIGURE_ARGS+= --with-visio
+CONFIGURE_ARGS+= --with-webp
+# build fails when PHP and/or Ruby are also installed
+CONFIGURE_ENV+= ac_cv_prog_PHP=
+CONFIGURE_ENV+= ac_cv_prog_RUBY=
+
+CPPFLAGS+= -DNO_POSTSCRIPT_ALIAS=1
+LDFLAGS.SunOS+= -lsocket -lnsl
+
+PKGCONFIG_OVERRIDE+= lib/cdt/libcdt.pc.in
+PKGCONFIG_OVERRIDE+= lib/cgraph/libcgraph.pc.in
+PKGCONFIG_OVERRIDE+= lib/edgepaint/liblab_gamut.pc.in
+PKGCONFIG_OVERRIDE+= lib/expr/libexpr.pc.in
+PKGCONFIG_OVERRIDE+= lib/gvc/libgvc.pc.in
+PKGCONFIG_OVERRIDE+= lib/gvpr/libgvpr.pc.in
+PKGCONFIG_OVERRIDE+= lib/pack/libpack.pc.in
+PKGCONFIG_OVERRIDE+= lib/pathplan/libpathplan.pc.in
+PKGCONFIG_OVERRIDE+= lib/sfdpgen/libsfdp.pc.in
+PKGCONFIG_OVERRIDE+= lib/xdot/libxdot.pc.in
+
+# With lua51 there's a PLIST divergence and it isn't obvious whether
+# it's serious or not, or what causes it.
+LUA_VERSIONS_INCOMPATIBLE= 51
+
+REPLACE_PERL+= contrib/dotmcl.pl contrib/dirgraph/dirgraph.pl
+REPLACE_PYTHON+= cmd/dot/dot_sandbox
+
+.include "../../mk/bsd.prefs.mk"
+
+# Override Xaw type configured by user
+XAW_TYPE= standard
+
+.if ${OPSYS} == "NetBSD" && ${MACHINE_ARCH} == "powerpc"
+# Forces link with -lgomp directly instead of via dlopen()
+# so we don't overflow thread-local storage in ld.elf_so
+CFLAGS+= -fopenmp
+CONFIGURE_ARGS+= CFLAGS="${CFLAGS}"
+.endif
+
+.if ${OPSYS} == "FreeBSD"
+SUBST_CLASSES+= sfflags
+SUBST_STAGE.sfflags= pre-configure
+SUBST_MESSAGE.sfflags= Fixing SF_FLAGS identifier for FreeBSD.
+SUBST_FILES.sfflags= lib/sfio/sfclrlock.c lib/sfio/sfio_t.h lib/sfio/sfio.h
+SUBST_FILES.sfflags+= lib/sfio/sfnew.c lib/sfio/sfopen.c lib/sfio/sfset.c
+SUBST_SED.sfflags= -e 's|SF_FLAGS|SFIO_FLAGS|g'
+.endif
+
+pre-configure:
+ cd ${WRKSRC} && autoreconf -fiv
+
+# Remove temporary files and directories created by re-linking "libgv_lua.la".
+post-install:
+ ${RM} -rf ${DESTDIR}${PREFIX}/lib/graphviz/lua/gv.so \
+ ${DESTDIR}${PREFIX}/lib/graphviz/tcl/tcl \
+ ${DESTDIR}${PREFIX}/lib/lua/5.1/gv.so
+
+.include "options.mk"
+
+DEPENDS+= urw-fonts-[0-9]*:../../fonts/urw-fonts
+.include "../../converters/libiconv/buildlink3.mk"
+.include "../../devel/gettext-lib/buildlink3.mk"
+.include "../../devel/libltdl/buildlink3.mk"
+BUILDLINK_API_DEPENDS.pango+= pango>=1.22.0
+.include "../../devel/pango/buildlink3.mk"
+.include "../../devel/zlib/buildlink3.mk"
+.include "../../fonts/fontconfig/buildlink3.mk"
+.include "../../graphics/freetype2/buildlink3.mk"
+.include "../../graphics/gts/buildlink3.mk"
+.include "../../graphics/libwebp/buildlink3.mk"
+.include "../../lang/python/application.mk"
+.include "../../textproc/expat/buildlink3.mk"
+.include "../../mk/pthread.buildlink3.mk"
+.include "../../mk/bsd.pkg.mk"
diff --git a/graphviz/PLIST b/graphviz/PLIST
new file mode 100644
index 0000000000..5bf832038d
--- /dev/null
+++ b/graphviz/PLIST
@@ -0,0 +1,268 @@
+@comment $NetBSD: PLIST,v 1.65 2025/04/28 13:19:49 adam Exp $
+bin/acyclic
+bin/bcomps
+bin/ccomps
+bin/circo
+bin/cluster
+${PLIST.gd}bin/diffimg
+bin/dijkstra
+bin/dot
+bin/dot2gxl
+bin/dot_builtins
+bin/dot_sandbox
+bin/edgepaint
+bin/fdp
+bin/gc
+bin/gml2gv
+bin/graphml2gv
+bin/gv2gml
+bin/gv2gxl
+bin/gvcolor
+bin/gvgen
+bin/gvmap
+bin/gvmap.sh
+bin/gvpack
+bin/gvpr
+bin/gxl2dot
+bin/gxl2gv
+bin/mm2gv
+bin/neato
+bin/nop
+bin/osage
+bin/patchwork
+bin/prune
+bin/sccmap
+bin/sfdp
+bin/tred
+bin/twopi
+bin/unflatten
+${PLIST.x11}bin/vimdot
+include/graphviz/arith.h
+include/graphviz/cdt.h
+include/graphviz/cgraph.h
+include/graphviz/color.h
+include/graphviz/geom.h
+include/graphviz/graphviz_version.h
+include/graphviz/gvc.h
+include/graphviz/gvcext.h
+include/graphviz/gvcjob.h
+include/graphviz/gvcommon.h
+include/graphviz/gvconfig.h
+include/graphviz/gvplugin.h
+include/graphviz/gvplugin_device.h
+include/graphviz/gvplugin_layout.h
+include/graphviz/gvplugin_loadimage.h
+include/graphviz/gvplugin_render.h
+include/graphviz/gvplugin_textlayout.h
+include/graphviz/gvpr.h
+include/graphviz/pack.h
+include/graphviz/pathgeom.h
+include/graphviz/pathplan.h
+include/graphviz/textspan.h
+include/graphviz/types.h
+include/graphviz/usershape.h
+include/graphviz/xdot.h
+lib/graphviz/libgvplugin_core.la
+lib/graphviz/libgvplugin_dot_layout.la
+${PLIST.gd}lib/graphviz/libgvplugin_gd.la
+${PLIST.ghostscript}${PLIST.x11}lib/graphviz/libgvplugin_gs.la
+lib/graphviz/libgvplugin_kitty.la
+lib/graphviz/libgvplugin_neato_layout.la
+lib/graphviz/libgvplugin_pango.la
+${PLIST.poppler}lib/graphviz/libgvplugin_poppler.la
+${PLIST.quartz}lib/graphviz/libgvplugin_quartz.la
+${PLIST.svg}lib/graphviz/libgvplugin_rsvg.la
+lib/graphviz/libgvplugin_vt.la
+lib/graphviz/libgvplugin_webp.la
+${PLIST.x11}lib/graphviz/libgvplugin_xlib.la
+${PLIST.lua}lib/graphviz/lua/libgv_lua.la
+lib/libcdt.la
+lib/libcgraph.la
+lib/libgvc.la
+lib/libgvpr.la
+lib/libpathplan.la
+lib/libxdot.la
+${PLIST.lua}lib/lua/gv.so
+lib/pkgconfig/libcdt.pc
+lib/pkgconfig/libcgraph.pc
+lib/pkgconfig/libgvc.pc
+lib/pkgconfig/libgvpr.pc
+lib/pkgconfig/libpathplan.pc
+lib/pkgconfig/libxdot.pc
+man/man1/acyclic.1
+man/man1/bcomps.1
+man/man1/ccomps.1
+man/man1/circo.1
+man/man1/cluster.1
+${PLIST.gd}man/man1/diffimg.1
+man/man1/dijkstra.1
+man/man1/dot.1
+man/man1/dot2gxl.1
+man/man1/dot_sandbox.1
+man/man1/edgepaint.1
+man/man1/fdp.1
+man/man1/gc.1
+man/man1/gml2gv.1
+man/man1/graphml2gv.1
+man/man1/gv2gml.1
+man/man1/gv2gxl.1
+man/man1/gvcolor.1
+man/man1/gvgen.1
+man/man1/gvmap.1
+man/man1/gvmap.sh.1
+man/man1/gvpack.1
+man/man1/gvpr.1
+man/man1/gxl2dot.1
+man/man1/gxl2gv.1
+man/man1/mm2gv.1
+man/man1/neato.1
+man/man1/nop.1
+man/man1/osage.1
+man/man1/patchwork.1
+man/man1/prune.1
+man/man1/sccmap.1
+man/man1/sfdp.1
+man/man1/tred.1
+man/man1/twopi.1
+man/man1/unflatten.1
+${PLIST.x11}man/man1/vimdot.1
+man/man3/cdt.3
+man/man3/cgraph.3
+man/man3/expr.3
+${PLIST.lua}man/man3/gv.3lua
+${PLIST.swig}man/man3/gv.3python
+man/man3/gvc.3
+man/man3/gvpr.3
+man/man3/pack.3
+man/man3/pathplan.3
+man/man3/xdot.3
+man/man7/graphviz.7
+share/doc/graphviz/AUTHORS
+share/doc/graphviz/Agraph.pdf
+share/doc/graphviz/CHANGELOG.md
+share/doc/graphviz/COPYING
+share/doc/graphviz/Dot.ref
+share/doc/graphviz/FAQ.html
+share/doc/graphviz/NEWS
+share/doc/graphviz/build.html
+share/doc/graphviz/char.html
+share/doc/graphviz/cpl1.0.txt
+share/doc/graphviz/dotguide.pdf
+share/doc/graphviz/gdtclft.entities.example.png
+share/doc/graphviz/index.html
+share/doc/graphviz/info/arrows.html
+share/doc/graphviz/info/attrs.html
+share/doc/graphviz/info/colors.html
+share/doc/graphviz/info/command.html
+share/doc/graphviz/info/index.html
+share/doc/graphviz/info/lang.html
+share/doc/graphviz/info/output.html
+share/doc/graphviz/info/shapes.html
+share/doc/graphviz/internal_todo.html
+share/doc/graphviz/latex_suggestions.txt
+share/doc/graphviz/libguide.pdf
+share/doc/graphviz/neatoguide.pdf
+share/doc/graphviz/pspdf.png
+share/doc/graphviz/schema/arguments.xml
+share/doc/graphviz/schema/attributes.xml
+share/doc/graphviz/schema/attributes.xslt
+share/doc/graphviz/todo.html
+share/doc/graphviz/winbuild.html
+${PLIST.lua}share/graphviz/demo/modgraph.lua
+share/graphviz/graphs/directed/KW91.gv
+share/graphviz/graphs/directed/Latin1.gv
+share/graphviz/graphs/directed/NaN.gv
+share/graphviz/graphs/directed/abstract.gv
+share/graphviz/graphs/directed/alf.gv
+share/graphviz/graphs/directed/arrows.gv
+share/graphviz/graphs/directed/awilliams.gv
+share/graphviz/graphs/directed/biological.gv
+share/graphviz/graphs/directed/clust.gv
+share/graphviz/graphs/directed/clust1.gv
+share/graphviz/graphs/directed/clust2.gv
+share/graphviz/graphs/directed/clust3.gv
+share/graphviz/graphs/directed/clust4.gv
+share/graphviz/graphs/directed/clust5.gv
+share/graphviz/graphs/directed/crazy.gv
+share/graphviz/graphs/directed/ctext.gv
+share/graphviz/graphs/directed/dfa.gv
+share/graphviz/graphs/directed/fig6.gv
+share/graphviz/graphs/directed/fsm.gv
+share/graphviz/graphs/directed/grammar.gv
+share/graphviz/graphs/directed/hashtable.gv
+share/graphviz/graphs/directed/honda-tokoro.gv
+share/graphviz/graphs/directed/japanese.gv
+share/graphviz/graphs/directed/jcctree.gv
+share/graphviz/graphs/directed/jsort.gv
+share/graphviz/graphs/directed/ldbxtried.gv
+share/graphviz/graphs/directed/longflat.gv
+share/graphviz/graphs/directed/mike.gv
+share/graphviz/graphs/directed/nhg.gv
+share/graphviz/graphs/directed/oldarrows.gv
+share/graphviz/graphs/directed/pgram.gv
+share/graphviz/graphs/directed/pm2way.gv
+share/graphviz/graphs/directed/pmpipe.gv
+share/graphviz/graphs/directed/polypoly.gv
+share/graphviz/graphs/directed/proc3d.gv
+share/graphviz/graphs/directed/psfonttest.gv
+share/graphviz/graphs/directed/record2.gv
+share/graphviz/graphs/directed/records.gv
+share/graphviz/graphs/directed/rowe.gv
+share/graphviz/graphs/directed/russian.gv
+share/graphviz/graphs/directed/sdh.gv
+share/graphviz/graphs/directed/shells.gv
+share/graphviz/graphs/directed/states.gv
+share/graphviz/graphs/directed/structs.gv
+share/graphviz/graphs/directed/switch.gv
+share/graphviz/graphs/directed/table.gv
+share/graphviz/graphs/directed/train11.gv
+share/graphviz/graphs/directed/trapeziumlr.gv
+share/graphviz/graphs/directed/tree.gv
+share/graphviz/graphs/directed/triedds.gv
+share/graphviz/graphs/directed/try.gv
+share/graphviz/graphs/directed/unix.gv
+share/graphviz/graphs/directed/unix2.gv
+share/graphviz/graphs/directed/viewfile.gv
+share/graphviz/graphs/directed/world.gv
+share/graphviz/graphs/undirected/ER.gv
+share/graphviz/graphs/undirected/Heawood.gv
+share/graphviz/graphs/undirected/Petersen.gv
+share/graphviz/graphs/undirected/ngk10_4.gv
+share/graphviz/graphs/undirected/process.gv
+share/graphviz/gvpr/addedges
+share/graphviz/gvpr/addranks
+share/graphviz/gvpr/addrings
+share/graphviz/gvpr/anon
+share/graphviz/gvpr/attr
+share/graphviz/gvpr/bb
+share/graphviz/gvpr/bbox
+share/graphviz/gvpr/binduce
+share/graphviz/gvpr/bipart
+share/graphviz/gvpr/chkclusters
+share/graphviz/gvpr/chkedges
+share/graphviz/gvpr/cliptree
+share/graphviz/gvpr/col
+share/graphviz/gvpr/collapse
+share/graphviz/gvpr/color
+share/graphviz/gvpr/cycle
+share/graphviz/gvpr/dechain
+share/graphviz/gvpr/deghist
+share/graphviz/gvpr/deledges
+share/graphviz/gvpr/delmulti
+share/graphviz/gvpr/delnodes
+share/graphviz/gvpr/depath
+share/graphviz/gvpr/dijkstra
+share/graphviz/gvpr/flatten
+share/graphviz/gvpr/get-layers-list
+share/graphviz/gvpr/group
+share/graphviz/gvpr/histogram
+share/graphviz/gvpr/indent
+share/graphviz/gvpr/knbhd
+share/graphviz/gvpr/maxdeg
+share/graphviz/gvpr/path
+share/graphviz/gvpr/rotate
+share/graphviz/gvpr/scale
+share/graphviz/gvpr/scalexy
+share/graphviz/gvpr/span
+share/graphviz/gvpr/topon
+share/graphviz/gvpr/treetoclust
diff --git a/graphviz/buildlink3.mk b/graphviz/buildlink3.mk
new file mode 100644
index 0000000000..08e39cb2a9
--- /dev/null
+++ b/graphviz/buildlink3.mk
@@ -0,0 +1,22 @@
+# $NetBSD: buildlink3.mk,v 1.40 2024/08/16 11:50:39 micha Exp $
+
+BUILDLINK_TREE+= graphviz
+
+.if !defined(GRAPHVIZ_BUILDLINK3_MK)
+GRAPHVIZ_BUILDLINK3_MK:=
+
+USE_CC_FEATURES+= c11
+USE_CXX_FEATURES+= c++17 unique_ptr
+
+BUILDLINK_API_DEPENDS.graphviz+= graphviz>=2.26.3
+BUILDLINK_ABI_DEPENDS.graphviz+= graphviz>=13.0.0
+BUILDLINK_PKGSRCDIR.graphviz?= ../../wip/graphviz
+
+.include "../../converters/libiconv/buildlink3.mk"
+.include "../../devel/libltdl/buildlink3.mk"
+.include "../../devel/zlib/buildlink3.mk"
+.include "../../mk/pthread.buildlink3.mk"
+.include "../../textproc/expat/buildlink3.mk"
+.endif # GRAPHVIZ_BUILDLINK3_MK
+
+BUILDLINK_TREE+= -graphviz
diff --git a/graphviz/distinfo b/graphviz/distinfo
new file mode 100644
index 0000000000..d23be1e9ac
--- /dev/null
+++ b/graphviz/distinfo
@@ -0,0 +1,11 @@
+$NetBSD: distinfo,v 1.90 2025/04/28 13:19:49 adam Exp $
+
+BLAKE2s (graphviz-13.1.0.tar.xz) = ed8fcccbaf1d3f0c09b5a2824bc211e7253659f8f7257354464defe89c012c10
+SHA512 (graphviz-13.1.0.tar.xz) = 3bfe2bf975bbcf911b0e67c54449e3dcce4b485850abbfe9dda758dff6267f08893852de5f846541ccb3b1b13a940cc7e7fb3561a0e6a015bdd555e4c8e61859
+Size (graphviz-13.1.0.tar.xz) = 20949488 bytes
+SHA1 (patch-config_config__perl.pl) = 430acb7d7ee3e149de0af9832c5a29602884f83e
+SHA1 (patch-configure.ac) = dcb9fd2822d3eb5dddcda5a55746d51114f92d06
+SHA1 (patch-lib_gvc_Makefile.am) = 8a25c16a31923fc42138773f308f3b3fc5ee662b
+SHA1 (patch-lib_gvpr_actions.c) = d82023aa576ed4404e3a123ee063d58228ec2ea6
+SHA1 (patch-lib_gvpr_compile.h) = 5cf479c021783f74fc7e886faf1c0cf5b8e721de
+SHA1 (patch-plugin_gs_gvloadimage__gs.c) = 982ac1db252e3224633069db956c5dc803cd5ea9
diff --git a/graphviz/options.mk b/graphviz/options.mk
new file mode 100644
index 0000000000..c66b88c93b
--- /dev/null
+++ b/graphviz/options.mk
@@ -0,0 +1,98 @@
+# $NetBSD: options.mk,v 1.41 2024/10/09 15:51:32 micha Exp $
+
+PKG_OPTIONS_VAR= PKG_OPTIONS.graphviz
+PKG_SUPPORTED_OPTIONS= gd ghostscript lua poppler svg x11
+PKG_SUGGESTED_OPTIONS= gd
+.if exists(/System/Library/Frameworks/Quartz.framework)
+PKG_SUPPORTED_OPTIONS+= quartz
+PKG_SUGGESTED_OPTIONS+= quartz
+.else
+PKG_SUGGESTED_OPTIONS+= x11
+.endif
+
+.include "../../mk/bsd.options.mk"
+
+PLIST_VARS+= gd ghostscript lua poppler quartz svg swig x11
+
+# Basic graphic format support, especially GIF
+.if !empty(PKG_OPTIONS:Mgd)
+. include "../../graphics/gd/buildlink3.mk"
+PLIST.gd= yes
+CONFIGURE_ARGS+= --with-libgd
+.else
+CONFIGURE_ARGS+= --without-libgd
+.endif
+
+# Better support for PS/PDF, plus EPS
+.if !empty(PKG_OPTIONS:Mghostscript)
+. include "../../print/ghostscript/buildlink3.mk"
+# Also required as tool dependency according to documentation
+TOOL_DEPENDS+= ghostscript-[0-9]*:../../print/ghostscript
+PLIST.ghostscript= yes
+CONFIGURE_ARGS+= --with-ghostscript
+.else
+CONFIGURE_ARGS+= --without-ghostscript
+.endif
+
+# Support for reading PDF images
+.if !empty(PKG_OPTIONS:Mpoppler)
+BUILDLINK_API_DEPENDS.poppler+= poppler>=23.12.0
+. include "../../print/poppler/buildlink3.mk"
+PLIST.poppler= yes
+CONFIGURE_ARGS+= --with-poppler
+.else
+CONFIGURE_ARGS+= --without-poppler
+.endif
+
+# Support for Quartz on macOS
+.if !empty(PKG_OPTIONS:Mquartz)
+PLIST.quartz= yes
+CONFIGURE_ARGS+= --with-quartz
+.else
+CONFIGURE_ARGS+= --without-quartz
+.endif
+
+# Support for SVG images. Attention: librsvg has large dependencies!
+.if !empty(PKG_OPTIONS:Msvg)
+BUILDLINK_API_DEPENDS.librsvg+= librsvg>=2.36.0
+. include "../../graphics/librsvg/buildlink3.mk"
+PLIST.svg= yes
+CONFIGURE_ARGS+= --with-rsvg
+.else
+CONFIGURE_ARGS+= --without-rsvg
+.endif
+
+# X11 graphics supports as well as X11 frontend support
+.if !empty(PKG_OPTIONS:Mx11)
+. include "../../mk/xaw.buildlink3.mk"
+. include "../../x11/libXrender/buildlink3.mk"
+PLIST.x11= yes
+CONFIGURE_ENV+= X11BASE=${X11BASE}
+CONFIGURE_ARGS+= --with-x
+.else
+CONFIGURE_ARGS+= --without-x
+.endif
+
+USING_SWIG= no
+
+# Extension language support
+.if !empty(PKG_OPTIONS:Mlua)
+USING_SWIG= yes
+. include "../../lang/lua/tool.mk"
+. include "../../lang/lua/buildlink3.mk"
+. include "../../lang/lua/application.mk"
+PLIST.lua= yes
+CONFIGURE_ARGS+= --enable-lua
+.else
+CONFIGURE_ARGS+= --disable-lua
+.endif
+
+# Required by some of the other options
+.if !empty(USING_SWIG:Myes)
+PLIST.swig= yes
+# Tool dependency according to documentation
+TOOL_DEPENDS+= swig>=1.3.29:../../devel/swig
+CONFIGURE_ARGS+= --enable-swig
+.else
+CONFIGURE_ARGS+= --disable-swig
+.endif
diff --git a/graphviz/patches/patch-config_config__perl.pl b/graphviz/patches/patch-config_config__perl.pl
new file mode 100644
index 0000000000..6d995ad02d
--- /dev/null
+++ b/graphviz/patches/patch-config_config__perl.pl
@@ -0,0 +1,15 @@
+$NetBSD: patch-config_config__perl.pl,v 1.5 2024/07/05 10:34:12 micha Exp $
+
+Add rpath for pkgsrc
+
+--- config/config_perl.pl.orig 2013-08-01 17:35:15.000000000 +0000
++++ config/config_perl.pl
+@@ -4,7 +4,7 @@ if ($ARGV[0] eq "PERL_LIBS") {
+ $archlib = $Config{archlib};
+ $libperl = $Config{libperl};
+ $libperl =~ s/lib([^\.]+).*/$1/;
+- print "-L$archlib/CORE -l$libperl";
++ print "-Wl,-rpath,$archlib/CORE -L$archlib/CORE -l$libperl";
+ }
+ if ($ARGV[0] eq "PERL_INCLUDES") {
+ $archlib = $Config{archlib};
diff --git a/graphviz/patches/patch-configure.ac b/graphviz/patches/patch-configure.ac
new file mode 100644
index 0000000000..5a9d94a666
--- /dev/null
+++ b/graphviz/patches/patch-configure.ac
@@ -0,0 +1,24 @@
+$NetBSD: patch-configure.ac,v 1.15 2024/07/05 10:34:12 micha Exp $
+
+Use the same path for all platforms in pkgsrc.
+
+--- configure.ac.orig 2024-02-10 22:00:40.000000000 +0000
++++ configure.ac
+@@ -92,8 +92,7 @@ if test -z "${LIBPOSTFIX++}"; then
+ case "${host_os}" in
+ *linux* )
+ case "${host_cpu}" in
+- aarch64 | powerpc64 | powerpc64le | s390x | x86_64 | sparc64 | mips64* | riscv64 | e2k )
+- LIBPOSTFIX="64"
++ aarch64* | powerpc64 | powerpc64le | s390x | x86_64 | sparc64 | mips64* | riscv64 | e2k )
+ INTGOSIZE=64
+ ;;
+ esac
+@@ -101,7 +100,6 @@ if test -z "${LIBPOSTFIX++}"; then
+ *solaris* )
+ case "${host_cpu}" in
+ x86_64 | sparc64 )
+- LIBPOSTFIX="/64"
+ INTGOSIZE=64
+ ;;
+ esac
diff --git a/graphviz/patches/patch-lib_gvc_Makefile.am b/graphviz/patches/patch-lib_gvc_Makefile.am
new file mode 100644
index 0000000000..7c0c97814e
--- /dev/null
+++ b/graphviz/patches/patch-lib_gvc_Makefile.am
@@ -0,0 +1,15 @@
+$NetBSD: patch-lib_gvc_Makefile.am,v 1.5 2024/08/16 11:50:39 micha Exp $
+
+Link with pthread library, if needed.
+
+--- lib/gvc/Makefile.am.orig 2024-08-11 22:39:26.000000000 +0000
++++ lib/gvc/Makefile.am
+@@ -50,7 +50,7 @@ libgvc_la_LIBADD = $(libgvc_C_la_LIBADD)
+ $(top_builddir)/lib/cgraph/libcgraph.la \
+ $(top_builddir)/lib/cdt/libcdt.la \
+ $(top_builddir)/lib/util/libutil_C.la \
+- $(EXPAT_LIBS) $(Z_LIBS) $(MATH_LIBS)
++ $(EXPAT_LIBS) $(Z_LIBS) $(MATH_LIBS) ${PTHREAD_LDFLAGS} ${PTHREAD_LIBS}
+
+ .3.3.pdf:
+ rm -f $@; pdffile=$@; psfile=$${pdffile%pdf}ps; \
diff --git a/graphviz/patches/patch-lib_gvpr_actions.c b/graphviz/patches/patch-lib_gvpr_actions.c
new file mode 100644
index 0000000000..132239d101
--- /dev/null
+++ b/graphviz/patches/patch-lib_gvpr_actions.c
@@ -0,0 +1,15 @@
+$NetBSD: patch-lib_gvpr_actions.c,v 1.1 2024/12/02 16:02:30 jperkin Exp $
+
+Avoid lock_t.
+
+--- lib/gvpr/actions.c.orig 2024-12-02 15:59:23.387253475 +0000
++++ lib/gvpr/actions.c
+@@ -502,7 +502,7 @@ int lockGraph(Agraph_t *g, int v) {
+ if (data->lock.zombie)
+ agclose(g);
+ else
+- data->lock = (lock_t){0};
++ data->lock = (gvprlock_t){0};
+ }
+ return oldv;
+ }
diff --git a/graphviz/patches/patch-lib_gvpr_compile.h b/graphviz/patches/patch-lib_gvpr_compile.h
new file mode 100644
index 0000000000..f82d4e927b
--- /dev/null
+++ b/graphviz/patches/patch-lib_gvpr_compile.h
@@ -0,0 +1,20 @@
+$NetBSD: patch-lib_gvpr_compile.h,v 1.1 2024/12/02 16:02:30 jperkin Exp $
+
+Avoid lock_t.
+
+--- lib/gvpr/compile.h.orig 2024-12-02 15:58:56.601986844 +0000
++++ lib/gvpr/compile.h
+@@ -38,11 +38,11 @@ extern "C" {
+ typedef struct {
+ bool locked: 1; ///< is the lock currently taken?
+ bool zombie: 1; ///< was a deletion request recorded while locked?
+-} lock_t;
++} gvprlock_t;
+
+ typedef struct {
+ Agrec_t h;
+- lock_t lock;
++ gvprlock_t lock;
+ } gval_t;
+
+ typedef struct {
diff --git a/graphviz/patches/patch-plugin_gs_gvloadimage__gs.c b/graphviz/patches/patch-plugin_gs_gvloadimage__gs.c
new file mode 100644
index 0000000000..00a01bc092
--- /dev/null
+++ b/graphviz/patches/patch-plugin_gs_gvloadimage__gs.c
@@ -0,0 +1,33 @@
+$NetBSD: patch-plugin_gs_gvloadimage__gs.c,v 1.5 2024/07/05 10:34:12 micha Exp $
+
+ghostscript-agpl enforces using gserrors.h which is not included
+by default in ghostscript-gpl, so conditionalise based upon which
+one is being used.
+
+--- plugin/gs/gvloadimage_gs.c.orig 2022-10-11 18:31:29.000000000 +0000
++++ plugin/gs/gvloadimage_gs.c
+@@ -77,6 +77,16 @@ static void gs_error(GVJ_t * job, const
+
+ assert (err < 0);
+
++#ifdef gserrors_INCLUDED /* ghostscript-agpl uses gserrors.h */
++ if (err >= gs_error_VMerror)
++ errsrc = "PostScript Level 1";
++ else if (err >= gs_error_unregistered)
++ errsrc = "PostScript Level 2";
++ else if (err >= gs_error_invalidid)
++ errsrc = "DPS error";
++ else
++ errsrc = "Ghostscript internal error";
++#else
+ if (err >= e_VMerror)
+ errsrc = "PostScript Level 1";
+ else if (err >= e_unregistered)
+@@ -85,6 +95,7 @@ static void gs_error(GVJ_t * job, const
+ errsrc = "DPS error";
+ else
+ errsrc = "Ghostscript internal error";
++#endif
+
+ job->common->errorfn("%s: %s() returned: %d (%s)\n",
+ name, funstr, err, errsrc);
Home |
Main Index |
Thread Index |
Old Index