1
0
mirror of https://github.com/cookiengineer/audacity synced 2025-12-23 09:01:15 +01:00

Bug1702(Mac Sierra): Use right lib paths, no weird startup tricks...

... Reopens minor bug 543 as a won't-fix.

Bring back the shell script as a way to change environment for Audacity before
it starts.

Perhaps this fixes Bug 1703 too:  double-click on .aup before Audacity starts
brings up an empty window.
This commit is contained in:
Paul Licameli
2017-07-27 14:19:05 -04:00
6 changed files with 46 additions and 65 deletions

21
mac/Audacity.sh Executable file
View File

@@ -0,0 +1,21 @@
#!/bin/sh
#
# The purpose of this script is to give the user more control over where libraries
# such as Lame and FFmpeg get loaded from.
#
# Since absolute pathnames are used when loading these libraries, the normal search
# path would be DYLD_LIBRARY_PATH, absolute path, DYLD_FALLBACK_LIBRARY_PATH. This
# means that DYLD_LIBRARY_PATH can override what the user actually wants.
#
# So, we simply clear DYLD_LIBRARY_PATH to allow the users choice to be the first
# one tried.
#
DYLD_FALLBACK_LIBRARY_PATH="$DYLD_LIBRARY_PATH:$DYLD_FALLBACK_LIBRARY_PATH:$HOME/lib:/usr/local/lib:/usr/lib"
export DYLD_FALLBACK_LIBRARY_PATH
DYLD_LIBRARY_PATH=""
export DYLD_LIBRARY_PATH
dir=$(dirname "$0")
"$dir/Audacity"

View File

@@ -890,6 +890,7 @@
28BD8AB3101DF4C700686679 /* ExecMenuCommand.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 28BD8AAC101DF4C600686679 /* ExecMenuCommand.cpp */; };
28BD8AB4101DF4C700686679 /* GetAllMenuCommands.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 28BD8AAE101DF4C600686679 /* GetAllMenuCommands.cpp */; };
28C3946D1818356800FDDAC9 /* AudacityLogger.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 28C3946B1818356800FDDAC9 /* AudacityLogger.cpp */; };
28C816BA131255790035BB10 /* Audacity.sh in Install wrapper */ = {isa = PBXBuildFile; fileRef = 28C816B81312555B0035BB10 /* Audacity.sh */; };
28C8211D1B5C661E00B53328 /* ViewInfo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 28C8211C1B5C661E00B53328 /* ViewInfo.cpp */; };
28CA9E6B1AE60C53005C0BFE /* dBTable.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 82FF184D13CF01A600C1B664 /* dBTable.cpp */; };
28CA9E6C1AE60C53005C0BFE /* dBTable.h in Headers */ = {isa = PBXBuildFile; fileRef = 82FF184E13CF01A600C1B664 /* dBTable.h */; };
@@ -1491,6 +1492,17 @@
name = "Install miscellany";
runOnlyForDeploymentPostprocessing = 1;
};
28C816B7131255550035BB10 /* Install wrapper */ = {
isa = PBXCopyFilesBuildPhase;
buildActionMask = 12;
dstPath = "";
dstSubfolderSpec = 6;
files = (
28C816BA131255790035BB10 /* Audacity.sh in Install wrapper */,
);
name = "Install wrapper";
runOnlyForDeploymentPostprocessing = 0;
};
ED95519E195D956F0027176E /* Install background image */ = {
isa = PBXCopyFilesBuildPhase;
buildActionMask = 8;
@@ -2685,6 +2697,7 @@
28BD8AB0101DF4C600686679 /* Validators.h */ = {isa = PBXFileReference; fileEncoding = 5; indentWidth = 3; lastKnownFileType = sourcecode.c.h; path = Validators.h; sourceTree = "<group>"; tabWidth = 3; };
28C3946B1818356800FDDAC9 /* AudacityLogger.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AudacityLogger.cpp; sourceTree = "<group>"; };
28C3946C1818356800FDDAC9 /* AudacityLogger.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AudacityLogger.h; sourceTree = "<group>"; };
28C816B81312555B0035BB10 /* Audacity.sh */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text.script.sh; name = Audacity.sh; path = mac/Audacity.sh; sourceTree = "<group>"; };
28C8211C1B5C661E00B53328 /* ViewInfo.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ViewInfo.cpp; sourceTree = "<group>"; };
28CBD65D1B9F7DF7003AC5EE /* pt_PT.po */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = pt_PT.po; path = ../locale/pt_PT.po; sourceTree = "<group>"; };
28CBD65E1B9F7DF7003AC5EE /* zh_CN.po */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = zh_CN.po; path = ../locale/zh_CN.po; sourceTree = "<group>"; };
@@ -3913,6 +3926,7 @@
isa = PBXGroup;
children = (
174F73C8098D516D009CD6E0 /* Resources */,
28C816B81312555B0035BB10 /* Audacity.sh */,
28006FFA132C167600BD34D7 /* Install.txt */,
178CF4FF0989541C0056CE58 /* configmac.h */,
174F73D7098D51AA009CD6E0 /* Info.plist */,
@@ -6800,6 +6814,7 @@
28708D631B17C3C400496FEB /* Copy wxWidgets libs */,
288F0980131A400F0008E860 /* Install manual */,
282413DA131D52CE009FD931 /* Install plugins */,
28C816B7131255550035BB10 /* Install wrapper */,
2892CE28131AFB1900E1E17D /* Install miscellany */,
ED95519E195D956F0027176E /* Install background image */,
282413D8131D51FC009FD931 /* Create dist */,
@@ -8421,8 +8436,7 @@
SDKROOT = macosx10.6;
SSE_CPPFLAGS = "-Xarch_i386 -DAPPLE_I386";
TOPLEVEL = ..;
WARNING_CFLAGS = (
);
WARNING_CFLAGS = "";
WX_CFLAGS = "-I$(WX_PREFIX)/lib/wx/include/osx_cocoa-unicode-$(WX_VER)-$(WX_FLAVOR) -I$(WX_PREFIX)/include/wx-$(WX_VER)-$(WX_FLAVOR) -D_FILE_OFFSET_BITS=64 -DwxDEBUG_LEVEL=1 -DWXUSINGDLL -D__WXMAC__ -D__WXOSX__ -D__WXOSX_COCOA__";
WX_CONFIG = "$(WX_PREFIX)/bin/wx-config";
WX_CXXFLAGS = "$(WX_CFLAGS)";
@@ -8748,8 +8762,7 @@
SDKROOT = macosx10.6;
SSE_CPPFLAGS = "-Xarch_i386 -DAPPLE_I386";
TOPLEVEL = ..;
WARNING_CFLAGS = (
);
WARNING_CFLAGS = "";
WX_CFLAGS = "-I$(WX_PREFIX)/lib/wx/include/osx_cocoa-unicode-$(WX_VER)-$(WX_FLAVOR) -I$(WX_PREFIX)/include/wx-$(WX_VER)-$(WX_FLAVOR) -D_FILE_OFFSET_BITS=64 -DwxDEBUG_LEVEL=0 -DWXUSINGDLL -D__WXMAC__ -D__WXOSX__ -D__WXOSX_COCOA__";
WX_CONFIG = "$(WX_PREFIX)/bin/wx-config";
WX_CXXFLAGS = "$(WX_CFLAGS)";

View File

@@ -21,8 +21,14 @@ done
cd ${TOPLEVEL}
mkdir -p mac/build
eval $(g++ -E -dM src/Audacity.h | awk '/#define *AUDACITY_(VERSION|RELEASE|REVISION|MODLEVEL) /{print $2 "=" $3}')
if [ $CONFIGURATION == 'Debug' ]
then
AUDACITY_EXECUTABLE=Audacity
else
AUDACITY_EXECUTABLE=Audacity.sh
fi
cat >mac/build/Info.plist.h <<EOF
#define AUDACITY_EXECUTABLE Audacity
#define AUDACITY_EXECUTABLE ${AUDACITY_EXECUTABLE}
#define AUDACITY_VERSION ${AUDACITY_VERSION}
#define AUDACITY_RELEASE ${AUDACITY_RELEASE}
#define AUDACITY_REVISION ${AUDACITY_REVISION}

View File

@@ -651,54 +651,12 @@ public:
};
#if defined(__WXMAC__)
// This should be removed when Lame and FFmpeg support is converted
// from loadable libraries to commands.
//
// The purpose of this is to give the user more control over where libraries
// such as Lame and FFmpeg get loaded from.
//
// Since absolute pathnames are used when loading these libraries, the normal search
// path would be DYLD_LIBRARY_PATH, absolute path, DYLD_FALLBACK_LIBRARY_PATH. This
// means that DYLD_LIBRARY_PATH can override what the user actually wants.
//
// So, we simply clear DYLD_LIBRARY_PATH to allow the users choice to be the first
// one tried.
IMPLEMENT_APP_NO_MAIN(AudacityApp)
IMPLEMENT_WX_THEME_SUPPORT
int main(int argc, char *argv[])
{
bool doCrash = false;
#ifdef FIX_BUG1567
doCrash = AudacityApp::IsSierraOrLater();
#endif
bool doExec = !doCrash && getenv("DYLD_LIBRARY_PATH");
unsetenv("DYLD_LIBRARY_PATH");
extern char **environ;
#ifdef FIX_BUG1567
const char *var_name = "_NO_CRASH";
if ( doCrash && !( getenv( var_name ) ) ) {
setenv(var_name, "1", TRUE);
// Bizarre fix for Bug1567
// Crashing one Audacity and immediately starting another avoids intermittent
// failures to load libraries on Sierra
if ( fork() )
// The original process crashes at once
raise(SIGTERM);
// Child process can't proceed until doing this:
execve(argv[0], argv, environ);
}
else
#else
if (doExec)
execve(argv[0], argv, environ);
#endif
wxDISABLE_DEBUG_SUPPORT();
return wxEntry(argc, argv);
@@ -1542,12 +1500,6 @@ bool AudacityApp::OnInit()
temporarywindow.SetTitle(_("Audacity is starting up..."));
SetTopWindow(&temporarywindow);
#ifdef FIX_BUG1567
// Without this, splash screen may be hidden under other programs.
if (IsSierraOrLater())
MacActivateApp();
#endif
// ANSWER-ME: Why is YieldFor needed at all?
//wxEventLoopBase::GetActive()->YieldFor(wxEVT_CATEGORY_UI|wxEVT_CATEGORY_USER_INPUT|wxEVT_CATEGORY_UNKNOWN);
wxEventLoopBase::GetActive()->YieldFor(wxEVT_CATEGORY_UI);

View File

@@ -164,12 +164,7 @@ class AudacityApp final : public wxApp {
#ifdef __WXMAC__
#if ! defined(__WXDEBUG__)
#define FIX_BUG1567
#endif
void MacActivateApp();
static bool IsSierraOrLater();
#endif

View File

@@ -92,9 +92,3 @@ void AudacityApp::MacActivateApp()
if ( [app respondsToSelector:@selector(activateIgnoringOtherApps:)] )
[app activateIgnoringOtherApps:YES];
}
bool AudacityApp::IsSierraOrLater()
{
auto number = kCFCoreFoundationVersionNumber;
return number >= 1348.1;
}