[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