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

Swift Static Library support #6966

Merged
merged 42 commits into from Feb 20, 2018

Conversation

Projects
None yet
10 participants
@DanToml
Member

DanToml commented Aug 18, 2017

Closes #6899.

  • Examples that build static swift
  • New integration specs
  • Validator to ensure no swift pod targets depend upon built targets that don't define modules
  • CHANGELOG entry
  • Allow enabling/disabling module map generation for all pods in a target from the Podfile
  • Allow enabling/disabling module map generation for one pod in a target from the Podfile
  • Move the generated umbrella header to be in the public headers directory rather than private headers?
@keith

This comment has been minimized.

Show comment
Hide comment
@keith

keith Aug 18, 2017

Member

This is fantastic! I'm testing it out now, the first big issue I've noticed is that Swift pods with Swift dependencies need their dependencies' build paths in their SWIFT_INCLUDE_PATHS.

Member

keith commented Aug 18, 2017

This is fantastic! I'm testing it out now, the first big issue I've noticed is that Swift pods with Swift dependencies need their dependencies' build paths in their SWIFT_INCLUDE_PATHS.

@keith

This comment has been minimized.

Show comment
Hide comment
@keith

keith Aug 18, 2017

Member

Here's a sample project for this TestSwiftNestedDependencies.zip (looks like Sonar doesn't actually compile in Swift 4, but it still shows the issue).

This can be fixed by adding ${PODS_CONFIGURATION_BUILD_DIR}/Alamofire to Sonar's SWIFT_INCLUDE_PATHS

Member

keith commented Aug 18, 2017

Here's a sample project for this TestSwiftNestedDependencies.zip (looks like Sonar doesn't actually compile in Swift 4, but it still shows the issue).

This can be fixed by adding ${PODS_CONFIGURATION_BUILD_DIR}/Alamofire to Sonar's SWIFT_INCLUDE_PATHS

@keith

This comment has been minimized.

Show comment
Hide comment
@keith

keith Aug 18, 2017

Member

The next issue I've noticed is that if you have a Swift pod that depends on an Objective-C pod, it has trouble building the module:

image

Here's an example project TestObjectiveCDependency.zip

In this project I've added the SWIFT_INCLUDE_PATHS mentioned above. I've solved a similar problem like this before by making the path in the module map absolute, but that doesn't seem to work in this case. Either way I assume there's a better solution for that 🤔

Member

keith commented Aug 18, 2017

The next issue I've noticed is that if you have a Swift pod that depends on an Objective-C pod, it has trouble building the module:

image

Here's an example project TestObjectiveCDependency.zip

In this project I've added the SWIFT_INCLUDE_PATHS mentioned above. I've solved a similar problem like this before by making the path in the module map absolute, but that doesn't seem to work in this case. Either way I assume there's a better solution for that 🤔

@DanToml

This comment has been minimized.

Show comment
Hide comment
@DanToml

DanToml Aug 19, 2017

Member

@keith Both of those projects build for me now 👍.

Member

DanToml commented Aug 19, 2017

@keith Both of those projects build for me now 👍.

@keith

This comment has been minimized.

Show comment
Hide comment
@keith

keith Aug 19, 2017

Member

Nice! Looks like that works on my end too. I noticed that specs using module_name don't seem to set the PRODUCT_NAME correctly. It looks like you explicitly commented that out though? If you want a test pod for that ModelMapper defines the module name as Mapper

Member

keith commented Aug 19, 2017

Nice! Looks like that works on my end too. I noticed that specs using module_name don't seem to set the PRODUCT_NAME correctly. It looks like you explicitly commented that out though? If you want a test pod for that ModelMapper defines the module name as Mapper

@DanToml

This comment has been minimized.

Show comment
Hide comment
@DanToml

DanToml Aug 19, 2017

Member

@keith I wasn't sure if it was going to be needed, but looks like it will be 👍

Member

DanToml commented Aug 19, 2017

@keith I wasn't sure if it was going to be needed, but looks like it will be 👍

@keith

This comment has been minimized.

Show comment
Hide comment
@keith

keith Aug 19, 2017

Member

Next thing I ran into is it seems that the Facebook SDK fails to build statically because of some non modular include warnings. I don't see this when using frameworks today. This obviously could 100% be on them, but figured it was worth mentioning. Here's a sample project: TestFacebookSDK.zip

Member

keith commented Aug 19, 2017

Next thing I ran into is it seems that the Facebook SDK fails to build statically because of some non modular include warnings. I don't see this when using frameworks today. This obviously could 100% be on them, but figured it was worth mentioning. Here's a sample project: TestFacebookSDK.zip

@keith

This comment has been minimized.

Show comment
Hide comment
@keith

keith Aug 19, 2017

Member

Hmm actually it looks like it's happening with other Objective-C pods we're using as well. I can give another project example if needed.

Member

keith commented Aug 19, 2017

Hmm actually it looks like it's happening with other Objective-C pods we're using as well. I can give another project example if needed.

@DanToml

This comment has been minimized.

Show comment
Hide comment
@DanToml

DanToml Aug 19, 2017

Member

@keith Good to know - a smaller example than FBSDK would be handy, but I think that's because I'm not preserving header paths properly yet.

Member

DanToml commented Aug 19, 2017

@keith Good to know - a smaller example than FBSDK would be handy, but I think that's because I'm not preserving header paths properly yet.

@keith

This comment has been minimized.

Show comment
Hide comment
@keith

keith Aug 19, 2017

Member

Here's a slightly smaller example. It appears to be an issue with imports referencing nested Objective-C dependencies, so this example also has 2 dependencies: TestLightstep.zip

Member

keith commented Aug 19, 2017

Here's a slightly smaller example. It appears to be an issue with imports referencing nested Objective-C dependencies, so this example also has 2 dependencies: TestLightstep.zip

@keith

This comment has been minimized.

Show comment
Hide comment
@keith

keith Aug 19, 2017

Member

Ah the problem appears to be the imports in the umbrella header generated by CP. In both of these sample projects, commenting all the imports in that file out makes them compile.

Member

keith commented Aug 19, 2017

Ah the problem appears to be the imports in the umbrella header generated by CP. In both of these sample projects, commenting all the imports in that file out makes them compile.

@dnkoutso dnkoutso added this to the 1.4.0 milestone Sep 1, 2017

@fabb

This comment has been minimized.

Show comment
Hide comment
@fabb

fabb Sep 6, 2017

Is there a pre version of cocoapods where static swift libs can be tried out?

fabb commented Sep 6, 2017

Is there a pre version of cocoapods where static swift libs can be tried out?

@chenxiao0228

This comment has been minimized.

Show comment
Hide comment
@chenxiao0228

chenxiao0228 Sep 6, 2017

@DanToml I tried your branch and applied it to our large scale project. In addition to your changes, I also made following changes for our project to build:

  • module_map.rb "framework module" -> "module" for static lib
  • pod_xcconfig.rb add dependent_targets' configuration_build_dir to HEADER_SEARCH_PATHS for Xcode to be able to find modulemap and umbrella headers
  • xcconfig_helper.rb add "-import-underlying-module" for swift/objc hybrid libs
  • tweaks in pod_target_installer.rb

There is however one issue left: make a swift class visible to ObjC class which depends on the lib. In theory this requires @import module -> modulemap -> umbrella -> module-Swift.h inclusion chain. I can copy it from derived-object folder but I am not sure if it's the best approach.

I attached my diff. It's just a quick hack and really messy. Let me know if you wanna collaborate.

chenxiao0228 commented Sep 6, 2017

@DanToml I tried your branch and applied it to our large scale project. In addition to your changes, I also made following changes for our project to build:

  • module_map.rb "framework module" -> "module" for static lib
  • pod_xcconfig.rb add dependent_targets' configuration_build_dir to HEADER_SEARCH_PATHS for Xcode to be able to find modulemap and umbrella headers
  • xcconfig_helper.rb add "-import-underlying-module" for swift/objc hybrid libs
  • tweaks in pod_target_installer.rb

There is however one issue left: make a swift class visible to ObjC class which depends on the lib. In theory this requires @import module -> modulemap -> umbrella -> module-Swift.h inclusion chain. I can copy it from derived-object folder but I am not sure if it's the best approach.

I attached my diff. It's just a quick hack and really messy. Let me know if you wanna collaborate.

@Pearapps

This comment has been minimized.

Show comment
Hide comment
@Pearapps

Pearapps Sep 25, 2017

Is this branch still being updated? Is there anything we can do to help move this along?

Pearapps commented Sep 25, 2017

Is this branch still being updated? Is there anything we can do to help move this along?

@dnkoutso

This comment has been minimized.

Show comment
Hide comment
@dnkoutso

dnkoutso Sep 25, 2017

Contributor

@Pearapps yes! if you feel you can move this faster than the current pace feel free to pick it up and get it past the finish line.

As a reminder, most of the work in CocoaPods is done from people's free time. There is never a deadline or strict timeline to get things done.

Contributor

dnkoutso commented Sep 25, 2017

@Pearapps yes! if you feel you can move this faster than the current pace feel free to pick it up and get it past the finish line.

As a reminder, most of the work in CocoaPods is done from people's free time. There is never a deadline or strict timeline to get things done.

@Pearapps

This comment has been minimized.

Show comment
Hide comment
@Pearapps

Pearapps Sep 25, 2017

I opened up a PR against this that uses that diff that @chenxiao0228 put up in a previous comment #7067

Pearapps commented Sep 25, 2017

I opened up a PR against this that uses that diff that @chenxiao0228 put up in a previous comment #7067

@DanToml

This comment has been minimized.

Show comment
Hide comment
@DanToml

DanToml Oct 3, 2017

Member

Sorry for the silence on this, I've been super busy lately, and CocoaPods feature work has taken a back seat.

I'm taking another look at this today.

Member

DanToml commented Oct 3, 2017

Sorry for the silence on this, I've been super busy lately, and CocoaPods feature work has taken a back seat.

I'm taking another look at this today.

@DanToml

This comment has been minimized.

Show comment
Hide comment
@DanToml

DanToml Oct 3, 2017

Member

@chenxiao0228 Thanks for that diff, coercing module maps into the right format was one of the things I was wondering about.

Member

DanToml commented Oct 3, 2017

@chenxiao0228 Thanks for that diff, coercing module maps into the right format was one of the things I was wondering about.

Show outdated Hide outdated lib/cocoapods/installer/xcode/pods_project_generator/target_installer.rb
@@ -88,6 +88,9 @@ def custom_build_settings
settings['PRIVATE_HEADERS_FOLDER_PATH'] = framework_name + '.framework' + '/PrivateHeaders'
end
else
# if target.uses_swift?

This comment has been minimized.

@segiddins

segiddins Oct 4, 2017

Member

commented code

@segiddins

segiddins Oct 4, 2017

Member

commented code

@dnkoutso

This comment has been minimized.

Show comment
Hide comment
@dnkoutso

dnkoutso Oct 11, 2017

Contributor

Punted to 1.5.0.

Contributor

dnkoutso commented Oct 11, 2017

Punted to 1.5.0.

@dnkoutso

This comment has been minimized.

Show comment
Hide comment
@dnkoutso

dnkoutso Jan 20, 2018

Contributor

Reviving this for 1.5.0 now that 1.4.0 shipped.

Contributor

dnkoutso commented Jan 20, 2018

Reviving this for 1.5.0 now that 1.4.0 shipped.

@segiddins

This comment has been minimized.

Show comment
Hide comment
@segiddins

segiddins Jan 24, 2018

Member

I've taken over this work -- just push a rebase & a bunch of fixes. Will commit an example project shortly, but swift static libraries are now working!

Member

segiddins commented Jan 24, 2018

I've taken over this work -- just push a rebase & a bunch of fixes. Will commit an example project shortly, but swift static libraries are now working!

@keith

This comment has been minimized.

Show comment
Hide comment
@keith

keith Jan 24, 2018

Member

Ran this on our project and found 1 issue on pod install. I'm trying to track it down, but the general issue is that we have static library targets, that depend on Mapper who's CocoaPod is ModelMapper and defines s.module_name = "Mapper"

This results in this error:

[!] The 'Pods-APITests' target has libraries with conflicting names: libmodelmapper.a.

I'm trying to isolate this in a smaller project.

Member

keith commented Jan 24, 2018

Ran this on our project and found 1 issue on pod install. I'm trying to track it down, but the general issue is that we have static library targets, that depend on Mapper who's CocoaPod is ModelMapper and defines s.module_name = "Mapper"

This results in this error:

[!] The 'Pods-APITests' target has libraries with conflicting names: libmodelmapper.a.

I'm trying to isolate this in a smaller project.

@segiddins

This comment has been minimized.

Show comment
Hide comment
@segiddins

segiddins Jan 24, 2018

Member

My guess is the issue is that you're compiling Mapper into both your app and test target, instead of using inherit! :search_paths? But I'm not sure

Member

segiddins commented Jan 24, 2018

My guess is the issue is that you're compiling Mapper into both your app and test target, instead of using inherit! :search_paths? But I'm not sure

@keith

This comment has been minimized.

Show comment
Hide comment
@keith

keith Jan 24, 2018

Member

In our case we definitely have distinct targets in the Podfile that depend on ModelMapper:

target :Foo do
  pod "ModelMapper"

  target :FooTests do
    inherit! :search_paths
  end 
end

target :Bar do
  pod "ModelMapper"

  target :BarTests do
    inherit! :search_paths
  end 
end

Just testing this setup in a sample project doesn't reproduce this error, so it must be a bit more than this.

Member

keith commented Jan 24, 2018

In our case we definitely have distinct targets in the Podfile that depend on ModelMapper:

target :Foo do
  pod "ModelMapper"

  target :FooTests do
    inherit! :search_paths
  end 
end

target :Bar do
  pod "ModelMapper"

  target :BarTests do
    inherit! :search_paths
  end 
end

Just testing this setup in a sample project doesn't reproduce this error, so it must be a bit more than this.

@segiddins segiddins referenced this pull request Feb 2, 2018

Merged

Update for changes to allow swift static libraries #136

2 of 2 tasks complete
@@ -35,7 +35,6 @@ def validate!
verify_no_duplicate_framework_and_library_names
verify_no_static_framework_transitive_dependencies
verify_no_pods_used_with_multiple_swift_versions
verify_framework_usage

This comment has been minimized.

@dnkoutso

dnkoutso Feb 2, 2018

Contributor

adios!

@dnkoutso

dnkoutso Feb 2, 2018

Contributor

adios!

@@ -220,36 +218,6 @@
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;
};
CC1632E381344B54BA63986B /* [CP] Copy Pods Resources */ = {

This comment has been minimized.

@dnkoutso

dnkoutso Feb 2, 2018

Contributor

so much cleaner, if there is nothing to run just dont add the script at all.

@dnkoutso

dnkoutso Feb 2, 2018

Contributor

so much cleaner, if there is nothing to run just dont add the script at all.

@segiddins segiddins changed the title from [WIP] Swift Static Library support to Swift Static Library support Feb 2, 2018

@segiddins

This comment has been minimized.

Show comment
Hide comment
@segiddins

segiddins Feb 2, 2018

Member

This should now be ready for review!

Member

segiddins commented Feb 2, 2018

This should now be ready for review!

@keith

This comment has been minimized.

Show comment
Hide comment
@keith

keith Feb 2, 2018

Member

Getting this crash on this branch now:

ArgumentError - wrong number of arguments (given 4, expected 3)
/path/to/repo/vendor/bundle/ruby/2.3.0/gems/cocoapods-core-1.4.0/lib/cocoapods-core/lockfile.rb:378:in `generate'
/path/to/repo/vendor/bundle/ruby/2.3.0/bundler/gems/CocoaPods-dd8ffe6a7821/lib/cocoapods/installer.rb:553:in `write_lockfiles'
/path/to/repo/vendor/bundle/ruby/2.3.0/bundler/gems/CocoaPods-dd8ffe6a7821/lib/cocoapods/installer.rb:189:in `block in generate_pods_project'
/path/to/repo/vendor/bundle/ruby/2.3.0/bundler/gems/CocoaPods-dd8ffe6a7821/lib/cocoapods/user_interface.rb:64:in `section'
/path/to/repo/vendor/bundle/ruby/2.3.0/bundler/gems/CocoaPods-dd8ffe6a7821/lib/cocoapods/installer.rb:183:in `generate_pods_project'
/path/to/repo/vendor/bundle/ruby/2.3.0/bundler/gems/CocoaPods-dd8ffe6a7821/lib/cocoapods/installer.rb:119:in `install!'
/path/to/repo/vendor/bundle/ruby/2.3.0/bundler/gems/CocoaPods-dd8ffe6a7821/lib/cocoapods/command/install.rb:41:in `run'
/path/to/repo/vendor/bundle/ruby/2.3.0/gems/claide-1.0.2/lib/claide/command.rb:334:in `run'
/path/to/repo/vendor/bundle/ruby/2.3.0/bundler/gems/CocoaPods-dd8ffe6a7821/lib/cocoapods/command.rb:52:in `run'
/path/to/repo/vendor/bundle/ruby/2.3.0/bundler/gems/CocoaPods-dd8ffe6a7821/bin/pod:55:in `<top (required)>'
/path/to/repo/vendor/bundle/ruby/2.3.0/bin/pod:22:in `load'
/path/to/repo/vendor/bundle/ruby/2.3.0/bin/pod:22:in `<top (required)>'
/Users/ksmiley/.gem/ruby/2.3.3/gems/bundler-1.16.0/lib/bundler/cli/exec.rb:75:in `load'
/Users/ksmiley/.gem/ruby/2.3.3/gems/bundler-1.16.0/lib/bundler/cli/exec.rb:75:in `kernel_load'
/Users/ksmiley/.gem/ruby/2.3.3/gems/bundler-1.16.0/lib/bundler/cli/exec.rb:28:in `run'
/Users/ksmiley/.gem/ruby/2.3.3/gems/bundler-1.16.0/lib/bundler/cli.rb:424:in `exec'
/Users/ksmiley/.gem/ruby/2.3.3/gems/bundler-1.16.0/lib/bundler/vendor/thor/lib/thor/command.rb:27:in `run'
/Users/ksmiley/.gem/ruby/2.3.3/gems/bundler-1.16.0/lib/bundler/vendor/thor/lib/thor/invocation.rb:126:in `invoke_command'
/Users/ksmiley/.gem/ruby/2.3.3/gems/bundler-1.16.0/lib/bundler/vendor/thor/lib/thor.rb:387:in `dispatch'
/Users/ksmiley/.gem/ruby/2.3.3/gems/bundler-1.16.0/lib/bundler/cli.rb:27:in `dispatch'
/Users/ksmiley/.gem/ruby/2.3.3/gems/bundler-1.16.0/lib/bundler/vendor/thor/lib/thor/base.rb:466:in `start'
/Users/ksmiley/.gem/ruby/2.3.3/gems/bundler-1.16.0/lib/bundler/cli.rb:18:in `start'
/Users/ksmiley/.gem/ruby/2.3.3/gems/bundler-1.16.0/exe/bundle:30:in `block in <top (required)>'
/Users/ksmiley/.gem/ruby/2.3.3/gems/bundler-1.16.0/lib/bundler/friendly_errors.rb:122:in `with_friendly_errors'
/Users/ksmiley/.gem/ruby/2.3.3/gems/bundler-1.16.0/exe/bundle:22:in `<top (required)>'
/Users/ksmiley/.gem/ruby/2.3.3/bin/bundle:22:in `load'
/Users/ksmiley/.gem/ruby/2.3.3/bin/bundle:22:in `<main>'
Member

keith commented Feb 2, 2018

Getting this crash on this branch now:

ArgumentError - wrong number of arguments (given 4, expected 3)
/path/to/repo/vendor/bundle/ruby/2.3.0/gems/cocoapods-core-1.4.0/lib/cocoapods-core/lockfile.rb:378:in `generate'
/path/to/repo/vendor/bundle/ruby/2.3.0/bundler/gems/CocoaPods-dd8ffe6a7821/lib/cocoapods/installer.rb:553:in `write_lockfiles'
/path/to/repo/vendor/bundle/ruby/2.3.0/bundler/gems/CocoaPods-dd8ffe6a7821/lib/cocoapods/installer.rb:189:in `block in generate_pods_project'
/path/to/repo/vendor/bundle/ruby/2.3.0/bundler/gems/CocoaPods-dd8ffe6a7821/lib/cocoapods/user_interface.rb:64:in `section'
/path/to/repo/vendor/bundle/ruby/2.3.0/bundler/gems/CocoaPods-dd8ffe6a7821/lib/cocoapods/installer.rb:183:in `generate_pods_project'
/path/to/repo/vendor/bundle/ruby/2.3.0/bundler/gems/CocoaPods-dd8ffe6a7821/lib/cocoapods/installer.rb:119:in `install!'
/path/to/repo/vendor/bundle/ruby/2.3.0/bundler/gems/CocoaPods-dd8ffe6a7821/lib/cocoapods/command/install.rb:41:in `run'
/path/to/repo/vendor/bundle/ruby/2.3.0/gems/claide-1.0.2/lib/claide/command.rb:334:in `run'
/path/to/repo/vendor/bundle/ruby/2.3.0/bundler/gems/CocoaPods-dd8ffe6a7821/lib/cocoapods/command.rb:52:in `run'
/path/to/repo/vendor/bundle/ruby/2.3.0/bundler/gems/CocoaPods-dd8ffe6a7821/bin/pod:55:in `<top (required)>'
/path/to/repo/vendor/bundle/ruby/2.3.0/bin/pod:22:in `load'
/path/to/repo/vendor/bundle/ruby/2.3.0/bin/pod:22:in `<top (required)>'
/Users/ksmiley/.gem/ruby/2.3.3/gems/bundler-1.16.0/lib/bundler/cli/exec.rb:75:in `load'
/Users/ksmiley/.gem/ruby/2.3.3/gems/bundler-1.16.0/lib/bundler/cli/exec.rb:75:in `kernel_load'
/Users/ksmiley/.gem/ruby/2.3.3/gems/bundler-1.16.0/lib/bundler/cli/exec.rb:28:in `run'
/Users/ksmiley/.gem/ruby/2.3.3/gems/bundler-1.16.0/lib/bundler/cli.rb:424:in `exec'
/Users/ksmiley/.gem/ruby/2.3.3/gems/bundler-1.16.0/lib/bundler/vendor/thor/lib/thor/command.rb:27:in `run'
/Users/ksmiley/.gem/ruby/2.3.3/gems/bundler-1.16.0/lib/bundler/vendor/thor/lib/thor/invocation.rb:126:in `invoke_command'
/Users/ksmiley/.gem/ruby/2.3.3/gems/bundler-1.16.0/lib/bundler/vendor/thor/lib/thor.rb:387:in `dispatch'
/Users/ksmiley/.gem/ruby/2.3.3/gems/bundler-1.16.0/lib/bundler/cli.rb:27:in `dispatch'
/Users/ksmiley/.gem/ruby/2.3.3/gems/bundler-1.16.0/lib/bundler/vendor/thor/lib/thor/base.rb:466:in `start'
/Users/ksmiley/.gem/ruby/2.3.3/gems/bundler-1.16.0/lib/bundler/cli.rb:18:in `start'
/Users/ksmiley/.gem/ruby/2.3.3/gems/bundler-1.16.0/exe/bundle:30:in `block in <top (required)>'
/Users/ksmiley/.gem/ruby/2.3.3/gems/bundler-1.16.0/lib/bundler/friendly_errors.rb:122:in `with_friendly_errors'
/Users/ksmiley/.gem/ruby/2.3.3/gems/bundler-1.16.0/exe/bundle:22:in `<top (required)>'
/Users/ksmiley/.gem/ruby/2.3.3/bin/bundle:22:in `load'
/Users/ksmiley/.gem/ruby/2.3.3/bin/bundle:22:in `<main>'
@dnkoutso

This comment has been minimized.

Show comment
Hide comment
@dnkoutso

dnkoutso Feb 2, 2018

Contributor

@keith you might need to use cocoapods-core master too since it depends on updated lockfile changes to include spec repos

Contributor

dnkoutso commented Feb 2, 2018

@keith you might need to use cocoapods-core master too since it depends on updated lockfile changes to include spec repos

@keith

This comment has been minimized.

Show comment
Hide comment
@keith

keith Feb 2, 2018

Member

For some reason I was thinking bundler might handle that for me, sorry, the install works after that!

Member

keith commented Feb 2, 2018

For some reason I was thinking bundler might handle that for me, sorry, the install works after that!

@keith

This comment has been minimized.

Show comment
Hide comment
@keith

keith Feb 2, 2018

Member

We have a slightly different error here then we did last time I posted it:

[!] The 'Pods-APITests' target has libraries with conflicting names: libmodelmapper-ios.a.

But I assume this is the same cause

Member

keith commented Feb 2, 2018

We have a slightly different error here then we did last time I posted it:

[!] The 'Pods-APITests' target has libraries with conflicting names: libmodelmapper-ios.a.

But I assume this is the same cause

segiddins added some commits Jan 24, 2018

[AggregateTargetInstaller] Ensure static libraries don’t attempt to e…
…mbed swift stdlib

Because the aggregate target uses the same xcconfig as the user target, we have to disable embedding solely for the target, as it needs to be set to YES in the xcconfig
[Target] Place umbrella headers / module maps in the headers directory
Only for static libs at the moment, but this means the relative paths found in the module map will be importable
[PodTargetInstaller] Set product / module name directly on the target
xcodebuild fails if a framework target has PRODUCT_MODULE_NAME
Revert target name changes
While well-intentioned, they broke cross-project target dependency detection
[PodTargetInstaller] Generate module maps that exclude other target’s…
… umbrella headers

This allows us to avoid incomplete umbrella header warnings
[PodTarget] Only create module maps for targets that define a module
By default, targets integrated as static libraries _will not_ get a module map, unless they opt-in by including `DEFINES_MODULE = YES` in their specification's `pod_target_xcconfig`
Ensure static library module maps are declared as [system]
This is to mirror our use of -isystem for header search paths, making it so that headers imported via <> have warnings supressed
@segiddins

This comment has been minimized.

Show comment
Hide comment
@segiddins

segiddins Feb 20, 2018

Member

Rebased, this is basically ready to go!

Member

segiddins commented Feb 20, 2018

Rebased, this is basically ready to go!

@segiddins segiddins merged commit d7c0b2b into master Feb 20, 2018

2 checks passed

ci/circleci Your tests passed on CircleCI!
Details
continuous-integration/travis-ci/pr The Travis CI build passed
Details
@arithma

This comment has been minimized.

Show comment
Hide comment
@arithma

arithma Mar 11, 2018

Question: Will this resolve the issue with transitive dependency stuff?

arithma commented Mar 11, 2018

Question: Will this resolve the issue with transitive dependency stuff?

@orta orta deleted the dani_static_swift branch Mar 16, 2018

@sergdort sergdort referenced this pull request Mar 18, 2018

Closed

Add static libs support #1601

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment