Opened 9 years ago

Closed 9 years ago

Last modified 9 years ago

#45949 closed defect (fixed)

pinentry-mac @0.8.1: error: -fobjc-arc is not supported on platforms using the legacy runtime

Reported by: ryandesign (Ryan Carsten Schmidt) Owned by: Ionic (Mihai Moldovan)
Priority: Normal Milestone:
Component: ports Version: 2.3.99
Keywords: Cc:
Port: pinentry-mac

Description

pinentry-mac fails to build for me on Yosemite:

error: -fobjc-arc is not supported on platforms using the legacy runtime

Attachments (1)

main.log (50.0 KB) - added by ryandesign (Ryan Carsten Schmidt) 9 years ago.

Download all attachments as: .zip

Change History (14)

Changed 9 years ago by ryandesign (Ryan Carsten Schmidt)

Attachment: main.log added

comment:1 Changed 9 years ago by Ionic (Mihai Moldovan)

Related to universal variant. Will remove it.

comment:2 Changed 9 years ago by Ionic (Mihai Moldovan)

Resolution: fixed
Status: newclosed

comment:3 Changed 9 years ago by ryandesign (Ryan Carsten Schmidt)

If this is going to be the solution, then you will also have to disable the universal variant of every port that has a library dependency on pinentry-mac, and every port that has a library dependency on those ports, and so on.

comment:4 Changed 9 years ago by ryandesign (Ryan Carsten Schmidt)

In addition, if pinentry-mac requires x86_64, then you should add this line to the portfile:

supported_archs         x86_64

There should also be a comment above this line and the one that disables the universal variant, explaining why. For example for pinentry-mac, it would be:

# error: -fobjc-arc is not supported on platforms using the legacy runtime
supported_archs         x86_64
universal_variant       no

In gpg-agent, which depends on pinentry-mac, it would be:

# pinentry-mac is not universal
universal_variant       no

Note, there was no reason to increase the revision when you disabled pinentry-mac's universal variant, and should not do so on other ports either.

comment:5 Changed 9 years ago by Ionic (Mihai Moldovan)

I can't change that, ARC is x86_64-only and pinentry-mac is utilizing that feature.

Currently, the only port depending on pinentry-mac under certain circumstances (variant pinentry_mac, may be set by default on supported systems and if the pinentry port or variant are not installed/enabled) is gpg-agent. I will add depends_skip_archcheck to it.

supported_archs is r128371

comment:6 in reply to:  5 ; Changed 9 years ago by Ionic (Mihai Moldovan)

Replying to ionic@…:

Currently, the only port depending on pinentry-mac under certain circumstances (variant pinentry_mac, may be set by default on supported systems and if the pinentry port or variant are not installed/enabled) is gpg-agent. I will add depends_skip_archcheck to it.

If that's even possible... can a 32bit binary spawn a 64bit one? If not, I'm in for some trouble.

comment:7 Changed 9 years ago by ryandesign (Ryan Carsten Schmidt)

You were responding while I was writing this, so some is redundant:

Replying to ryandesign@…:

In gpg-agent, which depends on pinentry-mac, it would be:

# pinentry-mac is not universal
universal_variant       no

In the case of gpg-agent, this should occur in the pinentry_mac variant only. And that leads us to a somewhat crappy situation: gpg-agent can be universal with the pinentry variant, but cannot be universal with the pinentry_mac variant. Should dependencies of gpg-agent offer a universal variant? We don't have a way to handle this situation in MacPorts. We can either leave the universal variants in gpg-agent dependents, with the understanding that they will not work if gpg-agent is installed with the pinentry_mac variant, or remove them, unnecessarily depriving users who have selected the pinentry variant of universal variants that would work fine.

comment:8 in reply to:  6 Changed 9 years ago by ryandesign (Ryan Carsten Schmidt)

Replying to ionic@…:

Replying to ionic@…:

Currently, the only port depending on pinentry-mac under certain circumstances (variant pinentry_mac, may be set by default on supported systems and if the pinentry port or variant are not installed/enabled) is gpg-agent. I will add depends_skip_archcheck to it.

If that's even possible... can a 32bit binary spawn a 64bit one? If not, I'm in for some trouble.

If we are only spawning an executable, then there's no problem. If so, then pinentry-mac should declare:

installs_libs           no

Then gpg-agent and dependents should still be able to be universal.

comment:9 Changed 9 years ago by Ionic (Mihai Moldovan)

Yes, it doesn't install any libraries, merely the executable which is spawned by gpg-agent. Still... I have no idea if a i386 binary can (v)fork and exec an x86_64 binary. That's the point I'm worried about.

comment:10 Changed 9 years ago by Ionic (Mihai Moldovan)

ionic@nopileos/tmp/exec-test% ./x86
running in 32bit mode. forking.
running in 64bit mode.

OK, that's a relief. I'll add installs_libs no right away.

Last edited 9 years ago by Ionic (Mihai Moldovan) (previous) (diff)

comment:11 Changed 9 years ago by Ionic (Mihai Moldovan)

comment:12 Changed 9 years ago by ryandesign (Ryan Carsten Schmidt)

Great, thanks!

comment:13 Changed 9 years ago by Ionic (Mihai Moldovan)

Comment added in r128377.

Note: See TracTickets for help on using tickets.