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