> On Jan 11, 2021, at 9:07 PM, Ryan Schmidt <ryandes...@macports.org> wrote:
> On Jan 11, 2021, at 19:38, Craig Treleaven wrote:
> 
>> A user with a new Apple Silicon-based Mac had a go at building mythtv.28.  
>> It failed thusly:
>> 
>> --->  Computing dependencies for mythtv.28
>> Error: Cannot install mythtv-core.28 for the arch 'x86_64' because
>> Error: its dependency logrotate does not build for the required arch by
>> default
>> 
>> https://trac.macports.org/ticket/62027
>> 
>> Given Rosetta2 on these systems, isn’t this a bogus error?  On M1 Macs, we 
>> might warn that a dependency is being built for an arch different from that 
>> of the main target but why should it be a fatal error?
>> 
>> What was done during the PPC to Intel transition? Did we try to force all 
>> deps of a port to build with the same arch?
> 
> MacPorts 2.6.4 is supposed to support all possible arch demotions. On arm64, 
> you're supposed to be able to run x86_64. On x86_64, you're supposed to be 
> able to run i386. On i386, you're supposed to be able to run ppc. Some of 
> this was already in place before, and it was enhanced for 2.6.4 in this 
> commit:
> 
> https://github.com/macports/macports-base/commit/94f428eda6bd58b57c670c20fb2362ad7012310a
> 
> See this ticket:
> 
> https://trac.macports.org/ticket/61430
> 
> Installing a port for a demoted architecture would require its dependencies 
> to be installed universal. MacPorts is trying to install the dependencies 
> universal and is failing on logrotate because it does not have a universal 
> variant. The solution is to add a universal variant to logrotate. 
> Alternately, if logrotate does not install any libraries (and it looks like 
> it does not), add "installs_libs no" to the logrotate portfile so that 
> MacPorts knows it does not need to check its architecture. Or if logrotate 
> does install libraries but whichever one of mythtv.28's dependencies depends 
> on logrotate (looks like it's mythtv-core.28) doesn't link with any of its 
> libraries, add "depends_skip_archcheck logrotate" to mythtv-core.28.
> 

Am I incorrect that Rosetta2 does NOT require library dependencies to be the 
same arch as the main program?  I thought I understood that an X86_64 program 
could call an arm64 library (and vice versa) and that Rosetta2 would do the 
right thing at run time.  If so, MacPorts does not have to supply a 
mult-arch/universal library.

I understand that Rosetta2 is not going to around forever—maybe 2 to 5 years.  
However, if it does automatically translate libraries at run time, that would 
permit quite a number of ports to work immediately.  No?

Craig

Reply via email to