10.6: PreferencePane now 32-bit only?

Asked by Jon

I see that 1.5b6 is 64-bit, but I'm not seeing that. I'm guessing I configured something incorrectly.

Since adding Sparkle to my pref pane, it now only opens in the 32-bit version of System Preferences.

My target's architecture is Standard (32-bit/64-bit Universal).
"Build Active Architecture Only" is disabled.
"Valid Architectures" is i386 ppc x86_64

What am I missing?

Thanks!

Question information

Language:
English Edit question
Status:
Solved
For:
Sparkle Edit question
Assignee:
No assignee Edit question
Solved by:
Andy Matuschak
Solved:
Last query:
Last reply:
Revision history for this message
Andy Matuschak (andymatuschak) said :
#1

Well, okay, first sanity check: run "file" in the command line on your binary and also on Sparkle's binary image.

Revision history for this message
Jon (jon-baumgartner) said :
#2

Thanks for the quick response!

% file PathSnagger
PathSnagger: Mach-O universal binary with 3 architectures
PathSnagger (for architecture x86_64): Mach-O 64-bit bundle x86_64
PathSnagger (for architecture i386): Mach-O bundle i386
PathSnagger (for architecture ppc7400): Mach-O bundle ppc

I ran that from the Contents/MacOS directory of my pref pane.

% file Sparkle
Sparkle: Mach-O universal binary with 3 architectures
Sparkle (for architecture ppc): Mach-O dynamically linked shared library ppc
Sparkle (for architecture i386): Mach-O dynamically linked shared library i386
Sparkle (for architecture x86_64): Mach-O 64-bit dynamically linked shared library x86_64

And that from Contents/Frameworks/Sparkle.framework.

Revision history for this message
Andy Matuschak (andymatuschak) said :
#3

Huh. Is the former your prefpane's binary? Or some helper tool's binary? If it's not your prefpane's binary, could you post the output for that?

When you say your prefpane will only run in the 32-bit sys prefs, do you mean that it crashes if you run it in the 64-bit, or that it prompts for relaunch? Anything interesting in the console?

Revision history for this message
Jon (jon-baumgartner) said :
#4

It prompts for relaunch.

That's my binary. No helper tool.

I do see this in the console:

2/10/10 2:48:36 PM System Preferences[45041] dlopen_preflight failed with dlopen_preflight(/Users/jon/Library/PreferencePanes/PathSnagger.prefPane/Contents/MacOS/PathSnagger): Library not loaded: @loader_path/../Frameworks/Sparkle.framework/Versions/A/Sparkle
  Referenced from: /Users/jon/Library/PreferencePanes/PathSnagger.prefPane/Contents/MacOS/PathSnagger
  Reason: no suitable image found. Did find:
 /Users/jon/Library/PreferencePanes/PathSnagger.prefPane/Contents/MacOS/../Frameworks/Sparkle.framework/Versions/A/Sparkle: GC capability mismatch
 /Users/jon/Library/PreferencePanes/PathSnagger.prefPane/Contents/MacOS/../Frameworks/Sparkle.framework/Versions/A/Sparkle: GC capability mismatch for /Users/jon/Library/PreferencePanes/PathSnagger.prefPane

Revision history for this message
Best Andy Matuschak (andymatuschak) said :
#5

Aha, well that's that's your answer. Your prefpane is GC-required, and you used the non-GC Sparkle framework. Use the one in the garbage collection folder of the Sparkle distribution.

Revision history for this message
Jon (jon-baumgartner) said :
#6

Thank you! That was it!

Revision history for this message
Jon (jon-baumgartner) said :
#7

Thanks Andy Matuschak, that solved my question.