Opened 2 months ago

Last modified 2 months ago

#73104 new defect

xxhashlib, mpdecimal: dependency cycle

Reported by: ryandesign (Ryan Carsten Schmidt) Owned by:
Priority: Normal Milestone:
Component: ports Version: 2.11.5
Keywords: mavericks Cc: Schamschula (Marius Schamschula), cjones051073 (Chris Jones)
Port: xxhashlib, mpdecimal

Description

$ port outdated
The following installed ports are outdated:
xxhashlib                      0.8.2_3 < 0.8.3_3         
$ sudo port upgrade outdated
--->  Computing dependencies for mpdecimal
The following dependencies will be installed: 
 clang-11 +analyzer+emulated_tls
 clang-14 +analyzer
 clang-16 +analyzer
 clang-9.0 +analyzer+emulated_tls
 libomp +universal
 llvm-11 +emulated_tls
 llvm-14 
 llvm-16 
 mpdecimal 
 python313 +lto
Continue? [Y/n]: y
Error: The following dependencies were not installed because all of them have unmet dependencies (likely due to a dependency cycle): clang-16 clang-14 libomp llvm-16 clang-11 llvm-14 clang-9.0 llvm-11 python313 mpdecimal
Error: Problem while installing mpdecimal
Error: Follow https://guide.macports.org/#project.tickets if you believe there is a bug.

Change History (6)

comment:1 Changed 2 months ago by Schamschula (Marius Schamschula)

mpdecimal has zero dependencies. It is built using the Apple clang compiler.

comment:2 Changed 2 months ago by jmroot (Joshua Root)

The debug output should include the requires for each port.

comment:3 Changed 2 months ago by ryandesign (Ryan Carsten Schmidt)

mpdecimal specifies compiler.thread_local_storage yes so it will have a dependency on a MacPorts compiler on older systems.

comment:4 Changed 2 months ago by Schamschula (Marius Schamschula)

So what do I do about that?

As I have mentioned any number of times in the past, I don't have access to these older MacOS X/macOS versions to locally test solutions.

comment:5 in reply to:  4 Changed 2 months ago by ryandesign (Ryan Carsten Schmidt)

Cc: cjones051073 added
Port: mpdecimal added
Summary: xxhashlib: dependency cyclexxhashlib, mpdecimal: dependency cycle

Replying to Schamschula:

So what do I do about that?

I'm not sure yet…

python313 depends on mpdecimal, but mpdecimal used to be bundled with python and python311 and earlier never said they required thread-local storage. Maybe python used to bundle an older mpdecimal that didn't require TLS. Chris, do you know? (You added the TLS requirement to the mpdecimal port.) In fact python312 also has a TLS requirement.

We add the clang_dependency 1.0 portgroup to other ports that are dependencies of newer clangs, to force them to use an older clang, but I don't know if that will work with TLS: Do our clangs < 5 support TLS? None of the ports currently using the clang_dependency portgroup specify a TLS requirement.

comment:6 Changed 2 months ago by jmroot (Joshua Root)

A dependency on a clang port on some platforms can't be avoided for python 3.11 and later simply because they require C11. But those python ports should avoid using the newer clangs that depend on them. Maybe libomp is the problem here?

Note: See TracTickets for help on using tickets.