Opened 6 years ago

Last modified 17 months ago

#55393 assigned defect

graphviz +rsvg depends on graphviz; circular dependency; prevents installation

Reported by: rhstanton Owned by: ryandesign (Ryan Carsten Schmidt)
Priority: Normal Milestone:
Component: ports Version:
Keywords: Cc: blair (Blair Zajac), wyuenho (Jimmy Yuen Ho Wong), Dave-Allured (Dave Allured), AndyWharton, nneonneo (Robert Xiao), cooljeanius (Eric Gallager), ballapete (Peter "Pete" Dyballa)
Port: graphviz

Description (last modified by ryandesign (Ryan Carsten Schmidt))

On a fresh installation of MacPorts under OS X High Sierra, installation fails if I try the +rsvg variant of graphviz. Note that it seems to think it requires itself as a dependency, which seems odd:

$ sudo port install graphviz +rsvg
--->  Computing dependencies for graphviz
The following dependencies will be installed: 
 graphviz
 librsvg
 vala
Continue? [Y/n]: y
Error: Follow https://guide.macports.org/#project.tickets to report a bug.
Error: Processing of port graphviz failed

Change History (12)

comment:1 in reply to:  description Changed 6 years ago by ryandesign (Ryan Carsten Schmidt)

Description: modified (diff)
Keywords: graphviz rsvg removed
Owner: set to ryandesign
Status: newassigned

Replying to rhstanton:

Note that it seems to think it requires itself as a dependency, which seems odd:

You're right. librsvg depends on vala, which depends on graphviz. So that won't work. If you want to install graphviz with the +rsvg variant, I guess you'll have to install it once without the +rsvg variant first, to satisfy vala's need.

comment:2 Changed 6 years ago by ryandesign (Ryan Carsten Schmidt)

Summary: Installation failure: graphviz + rsvggraphviz +rsvg depends on graphviz; circular dependency; prevents installation

comment:3 Changed 6 years ago by blair (Blair Zajac)

Cc: blair added

comment:4 Changed 6 years ago by ryandesign (Ryan Carsten Schmidt)

Cc: wyuenho added

Has duplicate #56687.

comment:5 Changed 6 years ago by wyuenho (Jimmy Yuen Ho Wong)

From MacPort's perspective, before installation, can't it check for cycles first, and if there's one detected, break the cycles into DAGs, and then process the DAGS successively?

comment:6 Changed 6 years ago by ryandesign (Ryan Carsten Schmidt)

I have absolutely no idea. All I can tell you is that MacPorts behavior is undefined when a circular dependency exists. Please bring up the topic on the macports-dev mailing list if you have a suggestion about how we can better handle circular dependencies. Bear in mind that we have a rewritten MacPorts dependency engine based on libsolv implemented a couple years ago during GSoC which has not yet been merged to master; that might already change the situation.

comment:7 Changed 6 years ago by Dave-Allured (Dave Allured)

Cc: Dave-Allured added

comment:8 Changed 5 years ago by ryandesign (Ryan Carsten Schmidt)

Cc: AndyWharton added

Has duplicate #58102.

comment:9 Changed 3 years ago by ryandesign (Ryan Carsten Schmidt)

Cc: nneonneo added

Has duplicate #63103.

comment:10 Changed 3 years ago by cooljeanius (Eric Gallager)

Cc: cooljeanius added

comment:11 Changed 17 months ago by ballapete (Peter "Pete" Dyballa)

Cc: ballapete added

comment:12 in reply to:  6 Changed 17 months ago by ballapete (Peter "Pete" Dyballa)

Replying to ryandesign:

I have absolutely no idea. All I can tell you is that MacPorts behavior is undefined when a circular dependency exists.

In my case, #66461, it would work when port would understand that graphviz and graphviz-devel are equivalent and when there is a need to install either this or that, then install what the user wants – otherwise port would not have been invoked and could continue to sleep. If the user does not request a particular (set of) variant(s) install the default one.

Note: See TracTickets for help on using tickets.