But, this time use a "C" wrapper as posited by Paul in:
https://bugzilla.audacityteam.org/show_bug.cgi?id=543#c6
Doing so should bypass the execve()/decontruction issue and
still allow entitlements to work.
This also sets the build system to Legacy so that a "clean"
action will not produce:
error: Could not delete '...' because it was not created by
the build system.
And, I'm not sure why the deployment target was 10.9, but it
should have been 10.7.
It must be signed with a "Developer ID Application" certificate
and not the "Developer ID Installer" certificate.
And make sure to sign the app before copying it to the temporary
DMG folder.
The distribution will be signed and notarized during an "install" build
and is handled by mac/scripts/build_dist.sh.
The wrapper scripts, mac/Audacity.sh, is no longer needed as it's function
has been integrated into AudacityApp.cpp/main().
Initially, all "hardened entitlements" have been enabled since we don't
know which ones plug-ins will need.
On Mac and Windows, system sleep will be disabled when recording starts
and re-enabled when it ends.
... to include architecture, so the 64 bit build doesn't destroy the 32, thus
the results are found in:
/usr/local/i386/lib
/usr/local/x86_64/lib
whereas before all was in /usr/local/lib.
Change the XCode project too, to look for includes and libraries in the new
places.
... That is, put a little shell script in the application bundle, and invoke
it (in Release, though not Debug where it interferes with Xcode debugging)
See commit 07661c186f7e8e6d978fa35485d65364b96dfb3a
The shell nulls the environment variable DYLD_LIBRARY_PATH and then executes
the main program.
This is needed because changes to DYLD_LIBRARY_PATH during the main program's
run fail to affect the loading of dynamic libraries afterward.
We need null in DYLD_LIBRARY_PATH to make absolute paths to libraries take
priority.
More info:
Documentation of workings of the macOS dynamic loader
https://developer.apple.com/library/content/documentation/DeveloperTools/Conceptual/DynamicLibraries/100-Articles/DynamicLibraryUsageGuidelines.html
The same problem and solution is discussed here
https://stackoverflow.com/questions/6713692/problems-with-using-setenv-and-then-making-the-dlopen-call
It is claimed there that Firefox did the same trick with a shell, which I do
not observe in my version, but GIMP 2.8.16 does this, as I can see by examining
package contents
Also note the mention in this commit's comments (where the script was removed
because bug543's fix left it unused), that the script also used to
interfere with signing. I hope that there will be a way around that.
98186b9317adf842e0469fe98175b55da31d3210
- For ALPHA builds we do a check version with the Welcome screen (if welcome screen is enabled).
- A 'Check Online' in the About box provides a new route to check version
- Check Version now passes CommitId and Build Date/Time to identify a version.
To actually close the bug we need the javascript on the server page to put up informative messages.
In addition, the Xcode project can now build against the 10.6
or 10.7 SDKs. All that is needed is to change the SDK version
and the other settings will change automatically.