graphviz issueshttps://gitlab.com/graphviz/graphviz/-/issues2024-03-28T00:02:42Zhttps://gitlab.com/graphviz/graphviz/-/issues/2528Missing DLL warning turned into error in version 10.0.12024-03-28T00:02:42ZChiel ten BrinkeMissing DLL warning turned into error in version 10.0.1## Steps to reproduce
1. Install Graphviz, but remove pango-1.dll from the installed directory.
2. Run dot.exe -V
## Expected Behaviour
Proceeds by printing version info, possibly accompanied with warning about missing DLL.
This was t...## Steps to reproduce
1. Install Graphviz, but remove pango-1.dll from the installed directory.
2. Run dot.exe -V
## Expected Behaviour
Proceeds by printing version info, possibly accompanied with warning about missing DLL.
This was the behavior on version 9.0.0.
## Actual Behaviour
```
$ ./dot.exe -V
C:/Program Files/Graphviz/bin/dot.exe: error while loading shared libraries: pango-1.dll: cannot open shared object file: No such file or directory
```
## OS Version
Windows 11
## Graphviz Version
Released 10.0.1
## Additional info
The reproduction scenario might seem contrived, but this is a real world usage scenario. Some software solutions ship a subset of the graphviz dependency DLLs to customers; only the ones they really need. This is mainly done because the 3rd party libraries do not all have the same license, and some of these license are incompatible with certain forms of commercial usage.
On version 9.0.0 and earlier a warning could be printed, but otherwise the program proceeded to execute normally. Since 10.0.1 this is no longer possible.https://gitlab.com/graphviz/graphviz/-/issues/2527dot.exe binary size increased with a factor 64 since version 10.0.12024-03-28T00:02:42ZChiel ten Brinkedot.exe binary size increased with a factor 64 since version 10.0.1Comparing the Windows 10 cmake release x64 (from https://gitlab.com/graphviz/graphviz/-/releases):
* 9.0.0: 11KB
* 10.0.1: 712KB
This seems excessive. I also noticed that new build targets have been added. Is it perhaps an issue introd...Comparing the Windows 10 cmake release x64 (from https://gitlab.com/graphviz/graphviz/-/releases):
* 9.0.0: 11KB
* 10.0.1: 712KB
This seems excessive. I also noticed that new build targets have been added. Is it perhaps an issue introduced by the recent changes to the build system?https://gitlab.com/graphviz/graphviz/-/issues/2526CI: ASan job does not have debug info available2024-03-26T00:30:43ZMatthew FernandezCI: ASan job does not have debug info available## Steps to reproduce
1. Introduce a memory safety bug in code exercised by the test suite
2. Push this to a branch
3. Observe the CI failure of the `ubuntu-22.04-cmake-ASan-test-including-ctest` job
## Expected Behaviour
Useful repor...## Steps to reproduce
1. Introduce a memory safety bug in code exercised by the test suite
2. Push this to a branch
3. Observe the CI failure of the `ubuntu-22.04-cmake-ASan-test-including-ctest` job
## Expected Behaviour
Useful report.
## Actual Behaviour
A backtrace lacking filenames and line numbers:
```
==3825==ERROR: AddressSanitizer: heap-buffer-overflow on address 0x602000028390 at pc 0x7f0d23efef8d bp 0x7ffedfa9ebb0 sp 0x7ffedfa9eba0
WRITE of size 8 at 0x602000028390 thread T0
#0 0x7f0d23efef8c (/lib+0x547f8c)
#1 0x7f0d23f00c0f (/lib+0x549c0f)
#2 0x7f0d23f31a40 (/lib+0x57aa40)
#3 0x7f0d23f37d0c (/lib+0x580d0c)
#4 0x7f0d23f446f7 (/lib+0x58d6f7)
#5 0x7f0d23f46a6d (/lib+0x58fa6d)
#6 0x7f0d23f486a1 (/lib+0x5916a1)
#7 0x7f0d23f5312a (/lib+0x59c12a)
#8 0x561e3950416d in main /builds/smattr/graphviz/cmd/dot/dot.c:73
#9 0x7f0d22c29d8f (/lib/x86_64-linux-gnu/libc.so.6+0x29d8f)
#10 0x7f0d22c29e3f in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x29e3f)
#11 0x561e39503d54 in _start (/usr/bin/dot+0x7e0d54)
0x602000028394 is located 0 bytes to the right of 4-byte region [0x602000028390,0x602000028394)
allocated by thread T0 here:
#0 0x7f0d27948c38 in __interceptor_realloc ../../../../src/libsanitizer/asan/asan_malloc_linux.cpp:164
#1 0x7f0d23eed170 (/lib+0x536170)
#2 0x7f0d23eed50f (/lib+0x53650f)
#3 0x7f0d23efee1e (/lib+0x547e1e)
#4 0x7f0d23f00c0f (/lib+0x549c0f)
#5 0x7f0d23f31a40 (/lib+0x57aa40)
#6 0x7f0d23f37d0c (/lib+0x580d0c)
#7 0x7f0d23f446f7 (/lib+0x58d6f7)
#8 0x7f0d23f46a6d (/lib+0x58fa6d)
#9 0x7f0d23f486a1 (/lib+0x5916a1)
#10 0x7f0d23f5312a (/lib+0x59c12a)
#11 0x561e3950416d in main /builds/smattr/graphviz/cmd/dot/dot.c:73
#12 0x7f0d22c29d8f (/lib/x86_64-linux-gnu/libc.so.6+0x29d8f)
```
E.g. https://gitlab.com/smattr/graphviz/-/jobs/6422317441
## OS Version
Ubuntu 22.04 in CI.
## Graphviz Version
Branched off f8a3405df6ac96e2872ad93f6a6c9af4e9739fb1.
## Additional info
Debug info apparently _is_ available for `dot`. We’re just missing it for the libraries, like libgvc. Not sure exactly why as the build job itself seems to be setting the relevant stuff in a globally exported way.https://gitlab.com/graphviz/graphviz/-/issues/2525style=invis / style=invisible inconsistency/weirdness2024-03-20T12:05:40ZFeRD (Frank Dana)style=invis / style=invisible inconsistency/weirdnessWhile exploring the documentation for information on `style=invis` (see #2422), @truenorth and I discovered that a second "invisible" style, `style=invisible`, [was also documented](https://graphviz.org/doc/info/shapes.html) as a Node st...While exploring the documentation for information on `style=invis` (see #2422), @truenorth and I discovered that a second "invisible" style, `style=invisible`, [was also documented](https://graphviz.org/doc/info/shapes.html) as a Node style (only). In further exploration, I discovered that both styles not only existed, but had different meanings — for _both_ nodes and edges. The following dot code demonstrates those inconsistencies:
```dot
digraph G {
N1[label="Node with image" shape=box image="usershape.svg"];
N2[label="Node with image" shape=box image="usershape.svg"];
N1a[label="Node with image" shape=box image="usershape.svg" style="invis"];
N2a[label="Node with image" shape=box image="usershape.svg" style="invisible"];
N1 -> N1a[label="add\nstyle=invis"];
N2 -> N2a[label="add\nstyle=invisible"];
N3[shape=circle];
N3a[label="Edge with xlabel" shape=box];
N4[shape=circle];
N4a[label="Edge with xlabel\nand style=invis" shape=box];
N5[shape=circle];
N5a[label="Edge with xlabel\nand style=invisible" shape=box];
N3 -> N3a[xlabel="🔥"];
N4 -> N4a[xlabel="🔥" style=invis];
N5 -> N5a[xlabel="🔥" style=invisible];
}
```
## Steps to reproduce
1. `cd /path/to/graphviz/tests/` (the code uses the `usershape.svg` file from that directory)
2. Save the code above as e.g. `invis_test.dot`
3. `dot -Tpng invis_test.dot -oinvis_test.png`
## Actual Behaviour
Dot will produce this PNG:
![invis_test](/uploads/fc610e4e58b43a7ee4ae06d6de40fb36/invis_test.png)
While `style=invis` causes the styled node/edge to completely disappear, along with all of its associated "decoration", `style=invisible` causes only **partial** invisibility: A node's shape and label are hidden, but its `image=` content remains. The line for an edge isn't drawn, but its arrowhead and xlabel are.
## OS/Graphviz Version
Most likely all, but tested on Fedora Linux 39, using both distro-built `dot - graphviz version 8.1.0 (20230707.0739)` and locally-built `dot - graphviz version 10.0.0~dev.20231228.2101 (20231228.2101)`
## Additional info
As I mentioned in #2522, my _best guess_ for what's going on in the **node** situation is that `gvrender.c` will set the pen style to `PEN_NONE` if either "invis" or "invisible" is set:
https://gitlab.com/graphviz/graphviz/-/blob/main/lib/gvc/gvrender.c#L501
but `shapes.c` only supports "invis" to set the shape's overall style as `INVISIBLE`:
https://gitlab.com/graphviz/graphviz/-/blob/main/lib/common/shapes.c#L452
(That being said, I hadn't yet realized that `style=invisible` also works on edges, _and_ also works **differently** than `style=invis` on edges, as well. So, the situation may be more complex / involve more code than just what's in `gvrender.c` and `shapes.c`.)https://gitlab.com/graphviz/graphviz/-/issues/2524Ability to embed JavaScript into PDFs.2024-03-19T10:55:15ZModestas ValauskasAbility to embed JavaScript into PDFs.For large graphs, in my experience, the best way to view them is by rendering them as PDFs.
On the first sight, PDFs do not support any custom actions. However, at least in principle, we can embed JS into PDFs and execute that JS in PD...For large graphs, in my experience, the best way to view them is by rendering them as PDFs.
On the first sight, PDFs do not support any custom actions. However, at least in principle, we can embed JS into PDFs and execute that JS in PDF viewers that support that feature.
I'm wondering, is something like that possible today? That is, can we passthrough JavaScript code through .dot to generated PDFs and assign actions (e.g., clicking on some node runs some action) and have those actions be invoked in supported PDF viewers?https://gitlab.com/graphviz/graphviz/-/issues/2523splines attribute only works on a graph-wide, not on a per-edge granularity2024-03-17T21:10:02ZRoland Leißasplines attribute only works on a graph-wide, not on a per-edge granularity## Steps to reproduce
test.dot:
```dot
digraph {
a -> b;
a -> c;
b -> d;
c -> d;
d -> a [splines=line];
}
```
run:
```sh
dot test.dot -Tpdf -o test.pdf
```
## Expected Behaviour
Edge $d \ri...## Steps to reproduce
test.dot:
```dot
digraph {
a -> b;
a -> c;
b -> d;
c -> d;
d -> a [splines=line];
}
```
run:
```sh
dot test.dot -Tpdf -o test.pdf
```
## Expected Behaviour
Edge $d \rightarrow a$ should be a straight line.
## Actual Behaviour
Edge $d \rightarrow a$ is curved.
## OS Version
```
Linux zen 6.7.7-1-MANJARO #1 SMP PREEMPT_DYNAMIC Fri Mar 1 18:26:06 UTC 2024 x86_64 GNU/Linux
```
## Graphviz Version
```
dot - graphviz version 10.0.1 (0)
libdir = "/usr/lib/graphviz"
Activated plugin library: libgvplugin_dot_layout.so.6
Using layout: dot:dot_layout
Activated plugin library: libgvplugin_core.so.6
Using render: dot:core
Using device: dot:dot:core
The plugin configuration file:
/usr/lib/graphviz/config6
was successfully loaded.
render : cairo dot dot_json fig gd json json0 map mp pic pov ps svg svg_inline tk vrml xdot xdot_json
layout : circo dot fdp neato nop nop1 nop2 osage patchwork sfdp twopi
textlayout : textlayout
device : canon cmap cmapx cmapx_np dot dot_json eps fig gd gd2 gif gv imap imap_np ismap jpe jpeg jpg json json0 kitty kittyz mp pdf pic plain plain-ext png pov ps ps2 svg svg_inline svgz tk vrml vt vt-24bit wbmp webp x11 xdot xdot1.2 xdot1.4 xdot_json xlib
loadimage : (lib) eps gd gd2 gif jpe jpeg jpg png ps svg webp xbm
```
## Additional info
Apparently, you can only set behavior how edges are rendered on a global level like this:
```dot
graph [splines=line];
```
But you cannot make this decision on a per-edge basis.https://gitlab.com/graphviz/graphviz/-/issues/2522style=invis appears to be almost completely undocumented (and has apparently ...2024-03-19T16:20:31ZFeRD (Frank Dana)style=invis appears to be almost completely undocumented (and has apparently changed meaning at some point)The graphviz documentation [list `"invis"` as one of the valid `style` attributes for nodes](https://www.graphviz.org/docs/attr-types/style/). However, unlike every other style listed there, it appears to be completely undocumented, neve...The graphviz documentation [list `"invis"` as one of the valid `style` attributes for nodes](https://www.graphviz.org/docs/attr-types/style/). However, unlike every other style listed there, it appears to be completely undocumented, never mentioned again on that page, or any other that I can find.
Worse, it appears the meaning of `style=invis` has changed over time.
pydot's test suite has a very old test graph called [from-past-to-future](https://github.com/pydot/pydot/tree/master/test/from-past-to-future) consisting of a `.dot` file and a number of `.png` images meant to be embedded in the graph. The images are all embedded using `subgraph`s containing `shapefile` nodes, like so:
```dot
digraph G {
/* ... */
subgraph cluster_Computers {label="Computers"; labelloc="b"; Computers_icon};
Computers_icon [label="", shape=box, style=invis, shapefile="Computers.png"];
subgraph cluster_Semantic_Web {label="Semantic Web"; labelloc="b"; Semantic_Web_icon};
Semantic_Web_icon [label="", shape=box, style=invis, shapefile="Semantic_Web.png"];
/* ... */
Computers_icon -> Semantic_Web_icon;
/* ... */
}
```
_Apparently_ (based on the fact that this dotfile exists at all), at some point in the past that code would've created nodes containing the named graphics, with invisible outlines. (`shape=box` was always redundant, since it's documented as the default and only shape option for `shapefile` nodes.)
However, in modern `dot` (tested with both Fedora's `graphviz-8.1.0-6.fc39.x86_64` and a locally-built 10.0.0~dev.20231228.2101), the actual result is graph where the image nodes don't render **at all**. Running `dot -v` reveals that the images aren't even loaded:
<details>
<summary>Output of <code>dot -v -Tpng -ofrom-past-to-future.png from-past-to-future.dot</code></summary>
<pre><code>
dot - graphviz version 10.0.0~dev.20231228.2101 (20231228.2101)
Using render: cairo:cairo
Using device: png:cairo:cairo
Using layout: dot:dot_layout
The plugin configuration file:
(null)
was not found or not usable. No on-demand plugins.
render : cairo dot dot_json fig gd json json0 lasi map mp pic pov ps svg svg_inline tk vrml xdot xdot_json
layout : circo dot fdp neato nop nop1 nop2 osage patchwork sfdp twopi
textlayout : textlayout
device : bmp canon cmap cmapx cmapx_np dot dot_json eps fig gd gd2 gif gv ico imap imap_np ismap jpe jpeg jpg json json0 kitty kittyz mp pdf pic plain plain-ext png pov ps ps2 svg svg_inline svgz tga tif tiff tk vrml vt vt-24bit wbmp webp x11 xdot xdot1.2 xdot1.4 xdot_json xlib
loadimage : (lib) bmp eps gd gd2 gif ico jpe jpeg jpg pdf png ps svg webp
fontname: "Times-Roman" resolved to: (ps:pango DejaVu Serif, REGULAR) (PangoCairoFcFont) "DejaVu Serif 14"
pack info:
mode undefined
size 0
flags 0
margin 8
pack info:
mode node
size 0
flags 0
network simplex: 1 nodes 0 edges maxiter=2147483647 balance=1
network simplex: 1 nodes 0 edges 0 iter 0.00 sec
network simplex: 1 nodes 0 edges maxiter=2147483647 balance=1
network simplex: 1 nodes 0 edges 0 iter 0.00 sec
network simplex: 1 nodes 0 edges maxiter=2147483647 balance=1
network simplex: 1 nodes 0 edges 0 iter 0.00 sec
network simplex: 1 nodes 0 edges maxiter=2147483647 balance=1
network simplex: 1 nodes 0 edges 0 iter 0.00 sec
network simplex: 1 nodes 0 edges maxiter=2147483647 balance=1
network simplex: 1 nodes 0 edges 0 iter 0.00 sec
network simplex: 1 nodes 0 edges maxiter=2147483647 balance=1
network simplex: 1 nodes 0 edges 0 iter 0.00 sec
network simplex: 1 nodes 0 edges maxiter=2147483647 balance=1
network simplex: 1 nodes 0 edges 0 iter 0.00 sec
network simplex: 1 nodes 0 edges maxiter=2147483647 balance=1
network simplex: 1 nodes 0 edges 0 iter 0.00 sec
network simplex: 1 nodes 0 edges maxiter=2147483647 balance=1
network simplex: 1 nodes 0 edges 0 iter 0.00 sec
network simplex: 1 nodes 0 edges maxiter=2147483647 balance=1
network simplex: 1 nodes 0 edges 0 iter 0.00 sec
network simplex: 1 nodes 0 edges maxiter=2147483647 balance=1
network simplex: 1 nodes 0 edges 0 iter 0.00 sec
network simplex: 1 nodes 0 edges maxiter=2147483647 balance=1
network simplex: 1 nodes 0 edges 0 iter 0.00 sec
network simplex: 1 nodes 0 edges maxiter=2147483647 balance=1
network simplex: 1 nodes 0 edges 0 iter 0.00 sec
network simplex: 1 nodes 0 edges maxiter=2147483647 balance=1
network simplex: 1 nodes 0 edges 0 iter 0.00 sec
network simplex: 1 nodes 0 edges maxiter=2147483647 balance=1
network simplex: 1 nodes 0 edges 0 iter 0.00 sec
network simplex: 1 nodes 0 edges maxiter=2147483647 balance=1
network simplex: 1 nodes 0 edges 0 iter 0.00 sec
network simplex: 1 nodes 0 edges maxiter=2147483647 balance=1
network simplex: 1 nodes 0 edges 0 iter 0.00 sec
Warning: AI_icon was already in a rankset, deleted from cluster G
Warning: Biology_icon was already in a rankset, deleted from cluster G
Warning: Social_Networks_icon was already in a rankset, deleted from cluster G
Warning: Turing_icon was already in a rankset, deleted from cluster G
Warning: Rejewski_icon was already in a rankset, deleted from cluster G
Warning: Dertouzos_icon was already in a rankset, deleted from cluster G
Warning: Berners_Lee_icon was already in a rankset, deleted from cluster G
network simplex: 47 nodes 70 edges maxiter=2147483647 balance=0
network simplex: 47 nodes 70 edges 11 iter 0.00 sec
Maxrank = 3, minrank = 0
Warning: removing empty cluster
Warning: removing empty cluster
Warning: removing empty cluster
Warning: removing empty cluster
Warning: removing empty cluster
Warning: removing empty cluster
Warning: removing empty cluster
mincross: pass 0 iter 0 trying 0 cur_cross 10 best_cross 10
mincross: pass 0 iter 1 trying 0 cur_cross 3 best_cross 3
mincross: pass 0 iter 2 trying 1 cur_cross 15 best_cross 3
mincross: pass 0 iter 3 trying 2 cur_cross 12 best_cross 3
mincross: pass 1 iter 0 trying 0 cur_cross 13 best_cross 3
mincross: pass 1 iter 1 trying 1 cur_cross 7 best_cross 3
mincross: pass 1 iter 2 trying 2 cur_cross 12 best_cross 3
mincross: pass 1 iter 3 trying 3 cur_cross 6 best_cross 3
mincross: pass 2 iter 0 trying 0 cur_cross 3 best_cross 3
mincross: pass 2 iter 1 trying 1 cur_cross 3 best_cross 3
mincross: pass 2 iter 2 trying 2 cur_cross 15 best_cross 3
mincross: pass 2 iter 3 trying 3 cur_cross 12 best_cross 3
mincross: pass 2 iter 4 trying 4 cur_cross 12 best_cross 3
mincross: pass 2 iter 5 trying 5 cur_cross 12 best_cross 3
mincross: pass 2 iter 6 trying 6 cur_cross 14 best_cross 3
mincross: pass 2 iter 7 trying 7 cur_cross 11 best_cross 3
mincross: pass 2 iter 8 trying 8 cur_cross 11 best_cross 3
mincross: pass 2 iter 0 trying 0 cur_cross 3 best_cross 3
mincross: pass 2 iter 1 trying 1 cur_cross 3 best_cross 3
mincross: pass 2 iter 2 trying 2 cur_cross 3 best_cross 3
mincross: pass 2 iter 3 trying 3 cur_cross 3 best_cross 3
mincross: pass 2 iter 4 trying 4 cur_cross 3 best_cross 3
mincross: pass 2 iter 5 trying 5 cur_cross 3 best_cross 3
mincross: pass 2 iter 6 trying 6 cur_cross 3 best_cross 3
mincross: pass 2 iter 7 trying 7 cur_cross 3 best_cross 3
mincross: pass 2 iter 8 trying 8 cur_cross 3 best_cross 3
mincross: pass 2 iter 0 trying 0 cur_cross 3 best_cross 3
mincross: pass 2 iter 1 trying 1 cur_cross 3 best_cross 3
mincross: pass 2 iter 2 trying 2 cur_cross 3 best_cross 3
mincross: pass 2 iter 3 trying 3 cur_cross 3 best_cross 3
mincross: pass 2 iter 4 trying 4 cur_cross 3 best_cross 3
mincross: pass 2 iter 5 trying 5 cur_cross 3 best_cross 3
mincross: pass 2 iter 6 trying 6 cur_cross 3 best_cross 3
mincross: pass 2 iter 7 trying 7 cur_cross 3 best_cross 3
mincross: pass 2 iter 8 trying 8 cur_cross 3 best_cross 3
mincross: pass 2 iter 0 trying 0 cur_cross 3 best_cross 3
mincross: pass 2 iter 1 trying 1 cur_cross 3 best_cross 3
mincross: pass 2 iter 2 trying 2 cur_cross 3 best_cross 3
mincross: pass 2 iter 3 trying 3 cur_cross 3 best_cross 3
mincross: pass 2 iter 4 trying 4 cur_cross 3 best_cross 3
mincross: pass 2 iter 5 trying 5 cur_cross 3 best_cross 3
mincross: pass 2 iter 6 trying 6 cur_cross 3 best_cross 3
mincross: pass 2 iter 7 trying 7 cur_cross 3 best_cross 3
mincross: pass 2 iter 8 trying 8 cur_cross 3 best_cross 3
mincross: pass 2 iter 0 trying 0 cur_cross 3 best_cross 3
mincross: pass 2 iter 1 trying 1 cur_cross 3 best_cross 3
mincross: pass 2 iter 2 trying 2 cur_cross 3 best_cross 3
mincross: pass 2 iter 3 trying 3 cur_cross 3 best_cross 3
mincross: pass 2 iter 4 trying 4 cur_cross 3 best_cross 3
mincross: pass 2 iter 5 trying 5 cur_cross 3 best_cross 3
mincross: pass 2 iter 6 trying 6 cur_cross 3 best_cross 3
mincross: pass 2 iter 7 trying 7 cur_cross 3 best_cross 3
mincross: pass 2 iter 8 trying 8 cur_cross 3 best_cross 3
mincross: pass 2 iter 0 trying 0 cur_cross 3 best_cross 3
mincross: pass 2 iter 1 trying 1 cur_cross 3 best_cross 3
mincross: pass 2 iter 2 trying 2 cur_cross 3 best_cross 3
mincross: pass 2 iter 3 trying 3 cur_cross 3 best_cross 3
mincross: pass 2 iter 4 trying 4 cur_cross 3 best_cross 3
mincross: pass 2 iter 5 trying 5 cur_cross 3 best_cross 3
mincross: pass 2 iter 6 trying 6 cur_cross 3 best_cross 3
mincross: pass 2 iter 7 trying 7 cur_cross 3 best_cross 3
mincross: pass 2 iter 8 trying 8 cur_cross 3 best_cross 3
mincross: pass 2 iter 0 trying 0 cur_cross 3 best_cross 3
mincross: pass 2 iter 1 trying 1 cur_cross 3 best_cross 3
mincross: pass 2 iter 2 trying 2 cur_cross 3 best_cross 3
mincross: pass 2 iter 3 trying 3 cur_cross 3 best_cross 3
mincross: pass 2 iter 4 trying 4 cur_cross 3 best_cross 3
mincross: pass 2 iter 5 trying 5 cur_cross 3 best_cross 3
mincross: pass 2 iter 6 trying 6 cur_cross 3 best_cross 3
mincross: pass 2 iter 7 trying 7 cur_cross 3 best_cross 3
mincross: pass 2 iter 8 trying 8 cur_cross 3 best_cross 3
mincross: pass 2 iter 0 trying 0 cur_cross 3 best_cross 3
mincross: pass 2 iter 1 trying 1 cur_cross 3 best_cross 3
mincross: pass 2 iter 2 trying 2 cur_cross 3 best_cross 3
mincross: pass 2 iter 3 trying 3 cur_cross 3 best_cross 3
mincross: pass 2 iter 4 trying 4 cur_cross 3 best_cross 3
mincross: pass 2 iter 5 trying 5 cur_cross 3 best_cross 3
mincross: pass 2 iter 6 trying 6 cur_cross 3 best_cross 3
mincross: pass 2 iter 7 trying 7 cur_cross 3 best_cross 3
mincross: pass 2 iter 8 trying 8 cur_cross 3 best_cross 3
mincross: pass 2 iter 0 trying 0 cur_cross 2 best_cross 2
mincross: pass 2 iter 1 trying 1 cur_cross 2 best_cross 2
mincross: pass 2 iter 2 trying 2 cur_cross 2 best_cross 2
mincross: pass 2 iter 3 trying 3 cur_cross 2 best_cross 2
mincross: pass 2 iter 4 trying 4 cur_cross 2 best_cross 2
mincross: pass 2 iter 5 trying 5 cur_cross 2 best_cross 2
mincross: pass 2 iter 6 trying 6 cur_cross 2 best_cross 2
mincross: pass 2 iter 7 trying 7 cur_cross 2 best_cross 2
mincross: pass 2 iter 8 trying 8 cur_cross 2 best_cross 2
mincross: pass 2 iter 0 trying 0 cur_cross 2 best_cross 2
mincross: pass 2 iter 1 trying 1 cur_cross 2 best_cross 2
mincross: pass 2 iter 2 trying 2 cur_cross 2 best_cross 2
mincross: pass 2 iter 3 trying 3 cur_cross 2 best_cross 2
mincross: pass 2 iter 4 trying 4 cur_cross 2 best_cross 2
mincross: pass 2 iter 5 trying 5 cur_cross 2 best_cross 2
mincross: pass 2 iter 6 trying 6 cur_cross 2 best_cross 2
mincross: pass 2 iter 7 trying 7 cur_cross 2 best_cross 2
mincross: pass 2 iter 8 trying 8 cur_cross 2 best_cross 2
mincross: pass 2 iter 0 trying 0 cur_cross 2 best_cross 2
mincross: pass 2 iter 1 trying 1 cur_cross 2 best_cross 2
mincross: pass 2 iter 2 trying 2 cur_cross 2 best_cross 2
mincross: pass 2 iter 3 trying 3 cur_cross 2 best_cross 2
mincross: pass 2 iter 4 trying 4 cur_cross 2 best_cross 2
mincross: pass 2 iter 5 trying 5 cur_cross 2 best_cross 2
mincross: pass 2 iter 6 trying 6 cur_cross 2 best_cross 2
mincross: pass 2 iter 7 trying 7 cur_cross 2 best_cross 2
mincross: pass 2 iter 8 trying 8 cur_cross 2 best_cross 2
mincross: pass 2 iter 0 trying 0 cur_cross 2 best_cross 2
mincross: pass 2 iter 1 trying 1 cur_cross 2 best_cross 2
mincross: pass 2 iter 2 trying 2 cur_cross 2 best_cross 2
mincross: pass 2 iter 3 trying 3 cur_cross 2 best_cross 2
mincross: pass 2 iter 4 trying 4 cur_cross 2 best_cross 2
mincross: pass 2 iter 5 trying 5 cur_cross 2 best_cross 2
mincross: pass 2 iter 6 trying 6 cur_cross 2 best_cross 2
mincross: pass 2 iter 7 trying 7 cur_cross 2 best_cross 2
mincross: pass 2 iter 8 trying 8 cur_cross 2 best_cross 2
mincross G: 2 crossings, 0.00 secs.
network simplex: 69 nodes 154 edges maxiter=2147483647 balance=2
network simplex: 69 nodes 154 edges 14 iter 0.00 sec
routesplines: 29 edges, 115 boxes 0.00 sec
Using render: cairo:cairo
Using device: png:cairo:cairo
dot: allocating a 3480K cairo image surface (1122 x 794 pixels)
gvRenderJobs G: 0.07 secs.
</code></pre>
</details>
I've already updated the test code to more current standards, replacing the deprecated `shapefile` with `image`, swapping `plaintext` for the `box` shape, and removing `style=invis`, resulting in:
```dot
digraph G {
/* ... */
subgraph cluster_Computers {label="Computers"; labelloc="b"; Computers_icon};
Computers_icon [label="", shape=plaintext, image="Computers.png"];
subgraph cluster_Semantic_Web {label="Semantic Web"; labelloc="b"; Semantic_Web_icon};
Semantic_Web_icon [label="", shape=plaintext, image="Semantic_Web.png"];
/* ... */
Computers_icon -> Semantic_Web_icon;
/* ... */
}
```
This renders correctly, including the embedded images, seemingly as the original authors intended. The output of `dot -v` includes additional lines indicating that the images are loaded, which were absent in the original run:
<details>
<summary>Output is the same until the last line, which is preceded by....</summary>
<pre><code>
Using render: cairo:cairo
Using loadimage: png:cairo:cairo
Using render: cairo:cairo
Using loadimage: png:cairo:cairo
Using render: cairo:cairo
Using loadimage: png:cairo:cairo
Using render: cairo:cairo
Using loadimage: png:cairo:cairo
Using render: cairo:cairo
Using loadimage: png:cairo:cairo
Using render: cairo:cairo
Using loadimage: png:cairo:cairo
Using render: cairo:cairo
Using loadimage: png:cairo:cairo
Using render: cairo:cairo
Using loadimage: png:cairo:cairo
Using render: cairo:cairo
Using loadimage: png:cairo:cairo
Using render: cairo:cairo
Using loadimage: png:cairo:cairo
Using render: cairo:cairo
Using loadimage: png:cairo:cairo
Using render: cairo:cairo
Using loadimage: png:cairo:cairo
Using render: cairo:cairo
Using loadimage: png:cairo:cairo
Using render: cairo:cairo
Using loadimage: png:cairo:cairo
Using render: cairo:cairo
Using loadimage: png:cairo:cairo
Using render: cairo:cairo
Using loadimage: png:cairo:cairo
Using render: cairo:cairo
Using loadimage: png:cairo:cairo
</code></pre>
</details>
However, especially since `style=invis` seems to have **changed** meaning at some point (possibly very, very long ago), it'd be good to have some documentation for what it _actually means_. Currently, unless I've simply missed it, there appears to be none whatsoever.https://gitlab.com/graphviz/graphviz/-/issues/2521newrank attribute is only tested for existence, not as a boolean2024-03-24T15:37:52Zsteve roushnewrank attribute is only tested for existence, not as a boolean## Steps to reproduce
The following Linux script produces four identical results. The value of the **newrank** attribute is ignored, only its existence is tested. Note that if **newrank** is not supplied, **dot** produces warnings an...## Steps to reproduce
The following Linux script produces four identical results. The value of the **newrank** attribute is ignored, only its existence is tested. Note that if **newrank** is not supplied, **dot** produces warnings and errors.
```
for X in true false hotdog "";do
f=newrankTest2.gv; T=png; F=newrank2;
dot -Gnewrank=$X -T$T $f >$F.$X.$T;
done
```
## Expected Behaviour
Different results, based on the value of **newrank**
## Actual Behaviour
Same results, regardless of **newrank** value.
## OS Version
Linux
lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 20.04.6 LTS
Release: 20.04
Codename: focal
## Graphviz Version
`dot - graphviz version 11.0.0~dev.20240301.0232 (20240301.0232)`
## Additional infohttps://gitlab.com/graphviz/graphviz/-/issues/2520Installing graphviz command line programs also tries to build the macOS pkg2024-03-16T07:11:23ZRyan Carsten SchmidtInstalling graphviz command line programs also tries to build the macOS pkgAttempting to install the Graphviz 10.0.1 command line programs now also tries to build the macOS pkg, which I didn't ask for, don't want, and which fails:
```
make[3]: Entering directory `/opt/local/var/macports/build/_Volumes_Shared_m...Attempting to install the Graphviz 10.0.1 command line programs now also tries to build the macOS pkg, which I didn't ask for, don't want, and which fails:
```
make[3]: Entering directory `/opt/local/var/macports/build/_Volumes_Shared_macports-ports_graphics_graphviz-devel/graphviz-devel/work/graphviz-10.0.1/macosx/build'
BUILDING GRAPHVIZ...
SCRIPTING POSTINSTALL...
BUILDING GRAPHVIZ APP...
xcodebuild -project ../graphviz.xcodeproj -configuration Release ARCHS=x86_64
mkdir -p Scripts
/Library/Developer/CommandLineTools/usr/bin/make DESTDIR=/opt/local/var/macports/build/_Volumes_Shared_macports-ports_graphics_graphviz-devel/graphviz-devel/work/graphviz-10.0.1/macosx/build/Destdir -C ../.. install
xcode-select: error: tool 'xcodebuild' requires Xcode, but active developer directory '/Library/Developer/CommandLineTools' is a command line tools instance
echo "#!/bin/sh" >Scripts/postinstall
make[3]: *** [Release/Graphviz.app/Contents/MacOS/Graphviz] Error 1
```https://gitlab.com/graphviz/graphviz/-/issues/2519macOS 13.5 version requirement2024-03-16T07:42:11ZRyan Carsten SchmidtmacOS 13.5 version requirementhttps://gitlab.com/graphviz/graphviz/-/blob/main/macosx/build/Distribution.xml.in says:
```js
if (!(system.compareVersions(system.version.ProductVersion, '13.5') >= 0)) {
my.result.title = 'Install Failed';
...https://gitlab.com/graphviz/graphviz/-/blob/main/macosx/build/Distribution.xml.in says:
```js
if (!(system.compareVersions(system.version.ProductVersion, '13.5') >= 0)) {
my.result.title = 'Install Failed';
my.result.message = 'Graphviz requires macOS 13.5 (Ventura) or later.';
my.result.type = 'Fatal';
return false;
}
```
What in the world could have caused Graphviz to require macOS 13.5 now? Graphviz.app has for ages worked fine on Mac OS X 10.5 and later.https://gitlab.com/graphviz/graphviz/-/issues/2518newrank over mulitiple clusters does not work as expected2024-02-26T17:31:03ZEric S. Raymondesr@thyrsus.comnewrank over mulitiple clusters does not work as expected## Steps to reproduce
List what commands you ran, any errors you see. If you run commands over some input, attaching the input to the issue will help us track down the bug.
dot -Tpng.
## Expected Behaviour
This is a visualization o...## Steps to reproduce
List what commands you ran, any errors you see. If you run commands over some input, attaching the input to the issue will help us track down the bug.
dot -Tpng.
## Expected Behaviour
This is a visualization of a set of master files in a CVS repository. The RFC3339 dates are revision timestamps. The rank integers are the raw integral timestamp.
I expected display of the boxes corresponding to CVS revisions to stretch downward, with boxes vertically spaced corresponding tpo timestamp order.
## Actual Behaviour
Node rank has no effect on the rendering.
## OS Version
Linux, Pop!_OS 22.04 LTS
## Graphviz Version
run $ dot -V
dot - graphviz version 2.43.0 (0)
## Additional info
```
strict digraph G {
newrank=true;
nodesep=0.1;
ranksep=0.1;
edge [dir=none];
node [shape=box,fontsize=6];
subgraph "cluster-branchy.repo/module/.cvsignore,v" {
label="branchy.repo/module/.cvsignore,v"
"branchy.repo/module/.cvsignore,v:master" [label="master",fixedsize=false,s
hape=ellipse]
n1 [label="1.2
2024-02-15T13:29:26Z",rank=1329312566]
n2 [label="1.1
2024-02-15T13:29:23Z",rank=1329312563]
"branchy.repo/module/.cvsignore,v:master" -> n1
n1 -> n2
"branchy.repo/module/.cvsignore,v:samplebranch" [label="samplebranch",fixed
size=false,shape=ellipse]
n1 [label="1.2
2024-02-15T13:29:26Z",rank=1329312566]
n2 [label="1.1
2024-02-15T13:29:23Z",rank=1329312563]
"branchy.repo/module/.cvsignore,v:samplebranch" -> n1
n1 -> n2
}
subgraph "cluster-branchy.repo/module/README,v" {
label="branchy.repo/module/README,v"
"branchy.repo/module/README,v:master" [label="master",fixedsize=false,shape
=ellipse]
n3 [label="1.5
2024-02-15T13:29:44Z",rank=1329312584]
n4 [label="1.4
2024-02-15T13:29:34Z",rank=1329312574]
n5 [label="1.3
2024-02-15T13:29:29Z",rank=1329312569]
n6 [label="1.2
2024-02-15T13:29:14Z",rank=1329312554]
n7 [label="1.1
2024-02-15T13:29:11Z",rank=1329312551]
n8 [label="1.4.2.1
2024-02-15T13:29:40Z",rank=1329312580]
"branchy.repo/module/README,v:master" -> n3
n3 -> n4
n4 -> n5
n5 -> n6
n6 -> n7
n7 -> n8
"branchy.repo/module/README,v:samplebranch" [label="samplebranch",fixedsize
=false,shape=ellipse]
n3 [label="1.5
2024-02-15T13:29:44Z",rank=1329312584]
n4 [label="1.4
2024-02-15T13:29:34Z",rank=1329312574]
n5 [label="1.3
2024-02-15T13:29:29Z",rank=1329312569]
n6 [label="1.2
2024-02-15T13:29:14Z",rank=1329312554]
n7 [label="1.1
2024-02-15T13:29:11Z",rank=1329312551]
n8 [label="1.4.2.1
2024-02-15T13:29:40Z",rank=1329312580]
"branchy.repo/module/README,v:samplebranch" -> n3
n3 -> n4
n4 -> n5
n5 -> n6
n6 -> n7
n7 -> n8
}
subgraph "cluster-branchy.repo/module/Attic/doomed,v" {
label="branchy.repo/module/Attic/doomed,v"
"branchy.repo/module/Attic/doomed,v:master" [label="master",fixedsize=false
,shape=ellipse]
n9 [label="1.3
2024-02-15T13:29:32Z",rank=1329312572]
n10 [label="1.2
2024-02-15T13:29:20Z",rank=1329312560]
n11 [label="1.1
2024-02-15T13:29:17Z",rank=1329312557]
"branchy.repo/module/Attic/doomed,v:master" -> n9
n9 -> n10
n10 -> n11
}
subgraph "cluster-branchy.repo/module/superfluous,v" {
label="branchy.repo/module/superfluous,v"
"branchy.repo/module/superfluous,v:master" [label="master",fixedsize=false,
shape=ellipse]
n12 [label="1.1
2024-02-15T13:29:37Z",rank=1329312577]
"branchy.repo/module/superfluous,v:master" -> n12
"branchy.repo/module/superfluous,v:samplebranch" [label="samplebranch",fixe
dsize=false,shape=ellipse]
n12 [label="1.1
2024-02-15T13:29:37Z",rank=1329312577]
"branchy.repo/module/superfluous,v:samplebranch" -> n12
}
}
```https://gitlab.com/graphviz/graphviz/-/issues/2517add option to nop (and possibly xdot format) to prettyprint HTML labels2024-02-22T21:38:05Zsteve roushadd option to nop (and possibly xdot format) to prettyprint HTML labels## Steps to reproduce
**nop** does not prettyprint labels, particularly HTML labels. The result is a single line that can run to hundreds or thousands of characters (I found one label of ~12,000 characters).
## Expected Behaviour
a fo...## Steps to reproduce
**nop** does not prettyprint labels, particularly HTML labels. The result is a single line that can run to hundreds or thousands of characters (I found one label of ~12,000 characters).
## Expected Behaviour
a formatted HTML label, with breaks & indentation at **<TR** and possibly **<TD**
```
label=<{
<TABLE BORDER="0" CELLPADDING="1" ALIGN="LEFT">
<TR>
<TD >0x41bd8e</TD>
<TD >(0x41b7ad)</TD>
<TD></TD>
<TD></TD>
</TR>
</TABLE>|
<TABLE BORDER="0" CELLPADDING="1" ALIGN="LEFT">
<TR>
<TD ALIGN="LEFT">0x0041bd8e: </TD>
<TD ALIGN="LEFT">xor</TD>
<TD ALIGN="LEFT">edx, edx</TD>
<TD></TD>
</TR>
<TR>
<TD ALIGN="LEFT">0x0041bd90: </TD>
<TD ALIGN="LEFT">mov</TD>
<TD ALIGN="LEFT">rbx, rax</TD>
<TD></TD>
</TR>
<TR>
<TD ALIGN="LEFT">0x0041bd93: </TD>
<TD ALIGN="LEFT">mov</TD>
<TD ALIGN="LEFT">rdi, rax</TD>
<TD></TD>
</TR>
<TR>
<TD ALIGN="LEFT">0x0041bd96: </TD>
<TD ALIGN="LEFT">mov</TD>
<TD ALIGN="LEFT">rsi, rbp</TD>
<TD></TD>
</TR>
<TR>
<TD ALIGN="LEFT">0x0041bd99: </TD>
<TD ALIGN="LEFT">call</TD>
<TD ALIGN="LEFT">0x41dc20</TD>
<TD ALIGN="LEFT"><FONT COLOR="gray">; sub_41dc20</FONT></TD>
</TR>
</TABLE> }>,
```
## Actual Behaviour
~800 character table, as presented by **nop**:
```
label=<{ <TABLE BORDER="0" CELLPADDING="1" ALIGN="LEFT"><TR><TD >0x41bd8e</TD><TD >(0x41b7ad)</TD><TD></TD><TD></TD></TR></TABLE>|<TABLE BORDER="0" CELLPADDING="1" ALIGN="LEFT"><TR><TD ALIGN="LEFT">0x0041bd8e: </TD><TD ALIGN="LEFT">xor</TD><TD ALIGN="LEFT">edx, edx</TD><TD></TD></TR><TR><TD ALIGN="LEFT">0x0041bd90: </TD><TD ALIGN="LEFT">mov</TD><TD ALIGN="LEFT">rbx, rax</TD><TD></TD></TR><TR><TD ALIGN="LEFT">0x0041bd93: </TD><TD ALIGN="LEFT">mov</TD><TD ALIGN="LEFT">rdi, rax</TD><TD></TD></TR><TR><TD ALIGN="LEFT">0x0041bd96: </TD><TD ALIGN="LEFT">mov</TD><TD ALIGN="LEFT">rsi, rbp</TD><TD></TD></TR><TR><TD ALIGN="LEFT">0x0041bd99: </TD><TD ALIGN="LEFT">call</TD><TD ALIGN="LEFT">0x41dc20</TD><TD ALIGN="LEFT"><FONT COLOR="gray">; sub_41dc20</FONT></TD></TR></TABLE> }>,
```
## OS Version
all
## Graphviz Version
dot - graphviz version 10.0.0~dev.20240121.0450 (20240121.0450)
## Additional info
Fill in with anything else that might be important.https://gitlab.com/graphviz/graphviz/-/issues/2516Putting text before a table label, error message always says 'line 1'2024-02-28T07:18:06ZMark HansenPutting text before a table label, error message always says 'line 1'More-specific issue forked from https://gitlab.com/graphviz/graphviz.gitlab.io/-/issues/208
```
$ dot -Tsvg
digraph G {
aneggtable [shape=egg, label=<yada yada <table><tr><td>item</td></tr></table>>];
}
Error: Syntax error: non-space ...More-specific issue forked from https://gitlab.com/graphviz/graphviz.gitlab.io/-/issues/208
```
$ dot -Tsvg
digraph G {
aneggtable [shape=egg, label=<yada yada <table><tr><td>item</td></tr></table>>];
}
Error: Syntax error: non-space string used before <TABLE> in line 1
... yada yada <table> ...
```
The error reports "line 1" as having the error. Regardless of where in the GV input file this table is declared, it always reports this problem on "line 1".https://gitlab.com/graphviz/graphviz/-/issues/251510.0.1 Windows downloads ended up at the bottom of the list, on https://graph...2024-02-18T15:11:17ZFeRD (Frank Dana)10.0.1 Windows downloads ended up at the bottom of the list, on https://graphviz.org/download/#windowsNot sure if there's a separate repo / issue tracker for the graphviz.org site (if so, sorry for misfiling this), but I happened to notice when looking at https://graphviz.org/download/#windows that the latest 10.0.1 package downloads en...Not sure if there's a separate repo / issue tracker for the graphviz.org site (if so, sorry for misfiling this), but I happened to notice when looking at https://graphviz.org/download/#windows that the latest 10.0.1 package downloads ended up at the _bottom_ of the (otherwise descending-order sorted) list of versions, making them somewhat difficult to discover.https://gitlab.com/graphviz/graphviz/-/issues/2514Unpredictable results from `dot.exe` on Windows2024-02-14T14:58:18ZFeRD (Frank Dana)Unpredictable results from `dot.exe` on Windows## Steps to reproduce
```console
$ # Install graphviz 9.0.0 from chocolatey on Windows
$ choco install graphviz
$ # Render the file b51.dot (included in attached zip file) to JPEG
$ dot.exe -Tjpeg b51.dot -o b51_1.jpg
$ # Repeat the pro...## Steps to reproduce
```console
$ # Install graphviz 9.0.0 from chocolatey on Windows
$ choco install graphviz
$ # Render the file b51.dot (included in attached zip file) to JPEG
$ dot.exe -Tjpeg b51.dot -o b51_1.jpg
$ # Repeat the process
$ dot.exe -Tjpeg b51.dot -o b51_2.jpg
```
## Expected Behaviour
`b51_1.jpg` and `b51_2.jpg` are identical.
## Actual Behaviour
The JPEG produced is different every time.
```console
$ # After four runs on Windows:
$ sha1sum b51_?.jpg
906266ca13f231c3e77c9a7d9d4a898d95b394ab b51_1.jpg
e991bd71ac3d244834a1d32effea4bbce05c24aa b51_2.jpg
1e4e4e59821814e5cf9e01a1a24364a903987b4a b51_3.jpg
40209bddc91edb17b6029cceae7c651a1709b1b1 b51_4.jpg
$ # After four runs with dot from graphviz-8.1.0 on Fedora 39:
$ sha1sum b51_?.jpg
479307f09441f24feacb47b3b94fe78541ff3b48 b51_1.jpg
479307f09441f24feacb47b3b94fe78541ff3b48 b51_2.jpg
479307f09441f24feacb47b3b94fe78541ff3b48 b51_3.jpg
479307f09441f24feacb47b3b94fe78541ff3b48 b51_4.jpg
````
## OS Version
Windows 10 Pro version 22H2
## Graphviz Version
dot - graphviz version 9.0.0 (20230911.1827)
## Additional info
The attached zip file contains the `b51.dot` source file. (Which is, admittedly, a _very_ complex graph, part of the [pydot](https://github.com/pydot/pydot/) test suite.) It also contains the four `b51_[1234].jpg` files produced by four runs of `dot.exe` as shown above, and a `b51_linux.jpg` which is the image consistently produced by every run of `dot` from the Fedora distro package for `graphviz-8.1.0-6.fc39.x86_64`.
The question is, why is Windows `dot` producing such unpredictable results, when it's rock-solid consistent on Linux? Granted, they're different versions, but I repeated the experiment with a locally-built "dot - graphviz version 10.0.0~dev.20231228.2101 (20231228.2101)" and the four files it produced, while not identical to the graphviz-8.1.0 `dot` versions, _were_ again identical to **each other**.
[b51.zip](/uploads/7942f2c690dae94ff4dccee7a97cbec7/b51.zip)https://gitlab.com/graphviz/graphviz/-/issues/2513edgepaint: invalid 'free'2024-02-25T03:17:55ZMatthew Fernandezedgepaint: invalid 'free'When building using CMake and `-DCMAKE_BUILD_TYPE=Release` on MinGW, the compiler says:
```
FAILED: cmd/edgepaint/edgepaint.exe
C:\Windows\system32\cmd.exe /C "cd . && C:\msys64\mingw64\bin\c++.exe -Werror -Wno-deprecated-declarations ...When building using CMake and `-DCMAKE_BUILD_TYPE=Release` on MinGW, the compiler says:
```
FAILED: cmd/edgepaint/edgepaint.exe
C:\Windows\system32\cmd.exe /C "cd . && C:\msys64\mingw64\bin\c++.exe -Werror -Wno-deprecated-declarations -Wall -Wextra -O3 -DNDEBUG -flto=auto -fno-fat-lto-objects cmd/edgepaint/CMakeFiles/edgepaint.dir/edgepaintmain.c.obj -o cmd\edgepaint\edgepaint.exe -Wl,--out-implib,cmd\edgepaint\libedgepaint.dll.a -Wl,--major-image-version,0,--minor-image-version,0 lib/edgepaint/libedgepaintlib.a lib/neatogen/libneatogen.a lib/rbtree/librbtree.a lib/sfdpgen/libsfdpgen.a lib/sparse/libsparse.a lib/neatogen/libneatogen.a lib/gvc/libgvc.dll.a lib/cgraph/libcgraph.dll.a lib/cdt/libcdt.dll.a C:/msys64/mingw64/lib/libltdl.dll.a C:/msys64/mingw64/lib/libz.dll.a lib/rbtree/librbtree.a lib/pathplan/libpathplan.dll.a lib/vpsc/libvpsc.a C:/msys64/mingw64/lib/libgts.dll.a C:/msys64/mingw64/lib/libglib-2.0.dll.a lib/sparse/libsparse.a -lkernel32 -luser32 -lgdi32 -lwinspool -lshell32 -lole32 -loleaut32 -luuid -lcomdlg32 -ladvapi32 && cd ."
In function 'node_distinct_coloring',
inlined from 'edge_distinct_coloring' at C:/GitLab-Runner/builds/smattr/graphviz/lib/edgepaint/edge_distinct_coloring.c:239:12,
inlined from 'clarify' at C:/GitLab-Runner/builds/smattr/graphviz/cmd/edgepaint/edgepaintmain.c:251:7,
inlined from 'main' at C:/GitLab-Runner/builds/smattr/graphviz/cmd/edgepaint/edgepaintmain.c:281:7:
C:/GitLab-Runner/builds/smattr/graphviz/lib/edgepaint/node_distinct_coloring.c:231:5: error: 'free' called on pointer 'p_1108' with nonzero offset 240000 [-Werror=free-nonheap-object]
231 | free(color_points);
| ^
In function 'gv_calloc',
inlined from 'color_blend_rgb2lab' at C:/GitLab-Runner/builds/smattr/graphviz/lib/edgepaint/lab.c:258:20,
inlined from 'node_distinct_coloring' at C:/GitLab-Runner/builds/smattr/graphviz/lib/edgepaint/node_distinct_coloring.c:227:28,
inlined from 'edge_distinct_coloring' at C:/GitLab-Runner/builds/smattr/graphviz/lib/edgepaint/edge_distinct_coloring.c:239:12,
inlined from 'clarify' at C:/GitLab-Runner/builds/smattr/graphviz/cmd/edgepaint/edgepaintmain.c:251:7,
inlined from 'main' at C:/GitLab-Runner/builds/smattr/graphviz/cmd/edgepaint/edgepaintmain.c:281:7:
C:/GitLab-Runner/builds/smattr/graphviz/lib/cgraph/alloc.h:35:13: note: returned from 'calloc'
35 | void *p = calloc(nmemb, size);
| ^
lto1.exe: all warnings being treated as errors
```
This is initially a fairly baffling report. A pointer originated from `calloc` and we later `free` it, what’s the problem? However, what is happening is that LTO enables the compiler to see the allocated pointer is actually conditionally _incremented_ within `color_blend_rgb2lab` before being returned. So the eventual call to `free` can actually pass in the incremented pointer, instead of the original.
Well done, GCC, impressive bug spotting.Matthew FernandezMatthew Fernandezhttps://gitlab.com/graphviz/graphviz/-/issues/2512Allow nodes to be centered in a cluster2024-02-13T07:53:06ZEric GorrAllow nodes to be centered in a cluster## Steps to reproduce
Here are two potential (and related) graph definitions:
```
digraph G {
bgcolor="gray"
node [
style=filled
shape="circle"
fillcolor="green4"
penwidth="2"
color="gre...## Steps to reproduce
Here are two potential (and related) graph definitions:
```
digraph G {
bgcolor="gray"
node [
style=filled
shape="circle"
fillcolor="green4"
penwidth="2"
color="green1"
fontcolor="white"
]
root [
shape="box"
color="white"
fontcolor="white"
label="hello"
]
AAA_1 [
label="AAA"
]
BBB_2 [
label="BBB"
]
subgraph cluster_ccc {
color=gray
fillcolor="blue"
style=filled
label="ccccc"
labelloc=b
fontcolor="white"
labeljust=l
subgraph cluster_south_a {
label="aaaaaaaaaaaaaaaaaaaaaa"
5 [ label="" fillcolor="red" ]
6 [ label="" fillcolor="red" ]
5 -> 6
}
subgraph cluster_south_b {
label="bbbbbbbbbbbbbbbbbbbbbb"
7 [ label="" fillcolor="red" ]
8 [ label="" fillcolor="red" ]
7 -> 8
}
}
root -> AAA_1
root -> BBB_2
AAA_1 -> 7
BBB_2 -> 5
}
```
and
```
digraph G {
bgcolor="gray"
node [
style=filled
shape="circle"
fillcolor="green4"
penwidth="2"
color="green1"
fontcolor="white"
]
root [
shape="box"
color="white"
fontcolor="white"
label="hello"
]
AAA_1 [
label="AAA"
]
BBB_2 [
label="BBB"
]
subgraph cluster_ccc {
color=gray
fillcolor="blue"
style=filled
label="ccccc"
labelloc=b
fontcolor="white"
labeljust=l
subgraph cluster_south_a {
label="aaaaaaaaaaaaaaaaaaaaaa"
5 [ label="" fillcolor="red" ]
6 [ label="" fillcolor="red" ]
5 -> 6
}
subgraph cluster_south_b {
label="bbbbbbbbbbbbbbbbbbbbbb"
7 [ label="" fillcolor="red" ]
8 [ label="" fillcolor="red" ]
9 [ label="" fillcolor="red" ]
10 [ label="" fillcolor="red" ]
7 -> 8
7 -> 9
8 -> 9
8 -> 10
9 -> 10
}
}
root -> AAA_1
root -> BBB_2
AAA_1 -> 7
BBB_2 -> 5
}
```
## Expected Behaviour
I expected to see the red nodes horizontally centered in the cluster to which they belong.
## Actual Behaviour
These produce:
![image](/uploads/1f4ac96cfcdceffd77641b0e5353553b/image.png)
![image](/uploads/ea7ebdd9900c810a4fd4d9a36114a99f/image.png)
## OS Version
http://magjac.com/graphviz-visual-editor/
## Graphviz Version
http://magjac.com/graphviz-visual-editor/
## Additional info
SO Question : https://stackoverflow.com/questions/77984074/how-can-i-center-nodes-in-a-graphviz-cluster
Forum Thread: https://forum.graphviz.org/t/how-can-i-center-nodes-in-a-graphviz-cluster/2020/4
It may be possible to manually fine-tune the graph attribute `nodesep` to get close to the desired output, but that is not a practical solution for me.https://gitlab.com/graphviz/graphviz/-/issues/2511Allow a html-like table to be left aligned in the node2024-02-13T07:52:51ZEric GorrAllow a html-like table to be left aligned in the node## Steps to reproduce
The following graph definition:
```
digraph {
bgcolor="#3D3F41"
a [
shape="box"
color="white"
fixedsize=true
fontcolor="white"
width="3"
...## Steps to reproduce
The following graph definition:
```
digraph {
bgcolor="#3D3F41"
a [
shape="box"
color="white"
fixedsize=true
fontcolor="white"
width="3"
label=<
<table BORDER="0">
<tr>
<td>HELLO</td>
<td>There</td>
</tr>
</table>
>
]
}
```
produces the following output:
## Expected Behaviour
I would like to be able to left align the table in the node.
## Actual Behaviour
![image](/uploads/d08b23413d8082304862ac55fe9fae36/image.png)
## OS Version
Used http://magjac.com/graphviz-visual-editor/
## Graphviz Version
Whatever is used by http://magjac.com/graphviz-visual-editor/
## Additional info
I do need to use the html-like label as one of the columns will be a svg image.
SO Question: https://stackoverflow.com/questions/77983075/how-can-i-have-this-graphviz-html-like-table-left-aligned-in-the-nodehttps://gitlab.com/graphviz/graphviz/-/issues/2510Inconsistent order of arrows in a simple graph2024-03-13T21:01:52ZŁukaszInconsistent order of arrows in a simple graph## Steps to reproduce
1. Save this graph it into `graph.dot` somewhere:
```
digraph G {
subgraph cluster_c0 {
a0 -> a1;
a1 -> a2;
a2 -> a3;
}
subgraph cluster_c1 {
b0 -> b1;
b1 -> b2;...## Steps to reproduce
1. Save this graph it into `graph.dot` somewhere:
```
digraph G {
subgraph cluster_c0 {
a0 -> a1;
a1 -> a2;
a2 -> a3;
}
subgraph cluster_c1 {
b0 -> b1;
b1 -> b2;
b2 -> b3;
}
x -> a0;
x -> b0;
a1 -> b3;
b3 -> a1;
}
```
2. Run `dot -Tdot graph.dot` on it repeatedly, and soon enough the output will be different from the previous ones.
A Python helper script is provided. Use it to run `dot` many times.
(Note: you can increase the number of loops, because sometimes 100 is not enough to catch the problem)
```
import subprocess
args = ["dot", "-Tdot", "graph.dot"]
for i in range(100):
process1 = subprocess.Popen(
args,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE,
)
process2 = subprocess.Popen(
args,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE,
)
stdout_data1, stderr_data1 = process1.communicate()
stdout_data2, stderr_data2 = process2.communicate()
if stdout_data1 != stdout_data2:
print("Difference found!")
print("------")
print(stdout_data1)
print("------")
print(stderr_data2)
break
else:
print(i)
```
## Expected Behaviour
The generated graph should be always the same with the same input.
## Actual Behaviour
Very rarely, the output will be different from the usual one.
[1.txt](/uploads/5cc6ce862cbbe7dedc72d10a8b4126b8/1.txt)
[2.txt](/uploads/b3d494db917ebf0a3786b8416da1f342/2.txt)
(The difference is visualized below, it's the order of the arrows from b3 to a1)
![1](/uploads/d11ae2e1b3f8a55b2ea6ff9faefa693f/1.jpeg)
![2](/uploads/64dd680da01d137915092dd1585c194e/2.jpeg)
## OS Version
MacOS Sonoma 14.3.1
## Graphviz Version
```
dot - graphviz version 9.0.0 (20230911.1827)
libdir = "/opt/homebrew/Cellar/graphviz/9.0.0/lib/graphviz"
Activated plugin library: libgvplugin_dot_layout.6.dylib
Using layout: dot:dot_layout
Activated plugin library: libgvplugin_core.6.dylib
Using render: dot:core
Using device: dot:dot:core
The plugin configuration file:
/opt/homebrew/Cellar/graphviz/9.0.0/lib/graphviz/config6
was successfully loaded.
render : cairo dot dot_json fig gd json json0 map mp pic pov ps quartz svg tk vrml xdot xdot_json
layout : circo dot fdp neato nop nop1 nop2 osage patchwork sfdp twopi
textlayout : textlayout
device : bmp canon cgimage cmap cmapx cmapx_np dot dot_json eps exr fig gd gd2 gif gv icns ico imap imap_np ismap jp2 jpe jpeg jpg json json0 kitty kittyz mp pct pdf pic pict plain plain-ext png pov ps ps2 psd sgi svg svgz tga tif tiff tk vrml vt vt-24bit wbmp webp xdot xdot1.2 xdot1.4 xdot_json
loadimage : (lib) bmp eps gd gd2 gif jpe jpeg jpg pdf png ps svg webp xbm
```
## Additional info
This breaks tests in other repos which rely on graphviz producing consistent output.https://gitlab.com/graphviz/graphviz/-/issues/2509graphviz-10.0.1 not building with MinGW-w642024-02-27T06:35:10ZBrecht Sandersgraphviz-10.0.1 not building with MinGW-w64## Steps to reproduce
When (natively) building graphviz-10.0.1 with MinGW-w64 on my Windows 11 system under MSYS2 with the following CMake flags there are dllimport issues in the form of `undefined reference to '__imp_gv*'`.
```
cmake -...## Steps to reproduce
When (natively) building graphviz-10.0.1 with MinGW-w64 on my Windows 11 system under MSYS2 with the following CMake flags there are dllimport issues in the form of `undefined reference to '__imp_gv*'`.
```
cmake -Wno-dev -GNinja -DCMAKE_INSTALL_PREFIX:PATH=$INSTALLPREFIX -DCMAKE_BUILD_TYPE:STRING=Release -DVERSION:STRING=$VERSION -Denable_ltdl:BOOL=ON -Dwith_gvedit:BOOL=OFF -DGLIBCONFIG_INCLUDE_DIR:PATH=$MINGWPREFIX/lib/glib-2.0/include -DANN_RUNTIME_LIBRARY:STRING=-lANN -Duse_win_pre_inst_libs:BOOL=ON -Dinstall_win_dependency_dlls:BOOL=OFF -DBUILD_TESTING:BOOL=OFF -DCMAKE_C_FLAGS:STRING="-I$(cygpath -m $MINGWPREFIX/include/libdl-win32) -I$(cygpath -m $MINGWPREFIX/include/harfbuzz) -I$(cygpath -m $MINGWPREFIX/include/cairo)" -DCMAKE_CXX_FLAGS:STRING="-fpermissive -I$MINGWPREFIX/include/libdl-win32 -I$MINGWPREFIX/include/harfbuzz" -S. -Bbuild_win
```
Output
```
Linking CXX shared library plugin\lasi\libgvplugin_lasi-6.dll
FAILED: plugin/lasi/libgvplugin_lasi-6.dll plugin/lasi/libgvplugin_lasi.dll.a
C:\Windows\system32\cmd.exe /C "cd . && D:\Prog\winlibs-gcc13.2.0-posix-msvcrt-11.0.1\mingw64\bin\c++.exe -fpermissive -I/d/Prog/winlibs-gcc13.2.0-posix-msvcrt-11.0.1/custombuilt64/include/libdl-win32 -I/d/Prog/winlibs-gcc13.2.0-posix-msvcrt-11.0.1/custombuilt64/include/harfbuzz -Wall -Wextra -O3 -DNDEBUG -flto=auto -fno-fat-lto-objects -shared -o plugin\lasi\libgvplugin_lasi-6.dll -Wl,--out-implib,plugin\lasi\libgvplugin_lasi.dll.a -Wl,--major-image-version,6,--minor-image-version,0 plugin/lasi/CMakeFiles/gvplugin_lasi.dir/gvloadimage_lasi.c.obj plugin/lasi/CMakeFiles/gvplugin_lasi.dir/gvplugin_lasi.c.obj plugin/lasi/CMakeFiles/gvplugin_lasi.dir/gvrender_lasi.cpp.obj D:/Prog/winlibs-gcc13.2.0-posix-msvcrt-11.0.1/custombuilt64/lib/libfreetype.dll.a -lLASi -lpangoft2-1.0 -lfontconfig -lpango-1.0 -lgobject-2.0 -lglib-2.0 -lintl -lharfbuzz -lfreetype -lglib-2.0 -lgobject-2.0 -lpango-1.0 -lpangocairo-1.0 -lintl -lharfbuzz -lfreetype -lpangocairo-1.0 -lkernel32 -luser32 -lgdi32 -lwinspool -lshell32 -lole32 -loleaut32 -luuid -lcomdlg32 -ladvapi32 && cd ."
In member function 'apply',
inlined from 'operator<<' at D:/Prog/winlibs-gcc13.2.0-posix-msvcrt-11.0.1/custombuilt64/include/LASi.h:284:16,
inlined from 'lasi_textspan' at R:/winlibs-gcc13.2.0-posix-msvcrt-11.0.1_64/graphviz-10.0.1/plugin/lasi/gvrender_lasi.cpp:412:110:
D:/Prog/winlibs-gcc13.2.0-posix-msvcrt-11.0.1/custombuilt64/include/LASi.h:302:25: warning: 'stretch' may be used uninitialized [-Wmaybe-uninitialized]
302 | os.doc().setFont(_family, _style,_weight, _variant, _stretch);
| ^
R:/winlibs-gcc13.2.0-posix-msvcrt-11.0.1_64/graphviz-10.0.1/plugin/lasi/gvrender_lasi.cpp: In function 'lasi_textspan':
R:/winlibs-gcc13.2.0-posix-msvcrt-11.0.1_64/graphviz-10.0.1/plugin/lasi/gvrender_lasi.cpp:329:17: note: 'stretch' was declared here
329 | FontStretch stretch;
| ^
In member function 'apply',
inlined from 'operator<<' at D:/Prog/winlibs-gcc13.2.0-posix-msvcrt-11.0.1/custombuilt64/include/LASi.h:284:16,
inlined from 'lasi_textspan' at R:/winlibs-gcc13.2.0-posix-msvcrt-11.0.1_64/graphviz-10.0.1/plugin/lasi/gvrender_lasi.cpp:412:110:
D:/Prog/winlibs-gcc13.2.0-posix-msvcrt-11.0.1/custombuilt64/include/LASi.h:302:25: warning: 'style' may be used uninitialized [-Wmaybe-uninitialized]
302 | os.doc().setFont(_family, _style,_weight, _variant, _stretch);
| ^
R:/winlibs-gcc13.2.0-posix-msvcrt-11.0.1_64/graphviz-10.0.1/plugin/lasi/gvrender_lasi.cpp: In function 'lasi_textspan':
R:/winlibs-gcc13.2.0-posix-msvcrt-11.0.1_64/graphviz-10.0.1/plugin/lasi/gvrender_lasi.cpp:330:15: note: 'style' was declared here
330 | FontStyle style;
| ^
In member function 'apply',
inlined from 'operator<<' at D:/Prog/winlibs-gcc13.2.0-posix-msvcrt-11.0.1/custombuilt64/include/LASi.h:284:16,
inlined from 'lasi_textspan' at R:/winlibs-gcc13.2.0-posix-msvcrt-11.0.1_64/graphviz-10.0.1/plugin/lasi/gvrender_lasi.cpp:412:110:
D:/Prog/winlibs-gcc13.2.0-posix-msvcrt-11.0.1/custombuilt64/include/LASi.h:302:25: warning: 'variant' may be used uninitialized [-Wmaybe-uninitialized]
302 | os.doc().setFont(_family, _style,_weight, _variant, _stretch);
| ^
R:/winlibs-gcc13.2.0-posix-msvcrt-11.0.1_64/graphviz-10.0.1/plugin/lasi/gvrender_lasi.cpp: In function 'lasi_textspan':
R:/winlibs-gcc13.2.0-posix-msvcrt-11.0.1_64/graphviz-10.0.1/plugin/lasi/gvrender_lasi.cpp:331:17: note: 'variant' was declared here
331 | FontVariant variant;
| ^
In member function 'apply',
inlined from 'operator<<' at D:/Prog/winlibs-gcc13.2.0-posix-msvcrt-11.0.1/custombuilt64/include/LASi.h:284:16,
inlined from 'lasi_textspan' at R:/winlibs-gcc13.2.0-posix-msvcrt-11.0.1_64/graphviz-10.0.1/plugin/lasi/gvrender_lasi.cpp:412:110:
D:/Prog/winlibs-gcc13.2.0-posix-msvcrt-11.0.1/custombuilt64/include/LASi.h:302:25: warning: 'weight' may be used uninitialized [-Wmaybe-uninitialized]
302 | os.doc().setFont(_family, _style,_weight, _variant, _stretch);
| ^
R:/winlibs-gcc13.2.0-posix-msvcrt-11.0.1_64/graphviz-10.0.1/plugin/lasi/gvrender_lasi.cpp: In function 'lasi_textspan':
R:/winlibs-gcc13.2.0-posix-msvcrt-11.0.1_64/graphviz-10.0.1/plugin/lasi/gvrender_lasi.cpp:332:16: note: 'weight' was declared here
332 | FontWeight weight;
| ^
D:/Prog/winlibs-gcc13.2.0-posix-msvcrt-11.0.1/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: R:\winlibs-gcc13.2.0-posix-msvcrt-11.0.1_64\_TMP_\ccen50c8.ltrans0.ltrans.o:<artificial>:(.text+0x1a): undefined reference to `__imp_gvprintf'
D:/Prog/winlibs-gcc13.2.0-posix-msvcrt-11.0.1/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: R:\winlibs-gcc13.2.0-posix-msvcrt-11.0.1_64\_TMP_\ccen50c8.ltrans0.ltrans.o:<artificial>:(.text+0x2f): undefined reference to `__imp_gvprintf'
D:/Prog/winlibs-gcc13.2.0-posix-msvcrt-11.0.1/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: R:\winlibs-gcc13.2.0-posix-msvcrt-11.0.1_64\_TMP_\ccen50c8.ltrans0.ltrans.o:<artificial>:(.text+0x24a): undefined reference to `__imp_gvusershape_file_access'
D:/Prog/winlibs-gcc13.2.0-posix-msvcrt-11.0.1/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: R:\winlibs-gcc13.2.0-posix-msvcrt-11.0.1_64\_TMP_\ccen50c8.ltrans0.ltrans.o:<artificial>:(.text+0x28f): undefined reference to `__imp_gvusershape_file_release'
D:/Prog/winlibs-gcc13.2.0-posix-msvcrt-11.0.1/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: R:\winlibs-gcc13.2.0-posix-msvcrt-11.0.1_64\_TMP_\ccen50c8.ltrans0.ltrans.o:<artificial>:(.text+0x2b8): undefined reference to `__imp_gvprintf'
D:/Prog/winlibs-gcc13.2.0-posix-msvcrt-11.0.1/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: R:\winlibs-gcc13.2.0-posix-msvcrt-11.0.1_64\_TMP_\ccen50c8.ltrans0.ltrans.o:<artificial>:(.text+0x2f2): undefined reference to `__imp_epsf_emit_body'
D:/Prog/winlibs-gcc13.2.0-posix-msvcrt-11.0.1/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: R:\winlibs-gcc13.2.0-posix-msvcrt-11.0.1_64\_TMP_\ccen50c8.ltrans0.ltrans.o:<artificial>:(.text+0x52b): undefined reference to `__imp_gvprintf'
D:/Prog/winlibs-gcc13.2.0-posix-msvcrt-11.0.1/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: R:\winlibs-gcc13.2.0-posix-msvcrt-11.0.1_64\_TMP_\ccen50c8.ltrans0.ltrans.o:<artificial>:(.text+0x54a): undefined reference to `__imp_gvputs'
D:/Prog/winlibs-gcc13.2.0-posix-msvcrt-11.0.1/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: R:\winlibs-gcc13.2.0-posix-msvcrt-11.0.1_64\_TMP_\ccen50c8.ltrans0.ltrans.o:<artificial>:(.text+0x55a): undefined reference to `__imp_gvputs'
D:/Prog/winlibs-gcc13.2.0-posix-msvcrt-11.0.1/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: R:\winlibs-gcc13.2.0-posix-msvcrt-11.0.1_64\_TMP_\ccen50c8.ltrans0.ltrans.o:<artificial>:(.text+0x56a): undefined reference to `__imp_gvputs'
D:/Prog/winlibs-gcc13.2.0-posix-msvcrt-11.0.1/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: R:\winlibs-gcc13.2.0-posix-msvcrt-11.0.1_64\_TMP_\ccen50c8.ltrans0.ltrans.o:<artificial>:(.text+0x57a): undefined reference to `__imp_gvputs'
D:/Prog/winlibs-gcc13.2.0-posix-msvcrt-11.0.1/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: R:\winlibs-gcc13.2.0-posix-msvcrt-11.0.1_64\_TMP_\ccen50c8.ltrans0.ltrans.o:<artificial>:(.text+0x58a): undefined reference to `__imp_gvputs'
D:/Prog/winlibs-gcc13.2.0-posix-msvcrt-11.0.1/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: R:\winlibs-gcc13.2.0-posix-msvcrt-11.0.1_64\_TMP_\ccen50c8.ltrans0.ltrans.o:<artificial>:(.text+0x59a): more undefined references to `__imp_gvputs' follow
D:/Prog/winlibs-gcc13.2.0-posix-msvcrt-11.0.1/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: R:\winlibs-gcc13.2.0-posix-msvcrt-11.0.1_64\_TMP_\ccen50c8.ltrans0.ltrans.o:<artificial>:(.text+0x607): undefined reference to `__imp_cat_libfile'
D:/Prog/winlibs-gcc13.2.0-posix-msvcrt-11.0.1/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: R:\winlibs-gcc13.2.0-posix-msvcrt-11.0.1_64\_TMP_\ccen50c8.ltrans0.ltrans.o:<artificial>:(.text+0x63e): undefined reference to `__imp_gvprintf'
D:/Prog/winlibs-gcc13.2.0-posix-msvcrt-11.0.1/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: R:\winlibs-gcc13.2.0-posix-msvcrt-11.0.1_64\_TMP_\ccen50c8.ltrans0.ltrans.o:<artificial>:(.text+0x68b): undefined reference to `__imp_ps_string'
D:/Prog/winlibs-gcc13.2.0-posix-msvcrt-11.0.1/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: R:\winlibs-gcc13.2.0-posix-msvcrt-11.0.1_64\_TMP_\ccen50c8.ltrans0.ltrans.o:<artificial>:(.text+0x6a7): undefined reference to `__imp_gvprintf'
D:/Prog/winlibs-gcc13.2.0-posix-msvcrt-11.0.1/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: R:\winlibs-gcc13.2.0-posix-msvcrt-11.0.1_64\_TMP_\ccen50c8.ltrans0.ltrans.o:<artificial>:(.text+0x6c6): undefined reference to `__imp_agnameof'
D:/Prog/winlibs-gcc13.2.0-posix-msvcrt-11.0.1/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: R:\winlibs-gcc13.2.0-posix-msvcrt-11.0.1_64\_TMP_\ccen50c8.ltrans0.ltrans.o:<artificial>:(.text+0x6cd): undefined reference to `__imp_gvprintf'
D:/Prog/winlibs-gcc13.2.0-posix-msvcrt-11.0.1/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: R:\winlibs-gcc13.2.0-posix-msvcrt-11.0.1_64\_TMP_\ccen50c8.ltrans0.ltrans.o:<artificial>:(.text+0x6ed): undefined reference to `__imp_gvputs'
D:/Prog/winlibs-gcc13.2.0-posix-msvcrt-11.0.1/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: R:\winlibs-gcc13.2.0-posix-msvcrt-11.0.1_64\_TMP_\ccen50c8.ltrans0.ltrans.o:<artificial>:(.text+0x729): undefined reference to `__imp_cat_libfile'
D:/Prog/winlibs-gcc13.2.0-posix-msvcrt-11.0.1/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: R:\winlibs-gcc13.2.0-posix-msvcrt-11.0.1_64\_TMP_\ccen50c8.ltrans0.ltrans.o:<artificial>:(.text+0x738): undefined reference to `__imp_epsf_define'
D:/Prog/winlibs-gcc13.2.0-posix-msvcrt-11.0.1/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: R:\winlibs-gcc13.2.0-posix-msvcrt-11.0.1_64\_TMP_\ccen50c8.ltrans0.ltrans.o:<artificial>:(.text+0x773): undefined reference to `__imp_gvputs'
D:/Prog/winlibs-gcc13.2.0-posix-msvcrt-11.0.1/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: R:\winlibs-gcc13.2.0-posix-msvcrt-11.0.1_64\_TMP_\ccen50c8.ltrans0.ltrans.o:<artificial>:(.text+0x802): undefined reference to `__imp_agnameof'
D:/Prog/winlibs-gcc13.2.0-posix-msvcrt-11.0.1/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: R:\winlibs-gcc13.2.0-posix-msvcrt-11.0.1_64\_TMP_\ccen50c8.ltrans0.ltrans.o:<artificial>:(.text+0x815): undefined reference to `__imp_gvprintf'
D:/Prog/winlibs-gcc13.2.0-posix-msvcrt-11.0.1/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: R:\winlibs-gcc13.2.0-posix-msvcrt-11.0.1_64\_TMP_\ccen50c8.ltrans0.ltrans.o:<artificial>:(.text+0x82b): undefined reference to `__imp_gvputs'
D:/Prog/winlibs-gcc13.2.0-posix-msvcrt-11.0.1/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: R:\winlibs-gcc13.2.0-posix-msvcrt-11.0.1_64\_TMP_\ccen50c8.ltrans0.ltrans.o:<artificial>:(.text+0x854): undefined reference to `__imp_gvputs'
D:/Prog/winlibs-gcc13.2.0-posix-msvcrt-11.0.1/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: R:\winlibs-gcc13.2.0-posix-msvcrt-11.0.1_64\_TMP_\ccen50c8.ltrans0.ltrans.o:<artificial>:(.text+0x873): undefined reference to `__imp_gvprintpointflist'
D:/Prog/winlibs-gcc13.2.0-posix-msvcrt-11.0.1/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: R:\winlibs-gcc13.2.0-posix-msvcrt-11.0.1_64\_TMP_\ccen50c8.ltrans0.ltrans.o:<artificial>:(.text+0x88a): undefined reference to `__imp_ps_string'
D:/Prog/winlibs-gcc13.2.0-posix-msvcrt-11.0.1/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: R:\winlibs-gcc13.2.0-posix-msvcrt-11.0.1_64\_TMP_\ccen50c8.ltrans0.ltrans.o:<artificial>:(.text+0x8a6): undefined reference to `__imp_gvprintf'
D:/Prog/winlibs-gcc13.2.0-posix-msvcrt-11.0.1/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: R:\winlibs-gcc13.2.0-posix-msvcrt-11.0.1_64\_TMP_\ccen50c8.ltrans0.ltrans.o:<artificial>:(.text+0x8e8): undefined reference to `__imp_gvprintdouble'
D:/Prog/winlibs-gcc13.2.0-posix-msvcrt-11.0.1/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: R:\winlibs-gcc13.2.0-posix-msvcrt-11.0.1_64\_TMP_\ccen50c8.ltrans0.ltrans.o:<artificial>:(.text+0x8f8): undefined reference to `__imp_gvputs'
D:/Prog/winlibs-gcc13.2.0-posix-msvcrt-11.0.1/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: R:\winlibs-gcc13.2.0-posix-msvcrt-11.0.1_64\_TMP_\ccen50c8.ltrans0.ltrans.o:<artificial>:(.text+0x90d): undefined reference to `__imp_gvprintf'
D:/Prog/winlibs-gcc13.2.0-posix-msvcrt-11.0.1/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: R:\winlibs-gcc13.2.0-posix-msvcrt-11.0.1_64\_TMP_\ccen50c8.ltrans0.ltrans.o:<artificial>:(.text+0x970): undefined reference to `__imp_gvprintf'
D:/Prog/winlibs-gcc13.2.0-posix-msvcrt-11.0.1/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: R:\winlibs-gcc13.2.0-posix-msvcrt-11.0.1_64\_TMP_\ccen50c8.ltrans0.ltrans.o:<artificial>:(.text+0xaa6): undefined reference to `__imp_gvprintf'
D:/Prog/winlibs-gcc13.2.0-posix-msvcrt-11.0.1/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: R:\winlibs-gcc13.2.0-posix-msvcrt-11.0.1_64\_TMP_\ccen50c8.ltrans0.ltrans.o:<artificial>:(.text+0xaba): undefined reference to `__imp_gvprintpointflist'
D:/Prog/winlibs-gcc13.2.0-posix-msvcrt-11.0.1/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: R:\winlibs-gcc13.2.0-posix-msvcrt-11.0.1_64\_TMP_\ccen50c8.ltrans0.ltrans.o:<artificial>:(.text+0xaca): undefined reference to `__imp_gvputs'
D:/Prog/winlibs-gcc13.2.0-posix-msvcrt-11.0.1/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: R:\winlibs-gcc13.2.0-posix-msvcrt-11.0.1_64\_TMP_\ccen50c8.ltrans0.ltrans.o:<artificial>:(.text+0xb3b): undefined reference to `__imp_gvprintf'
D:/Prog/winlibs-gcc13.2.0-posix-msvcrt-11.0.1/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: R:\winlibs-gcc13.2.0-posix-msvcrt-11.0.1_64\_TMP_\ccen50c8.ltrans0.ltrans.o:<artificial>:(.text+0xb4f): undefined reference to `__imp_gvprintpointflist'
D:/Prog/winlibs-gcc13.2.0-posix-msvcrt-11.0.1/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: R:\winlibs-gcc13.2.0-posix-msvcrt-11.0.1_64\_TMP_\ccen50c8.ltrans0.ltrans.o:<artificial>:(.text+0xb5f): undefined reference to `__imp_gvputs'
D:/Prog/winlibs-gcc13.2.0-posix-msvcrt-11.0.1/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: R:\winlibs-gcc13.2.0-posix-msvcrt-11.0.1_64\_TMP_\ccen50c8.ltrans0.ltrans.o:<artificial>:(.text+0xc46): undefined reference to `__imp_gvprintf'
D:/Prog/winlibs-gcc13.2.0-posix-msvcrt-11.0.1/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: R:\winlibs-gcc13.2.0-posix-msvcrt-11.0.1_64\_TMP_\ccen50c8.ltrans0.ltrans.o:<artificial>:(.text+0xc57): undefined reference to `__imp_gvputs'
D:/Prog/winlibs-gcc13.2.0-posix-msvcrt-11.0.1/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: R:\winlibs-gcc13.2.0-posix-msvcrt-11.0.1_64\_TMP_\ccen50c8.ltrans0.ltrans.o:<artificial>:(.text+0xc71): undefined reference to `__imp_gvprintpointf'
D:/Prog/winlibs-gcc13.2.0-posix-msvcrt-11.0.1/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: R:\winlibs-gcc13.2.0-posix-msvcrt-11.0.1_64\_TMP_\ccen50c8.ltrans0.ltrans.o:<artificial>:(.text+0xc8b): undefined reference to `__imp_gvprintpointflist'
D:/Prog/winlibs-gcc13.2.0-posix-msvcrt-11.0.1/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: R:\winlibs-gcc13.2.0-posix-msvcrt-11.0.1_64\_TMP_\ccen50c8.ltrans0.ltrans.o:<artificial>:(.text+0xd4b): undefined reference to `__imp_gvprintf'
D:/Prog/winlibs-gcc13.2.0-posix-msvcrt-11.0.1/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: R:\winlibs-gcc13.2.0-posix-msvcrt-11.0.1_64\_TMP_\ccen50c8.ltrans0.ltrans.o:<artificial>:(.text+0xd5c): undefined reference to `__imp_gvputs'
D:/Prog/winlibs-gcc13.2.0-posix-msvcrt-11.0.1/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: R:\winlibs-gcc13.2.0-posix-msvcrt-11.0.1_64\_TMP_\ccen50c8.ltrans0.ltrans.o:<artificial>:(.text+0xd76): undefined reference to `__imp_gvprintpointf'
D:/Prog/winlibs-gcc13.2.0-posix-msvcrt-11.0.1/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: R:\winlibs-gcc13.2.0-posix-msvcrt-11.0.1_64\_TMP_\ccen50c8.ltrans0.ltrans.o:<artificial>:(.text+0xd90): undefined reference to `__imp_gvprintpointflist'
D:/Prog/winlibs-gcc13.2.0-posix-msvcrt-11.0.1/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: R:\winlibs-gcc13.2.0-posix-msvcrt-11.0.1_64\_TMP_\ccen50c8.ltrans0.ltrans.o:<artificial>:(.text+0xedc): undefined reference to `__imp_gvprintf'
D:/Prog/winlibs-gcc13.2.0-posix-msvcrt-11.0.1/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: R:\winlibs-gcc13.2.0-posix-msvcrt-11.0.1_64\_TMP_\ccen50c8.ltrans0.ltrans.o:<artificial>:(.text+0xee3): undefined reference to `__imp_gvputs'
D:/Prog/winlibs-gcc13.2.0-posix-msvcrt-11.0.1/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: R:\winlibs-gcc13.2.0-posix-msvcrt-11.0.1_64\_TMP_\ccen50c8.ltrans0.ltrans.o:<artificial>:(.text+0xf01): undefined reference to `__imp_gvprintpointf'
D:/Prog/winlibs-gcc13.2.0-posix-msvcrt-11.0.1/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: R:\winlibs-gcc13.2.0-posix-msvcrt-11.0.1_64\_TMP_\ccen50c8.ltrans0.ltrans.o:<artificial>:(.text+0xfdd): undefined reference to `__imp_gvprintf'
D:/Prog/winlibs-gcc13.2.0-posix-msvcrt-11.0.1/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: R:\winlibs-gcc13.2.0-posix-msvcrt-11.0.1_64\_TMP_\ccen50c8.ltrans0.ltrans.o:<artificial>:(.text+0xfe4): undefined reference to `__imp_gvputs'
D:/Prog/winlibs-gcc13.2.0-posix-msvcrt-11.0.1/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: R:\winlibs-gcc13.2.0-posix-msvcrt-11.0.1_64\_TMP_\ccen50c8.ltrans0.ltrans.o:<artificial>:(.text+0x1001): undefined reference to `__imp_gvprintpointf'
D:/Prog/winlibs-gcc13.2.0-posix-msvcrt-11.0.1/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: R:\winlibs-gcc13.2.0-posix-msvcrt-11.0.1_64\_TMP_\ccen50c8.ltrans0.ltrans.o:<artificial>:(.text+0x1128): undefined reference to `__imp_gvprintf'
D:/Prog/winlibs-gcc13.2.0-posix-msvcrt-11.0.1/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: R:\winlibs-gcc13.2.0-posix-msvcrt-11.0.1_64\_TMP_\ccen50c8.ltrans0.ltrans.o:<artificial>:(.text+0x1139): undefined reference to `__imp_gvputs'
D:/Prog/winlibs-gcc13.2.0-posix-msvcrt-11.0.1/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: R:\winlibs-gcc13.2.0-posix-msvcrt-11.0.1_64\_TMP_\ccen50c8.ltrans0.ltrans.o:<artificial>:(.text+0x114d): undefined reference to `__imp_gvprintpointf'
D:/Prog/winlibs-gcc13.2.0-posix-msvcrt-11.0.1/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: R:\winlibs-gcc13.2.0-posix-msvcrt-11.0.1_64\_TMP_\ccen50c8.ltrans0.ltrans.o:<artificial>:(.text+0x1290): undefined reference to `__imp_gvprintf'
D:/Prog/winlibs-gcc13.2.0-posix-msvcrt-11.0.1/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: R:\winlibs-gcc13.2.0-posix-msvcrt-11.0.1_64\_TMP_\ccen50c8.ltrans0.ltrans.o:<artificial>:(.text+0x12b1): undefined reference to `__imp_gvputs'
D:/Prog/winlibs-gcc13.2.0-posix-msvcrt-11.0.1/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: R:\winlibs-gcc13.2.0-posix-msvcrt-11.0.1_64\_TMP_\ccen50c8.ltrans0.ltrans.o:<artificial>:(.text+0x12cd): undefined reference to `__imp_gvprintpointflist'
D:/Prog/winlibs-gcc13.2.0-posix-msvcrt-11.0.1/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: R:\winlibs-gcc13.2.0-posix-msvcrt-11.0.1_64\_TMP_\ccen50c8.ltrans0.ltrans.o:<artificial>:(.text+0x12f1): undefined reference to `__imp_gvprintpointf'
D:/Prog/winlibs-gcc13.2.0-posix-msvcrt-11.0.1/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: R:\winlibs-gcc13.2.0-posix-msvcrt-11.0.1_64\_TMP_\ccen50c8.ltrans0.ltrans.o:<artificial>:(.text+0x1365): undefined reference to `__imp_gvprintf'
D:/Prog/winlibs-gcc13.2.0-posix-msvcrt-11.0.1/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: R:\winlibs-gcc13.2.0-posix-msvcrt-11.0.1_64\_TMP_\ccen50c8.ltrans0.ltrans.o:<artificial>:(.text+0x1386): undefined reference to `__imp_gvputs'
D:/Prog/winlibs-gcc13.2.0-posix-msvcrt-11.0.1/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: R:\winlibs-gcc13.2.0-posix-msvcrt-11.0.1_64\_TMP_\ccen50c8.ltrans0.ltrans.o:<artificial>:(.text+0x13a2): undefined reference to `__imp_gvprintpointflist'
D:/Prog/winlibs-gcc13.2.0-posix-msvcrt-11.0.1/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: R:\winlibs-gcc13.2.0-posix-msvcrt-11.0.1_64\_TMP_\ccen50c8.ltrans0.ltrans.o:<artificial>:(.text+0x13c6): undefined reference to `__imp_gvprintpointf'
D:/Prog/winlibs-gcc13.2.0-posix-msvcrt-11.0.1/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: R:\winlibs-gcc13.2.0-posix-msvcrt-11.0.1_64\_TMP_\ccen50c8.ltrans0.ltrans.o:<artificial>:(.text+0x15c6): undefined reference to `__imp_gvprintf'
D:/Prog/winlibs-gcc13.2.0-posix-msvcrt-11.0.1/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: R:\winlibs-gcc13.2.0-posix-msvcrt-11.0.1_64\_TMP_\ccen50c8.ltrans0.ltrans.o:<artificial>:(.text+0x166d): undefined reference to `__imp_gvprintpointf'
D:/Prog/winlibs-gcc13.2.0-posix-msvcrt-11.0.1/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: R:\winlibs-gcc13.2.0-posix-msvcrt-11.0.1_64\_TMP_\ccen50c8.ltrans0.ltrans.o:<artificial>:(.text+0x1682): undefined reference to `__imp_gvputs'
D:/Prog/winlibs-gcc13.2.0-posix-msvcrt-11.0.1/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: R:\winlibs-gcc13.2.0-posix-msvcrt-11.0.1_64\_TMP_\ccen50c8.ltrans0.ltrans.o:<artificial>:(.text+0x1902): undefined reference to `__imp_gvputs'
D:/Prog/winlibs-gcc13.2.0-posix-msvcrt-11.0.1/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: R:\winlibs-gcc13.2.0-posix-msvcrt-11.0.1_64\_TMP_\ccen50c8.ltrans0.ltrans.o:<artificial>:(.text+0x1be7): undefined reference to `__imp_gvprintf'
collect2.exe: error: ld returned 1 exit status
ninja: build stopped: subcommand failed.
```
My complete build recipe can be found at: https://github.com/brechtsanders/winlibs_recipes/blob/main/recipes/graphviz.winlib
## Expected Behaviour
Version 9.0.0 builds worked fine.
## Actual Behaviour
`undefined reference to '__imp_gv*'`
## OS Version
Windows 11 + MSYS2 + MinGW-w64 (GCC 13.2.0) from https://winlibs.com/
## Graphviz Version
10.0.1