Can’t change the build system of p11-kit to meson

  • Open
  • quality assurance status badge
Details
2 participants
  • Csepp
  • Vivien Kraus
Owner
unassigned
Submitted by
Vivien Kraus
Severity
normal
V
V
Vivien Kraus wrote on 14 Jan 2023 09:26
(name . bug-guix)(address . bug-guix@gnu.org)
da60911f63658e4f550278cdde4fcacc5103fcbf.camel@planete-kraus.eu
Dear guix,

p11-kit is switching its build system to meson. The README already
advertises it as the way to build p11-kit. When I try to change that,
guix builds fine. Then, if I try to run guix build p11-kit, guix will
crash after exhausting all my memory. I suspect a circular dependency
of some sort, but I don’t know how to debug it.

If I try and run:
$ ./pre-inst-env guix graph --type=bag p11-kit

Then I get as an output,

digraph "Guix bag" {

And then guix starts eating my memory indefinitely until I cancel it.

How can I debug this?

Best regards,

Vivien
C
(name . Vivien Kraus)(address . vivien@planete-kraus.eu)
86h6wszxep.fsf@riseup.net
Vivien Kraus via Bug reports for GNU Guix <bug-guix@gnu.org> writes:

Toggle quote (23 lines)
> Dear guix,
>
> p11-kit is switching its build system to meson. The README already
> advertises it as the way to build p11-kit. When I try to change that,
> guix builds fine. Then, if I try to run guix build p11-kit, guix will
> crash after exhausting all my memory. I suspect a circular dependency
> of some sort, but I don’t know how to debug it.
>
> If I try and run:
> $ ./pre-inst-env guix graph --type=bag p11-kit
>
> Then I get as an output,
>
> digraph "Guix bag" {
>
> And then guix starts eating my memory indefinitely until I cancel it.
>
> How can I debug this?
>
> Best regards,
>
> Vivien

The way I debugged a cycle was:
* use package graph type
* import graph into Python's networkx using pydot
* run networkx's cycle detection

Here is the script so you don't have to figure it out yourself:

```
#!/usr/bin/env python
# coding: utf-8
import networkx
import sys
G = networkx.drawing.nx_pydot.read_dot(sys.stdin)
Va = networkx.function.get_node_attributes(G, "label")
print(*[Va[e[0]] for e in networkx.find_cycle(G)])
```
V
V
Vivien Kraus wrote on 14 Jan 2023 23:03
(name . Csepp)(address . raingloom@riseup.net)
7e14ed490c6f7a4e8f34aa7c7163835a7c433de6.camel@planete-kraus.eu
Hello!

Le samedi 14 janvier 2023 à 21:10 +0100, Csepp a écrit :
Toggle quote (5 lines)
> The way I debugged a cycle was:
> * use package graph type
> * import graph into Python's networkx using pydot
> * run networkx's cycle detection

If I select the "package" graph type, guix graph completes:

$ ./pre-inst-env guix graph --type=package p11-kit
digraph "Guix package" {
"140299993452720" [label = "p11-kit@0.23.22", shape = box, fontname =
sans];
"140299993452720" -> "140299993453072" [color = magenta];
"140299993452720" -> "140300286436736" [color = magenta];
"140299993452720" -> "140299980957936" [color = magenta];
"140299993452720" -> "140299993453072" [color = magenta];
"140299993453072" [label = "libtasn1@4.17.0", shape = box, fontname =
sans];
"140299993453072" -> "140299983720224" [color = blue];
"140299983720224" [label = "perl@5.34.0", shape = box, fontname =
sans];
"140299983720224" -> "140299983567616" [color = red];
"140299983567616" [label = "coreutils-minimal@8.32", shape = box,
fontname = sans];
"140300286436736" [label = "pkg-config@0.29.2", shape = box, fontname
= sans];
"140299980957936" [label = "libffi@3.3", shape = box, fontname =
sans];

}

Thank you for your python script! Unfortunately, it does not detect any
cycles here.

Vivien
?