Opened 4 years ago

Last modified 4 years ago

#62277 assigned defect

py-attrs @20.3.0: Circular dependency — at Version 5

Reported by: Dave-Allured (Dave Allured) Owned by: kurthindenburg (Kurt Hindenburg)
Priority: Normal Milestone:
Component: ports Version: 2.6.4
Keywords: Cc:
Port: py-attrs py38-attrs py39-attrs

Description (last modified by Dave-Allured (Dave Allured))

New summary:

py-attrs --> py-hypothesis --> py-attrs
Via test dependency py-attrs --> py-hypothesis
Causes infinite loop in port rdeps --full py-attrs

Old summary:

Here is a fun little puzzle for a cold Friday night. I can't tell if this is a base bug or a port bug. Current base 2.6.4, fresh build, fresh selfupdate, no ports installed. This makes an infinite loop with console spewage:

port rdeps --full py38-attrs

py38-attrs @20.3.0_0
py38-hypothesis @5.48.0_0
macOS 10.14.5 18F132
Xcode 10.2.1 10E1001

There is a circular dependency py38-attrs --> py38-hypothesis --> py38-attrs. However, I am confused because py38-hypothesis is only a test dependency of py38-attrs, not a build or library dependency. This does not loop unless --full is included.

So which one is this?

  • Test dependency does not matter. It is still a circular dependency, and one of the ports has a bug.
  • Test dependency is allowed to be circular. It is a bug in port rdeps.
  • Don't care because nobody should ever run port rdeps --full.

Your thoughts?

Change History (5)

comment:1 Changed 4 years ago by mf2k (Frank Schima)

Cc: kurthindenburg removed
Owner: set to kurthindenburg
Port: py-attrs py-hypothesis added; py38-attrs py38-hypothesis removed
Status: newassigned

comment:2 Changed 4 years ago by kurthindenburg (Kurt Hindenburg)

I'd have to look at the source code to see what --full really does. I'm aware of dependencies but as one is only test I've never notice any issues.

To display the full dependency tree instead of only showing each port once, use --full

comment:3 Changed 4 years ago by Dave-Allured (Dave Allured)

I decided that the correct answer is that there are actually two bugs, a base bug and a port bug. Let's assign this ticket as the port bug. Here is a more obvious way to display the circular dependency.

> port rdeps py39-attrs | grep attrs
The following ports are dependencies of py39-attrs @20.3.0_0:
    py39-attrs

This glosses over the fact that one of the dependencies is only a test dependency. This should not matter. In Macports, all circular dependencies must be regarded as invalid, regardless of which phase they might belong to. I have not found any documentation to indicate otherwise.

See https://trac.macports.org/ticket/59289 for discussion of improving the base to detect circular dependencies.

comment:4 Changed 4 years ago by Dave-Allured (Dave Allured)

Component: baseports
Priority: LowNormal

comment:5 Changed 4 years ago by Dave-Allured (Dave Allured)

Description: modified (diff)
Port: py38-attrs py39-attrs added; py-hypothesis removed
Summary: Port rdeps --full, circular dependencypy-attrs @20.3.0: Circular dependency

Including subports in port list, to make this ticket visible on subport status pages on ports.macports.org.

Note: See TracTickets for help on using tickets.