Run pod install
The target 'ChatSecure' is an app, 'ChatSecureCore' is a framework, and 'ChatSecureTests' is a test bundle. We don't want ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES to be set for 'ChatSecureCore' and 'ChatSecureTests'.
[!] The `ChatSecureTests [Debug]` target overrides the `ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES` build setting defined in `Pods/Target Support Files/Pods-ChatSecureCorePods-ChatSecureTests/Pods-ChatSecureCorePods-ChatSecureTests.debug.xcconfig'. This can lead to problems with the CocoaPods installation
- Use the `$(inherited)` flag, or
- Remove the build settings from the target.
[!] The `ChatSecureTests [Release]` target overrides the `ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES` build setting defined in `Pods/Target Support Files/Pods-ChatSecureCorePods-ChatSecureTests/Pods-ChatSecureCorePods-ChatSecureTests.release.xcconfig'. This can lead to problems with the CocoaPods installation
- Use the `$(inherited)` flag, or
- Remove the build settings from the target.
[!] The `ChatSecure [Debug]` target overrides the `ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES` build setting defined in `Pods/Target Support Files/Pods-ChatSecureCorePods-ChatSecure/Pods-ChatSecureCorePods-ChatSecure.debug.xcconfig'. This can lead to problems with the CocoaPods installation
- Use the `$(inherited)` flag, or
- Remove the build settings from the target.
[!] The `ChatSecure [Release]` target overrides the `ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES` build setting defined in `Pods/Target Support Files/Pods-ChatSecureCorePods-ChatSecure/Pods-ChatSecureCorePods-ChatSecure.release.xcconfig'. This can lead to problems with the CocoaPods installation
- Use the `$(inherited)` flag, or
- Remove the build settings from the target.
CocoaPods : 1.2.0.beta.1
Ruby : ruby 2.3.1p112 (2016-04-26 revision 54768) [x86_64-darwin16]
RubyGems : 2.5.1
Host : Mac OS X 10.12.1 (16B2555)
Xcode : 8.1 (8B62)
Git : git version 2.10.2
Ruby lib dir : /Users/chrisbal/.rbenv/versions/2.3.1/lib
Repositories : master - https://github.com/CocoaPods/Specs.git @ 0f66e6fd9f14acb431ab9190a39a50bdf9704002
Executable Path: /Users/chrisbal/.rbenv/versions/2.3.1/bin/pod
claide-plugins : 0.9.0
cocoapods-deintegrate : 1.0.1
cocoapods-dependencies : 1.0.0.beta.1
cocoapods-plugins : 1.0.0
cocoapods-search : 1.0.0
cocoapods-stats : 1.0.0
cocoapods-trunk : 1.1.1
cocoapods-try : 1.1.0
cocoapods_debug : 0.1.0
# Disable CocoaPods deterministic UUIDs as Pods are not checked in
ENV["COCOAPODS_DISABLE_DETERMINISTIC_UUIDS"] = "true"
# Disable Bitcode for all targets http://stackoverflow.com/a/32685434/805882
post_install do |installer|
installer.pods_project.targets.each do |target|
target.build_configurations.each do |config|
config.build_settings['ENABLE_BITCODE'] = 'NO'
end
end
end
platform :ios, "8.0"
use_frameworks!
source 'https://github.com/CocoaPods/Specs.git'
abstract_target 'ChatSecureCorePods' do
pod 'AFNetworking', '~> 3.1'
pod "Appirater", '~> 2.0'
pod 'OpenInChrome', '~> 0.0'
pod 'MWFeedParser', '~> 1.0'
pod "CocoaLumberjack", '~> 2.3.0'
#pod "HockeySDK-Source", '~> 3.7'
pod 'KSCrash', '~> 1.11.2'
pod 'MBProgressHUD', '~> 1.0'
pod "SAMKeychain", '~> 1.5'
# pod 'gtm-oauth2', '~> 0.1.0' # Trunk is outdated, using local podspec
pod 'YapDatabase/SQLCipher', '~> 2.9'
pod 'Mantle', '~> 2.0'
pod 'Navajo', '~> 0.0'
# wating on 8.0 https://github.com/jessesquires/JSQMessagesViewController/pull/840
# using for in meantime
# pod 'JSQMessagesViewController', '~> 8.0'
pod 'BBlock', '~> 1.2'
pod 'JVFloatLabeledTextField', '~> 1.0'
pod 'TTTAttributedLabel', '~> 2.0'
pod 'VTAcknowledgementsViewController', '~> 1.2'
pod 'PureLayout', '~> 3.0'
pod 'BButton', '~> 4.0'
pod 'uservoice-iphone-sdk', '~> 3.2'
pod 'TUSafariActivity', '~> 1.0'
pod 'ARChromeActivity', '~> 1.0'
# We need a commit from next release
#pod 'CocoaAsyncSocket', '~> 7.4'
pod 'CocoaAsyncSocket', '~> 7.5.1'
pod 'JTSImageViewController', '~> 1.4'
pod 'KVOController', '~> 1.0'
#Reachability only needed for YapActionItems
pod 'Reachability', '~> 3'
pod 'XLForm', '~> 3.3'
#pod 'ParkedTextField', '~> 0.2'
pod 'FormatterKit/TimeIntervalFormatter'
# QR Codes
pod 'QRCodeReaderViewController', '~> 4.0'
pod 'ZXingObjC', '~> 3.0'
pod 'SignalProtocolC', :podspec => 'https://raw.githubusercontent.com/ChatSecure/SignalProtocolC.podspec/b2b483fe1c4c66cecfc0376c496e6a58ed1939b5/SignalProtocolC.podspec'
pod 'libsqlfs/SQLCipher', :git => 'https://github.com/ChatSecure/libsqlfs.git', :branch => 'podspec-fix'
# Local Podspecs
pod 'gtm-http-fetcher', :podspec => 'Podspecs/gtm-http-fetcher.podspec'
pod 'gtm-oauth2', :podspec => 'Podspecs/gtm-oauth2.podspec'
# Forks
pod 'JSQMessagesViewController', :git => 'https://github.com/ChatSecure/JSQMessagesViewController', :branch => '7.2.0-send_button'
# Use this until able to push proper podspec that depends on 2.9
pod 'YapTaskQueue/SQLCipher', '~> 0.1.6'
# Submodules
pod 'SignalProtocol-ObjC', :path => 'Submodules/SignalProtocol-ObjC/SignalProtocol-ObjC.podspec'
pod 'ChatSecure-Push-iOS', :path => 'Submodules/ChatSecure-Push-iOS/ChatSecure-Push-iOS.podspec'
pod 'ProxyKit/Client', :path => 'Submodules/ProxyKit/ProxyKit.podspec'
pod 'OTRKit', :path => 'Submodules/OTRKit/OTRKit.podspec'
pod 'CPAProxy', :path => 'Submodules/CPAProxy/CPAProxy.podspec'
pod 'XMPPFramework', :path => 'Submodules/XMPPFramework/XMPPFramework.podspec'
pod 'IOCipher/GCDWebServer', :path => 'Submodules/IOCipher/IOCipher.podspec'
# Waiting for Swift 2.3 changes
pod 'ParkedTextField', :path => 'Submodules/ParkedTextField/ParkedTextField.podspec'
target 'ChatSecureCore'
target 'ChatSecureTests'
target 'ChatSecure'
end
Hi @chrisballinger! Do you know if any of those pods have swift source files? I could go check each one, but that'd take some time. And, I figure you might have a sense already. Thanks!
Oh yeah definitely. Some of them are Swift-only, some of them are mixed, most are Obj-C. The targets 'ChatSecureCore' and 'ChatSecureTests' are all mixed as well, but 'ChatSecure' is basically just a stub Obj-C app target (main.m) that links against ChatSecureCore.
This has also some relation with:
https://github.com/Alamofire/Alamofire/issues/1891
In this case, i just created an empty one viewcontroller project in swift and added only that cocoapod to it.
The targets on the project have that build settings flag turned on, however, the pod xcconfig files instead of use the $(inherited) as suggested, are using a deterministic YES/NO (and failing to pick the correct value from the referenced target).
Most probably, the $(inherited) value will need to come from the main target -> test target -> related pod (for both unit and ui tests).
@lferro9000 since Alamofire is a Swift project, all targets that integrate Alamofire should have that flag set to YES. Is that not the case or do you disagree?
@chrisballinger CocoaPods seems to be picking the correct value. I cloned https://github.com/chatsecure/chatsecure-ios, and the issue appears to be that CP is warning you that your targets are overriding it. If you highlight setting in ChatSecure and ChatSecureTests and hit backspace to remove the override, and the warning will go away.
@benasher44 Thanks for taking a look! The issue is that if you remove the override, you can't submit to the App Store because it will also bundle the Swift standard libraries within the framework and get rejected. You can only bundle Swift libs for the main app bundle, not individual frameworks or test bundles.
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES should always be NO for .framework and test targets.
@chrisballinger ah so the approach CocoaPods takes here is that it only sets the flag to Yes if it can determine for sure that the Swift libs are required, otherwise, it doesn't set it at all. In this case, it's doing the latter. The Yes value for ChatSecureCore is actually appears to be coming from OTR_Debug.xcconfig. This config is including the CP-generated xcconfig for the abstract_target in your Podfile. This being set in the abstract_target might be a bug though. I'll look into that.
As a side note, I noticed you're using s.xcconfig in OTRKit. That one is deprecated, and setting that sets s.pod_target_xcconfig and s.user_target_xcconfig. Usually you want one or the other, but not both.
Oh sorry! You must have checked out the develop branch. We've been doing our work in the omemo branch, which no longer uses the custom OTR_Debug.xcconfig files. The output from a pod install from that branch results in this output:
[!] The `ChatSecureTests [Debug]` target overrides the `ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES` build setting defined in `Pods/Target Support Files/Pods-ChatSecureCorePods-ChatSecureTests/Pods-ChatSecureCorePods-ChatSecureTests.debug.xcconfig'. This can lead to problems with the CocoaPods installation
- Use the `$(inherited)` flag, or
- Remove the build settings from the target.
[!] The `ChatSecureTests [Release]` target overrides the `ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES` build setting defined in `Pods/Target Support Files/Pods-ChatSecureCorePods-ChatSecureTests/Pods-ChatSecureCorePods-ChatSecureTests.release.xcconfig'. This can lead to problems with the CocoaPods installation
- Use the `$(inherited)` flag, or
- Remove the build settings from the target.
[!] The `ChatSecure [Debug]` target overrides the `ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES` build setting defined in `Pods/Target Support Files/Pods-ChatSecureCorePods-ChatSecure/Pods-ChatSecureCorePods-ChatSecure.debug.xcconfig'. This can lead to problems with the CocoaPods installation
- Use the `$(inherited)` flag, or
- Remove the build settings from the target.
[!] The `ChatSecure [Release]` target overrides the `ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES` build setting defined in `Pods/Target Support Files/Pods-ChatSecureCorePods-ChatSecure/Pods-ChatSecureCorePods-ChatSecure.release.xcconfig'. This can lead to problems with the CocoaPods installation
- Use the `$(inherited)` flag, or
- Remove the build settings from the target.
Ah okay. I tried that branch, and settings look okay. It appears that the warning is like I said earlier: it's just warning that you're overriding them, and it'll go away by removing the override.
Durrrrrrr I'm an idiot, you're right. I must have a brain problem.
Thank you!
Ha no worries! Have a great day!
Most helpful comment
As a side note, I noticed you're using
s.xcconfigin OTRKit. That one is deprecated, and setting that setss.pod_target_xcconfigands.user_target_xcconfig. Usually you want one or the other, but not both.