-
Notifications
You must be signed in to change notification settings - Fork 1.3k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Added SPM support #1928
base: master
Are you sure you want to change the base?
Added SPM support #1928
Conversation
// CAEAGLLayer | ||
if([[view.layer class] isSubclassOfClass:[CAEAGLLayer class]]){ | ||
_flags.canClearContentsOfLayer = NO; | ||
} | ||
#endif | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
enable macCatalyst? :)
Still need to figure out how to test it |
Source/Base/ASAvailability.h
Outdated
#define AS_PIN_REMOTE_IMAGE 1 | ||
#endif | ||
|
||
#ifndef AS_IG_LIST_KIT |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Was this intended? My project doesn't use IGListKit but does use ASPINRemoteImageDownloader which requires AS_PIN_REMOTE_IMAGE to be set.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Also, I can't seem to be able to reference ASPINRemoteImageDownloader for some reason. I had to comment out the #if AS_PIN_REMOTE_IMAGE
conditionals entirely in order for my project to even see the class. Not sure if it's an SPM package configuration issue or something else.
any updates on this PR? |
last commits should repair Xcode's SPM integration! |
Confirming, it compiles and works fine in my project. Let's get merge it. |
Great job guys! Working for me! |
For some reason I still can't access ASPINRemoteImageDownloader despite AS_PIN_REMOTE_IMAGE being defined in Package.swift. Is there something I'm missing? |
Hi, @3a4oT I tried using AsyncDisplayKitIGListKit from your fork on Xcode 12.2.
based on the error messages it seems like there is a namespace conflicts (I searched related issues, where the work around is renaming one of the module classname/function etc.. and this issue happens in Xcode 12, even though things worked well on Xcode 11. |
@MussaCharles thanks for the detailed feedback. Should be OK now. I've added the sample project ( @xezero |
@3a4oT Wow, great work on figuring those headers out! Looks intense 😅 |
@3a4oT Thanks for the updates, I will give it another shot later today or tomorrow and get back to you. |
Hi everyone! Is there any updates? I noticed that only Carthage build is not successful. This may be caused by that issue. Please check it out! |
@MussaCharles Today I've integrated into another codebase which was using Carthage. I faced the same errors as you reported, to resolve issues make sure you delete any cached pods or Carthage artifacts (.framework) from your project. settings. |
Hi, @3a4oT Okay, I will double check to see if it was caused by the same files. |
Just wondering what the status is on this currently. I've had to do quite a few of these integrations, would be more than happy to jump in. |
Thank you for putting in all this work! I would like to avoid using a fork if possible on IGListKit… And since SPM currently doesn’t support running scripts there’s probably no way to add the spm directory to .gitignore is there? I wonder if we could use https://github.com/apple/swift-evolution/blob/main/proposals/0303-swiftpm-extensible-build-tools.md ? |
@@ -1,2 +1,2 @@ | |||
github "pinterest/PINRemoteImage" "3.0.0-beta.14" | |||
github "pinterest/PINCache" "3.0.1-beta.7" | |||
github "pinterest/PINRemoteImage" "3.0.1" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
PINRemoteImage needs to be updated to point to master (or atleast wait for next release), to include PINRemoteImage bugfixes related to SPM. And this should also transitively updated PINCache and PINOperation
Any update to this? 🙏 |
Updates please?! |
|
||
let sharedDefines: [CSetting] = [ | ||
// Disable "old" textnode by default for SPM | ||
.define("AS_ENABLE_TEXTNODE", to: "0"), |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Why is this disabled?
It seems to be enabled in ASAvailability.h
does this not cause a mismatch between the Project version and the SPM version?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks for mention that, I guess the main reason was - I need that to be a default since ASTextNode2
is a future I just enabled it by default :)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
.define("AS_ENABLE_TEXTNODE", to: "0"), | |
.define("AS_ENABLE_TEXTNODE", to: "1"), |
This option leads undefined symbol: _OBJC_CLASS_$_ ASTEXTNODE2-
error when using ASTextNode2
. If you can check, or if someone else meets this error, try changing it from 0 to 1.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This option makes usage of ASTextNode2 a default. So in your code, you should reference it just like ASTextNode
Just an small update:
|
Hai @3a4oT it's available now in Xcode 13.3 beta, perhaps you can continue this MR if you're available, thanks in advance 🙏 |
Any updates please? 😥 |
As you may know, my country (Ukraine) was attacked by russian invaders, I'm on military service now and don't have time at the moment to support this fork. Invaders Must Die! |
Please, don't mess up P. and russians... So, on my fork SPM is working, if you need that Package.swift example: |
Слава Украине! Героям слава! 🇺🇦 |
[(IGListAdapterUpdater *)updater setAllowsBackgroundReloading:NO]; | ||
// [(IGListAdapterUpdater *)updater setAllowsBackgroundReloading:NO]; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Shouldn't be commented, bug is still relevant, dataSource won't update properly using Texture+IGListKit when self.setAllowsBackgroundReloading == true, collectionView.window == nil
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
seems like no longer valid on the latest IGListKit
What other tasks do we have to accomplish this PR? I might help |
please merge - need SPM integration urgently. |
and I found a situation that break-points are not working when installed as swift-package. |
Hey all. No commitments, but I did some work this morning to synchronize the latest IGListKit and Texture. For now, it will live under my fork branch - 3a4oT#1. In a time of my absence, Xcode 14.3 arrives, which add one more challenge to make it work. We need to land new versions of PINOperation, PINRemoteImage, PINCache to be compatible with Xcode 14.3. Also, we need to make Instagram finally tag a new release on GitHub. For PIN-related repositories I saw that community started to submit PRs, but it seems like there are no active maintainers. For Instagram related task, I started a conversation . If you want to contribute and don't know how, please leave a comment/issue on those repositories so you may be heard. |
Apologies that this has sat for so long. I have a couple questions about this PR. Why did you change all of the imports? Is this required for Is the "hack" for AsyncDisplayKitIGListKit still required? I see that IGListKit has a Package.swift file. Is it possible to use this instead? |
The imports change is required for SPM to work, yes. |
It this cannot be merged, can we please close this PR? |
implemented SPM layout generator
swift scripts/generate_spm_sources_layout.swift
which use symlinks technics.introduced the
AsyncDisplayKitIGListKit
library which is an umbrella for IG+Texture. To deal with SPM restrictions I did some kind of hack:)) I've symlinked thespm/Sources/AsyncDisplayKit
(generated by a script) and created theAsyncDisplayKitIGListKit
folder. It should be available ONLY forPackage.swift
. (TODO: upstream changes to Instagram)refactored
#include
by droppingAsyncDisplayKit/
added a small tweak to be able to assemble for macCatalyst via SPM
Xcode 12 required (SPM only)
added
sh build.sh build_listkit_xcode_spm_integration
to the build pipeline which can verify Xcode's SPM integration.added CI steps to check SPM based BUILDS for iOS, tvOS, macCatalyst.
depends on pinterest/PINRemoteImage#586