Skip to content

Commit

Permalink
graphics/graphviz: Update to 12.0.0
Browse files Browse the repository at this point in the history
## [12.0.0] – 2024-07-04

### Added

- Support for building the Graphviz TCL bindings has been integrated into the
  CMake build system. This is controllable by the `-Denable_tcl={AUTO|ON|OFF}`
  option.
- Support for building the SWIG-generated TCL language bindings has been
  integrated into the CMake build system. This is controllable by the
  `-Denable_swig={AUTO|ON|OFF}` option.
- Support for building the SWIG-generated C# language bindings has been
  integrated into the CMake build system. This is controllable by the
  `-Denable_sharp={AUTO|ON|OFF}` option.

### Changed

- The Catch2-based test suite in the CMake build system has been ported from
  Catch2 v2 to Catch2 v3. Support for Catch2 v2 has been removed. #2465
- The Windows release artifacts are now built on Windows 2022 and Visual Studio
  2022 17 and toolset v143.
- The macOS release artifacts are now built on macOS 13 (Ventura).
- The CMake build system no longer links `dot_builtins` against libsocket.
- The CMake build system now only compiles `dot_builtins` if building shared
  libraries (`-DBUILD_SHARED_LIBS=ON`).
- **Breaking**: the `polygon_t.style` member is now a struct.
- **Breaking**: the `LEN` and `MAXDOUBLE` constants have been removed.
- Accuracy in processing compass points has been improved.
- **Breaking**: the `CMYK_BYTE` member of the `color_type_t` enum and the
  corresponding `gvolor_t.u.cmyk` field have been removed. The color format this
  mapped to was neither documented nor implemented correctly.
- The Windows releases available for download on graphviz.org now only include
  CMake-produced packages, not MS Build-produced packages. The MS Build packages
  are available in the
  [Gitlab package registry](https://gitlab.com/graphviz/graphviz/-/packages) if
  needed.
- The CMake build system more pervasively sets rpaths of compiled binaries,
  libraries, and plugins, which should result in them more reliably finding
  their supporting components.
  without `$LD_LIBRARY_PATH`/`$DYLD_LIBRARY_PATH` tricks.
- **Breaking**: the `Agraph_t.n_id` field is now an opaque pointer.
- **Breaking**: the libpack functions `putGraphs`, `putRects`, and `shiftGraphs`
  now operate on floating-point points (`pointf`) instead of integer points
  (`point`).
- **Breaking**: the `BF2B` macro has been removed.
- **Breaking**: the undocumented `-Tmp` output format has been removed.
- **Breaking**: the arith.h header defines neither `_GNU_SOURCE` nor `sincos`
  any more. None of the build systems attempt to discover `sincos` any more.
- The FIG output format (`-Tfig`) supports up to 512 custom colors. The previous
  limit was 256, after which it would crash (see note in the “Fixed” section).
- **Breaking**: The TCL binding’s `tcldot_layout` function no longer tries to
  fallback to the `dot` layout engine if the requested engine is unavailable but
  instead fails with an error message.
- The TCL binding’s graph `render` command no longer ignores layout errors.
- The TCL binding’s graph `write` command now does layout unconditionally,
  regardless of what output renderer is selected.
- The CMake build system builds cgraph++ and gvc++ as either shared or static
  libraries, respecting the `BUILD_SHARED_LIBS` setting.
- Discovery of the fcntl.h header has been removed from all build systems. This
  header is now unconditionally assumed to exist.
- **Breaking**: `obj_state_t.gradient_frac` is now a `double`.
- **Breaking**: `path.nbox` is now a `size_t`.
- The change described as “Some `routesplines` miscalculations that led to lost
  edges and fatal errors have been avoided” in 11.0.0 has been reverted. The fix
  for this caused other problems.
- **Breaking**: the `d` and `disc` parameters have been removed from
  `Dtcompar_f`.
- CentOS packages are no longer provided.
- In the CMake build system, the minimum required CMake version has been
  increased to 3.14.1.
- **Breaking**: the `disc` parameter has been removed from `Dtfree_f`.
- Gvedit no longer depends on the getopt library.

### Fixed

- The CMake build system now uses absolute paths to PangoCairo libraries during
  linking, resolving build problems on macOS.
- The CMake build system’s path for third-party headers for the DevIL plugin has
  been corrected.
- Edges not rendering properly when using ports and the `crow` arrowhead/tail
  with Windows `Release` builds. #2490
- A duplicate prototype of `aghtmlstr` has been removed.
- `agrelabel_node` (or equivalently, `agrename` when operating on a node) no
  longer corrupts the node-by-id set, causing a crash. This bug was preventing
  `gxl2gv` from processing inputs that used node `name` attributes. #2300
- Accuracy improvements have fixed an assertion failure on macOS. #2538
- The FIG output format (`-Tfig`) no longer crashes when handling more than 256
  colors.
- The `scale` operation implemented by the TCL binding’s tclpathplan scales
  relative to the center of the points being scaled instead of reading
  uninitialized memory.
- The xlib plugin sets “close-on-exec” on the file descriptors it creates,
  preventing them leaking into either web browsers it starts or other processes
  created by the hosting application.
- A sign confusion issue in neatogen’s weighting calculations was fixed. This
  was a regression in Graphviz 11.0.0.
- The CMake build system no longer attaches `dllimport`/`dllexport` annotations
  when compiling static libraries on Windows and MinGW.
- An issue with linking gvpack when building static libraries in the CMake build
  system was fixed.
- An sfdp use-after-free issue was fixed. #2556
- Using `concentrate=true` once again works. This was a regression in Graphviz
  11.0.0. #2559
- `overlap="scale"` no longer causes nodes to be placed on top of one another.
  This was a regression in Graphviz 7.0.5. #2564
- libpack code 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, #2555

## [11.0.0] – 2024-04-28

### Added

- `gv2gml` gained a `-y` option to output the yWorks.com variant of GML instead
  of the default.
- A new command line option, `--filepath=…` has been added to perform the
  function previously served by the `$GV_FILE_PATH` environment variable, use of
  which was removed in Graphviz 6.0.1. Unlike the old `$GV_FILE_PATH` mechanism,
  `--filepath=…` takes effect regardless of the setting of the `$SERVER_NAME`
  environment variable. #2396

### Changed

- `gvpack`, in addition to recognizing a “cluster” name prefix as a mark of a
  cluster, now recognizes this case insensitively as well as recognizing the
  `cluster` attribute. This is more consistent with how the Graphviz libraries
  work.
- **Breaking**: `pkg-config` (.pc) files shipped with Graphviz now include
  `${prefix}/include` in the include path in addition to
  `${prefix}/include/graphviz`. Previously this missing path meant building
  Graphviz demo examples against an installation of Graphviz in a non-system
  path would not work. #2474
- The core PostScript output format (`-Tps`) warns if using an
  out-of-specification font name. To avoid this, use a more sophisticated output
  format like Cairo (`-Tps:cairo`) that does font name lookup and translation.
  #218
- **Breaking**: The libpack functions `putRects`, `packRects`, `putGraphs`,
  `packGraphs`, `packSubgraphs`, `pack_graph`, `shiftGraphs`, `ccomps`,
  `cccomps`, and `pccomps` now take the number of items they are operating on
  (`ng`) as a `size_t`.
- **Breaking**: The `bsearch_cmpf` and `qsort_cmpf` typedefs have been removed.
- `dot -c -v`, when constructing the config6 file, includes comments explaining
  any attempted actions that failed during plugin loading. #2456
- **Breaking**: The `Ndim` global is now a `unsigned short`.
- fdpgen no longer truncates graph names when inferring new names for connected
  component subgraphs.
- **Breaking**: The `nodequeue` type has been removed.
- **Breaking**: The field `Agraphinfo_t.n_nodes` has been removed. The function
  `agnnodes` is a more robust way of retrieving the number of nodes.
- The `-q` command line option will now suppress “no hard-coded metrics…”
  and other font lookup warnings. #2379
- **Breaking**: The `CMP` and `SGN` macros have been removed.
- The CMake build system no longer early-binds all enabled plugins into
  `dot`/`dot.exe`. This early binding was a change introduced in 10.0.1, but was
  not noted in this changelog. Traditionally, of the three Graphviz build
  systems (Autotools, CMake, MS Build), only changes to the Autotools build
  system were noted in this changelog under the assumption that packaging
  ecosystems making use of the other two build systems would need finer grained
  details and would be monitoring the Git commit history instead. This seems to
  not be the case, so in future side-effecting changes to any of the three build
  systems will be included here. #2527, #2528
- The precision of `sep`- and `esep`-based calculations has been improved.
- **Breaking**: Defines `AGRAPH`, `AGNODE`, `AGOUTEDGE`, `AGINEDGE`, and `AGEDGE` are
  replaced with `enum`.
- **Breaking**: The `obj_state_t.url_bsplinemap_poly_n` field is now a `size_t`
  and the `obj_state_t.url_bsplinemap_n` field is now a `size_t *`.
- **Breaking**: The `Ppoly_t.pn` (`Ppolyline_t.pn`) field is now a `size_t`.
- **Breaking**: The `Proutespline` function takes its `n_barriers` parameter as
  a `size_t`.
- **Breaking**: The `gvattr_t` type and the `GVJ_t.selected_obj_attributes` and
  `GVJ_t.selected_obj_type_name` fields have been removed.
- **Breaking**: The `gv_argvlist_t` type and functions that operate on it have
  been removed.
- Control characters in some error messages are escaped, preventing certain
  types of text injection that could cause user confusion.
- **Breaking**: `GVJ_t.numkeys` is a `size_t`.

### Fixed

- Indexing within `gvNextInputGraph` no longer incorrectly retains the index
  from prior use of the GVC context. When using Graphviz libraries
  programmatically, this could previously cause crashes or misbehavior. #2484
- Color schemes, typically controlled through the `colorscheme` attribute are
  now pushed and popped as they are applied and released. Previously processing
  multiple graphs wherein the first uses color schemes but later ones do not
  could result in color schemes being incorrectly retained and reapplied or
  use-after-free memory accesses.
- The GDI+ plugin, when asked to render a graphic metafile, no longer references
  uninitialized memory. This bug was introduced in Graphviz 2.24.0.
- A `free` of an invalid pointer in `edgepaint` was fixed. #2513
- `gvmap` no longer references uninitialized variables when trying to process
  triangles and encountering only 2 points.
- Using the `point` shape in combination with `peripheries=0` no longer causes
  out of bounds memory writes. This was a regression in Graphviz 7.0.0. #2497
- Unsafe use of a dangling pointer in `ccomps` has been removed. This was a
  regression in Graphviz 7.1.0.
- `gvcolor` no longer crashes when processing color names longer than 127
  characters.
- Interleaving calls to `colorxlate` and `gvrender_resolve_color` no longer
  confuse internal caching mechanisms. Callers should now get the correct color
  back.
- The `nop2` layout engine provided by the neato layout plugin is now equivalent
  to `neato -n2` as intended instead of mistakenly being equivalent to
  `nop`/`nop1`/`neato -n1`.
- An off-by-one error in rank installation was corrected. Previously, an unusual
  `rank=same` constraint could cause a crash when installing ranks. #1308
- `gxl2gv` no longer crashes or misbehaves when symlinked to a non-ASCII file
  name. This is a rare scenario that normal users should not encounter.
- `mm2gv` no longer crashes or misbehaves when reading malformed Matrix Market
  files with non-ASCII bytes in the header.
- A stack buffer overflow in `mm2gv` when processing malformed Matrix Market
  files has been fixed.
- The `newrank` attribute is treated as a boolean instead of any value
  (including `"false"`) being coerced into `"true"`. #2521
- Crashes and misbehavior no longer occur when the `sides` attribute contains
  non-ASCII characters.
- Graphviz binaries like `dot.exe` and `neato.exe` no longer crash or misbehave
  when symlinked to a non-ASCII file name on Windows. This is a rare scenario
  that normal users should not encounter.
- GVPR programs that use `tolower` or `toupper` on strings containing non-ASCII
  characters no longer crash. These functions do not lowercase/uppercase
  non-ASCII characters, so users probably still do not want to use non-ASCII
  strings in a GVPR program.
- Some `routesplines` miscalculations that led to lost edges and fatal errors
  have been avoided. #2368
- An inaccuracy involving an edge case when constructing lines within libpack
  has been corrected.
- A bug in the internal heap implementation used in the network simplex
  algorithm has been corrected. This would previously cause certain runs to
  infer incorrect ordering or subtrees. This was a regression in Graphviz
  2.40.0. #2391, #2529
- Compass points may be more accurately placed on the node boundary in some cases.
- A very small random adjustment in the calculation of the space available for
  edge routing around ellipse shaped nodes in fdp and neato layouts, has been
  removed.
- Incorrect edge splines for ellipse shaped nodes with ports using fdp or
  neato. #2168
- Incorrect edge splines for ellipse and polygon shaped nodes with ports and
  large penwidths using fdp or neato, causing the same symptoms as #2168.
- Incorrect edge splines for polygon shaped nodes with ports more than one
  periphery using fdp or neato, causing the same symptoms as #2168.
- Adjust the space available for edge routing based on penwidth when
  using fdp or neato and `splines=ortho`.
  • Loading branch information
micha committed Jul 5, 2024
1 parent 8038911 commit 6e47998
Show file tree
Hide file tree
Showing 9 changed files with 21 additions and 59 deletions.
5 changes: 2 additions & 3 deletions graphics/graphviz/Makefile
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
# $NetBSD: Makefile,v 1.286 2024/05/29 16:32:54 adam Exp $
# $NetBSD: Makefile,v 1.287 2024/07/05 10:34:12 micha Exp $

DISTNAME= graphviz-10.0.1
PKGREVISION= 2
DISTNAME= graphviz-12.0.0
CATEGORIES= graphics
MASTER_SITES= ${MASTER_SITE_GITLAB:=api/v4/projects/4207231/packages/generic/graphviz-releases/${PKGVERSION_NOREV}/}
#EXTRACT_SUFX= .tar.xz
Expand Down
2 changes: 1 addition & 1 deletion graphics/graphviz/PLIST
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
@comment $NetBSD: PLIST,v 1.61 2024/04/15 10:25:57 micha Exp $
@comment $NetBSD: PLIST,v 1.62 2024/07/05 10:34:12 micha Exp $
bin/acyclic
bin/bcomps
bin/ccomps
Expand Down
4 changes: 2 additions & 2 deletions graphics/graphviz/buildlink3.mk
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# $NetBSD: buildlink3.mk,v 1.38 2024/04/15 10:25:57 micha Exp $
# $NetBSD: buildlink3.mk,v 1.39 2024/07/05 10:34:12 micha Exp $

BUILDLINK_TREE+= graphviz

Expand All @@ -9,7 +9,7 @@ USE_CC_FEATURES+= c99
USE_CXX_FEATURES+= c++11 unique_ptr

BUILDLINK_API_DEPENDS.graphviz+= graphviz>=2.26.3
BUILDLINK_ABI_DEPENDS.graphviz+= graphviz>=10.0.1
BUILDLINK_ABI_DEPENDS.graphviz+= graphviz>=12.0.0
BUILDLINK_PKGSRCDIR.graphviz?= ../../graphics/graphviz

.include "../../converters/libiconv/buildlink3.mk"
Expand Down
12 changes: 6 additions & 6 deletions graphics/graphviz/distinfo
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
$NetBSD: distinfo,v 1.84 2024/04/27 19:19:26 schmonz Exp $
$NetBSD: distinfo,v 1.85 2024/07/05 10:34:12 micha Exp $

BLAKE2s (graphviz-10.0.1.tar.gz) = 2aaa4a0d7f7a408cd9df96893f51864e4d6a9ea385dc98fdf3c70566b20159cc
SHA512 (graphviz-10.0.1.tar.gz) = c8d3653fa8aa5748e7efda1c417c9b35221aa2fefb7b872b4b103b9140423803a5945e55743a336d4c11677428d0a7a74fdb9e533a3b4357bd35656d7c9d15a3
Size (graphviz-10.0.1.tar.gz) = 27286181 bytes
BLAKE2s (graphviz-12.0.0.tar.gz) = afcf0e8d7a875387234daaf4ac5f35124a40eaf0be9032092c9a1eb84e97af86
SHA512 (graphviz-12.0.0.tar.gz) = abce2766f1f57f48e711361113ee496d67ab555d8bb9757377b8b8ad38e7e025f239f48ad8effb869eeca5fe15a095c2468eee81a18c1d72a8be6383a97a59f8
Size (graphviz-12.0.0.tar.gz) = 27373201 bytes
SHA1 (patch-config_config__perl.pl) = 430acb7d7ee3e149de0af9832c5a29602884f83e
SHA1 (patch-configure.ac) = 29cb8b6b139874bac4435f5d4500907b068fa4f8
SHA1 (patch-lib_gvc_Makefile.am) = 180b45f810e5bb3948509d50b5be3b159b38a78f
SHA1 (patch-configure.ac) = dcb9fd2822d3eb5dddcda5a55746d51114f92d06
SHA1 (patch-lib_gvc_Makefile.am) = a8067feb25afcc81ab6048bb6a8f1aa1e93af878
SHA1 (patch-plugin_gs_gvloadimage__gs.c) = 982ac1db252e3224633069db956c5dc803cd5ea9
2 changes: 1 addition & 1 deletion graphics/graphviz/options.mk
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# $NetBSD: options.mk,v 1.38 2024/04/15 10:25:57 micha Exp $
# $NetBSD: options.mk,v 1.39 2024/07/05 10:34:12 micha Exp $

PKG_OPTIONS_VAR= PKG_OPTIONS.graphviz
PKG_SUPPORTED_OPTIONS= gd ghostscript lua perl poppler svg tcl x11
Expand Down
2 changes: 1 addition & 1 deletion graphics/graphviz/patches/patch-config_config__perl.pl
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
$NetBSD: patch-config_config__perl.pl,v 1.4 2022/07/22 12:04:46 micha Exp $
$NetBSD: patch-config_config__perl.pl,v 1.5 2024/07/05 10:34:12 micha Exp $

Add rpath for pkgsrc

Expand Down
39 changes: 1 addition & 38 deletions graphics/graphviz/patches/patch-configure.ac
Original file line number Diff line number Diff line change
@@ -1,8 +1,6 @@
$NetBSD: patch-configure.ac,v 1.14 2024/04/27 19:19:26 schmonz Exp $
$NetBSD: patch-configure.ac,v 1.15 2024/07/05 10:34:12 micha Exp $

Use the same path for all platforms in pkgsrc.
Fix nonportable shell syntax.
Don't build macOS-specific .app.

--- configure.ac.orig 2024-02-10 22:00:40.000000000 +0000
+++ configure.ac
Expand All @@ -24,38 +22,3 @@ Don't build macOS-specific .app.
INTGOSIZE=64
;;
esac
@@ -155,7 +153,7 @@ AC_DEFINE_UNQUOTED(PATHSEPARATOR,"$PATHS
AM_CONDITIONAL(WITH_WIN32, [test "$UWIN" = "yes" -o "$CYGWIN" = "yes" -o "$MINGW32" = "yes"])
AM_CONDITIONAL(WITH_CYGWIN, [test "$CYGWIN" = "yes"])
AM_CONDITIONAL(WITH_MINGW, [test "$MINGW32" = "yes"])
-AM_CONDITIONAL(WITH_DARWIN, [test "$DARWIN" = "yes"])
+AM_CONDITIONAL(WITH_DARWIN, [test "$DARWIN" = "yes-but-pkgsrc-does-not-want-the-mac-app"])

DEFAULT_DPI=96
AC_DEFINE_UNQUOTED(DEFAULT_DPI,$DEFAULT_DPI,Default DPI.)
@@ -1760,7 +1758,10 @@ AM_CONDITIONAL([WITH_QT], [test "$use_qt
dnl -----------------------------------
dnl INCLUDES and LIBS for QUARTZ

-if test "${host_os::6}" = "darwin"; then
+dnl Not suitable for a POSIX shell
+dnl if test "${host_os::6}" = "darwin"; then
+case ${host_os} in
+darwin*)
AC_ARG_WITH(quartz,
[AS_HELP_STRING([--with-quartz=yes],[Quartz framework (Mac OS X)])],
[],[with_quartz=yes])
@@ -1777,10 +1778,11 @@ if test "${host_os::6}" = "darwin"; then
use_quartz="No (missing ApplicationServices.framework)"
fi
fi
-else
+ ;;
+*)
with_quartz=no
use_quartz="No (disabled by default - Mac only)"
-fi
+esac
AM_CONDITIONAL(WITH_QUARTZ, [test "$use_quartz" = "Yes"])

dnl -----------------------------------
12 changes: 6 additions & 6 deletions graphics/graphviz/patches/patch-lib_gvc_Makefile.am
Original file line number Diff line number Diff line change
@@ -1,15 +1,15 @@
$NetBSD: patch-lib_gvc_Makefile.am,v 1.3 2022/11/23 13:10:00 micha Exp $
$NetBSD: patch-lib_gvc_Makefile.am,v 1.4 2024/07/05 10:34:12 micha Exp $

Link with pthread library, if needed.

--- lib/gvc/Makefile.am.orig 2022-07-07 15:43:58.000000000 +0000
--- lib/gvc/Makefile.am.orig 2024-07-04 07:59:36.000000000 +0000
+++ lib/gvc/Makefile.am
@@ -54,7 +54,7 @@ libgvc_la_LIBADD = $(libgvc_C_la_LIBADD)
$(top_builddir)/lib/cdt/libcdt.la \
$(top_builddir)/lib/cgraph/libcgraph.la \
@@ -49,7 +49,7 @@ libgvc_la_LIBADD = $(libgvc_C_la_LIBADD)
$(top_builddir)/lib/pathplan/libpathplan.la \
$(top_builddir)/lib/cgraph/libcgraph.la \
$(top_builddir)/lib/cdt/libcdt.la \
- $(EXPAT_LIBS) $(Z_LIBS) $(MATH_LIBS)
+ $(EXPAT_LIBS) $(Z_LIBS) $(MATH_LIBS) ${PTHREAD_LDFLAGS} ${PTHREAD_LIBS}
libgvc_la_DEPENDENCIES = $(libgvc_C_la_DEPENDENCIES)

.3.3.pdf:
rm -f $@; pdffile=$@; psfile=$${pdffile%pdf}ps; \
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
$NetBSD: patch-plugin_gs_gvloadimage__gs.c,v 1.4 2022/10/17 09:12:53 adam Exp $
$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
Expand Down

0 comments on commit 6e47998

Please sign in to comment.