Cocoapods: Spec fails lint with "include of non-modular header inside framework module"

Created on 5 Aug 2016  路  7Comments  路  Source: CocoaPods/CocoaPods

A podspec I maintain fails to lint in Cocoapods 1.0.x but lints fine in cocoapods-0.39.0

What did you do?

Last login: Thu Aug  4 17:35:00 on ttys000
Moorea:Sprout levi$ pod trunk push Sprout.podspec 
Updating spec repo `master`

CocoaPods 1.1.0.beta.1 is available.
To update use: `sudo gem install cocoapods --pre`
[!] This is a test version we'd love you to try.

For more information, see https://blog.cocoapods.org and the CHANGELOG for this version at https://github.com/CocoaPods/CocoaPods/releases/tag/1.1.0.beta.1

Validating podspec
 -> Sprout (2.2)
    - ERROR | [iOS] unknown: Encountered an unknown error ([!] /Applications/Xcode.app/Contents/Developer/usr/bin/git clone https://github.com/levigroker/Sprout.git /var/folders/7b/mh8q849d64sc6r07cypfg_mh0000gn/T/d20160804-13388-17vg51v --template= --single-branch --depth 1 --branch 2.2

Cloning into '/var/folders/7b/mh8q849d64sc6r07cypfg_mh0000gn/T/d20160804-13388-17vg51v'...
warning: Could not find remote branch 2.2 to clone.
fatal: Remote branch 2.2 not found in upstream origin
) during validation.

[!] The spec did not pass validation, due to 1 error.
Moorea:Sprout levi$ pod trunk push Sprout.podspec 
Updating spec repo `master`

CocoaPods 1.1.0.beta.1 is available.
To update use: `sudo gem install cocoapods --pre`
[!] This is a test version we'd love you to try.

For more information, see https://blog.cocoapods.org and the CHANGELOG for this version at https://github.com/CocoaPods/CocoaPods/releases/tag/1.1.0.beta.1

Validating podspec
 -> Sprout (2.2)
    - ERROR | xcodebuild: Returned an unsuccessful exit code. You can use `--verbose` for more information.
    - ERROR | xcodebuild:  /Users/levi/Library/Developer/Xcode/DerivedData/App-excebmuyqknxyvbxezyzjowjflro/Build/Products/Release-iphonesimulator/Sprout/Sprout.framework/Headers/CrashlyticsLogger.h:20:9: error: include of non-modular header inside framework module 'Sprout.CrashlyticsLogger' [-Werror,-Wnon-modular-include-in-framework-module]
    - ERROR | xcodebuild:  /Users/levi/Library/Developer/Xcode/DerivedData/App-excebmuyqknxyvbxezyzjowjflro/Build/Products/Release-iphonesimulator/Sprout/Sprout.framework/Headers/Sprout.h:60:9: error: include of non-modular header inside framework module 'Sprout.Sprout' [-Werror,-Wnon-modular-include-in-framework-module]
    - ERROR | xcodebuild:  /Users/levi/Library/Developer/Xcode/DerivedData/App-excebmuyqknxyvbxezyzjowjflro/Build/Products/Release-iphonesimulator/Sprout/Sprout.framework/Headers/Sprout.h:61:9: error: include of non-modular header inside framework module 'Sprout.Sprout' [-Werror,-Wnon-modular-include-in-framework-module]
    - ERROR | xcodebuild:  /Users/levi/Library/Developer/Xcode/DerivedData/App-excebmuyqknxyvbxezyzjowjflro/Build/Products/Release-iphonesimulator/Sprout/Sprout.framework/Headers/Sprout.h:62:9: error: include of non-modular header inside framework module 'Sprout.Sprout' [-Werror,-Wnon-modular-include-in-framework-module]
    - ERROR | xcodebuild:  /Users/levi/Library/Developer/Xcode/DerivedData/App-excebmuyqknxyvbxezyzjowjflro/Build/Products/Release-iphonesimulator/Sprout/Sprout.framework/Headers/SproutDDLogAdditions.h:25:9: error: include of non-modular header inside framework module 'Sprout.SproutDDLogAdditions' [-Werror,-Wnon-modular-include-in-framework-module]
    - ERROR | xcodebuild:  /Users/levi/Library/Developer/Xcode/DerivedData/App-excebmuyqknxyvbxezyzjowjflro/Build/Products/Release-iphonesimulator/Sprout/Sprout.framework/Headers/SproutCustomLogFormatter.h:19:9: error: include of non-modular header inside framework module 'Sprout.SproutCustomLogFormatter' [-Werror,-Wnon-modular-include-in-framework-module]
    - NOTE  | xcodebuild:  /var/folders/7b/mh8q849d64sc6r07cypfg_mh0000gn/T/CocoaPods/Lint/App/main.m:3:9: fatal error: could not build module 'Sprout'
    - ERROR | [OSX] xcodebuild:  /Users/levi/Library/Developer/Xcode/DerivedData/App-excebmuyqknxyvbxezyzjowjflro/Build/Products/Release/Sprout/Sprout.framework/Headers/CrashlyticsLogger.h:20:9: error: include of non-modular header inside framework module 'Sprout.CrashlyticsLogger' [-Werror,-Wnon-modular-include-in-framework-module]
    - ERROR | [OSX] xcodebuild:  /Users/levi/Library/Developer/Xcode/DerivedData/App-excebmuyqknxyvbxezyzjowjflro/Build/Products/Release/Sprout/Sprout.framework/Headers/Sprout.h:60:9: error: include of non-modular header inside framework module 'Sprout.Sprout' [-Werror,-Wnon-modular-include-in-framework-module]
    - ERROR | [OSX] xcodebuild:  /Users/levi/Library/Developer/Xcode/DerivedData/App-excebmuyqknxyvbxezyzjowjflro/Build/Products/Release/Sprout/Sprout.framework/Headers/Sprout.h:61:9: error: include of non-modular header inside framework module 'Sprout.Sprout' [-Werror,-Wnon-modular-include-in-framework-module]
    - ERROR | [OSX] xcodebuild:  /Users/levi/Library/Developer/Xcode/DerivedData/App-excebmuyqknxyvbxezyzjowjflro/Build/Products/Release/Sprout/Sprout.framework/Headers/Sprout.h:62:9: error: include of non-modular header inside framework module 'Sprout.Sprout' [-Werror,-Wnon-modular-include-in-framework-module]
    - ERROR | [OSX] xcodebuild:  /Users/levi/Library/Developer/Xcode/DerivedData/App-excebmuyqknxyvbxezyzjowjflro/Build/Products/Release/Sprout/Sprout.framework/Headers/SproutDDLogAdditions.h:25:9: error: include of non-modular header inside framework module 'Sprout.SproutDDLogAdditions' [-Werror,-Wnon-modular-include-in-framework-module]
    - ERROR | [OSX] xcodebuild:  /Users/levi/Library/Developer/Xcode/DerivedData/App-excebmuyqknxyvbxezyzjowjflro/Build/Products/Release/Sprout/Sprout.framework/Headers/SproutCustomLogFormatter.h:19:9: error: include of non-modular header inside framework module 'Sprout.SproutCustomLogFormatter' [-Werror,-Wnon-modular-include-in-framework-module]

[!] The spec did not pass validation, due to 13 errors.
Moorea:Sprout levi$ pod --version
1.0.0
Moorea:Sprout levi$ rm -rf /Users/levi/Library/Developer/Xcode/DerivedData/*
rm: /Users/levi/Library/Developer/Xcode/DerivedData/ModuleCache/V1OYP09BBM8S: Directory not empty
rm: /Users/levi/Library/Developer/Xcode/DerivedData/ModuleCache: Directory not empty
Moorea:Sprout levi$ pod spec lint Sprout.podspec 

 -> Sprout (2.2)
    - ERROR | xcodebuild: Returned an unsuccessful exit code. You can use `--verbose` for more information.
    - ERROR | xcodebuild:  /Users/levi/Library/Developer/Xcode/DerivedData/App-excebmuyqknxyvbxezyzjowjflro/Build/Products/Release-iphonesimulator/Sprout/Sprout.framework/Headers/CrashlyticsLogger.h:20:9: error: include of non-modular header inside framework module 'Sprout.CrashlyticsLogger' [-Werror,-Wnon-modular-include-in-framework-module]
    - ERROR | xcodebuild:  /Users/levi/Library/Developer/Xcode/DerivedData/App-excebmuyqknxyvbxezyzjowjflro/Build/Products/Release-iphonesimulator/Sprout/Sprout.framework/Headers/Sprout.h:60:9: error: include of non-modular header inside framework module 'Sprout.Sprout' [-Werror,-Wnon-modular-include-in-framework-module]
    - ERROR | xcodebuild:  /Users/levi/Library/Developer/Xcode/DerivedData/App-excebmuyqknxyvbxezyzjowjflro/Build/Products/Release-iphonesimulator/Sprout/Sprout.framework/Headers/Sprout.h:61:9: error: include of non-modular header inside framework module 'Sprout.Sprout' [-Werror,-Wnon-modular-include-in-framework-module]
    - ERROR | xcodebuild:  /Users/levi/Library/Developer/Xcode/DerivedData/App-excebmuyqknxyvbxezyzjowjflro/Build/Products/Release-iphonesimulator/Sprout/Sprout.framework/Headers/Sprout.h:62:9: error: include of non-modular header inside framework module 'Sprout.Sprout' [-Werror,-Wnon-modular-include-in-framework-module]
    - ERROR | xcodebuild:  /Users/levi/Library/Developer/Xcode/DerivedData/App-excebmuyqknxyvbxezyzjowjflro/Build/Products/Release-iphonesimulator/Sprout/Sprout.framework/Headers/SproutDDLogAdditions.h:25:9: error: include of non-modular header inside framework module 'Sprout.SproutDDLogAdditions' [-Werror,-Wnon-modular-include-in-framework-module]
    - ERROR | xcodebuild:  /Users/levi/Library/Developer/Xcode/DerivedData/App-excebmuyqknxyvbxezyzjowjflro/Build/Products/Release-iphonesimulator/Sprout/Sprout.framework/Headers/SproutCustomLogFormatter.h:19:9: error: include of non-modular header inside framework module 'Sprout.SproutCustomLogFormatter' [-Werror,-Wnon-modular-include-in-framework-module]
    - NOTE  | xcodebuild:  /var/folders/7b/mh8q849d64sc6r07cypfg_mh0000gn/T/CocoaPods/Lint/App/main.m:3:9: fatal error: could not build module 'Sprout'
    - ERROR | [OSX] xcodebuild:  /Users/levi/Library/Developer/Xcode/DerivedData/App-excebmuyqknxyvbxezyzjowjflro/Build/Products/Release/Sprout/Sprout.framework/Headers/CrashlyticsLogger.h:20:9: error: include of non-modular header inside framework module 'Sprout.CrashlyticsLogger' [-Werror,-Wnon-modular-include-in-framework-module]
    - ERROR | [OSX] xcodebuild:  /Users/levi/Library/Developer/Xcode/DerivedData/App-excebmuyqknxyvbxezyzjowjflro/Build/Products/Release/Sprout/Sprout.framework/Headers/Sprout.h:60:9: error: include of non-modular header inside framework module 'Sprout.Sprout' [-Werror,-Wnon-modular-include-in-framework-module]
    - ERROR | [OSX] xcodebuild:  /Users/levi/Library/Developer/Xcode/DerivedData/App-excebmuyqknxyvbxezyzjowjflro/Build/Products/Release/Sprout/Sprout.framework/Headers/Sprout.h:61:9: error: include of non-modular header inside framework module 'Sprout.Sprout' [-Werror,-Wnon-modular-include-in-framework-module]
    - ERROR | [OSX] xcodebuild:  /Users/levi/Library/Developer/Xcode/DerivedData/App-excebmuyqknxyvbxezyzjowjflro/Build/Products/Release/Sprout/Sprout.framework/Headers/Sprout.h:62:9: error: include of non-modular header inside framework module 'Sprout.Sprout' [-Werror,-Wnon-modular-include-in-framework-module]
    - ERROR | [OSX] xcodebuild:  /Users/levi/Library/Developer/Xcode/DerivedData/App-excebmuyqknxyvbxezyzjowjflro/Build/Products/Release/Sprout/Sprout.framework/Headers/SproutDDLogAdditions.h:25:9: error: include of non-modular header inside framework module 'Sprout.SproutDDLogAdditions' [-Werror,-Wnon-modular-include-in-framework-module]
    - ERROR | [OSX] xcodebuild:  /Users/levi/Library/Developer/Xcode/DerivedData/App-excebmuyqknxyvbxezyzjowjflro/Build/Products/Release/Sprout/Sprout.framework/Headers/SproutCustomLogFormatter.h:19:9: error: include of non-modular header inside framework module 'Sprout.SproutCustomLogFormatter' [-Werror,-Wnon-modular-include-in-framework-module]

Analyzed 1 podspec.

[!] The spec did not pass validation, due to 13 errors.
Moorea:Sprout levi$ sudo gem pod uninstall

Select gem to uninstall:
 1. cocoapods-0.35.0
 2. cocoapods-0.37.2
 3. cocoapods-0.38.2
 4. cocoapods-0.39.0
 5. cocoapods-1.0.0
 6. All versions
> 5   
Successfully uninstalled cocoapods-1.0.0
Moorea:Sprout levi$ pod spec lint Sprout.podspec 

[!] Unable to load a specification for the plugin `/Library/Ruby/Gems/2.0.0/gems/cocoapods-deintegrate-1.0.0`
[!] Unable to load a specification for the plugin `/Library/Ruby/Gems/2.0.0/gems/cocoapods-deintegrate-1.0.0`
 -> Sprout (2.2)
    - NOTE  | xcodebuild:  warning: hash mismatch: this object file was built against a different version of the module /var/folders/7b/mh8q849d64sc6r07cypfg_mh0000gn/C/org.llvm.clang.levi/ModuleCache/27DVWF511LH76/Cocoa-24L2Q5B8ONJG4.pcm

Analyzed 1 podspec.

Sprout.podspec passed validation.

Moorea:Sprout levi$ pod trunk push Sprout.podspec 
Updating spec repo `master`

CocoaPods 1.1.0.beta.1 is available.
To update use: `gem install cocoapods --pre`
[!] This is a test version we'd love you to try.

For more information see http://blog.cocoapods.org
and the CHANGELOG for this version http://git.io/BaH8pQ.

Validating podspec
[!] Unable to load a specification for the plugin `/Library/Ruby/Gems/2.0.0/gems/cocoapods-deintegrate-1.0.0`
[!] Unable to load a specification for the plugin `/Library/Ruby/Gems/2.0.0/gems/cocoapods-deintegrate-1.0.0`
 -> Sprout (2.2)

Updating spec repo `master`

CocoaPods 1.1.0.beta.1 is available.
To update use: `gem install cocoapods --pre`
[!] This is a test version we'd love you to try.

For more information see http://blog.cocoapods.org
and the CHANGELOG for this version http://git.io/BaH8pQ.

  - Data URL: https://raw.githubusercontent.com/CocoaPods/Specs/1085cd8132709998fd1239c4c05f9eff6c9964ae/Specs/Sprout/2.2/Sprout.podspec.json
  - Log messages:
    - August 5th, 10:03: Push for `Sprout 2.2' initiated.
    - August 5th, 10:03: Push for `Sprout 2.2' has been pushed (0.383774194 s).
Moorea:Sprout levi$ sudo gem install cocoapods
Fetching: cocoapods-core-1.0.1.gem (100%)
Successfully installed cocoapods-core-1.0.1
Fetching: xcodeproj-1.2.0.gem (100%)
Successfully installed xcodeproj-1.2.0
Fetching: cocoapods-1.0.1.gem (100%)
Successfully installed cocoapods-1.0.1
Fetching: concurrent-ruby-1.0.2.gem (100%)
Successfully installed concurrent-ruby-1.0.2
Parsing documentation for cocoapods-core-1.0.1
Installing ri documentation for cocoapods-core-1.0.1
Parsing documentation for xcodeproj-1.2.0
Installing ri documentation for xcodeproj-1.2.0
Parsing documentation for cocoapods-1.0.1
Installing ri documentation for cocoapods-1.0.1
Parsing documentation for concurrent-ruby-1.0.2
Installing ri documentation for concurrent-ruby-1.0.2
4 gems installed
Moorea:Sprout levi$ pod spec lint Sprout.podspec 

 -> Sprout (2.2)
    - ERROR | xcodebuild: Returned an unsuccessful exit code. You can use `--verbose` for more information.
    - ERROR | xcodebuild:  /Users/levi/Library/Developer/Xcode/DerivedData/App-excebmuyqknxyvbxezyzjowjflro/Build/Products/Release-iphonesimulator/Sprout/Sprout.framework/Headers/CrashlyticsLogger.h:20:9: error: include of non-modular header inside framework module 'Sprout.CrashlyticsLogger' [-Werror,-Wnon-modular-include-in-framework-module]
    - ERROR | xcodebuild:  /Users/levi/Library/Developer/Xcode/DerivedData/App-excebmuyqknxyvbxezyzjowjflro/Build/Products/Release-iphonesimulator/Sprout/Sprout.framework/Headers/Sprout.h:60:9: error: include of non-modular header inside framework module 'Sprout.Sprout' [-Werror,-Wnon-modular-include-in-framework-module]
    - ERROR | xcodebuild:  /Users/levi/Library/Developer/Xcode/DerivedData/App-excebmuyqknxyvbxezyzjowjflro/Build/Products/Release-iphonesimulator/Sprout/Sprout.framework/Headers/Sprout.h:61:9: error: include of non-modular header inside framework module 'Sprout.Sprout' [-Werror,-Wnon-modular-include-in-framework-module]
    - ERROR | xcodebuild:  /Users/levi/Library/Developer/Xcode/DerivedData/App-excebmuyqknxyvbxezyzjowjflro/Build/Products/Release-iphonesimulator/Sprout/Sprout.framework/Headers/Sprout.h:62:9: error: include of non-modular header inside framework module 'Sprout.Sprout' [-Werror,-Wnon-modular-include-in-framework-module]
    - ERROR | xcodebuild:  /Users/levi/Library/Developer/Xcode/DerivedData/App-excebmuyqknxyvbxezyzjowjflro/Build/Products/Release-iphonesimulator/Sprout/Sprout.framework/Headers/SproutDDLogAdditions.h:25:9: error: include of non-modular header inside framework module 'Sprout.SproutDDLogAdditions' [-Werror,-Wnon-modular-include-in-framework-module]
    - ERROR | xcodebuild:  /Users/levi/Library/Developer/Xcode/DerivedData/App-excebmuyqknxyvbxezyzjowjflro/Build/Products/Release-iphonesimulator/Sprout/Sprout.framework/Headers/SproutCustomLogFormatter.h:19:9: error: include of non-modular header inside framework module 'Sprout.SproutCustomLogFormatter' [-Werror,-Wnon-modular-include-in-framework-module]
    - NOTE  | xcodebuild:  /var/folders/7b/mh8q849d64sc6r07cypfg_mh0000gn/T/CocoaPods/Lint/App/main.m:3:9: fatal error: could not build module 'Sprout'
    - ERROR | [OSX] xcodebuild:  /Users/levi/Library/Developer/Xcode/DerivedData/App-excebmuyqknxyvbxezyzjowjflro/Build/Products/Release/Sprout/Sprout.framework/Headers/CrashlyticsLogger.h:20:9: error: include of non-modular header inside framework module 'Sprout.CrashlyticsLogger' [-Werror,-Wnon-modular-include-in-framework-module]
    - ERROR | [OSX] xcodebuild:  /Users/levi/Library/Developer/Xcode/DerivedData/App-excebmuyqknxyvbxezyzjowjflro/Build/Products/Release/Sprout/Sprout.framework/Headers/Sprout.h:60:9: error: include of non-modular header inside framework module 'Sprout.Sprout' [-Werror,-Wnon-modular-include-in-framework-module]
    - ERROR | [OSX] xcodebuild:  /Users/levi/Library/Developer/Xcode/DerivedData/App-excebmuyqknxyvbxezyzjowjflro/Build/Products/Release/Sprout/Sprout.framework/Headers/Sprout.h:61:9: error: include of non-modular header inside framework module 'Sprout.Sprout' [-Werror,-Wnon-modular-include-in-framework-module]
    - ERROR | [OSX] xcodebuild:  /Users/levi/Library/Developer/Xcode/DerivedData/App-excebmuyqknxyvbxezyzjowjflro/Build/Products/Release/Sprout/Sprout.framework/Headers/Sprout.h:62:9: error: include of non-modular header inside framework module 'Sprout.Sprout' [-Werror,-Wnon-modular-include-in-framework-module]
    - ERROR | [OSX] xcodebuild:  /Users/levi/Library/Developer/Xcode/DerivedData/App-excebmuyqknxyvbxezyzjowjflro/Build/Products/Release/Sprout/Sprout.framework/Headers/SproutDDLogAdditions.h:25:9: error: include of non-modular header inside framework module 'Sprout.SproutDDLogAdditions' [-Werror,-Wnon-modular-include-in-framework-module]
    - ERROR | [OSX] xcodebuild:  /Users/levi/Library/Developer/Xcode/DerivedData/App-excebmuyqknxyvbxezyzjowjflro/Build/Products/Release/Sprout/Sprout.framework/Headers/SproutCustomLogFormatter.h:19:9: error: include of non-modular header inside framework module 'Sprout.SproutCustomLogFormatter' [-Werror,-Wnon-modular-include-in-framework-module]

Analyzed 1 podspec.

[!] The spec did not pass validation, due to 13 errors.
Moorea:Sprout levi$ pod --version
1.0.1
Moorea:Sprout levi$ 

What did you expect to happen?

Linting and trunk push to succeed in Cocoapods 1.0.x

What happened instead?

Listing failed with many errors with include of non-modular header inside framework module

CocoaPods Environment

Stack

   CocoaPods : 1.0.1
        Ruby : ruby 2.0.0p648 (2015-12-16 revision 53162) [universal.x86_64-darwin15]
    RubyGems : 2.0.14.1
        Host : Mac OS X 10.11.6 (15G31)
       Xcode : 7.3 (7D175)
         Git : git version 2.8.1
Ruby lib dir : /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib
Repositories : coradinepodspecs - [email protected]:coradine/coradinepodspecs.git @ 9208f41bfe97a1812393d5216ceabd44d21f3b5a
               master - https://github.com/CocoaPods/Specs.git @ 1085cd8132709998fd1239c4c05f9eff6c9964ae

Installation Source

Executable Path: /usr/local/bin/pod

Plugins

cocoapods-deintegrate : 1.0.0
cocoapods-plugins     : 1.0.0
cocoapods-search      : 1.0.0
cocoapods-stats       : 1.0.0
cocoapods-trunk       : 1.0.0
cocoapods-try         : 1.0.0

Project that demonstrates the issue

https://github.com/levigroker/Sprout

Most helpful comment

@levigroker You are using non-modular imports (#import "DDLog.h") for dependencies. You need to switch these to modular imports (#import <CocoaLumberjack/DDLog.h>).

All 7 comments

I have a similar issue. We have a private spec repo and now that we created our first Swift pod I get the same errors.
The error seems to be caused when including headers of dependency pods.

Pod A has pods B, C and D defined as dependencies in the pod spec file, where D is a Swift pod. We previously linted with --use-libraries. Now with Swift this is not possible any more and linting fails.

This is likely a legitimate issue with your Pods build settings under 1.0, as we changed a fair bit of how search paths were set up

@segiddins Thanks for the reply... could you be more specific as to what issue you expect is causing this and suggest solutions/workarounds? I've poured over the podspec docs and do not see anything I'm doing incorrectly.

@levigroker You are using non-modular imports (#import "DDLog.h") for dependencies. You need to switch these to modular imports (#import <CocoaLumberjack/DDLog.h>).

Thanks... I'll give it a try asap.

Hi @DanToml, Thanks. Referencing the headers as Framework headers does seem to address this for me.

Cheers,

Levi

@levigroker Great!

Was this page helpful?
0 / 5 - 0 ratings