Opened 12 months ago

Last modified 7 months ago

#68685 reopened defect

cyrus-sasl2: Missing universal variant — at Version 1

Reported by: simpplrjay Owned by:
Priority: Normal Milestone:
Component: ports Version:
Keywords: Cc:
Port: cyrus-sasl2

Description (last modified by ryandesign (Ryan Carsten Schmidt))

It's trying to install for x86

Error: Cannot install kdepimlibs4 for the arch 'x86_64' because
Error: its dependency cyrus-sasl2 is only installed for the arch 'arm64'
Error: and does not have a universal variant.
Error: Unable to execute port: architecture mismatch
--->  Some of the ports you installed have notes:
  db48 has the following notes:
    The Java and Tcl bindings are now provided by the db48-java and
    db48-tcl subports.

Change History (1)

comment:1 Changed 12 months ago by ryandesign (Ryan Carsten Schmidt)

Description: modified (diff)
Port: cyrus-sasl2 added; kdepimlibs4 removed
Summary: Cannot install kdepimlibs4 - Ventura 13.6 (arm)cyrus-sasl2: Missing universal variant

Yes, MacPorts is trying to install kdepimlibs4 for x86_64 because, like all software depending on qt4-mac, kdepimlibs4 cannot be compiled for arm64. Therefore, MacPorts must install its dependencies universal first.

It's failing because it claims cyrus-sasl2 doesn't have a universal variant, which is surprising because the cyrus-sasl2 Portfile includes the muniversal portgroup so clearly it was intended for it to have a universal variant. There's even a ten-year-old ticket about a problem using cyrus-sasl2's universal variant so it existed at one point.

On my Monterey x86_64 machine, debug output says:

DEBUG: muniversal: < 2 archs supported, not adding universal variant

but I'm not sure why it would say that. The universal_archs in my macports.conf, and I suspect in yours as well, is commented out and therefore set to the default value of arm64 x86_64 which by my count is not less than two. Maybe on my system the muniversal portgroup is concluding that an x86_64 machine cannot run arm64 software (the ability to run the compiled software is sometimes a prerequisite to be able to build it) and is therefore removing the arm64 architecture from the list, leaving just one. But since you have cyrus-sasl2 installed for arm64, I assume you are on an arm64 machine, which can run x86_64 software, so the muniversal portgroup should not have reached that conclusion on your system. Just to make sure, can you run port variants cyrus-sasl2 and see if universal is among those listed? If not, we need to figure out what has gone wrong in the Portfile or portgroup programming.

I see that the cyrus-sasl2 Portfile includes the muniversal portgroup before the legacysupport portgroup whereas we usually include portgroups alphabetically. Sometimes portgroups don't work right when included in the wrong order. The legacysupport portgroup in particular contains code that will complain if it is included after the makefile portgroup because that combination in that order is known to cause problems so we probably need to change the order. However, changing the order does not cause the missing variant to appear for me so something else is also wrong.

Note: See TracTickets for help on using tickets.