On Monday, 3 July 2017 15:18:07 UTC+1, Matthew Flatt  wrote:
> At Mon, 3 Jul 2017 08:15:38 -0600, Matthew Flatt wrote:
> > to make progress for now, you can
> > change
> > 
> >  collects/compiler/private/mach-o.rkt
> > 
> > and replace the call on line 164 to `detect-linkedit-padding` with the
> > constant 12 --- since 12 seems to be the right number for the v6.9
> > build, but `detect-linkedit-padding` thinks it's 8.
> 
> Make that 4 instead of 12 if you're using `raco exe --gui`.

Thank you Matthew and Norman for taking the time to reply. I got a bit further 
than Norman :)

The trick from Matthew did the trick and that Racket based app gets signed and 
passes all the local GateKeeper checks :) Great stuff.  This means that I get 
create a commercial grade application using Racket - I am delighted. Thank you, 
thank you.

As some extra feedback that may be useful to other readers, I also had to edit 
the app slightly to conform to Apples latest app guidelines:

https://developer.apple.com/library/content/documentation/MacOSX/Conceptual/BPFrameworks/Concepts/FrameworkAnatomy.html

I needed to add  Resources folder and an Info.plist with the correct 
CFBundleIdentifier set for the Racket Framework:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist SYSTEM "http://www.apple.com/DTDs/PropertyList-1.0.dtd";>
<plist version="0.9">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>English</string>
<key>CFBundleExecutable</key>
<string>Racket</string>
<key>CFBundleIdentifier</key>
<string>org.racket-lang.Racket</string>
<key>CFBundleIconFile</key>
<string>Starter</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleSignature</key>
<string>MrSt</string>
<key>CFBundleVersion</key>
<string>6.9</string>
<key>CFBundleShortVersionString</key>
<string>6.9</string>
<key>NSPrincipalClass</key>
<string>NSApplicationMain</string>
<key>NSHighResolutionCapable</key>
<true></true>
<key>NSSupportsAutomaticGraphicsSwitching</key>
<true></true>
</dict>
</plist>

Then I updated the framework folders using the bash script below so that they 
conform to the new folder structure as outlined in the Apple docs:

cd .<MyApp>.app/Contents/Frameworks/Racket.framework/Versions/
ln -s ./6.9_3m Current
cd ./<MyApp>.app/Contents/Frameworks/Racket.framework/
ln -s ./Versions/Current/Racket Racket
ln -s ./Versions/Current/Resources Resources

Then I signed the app using the codesign utility as outlined below:

https://successfulsoftware.net/2012/08/30/how-to-sign-your-mac-os-x-app-for-gatekeeper/

I hope that helps. Again, many thanks. I am very grateful to get this working. 
I would have lost weeks ot work otherwise!

Regards

Seamus

-- 
You received this message because you are subscribed to the Google Groups 
"Racket Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to