Turn off the App Sandbox for now.
authorRobert Sesek <rsesek@bluestatic.org>
Sun, 15 Dec 2019 20:03:01 +0000 (15:03 -0500)
committerRobert Sesek <rsesek@bluestatic.org>
Sun, 15 Dec 2019 20:03:01 +0000 (15:03 -0500)
Sparkle 1.x does not support updating from within the App Sandbox,
per https://github.com/sparkle-project/Sparkle/issues/363. Move all the
sandbox support behind a USE_APP_SANDBOX compiler define, and create a
new Release-AppSandbox build configuration for it.

MacGDBp.xcodeproj/project.pbxproj
Source/AppDelegate.m
Source/DebuggerController.m
Source/FileAccessController.h
Source/FileAccessController.m
Source/PreferenceNames.h
Source/PreferenceNames.m
Source/PreferencesController.h
Source/PreferencesController.m

index 287e2bb5e4e2d288303743a017f6130fff6948ae..f378a3cd75ee1ca7b3c9217c29858a66a2c6e4a3 100644 (file)
                        };
                        name = Release;
                };
-               C01FCF4B08A954540054247B /* Debug */ = {
+               1EFE883423A6C5CF004202A7 /* Release-AppSandbox */ = {
                        isa = XCBuildConfiguration;
                        buildSettings = {
+                               CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
                                CLANG_CXX_LANGUAGE_STANDARD = "c++0x";
-                               CLANG_CXX_LIBRARY = "libc++";
+                               CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
+                               CLANG_WARN_BOOL_CONVERSION = YES;
+                               CLANG_WARN_COMMA = YES;
+                               CLANG_WARN_CONSTANT_CONVERSION = YES;
+                               CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
+                               CLANG_WARN_EMPTY_BODY = YES;
+                               CLANG_WARN_ENUM_CONVERSION = YES;
+                               CLANG_WARN_INFINITE_RECURSION = YES;
+                               CLANG_WARN_INT_CONVERSION = YES;
+                               CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
+                               CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
+                               CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
+                               CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
+                               CLANG_WARN_STRICT_PROTOTYPES = YES;
+                               CLANG_WARN_SUSPICIOUS_MOVE = YES;
+                               CLANG_WARN_UNREACHABLE_CODE = YES;
+                               CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+                               ENABLE_STRICT_OBJC_MSGSEND = YES;
+                               GCC_C_LANGUAGE_STANDARD = c99;
+                               GCC_NO_COMMON_BLOCKS = YES;
+                               GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+                               GCC_WARN_ABOUT_RETURN_TYPE = YES;
+                               GCC_WARN_UNDECLARED_SELECTOR = YES;
+                               GCC_WARN_UNINITIALIZED_AUTOS = YES;
+                               GCC_WARN_UNUSED_FUNCTION = YES;
+                               GCC_WARN_UNUSED_VARIABLE = YES;
+                               MACOSX_DEPLOYMENT_TARGET = 10.9;
+                               SDKROOT = macosx;
+                               USE_HEADERMAP = NO;
+                       };
+                       name = "Release-AppSandbox";
+               };
+               1EFE883523A6C5CF004202A7 /* Release-AppSandbox */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
                                CLANG_ENABLE_OBJC_ARC = YES;
                                CLANG_ENABLE_OBJC_WEAK = YES;
                                CODE_SIGN_ENTITLEMENTS = MacGDBp.entitlements;
                                COMBINE_HIDPI_IMAGES = YES;
+                               FRAMEWORK_SEARCH_PATHS = (
+                                       "$(inherited)",
+                                       "$(SRCROOT)",
+                               );
+                               GCC_GENERATE_DEBUGGING_SYMBOLS = NO;
+                               GCC_PREPROCESSOR_DEFINITIONS = "USE_APP_SANDBOX=$(MACGDBP_APP_SANDBOX)";
+                               INFOPLIST_FILE = Info.plist;
+                               INSTALL_PATH = "$(HOME)/Applications";
+                               LD_RUNPATH_SEARCH_PATHS = "@loader_path/../Frameworks";
+                               MACGDBP_APP_SANDBOX = 1;
+                               PRODUCT_BUNDLE_IDENTIFIER = org.bluestatic.macgdbp;
+                               PRODUCT_NAME = MacGDBp;
+                               WRAPPER_EXTENSION = app;
+                       };
+                       name = "Release-AppSandbox";
+               };
+               1EFE883623A6C5CF004202A7 /* Release-AppSandbox */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               CLANG_ENABLE_OBJC_ARC = YES;
+                               CLANG_ENABLE_OBJC_WEAK = YES;
+                               COMBINE_HIDPI_IMAGES = YES;
+                               COPY_PHASE_STRIP = NO;
+                               DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
+                               ENABLE_NS_ASSERTIONS = NO;
+                               ENABLE_STRICT_OBJC_MSGSEND = YES;
+                               GCC_NO_COMMON_BLOCKS = YES;
+                               HEADER_SEARCH_PATHS = "$(SRCROOT)/Source";
+                               INFOPLIST_FILE = "UnitTests-Info.plist";
+                               MTL_ENABLE_DEBUG_INFO = NO;
+                               PRODUCT_BUNDLE_IDENTIFIER = "org.bluestatic.MacGDBp-Tests";
+                               PRODUCT_NAME = "$(TARGET_NAME)";
+                       };
+                       name = "Release-AppSandbox";
+               };
+               C01FCF4B08A954540054247B /* Debug */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               CLANG_ENABLE_OBJC_ARC = YES;
+                               CLANG_ENABLE_OBJC_WEAK = YES;
+                               COMBINE_HIDPI_IMAGES = YES;
                                COPY_PHASE_STRIP = NO;
                                FRAMEWORK_SEARCH_PATHS = (
                                        "$(inherited)",
                                        "$(SRCROOT)",
                                );
                                GCC_OPTIMIZATION_LEVEL = 0;
+                               GCC_PREPROCESSOR_DEFINITIONS = "USE_APP_SANDBOX=$(MACGDBP_APP_SANDBOX)";
                                INFOPLIST_FILE = Info.plist;
                                INSTALL_PATH = "$(HOME)/Applications";
                                LD_RUNPATH_SEARCH_PATHS = "@loader_path/../Frameworks";
+                               MACGDBP_APP_SANDBOX = 0;
                                PRODUCT_BUNDLE_IDENTIFIER = org.bluestatic.macgdbp;
                                PRODUCT_NAME = MacGDBp;
                                WRAPPER_EXTENSION = app;
                C01FCF4C08A954540054247B /* Release */ = {
                        isa = XCBuildConfiguration;
                        buildSettings = {
-                               CLANG_CXX_LANGUAGE_STANDARD = "c++0x";
-                               CLANG_CXX_LIBRARY = "libc++";
                                CLANG_ENABLE_OBJC_ARC = YES;
                                CLANG_ENABLE_OBJC_WEAK = YES;
-                               CODE_SIGN_ENTITLEMENTS = MacGDBp.entitlements;
                                COMBINE_HIDPI_IMAGES = YES;
                                FRAMEWORK_SEARCH_PATHS = (
                                        "$(inherited)",
                                        "$(SRCROOT)",
                                );
                                GCC_GENERATE_DEBUGGING_SYMBOLS = NO;
+                               GCC_PREPROCESSOR_DEFINITIONS = "USE_APP_SANDBOX=$(MACGDBP_APP_SANDBOX)";
                                INFOPLIST_FILE = Info.plist;
                                INSTALL_PATH = "$(HOME)/Applications";
                                LD_RUNPATH_SEARCH_PATHS = "@loader_path/../Frameworks";
+                               MACGDBP_APP_SANDBOX = 0;
                                PRODUCT_BUNDLE_IDENTIFIER = org.bluestatic.macgdbp;
                                PRODUCT_NAME = MacGDBp;
                                WRAPPER_EXTENSION = app;
                        isa = XCBuildConfiguration;
                        buildSettings = {
                                CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
+                               CLANG_CXX_LANGUAGE_STANDARD = "c++0x";
                                CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
                                CLANG_WARN_BOOL_CONVERSION = YES;
                                CLANG_WARN_COMMA = YES;
                        isa = XCBuildConfiguration;
                        buildSettings = {
                                CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
+                               CLANG_CXX_LANGUAGE_STANDARD = "c++0x";
                                CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
                                CLANG_WARN_BOOL_CONVERSION = YES;
                                CLANG_WARN_COMMA = YES;
                        buildConfigurations = (
                                1E8C709F1BDB167F00D333DC /* Debug */,
                                1E8C70A01BDB167F00D333DC /* Release */,
+                               1EFE883623A6C5CF004202A7 /* Release-AppSandbox */,
                        );
                        defaultConfigurationIsVisible = 0;
                        defaultConfigurationName = Release;
                        buildConfigurations = (
                                C01FCF4B08A954540054247B /* Debug */,
                                C01FCF4C08A954540054247B /* Release */,
+                               1EFE883523A6C5CF004202A7 /* Release-AppSandbox */,
                        );
                        defaultConfigurationIsVisible = 0;
                        defaultConfigurationName = Release;
                        buildConfigurations = (
                                C01FCF4F08A954540054247B /* Debug */,
                                C01FCF5008A954540054247B /* Release */,
+                               1EFE883423A6C5CF004202A7 /* Release-AppSandbox */,
                        );
                        defaultConfigurationIsVisible = 0;
                        defaultConfigurationName = Release;
index 0ce51bb7e43eb426ff30373236d87f7379705ca2..d7948ac456e22514fd9d1ea51571ea72cfc644ef 100644 (file)
@@ -40,7 +40,9 @@
       kPrefPort                     : @9000,
       kPrefInspectorWindowVisible   : @YES,
       kPrefPathReplacements         : [NSMutableArray array],
+#if USE_APP_SANDBOX
       kPrefFileAccessBookmarks      : [NSMutableDictionary dictionary],
+#endif
       kPrefBreakOnFirstLine         : @YES,
       kPrefDebuggerAttached         : @YES,
       kPrefSelectedDebuggerSegment  : @1,
       [[feedURL absoluteString] rangeOfString:@"?unstable"].location != NSNotFound;
   [defaults setBool:usesUnstable forKey:kPrefUnstableVersionCast];
 
+#if USE_APP_SANDBOX
   [FileAccessController maybeShowFileAccessDialog];
 
   [self _activateSecureFileAccess];
+#endif  // USE_APP_SANDBOX
 }
 
 - (void)applicationWillTerminate:(NSNotification*)notification
   [[NSWorkspace sharedWorkspace] openURL:[NSURL URLWithString:@"https://www.bluestatic.org/software/macgdbp/help/"]];
 }
 
+#if USE_APP_SANDBOX
 /**
  * Activates any secure file access bookmarks stored in preferences.
  */
 
   [NSUserDefaults.standardUserDefaults setObject:bookmarks forKey:kPrefFileAccessBookmarks];
 }
+#endif  // USE_APP_SANDBOX
 
 @end
index 0a2cedb7cb87e59725994582b822fee1192e57a8..67875d888a103a0ad084341e66533b68af9f732f 100644 (file)
 
 - (void)error:(NSError*)error whileHighlightingFile:(NSString*)file
 {
+#if USE_APP_SANDBOX
   if (error.code == NSFileReadNoPermissionError) {
     [FileAccessController showFileAccessDialog];
   }
+#endif  // USE_APP_SANDBOX
 }
 
 @end
index 744795a57711a32f12324305a2f09cf365231b01..1230f38774ead33c6b17f8b3236b24f18f4b1e50 100644 (file)
@@ -14,6 +14,8 @@
 * write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
 */
 
+#if USE_APP_SANDBOX
+
 #import <Cocoa/Cocoa.h>
 
 @interface FileAccessController : NSWindowController <NSWindowDelegate>
@@ -22,3 +24,5 @@
 
 - (IBAction)openFileAccess:(id)sender;
 @end
+
+#endif
index 9ec95c61ca2f9479a3469614a39484c77dc1eeb0..4e1d078ef5b0580119edec9c19cde9fd72709776 100644 (file)
@@ -14,6 +14,8 @@
 * write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
 */
 
+#if USE_APP_SANDBOX
+
 #import "FileAccessController.h"
 
 #import "AppDelegate.h"
@@ -66,3 +68,5 @@
 }
 
 @end
+
+#endif  // USE_APP_SANDBOX
index c2361817a5dd012984307aee4bdfc8cbfea0e126..fa75db10557b27fd01238e54874e0ba7ec06eeff 100644 (file)
@@ -25,11 +25,13 @@ extern NSString* const kPrefInspectorWindowVisible;
 // NSMutableArray of path replacements.
 extern NSString* const kPrefPathReplacements;
 
+#if USE_APP_SANDBOX
 // NSMutableDictionary of NSString paths to NSData file access bookmarks.
 extern NSString* const kPrefFileAccessBookmarks;
 
 // NSDate of last showing the FileAccessController on startup.
 extern NSString* const kPrefFileAccessStartupShowDate;
+#endif  // USE_APP_SANDBOX
 
 // NSNumber bool for whether to stop the debugger on the first line of the
 // program.
index e2958b54a8fdb1696cd6c597f232f2fd051890a1..d5ded4489404baab8498890bb0b2a28e46b4bb6e 100644 (file)
@@ -22,9 +22,11 @@ NSString* const kPrefInspectorWindowVisible = @"InspectorWindowVisible";
 
 NSString* const kPrefPathReplacements = @"PathReplacements";
 
+#if USE_APP_SANDBOX
 NSString* const kPrefFileAccessBookmarks = @"FileAccessBookmarks";
 
 NSString* const kPrefFileAccessStartupShowDate = @"FileAccessStartupShowDate";
+#endif  // USE_APP_SANDBOX
 
 NSString* const kPrefBreakOnFirstLine = @"BreakOnFirstLine";
 
index 34241fe024666248c5ca33e83b1dd2103a8efbcb..dcc38738d284c9604f84e06447b4f3ed9db558b8 100644 (file)
@@ -35,7 +35,9 @@
 
 - (IBAction)addFileAccess:(id)sender;
 
+#if USE_APP_SANDBOX
 + (NSData*)secureBookmarkDataForURL:(NSURL*)url;
+#endif
 
 // panel switching
 - (IBAction)showGeneral:(id)sender;
index 4a69529e362dab79498350e96b2a4cef8451e700..092ed9f766d758291cbd394145ee8c0f95e2605b 100644 (file)
 - (void)awakeFromNib
 {
   _generalSize = self.generalPreferencesView.frame.size;
+#if USE_APP_SANDBOX
   _fileAccessSize = self.fileAccessPreferencesView.frame.size;
+#else
+  NSUInteger i = [self.toolbar.items indexOfObject:self.fileAccessPreferencesItem];
+  if (i != NSNotFound)
+    [self.toolbar removeItemAtIndex:i];
+#endif
   _pathsSize = self.pathsPreferencesView.frame.size;
 }
 
@@ -58,6 +64,7 @@
  */
 - (IBAction)addFileAccess:(id)sender
 {
+#if USE_APP_SANDBOX
   NSOpenPanel* panel = [NSOpenPanel openPanel];
   panel.canChooseDirectories = YES;
   panel.canChooseFiles = NO;
   pair.key = url.absoluteString;
   pair.value = secureBookmark;
   [self.fileAccessController addObject:pair];
+#else
+  NSAssert(NO, @"not reached");
+#endif
 }
 
+#if USE_APP_SANDBOX
 + (NSData*)secureBookmarkDataForURL:(NSURL*)url
 {
    NSError* error;
@@ -88,6 +99,7 @@
    }
   return secureBookmark;
 }
+#endif  // USE_APP_SANDBOX
 
 #pragma mark Panel Switching
 
 
 - (IBAction)showFileAccess:(id)sender
 {
+#if USE_APP_SANDBOX
   [self _switchToView:self.fileAccessPreferencesView resizeTo:_fileAccessSize forToolbarItem:self.fileAccessPreferencesItem];
+#else
+  NSAssert(NO, @"not reached");
+#endif
 }
 
 /**
 {
   return @[
     self.generalPreferencesItem.itemIdentifier,
+#if USE_APP_SANDBOX
     self.fileAccessPreferencesItem.itemIdentifier,
+#endif
     self.pathsPreferencesItem.itemIdentifier,
   ];
 }