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:
21
mac/Audacity.sh
Executable file
21
mac/Audacity.sh
Executable 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"
|
||||
@@ -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)";
|
||||
|
||||
@@ -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}
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -164,12 +164,7 @@ class AudacityApp final : public wxApp {
|
||||
|
||||
#ifdef __WXMAC__
|
||||
|
||||
#if ! defined(__WXDEBUG__)
|
||||
#define FIX_BUG1567
|
||||
#endif
|
||||
|
||||
void MacActivateApp();
|
||||
static bool IsSierraOrLater();
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user