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
Xcode 14.3 has pod lib lint
fail
#11839
Comments
I’m having the same issue, would be very glad if we had a fix. Thank you. |
At a glance, this looks like it's the same problem as #11828, though I'm not sure. If it is the same, I recommend you subscribe to that issue for further updates. |
Thanks @Coedice, According to this answer, it's not quite a problem of path resolution, but rather a problem that the CocoaPods build looks for Maybe fixing #11828 would fix this issue as a side-effect. But the root problem remains: minimum targets in the podspec are not honored, and |
This particular issue could be addressed by the GRDB dependency, https://github.com/CocoaPods/Specs/blob/master/Specs/1/2/7/SQLCipher/4.5.3/SQLCipher.podspec.json#L9, updating its minimum platform versions to at least iOS 9, etc. |
Well, it's not possible to modify a podspec that has been published. Also, I'm not going to ask the SQLCipher team to publish a new release just to test this hypothesis. And even if they would, bumping the minimum SQLCipher version supported by GRDB would be an important breaking change that I'd prefer to avoid. |
@groue I would say that it's more arguable to be an Xcode bug since Xcode is trying to link for a target without providing the library. On the other hand, it's arguable that CocoaPods' podspecs should still be claiming support for iOS versions that Xcode hasn't supported for years. We've addressed this issue for our CocoaPods clients by publishing patch updates of our podspecs without changing the library. For example, see firebase/leveldb-library-podspec#12 which addresses this issue for a Firebase dependency. While it's a breaking change in theory, it's not in practice, since the app store does not accept apps from Xcode versions that support those platform versions. In the meantime, CocoaPods clients can work around with a |
@paulb777 I don't understand what you are trying to tell, and why it looks like you are trying to minimize this issue. Are your telling I should close the issue and report the problem to Apple? This won't work, because Apple won't do anything. This issue is a CocoaPods problem, because it does not honor the specified minimum target. I'm doing my part of the job by providing correct minimum targets in the podspec given to Besides, CocoaPods clients are out of the frame of this issue. No one can "fix" one's Podfile if a library could not be published with I understand that you are happy with your workaround. And I'm happy for you. But it would be much better if CocoaPods itself would address the issue globally, instead of forcing each individual library maintainers to perform duplicated workarounds. And in my particular case, there's nothing I can do. That's why this issue remains open, until a proper answer acknowledges that there's a problem. I'll then help figuring out a solution if I can. |
I'll try another framing: The GRDB.podspec is choosing to use a dependency that claims support for macOS 10.9. CocoaPods follows the wishes of the GRDB podspec and builds a project targeting macOS 10.9. Xcode 14.3 fails to build the resulting project because it doesn't support macOS 10.9 targets. I agree with you that it would be nice for CocoaPods to do as much as possible to help libraries evolve as Apple evolves its tools and deprecates old platforms. While I continue to be impressed with how much CocoaPods does with only volunteers, there are limits. Xcode has been warning for a few years now about macOS 10.9 not being supported and podspecs have had plenty of time to update to address the Xcode platform requirements. |
Yes.
I disagree: GRDB restricts the minimum target to more recent OSes in its own podspec. There is no point building for macOS 10.9 when GRDB requires 10.13+ (the same of other platforms). Not only there is no point building for macOS 10.9, but:
We are in full agreement there. |
It wouldn't be correct for CocoaPods to build dependencies for newer versions than the dependency itself specifies since they could be using APIs that have been deprecated, deleted or changed after that specified version. |
You put a "maximum" in your interpretation of "minimum target", and this interpretation creates this issue, for no good reason. With this interpretation, CocoaPods automatically and unavoidably breaks perfectly fine libraries, as time goes by. This interpretation ignores that libraries can use availability checks in order to avoid the api changes you describes. It's not because a library claims support iOS N that it can't build on iOS N+1. Heck, we do this every day. It's not because a library could be using removed APIs that CocoaPods is allowed to break the build. This is just artificial churn that no one is asking for. That's why, once again, this issue is still not closed. 🙂 |
Same issue here. Thanks for posting. |
Hi, new version is out, but it doesn't fix problem with Xcode 14.3. Does someone know any workaround we can do to temporarily bypass this issue? |
In my case, |
This is not good solution, since using any cloud based CI will require doing it for every build. Also copying some files from external repo can be malicious. |
I agree, just had to publish my spec with minimum time spent. Another possibility is to revert Xcode to 14.2 I guess. |
A workaround for some of our other Xcode 14.3 |
we are facing the same issue. Any workaround for the same to work for xcode 14.3? |
Related: #11895 Publication of Pods that have dependencies targeting iOS < 11 is also broken. So far all workarounds discussed here are applicable for apps, not for Pod authors, so pod linting and pod publication are still blocked. |
Same issue here. Thanks for posting. |
Can you expand on this? My understanding is that the offending Is there something I'm missing? |
@bnickel, I don't understand your question. Everything is said in the issue description. To sum up: a podspec specifies some minimum deployment targets. Those are not honored by I just wish that a contributor of CocoaPods would 1. acknowledge that this is an accurate description of an actual issue, 2. clearly marks the issue as unsolvable for [reasons], or 3. clearly marks the issue as solvable with [technique]. A (maybe naive) technique would be to have At some point in the future, Xcode 14.2 will no longer be usable. What will we do then, if we can't |
To be pedantic, this is really an issue with the dependency podspecs, not with CocoaPods itself. The podspecs are specifying they should be built for an iOS version that is not supported by the building Xcode. From the numerous Podfiles that do I can't speak for other CocoaPods contributors, but I would be fine with a PR providing an option for In the meantime, I would encourage podspec providers to work with their dependencies to update their podspecs to be accurate for modern Xcode versions. Worse case workaround is forking the dependent podspec's and updating the versions. |
Yes, that's an idea that allows everybody to move on, without having to wait for dependencies to update their podspecs (a slow an uncertain process). In real life, podspec authors, when they use this new feature, would specify the exact same versions as in their podspec, though. So maybe this extra configuration could be just replaced by using the values that are already provided in the podspec. This sounds much simpler, easier to understand than the current behavior, and just as effective as the extra configuration you suggest. Let's also take care that asking dependencies to update their podspec has serious drawbacks. Not only this is slow and uncertain. But the library mentioned in the initial comment does not need to upgrade its dependencies. GRBD + SQLCipher 3.4.2+ is a perfectly valid combination (if only CocoaPods would stop failing |
Sorry, @groue, my comment was directed to @paulb777's quote and I should have tagged him. The comment suggested a lot of potential negative consequences for increasing the deployment version from what the dependency asked for and I'm just unclear on what that would be beyond an uptick in deprecation warnings. To throw in a couple thoughts about the solution, I do feel like just patching |
I'm having the same issue, even though I set my pod's spec to: When inspecting the generated linting project after using Maybe it would work if there was a way within the podspec to define a deployment_target per sub-pod. I tried this for my project but it didn't work:
|
I am facing this issue as well. The workarounds work fine on the app side with the |
I'm not sure I understand what is the suggested course of action so that this issue is fixed. Xcode 15.1 will soon ship and we're still stuck on Xcode 14.2 to run |
Man,
You push podspec into your own spec repo, you ca run pod trunk push with
sources of external sped repos
W dniu niedz., 15.10.2023 o 09:34 Gwendal Roué ***@***.***>
napisał(a):
… I'm not sure I understand what is the suggested course of action so that
this issue is fixed. Xcode 15.1 will soon ship and we're still stuck on
Xcode 14.2 to run pod trunk push.
—
Reply to this email directly, view it on GitHub
<#11839 (comment)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/ABLQNXK2TVQHVXGFRZ7RF5TX7OGXTAVCNFSM6AAAAAAWPXICKCVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTONRTGMYDMNJRGU>
.
You are receiving this because you commented.Message ID:
***@***.***>
|
Contact me on twitter. |
This issue looks related to #12033 |
In the hope of receiving some feedback in this thread. i am now posting my question from #12033 (comment) also here. I am particularly interested in the question of whether this is actually an Xcode or Cocoapods problem. Are there any updates? We can still not use Xcode 15 because we can't release our project, because
error.
in our
In that case the Xcode Sample Project all the Pods have their original Deployment Target which might be lower than 12.0 and therefor the build resp. the Forking Cocoapods and use a custom version with a "hotfix" as described in #12033 (comment) is not an option for me. Questions:
Any help is very much appreciated! |
When Xcode 14.3 came out, they've removed a library called libarclitemacos.a from the installation. This means that cocoapods builds with macos targets < 10.11 will fail, as it will attempt to link against this missing library. See the bug here :- CocoaPods/CocoaPods#11839 There has been discussion regarding implementing flags in cocoapods to work around the issue but this has yet to materialize. It appears that the only possible solution at this point is to increase the minimum macos version in a podspec to 10.11 to avoid linking against libarclite_macosx.a. The current ios, tvos and watchos minimum deployment targets are fine. If we mark this change as v2.0.0, people who still require use of macos 10.10 (and older versions of Xcode) via Cocoapods can still link against the current v1.4.0.
@orta Today, trying to
I don't know the source of the error, but the presence of This issue has turned into a total blocker. Today, GRDB 6.24.2 is the first version that is only available with SPM, and not available with CocoaPods. CocoaPods users are no longer able to upgrade their copy of GRDB. This is concerning, but users have a workaround: they can switch to SPM (more or less easily). What's the real bummer is that GRDB+SQLCipher is only available through CocoaPods, due to the incompatibility of SPM with SQLCipher. I have no solution to suggest to GRDB+SQLCipher users as long as this issue exists. EDIT: GRDB+SQLCipher users can visit this discussion for more information: groue/GRDB.swift#1495 |
To work around the |
I just upgraded to Sonoma, which has invalidated my copy of Xcode 14.2. Thank you for all those years of services, Cocoapods! Time for a farewell 🙏❤️ |
This technique has CocoaPods overwrite the app and other pods's manifest file and is not correct. Currently, there's no CocoaPods support for privacy manifest unless I'm mistaken: CocoaPods/CocoaPods#11990 And we can't publish new GRDB version on CocoaPods anyway: CocoaPods/CocoaPods#11839
Because it does no longer work due to CocoaPods/CocoaPods#11839
Report
What did you do?
Hello,
I ran
pod lib lint GRDB.swift.podspec --allow-warnings --verbose
from a fresh clone of https://github.com/groue/GRDB.swift/tree/v6.10.1, with Xcode 14.3 (14E222b)What did you expect to happen?
A success, as with Xcode 14.2. And if
pod lib lint
succeeds, I can expectpod trunk push
to succeed as well.What happened instead?
An error, unlike Xcode 14.2. And since
pod lib lint
fails, I'm pretty surepod trunk push
will fail as well: I can't publish new GRDB podspecs with Xcode 14.3.Relevant lines from the output of the command:
A Google search for linker error with Xcode 14.3 and
libarclite_macosx.a
found this page. It looks like the problem is a wrong deployment target.The log indeed warns:
But the podspec mentions '10.13' as the macOS deployment target:
I don't know how to fix this error.
CocoaPods Environment
Stack
Installation Source
Plugins
Project that demonstrates the issue
https://github.com/groue/GRDB.swift/tree/v6.10.1
The text was updated successfully, but these errors were encountered: