From 7d1f63ab03ff71a5bbf033201e59072a6a69c17a Mon Sep 17 00:00:00 2001 From: Garrett Moon Date: Fri, 21 Aug 2020 11:26:22 -0700 Subject: [PATCH] Fixes up the Carthage build for downstream projects (#280) --- Cartfile.resolved | 2 +- .../PINOperation/.github/workflows/ci.yml | 80 ++++ .../PINOperation/.github_changelog_generator | 3 + Carthage/Checkouts/PINOperation/.gitignore | 3 + .../contents.xcworkspacedata | 7 + Carthage/Checkouts/PINOperation/BUCK | 5 +- Carthage/Checkouts/PINOperation/CHANGELOG.md | 27 +- .../PINOperation/CI/exclude-from-build.json | 4 +- .../Checkouts/PINOperation/CODE_OF_CONDUCT.md | 40 ++ .../project.pbxproj | 391 ++++++++++++++++++ .../contents.xcworkspacedata | 7 + .../xcshareddata/IDEWorkspaceChecks.plist | 8 + .../contents.xcworkspacedata | 10 + .../xcshareddata/IDEWorkspaceChecks.plist | 8 + .../PINOperationExample/AppDelegate.swift | 31 ++ .../AppIcon.appiconset/Contents.json | 98 +++++ .../Assets.xcassets/Contents.json | 6 + .../Base.lproj/LaunchScreen.storyboard | 25 ++ .../Example/PINOperationExample/Info.plist | 41 ++ .../PINOperationExample/MainViewController.h | 17 + .../PINOperationExample/MainViewController.m | 41 ++ .../PINOperationExample-Bridging-Header.h | 1 + .../Checkouts/PINOperation/Example/Podfile | 6 + .../PINOperation/Example/Podfile.lock | 16 + .../PINOperation/PINOperation.podspec | 4 +- .../PINOperation.xcodeproj/project.pbxproj | 146 ++++++- .../xcshareddata/IDEWorkspaceChecks.plist | 8 + .../xcschemes/PINOperation-macOS.xcscheme | 4 +- .../xcschemes/PINOperation-tvOS.xcscheme | 4 +- .../xcschemes/PINOperation-watchOS.xcscheme | 67 +++ .../xcschemes/PINOperation.xcscheme | 4 +- Carthage/Checkouts/PINOperation/Package.swift | 18 + Carthage/Checkouts/PINOperation/README.md | 4 +- Carthage/Checkouts/PINOperation/RELEASE.md | 13 + .../PINOperation/Source/PINOperation.h | 8 +- .../PINOperation/Source/PINOperationGroup.m | 2 +- .../PINOperation/Source/PINOperationQueue.m | 43 +- .../Tests/PINOperationGroupTests.m | 5 +- .../Tests/PINOperationQueueTests.m | 9 +- PINCache.xcodeproj/project.pbxproj | 6 +- 40 files changed, 1163 insertions(+), 59 deletions(-) create mode 100644 Carthage/Checkouts/PINOperation/.github/workflows/ci.yml create mode 100644 Carthage/Checkouts/PINOperation/.github_changelog_generator create mode 100644 Carthage/Checkouts/PINOperation/.swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata create mode 100644 Carthage/Checkouts/PINOperation/CODE_OF_CONDUCT.md create mode 100644 Carthage/Checkouts/PINOperation/Example/PINOperationExample.xcodeproj/project.pbxproj create mode 100644 Carthage/Checkouts/PINOperation/Example/PINOperationExample.xcodeproj/project.xcworkspace/contents.xcworkspacedata create mode 100644 Carthage/Checkouts/PINOperation/Example/PINOperationExample.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist create mode 100644 Carthage/Checkouts/PINOperation/Example/PINOperationExample.xcworkspace/contents.xcworkspacedata create mode 100644 Carthage/Checkouts/PINOperation/Example/PINOperationExample.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist create mode 100644 Carthage/Checkouts/PINOperation/Example/PINOperationExample/AppDelegate.swift create mode 100644 Carthage/Checkouts/PINOperation/Example/PINOperationExample/Assets.xcassets/AppIcon.appiconset/Contents.json create mode 100644 Carthage/Checkouts/PINOperation/Example/PINOperationExample/Assets.xcassets/Contents.json create mode 100644 Carthage/Checkouts/PINOperation/Example/PINOperationExample/Base.lproj/LaunchScreen.storyboard create mode 100644 Carthage/Checkouts/PINOperation/Example/PINOperationExample/Info.plist create mode 100644 Carthage/Checkouts/PINOperation/Example/PINOperationExample/MainViewController.h create mode 100644 Carthage/Checkouts/PINOperation/Example/PINOperationExample/MainViewController.m create mode 100644 Carthage/Checkouts/PINOperation/Example/PINOperationExample/PINOperationExample-Bridging-Header.h create mode 100644 Carthage/Checkouts/PINOperation/Example/Podfile create mode 100644 Carthage/Checkouts/PINOperation/Example/Podfile.lock create mode 100644 Carthage/Checkouts/PINOperation/PINOperation.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist create mode 100644 Carthage/Checkouts/PINOperation/PINOperation.xcodeproj/xcshareddata/xcschemes/PINOperation-watchOS.xcscheme create mode 100644 Carthage/Checkouts/PINOperation/Package.swift create mode 100644 Carthage/Checkouts/PINOperation/RELEASE.md diff --git a/Cartfile.resolved b/Cartfile.resolved index d3f8bfc0..841e9a7d 100644 --- a/Cartfile.resolved +++ b/Cartfile.resolved @@ -1 +1 @@ -github "pinterest/PINOperation" "1.1" +github "pinterest/PINOperation" "1.2" diff --git a/Carthage/Checkouts/PINOperation/.github/workflows/ci.yml b/Carthage/Checkouts/PINOperation/.github/workflows/ci.yml new file mode 100644 index 00000000..cfe85acc --- /dev/null +++ b/Carthage/Checkouts/PINOperation/.github/workflows/ci.yml @@ -0,0 +1,80 @@ +--- +name: CI + +on: + push: + branches: + - master + - 'releases/*' + pull_request: + branches: + - master + +jobs: + build: + name: Build + runs-on: macOS-latest + strategy: + matrix: + platform: ['iOS Simulator,name=iPhone 8'] + steps: + - uses: actions/checkout@v2 + - name: Analyze and Test + run: | + xcodebuild clean analyze test \ + -destination "platform=${{ matrix.platform }}" \ + -sdk "iphonesimulator" \ + -project PINOperation.xcodeproj \ + -scheme PINOperation \ + ONLY_ACTIVE_ARCH=NO \ + CODE_SIGNING_REQUIRED=NO \ + CLANG_ANALYZER_OUTPUT=plist-html \ + CLANG_ANALYZER_OUTPUT_DIR="$(pwd)/clang" \ + | xcpretty + if [[ -n `find $(pwd)/clang -name "*.html"` ]] ; then rm -rf $(pwd)/clang; exit 1; fi + rm -rf $(pwd)/clang + cocoapods: + name: CocoaPods + runs-on: macOS-latest + steps: + - uses: actions/checkout@v2 + - name: Lint + run: pod lib lint + carthage: + name: Carthage + runs-on: macOS-latest + steps: + - uses: actions/checkout@v2 + - name: Build + run: carthage build --no-skip-current + spm: + name: Swift Package Manager tests + runs-on: macOS-latest + steps: + - uses: actions/checkout@v2 + - name: Test + run: swift test + example: + name: Build Example project + runs-on: macOS-latest + strategy: + matrix: + platform: ['iOS Simulator,name=iPhone 8'] + steps: + - uses: actions/checkout@v2 + - name: Install Pods + run: cd Example && pod install + - name: Build + run: | + cd Example && xcodebuild clean analyze \ + -destination "platform=${{ matrix.platform }}" \ + -sdk "iphonesimulator" \ + -workspace PINOperationExample.xcworkspace \ + -scheme PINOperationExample \ + ONLY_ACTIVE_ARCH=NO \ + CODE_SIGNING_REQUIRED=NO \ + CLANG_ANALYZER_OUTPUT=plist-html \ + CLANG_ANALYZER_OUTPUT_DIR="$(pwd)/clang" \ + | xcpretty + if [[ -n `find $(pwd)/clang -name "*.html"` ]] ; then rm -rf $(pwd)/clang; exit 1; fi + rm -rf $(pwd)/clang diff --git a/Carthage/Checkouts/PINOperation/.github_changelog_generator b/Carthage/Checkouts/PINOperation/.github_changelog_generator new file mode 100644 index 00000000..19665f65 --- /dev/null +++ b/Carthage/Checkouts/PINOperation/.github_changelog_generator @@ -0,0 +1,3 @@ +issues=false +since-tag=1.1.1 +future-release=1.2 diff --git a/Carthage/Checkouts/PINOperation/.gitignore b/Carthage/Checkouts/PINOperation/.gitignore index fd433d36..4021767b 100644 --- a/Carthage/Checkouts/PINOperation/.gitignore +++ b/Carthage/Checkouts/PINOperation/.gitignore @@ -52,3 +52,6 @@ Carthage/Build # Bundler .bundle vendor + +# Example project +Example/Pods diff --git a/Carthage/Checkouts/PINOperation/.swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata b/Carthage/Checkouts/PINOperation/.swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata new file mode 100644 index 00000000..919434a6 --- /dev/null +++ b/Carthage/Checkouts/PINOperation/.swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/Carthage/Checkouts/PINOperation/BUCK b/Carthage/Checkouts/PINOperation/BUCK index 76cacd3d..c7ade9d1 100755 --- a/Carthage/Checkouts/PINOperation/BUCK +++ b/Carthage/Checkouts/PINOperation/BUCK @@ -1,8 +1,9 @@ apple_library( name = 'PINOperation', - exported_headers = glob(['PINOperation/*.h']), + modular = True, + exported_headers = glob(['Source/*.h']), srcs = - glob(['PINOperation/*.m']), + glob(['Source/*.m']), preprocessor_flags = ['-fobjc-arc'], lang_preprocessor_flags = { 'C': ['-std=gnu99'], diff --git a/Carthage/Checkouts/PINOperation/CHANGELOG.md b/Carthage/Checkouts/PINOperation/CHANGELOG.md index 1844305f..221ad3cb 100644 --- a/Carthage/Checkouts/PINOperation/CHANGELOG.md +++ b/Carthage/Checkouts/PINOperation/CHANGELOG.md @@ -1,5 +1,28 @@ -## master -* Add your own contributions to the next release on the line below this with your name. +## [1.2](https://github.com/Pinterest/PINOperation/tree/1.2) (2020-06-30) + +[Full Changelog](https://github.com/Pinterest/PINOperation/compare/1.1.2...1.2) + +**Merged pull requests:** + +- Swift Package Manager support [\#32](https://github.com/pinterest/PINOperation/pull/32) ([martinpucik](https://github.com/martinpucik)) +- Add Carthage for watchOS, dependent by PINCache [\#31](https://github.com/pinterest/PINOperation/pull/31) ([dreampiggy](https://github.com/dreampiggy)) +- Fix analyzing [\#30](https://github.com/pinterest/PINOperation/pull/30) ([garrettmoon](https://github.com/garrettmoon)) +- Standardize our GitHub Actions CI workflow [\#29](https://github.com/pinterest/PINOperation/pull/29) ([jparise](https://github.com/jparise)) +- Github CI [\#26](https://github.com/pinterest/PINOperation/pull/26) ([rahul-malik](https://github.com/rahul-malik)) +- Fixes coalesce operation race condition [\#24](https://github.com/pinterest/PINOperation/pull/24) ([zhongwuzw](https://github.com/zhongwuzw)) + +## [1.1.2](https://github.com/Pinterest/PINOperation/tree/1.1.2) (2019-06-11) + +[Full Changelog](https://github.com/Pinterest/PINOperation/compare/1.1.1...1.1.2) + +**Merged pull requests:** + +- Modernizing project [\#21](https://github.com/pinterest/PINOperation/pull/21) ([garrettmoon](https://github.com/garrettmoon)) +- Updates BUCK build file to match source layout. [\#20](https://github.com/pinterest/PINOperation/pull/20) ([RCacheaux](https://github.com/RCacheaux)) +- 1.1.1 release [\#19](https://github.com/pinterest/PINOperation/pull/19) ([garrettmoon](https://github.com/garrettmoon)) + +## 1.1.1 -- 2018 February 3 +* Cleanup warnings [garrett](https://github.com/garrettmoon) ## 1.1 -- 2017 October 7 * Deprecate addOperation: in favor of scheduleOperation: [garrett](https://github.com/garrettmoon) diff --git a/Carthage/Checkouts/PINOperation/CI/exclude-from-build.json b/Carthage/Checkouts/PINOperation/CI/exclude-from-build.json index abc6f913..03853aa7 100644 --- a/Carthage/Checkouts/PINOperation/CI/exclude-from-build.json +++ b/Carthage/Checkouts/PINOperation/CI/exclude-from-build.json @@ -1,5 +1,7 @@ [ "^plans/", "^docs/", - "^CI/exclude-from-build.json$" + "^CI/exclude-from-build.json$", + "^README.md$", + "^CHANGELOG.md$" ] \ No newline at end of file diff --git a/Carthage/Checkouts/PINOperation/CODE_OF_CONDUCT.md b/Carthage/Checkouts/PINOperation/CODE_OF_CONDUCT.md new file mode 100644 index 00000000..8b4e45e2 --- /dev/null +++ b/Carthage/Checkouts/PINOperation/CODE_OF_CONDUCT.md @@ -0,0 +1,40 @@ +# Code of Conduct + +At Pinterest, we work hard to ensure that our work environment is welcoming +and inclusive to as many people as possible. We are committed to creating this +environment for everyone involved in our open source projects as well. We +welcome all participants regardless of ability, age, ethnicity, identified +gender, religion (or lack there of), sexual orientation and socioeconomic +status. + +This code of conduct details our expectations for upholding these values. + +## Good behavior + +We expect members of our community to exhibit good behavior including (but of +course not limited to): + +- Using intentional and empathetic language. +- Focusing on resolving instead of escalating conflict. +- Providing constructive feedback. + +## Unacceptable behavior + +Some examples of unacceptable behavior (again, this is not an exhaustive +list): + +- Harassment, publicly or in private. +- Trolling. +- Sexual advances (this isn’t the place for it). +- Publishing other’s personal information. +- Any behavior which would be deemed unacceptable in a professional environment. + +## Recourse + +If you are witness to or the target of unacceptable behavior, it should be +reported to Pinterest at opensource-policy@pinterest.com. All reporters will +be kept confidential and an appropriate response for each incident will be +evaluated. + +If the maintainers do not uphold and enforce this code of conduct in +good faith, community leadership will hold them accountable. \ No newline at end of file diff --git a/Carthage/Checkouts/PINOperation/Example/PINOperationExample.xcodeproj/project.pbxproj b/Carthage/Checkouts/PINOperation/Example/PINOperationExample.xcodeproj/project.pbxproj new file mode 100644 index 00000000..382c6346 --- /dev/null +++ b/Carthage/Checkouts/PINOperation/Example/PINOperationExample.xcodeproj/project.pbxproj @@ -0,0 +1,391 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 50; + objects = { + +/* Begin PBXBuildFile section */ + 1387274F245D5BB500C1F56D /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1387274E245D5BB500C1F56D /* AppDelegate.swift */; }; + 13872758245D5BB800C1F56D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13872757245D5BB800C1F56D /* Assets.xcassets */; }; + 1387275B245D5BB800C1F56D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 13872759245D5BB800C1F56D /* LaunchScreen.storyboard */; }; + 13872765245D5D8200C1F56D /* MainViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 13872764245D5D8200C1F56D /* MainViewController.m */; }; + 6DD78925193625590E803994 /* libPods-PINOperationExample.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 7BDDE545CD189CC0B424ECD0 /* libPods-PINOperationExample.a */; }; +/* End PBXBuildFile section */ + +/* Begin PBXFileReference section */ + 1387274B245D5BB500C1F56D /* PINOperationExample.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = PINOperationExample.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 1387274E245D5BB500C1F56D /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; + 13872757245D5BB800C1F56D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + 1387275A245D5BB800C1F56D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; + 1387275C245D5BB800C1F56D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 13872762245D5D8200C1F56D /* PINOperationExample-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "PINOperationExample-Bridging-Header.h"; sourceTree = ""; }; + 13872763245D5D8200C1F56D /* MainViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MainViewController.h; sourceTree = ""; }; + 13872764245D5D8200C1F56D /* MainViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MainViewController.m; sourceTree = ""; }; + 15635AC2BB0501241D3126BA /* Pods-PINOperationExample.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-PINOperationExample.release.xcconfig"; path = "Target Support Files/Pods-PINOperationExample/Pods-PINOperationExample.release.xcconfig"; sourceTree = ""; }; + 2F8A2FBFCEF95140E01995E8 /* Pods-PINOperationExample.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-PINOperationExample.debug.xcconfig"; path = "Target Support Files/Pods-PINOperationExample/Pods-PINOperationExample.debug.xcconfig"; sourceTree = ""; }; + 7BDDE545CD189CC0B424ECD0 /* libPods-PINOperationExample.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-PINOperationExample.a"; sourceTree = BUILT_PRODUCTS_DIR; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 13872748245D5BB500C1F56D /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 6DD78925193625590E803994 /* libPods-PINOperationExample.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 110EBBE34DCD59092AC3306C /* Pods */ = { + isa = PBXGroup; + children = ( + 2F8A2FBFCEF95140E01995E8 /* Pods-PINOperationExample.debug.xcconfig */, + 15635AC2BB0501241D3126BA /* Pods-PINOperationExample.release.xcconfig */, + ); + path = Pods; + sourceTree = ""; + }; + 13872742245D5BB500C1F56D = { + isa = PBXGroup; + children = ( + 1387274D245D5BB500C1F56D /* PINOperationExample */, + 1387274C245D5BB500C1F56D /* Products */, + 110EBBE34DCD59092AC3306C /* Pods */, + 5C200BF654CB547E7117CE2B /* Frameworks */, + ); + sourceTree = ""; + }; + 1387274C245D5BB500C1F56D /* Products */ = { + isa = PBXGroup; + children = ( + 1387274B245D5BB500C1F56D /* PINOperationExample.app */, + ); + name = Products; + sourceTree = ""; + }; + 1387274D245D5BB500C1F56D /* PINOperationExample */ = { + isa = PBXGroup; + children = ( + 1387274E245D5BB500C1F56D /* AppDelegate.swift */, + 13872763245D5D8200C1F56D /* MainViewController.h */, + 13872764245D5D8200C1F56D /* MainViewController.m */, + 13872757245D5BB800C1F56D /* Assets.xcassets */, + 13872759245D5BB800C1F56D /* LaunchScreen.storyboard */, + 1387275C245D5BB800C1F56D /* Info.plist */, + 13872762245D5D8200C1F56D /* PINOperationExample-Bridging-Header.h */, + ); + path = PINOperationExample; + sourceTree = ""; + }; + 5C200BF654CB547E7117CE2B /* Frameworks */ = { + isa = PBXGroup; + children = ( + 7BDDE545CD189CC0B424ECD0 /* libPods-PINOperationExample.a */, + ); + name = Frameworks; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 1387274A245D5BB500C1F56D /* PINOperationExample */ = { + isa = PBXNativeTarget; + buildConfigurationList = 1387275F245D5BB800C1F56D /* Build configuration list for PBXNativeTarget "PINOperationExample" */; + buildPhases = ( + 6C859F1C363A79193D42EFC9 /* [CP] Check Pods Manifest.lock */, + 13872747245D5BB500C1F56D /* Sources */, + 13872748245D5BB500C1F56D /* Frameworks */, + 13872749245D5BB500C1F56D /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = PINOperationExample; + productName = PINOperationExample; + productReference = 1387274B245D5BB500C1F56D /* PINOperationExample.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 13872743245D5BB500C1F56D /* Project object */ = { + isa = PBXProject; + attributes = { + LastSwiftUpdateCheck = 1140; + LastUpgradeCheck = 1140; + ORGANIZATIONNAME = Pinterest; + TargetAttributes = { + 1387274A245D5BB500C1F56D = { + CreatedOnToolsVersion = 11.4.1; + LastSwiftMigration = 1140; + }; + }; + }; + buildConfigurationList = 13872746245D5BB500C1F56D /* Build configuration list for PBXProject "PINOperationExample" */; + compatibilityVersion = "Xcode 9.3"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = 13872742245D5BB500C1F56D; + productRefGroup = 1387274C245D5BB500C1F56D /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 1387274A245D5BB500C1F56D /* PINOperationExample */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 13872749245D5BB500C1F56D /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 1387275B245D5BB800C1F56D /* LaunchScreen.storyboard in Resources */, + 13872758245D5BB800C1F56D /* Assets.xcassets in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXShellScriptBuildPhase section */ + 6C859F1C363A79193D42EFC9 /* [CP] Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( + ); + outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-PINOperationExample-checkManifestLockResult.txt", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; + showEnvVarsInLog = 0; + }; +/* End PBXShellScriptBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 13872747245D5BB500C1F56D /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 1387274F245D5BB500C1F56D /* AppDelegate.swift in Sources */, + 13872765245D5D8200C1F56D /* MainViewController.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ + 13872759245D5BB800C1F56D /* LaunchScreen.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 1387275A245D5BB800C1F56D /* Base */, + ); + name = LaunchScreen.storyboard; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + 1387275D245D5BB800C1F56D /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + 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_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = 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_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 13.4; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + }; + name = Debug; + }; + 1387275E245D5BB800C1F56D /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + 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_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = 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_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 13.4; + MTL_ENABLE_DEBUG_INFO = NO; + MTL_FAST_MATH = YES; + SDKROOT = iphoneos; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + 13872760245D5BB800C1F56D /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 2F8A2FBFCEF95140E01995E8 /* Pods-PINOperationExample.debug.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_STYLE = Automatic; + DEVELOPMENT_TEAM = ""; + INFOPLIST_FILE = PINOperationExample/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = com.pinterest.PINOperationExample; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_OBJC_BRIDGING_HEADER = "PINOperationExample/PINOperationExample-Bridging-Header.h"; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + 13872761245D5BB800C1F56D /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 15635AC2BB0501241D3126BA /* Pods-PINOperationExample.release.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_STYLE = Automatic; + DEVELOPMENT_TEAM = ""; + INFOPLIST_FILE = PINOperationExample/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = com.pinterest.PINOperationExample; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_OBJC_BRIDGING_HEADER = "PINOperationExample/PINOperationExample-Bridging-Header.h"; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 13872746245D5BB500C1F56D /* Build configuration list for PBXProject "PINOperationExample" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 1387275D245D5BB800C1F56D /* Debug */, + 1387275E245D5BB800C1F56D /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 1387275F245D5BB800C1F56D /* Build configuration list for PBXNativeTarget "PINOperationExample" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 13872760245D5BB800C1F56D /* Debug */, + 13872761245D5BB800C1F56D /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 13872743245D5BB500C1F56D /* Project object */; +} diff --git a/Carthage/Checkouts/PINOperation/Example/PINOperationExample.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/Carthage/Checkouts/PINOperation/Example/PINOperationExample.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 00000000..b6d9930d --- /dev/null +++ b/Carthage/Checkouts/PINOperation/Example/PINOperationExample.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/Carthage/Checkouts/PINOperation/Example/PINOperationExample.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/Carthage/Checkouts/PINOperation/Example/PINOperationExample.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 00000000..18d98100 --- /dev/null +++ b/Carthage/Checkouts/PINOperation/Example/PINOperationExample.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/Carthage/Checkouts/PINOperation/Example/PINOperationExample.xcworkspace/contents.xcworkspacedata b/Carthage/Checkouts/PINOperation/Example/PINOperationExample.xcworkspace/contents.xcworkspacedata new file mode 100644 index 00000000..4cdc4885 --- /dev/null +++ b/Carthage/Checkouts/PINOperation/Example/PINOperationExample.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,10 @@ + + + + + + + diff --git a/Carthage/Checkouts/PINOperation/Example/PINOperationExample.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/Carthage/Checkouts/PINOperation/Example/PINOperationExample.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 00000000..18d98100 --- /dev/null +++ b/Carthage/Checkouts/PINOperation/Example/PINOperationExample.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/Carthage/Checkouts/PINOperation/Example/PINOperationExample/AppDelegate.swift b/Carthage/Checkouts/PINOperation/Example/PINOperationExample/AppDelegate.swift new file mode 100644 index 00000000..7aa52db8 --- /dev/null +++ b/Carthage/Checkouts/PINOperation/Example/PINOperationExample/AppDelegate.swift @@ -0,0 +1,31 @@ +// +// AppDelegate.swift +// PINOperationExample +// +// Created by Martin Púčik on 02/05/2020. +// Copyright © 2020 Pinterest. All rights reserved. +// + +import UIKit + +@UIApplicationMain +final class AppDelegate: UIResponder, UIApplicationDelegate { + private let queue: PINOperationQueue = PINOperationQueue(maxConcurrentOperations: 5) + + func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { + let operationCount = 100 + let group = DispatchGroup() + for _ in 0.. + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Carthage/Checkouts/PINOperation/Example/PINOperationExample/Info.plist b/Carthage/Checkouts/PINOperation/Example/PINOperationExample/Info.plist new file mode 100644 index 00000000..75404a26 --- /dev/null +++ b/Carthage/Checkouts/PINOperation/Example/PINOperationExample/Info.plist @@ -0,0 +1,41 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + $(PRODUCT_BUNDLE_PACKAGE_TYPE) + CFBundleShortVersionString + 1.0 + CFBundleVersion + 1 + LSRequiresIPhoneOS + + UILaunchStoryboardName + LaunchScreen + UIRequiredDeviceCapabilities + + armv7 + + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + + UISupportedInterfaceOrientations~ipad + + UIInterfaceOrientationPortrait + UIInterfaceOrientationPortraitUpsideDown + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + + diff --git a/Carthage/Checkouts/PINOperation/Example/PINOperationExample/MainViewController.h b/Carthage/Checkouts/PINOperation/Example/PINOperationExample/MainViewController.h new file mode 100644 index 00000000..df2e69c3 --- /dev/null +++ b/Carthage/Checkouts/PINOperation/Example/PINOperationExample/MainViewController.h @@ -0,0 +1,17 @@ +// +// MainViewController.h +// PINOperationExample +// +// Created by Martin Púčik on 02/05/2020. +// Copyright © 2020 Pinterest. All rights reserved. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface MainViewController : UIViewController + +@end + +NS_ASSUME_NONNULL_END diff --git a/Carthage/Checkouts/PINOperation/Example/PINOperationExample/MainViewController.m b/Carthage/Checkouts/PINOperation/Example/PINOperationExample/MainViewController.m new file mode 100644 index 00000000..50d0c95d --- /dev/null +++ b/Carthage/Checkouts/PINOperation/Example/PINOperationExample/MainViewController.m @@ -0,0 +1,41 @@ +// +// MainViewController.m +// PINOperationExample +// +// Created by Martin Púčik on 02/05/2020. +// Copyright © 2020 Pinterest. All rights reserved. +// + +#import "MainViewController.h" +#import +//#import + +@interface MainViewController () +@property (nonatomic, strong) PINOperationQueue *queue; +@end + +@implementation MainViewController + +- (void)viewDidLoad { + [super viewDidLoad]; + self.queue = [[PINOperationQueue alloc] initWithMaxConcurrentOperations:5]; + + const NSUInteger operationCount = 100; + dispatch_group_t group = dispatch_group_create(); + + for (NSUInteger count = 0; count < operationCount; count++) { + dispatch_group_enter(group); + [self.queue scheduleOperation:^{ + dispatch_group_leave(group); + } withPriority:PINOperationQueuePriorityDefault]; + } + + NSUInteger success = dispatch_group_wait(group, [self timeout]); + NSAssert(success == 0, @"Timed out before completing 100 operations"); +} + +- (dispatch_time_t)timeout { + return dispatch_time(DISPATCH_TIME_NOW, (int64_t)(20 * NSEC_PER_SEC)); +} + +@end diff --git a/Carthage/Checkouts/PINOperation/Example/PINOperationExample/PINOperationExample-Bridging-Header.h b/Carthage/Checkouts/PINOperation/Example/PINOperationExample/PINOperationExample-Bridging-Header.h new file mode 100644 index 00000000..f3b5f384 --- /dev/null +++ b/Carthage/Checkouts/PINOperation/Example/PINOperationExample/PINOperationExample-Bridging-Header.h @@ -0,0 +1 @@ +#import diff --git a/Carthage/Checkouts/PINOperation/Example/Podfile b/Carthage/Checkouts/PINOperation/Example/Podfile new file mode 100644 index 00000000..ae5fd622 --- /dev/null +++ b/Carthage/Checkouts/PINOperation/Example/Podfile @@ -0,0 +1,6 @@ +source 'https://cdn.cocoapods.org/' +platform :ios, '8.0' + +target 'PINOperationExample' do + pod 'PINOperation', :path => '../' +end diff --git a/Carthage/Checkouts/PINOperation/Example/Podfile.lock b/Carthage/Checkouts/PINOperation/Example/Podfile.lock new file mode 100644 index 00000000..266cc700 --- /dev/null +++ b/Carthage/Checkouts/PINOperation/Example/Podfile.lock @@ -0,0 +1,16 @@ +PODS: + - PINOperation (1.1.2) + +DEPENDENCIES: + - PINOperation (from `../`) + +EXTERNAL SOURCES: + PINOperation: + :path: "../" + +SPEC CHECKSUMS: + PINOperation: 24b774353ca248fcf87d67b2d61eef42087c125a + +PODFILE CHECKSUM: b83a75d584abe07185e7be951687702dadbabf84 + +COCOAPODS: 1.9.1 diff --git a/Carthage/Checkouts/PINOperation/PINOperation.podspec b/Carthage/Checkouts/PINOperation/PINOperation.podspec index ecea6f8b..7e598595 100644 --- a/Carthage/Checkouts/PINOperation/PINOperation.podspec +++ b/Carthage/Checkouts/PINOperation/PINOperation.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |s| s.name = 'PINOperation' - s.version = '1.1' + s.version = '1.2' s.homepage = 'https://github.com/pinterest/PINOperation' s.summary = 'Fast, concurrency-limited task queue for iOS and OS X.' s.authors = { 'Garrett Moon' => 'garrett@pinterest.com' } @@ -8,7 +8,7 @@ Pod::Spec.new do |s| s.license = { :type => 'Apache 2.0', :file => 'LICENSE.txt' } s.requires_arc = true s.frameworks = 'Foundation' - s.ios.deployment_target = '5.0' + s.ios.deployment_target = '8.0' s.osx.deployment_target = '10.8' s.tvos.deployment_target = '9.0' s.watchos.deployment_target = '2.0' diff --git a/Carthage/Checkouts/PINOperation/PINOperation.xcodeproj/project.pbxproj b/Carthage/Checkouts/PINOperation/PINOperation.xcodeproj/project.pbxproj index abf27c9b..ddcb88c2 100644 --- a/Carthage/Checkouts/PINOperation/PINOperation.xcodeproj/project.pbxproj +++ b/Carthage/Checkouts/PINOperation/PINOperation.xcodeproj/project.pbxproj @@ -7,6 +7,13 @@ objects = { /* Begin PBXBuildFile section */ + 3201179424444862004FD783 /* PINOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = CC0105801E2711B700890935 /* PINOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 3201179524444862004FD783 /* PINOperationGroup.h in Headers */ = {isa = PBXBuildFile; fileRef = CC0105811E2711B700890935 /* PINOperationGroup.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 3201179624444862004FD783 /* PINOperationMacros.h in Headers */ = {isa = PBXBuildFile; fileRef = CC0105831E2711B700890935 /* PINOperationMacros.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 3201179724444862004FD783 /* PINOperationQueue.h in Headers */ = {isa = PBXBuildFile; fileRef = CC0105841E2711B700890935 /* PINOperationQueue.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 3201179824444862004FD783 /* PINOperationTypes.h in Headers */ = {isa = PBXBuildFile; fileRef = CC0105861E2711B700890935 /* PINOperationTypes.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 3201179924444862004FD783 /* PINOperationGroup.m in Sources */ = {isa = PBXBuildFile; fileRef = CC0105821E2711B700890935 /* PINOperationGroup.m */; }; + 3201179A24444862004FD783 /* PINOperationQueue.m in Sources */ = {isa = PBXBuildFile; fileRef = CC0105851E2711B700890935 /* PINOperationQueue.m */; }; CC01055B1E27116600890935 /* PINOperation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CC01052D1E27110D00890935 /* PINOperation.framework */; }; CC01056A1E27117300890935 /* PINOperation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CC01053D1E27113700890935 /* PINOperation.framework */; }; CC0105791E27117F00890935 /* PINOperation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CC01054A1E27114300890935 /* PINOperation.framework */; }; @@ -64,6 +71,7 @@ /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ + 3201178C24444859004FD783 /* PINOperation.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = PINOperation.framework; sourceTree = BUILT_PRODUCTS_DIR; }; CC01052D1E27110D00890935 /* PINOperation.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = PINOperation.framework; sourceTree = BUILT_PRODUCTS_DIR; }; CC01053D1E27113700890935 /* PINOperation.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = PINOperation.framework; sourceTree = BUILT_PRODUCTS_DIR; }; CC01054A1E27114300890935 /* PINOperation.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = PINOperation.framework; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -84,6 +92,13 @@ /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ + 3201178924444859004FD783 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; CC0105291E27110D00890935 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; @@ -153,6 +168,7 @@ CC0105561E27116600890935 /* PINOperationTests.xctest */, CC0105651E27117300890935 /* PINOperation-tvOSTests.xctest */, CC0105741E27117F00890935 /* PINOperation-macOSTests.xctest */, + 3201178C24444859004FD783 /* PINOperation.framework */, ); name = Products; sourceTree = ""; @@ -185,6 +201,18 @@ /* End PBXGroup section */ /* Begin PBXHeadersBuildPhase section */ + 3201178724444859004FD783 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + 3201179824444862004FD783 /* PINOperationTypes.h in Headers */, + 3201179524444862004FD783 /* PINOperationGroup.h in Headers */, + 3201179424444862004FD783 /* PINOperation.h in Headers */, + 3201179724444862004FD783 /* PINOperationQueue.h in Headers */, + 3201179624444862004FD783 /* PINOperationMacros.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; CC01052A1E27110D00890935 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; @@ -224,6 +252,24 @@ /* End PBXHeadersBuildPhase section */ /* Begin PBXNativeTarget section */ + 3201178B24444859004FD783 /* PINOperation-watchOS */ = { + isa = PBXNativeTarget; + buildConfigurationList = 3201179324444859004FD783 /* Build configuration list for PBXNativeTarget "PINOperation-watchOS" */; + buildPhases = ( + 3201178724444859004FD783 /* Headers */, + 3201178824444859004FD783 /* Sources */, + 3201178924444859004FD783 /* Frameworks */, + 3201178A24444859004FD783 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = "PINOperation-watchOS"; + productName = "PINOperation-watchOS"; + productReference = 3201178C24444859004FD783 /* PINOperation.framework */; + productType = "com.apple.product-type.framework"; + }; CC01052C1E27110D00890935 /* PINOperation */ = { isa = PBXNativeTarget; buildConfigurationList = CC0105351E27110D00890935 /* Build configuration list for PBXNativeTarget "PINOperation" */; @@ -338,9 +384,13 @@ CC0105241E27110D00890935 /* Project object */ = { isa = PBXProject; attributes = { - LastUpgradeCheck = 0900; + LastUpgradeCheck = 1010; ORGANIZATIONNAME = Pinterest; TargetAttributes = { + 3201178B24444859004FD783 = { + CreatedOnToolsVersion = 11.4; + ProvisioningStyle = Automatic; + }; CC01052C1E27110D00890935 = { CreatedOnToolsVersion = 7.3.1; }; @@ -363,9 +413,10 @@ }; buildConfigurationList = CC0105271E27110D00890935 /* Build configuration list for PBXProject "PINOperation" */; compatibilityVersion = "Xcode 3.2"; - developmentRegion = English; + developmentRegion = en; hasScannedForEncodings = 0; knownRegions = ( + Base, en, ); mainGroup = CC0105231E27110D00890935; @@ -379,11 +430,19 @@ CC0105641E27117300890935 /* PINOperation-tvOSTests */, CC0105491E27114300890935 /* PINOperation-macOS */, CC0105731E27117F00890935 /* PINOperation-macOSTests */, + 3201178B24444859004FD783 /* PINOperation-watchOS */, ); }; /* End PBXProject section */ /* Begin PBXResourcesBuildPhase section */ + 3201178A24444859004FD783 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; CC01052B1E27110D00890935 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; @@ -429,6 +488,15 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ + 3201178824444859004FD783 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 3201179924444862004FD783 /* PINOperationGroup.m in Sources */, + 3201179A24444862004FD783 /* PINOperationQueue.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; CC0105281E27110D00890935 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; @@ -504,6 +572,61 @@ /* End PBXTargetDependency section */ /* Begin XCBuildConfiguration section */ + 3201179124444859004FD783 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + APPLICATION_EXTENSION_API_ONLY = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CODE_SIGN_STYLE = Automatic; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + GCC_C_LANGUAGE_STANDARD = gnu11; + INFOPLIST_FILE = "$(SRCROOT)/Source/Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; + PRODUCT_BUNDLE_IDENTIFIER = "com.pinterest.PINOperation-watchOS"; + PRODUCT_NAME = PINOperation; + SDKROOT = watchos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = 4; + WATCHOS_DEPLOYMENT_TARGET = 2.0; + }; + name = Debug; + }; + 3201179224444859004FD783 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + APPLICATION_EXTENSION_API_ONLY = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CODE_SIGN_STYLE = Automatic; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + GCC_C_LANGUAGE_STANDARD = gnu11; + INFOPLIST_FILE = "$(SRCROOT)/Source/Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + MTL_FAST_MATH = YES; + PRODUCT_BUNDLE_IDENTIFIER = "com.pinterest.PINOperation-watchOS"; + PRODUCT_NAME = PINOperation; + SDKROOT = watchos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = 4; + WATCHOS_DEPLOYMENT_TARGET = 2.0; + }; + name = Release; + }; CC0105331E27110D00890935 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { @@ -517,12 +640,15 @@ CLANG_WARN_BOOL_CONVERSION = YES; CLANG_WARN_COMMA = YES; CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = 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_OBJC_ROOT_CLASS = YES_ERROR; CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; @@ -573,12 +699,15 @@ CLANG_WARN_BOOL_CONVERSION = YES; CLANG_WARN_COMMA = YES; CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = 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_OBJC_ROOT_CLASS = YES_ERROR; CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; @@ -699,7 +828,7 @@ INFOPLIST_FILE = "$(SRCROOT)/Source/Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/Frameworks"; - MACOSX_DEPLOYMENT_TARGET = 10.10; + MACOSX_DEPLOYMENT_TARGET = 10.8; PRODUCT_BUNDLE_IDENTIFIER = com.pinterest.PINOperation; PRODUCT_NAME = PINOperation; SDKROOT = macosx; @@ -720,7 +849,7 @@ INFOPLIST_FILE = "$(SRCROOT)/Source/Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/Frameworks"; - MACOSX_DEPLOYMENT_TARGET = 10.10; + MACOSX_DEPLOYMENT_TARGET = 10.8; PRODUCT_BUNDLE_IDENTIFIER = com.pinterest.PINOperation; PRODUCT_NAME = PINOperation; SDKROOT = macosx; @@ -803,6 +932,15 @@ /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ + 3201179324444859004FD783 /* Build configuration list for PBXNativeTarget "PINOperation-watchOS" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 3201179124444859004FD783 /* Debug */, + 3201179224444859004FD783 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; CC0105271E27110D00890935 /* Build configuration list for PBXProject "PINOperation" */ = { isa = XCConfigurationList; buildConfigurations = ( diff --git a/Carthage/Checkouts/PINOperation/PINOperation.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/Carthage/Checkouts/PINOperation/PINOperation.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 00000000..18d98100 --- /dev/null +++ b/Carthage/Checkouts/PINOperation/PINOperation.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/Carthage/Checkouts/PINOperation/PINOperation.xcodeproj/xcshareddata/xcschemes/PINOperation-macOS.xcscheme b/Carthage/Checkouts/PINOperation/PINOperation.xcodeproj/xcshareddata/xcschemes/PINOperation-macOS.xcscheme index b06db321..ebc5ab8b 100644 --- a/Carthage/Checkouts/PINOperation/PINOperation.xcodeproj/xcshareddata/xcschemes/PINOperation-macOS.xcscheme +++ b/Carthage/Checkouts/PINOperation/PINOperation.xcodeproj/xcshareddata/xcschemes/PINOperation-macOS.xcscheme @@ -1,6 +1,6 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Carthage/Checkouts/PINOperation/PINOperation.xcodeproj/xcshareddata/xcschemes/PINOperation.xcscheme b/Carthage/Checkouts/PINOperation/PINOperation.xcodeproj/xcshareddata/xcschemes/PINOperation.xcscheme index d7b132f1..82056667 100644 --- a/Carthage/Checkouts/PINOperation/PINOperation.xcodeproj/xcshareddata/xcschemes/PINOperation.xcscheme +++ b/Carthage/Checkouts/PINOperation/PINOperation.xcodeproj/xcshareddata/xcschemes/PINOperation.xcscheme @@ -1,6 +1,6 @@ --user Pinterest --project PINOperation`. To avoid hitting rate limit, the generator will replace the entire file with just the changes from this version – revert that giant deletion to get the entire new changelog. +- Update `spec.version` within `PINOperation.podspec` and the `since-tag` and `future-release` fields in `.github_changelog_generator`. +- Create a new PR with the updated `PINOperation.podspec` and the newly generated changelog, add `#changelog` to the PR message so the CI will not prevent merging it. +- After merging in the PR, [create a new GitHub release](https://github.com/Pinterest/PINOperation/releases/new). Use the generated changelog for the new release. +- Push to Cocoapods with `pod trunk push` diff --git a/Carthage/Checkouts/PINOperation/Source/PINOperation.h b/Carthage/Checkouts/PINOperation/Source/PINOperation.h index 1f67472b..68b074d2 100644 --- a/Carthage/Checkouts/PINOperation/Source/PINOperation.h +++ b/Carthage/Checkouts/PINOperation/Source/PINOperation.h @@ -6,7 +6,7 @@ // Copyright © 2017 Pinterest. All rights reserved. // -#import -#import -#import -#import +#import "PINOperationMacros.h" +#import "PINOperationTypes.h" +#import "PINOperationQueue.h" +#import "PINOperationGroup.h" diff --git a/Carthage/Checkouts/PINOperation/Source/PINOperationGroup.m b/Carthage/Checkouts/PINOperation/Source/PINOperationGroup.m index dba6a5c6..ddd2ed01 100644 --- a/Carthage/Checkouts/PINOperation/Source/PINOperationGroup.m +++ b/Carthage/Checkouts/PINOperation/Source/PINOperationGroup.m @@ -81,7 +81,7 @@ - (void)start dispatch_block_t originalOperation = _operations[idx]; dispatch_block_t groupBlock = ^{ originalOperation(); - dispatch_group_leave(_group); + dispatch_group_leave(self->_group); }; id operationReference = [_operationQueue scheduleOperation:groupBlock withPriority:[_operationPriorities[idx] unsignedIntegerValue]]; diff --git a/Carthage/Checkouts/PINOperation/Source/PINOperationQueue.m b/Carthage/Checkouts/PINOperation/Source/PINOperationQueue.m index 7009bc6c..5d0a38fe 100644 --- a/Carthage/Checkouts/PINOperation/Source/PINOperationQueue.m +++ b/Carthage/Checkouts/PINOperation/Source/PINOperationQueue.m @@ -291,10 +291,10 @@ - (void)setMaxConcurrentOperations:(NSUInteger)maxConcurrentOperations dispatch_async(_semaphoreQueue, ^{ while (difference != 0) { if (difference > 0) { - dispatch_semaphore_signal(_concurrentSemaphore); + dispatch_semaphore_signal(self->_concurrentSemaphore); difference--; } else { - dispatch_semaphore_wait(_concurrentSemaphore, DISPATCH_TIME_FOREVER); + dispatch_semaphore_wait(self->_concurrentSemaphore, DISPATCH_TIME_FOREVER); difference++; } } @@ -305,16 +305,10 @@ - (void)setMaxConcurrentOperations:(NSUInteger)maxConcurrentOperations - (BOOL)locked_cancelOperation:(id )operationReference { - BOOL success = NO; PINOperation *operation = [_referenceToOperations objectForKey:operationReference]; - if (operation) { - NSMutableOrderedSet *queue = [self operationQueueWithPriority:operation.priority]; - if ([queue containsObject:operation]) { - success = YES; - [queue removeObject:operation]; - [_queuedOperations removeObject:operation]; - dispatch_group_leave(_group); - } + BOOL success = [self locked_removeOperation:operation]; + if (success) { + dispatch_group_leave(_group); } return success; } @@ -353,10 +347,10 @@ - (void)scheduleNextOperations:(BOOL)onlyCheckSerial for (dispatch_block_t completion in operation.completions) { completion(); } - dispatch_group_leave(_group); + dispatch_group_leave(self->_group); [self lock]; - _serialQueueBusy = NO; + self->_serialQueueBusy = NO; [self unlock]; //see if there are any other operations @@ -379,22 +373,22 @@ - (void)scheduleNextOperations:(BOOL)onlyCheckSerial } dispatch_async(_semaphoreQueue, ^{ - dispatch_semaphore_wait(_concurrentSemaphore, DISPATCH_TIME_FOREVER); + dispatch_semaphore_wait(self->_concurrentSemaphore, DISPATCH_TIME_FOREVER); [self lock]; PINOperation *operation = [self locked_nextOperationByPriority]; [self unlock]; if (operation) { - dispatch_async(_concurrentQueue, ^{ + dispatch_async(self->_concurrentQueue, ^{ operation.block(operation.data); for (dispatch_block_t completion in operation.completions) { completion(); } - dispatch_group_leave(_group); - dispatch_semaphore_signal(_concurrentSemaphore); + dispatch_group_leave(self->_group); + dispatch_semaphore_signal(self->_concurrentSemaphore); }); } else { - dispatch_semaphore_signal(_concurrentSemaphore); + dispatch_semaphore_signal(self->_concurrentSemaphore); } }); } @@ -448,13 +442,20 @@ - (void)waitUntilAllOperationsAreFinished } //Call with lock held -- (void)locked_removeOperation:(PINOperation *)operation +- (BOOL)locked_removeOperation:(PINOperation *)operation { if (operation) { NSMutableOrderedSet *priorityQueue = [self operationQueueWithPriority:operation.priority]; - [priorityQueue removeObject:operation]; - [_queuedOperations removeObject:operation]; + if ([priorityQueue containsObject:operation]) { + [priorityQueue removeObject:operation]; + [_queuedOperations removeObject:operation]; + if (operation.identifier) { + [_identifierToOperations removeObjectForKey:operation.identifier]; + } + return YES; + } } + return NO; } - (void)lock diff --git a/Carthage/Checkouts/PINOperation/Tests/PINOperationGroupTests.m b/Carthage/Checkouts/PINOperation/Tests/PINOperationGroupTests.m index a94ac25f..7505d56f 100644 --- a/Carthage/Checkouts/PINOperation/Tests/PINOperationGroupTests.m +++ b/Carthage/Checkouts/PINOperation/Tests/PINOperationGroupTests.m @@ -6,12 +6,11 @@ // Copyright © 2016 Pinterest. All rights reserved. // -#import +@import PINOperation; +#import #import -#import - static NSTimeInterval PINOperationGroupTestBlockTimeout = 20; @interface PINOperationGroupTests : XCTestCase diff --git a/Carthage/Checkouts/PINOperation/Tests/PINOperationQueueTests.m b/Carthage/Checkouts/PINOperation/Tests/PINOperationQueueTests.m index 70ebb7f8..844968f2 100644 --- a/Carthage/Checkouts/PINOperation/Tests/PINOperationQueueTests.m +++ b/Carthage/Checkouts/PINOperation/Tests/PINOperationQueueTests.m @@ -6,8 +6,8 @@ // Copyright © 2016 Pinterest. All rights reserved. // +@import PINOperation; #import -#import #import static NSTimeInterval PINOperationQueueTestBlockTimeout = 20; @@ -141,6 +141,7 @@ - (void)helperConfirmMaxOperations:(NSUInteger)maxOperations queue:(PINOperation __block NSUInteger runningOperationCount = 0; __block BOOL operationCountMaxedOut = NO; + XCTAssert(queue.maxConcurrentOperations == maxOperations, @"Max concurrent operations not correctly set."); #pragma clang diagnostic push #pragma clang diagnostic ignored "-Warc-retain-cycles" for (NSUInteger count = 0; count < operationCount; count++) { @@ -154,7 +155,7 @@ - (void)helperConfirmMaxOperations:(NSUInteger)maxOperations queue:(PINOperation XCTAssert(runningOperationCount <= maxOperations, @"Running too many operations at once: %lu", (unsigned long)runningOperationCount); } - usleep(1000); + usleep(10000); @synchronized (self) { runningOperationCount--; @@ -512,10 +513,10 @@ - (void)testChangingMaximumNumberOfOperations PINOperationQueue *queue = [[PINOperationQueue alloc] initWithMaxConcurrentOperations:2]; [self helperConfirmMaxOperations:2 queue:queue]; queue.maxConcurrentOperations = 4; - usleep(1000); + usleep(10000); [self helperConfirmMaxOperations:4 queue:queue]; queue.maxConcurrentOperations = 2; - usleep(1000); + usleep(10000); [self helperConfirmMaxOperations:2 queue:queue]; } diff --git a/PINCache.xcodeproj/project.pbxproj b/PINCache.xcodeproj/project.pbxproj index 71fe9dc8..e4d3d687 100644 --- a/PINCache.xcodeproj/project.pbxproj +++ b/PINCache.xcodeproj/project.pbxproj @@ -436,9 +436,9 @@ isa = PBXNativeTarget; buildConfigurationList = 320117AE24444DF7004FD783 /* Build configuration list for PBXNativeTarget "PINCache-watchOS" */; buildPhases = ( - 3201179C24444DF7004FD783 /* Headers */, 3201179D24444DF7004FD783 /* Sources */, 3201179E24444DF7004FD783 /* Frameworks */, + 3201179C24444DF7004FD783 /* Headers */, 3201179F24444DF7004FD783 /* Resources */, ); buildRules = ( @@ -863,7 +863,7 @@ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; MTL_FAST_MATH = YES; - PRODUCT_BUNDLE_IDENTIFIER = "com.pinterest.PINCache-watchOS"; + PRODUCT_BUNDLE_IDENTIFIER = com.pinterest.PINCache; PRODUCT_NAME = PINCache; SDKROOT = watchos; SKIP_INSTALL = YES; @@ -890,7 +890,7 @@ INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; MTL_FAST_MATH = YES; - PRODUCT_BUNDLE_IDENTIFIER = "com.pinterest.PINCache-watchOS"; + PRODUCT_BUNDLE_IDENTIFIER = com.pinterest.PINCache; PRODUCT_NAME = PINCache; SDKROOT = watchos; SKIP_INSTALL = YES;