Using platforms in 2.8.0

Joshua Root jmr at macports.org
Tue Nov 1 00:49:17 UTC 2022


On 2022-11-1 11:40 , Nils Breunese wrote:
> Joshua Root <jmr at macports.org> wrote:
> 
>> On 2022-10-22 21:56 , Kirill A. Korinsky wrote:
>>> I'm asking is there a way to support specified arch inside platform block's condition. Like:
>>> platform {aarch64}  {
>>> ...
>>> }
>>
>> You can certainly do things like:
>>
>> platform darwin arm {
>> ...
>> }
> 
> I wasn’t aware of this platform variants syntax (https://guide.macports.org/#reference.variants.platform) yet, so today I learned.
> 
> I maintain some ports that contain sections that look like this:
> 
> ----
> if {${configure.build_arch} eq "x86_64"} {
> 	distname		microsoft-jdk-${version}-macOS-x64
> 	checksums	rmd160	2fc1a89b2310905e0891bb2b1519c8df86998ab7 \
> 				sha256	22697e9bbf3135c0ef843e7f371fe563ea948c6d464dfc532a7995fe32aebb09 \
> 				size		187094964
> } elseif {${configure.build_arch} eq "arm64"} {
> 	distname		microsoft-jdk-${version}-macOS-aarch64
> 	checksums	rmd160	feb696c4ba65ea42b68bb578e5e2de7b41e56669 \
> 				sha256	c50a20ca8764a5aa54dc0a0cf681d891dadbdccc1051792806d797206d59ba34 \
> 				size		184695872
> }
> ----
> 
> I thought I’d replace such if-elseif sections with declarative platform variant blocks, but I noticed that the arch argument for the platform variant needs to be ‘arm’ instead of ‘arm64’:
> 
> ----
> platform darwin arm {
> 	distname		microsoft-jdk-${version}-macOS-aarch64
> 	checksums	rmd160	feb696c4ba65ea42b68bb578e5e2de7b41e56669 \
> 				sha256	c50a20ca8764a5aa54dc0a0cf681d891dadbdccc1051792806d797206d59ba34 \
> 				size		184695872
> }
> ----
> 
> Why is the arch value for a platform variant not the same as ${configure.build_arch}? What are the valid values for the arch argument of a platform variant block? Can I use ‘platform darwin x86_64 { … }’ for the 64-bit Intel case or is that value also different from ${configure.build_arch}? I don’t have a x86_64 Mac I can use to test this myself.

The arch here is checked against ${os.arch}, which is (at least on 
darwin) the same as the output of `uname -p`. That is separate to 
build_arch, which depending on the OS version can often have multiple 
different valid values. You use 'platform' purely to check what you're 
running on, not how you're going to be building your code.

- Josh


More information about the macports-dev mailing list