pinterest / PINOperation

Apache License 2.0
103 stars 49 forks source link

Update project and installation methods (CocoaPods and Swift Package Manager) for Xcode 15 #56

Closed tstump-phunware closed 2 months ago

tstump-phunware commented 2 months ago

Background

As of April 29th, 2024, all apps submitted to the App Store must be built using Xcode 15 (ref: Apple News).

Additionally, all third-party SDKs are required/encouraged to include a Privacy Manifest file (ref: Apple Support).

Purpose

The purpose of these changes is to upgrade the project and bump the minimum deployment targets for Xcode 15:

These changes span across the following:

Additionally, the Swift Package Manager Package file points to a new "include" public header folder of symlinks. This allows the project to use angled bracket imports for public headers without having to suppress any warnings from clang.

This PR fulfills the following open issues and pull requests:

NOTE: A separate PR has been created on PINCache with similar changes.

Attachments

PINOperation after being installed via CocoaPods:

PINOperation - Installation - CocoaPods

PINOperation targets after being installed via CocoaPods (blue icon represents a resource bundle target that includes the Privacy Manifest file):

PINOperation - Targets - CocoaPods

PINOperation unit tests passing:

PINOperation - Unit Tests Passing
tstump-phunware commented 2 months ago

Ready for review.

NOTE: I have a similar PR open for PINCache, which I've linked in the PR description.

cc: @garrettmoon @garricn

tstump-phunware commented 2 months ago

@jparise @woshimaliang @rcancro @garrettmoon @garricn

I'd like to suggest we first work on landing these changes in an official release, and then move over to this PINCache PR. Otherwise, we're going to be blocked in the PINCache PR by the CocoaPods CI test failing during lint (specifically, lint would fail due to the existing minimum deployment target set in PINOperation 1.2.2, as well as lack of VisionOS support).

rcancro commented 2 months ago

@jparise @woshimaliang @rcancro @garrettmoon @garricn

I'd like to suggest we first work on landing these changes in an official release, and then move over to this PINCache PR. Otherwise, we're going to be blocked in the PINCache PR by the CocoaPods CI test failing during lint (specifically, lint would fail due to the existing minimum deployment target set in PINOperation 1.2.2, as well as lack of VisionOS support).

Merged! I'll keep an eye on PINCache to kick off builds as required. Thanks for the contributions!!! (any chance you use PINRemoteImage and want to make a change there as well??? :) )

tstump-phunware commented 2 months ago

@rcancro You rock! Thanks for merging :)

I don't use PINRemoteImage, but if we can get these changes into an official release soon, I'll create a PR for PINRemoteImage that includes the necessary changes 👍

The first thing I'll need from you and the team is to publish a new version of PINOperation to CocoaPods trunk. After that, I can bring in the new version to my PINCache and PINRemoteImage PRs and ensure all CI tests pass and VisionOS is properly supported.

💪