[MacPorts] #67637: upgrade: newly installed dependencies inherit variants from the dependent port
MacPorts
noreply at macports.org
Thu Jun 22 03:27:12 UTC 2023
#67637: upgrade: newly installed dependencies inherit variants from the dependent
port
------------------------+--------------------
Reporter: fhgwright | Owner: (none)
Type: defect | Status: new
Priority: Normal | Milestone:
Component: base | Version: 2.8.1
Resolution: | Keywords:
Port: |
------------------------+--------------------
Comment (by fhgwright):
Replying to [comment:6 jmroot]:
> Replying to [comment:2 fhgwright]:
> > Getting back to the exact state where this happened might be
nontrivial, but I believe it involved a case where the chosen compiler was
either uninstalled or outdated at the time, and when it decided to install
or upgrade it, it specified `+universal`, probably inherited from the
original upgrade target. That's not the same as your test case above,
where the chosen compiler is already active and up to date.
>
> OK, so an outdated dependency does not exhibit this behaviour, but an
uninstalled one does. It's not specific to universal; all variants from
the dependent are inherited by the newly installed dependency.
Clearly a bug in many cases.
For example, after making a minor fix to `dia`, I made the mistake of
trying a universal build as a test before submitting a PR. I'd already
built `dia -universal` so all needed dependencies were already present for
that case. 23.5 hours later, it finally finished populating dependencies
for the `+universal` case. And this was on a 3.47 GHz 12-core, dual
hyperthreaded machine with 128 GiB of RAM. The new universal builds
included seven different versions of clang/llvm, plus cmake, cctools,
ld64, git, curl, ... (you get the idea).
Universal builds are fairly often broken, largely because they're fairly
often untested. And one reason they're fairly often untested is because
testing them can be so excruciatingly painful, between the rampant
gratuitous universality and the fact that universal builds are rarely
available as precompiled binaries.
It's indeed not just an issue for universal; consider a GUI build tool
with a quartz/x11 choice, being used to build a port with a quartz/x11
choice. Those choices should be independent in this circumstance, which
is another host vs. target case.
--
Ticket URL: <https://trac.macports.org/ticket/67637#comment:7>
MacPorts <https://www.macports.org/>
Ports system for macOS
More information about the macports-tickets
mailing list