Opened 10 years ago

Closed 10 years ago

Last modified 10 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) 10 years ago.

Download all attachments as: .zip

Change History (14)

Changed 10 years ago by ryandesign (Ryan Carsten Schmidt)

Attachment: main.log added

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

Related to universal variant. Will remove it.

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

Resolution: fixed
Status: newclosed

comment:3 Changed 10 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 10 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 10 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 10 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 10 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 10 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 10 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 10 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 10 years ago by Ionic (Mihai Moldovan) (previous) (diff)

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

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

Great, thanks!

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

Comment added in r128377.

Note: See TracTickets for help on using tickets.