Opened 4 years ago
Last modified 3 years ago
#62277 assigned defect
py-attrs @20.3.0: Circular dependency
Reported by: | Dave-Allured (Dave Allured) | Owned by: | kurthindenburg (Kurt Hindenburg) |
---|---|---|---|
Priority: | Normal | Milestone: | |
Component: | ports | Version: | 2.6.4 |
Keywords: | Cc: | cooljeanius (Eric Gallager) | |
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 (7)
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: | new → assigned |
comment:2 Changed 4 years ago by kurthindenburg (Kurt Hindenburg)
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: | base → ports |
---|---|
Priority: | Low → Normal |
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 dependency → py-attrs @20.3.0: Circular dependency |
Including subports in port list, to make this ticket visible on subport status pages on ports.macports.org.
comment:6 Changed 4 years ago by Dave-Allured (Dave Allured)
comment:7 Changed 3 years ago by cooljeanius (Eric Gallager)
Cc: | cooljeanius added |
---|
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