diff --git a/.circleci/config.yml b/.circleci/config.yml index 09674ba54762..75c6da51ad5e 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -832,7 +832,7 @@ step-restore-out-cache: &step-restore-out-cache paths: - ./src/out/Default keys: - - v8-out-cache-{{ checksum "src/electron/.depshash" }}-{{ checksum "src/electron/.depshash-target" }} + - v9-out-cache-{{ checksum "src/electron/.depshash" }}-{{ checksum "src/electron/.depshash-target" }} name: Restoring out cache step-set-git-cache-path: &step-set-git-cache-path @@ -856,7 +856,7 @@ step-save-out-cache: &step-save-out-cache save_cache: paths: - ./src/out/Default - key: v8-out-cache-{{ checksum "src/electron/.depshash" }}-{{ checksum "src/electron/.depshash-target" }} + key: v9-out-cache-{{ checksum "src/electron/.depshash" }}-{{ checksum "src/electron/.depshash-target" }} name: Persisting out cache step-run-electron-only-hooks: &step-run-electron-only-hooks diff --git a/BUILD.gn b/BUILD.gn index 5df3b1b38db7..52486cffb9ac 100644 --- a/BUILD.gn +++ b/BUILD.gn @@ -497,16 +497,17 @@ source_set("electron_lib") { } else { libs += [ "Squirrel.framework", - "ReactiveCocoa.framework", + "ReactiveObjC.framework", "Mantle.framework", ] - cflags_objcc = [ - "-F", - rebase_path("external_binaries", root_build_dir), + + deps += [ + "//third_party/squirrel.mac:reactiveobjc_framework+link", + "//third_party/squirrel.mac:squirrel_framework+link", ] - # ReactiveCocoa which is used by Squirrel requires using __weak. - cflags_objcc += [ "-fobjc-weak" ] + # ReactiveObjC which is used by Squirrel requires using __weak. + cflags_objcc = [ "-fobjc-weak" ] } } if (is_linux) { @@ -811,8 +812,6 @@ if (is_mac) { } ldflags = [ - "-F", - rebase_path("external_binaries", root_build_dir), "-Wl,-install_name,@rpath/$output_name.framework/$output_name", "-rpath", "@loader_path/Libraries", @@ -863,17 +862,49 @@ if (is_mac) { } } + template("stripped_framework") { + action(target_name) { + assert(defined(invoker.framework)) + + script = "//electron/build/strip_framework.py" + + forward_variables_from(invoker, [ "deps" ]) + inputs = [ "$root_out_dir/" + invoker.framework ] + outputs = [ "$target_out_dir/stripped_frameworks/" + invoker.framework ] + + args = rebase_path(inputs) + rebase_path(outputs) + } + } + + stripped_framework("stripped_mantle_framework") { + framework = "Mantle.framework" + deps = [ "//third_party/squirrel.mac:mantle_framework" ] + } + + stripped_framework("stripped_reactiveobjc_framework") { + framework = "ReactiveObjC.framework" + deps = [ "//third_party/squirrel.mac:reactiveobjc_framework" ] + } + + stripped_framework("stripped_squirrel_framework") { + framework = "Squirrel.framework" + deps = [ "//third_party/squirrel.mac:squirrel_framework" ] + } + bundle_data("electron_app_framework_bundle_data") { sources = [ "$root_out_dir/$electron_framework_name.framework" ] if (!is_mas_build) { - sources += [ - "external_binaries/Mantle.framework", - "external_binaries/ReactiveCocoa.framework", - "external_binaries/Squirrel.framework", - ] + sources += get_target_outputs(":stripped_mantle_framework") + + get_target_outputs(":stripped_reactiveobjc_framework") + + get_target_outputs(":stripped_squirrel_framework") } outputs = [ "{{bundle_contents_dir}}/Frameworks/{{source_file_part}}" ] - public_deps = [ ":electron_framework+link" ] + public_deps = [ + ":electron_framework+link", + ":stripped_mantle_framework", + ":stripped_reactiveobjc_framework", + ":stripped_squirrel_framework", + ] foreach(helper_params, content_mac_helpers) { sources += @@ -1179,18 +1210,6 @@ test("shell_browser_ui_unittests") { "//ui/base", "//ui/strings", ] - - if (is_mac) { - # Resolve paths owing to different test executable locations - ldflags = [ - "-F", - rebase_path("external_binaries", root_build_dir), - "-rpath", - "@loader_path", - "-rpath", - "@executable_path/" + rebase_path("external_binaries", root_build_dir), - ] - } } template("dist_zip") { diff --git a/DEPS b/DEPS index 89b0def05607..b198ba1b7dbc 100644 --- a/DEPS +++ b/DEPS @@ -18,6 +18,8 @@ vars = { 'v12.18.2', 'nan_version': '2c4ee8a32a299eada3cd6e468bbd0a473bfea96d', + 'squirrel.mac_version': + '44468f858ce0d25c27bd5e674abfa104e0119738', 'boto_version': 'f7574aa6cc2c819430c1f05e9a1a1a666ef8169b', 'pyyaml_version': '3.12', @@ -29,6 +31,7 @@ vars = { 'nodejs_git': 'https://github.com/nodejs', 'requests_git': 'https://github.com/kennethreitz', 'yaml_git': 'https://github.com/yaml', + 'squirrel_git': 'https://github.com/Squirrel', # KEEP IN SYNC WITH utils.js FILE 'yarn_version': '1.15.2', @@ -101,6 +104,18 @@ deps = { 'url': Var('requests_git') + '/requests.git' + '@' + Var('requests_version'), 'condition': 'checkout_requests and process_deps', }, + 'src/third_party/squirrel.mac': { + 'url': Var("squirrel_git") + '/Squirrel.Mac.git@' + Var("squirrel.mac_version"), + 'condition': 'process_deps', + }, + 'src/third_party/squirrel.mac/vendor/ReactiveObjC': { + 'url': 'https://github.com/ReactiveCocoa/ReactiveObjC.git@74ab5baccc6f7202c8ac69a8d1e152c29dc1ea76', + 'condition': 'process_deps' + }, + 'src/third_party/squirrel.mac/vendor/Mantle': { + 'url': 'https://github.com/Mantle/Mantle.git@78d3966b3c331292ea29ec38661b25df0a245948', + 'condition': 'process_deps', + } } hooks = [ @@ -156,4 +171,5 @@ hooks = [ recursedeps = [ 'src', + 'src/third_party/squirrel.mac', ] diff --git a/build/strip_framework.py b/build/strip_framework.py new file mode 100755 index 000000000000..31d3f0a98e68 --- /dev/null +++ b/build/strip_framework.py @@ -0,0 +1,16 @@ +#!/usr/bin/env python +import os +import subprocess +import sys + +source = sys.argv[1] +dest = sys.argv[2] + +# Ensure any existing framework is removed +subprocess.check_output(["rm", "-rf", dest]) + +subprocess.check_output(["cp", "-a", source, dest]) + +# Strip headers, we do not need to ship them +subprocess.check_output(["rm", "-r", os.path.join(dest, 'Headers')]) +subprocess.check_output(["rm", "-r", os.path.join(dest, 'Versions', 'Current', 'Headers')]) diff --git a/patches/ReactiveObjC/.patches b/patches/ReactiveObjC/.patches new file mode 100644 index 000000000000..ac3de6a79e24 --- /dev/null +++ b/patches/ReactiveObjC/.patches @@ -0,0 +1 @@ +build_conditionally_import_ext_headers_from_framework_or_from.patch diff --git a/patches/ReactiveObjC/build_conditionally_import_ext_headers_from_framework_or_from.patch b/patches/ReactiveObjC/build_conditionally_import_ext_headers_from_framework_or_from.patch new file mode 100644 index 000000000000..f468b6bcdd2b --- /dev/null +++ b/patches/ReactiveObjC/build_conditionally_import_ext_headers_from_framework_or_from.patch @@ -0,0 +1,533 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Samuel Attard +Date: Fri, 26 Jun 2020 11:06:12 -0700 +Subject: build: conditionally import EXT headers from framework or from + relative path + +diff --git a/ReactiveObjC/NSControl+RACTextSignalSupport.m b/ReactiveObjC/NSControl+RACTextSignalSupport.m +index 88da38f6e8117bbabdd898c8a1d4bde5e59deda7..483caea62eaaf26d9ad7d267a5c3e9aa44638ce7 100644 +--- a/ReactiveObjC/NSControl+RACTextSignalSupport.m ++++ b/ReactiveObjC/NSControl+RACTextSignalSupport.m +@@ -7,7 +7,11 @@ + // + + #import "NSControl+RACTextSignalSupport.h" ++#if defined(BUILDING_RAC_FRAMEWORK) ++#import "extobjc/EXTScope.h" ++#else + #import ++#endif + #import "NSObject+RACDescription.h" + #import "RACDisposable.h" + #import "RACSignal.h" +diff --git a/ReactiveObjC/NSNotificationCenter+RACSupport.m b/ReactiveObjC/NSNotificationCenter+RACSupport.m +index 6d6f94384e0a85635c70f258020dd7ac7c78b3b1..1a364d16909c77654674b189cb9bc0861892e5aa 100644 +--- a/ReactiveObjC/NSNotificationCenter+RACSupport.m ++++ b/ReactiveObjC/NSNotificationCenter+RACSupport.m +@@ -7,7 +7,11 @@ + // + + #import "NSNotificationCenter+RACSupport.h" ++#if defined(BUILDING_RAC_FRAMEWORK) ++#import "extobjc/EXTScope.h" ++#else + #import ++#endif + #import "RACSignal.h" + #import "RACSubscriber.h" + #import "RACDisposable.h" +diff --git a/ReactiveObjC/NSObject+RACAppKitBindings.m b/ReactiveObjC/NSObject+RACAppKitBindings.m +index 06fd5d011515680b460220d96ddd0e889b134416..4c69de773ab31711f151a81a81f2757adedbed21 100644 +--- a/ReactiveObjC/NSObject+RACAppKitBindings.m ++++ b/ReactiveObjC/NSObject+RACAppKitBindings.m +@@ -7,8 +7,16 @@ + // + + #import "NSObject+RACAppKitBindings.h" ++#if defined(BUILDING_RAC_FRAMEWORK) ++#import "extobjc/EXTKeyPathCoding.h" ++#else + #import ++#endif ++#if defined(BUILDING_RAC_FRAMEWORK) ++#import "extobjc/EXTScope.h" ++#else + #import ++#endif + #import "NSObject+RACDeallocating.h" + #import "RACChannel.h" + #import "RACCompoundDisposable.h" +diff --git a/ReactiveObjC/NSObject+RACKVOWrapper.m b/ReactiveObjC/NSObject+RACKVOWrapper.m +index 099dc773af172df8ddd8c62165e8c79589112857..aaf40f0b725b94aa49a448dce5c084f0dcc32e60 100644 +--- a/ReactiveObjC/NSObject+RACKVOWrapper.m ++++ b/ReactiveObjC/NSObject+RACKVOWrapper.m +@@ -7,8 +7,16 @@ + // + + #import "NSObject+RACKVOWrapper.h" ++#if defined(BUILDING_RAC_FRAMEWORK) ++#import "extobjc/EXTRuntimeExtensions.h" ++#else + #import ++#endif ++#if defined(BUILDING_RAC_FRAMEWORK) ++#import "extobjc/EXTScope.h" ++#else + #import ++#endif + #import "NSObject+RACDeallocating.h" + #import "NSString+RACKeyPathUtilities.h" + #import "RACCompoundDisposable.h" +diff --git a/ReactiveObjC/NSObject+RACLifting.m b/ReactiveObjC/NSObject+RACLifting.m +index a0c09d5c08b6b35b411d305f17326268d41a30b6..e2b01c13a1e858378a4f2e983f2487ace6b5a445 100644 +--- a/ReactiveObjC/NSObject+RACLifting.m ++++ b/ReactiveObjC/NSObject+RACLifting.m +@@ -7,7 +7,11 @@ + // + + #import "NSObject+RACLifting.h" ++#if defined(BUILDING_RAC_FRAMEWORK) ++#import "extobjc/EXTScope.h" ++#else + #import ++#endif + #import "NSInvocation+RACTypeParsing.h" + #import "NSObject+RACDeallocating.h" + #import "NSObject+RACDescription.h" +diff --git a/ReactiveObjC/NSObject+RACPropertySubscribing.h b/ReactiveObjC/NSObject+RACPropertySubscribing.h +index 430c066d4e1f9110b60e877fbff2254de9f56d58..cbbaa5ac9cf1942eb460d172ef41eaa2d8c387ee 100644 +--- a/ReactiveObjC/NSObject+RACPropertySubscribing.h ++++ b/ReactiveObjC/NSObject+RACPropertySubscribing.h +@@ -7,7 +7,11 @@ + // + + #import ++#if defined(BUILDING_RAC_FRAMEWORK) ++#import "extobjc/EXTKeyPathCoding.h" ++#else + #import ++#endif + #import "metamacros.h" + + /// Creates a signal which observes `KEYPATH` on `TARGET` for changes. +diff --git a/ReactiveObjC/NSObject+RACPropertySubscribing.m b/ReactiveObjC/NSObject+RACPropertySubscribing.m +index 29e3df89e47b4d28b1c789181b2a6993c56a0f88..61a5929aa892a948b24b9f4403cb71272a1ca071 100644 +--- a/ReactiveObjC/NSObject+RACPropertySubscribing.m ++++ b/ReactiveObjC/NSObject+RACPropertySubscribing.m +@@ -7,7 +7,11 @@ + // + + #import "NSObject+RACPropertySubscribing.h" ++#if defined(BUILDING_RAC_FRAMEWORK) ++#import "extobjc/EXTScope.h" ++#else + #import ++#endif + #import "NSObject+RACDeallocating.h" + #import "NSObject+RACDescription.h" + #import "NSObject+RACKVOWrapper.h" +diff --git a/ReactiveObjC/NSObject+RACSelectorSignal.m b/ReactiveObjC/NSObject+RACSelectorSignal.m +index ed809e2efefbfd48754294bfe6dbb32b7e01c8c6..7e8a9522d449bba2b08b560782661b424bfd3417 100644 +--- a/ReactiveObjC/NSObject+RACSelectorSignal.m ++++ b/ReactiveObjC/NSObject+RACSelectorSignal.m +@@ -7,7 +7,11 @@ + // + + #import "NSObject+RACSelectorSignal.h" ++#if defined(BUILDING_RAC_FRAMEWORK) ++#import "extobjc/EXTRuntimeExtensions.h" ++#else + #import ++#endif + #import "NSInvocation+RACTypeParsing.h" + #import "NSObject+RACDeallocating.h" + #import "RACCompoundDisposable.h" +diff --git a/ReactiveObjC/NSText+RACSignalSupport.m b/ReactiveObjC/NSText+RACSignalSupport.m +index dfeff1ee23c3d560581c8b66a1e52b87474e4c5d..a83d271234e1a66452588e48422f5ecca0b298c6 100644 +--- a/ReactiveObjC/NSText+RACSignalSupport.m ++++ b/ReactiveObjC/NSText+RACSignalSupport.m +@@ -7,7 +7,11 @@ + // + + #import "NSText+RACSignalSupport.h" ++#if defined(BUILDING_RAC_FRAMEWORK) ++#import "extobjc/EXTScope.h" ++#else + #import ++#endif + #import "NSObject+RACDescription.h" + #import "RACDisposable.h" + #import "RACSignal.h" +diff --git a/ReactiveObjC/NSUserDefaults+RACSupport.m b/ReactiveObjC/NSUserDefaults+RACSupport.m +index 203d60ea44c5009bad48d6255f3bd6079b3c29d3..c55198bac675e7a5bd67ec3e0442cfef366a9db6 100644 +--- a/ReactiveObjC/NSUserDefaults+RACSupport.m ++++ b/ReactiveObjC/NSUserDefaults+RACSupport.m +@@ -7,7 +7,11 @@ + // + + #import "NSUserDefaults+RACSupport.h" ++#if defined(BUILDING_RAC_FRAMEWORK) ++#import "extobjc/EXTScope.h" ++#else + #import ++#endif + #import "NSNotificationCenter+RACSupport.h" + #import "NSObject+RACDeallocating.h" + #import "RACChannel.h" +diff --git a/ReactiveObjC/RACCommand.m b/ReactiveObjC/RACCommand.m +index 4342f80ba8cc1afef7bed952551cbd93486cf2db..30c684fe9c07845cc695fd641133bb4d9c4954ba 100644 +--- a/ReactiveObjC/RACCommand.m ++++ b/ReactiveObjC/RACCommand.m +@@ -7,7 +7,11 @@ + // + + #import "RACCommand.h" ++#if defined(BUILDING_RAC_FRAMEWORK) ++#import "extobjc/EXTScope.h" ++#else + #import ++#endif + #import "NSArray+RACSequenceAdditions.h" + #import "NSObject+RACDeallocating.h" + #import "NSObject+RACDescription.h" +diff --git a/ReactiveObjC/RACDynamicSignal.m b/ReactiveObjC/RACDynamicSignal.m +index 3bee2f7c2b9f441f4dfa89e7c6e716e80b99f36e..6069b0b747f5742e196e464d4b32fa5ff4781126 100644 +--- a/ReactiveObjC/RACDynamicSignal.m ++++ b/ReactiveObjC/RACDynamicSignal.m +@@ -7,7 +7,11 @@ + // + + #import "RACDynamicSignal.h" ++#if defined(BUILDING_RAC_FRAMEWORK) ++#import "extobjc/EXTScope.h" ++#else + #import ++#endif + #import "RACCompoundDisposable.h" + #import "RACPassthroughSubscriber.h" + #import "RACScheduler+Private.h" +diff --git a/ReactiveObjC/RACKVOChannel.h b/ReactiveObjC/RACKVOChannel.h +index f1bd971085d6f403d8d0d304666e91d5f4beba62..9d1b74df0432c0593d488936d74b920f4b6f1eec 100644 +--- a/ReactiveObjC/RACKVOChannel.h ++++ b/ReactiveObjC/RACKVOChannel.h +@@ -7,7 +7,11 @@ + // + + #import "RACChannel.h" ++#if defined(BUILDING_RAC_FRAMEWORK) ++#import "extobjc/EXTKeyPathCoding.h" ++#else + #import ++#endif + #import "metamacros.h" + + /// Creates a RACKVOChannel to the given key path. When the targeted object +diff --git a/ReactiveObjC/RACKVOChannel.m b/ReactiveObjC/RACKVOChannel.m +index c9e89d93472849917e21df0f8627300c216d494d..1df7ca105f77714b760294aacc5f8aaa279d30f8 100644 +--- a/ReactiveObjC/RACKVOChannel.m ++++ b/ReactiveObjC/RACKVOChannel.m +@@ -7,7 +7,11 @@ + // + + #import "RACKVOChannel.h" ++#if defined(BUILDING_RAC_FRAMEWORK) ++#import "extobjc/EXTScope.h" ++#else + #import ++#endif + #import "NSObject+RACDeallocating.h" + #import "NSObject+RACKVOWrapper.h" + #import "NSString+RACKeyPathUtilities.h" +diff --git a/ReactiveObjC/RACSubject.m b/ReactiveObjC/RACSubject.m +index 8ea052fd27d554ef00b76f3a06e8091ecf26a0d3..3d5b038a37e03fe74427e6d6f8c5c428b23d2777 100644 +--- a/ReactiveObjC/RACSubject.m ++++ b/ReactiveObjC/RACSubject.m +@@ -7,7 +7,11 @@ + // + + #import "RACSubject.h" ++#if defined(BUILDING_RAC_FRAMEWORK) ++#import "extobjc/EXTScope.h" ++#else + #import ++#endif + #import "RACCompoundDisposable.h" + #import "RACPassthroughSubscriber.h" + +diff --git a/ReactiveObjC/RACSubscriber.m b/ReactiveObjC/RACSubscriber.m +index c0ee3021b3a84cbff2e2278e110fa2253eb9a6a7..89dca6ca5a4fa5d35657c417a2a232f3fe713c53 100644 +--- a/ReactiveObjC/RACSubscriber.m ++++ b/ReactiveObjC/RACSubscriber.m +@@ -8,7 +8,11 @@ + + #import "RACSubscriber.h" + #import "RACSubscriber+Private.h" ++#if defined(BUILDING_RAC_FRAMEWORK) ++#import "extobjc/EXTScope.h" ++#else + #import ++#endif + #import "RACCompoundDisposable.h" + + @interface RACSubscriber () +diff --git a/ReactiveObjC/RACSubscriptingAssignmentTrampoline.h b/ReactiveObjC/RACSubscriptingAssignmentTrampoline.h +index 5242ea2d9c2f1e8395a4d5634ae5f67b29b93368..7d63975e2a14987ab52bcfdbaf6e5e42f44f31fa 100644 +--- a/ReactiveObjC/RACSubscriptingAssignmentTrampoline.h ++++ b/ReactiveObjC/RACSubscriptingAssignmentTrampoline.h +@@ -7,7 +7,11 @@ + // + + #import ++#if defined(BUILDING_RAC_FRAMEWORK) ++#import "extobjc/EXTKeyPathCoding.h" ++#else + #import ++#endif + + @class RACSignal<__covariant ValueType>; + +diff --git a/ReactiveObjC/RACTestScheduler.m b/ReactiveObjC/RACTestScheduler.m +index 621f40e4f376bbf5e53ed9b55b7d1c46369aecbc..936bd6050ea1c46064c9f698ae2564cdfcc91c3b 100644 +--- a/ReactiveObjC/RACTestScheduler.m ++++ b/ReactiveObjC/RACTestScheduler.m +@@ -7,7 +7,11 @@ + // + + #import "RACTestScheduler.h" ++#if defined(BUILDING_RAC_FRAMEWORK) ++#import "extobjc/EXTScope.h" ++#else + #import ++#endif + #import "RACCompoundDisposable.h" + #import "RACDisposable.h" + #import "RACScheduler+Private.h" +diff --git a/ReactiveObjC/RACTuple.m b/ReactiveObjC/RACTuple.m +index 7f67625c8466ececb2a305554a115460576d52fb..b2f7120d42f03f3933b79b474b240c0f2d9e11d3 100644 +--- a/ReactiveObjC/RACTuple.m ++++ b/ReactiveObjC/RACTuple.m +@@ -7,7 +7,11 @@ + // + + #import "RACTuple.h" ++#if defined(BUILDING_RAC_FRAMEWORK) ++#import "extobjc/EXTKeyPathCoding.h" ++#else + #import ++#endif + #import "RACTupleSequence.h" + + @implementation RACTupleNil +diff --git a/ReactiveObjC/RACUnarySequence.m b/ReactiveObjC/RACUnarySequence.m +index 76ce0bd29738a75f3f916b92a30f586d746132fd..5d54674ed63cc4235678379fb67b4fcf441bc78a 100644 +--- a/ReactiveObjC/RACUnarySequence.m ++++ b/ReactiveObjC/RACUnarySequence.m +@@ -7,7 +7,11 @@ + // + + #import "RACUnarySequence.h" ++#if defined(BUILDING_RAC_FRAMEWORK) ++#import "extobjc/EXTKeyPathCoding.h" ++#else + #import ++#endif + #import "NSObject+RACDescription.h" + + @interface RACUnarySequence () +diff --git a/ReactiveObjC/UIBarButtonItem+RACCommandSupport.m b/ReactiveObjC/UIBarButtonItem+RACCommandSupport.m +index 225e8b751a52cfd35759536efd3b085dcafae84c..7f33a9f2fba8f2aab9abd948ebedce4184e65145 100644 +--- a/ReactiveObjC/UIBarButtonItem+RACCommandSupport.m ++++ b/ReactiveObjC/UIBarButtonItem+RACCommandSupport.m +@@ -7,7 +7,11 @@ + // + + #import "UIBarButtonItem+RACCommandSupport.h" ++#if defined(BUILDING_RAC_FRAMEWORK) ++#import "extobjc/EXTKeyPathCoding.h" ++#else + #import ++#endif + #import "RACCommand.h" + #import "RACDisposable.h" + #import "RACSignal+Operations.h" +diff --git a/ReactiveObjC/UIButton+RACCommandSupport.m b/ReactiveObjC/UIButton+RACCommandSupport.m +index 6b11dad2766b525ca977a75daee3614d37afe872..1a4920721e8a7de078d2cb26382512021f306543 100644 +--- a/ReactiveObjC/UIButton+RACCommandSupport.m ++++ b/ReactiveObjC/UIButton+RACCommandSupport.m +@@ -7,7 +7,11 @@ + // + + #import "UIButton+RACCommandSupport.h" ++#if defined(BUILDING_RAC_FRAMEWORK) ++#import "extobjc/EXTKeyPathCoding.h" ++#else + #import ++#endif + #import "RACCommand.h" + #import "RACDisposable.h" + #import "RACSignal+Operations.h" +diff --git a/ReactiveObjC/UIControl+RACSignalSupport.m b/ReactiveObjC/UIControl+RACSignalSupport.m +index df3108eb71cf0245ee5fddddfb667ee76e3dd05e..831036a1297fd1230b60195190f147b87cdc582c 100644 +--- a/ReactiveObjC/UIControl+RACSignalSupport.m ++++ b/ReactiveObjC/UIControl+RACSignalSupport.m +@@ -7,7 +7,11 @@ + // + + #import "UIControl+RACSignalSupport.h" ++#if defined(BUILDING_RAC_FRAMEWORK) ++#import "extobjc/EXTScope.h" ++#else + #import ++#endif + #import "RACCompoundDisposable.h" + #import "RACDisposable.h" + #import "RACSignal.h" +diff --git a/ReactiveObjC/UIDatePicker+RACSignalSupport.m b/ReactiveObjC/UIDatePicker+RACSignalSupport.m +index 5c815c2f24756a95e6db6b30651d4860648fd497..dc06b2e7badade089477326d4677058b6c0e7d8e 100644 +--- a/ReactiveObjC/UIDatePicker+RACSignalSupport.m ++++ b/ReactiveObjC/UIDatePicker+RACSignalSupport.m +@@ -7,7 +7,11 @@ + // + + #import "UIDatePicker+RACSignalSupport.h" ++#if defined(BUILDING_RAC_FRAMEWORK) ++#import "extobjc/EXTKeyPathCoding.h" ++#else + #import ++#endif + #import "UIControl+RACSignalSupportPrivate.h" + + @implementation UIDatePicker (RACSignalSupport) +diff --git a/ReactiveObjC/UIGestureRecognizer+RACSignalSupport.m b/ReactiveObjC/UIGestureRecognizer+RACSignalSupport.m +index 4f816eb8e67115352eaa3fafd592d86fb09bf46b..bbbf22b54be5539397c549008631dcb56abbdbe9 100644 +--- a/ReactiveObjC/UIGestureRecognizer+RACSignalSupport.m ++++ b/ReactiveObjC/UIGestureRecognizer+RACSignalSupport.m +@@ -7,7 +7,11 @@ + // + + #import "UIGestureRecognizer+RACSignalSupport.h" ++#if defined(BUILDING_RAC_FRAMEWORK) ++#import "extobjc/EXTScope.h" ++#else + #import ++#endif + #import "NSObject+RACDeallocating.h" + #import "NSObject+RACDescription.h" + #import "RACCompoundDisposable.h" +diff --git a/ReactiveObjC/UIRefreshControl+RACCommandSupport.m b/ReactiveObjC/UIRefreshControl+RACCommandSupport.m +index 3301ca194b7e0bc9bc5a05658487e1cf588c979e..53eec9931841a9be3baca6603181a88702ff2682 100644 +--- a/ReactiveObjC/UIRefreshControl+RACCommandSupport.m ++++ b/ReactiveObjC/UIRefreshControl+RACCommandSupport.m +@@ -7,7 +7,11 @@ + // + + #import "UIRefreshControl+RACCommandSupport.h" ++#if defined(BUILDING_RAC_FRAMEWORK) ++#import "extobjc/EXTKeyPathCoding.h" ++#else + #import ++#endif + #import "RACCommand.h" + #import "RACCompoundDisposable.h" + #import "RACDisposable.h" +diff --git a/ReactiveObjC/UISegmentedControl+RACSignalSupport.m b/ReactiveObjC/UISegmentedControl+RACSignalSupport.m +index 782cabca08697062c72eea148f846add3fcea7c4..1aeddfc20fa09ef7744d400b496e0d3131271242 100644 +--- a/ReactiveObjC/UISegmentedControl+RACSignalSupport.m ++++ b/ReactiveObjC/UISegmentedControl+RACSignalSupport.m +@@ -7,7 +7,11 @@ + // + + #import "UISegmentedControl+RACSignalSupport.h" ++#if defined(BUILDING_RAC_FRAMEWORK) ++#import "extobjc/EXTKeyPathCoding.h" ++#else + #import ++#endif + #import "UIControl+RACSignalSupportPrivate.h" + + @implementation UISegmentedControl (RACSignalSupport) +diff --git a/ReactiveObjC/UISlider+RACSignalSupport.m b/ReactiveObjC/UISlider+RACSignalSupport.m +index 3583d843c5732cdbcb37bdf888cfd59dcd075868..d27160043099339ac0d6a55cda57f01fc5533ed8 100644 +--- a/ReactiveObjC/UISlider+RACSignalSupport.m ++++ b/ReactiveObjC/UISlider+RACSignalSupport.m +@@ -7,7 +7,11 @@ + // + + #import "UISlider+RACSignalSupport.h" ++#if defined(BUILDING_RAC_FRAMEWORK) ++#import "extobjc/EXTKeyPathCoding.h" ++#else + #import ++#endif + #import "UIControl+RACSignalSupportPrivate.h" + + @implementation UISlider (RACSignalSupport) +diff --git a/ReactiveObjC/UIStepper+RACSignalSupport.m b/ReactiveObjC/UIStepper+RACSignalSupport.m +index 5eee8f8534e9866e8082f24f23c4aa960b4235f7..a846cbf00a5d14a13aa5914cb0dc81596a44cdb5 100644 +--- a/ReactiveObjC/UIStepper+RACSignalSupport.m ++++ b/ReactiveObjC/UIStepper+RACSignalSupport.m +@@ -7,7 +7,11 @@ + // + + #import "UIStepper+RACSignalSupport.h" ++#if defined(BUILDING_RAC_FRAMEWORK) ++#import "extobjc/EXTKeyPathCoding.h" ++#else + #import ++#endif + #import "UIControl+RACSignalSupportPrivate.h" + + @implementation UIStepper (RACSignalSupport) +diff --git a/ReactiveObjC/UISwitch+RACSignalSupport.m b/ReactiveObjC/UISwitch+RACSignalSupport.m +index a5f847d805aecebadf3b27991749fcc2e7c79fd8..df62bcdae01bc4c497e2021857428129b1b64515 100644 +--- a/ReactiveObjC/UISwitch+RACSignalSupport.m ++++ b/ReactiveObjC/UISwitch+RACSignalSupport.m +@@ -7,7 +7,11 @@ + // + + #import "UISwitch+RACSignalSupport.h" ++#if defined(BUILDING_RAC_FRAMEWORK) ++#import "extobjc/EXTKeyPathCoding.h" ++#else + #import ++#endif + #import "UIControl+RACSignalSupportPrivate.h" + + @implementation UISwitch (RACSignalSupport) +diff --git a/ReactiveObjC/UITextField+RACSignalSupport.m b/ReactiveObjC/UITextField+RACSignalSupport.m +index b02444858f7adc900d02efbeb49c6b9197a31adc..9da162b06d6541c1cb2ac1a8e4606b49df74c968 100644 +--- a/ReactiveObjC/UITextField+RACSignalSupport.m ++++ b/ReactiveObjC/UITextField+RACSignalSupport.m +@@ -7,8 +7,16 @@ + // + + #import "UITextField+RACSignalSupport.h" ++#if defined(BUILDING_RAC_FRAMEWORK) ++#import "extobjc/EXTKeyPathCoding.h" ++#else + #import ++#endif ++#if defined(BUILDING_RAC_FRAMEWORK) ++#import "extobjc/EXTScope.h" ++#else + #import ++#endif + #import "NSObject+RACDeallocating.h" + #import "NSObject+RACDescription.h" + #import "RACSignal+Operations.h" +diff --git a/ReactiveObjC/UITextView+RACSignalSupport.m b/ReactiveObjC/UITextView+RACSignalSupport.m +index d47f6e59c6b070f6b00de294f8dc455726b3a386..9c6c36c6ec9e0a1fcddd5db9ecf62565bb9c5724 100644 +--- a/ReactiveObjC/UITextView+RACSignalSupport.m ++++ b/ReactiveObjC/UITextView+RACSignalSupport.m +@@ -7,7 +7,11 @@ + // + + #import "UITextView+RACSignalSupport.h" ++#if defined(BUILDING_RAC_FRAMEWORK) ++#import "extobjc/EXTScope.h" ++#else + #import ++#endif + #import "NSObject+RACDeallocating.h" + #import "NSObject+RACDescription.h" + #import "RACDelegateProxy.h" diff --git a/patches/config.json b/patches/config.json index 85f551adf425..dcf860178c07 100644 --- a/patches/config.json +++ b/patches/config.json @@ -5,5 +5,9 @@ "src/electron/patches/v8": "src/v8", - "src/electron/patches/node": "src/third_party/electron_node" + "src/electron/patches/node": "src/third_party/electron_node", + + "src/electron/patches/squirrel.mac": "src/third_party/squirrel.mac", + + "src/electron/patches/ReactiveObjC": "src/third_party/squirrel.mac/vendor/ReactiveObjC" } diff --git a/patches/squirrel.mac/.patches b/patches/squirrel.mac/.patches new file mode 100644 index 000000000000..f9ad92a0b41a --- /dev/null +++ b/patches/squirrel.mac/.patches @@ -0,0 +1,2 @@ +build_add_gn_config.patch +fix_ensure_that_self_is_retained_until_the_racsignal_is_complete.patch diff --git a/patches/squirrel.mac/build_add_gn_config.patch b/patches/squirrel.mac/build_add_gn_config.patch new file mode 100644 index 000000000000..f15773444d5c --- /dev/null +++ b/patches/squirrel.mac/build_add_gn_config.patch @@ -0,0 +1,779 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Samuel Attard +Date: Thu, 25 Jun 2020 14:39:52 -0700 +Subject: build: add GN config + +Adds BUILD.gn file and upgrades from ReactiveCocoa to ReactiveObjC + +diff --git a/.gitignore b/.gitignore +index 89c499e451ecb48655cfd42b01ffa1da56998c2e..98f80aad43a87ed75ca1660ad6a178db9a644a3a 100644 +--- a/.gitignore ++++ b/.gitignore +@@ -1,6 +1,5 @@ + # Xcode + .DS_Store +-build/ + *.pbxuser + !default.pbxuser + *.mode1v3 +@@ -16,3 +15,4 @@ profile + *.moved-aside + DerivedData + .idea/ ++vendor +diff --git a/BUILD.gn b/BUILD.gn +new file mode 100644 +index 0000000000000000000000000000000000000000..a259f5d9a70686f01b32e08c1d8337c46d3a4704 +--- /dev/null ++++ b/BUILD.gn +@@ -0,0 +1,236 @@ ++assert(is_mac) ++ ++import("//build/config/mac/rules.gni") ++import("build/xcrun.gni") ++import("filenames.gni") ++ ++bundle_data("mantle_headers") { ++ sources = [] ++ public_deps = [] ++ sources += mantle_filenames.headers ++ outputs = [ "{{bundle_contents_dir}}/Headers/{{source_file_part}}" ] ++} ++ ++mac_framework_bundle("mantle_framework") { ++ output_name = "Mantle" ++ framework_version = "A" ++ framework_contents = [ ++ "Headers", ++ "Resources", ++ ] ++ info_plist = "vendor/Mantle/Mantle/Info.plist" ++ extra_substitutions = [ "CURRENT_PROJECT_VERSION=0.0.0" ] ++ ++ configs -= [ ++ "//build/config/compiler:chromium_code", ++ "//build/config/gcc:symbol_visibility_hidden", ++ ] ++ configs += [ "//build/config/compiler:no_chromium_code" ] ++ public_deps = [ ":mantle_headers" ] ++ deps = [] ++ libs = [ ++ "CoreData.framework", ++ "Foundation.framework", ++ ] ++ sources = mantle_filenames.headers + mantle_filenames.sources ++ ++ include_dirs = [ ++ "vendor/Mantle/Mantle", ++ "vendor/Mantle/Mantle/extobjc", ++ ] ++ ++ cflags_objc = [ ++ "-fobjc-arc", ++ "-Wno-block-capture-autoreleasing", ++ ] ++ ++ ldflags = [ "-Wl,-install_name,@rpath/$output_name.framework/$output_name" ] ++} ++ ++dtrace_header_dir = "$target_gen_dir/dtrace" ++ ++xcrun_action("reactiveobjc_signalprovider_dtrace") { ++ cmd = "dtrace" ++ inputs = [ "vendor/ReactiveObjC/ReactiveObjC/RACSignalProvider.d" ] ++ outputs = [ "$dtrace_header_dir/RACSignalProvider.h" ] ++ args = [ ++ "-h", ++ "-s", ++ ] + rebase_path(inputs) + [ "-o" ] + rebase_path(outputs) ++} ++ ++xcrun_action("reactiveobjc_disposableprovider_dtrace") { ++ cmd = "dtrace" ++ inputs = ++ [ "vendor/ReactiveObjC/ReactiveObjC/RACCompoundDisposableProvider.d" ] ++ outputs = [ "$dtrace_header_dir/RACCompoundDisposableProvider.h" ] ++ args = [ ++ "-h", ++ "-s", ++ ] + rebase_path(inputs) + [ "-o" ] + rebase_path(outputs) ++} ++ ++bundle_data("reactiveobjc_headers") { ++ sources = [] ++ public_deps = [] ++ sources += reactiveobjc_filenames.public_headers ++ outputs = [ "{{bundle_contents_dir}}/Headers/{{source_file_part}}" ] ++} ++ ++mac_framework_bundle("reactiveobjc_framework") { ++ output_name = "ReactiveObjC" ++ framework_version = "A" ++ framework_contents = [ ++ "Headers", ++ "Resources", ++ ] ++ info_plist = "vendor/ReactiveObjC/ReactiveObjC/Info.plist" ++ extra_substitutions = [ ++ "CURRENT_PROJECT_VERSION=0.0.0", ++ "PRODUCT_BUNDLE_IDENTIFIER=com.electron.reactive", ++ ] ++ defines = [ "BUILDING_RAC_FRAMEWORK=1" ] ++ ++ configs -= [ ++ "//build/config/compiler:chromium_code", ++ "//build/config/gcc:symbol_visibility_hidden", ++ ] ++ configs += [ "//build/config/compiler:no_chromium_code" ] ++ deps = [ ++ ":reactiveobjc_disposableprovider_dtrace", ++ ":reactiveobjc_headers", ++ ":reactiveobjc_headers", ++ ":reactiveobjc_signalprovider_dtrace", ++ ] ++ libs = [ ++ "AppKit.framework", ++ "Foundation.framework", ++ ] ++ sources = ++ reactiveobjc_filenames.public_headers + ++ reactiveobjc_filenames.private_headers + reactiveobjc_filenames.sources ++ ++ include_dirs = [ ++ "vendor/ReactiveObjC/ReactiveObjC", ++ "vendor/ReactiveObjC/ReactiveObjC/extobjc", ++ "$dtrace_header_dir", ++ ] ++ ++ cflags_objc = [ "-fobjc-arc" ] ++ ++ ldflags = [ "-Wl,-install_name,@rpath/$output_name.framework/$output_name" ] ++} ++ ++executable("squirrel_shipit") { ++ output_name = "ShipIt" ++ configs -= [ "//build/config/compiler:chromium_code" ] ++ configs += [ "//build/config/compiler:no_chromium_code" ] ++ sources = [ ++ "Squirrel/NSBundle+SQRLVersionExtensions.h", ++ "Squirrel/NSBundle+SQRLVersionExtensions.m", ++ "Squirrel/NSError+SQRLVerbosityExtensions.h", ++ "Squirrel/NSError+SQRLVerbosityExtensions.m", ++ "Squirrel/NSProcessInfo+SQRLVersionExtensions.h", ++ "Squirrel/NSProcessInfo+SQRLVersionExtensions.m", ++ "Squirrel/RACSignal+SQRLTransactionExtensions.h", ++ "Squirrel/RACSignal+SQRLTransactionExtensions.m", ++ "Squirrel/SQRLCodeSignature.h", ++ "Squirrel/SQRLCodeSignature.m", ++ "Squirrel/SQRLInstaller+Private.h", ++ "Squirrel/SQRLInstaller.h", ++ "Squirrel/SQRLInstaller.m", ++ "Squirrel/SQRLInstallerOwnedBundle.h", ++ "Squirrel/SQRLInstallerOwnedBundle.m", ++ "Squirrel/SQRLShipItRequest.h", ++ "Squirrel/SQRLShipItRequest.m", ++ "Squirrel/SQRLTerminationListener.h", ++ "Squirrel/SQRLTerminationListener.m", ++ "Squirrel/ShipIt-main.m", ++ ] ++ deps = [ ++ ":mantle_framework+link", ++ ":reactiveobjc_framework+link", ++ ] ++ libs = [ ++ "AppKit.framework", ++ "Foundation.framework", ++ "IOKit.framework", ++ "Security.framework", ++ ] ++ ++ cflags_objc = [ ++ "-fobjc-weak", ++ "-Wno-unknown-warning-option", ++ "-Wno-block-capture-autoreleasing", ++ "-fobjc-arc", ++ ] ++ ++ ldflags = [ ++ "-rpath", ++ "@executable_path/../..", ++ "-rpath", ++ "@executable_path/../../../..", ++ ] ++ ++ include_dirs = [ "vendor/ReactiveObjC/ReactiveObjC/extobjc" ] ++} ++ ++bundle_data("squirrel_framework_shipit") { ++ sources = [] ++ public_deps = [ ":squirrel_shipit" ] ++ sources += [ "$root_out_dir/ShipIt" ] ++ outputs = [ "{{bundle_contents_dir}}/Resources/{{source_file_part}}" ] ++} ++ ++bundle_data("squirrel_framework_headers") { ++ sources = [] ++ public_deps = [] ++ sources += squirrel_filenames.headers ++ outputs = [ "{{bundle_contents_dir}}/Headers/{{source_file_part}}" ] ++} ++ ++mac_framework_bundle("squirrel_framework") { ++ output_name = "Squirrel" ++ framework_version = "A" ++ framework_contents = [ ++ "Headers", ++ "Resources", ++ ] ++ info_plist = "Squirrel/Squirrel-Info.plist" ++ extra_substitutions = [ ++ "CURRENT_PROJECT_VERSION=0.0.0", ++ "PRODUCT_BUNDLE_IDENTIFIER=com.github.Squirrel", ++ ] ++ ++ configs -= [ ++ "//build/config/compiler:chromium_code", ++ "//build/config/gcc:symbol_visibility_hidden", ++ ] ++ configs += [ "//build/config/compiler:no_chromium_code" ] ++ public_deps = [ ++ ":squirrel_framework_headers", ++ ":squirrel_framework_shipit", ++ ] ++ deps = [ ++ ":mantle_framework+link", ++ ":reactiveobjc_framework+link", ++ ] ++ libs = [ ++ "AppKit.framework", ++ "Foundation.framework", ++ "IOKit.framework", ++ "Security.framework", ++ "ServiceManagement.framework", ++ ] ++ sources = squirrel_filenames.headers + squirrel_filenames.sources ++ ++ cflags_objc = [ ++ "-fobjc-weak", ++ "-fobjc-arc", ++ "-Wno-block-capture-autoreleasing", ++ ] ++ ++ ldflags = [ "-Wl,-install_name,@rpath/$output_name.framework/$output_name" ] ++ ++ include_dirs = [ "vendor/ReactiveObjC/ReactiveObjC/extobjc" ] ++} +diff --git a/Squirrel/RACSignal+SQRLTransactionExtensions.h b/Squirrel/RACSignal+SQRLTransactionExtensions.h +index 6b98d968e794d7ef4fc08c898142e03dd08e33b3..63cdfeb963e57fe9c1c25b909e0d396f76143e52 100644 +--- a/Squirrel/RACSignal+SQRLTransactionExtensions.h ++++ b/Squirrel/RACSignal+SQRLTransactionExtensions.h +@@ -6,7 +6,7 @@ + // Copyright (c) 2013 GitHub. All rights reserved. + // + +-#import ++#import + + @interface RACSignal (SQRLTransactionExtensions) + +diff --git a/Squirrel/RACSignal+SQRLTransactionExtensions.m b/Squirrel/RACSignal+SQRLTransactionExtensions.m +index 8293acffd9215131839b82824c740d28c44cc995..4636e00cb6ccd6a200295f3bb2758e6f6e6bd2b0 100644 +--- a/Squirrel/RACSignal+SQRLTransactionExtensions.m ++++ b/Squirrel/RACSignal+SQRLTransactionExtensions.m +@@ -8,7 +8,7 @@ + + #import "RACSignal+SQRLTransactionExtensions.h" + +-#import ++#import + #import + + // How long before power assertions time out. +diff --git a/Squirrel/SQRLCodeSignature.m b/Squirrel/SQRLCodeSignature.m +index e42332ab13fb01000c73cf0b3b757d1f7141da6f..f8754dbd6a1490d2b50f1014e2daa5c1f71b2103 100644 +--- a/Squirrel/SQRLCodeSignature.m ++++ b/Squirrel/SQRLCodeSignature.m +@@ -10,8 +10,8 @@ + + #import "EXTKeyPathCoding.h" + #import "EXTScope.h" +-#import +-#import ++#import ++#import + #import + + NSString * const SQRLCodeSignatureErrorDomain = @"SQRLCodeSignatureErrorDomain"; +diff --git a/Squirrel/SQRLDirectoryManager.m b/Squirrel/SQRLDirectoryManager.m +index 34f321077f0bf59de98a41dea2cea95eff72486d..200891ca73ac67754219204340881ef85aff4845 100644 +--- a/Squirrel/SQRLDirectoryManager.m ++++ b/Squirrel/SQRLDirectoryManager.m +@@ -8,7 +8,7 @@ + + #import "SQRLDirectoryManager.h" + +-#import ++#import + + @implementation SQRLDirectoryManager + +diff --git a/Squirrel/SQRLDownloadedUpdate.m b/Squirrel/SQRLDownloadedUpdate.m +index 43c64f14d4bcd1760b68ef307b90a0fac12a3c26..038b24c25f3fc90a77b7813c66064bb3c605c6a2 100644 +--- a/Squirrel/SQRLDownloadedUpdate.m ++++ b/Squirrel/SQRLDownloadedUpdate.m +@@ -7,7 +7,7 @@ + // + + #import "SQRLDownloadedUpdate.h" +-#import ++#import + + @interface SQRLDownloadedUpdate () + +diff --git a/Squirrel/SQRLInstaller.m b/Squirrel/SQRLInstaller.m +index 9c4f6155fdc48e54190f189f005db25b34e8b5d4..7dd98ddee4ae0f4e01fd7aaa3486083bff7d0da1 100644 +--- a/Squirrel/SQRLInstaller.m ++++ b/Squirrel/SQRLInstaller.m +@@ -9,13 +9,13 @@ + #import "SQRLInstaller.h" + + #import +-#import "EXTScope.h" +-#import +-#import +-#import +-#import +-#import +-#import ++#import ++#import ++#import ++#import ++#import ++#import ++#import + #import + + #import "NSBundle+SQRLVersionExtensions.h" +diff --git a/Squirrel/SQRLShipItLauncher.m b/Squirrel/SQRLShipItLauncher.m +index 2870f52510ec0993e84c6508f8e67912928b7e57..6a9151d92f399184fff9854eb00ea506165bbbe2 100644 +--- a/Squirrel/SQRLShipItLauncher.m ++++ b/Squirrel/SQRLShipItLauncher.m +@@ -7,9 +7,9 @@ + // + + #import "SQRLShipItLauncher.h" +-#import "EXTScope.h" ++#import + #import "SQRLDirectoryManager.h" +-#import ++#import + #import + #import + #import +diff --git a/Squirrel/SQRLShipItRequest.m b/Squirrel/SQRLShipItRequest.m +index f6fd03cdbe2651c52db4cae05a442e4e53b837bf..726f91d01524e3812cb3a769db2416f6638dbca6 100644 +--- a/Squirrel/SQRLShipItRequest.m ++++ b/Squirrel/SQRLShipItRequest.m +@@ -9,7 +9,7 @@ + #import "SQRLShipItRequest.h" + + #import "EXTKeyPathCoding.h" +-#import ++#import + + NSString * const SQRLShipItRequestErrorDomain = @"SQRLShipItRequestErrorDomain"; + +diff --git a/Squirrel/SQRLTerminationListener.m b/Squirrel/SQRLTerminationListener.m +index d75970e19cdb661d359d077b657118da26bc336a..4ded7ebbd0cd63c1e3f319f23e0b51e03d4fd5ca 100644 +--- a/Squirrel/SQRLTerminationListener.m ++++ b/Squirrel/SQRLTerminationListener.m +@@ -9,12 +9,12 @@ + #import "SQRLTerminationListener.h" + + #import "EXTKeyPathCoding.h" +-#import +-#import +-#import +-#import +-#import +-#import ++#import ++#import ++#import ++#import ++#import ++#import + + @interface SQRLTerminationListener () + +diff --git a/Squirrel/SQRLUpdate.m b/Squirrel/SQRLUpdate.m +index 16ad4b6ef995e918d301cb36eda5f1f3aed86105..72ad3a3dee50c2832dd0e6063767e2ffe3cd21f5 100644 +--- a/Squirrel/SQRLUpdate.m ++++ b/Squirrel/SQRLUpdate.m +@@ -7,7 +7,7 @@ + // + + #import "SQRLUpdate.h" +-#import ++#import + + NSString * const SQRLUpdateJSONURLKey = @"url"; + NSString * const SQRLUpdateJSONReleaseNotesKey = @"notes"; +diff --git a/Squirrel/SQRLUpdater.h b/Squirrel/SQRLUpdater.h +index 4ca4a1241e9e6fd027ed35ea147feb05b9e18914..b3526b246b3729a7556ca0ec348fdc08825c89ed 100644 +--- a/Squirrel/SQRLUpdater.h ++++ b/Squirrel/SQRLUpdater.h +@@ -7,7 +7,7 @@ + // + + #import +-#import ++#import + + // Represents the current state of the updater. + // +diff --git a/Squirrel/SQRLUpdater.m b/Squirrel/SQRLUpdater.m +index 85073b2f5d58d3e071fb6ef30598973b4d00eda8..c81c820d61da3c7d1cfd2c516147c954a5773a0c 100644 +--- a/Squirrel/SQRLUpdater.m ++++ b/Squirrel/SQRLUpdater.m +@@ -18,8 +18,8 @@ + #import "SQRLUpdate.h" + #import "SQRLZipArchiver.h" + #import "SQRLShipItRequest.h" +-#import +-#import ++#import ++#import + #import + + NSString * const SQRLUpdaterErrorDomain = @"SQRLUpdaterErrorDomain"; +diff --git a/Squirrel/SQRLZipArchiver.m b/Squirrel/SQRLZipArchiver.m +index f84127f642516078249925953e97621909265deb..478509cdd528db4fcfa340c6f93fa58a446957e6 100644 +--- a/Squirrel/SQRLZipArchiver.m ++++ b/Squirrel/SQRLZipArchiver.m +@@ -7,8 +7,8 @@ + // + + #import "SQRLZipArchiver.h" +-#import +-#import ++#import ++#import + + NSString * const SQRLZipArchiverErrorDomain = @"SQRLZipArchiverErrorDomain"; + NSString * const SQRLZipArchiverExitCodeErrorKey = @"SQRLZipArchiverExitCodeErrorKey"; +diff --git a/Squirrel/ShipIt-main.m b/Squirrel/ShipIt-main.m +index 9db530f3642585154057143d590bb393b86dc063..b6047ea61a71b7f8c7b4d33e47adc23e2baadcee 100644 +--- a/Squirrel/ShipIt-main.m ++++ b/Squirrel/ShipIt-main.m +@@ -8,10 +8,10 @@ + + #import + +-#import "EXTScope.h" +-#import +-#import +-#import ++#import ++#import ++#import ++#import + + #import "NSError+SQRLVerbosityExtensions.h" + #import "RACSignal+SQRLTransactionExtensions.h" +diff --git a/build/xcrun.gni b/build/xcrun.gni +new file mode 100644 +index 0000000000000000000000000000000000000000..bdfaf95f3eca65b3e0831db1b66f651dfb3c1c67 +--- /dev/null ++++ b/build/xcrun.gni +@@ -0,0 +1,18 @@ ++template("xcrun_action") { ++ assert(defined(invoker.cmd), "Need cmd name to run") ++ assert(defined(invoker.args), "Need cmd argumets") ++ assert(defined(invoker.inputs), "Need inputs") ++ assert(defined(invoker.outputs), "Need outputs") ++ ++ action(target_name) { ++ forward_variables_from(invoker, ++ [ ++ "deps", ++ "public_deps", ++ "inputs", ++ "outputs", ++ ]) ++ script = "//third_party/squirrel.mac/build/xcrun.py" ++ args = [ invoker.cmd ] + invoker.args ++ } ++} +diff --git a/build/xcrun.py b/build/xcrun.py +new file mode 100644 +index 0000000000000000000000000000000000000000..20d0cdb51cc933f56b7a7193c195457e82500870 +--- /dev/null ++++ b/build/xcrun.py +@@ -0,0 +1,14 @@ ++#!/usr/bin/env python ++from __future__ import print_function ++import os ++import subprocess ++import sys ++ ++SOURCE_ROOT = os.path.dirname(os.path.dirname(__file__)) ++cmd = "xcrun" ++args = [cmd] + sys.argv[1:] ++try: ++ subprocess.check_output(args, stderr=subprocess.STDOUT) ++except subprocess.CalledProcessError as e: ++ print("xcrun script '" + sys.argv[2] + "' failed with code '" + str(e.returncode) + "':\n" + e.output) ++ sys.exit(e.returncode) +diff --git a/filenames.gni b/filenames.gni +new file mode 100644 +index 0000000000000000000000000000000000000000..3c224342a31f52fa2ba432983291340767d60ff7 +--- /dev/null ++++ b/filenames.gni +@@ -0,0 +1,245 @@ ++squirrel_filenames = { ++ headers = [ ++ "Squirrel/NSBundle+SQRLVersionExtensions.h", ++ "Squirrel/NSError+SQRLVerbosityExtensions.h", ++ "Squirrel/NSProcessInfo+SQRLVersionExtensions.h", ++ "Squirrel/RACSignal+SQRLTransactionExtensions.h", ++ "Squirrel/SQRLAuthorization.h", ++ "Squirrel/SQRLCodeSignature.h", ++ "Squirrel/SQRLDirectoryManager.h", ++ "Squirrel/SQRLDownloadedUpdate.h", ++ "Squirrel/SQRLShipItLauncher.h", ++ "Squirrel/SQRLShipItRequest.h", ++ "Squirrel/SQRLUpdate.h", ++ "Squirrel/SQRLUpdater.h", ++ "Squirrel/SQRLZipArchiver.h", ++ "Squirrel/Squirrel.h", ++ ] ++ ++ sources = [ ++ "Squirrel/NSBundle+SQRLVersionExtensions.m", ++ "Squirrel/NSError+SQRLVerbosityExtensions.m", ++ "Squirrel/NSProcessInfo+SQRLVersionExtensions.m", ++ "Squirrel/RACSignal+SQRLTransactionExtensions.m", ++ "Squirrel/SQRLAuthorization.m", ++ "Squirrel/SQRLCodeSignature.m", ++ "Squirrel/SQRLDirectoryManager.m", ++ "Squirrel/SQRLDownloadedUpdate.h", ++ "Squirrel/SQRLDownloadedUpdate.m", ++ "Squirrel/SQRLShipItLauncher.h", ++ "Squirrel/SQRLShipItLauncher.m", ++ "Squirrel/SQRLShipItRequest.h", ++ "Squirrel/SQRLShipItRequest.m", ++ "Squirrel/SQRLUpdate.h", ++ "Squirrel/SQRLUpdate.m", ++ "Squirrel/SQRLUpdater.h", ++ "Squirrel/SQRLUpdater.m", ++ "Squirrel/SQRLZipArchiver.h", ++ "Squirrel/SQRLZipArchiver.m", ++ "Squirrel/Squirrel.h", ++ ] ++} ++ ++mantle_filenames = { ++ headers = [ ++ "vendor/Mantle/Mantle/MTLJSONAdapter.h", ++ "vendor/Mantle/Mantle/MTLManagedObjectAdapter.h", ++ "vendor/Mantle/Mantle/MTLModel+NSCoding.h", ++ "vendor/Mantle/Mantle/MTLModel.h", ++ "vendor/Mantle/Mantle/MTLReflection.h", ++ "vendor/Mantle/Mantle/MTLValueTransformer.h", ++ "vendor/Mantle/Mantle/Mantle.h", ++ "vendor/Mantle/Mantle/NSArray+MTLManipulationAdditions.h", ++ "vendor/Mantle/Mantle/NSDictionary+MTLManipulationAdditions.h", ++ "vendor/Mantle/Mantle/NSError+MTLModelException.h", ++ "vendor/Mantle/Mantle/NSObject+MTLComparisonAdditions.h", ++ "vendor/Mantle/Mantle/NSValueTransformer+MTLInversionAdditions.h", ++ "vendor/Mantle/Mantle/NSValueTransformer+MTLPredefinedTransformerAdditions.h", ++ "vendor/Mantle/Mantle/extobjc/MTLEXTKeyPathCoding.h", ++ "vendor/Mantle/Mantle/extobjc/MTLEXTRuntimeExtensions.h", ++ "vendor/Mantle/Mantle/extobjc/MTLEXTScope.h", ++ "vendor/Mantle/Mantle/extobjc/metamacros.h", ++ ] ++ ++ sources = [ ++ "vendor/Mantle/Mantle/MTLJSONAdapter.m", ++ "vendor/Mantle/Mantle/MTLManagedObjectAdapter.m", ++ "vendor/Mantle/Mantle/MTLModel+NSCoding.m", ++ "vendor/Mantle/Mantle/MTLModel.m", ++ "vendor/Mantle/Mantle/MTLReflection.m", ++ "vendor/Mantle/Mantle/MTLValueTransformer.m", ++ "vendor/Mantle/Mantle/NSArray+MTLManipulationAdditions.m", ++ "vendor/Mantle/Mantle/NSDictionary+MTLManipulationAdditions.m", ++ "vendor/Mantle/Mantle/NSError+MTLModelException.m", ++ "vendor/Mantle/Mantle/NSObject+MTLComparisonAdditions.m", ++ "vendor/Mantle/Mantle/NSValueTransformer+MTLInversionAdditions.m", ++ "vendor/Mantle/Mantle/NSValueTransformer+MTLPredefinedTransformerAdditions.m", ++ "vendor/Mantle/Mantle/extobjc/MTLEXTRuntimeExtensions.m", ++ "vendor/Mantle/Mantle/extobjc/MTLEXTScope.m", ++ ] ++} ++ ++reactiveobjc_filenames = { ++ public_headers = [ ++ "vendor/ReactiveObjC/ReactiveObjC/NSArray+RACSequenceAdditions.h", ++ "vendor/ReactiveObjC/ReactiveObjC/NSControl+RACCommandSupport.h", ++ "vendor/ReactiveObjC/ReactiveObjC/NSControl+RACTextSignalSupport.h", ++ "vendor/ReactiveObjC/ReactiveObjC/NSData+RACSupport.h", ++ "vendor/ReactiveObjC/ReactiveObjC/NSDictionary+RACSequenceAdditions.h", ++ "vendor/ReactiveObjC/ReactiveObjC/NSEnumerator+RACSequenceAdditions.h", ++ "vendor/ReactiveObjC/ReactiveObjC/NSFileHandle+RACSupport.h", ++ "vendor/ReactiveObjC/ReactiveObjC/NSIndexSet+RACSequenceAdditions.h", ++ "vendor/ReactiveObjC/ReactiveObjC/NSInvocation+RACTypeParsing.h", ++ "vendor/ReactiveObjC/ReactiveObjC/NSNotificationCenter+RACSupport.h", ++ "vendor/ReactiveObjC/ReactiveObjC/NSObject+RACAppKitBindings.h", ++ "vendor/ReactiveObjC/ReactiveObjC/NSObject+RACDeallocating.h", ++ "vendor/ReactiveObjC/ReactiveObjC/NSObject+RACDescription.h", ++ "vendor/ReactiveObjC/ReactiveObjC/NSObject+RACKVOWrapper.h", ++ "vendor/ReactiveObjC/ReactiveObjC/NSObject+RACLifting.h", ++ "vendor/ReactiveObjC/ReactiveObjC/NSObject+RACPropertySubscribing.h", ++ "vendor/ReactiveObjC/ReactiveObjC/NSObject+RACSelectorSignal.h", ++ "vendor/ReactiveObjC/ReactiveObjC/NSOrderedSet+RACSequenceAdditions.h", ++ "vendor/ReactiveObjC/ReactiveObjC/NSSet+RACSequenceAdditions.h", ++ "vendor/ReactiveObjC/ReactiveObjC/NSString+RACKeyPathUtilities.h", ++ "vendor/ReactiveObjC/ReactiveObjC/NSString+RACSequenceAdditions.h", ++ "vendor/ReactiveObjC/ReactiveObjC/NSString+RACSupport.h", ++ "vendor/ReactiveObjC/ReactiveObjC/NSText+RACSignalSupport.h", ++ "vendor/ReactiveObjC/ReactiveObjC/NSURLConnection+RACSupport.h", ++ "vendor/ReactiveObjC/ReactiveObjC/NSUserDefaults+RACSupport.h", ++ "vendor/ReactiveObjC/ReactiveObjC/RACAnnotations.h", ++ "vendor/ReactiveObjC/ReactiveObjC/RACArraySequence.h", ++ "vendor/ReactiveObjC/ReactiveObjC/RACBehaviorSubject.h", ++ "vendor/ReactiveObjC/ReactiveObjC/RACBlockTrampoline.h", ++ "vendor/ReactiveObjC/ReactiveObjC/RACChannel.h", ++ "vendor/ReactiveObjC/ReactiveObjC/RACCommand.h", ++ "vendor/ReactiveObjC/ReactiveObjC/RACCompoundDisposable.h", ++ "vendor/ReactiveObjC/ReactiveObjC/RACDelegateProxy.h", ++ "vendor/ReactiveObjC/ReactiveObjC/RACDisposable.h", ++ "vendor/ReactiveObjC/ReactiveObjC/RACDynamicSequence.h", ++ "vendor/ReactiveObjC/ReactiveObjC/RACDynamicSignal.h", ++ "vendor/ReactiveObjC/ReactiveObjC/RACEagerSequence.h", ++ "vendor/ReactiveObjC/ReactiveObjC/RACEmptySequence.h", ++ "vendor/ReactiveObjC/ReactiveObjC/RACEmptySignal.h", ++ "vendor/ReactiveObjC/ReactiveObjC/RACErrorSignal.h", ++ "vendor/ReactiveObjC/ReactiveObjC/RACEvent.h", ++ "vendor/ReactiveObjC/ReactiveObjC/RACGroupedSignal.h", ++ "vendor/ReactiveObjC/ReactiveObjC/RACImmediateScheduler.h", ++ "vendor/ReactiveObjC/ReactiveObjC/RACIndexSetSequence.h", ++ "vendor/ReactiveObjC/ReactiveObjC/RACKVOChannel.h", ++ "vendor/ReactiveObjC/ReactiveObjC/RACKVOProxy.h", ++ "vendor/ReactiveObjC/ReactiveObjC/RACKVOTrampoline.h", ++ "vendor/ReactiveObjC/ReactiveObjC/RACMulticastConnection+Private.h", ++ "vendor/ReactiveObjC/ReactiveObjC/RACMulticastConnection.h", ++ "vendor/ReactiveObjC/ReactiveObjC/RACPassthroughSubscriber.h", ++ "vendor/ReactiveObjC/ReactiveObjC/RACQueueScheduler+Subclass.h", ++ "vendor/ReactiveObjC/ReactiveObjC/RACQueueScheduler.h", ++ "vendor/ReactiveObjC/ReactiveObjC/RACReplaySubject.h", ++ "vendor/ReactiveObjC/ReactiveObjC/RACReturnSignal.h", ++ "vendor/ReactiveObjC/ReactiveObjC/RACScheduler+Private.h", ++ "vendor/ReactiveObjC/ReactiveObjC/RACScheduler+Subclass.h", ++ "vendor/ReactiveObjC/ReactiveObjC/RACScheduler.h", ++ "vendor/ReactiveObjC/ReactiveObjC/RACScopedDisposable.h", ++ "vendor/ReactiveObjC/ReactiveObjC/RACSequence.h", ++ "vendor/ReactiveObjC/ReactiveObjC/RACSerialDisposable.h", ++ "vendor/ReactiveObjC/ReactiveObjC/RACSignal+Operations.h", ++ "vendor/ReactiveObjC/ReactiveObjC/RACSignal.h", ++ "vendor/ReactiveObjC/ReactiveObjC/RACSignalSequence.h", ++ "vendor/ReactiveObjC/ReactiveObjC/RACStream+Private.h", ++ "vendor/ReactiveObjC/ReactiveObjC/RACStream.h", ++ "vendor/ReactiveObjC/ReactiveObjC/RACStringSequence.h", ++ "vendor/ReactiveObjC/ReactiveObjC/RACSubject.h", ++ "vendor/ReactiveObjC/ReactiveObjC/RACSubscriber+Private.h", ++ "vendor/ReactiveObjC/ReactiveObjC/RACSubscriber.h", ++ "vendor/ReactiveObjC/ReactiveObjC/RACSubscriptingAssignmentTrampoline.h", ++ "vendor/ReactiveObjC/ReactiveObjC/RACSubscriptionScheduler.h", ++ "vendor/ReactiveObjC/ReactiveObjC/RACTargetQueueScheduler.h", ++ "vendor/ReactiveObjC/ReactiveObjC/RACTestScheduler.h", ++ "vendor/ReactiveObjC/ReactiveObjC/RACTuple.h", ++ "vendor/ReactiveObjC/ReactiveObjC/RACTupleSequence.h", ++ "vendor/ReactiveObjC/ReactiveObjC/RACUnarySequence.h", ++ "vendor/ReactiveObjC/ReactiveObjC/RACUnit.h", ++ "vendor/ReactiveObjC/ReactiveObjC/RACValueTransformer.h", ++ "vendor/ReactiveObjC/ReactiveObjC/ReactiveObjC.h", ++ "vendor/ReactiveObjC/ReactiveObjC/extobjc/EXTKeyPathCoding.h", ++ "vendor/ReactiveObjC/ReactiveObjC/extobjc/EXTRuntimeExtensions.h", ++ "vendor/ReactiveObjC/ReactiveObjC/extobjc/EXTScope.h", ++ "vendor/ReactiveObjC/ReactiveObjC/extobjc/metamacros.h", ++ ] ++ ++ private_headers = [] ++ ++ sources = [ ++ "vendor/ReactiveObjC/ReactiveObjC/NSArray+RACSequenceAdditions.m", ++ "vendor/ReactiveObjC/ReactiveObjC/NSControl+RACCommandSupport.m", ++ "vendor/ReactiveObjC/ReactiveObjC/NSControl+RACTextSignalSupport.m", ++ "vendor/ReactiveObjC/ReactiveObjC/NSData+RACSupport.m", ++ "vendor/ReactiveObjC/ReactiveObjC/NSDictionary+RACSequenceAdditions.m", ++ "vendor/ReactiveObjC/ReactiveObjC/NSEnumerator+RACSequenceAdditions.m", ++ "vendor/ReactiveObjC/ReactiveObjC/NSFileHandle+RACSupport.m", ++ "vendor/ReactiveObjC/ReactiveObjC/NSIndexSet+RACSequenceAdditions.m", ++ "vendor/ReactiveObjC/ReactiveObjC/NSInvocation+RACTypeParsing.m", ++ "vendor/ReactiveObjC/ReactiveObjC/NSNotificationCenter+RACSupport.m", ++ "vendor/ReactiveObjC/ReactiveObjC/NSObject+RACAppKitBindings.m", ++ "vendor/ReactiveObjC/ReactiveObjC/NSObject+RACDeallocating.m", ++ "vendor/ReactiveObjC/ReactiveObjC/NSObject+RACDescription.m", ++ "vendor/ReactiveObjC/ReactiveObjC/NSObject+RACKVOWrapper.m", ++ "vendor/ReactiveObjC/ReactiveObjC/NSObject+RACLifting.m", ++ "vendor/ReactiveObjC/ReactiveObjC/NSObject+RACPropertySubscribing.m", ++ "vendor/ReactiveObjC/ReactiveObjC/NSObject+RACSelectorSignal.m", ++ "vendor/ReactiveObjC/ReactiveObjC/NSOrderedSet+RACSequenceAdditions.m", ++ "vendor/ReactiveObjC/ReactiveObjC/NSSet+RACSequenceAdditions.m", ++ "vendor/ReactiveObjC/ReactiveObjC/NSString+RACKeyPathUtilities.m", ++ "vendor/ReactiveObjC/ReactiveObjC/NSString+RACSequenceAdditions.m", ++ "vendor/ReactiveObjC/ReactiveObjC/NSString+RACSupport.m", ++ "vendor/ReactiveObjC/ReactiveObjC/NSText+RACSignalSupport.m", ++ "vendor/ReactiveObjC/ReactiveObjC/NSURLConnection+RACSupport.m", ++ "vendor/ReactiveObjC/ReactiveObjC/NSUserDefaults+RACSupport.m", ++ "vendor/ReactiveObjC/ReactiveObjC/RACArraySequence.m", ++ "vendor/ReactiveObjC/ReactiveObjC/RACBehaviorSubject.m", ++ "vendor/ReactiveObjC/ReactiveObjC/RACBlockTrampoline.m", ++ "vendor/ReactiveObjC/ReactiveObjC/RACChannel.m", ++ "vendor/ReactiveObjC/ReactiveObjC/RACCommand.m", ++ "vendor/ReactiveObjC/ReactiveObjC/RACCompoundDisposable.m", ++ "vendor/ReactiveObjC/ReactiveObjC/RACDelegateProxy.m", ++ "vendor/ReactiveObjC/ReactiveObjC/RACDisposable.m", ++ "vendor/ReactiveObjC/ReactiveObjC/RACDynamicSequence.m", ++ "vendor/ReactiveObjC/ReactiveObjC/RACDynamicSignal.m", ++ "vendor/ReactiveObjC/ReactiveObjC/RACEagerSequence.m", ++ "vendor/ReactiveObjC/ReactiveObjC/RACEmptySequence.m", ++ "vendor/ReactiveObjC/ReactiveObjC/RACEmptySignal.m", ++ "vendor/ReactiveObjC/ReactiveObjC/RACErrorSignal.m", ++ "vendor/ReactiveObjC/ReactiveObjC/RACEvent.m", ++ "vendor/ReactiveObjC/ReactiveObjC/RACGroupedSignal.m", ++ "vendor/ReactiveObjC/ReactiveObjC/RACImmediateScheduler.m", ++ "vendor/ReactiveObjC/ReactiveObjC/RACIndexSetSequence.m", ++ "vendor/ReactiveObjC/ReactiveObjC/RACKVOChannel.m", ++ "vendor/ReactiveObjC/ReactiveObjC/RACKVOProxy.m", ++ "vendor/ReactiveObjC/ReactiveObjC/RACKVOTrampoline.m", ++ "vendor/ReactiveObjC/ReactiveObjC/RACMulticastConnection.m", ++ "vendor/ReactiveObjC/ReactiveObjC/RACPassthroughSubscriber.m", ++ "vendor/ReactiveObjC/ReactiveObjC/RACQueueScheduler.m", ++ "vendor/ReactiveObjC/ReactiveObjC/RACReplaySubject.m", ++ "vendor/ReactiveObjC/ReactiveObjC/RACReturnSignal.m", ++ "vendor/ReactiveObjC/ReactiveObjC/RACScheduler.m", ++ "vendor/ReactiveObjC/ReactiveObjC/RACScopedDisposable.m", ++ "vendor/ReactiveObjC/ReactiveObjC/RACSequence.m", ++ "vendor/ReactiveObjC/ReactiveObjC/RACSerialDisposable.m", ++ "vendor/ReactiveObjC/ReactiveObjC/RACSignal+Operations.m", ++ "vendor/ReactiveObjC/ReactiveObjC/RACSignal.m", ++ "vendor/ReactiveObjC/ReactiveObjC/RACSignalSequence.m", ++ "vendor/ReactiveObjC/ReactiveObjC/RACStream.m", ++ "vendor/ReactiveObjC/ReactiveObjC/RACStringSequence.m", ++ "vendor/ReactiveObjC/ReactiveObjC/RACSubject.m", ++ "vendor/ReactiveObjC/ReactiveObjC/RACSubscriber.m", ++ "vendor/ReactiveObjC/ReactiveObjC/RACSubscriptingAssignmentTrampoline.m", ++ "vendor/ReactiveObjC/ReactiveObjC/RACSubscriptionScheduler.m", ++ "vendor/ReactiveObjC/ReactiveObjC/RACTargetQueueScheduler.m", ++ "vendor/ReactiveObjC/ReactiveObjC/RACTestScheduler.m", ++ "vendor/ReactiveObjC/ReactiveObjC/RACTuple.m", ++ "vendor/ReactiveObjC/ReactiveObjC/RACTupleSequence.m", ++ "vendor/ReactiveObjC/ReactiveObjC/RACUnarySequence.m", ++ "vendor/ReactiveObjC/ReactiveObjC/RACUnit.m", ++ "vendor/ReactiveObjC/ReactiveObjC/RACValueTransformer.m", ++ "vendor/ReactiveObjC/ReactiveObjC/extobjc/EXTRuntimeExtensions.m", ++ ] ++} diff --git a/patches/squirrel.mac/fix_ensure_that_self_is_retained_until_the_racsignal_is_complete.patch b/patches/squirrel.mac/fix_ensure_that_self_is_retained_until_the_racsignal_is_complete.patch new file mode 100644 index 000000000000..247c7fd5849e --- /dev/null +++ b/patches/squirrel.mac/fix_ensure_that_self_is_retained_until_the_racsignal_is_complete.patch @@ -0,0 +1,20 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Samuel Attard +Date: Tue, 30 Jun 2020 15:38:50 -0700 +Subject: fix: ensure that self is retained until the RACSignal is complete + +Looks like the clang that Chromium uses is slightly smarter with ARC than whatever Squirrel was built with previously. We now need to keep a reference to self to keep it alive into the "then" of the RACSignal. + +diff --git a/Squirrel/SQRLZipArchiver.m b/Squirrel/SQRLZipArchiver.m +index 478509cdd528db4fcfa340c6f93fa58a446957e6..7c279bf73c368453bff4f922d76908c06dc378cd 100644 +--- a/Squirrel/SQRLZipArchiver.m ++++ b/Squirrel/SQRLZipArchiver.m +@@ -134,7 +134,7 @@ const NSInteger SQRLZipArchiverShellTaskFailed = 1; + return [RACSignal + zip:@[ self.taskTerminated, self.standardErrorData ] + reduce:^(NSNumber *exitStatus, NSData *errorData) { +- if (exitStatus.intValue == 0) return [RACSignal empty]; ++ if (exitStatus.intValue == 0) return [RACSignal return:self]; + + NSMutableDictionary *userInfo = [NSMutableDictionary dictionary]; + userInfo[SQRLZipArchiverExitCodeErrorKey] = exitStatus; diff --git a/script/external-binaries.json b/script/external-binaries.json index 54ab25e1d0e5..4fbefdaf92ca 100644 --- a/script/external-binaries.json +++ b/script/external-binaries.json @@ -1,21 +1,6 @@ { "baseUrl": "https://electron-build-tools.s3-us-west-2.amazonaws.com/build-dependencies", "files": [ - { - "name": "Mantle.zip", - "platform": "darwin", - "sha": "f9865e115c03871b45d3a2d8734220cb147a02dace46c92f766ca5d3059281dd" - }, - { - "name": "ReactiveCocoa.zip", - "platform": "darwin", - "sha": "8ae85cd226fa4076472bfdfcda4745b5c7edf31fbe695868068eeaf62e7fa962" - }, - { - "name": "Squirrel.zip", - "platform": "darwin", - "sha": "e516fd5c24c0ad267fd854848b04be0552be977aa846fa7f3c65ef4618699511" - }, { "name": "sccache-darwin-x64.zip", "platform": "darwin", diff --git a/script/zip_manifests/dist_zip.mac.x64.manifest b/script/zip_manifests/dist_zip.mac.x64.manifest index 28834fb18528..fa467418a07f 100644 --- a/script/zip_manifests/dist_zip.mac.x64.manifest +++ b/script/zip_manifests/dist_zip.mac.x64.manifest @@ -159,113 +159,28 @@ Electron.app/Contents/Frameworks/Electron Helper (Renderer).app/Contents/MacOS/ Electron.app/Contents/Frameworks/Electron Helper (Renderer).app/Contents/MacOS/Electron Helper (Renderer) Electron.app/Contents/Frameworks/Electron Helper (Renderer).app/Contents/PkgInfo Electron.app/Contents/Frameworks/Mantle.framework/ -Electron.app/Contents/Frameworks/Mantle.framework/Headers Electron.app/Contents/Frameworks/Mantle.framework/Mantle -Electron.app/Contents/Frameworks/Mantle.framework/Modules Electron.app/Contents/Frameworks/Mantle.framework/Resources Electron.app/Contents/Frameworks/Mantle.framework/Versions/ Electron.app/Contents/Frameworks/Mantle.framework/Versions/A/ -Electron.app/Contents/Frameworks/Mantle.framework/Versions/A/Headers/ -Electron.app/Contents/Frameworks/Mantle.framework/Versions/A/Headers/MTLJSONAdapter.h -Electron.app/Contents/Frameworks/Mantle.framework/Versions/A/Headers/MTLManagedObjectAdapter.h -Electron.app/Contents/Frameworks/Mantle.framework/Versions/A/Headers/MTLModel+NSCoding.h -Electron.app/Contents/Frameworks/Mantle.framework/Versions/A/Headers/MTLModel.h -Electron.app/Contents/Frameworks/Mantle.framework/Versions/A/Headers/MTLValueTransformer.h -Electron.app/Contents/Frameworks/Mantle.framework/Versions/A/Headers/Mantle.h -Electron.app/Contents/Frameworks/Mantle.framework/Versions/A/Headers/NSArray+MTLManipulationAdditions.h -Electron.app/Contents/Frameworks/Mantle.framework/Versions/A/Headers/NSDictionary+MTLManipulationAdditions.h -Electron.app/Contents/Frameworks/Mantle.framework/Versions/A/Headers/NSObject+MTLComparisonAdditions.h -Electron.app/Contents/Frameworks/Mantle.framework/Versions/A/Headers/NSValueTransformer+MTLInversionAdditions.h -Electron.app/Contents/Frameworks/Mantle.framework/Versions/A/Headers/NSValueTransformer+MTLPredefinedTransformerAdditions.h Electron.app/Contents/Frameworks/Mantle.framework/Versions/A/Mantle -Electron.app/Contents/Frameworks/Mantle.framework/Versions/A/Modules/ -Electron.app/Contents/Frameworks/Mantle.framework/Versions/A/Modules/module.modulemap Electron.app/Contents/Frameworks/Mantle.framework/Versions/A/Resources/ Electron.app/Contents/Frameworks/Mantle.framework/Versions/A/Resources/Info.plist Electron.app/Contents/Frameworks/Mantle.framework/Versions/Current -Electron.app/Contents/Frameworks/ReactiveCocoa.framework/ -Electron.app/Contents/Frameworks/ReactiveCocoa.framework/Headers -Electron.app/Contents/Frameworks/ReactiveCocoa.framework/Modules -Electron.app/Contents/Frameworks/ReactiveCocoa.framework/ReactiveCocoa -Electron.app/Contents/Frameworks/ReactiveCocoa.framework/Resources -Electron.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/ -Electron.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/ -Electron.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/ -Electron.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/EXTKeyPathCoding.h -Electron.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/EXTScope.h -Electron.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/NSArray+RACSequenceAdditions.h -Electron.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/NSControl+RACCommandSupport.h -Electron.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/NSControl+RACTextSignalSupport.h -Electron.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/NSData+RACSupport.h -Electron.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/NSDictionary+RACSequenceAdditions.h -Electron.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/NSEnumerator+RACSequenceAdditions.h -Electron.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/NSFileHandle+RACSupport.h -Electron.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/NSIndexSet+RACSequenceAdditions.h -Electron.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/NSNotificationCenter+RACSupport.h -Electron.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/NSObject+RACAppKitBindings.h -Electron.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/NSObject+RACDeallocating.h -Electron.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/NSObject+RACLifting.h -Electron.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/NSObject+RACPropertySubscribing.h -Electron.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/NSObject+RACSelectorSignal.h -Electron.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/NSOrderedSet+RACSequenceAdditions.h -Electron.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/NSSet+RACSequenceAdditions.h -Electron.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/NSString+RACSequenceAdditions.h -Electron.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/NSString+RACSupport.h -Electron.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/NSText+RACSignalSupport.h -Electron.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/NSURLConnection+RACSupport.h -Electron.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/NSUserDefaults+RACSupport.h -Electron.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/RACBacktrace.h -Electron.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/RACBehaviorSubject.h -Electron.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/RACChannel.h -Electron.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/RACCommand.h -Electron.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/RACCompoundDisposable.h -Electron.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/RACDisposable.h -Electron.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/RACEvent.h -Electron.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/RACGroupedSignal.h -Electron.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/RACKVOChannel.h -Electron.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/RACMulticastConnection.h -Electron.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/RACQueueScheduler+Subclass.h -Electron.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/RACQueueScheduler.h -Electron.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/RACReplaySubject.h -Electron.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/RACScheduler+Subclass.h -Electron.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/RACScheduler.h -Electron.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/RACScopedDisposable.h -Electron.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/RACSequence.h -Electron.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/RACSerialDisposable.h -Electron.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/RACSignal+Operations.h -Electron.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/RACSignal.h -Electron.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/RACStream.h -Electron.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/RACSubject.h -Electron.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/RACSubscriber.h -Electron.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/RACSubscriptingAssignmentTrampoline.h -Electron.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/RACTargetQueueScheduler.h -Electron.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/RACTestScheduler.h -Electron.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/RACTuple.h -Electron.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/RACUnit.h -Electron.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/ReactiveCocoa.h -Electron.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/metamacros.h -Electron.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Modules/ -Electron.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Modules/module.modulemap -Electron.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/ReactiveCocoa -Electron.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Resources/ -Electron.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Resources/Info.plist -Electron.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/Current +Electron.app/Contents/Frameworks/ReactiveObjC.framework/ +Electron.app/Contents/Frameworks/ReactiveObjC.framework/ReactiveObjC +Electron.app/Contents/Frameworks/ReactiveObjC.framework/Resources +Electron.app/Contents/Frameworks/ReactiveObjC.framework/Versions/ +Electron.app/Contents/Frameworks/ReactiveObjC.framework/Versions/A/ +Electron.app/Contents/Frameworks/ReactiveObjC.framework/Versions/A/ReactiveObjC +Electron.app/Contents/Frameworks/ReactiveObjC.framework/Versions/A/Resources/ +Electron.app/Contents/Frameworks/ReactiveObjC.framework/Versions/A/Resources/Info.plist +Electron.app/Contents/Frameworks/ReactiveObjC.framework/Versions/Current Electron.app/Contents/Frameworks/Squirrel.framework/ -Electron.app/Contents/Frameworks/Squirrel.framework/Headers -Electron.app/Contents/Frameworks/Squirrel.framework/Modules Electron.app/Contents/Frameworks/Squirrel.framework/Resources Electron.app/Contents/Frameworks/Squirrel.framework/Squirrel Electron.app/Contents/Frameworks/Squirrel.framework/Versions/ Electron.app/Contents/Frameworks/Squirrel.framework/Versions/A/ -Electron.app/Contents/Frameworks/Squirrel.framework/Versions/A/Headers/ -Electron.app/Contents/Frameworks/Squirrel.framework/Versions/A/Headers/NSBundle+SQRLVersionExtensions.h -Electron.app/Contents/Frameworks/Squirrel.framework/Versions/A/Headers/NSProcessInfo+SQRLVersionExtensions.h -Electron.app/Contents/Frameworks/Squirrel.framework/Versions/A/Headers/SQRLDownloadedUpdate.h -Electron.app/Contents/Frameworks/Squirrel.framework/Versions/A/Headers/SQRLUpdate.h -Electron.app/Contents/Frameworks/Squirrel.framework/Versions/A/Headers/SQRLUpdater.h -Electron.app/Contents/Frameworks/Squirrel.framework/Versions/A/Headers/Squirrel.h -Electron.app/Contents/Frameworks/Squirrel.framework/Versions/A/Modules/ -Electron.app/Contents/Frameworks/Squirrel.framework/Versions/A/Modules/module.modulemap Electron.app/Contents/Frameworks/Squirrel.framework/Versions/A/Resources/ Electron.app/Contents/Frameworks/Squirrel.framework/Versions/A/Resources/Info.plist Electron.app/Contents/Frameworks/Squirrel.framework/Versions/A/Resources/ShipIt diff --git a/shell/browser/auto_updater_mac.mm b/shell/browser/auto_updater_mac.mm index a9ebb601bf81..faffe323db8e 100644 --- a/shell/browser/auto_updater_mac.mm +++ b/shell/browser/auto_updater_mac.mm @@ -6,9 +6,9 @@ #include -#import -#import -#import +#import +#import +#import #import #include "base/bind.h"