How do you use one subspec as the dependency of another subspec with cocoapods?










0















I'm trying to create a podspec for vapor/core. It already has a Swift Package Manager manifest file so I'm basing the podspec of of that.



Package.swift:



// swift-tools-version:4.0
import PackageDescription

let package = Package(
name: "Core",
products: [
.library(name: "Async", targets: ["Async"]),
.library(name: "Bits", targets: ["Bits"]),
.library(name: "Core", targets: ["Core"]),
.library(name: "COperatingSystem", targets: ["COperatingSystem"]),
.library(name: "Debugging", targets: ["Debugging"]),
],
dependencies: [
/// Event-driven network application framework for high performance protocol servers & clients, non-blocking.
.package(url: "https://github.com/apple/swift-nio.git", from: "1.8.0"),
],
targets: [
.target(name: "Async", dependencies: ["NIO"]),
.testTarget(name: "AsyncTests", dependencies: ["Async"]),
.target(name: "Bits", dependencies: ["Debugging", "NIO"]),
.testTarget(name: "BitsTests", dependencies: ["Bits", "NIO"]),
.target(name: "Core", dependencies: ["Async", "Bits", "COperatingSystem", "Debugging", "NIOFoundationCompat"]),
.testTarget(name: "CoreTests", dependencies: ["Core"]),
.target(name: "COperatingSystem"),
.target(name: "Debugging"),
.testTarget(name: "DebuggingTests", dependencies: ["Debugging"]),
]
)


I think what I want to do is create a subspec for each non-test target, although I'm not sure that's correct, so please correct me if that's wrong. This is what I've got for Core.podspec:



Pod::Spec.new do |s|

s.name = "Core"
s.version = "3.4.4"
s.summary = "🌎 Utility package containing tools for byte manipulation, Codable, OS APIs, and debugging."

s.description = <<-DESC
Utility package containing tools for byte manipulation, Codable, OS APIs, and debugging.
DESC

s.homepage = "https://github.com/vapor/core"
s.license = :type => "MIT", :file => "LICENSE.txt"

s.author = "Tanner Nelson" => ""

s.ios.deployment_target = "10.0"

s.source = :git => "https://github.com/twof/core.git", :branch => "master"

s.source_files = "Sources/**/*.swift"
s.exclude_files = [
'Pods/**'
]
s.module_name = "Core"

s.swift_version = "4.2"

s.dependency 'SwiftNIO'

s.subspec 'Debugging' do |debug|
debug.source_files = 'Sources/Debugging/**/*.swift'
end

s.subspec 'Async' do |async|
async.dependency 'SwiftNIO'

async.source_files = 'Sources/Async/**/*.swift'
end

s.subspec 'Bits' do |bits|
bits.dependency 'SwiftNIO'
bits.dependency 'Core/Debugging'

bits.source_files = 'Sources/Bits/**/*.swift'
end

s.subspec 'COperatingSystem' do |os|
os.source_files = 'Sources/COperatingSystem/**/*.swift'
end

s.subspec 'Core' do |core|
core.source_files = "Sources/Core/**/*.swift"

core.dependency 'Core/Debugging'
core.dependency 'Core/Async'
core.dependency 'Core/Bits'
core.dependency 'Core/COperatingSystem'
core.dependency 'SwiftNIOFoundationCompat'
end
end


However, the above fails linting with the following errors



 -> Core (3.4.4)
- ERROR | [Core/Bits,Core/Core] xcodebuild: Returned an unsuccessful exit code.
- ERROR | [Core/Bits,Core/Core] xcodebuild: Core/Sources/Bits/BitsError.swift:1:8: error: no such module 'Debugging'


It seems like Core/Debugging is not being used as a dependency for Core/Bits and Core/Core, and I can't tell why that is. If it helps, you can find the full output of pod spec lint Core.podspec --verbose here.










share|improve this question

















  • 1





    Have you tried using just bits.dependency 'Debugging'?

    – zero3nna
    Nov 15 '18 at 8:17











  • 'Debugging' points to this pod: cocoapods.org/pods/Debugging unfortunately

    – TWOF
    Nov 15 '18 at 18:47











  • How does your podfile look like? You have to specify your Source first, if you are using private pods. source 'https://github.com/me/my-podspecs.git' This way its looking for your pods first and you shouldnt run into naming problems

    – zero3nna
    Nov 16 '18 at 8:00












  • Can you explain what podfile you're talking about? I thought I'd just need the podspec in order to publish.

    – TWOF
    Nov 18 '18 at 5:28











  • Nvm, I thougt of something different but you are not trying to integrate the pod into a project yet. But your first attempt was right, its Core/Debugging otherwise you get these namespace collisions.

    – zero3nna
    Nov 19 '18 at 8:50















0















I'm trying to create a podspec for vapor/core. It already has a Swift Package Manager manifest file so I'm basing the podspec of of that.



Package.swift:



// swift-tools-version:4.0
import PackageDescription

let package = Package(
name: "Core",
products: [
.library(name: "Async", targets: ["Async"]),
.library(name: "Bits", targets: ["Bits"]),
.library(name: "Core", targets: ["Core"]),
.library(name: "COperatingSystem", targets: ["COperatingSystem"]),
.library(name: "Debugging", targets: ["Debugging"]),
],
dependencies: [
/// Event-driven network application framework for high performance protocol servers & clients, non-blocking.
.package(url: "https://github.com/apple/swift-nio.git", from: "1.8.0"),
],
targets: [
.target(name: "Async", dependencies: ["NIO"]),
.testTarget(name: "AsyncTests", dependencies: ["Async"]),
.target(name: "Bits", dependencies: ["Debugging", "NIO"]),
.testTarget(name: "BitsTests", dependencies: ["Bits", "NIO"]),
.target(name: "Core", dependencies: ["Async", "Bits", "COperatingSystem", "Debugging", "NIOFoundationCompat"]),
.testTarget(name: "CoreTests", dependencies: ["Core"]),
.target(name: "COperatingSystem"),
.target(name: "Debugging"),
.testTarget(name: "DebuggingTests", dependencies: ["Debugging"]),
]
)


I think what I want to do is create a subspec for each non-test target, although I'm not sure that's correct, so please correct me if that's wrong. This is what I've got for Core.podspec:



Pod::Spec.new do |s|

s.name = "Core"
s.version = "3.4.4"
s.summary = "🌎 Utility package containing tools for byte manipulation, Codable, OS APIs, and debugging."

s.description = <<-DESC
Utility package containing tools for byte manipulation, Codable, OS APIs, and debugging.
DESC

s.homepage = "https://github.com/vapor/core"
s.license = :type => "MIT", :file => "LICENSE.txt"

s.author = "Tanner Nelson" => ""

s.ios.deployment_target = "10.0"

s.source = :git => "https://github.com/twof/core.git", :branch => "master"

s.source_files = "Sources/**/*.swift"
s.exclude_files = [
'Pods/**'
]
s.module_name = "Core"

s.swift_version = "4.2"

s.dependency 'SwiftNIO'

s.subspec 'Debugging' do |debug|
debug.source_files = 'Sources/Debugging/**/*.swift'
end

s.subspec 'Async' do |async|
async.dependency 'SwiftNIO'

async.source_files = 'Sources/Async/**/*.swift'
end

s.subspec 'Bits' do |bits|
bits.dependency 'SwiftNIO'
bits.dependency 'Core/Debugging'

bits.source_files = 'Sources/Bits/**/*.swift'
end

s.subspec 'COperatingSystem' do |os|
os.source_files = 'Sources/COperatingSystem/**/*.swift'
end

s.subspec 'Core' do |core|
core.source_files = "Sources/Core/**/*.swift"

core.dependency 'Core/Debugging'
core.dependency 'Core/Async'
core.dependency 'Core/Bits'
core.dependency 'Core/COperatingSystem'
core.dependency 'SwiftNIOFoundationCompat'
end
end


However, the above fails linting with the following errors



 -> Core (3.4.4)
- ERROR | [Core/Bits,Core/Core] xcodebuild: Returned an unsuccessful exit code.
- ERROR | [Core/Bits,Core/Core] xcodebuild: Core/Sources/Bits/BitsError.swift:1:8: error: no such module 'Debugging'


It seems like Core/Debugging is not being used as a dependency for Core/Bits and Core/Core, and I can't tell why that is. If it helps, you can find the full output of pod spec lint Core.podspec --verbose here.










share|improve this question

















  • 1





    Have you tried using just bits.dependency 'Debugging'?

    – zero3nna
    Nov 15 '18 at 8:17











  • 'Debugging' points to this pod: cocoapods.org/pods/Debugging unfortunately

    – TWOF
    Nov 15 '18 at 18:47











  • How does your podfile look like? You have to specify your Source first, if you are using private pods. source 'https://github.com/me/my-podspecs.git' This way its looking for your pods first and you shouldnt run into naming problems

    – zero3nna
    Nov 16 '18 at 8:00












  • Can you explain what podfile you're talking about? I thought I'd just need the podspec in order to publish.

    – TWOF
    Nov 18 '18 at 5:28











  • Nvm, I thougt of something different but you are not trying to integrate the pod into a project yet. But your first attempt was right, its Core/Debugging otherwise you get these namespace collisions.

    – zero3nna
    Nov 19 '18 at 8:50













0












0








0








I'm trying to create a podspec for vapor/core. It already has a Swift Package Manager manifest file so I'm basing the podspec of of that.



Package.swift:



// swift-tools-version:4.0
import PackageDescription

let package = Package(
name: "Core",
products: [
.library(name: "Async", targets: ["Async"]),
.library(name: "Bits", targets: ["Bits"]),
.library(name: "Core", targets: ["Core"]),
.library(name: "COperatingSystem", targets: ["COperatingSystem"]),
.library(name: "Debugging", targets: ["Debugging"]),
],
dependencies: [
/// Event-driven network application framework for high performance protocol servers & clients, non-blocking.
.package(url: "https://github.com/apple/swift-nio.git", from: "1.8.0"),
],
targets: [
.target(name: "Async", dependencies: ["NIO"]),
.testTarget(name: "AsyncTests", dependencies: ["Async"]),
.target(name: "Bits", dependencies: ["Debugging", "NIO"]),
.testTarget(name: "BitsTests", dependencies: ["Bits", "NIO"]),
.target(name: "Core", dependencies: ["Async", "Bits", "COperatingSystem", "Debugging", "NIOFoundationCompat"]),
.testTarget(name: "CoreTests", dependencies: ["Core"]),
.target(name: "COperatingSystem"),
.target(name: "Debugging"),
.testTarget(name: "DebuggingTests", dependencies: ["Debugging"]),
]
)


I think what I want to do is create a subspec for each non-test target, although I'm not sure that's correct, so please correct me if that's wrong. This is what I've got for Core.podspec:



Pod::Spec.new do |s|

s.name = "Core"
s.version = "3.4.4"
s.summary = "🌎 Utility package containing tools for byte manipulation, Codable, OS APIs, and debugging."

s.description = <<-DESC
Utility package containing tools for byte manipulation, Codable, OS APIs, and debugging.
DESC

s.homepage = "https://github.com/vapor/core"
s.license = :type => "MIT", :file => "LICENSE.txt"

s.author = "Tanner Nelson" => ""

s.ios.deployment_target = "10.0"

s.source = :git => "https://github.com/twof/core.git", :branch => "master"

s.source_files = "Sources/**/*.swift"
s.exclude_files = [
'Pods/**'
]
s.module_name = "Core"

s.swift_version = "4.2"

s.dependency 'SwiftNIO'

s.subspec 'Debugging' do |debug|
debug.source_files = 'Sources/Debugging/**/*.swift'
end

s.subspec 'Async' do |async|
async.dependency 'SwiftNIO'

async.source_files = 'Sources/Async/**/*.swift'
end

s.subspec 'Bits' do |bits|
bits.dependency 'SwiftNIO'
bits.dependency 'Core/Debugging'

bits.source_files = 'Sources/Bits/**/*.swift'
end

s.subspec 'COperatingSystem' do |os|
os.source_files = 'Sources/COperatingSystem/**/*.swift'
end

s.subspec 'Core' do |core|
core.source_files = "Sources/Core/**/*.swift"

core.dependency 'Core/Debugging'
core.dependency 'Core/Async'
core.dependency 'Core/Bits'
core.dependency 'Core/COperatingSystem'
core.dependency 'SwiftNIOFoundationCompat'
end
end


However, the above fails linting with the following errors



 -> Core (3.4.4)
- ERROR | [Core/Bits,Core/Core] xcodebuild: Returned an unsuccessful exit code.
- ERROR | [Core/Bits,Core/Core] xcodebuild: Core/Sources/Bits/BitsError.swift:1:8: error: no such module 'Debugging'


It seems like Core/Debugging is not being used as a dependency for Core/Bits and Core/Core, and I can't tell why that is. If it helps, you can find the full output of pod spec lint Core.podspec --verbose here.










share|improve this question














I'm trying to create a podspec for vapor/core. It already has a Swift Package Manager manifest file so I'm basing the podspec of of that.



Package.swift:



// swift-tools-version:4.0
import PackageDescription

let package = Package(
name: "Core",
products: [
.library(name: "Async", targets: ["Async"]),
.library(name: "Bits", targets: ["Bits"]),
.library(name: "Core", targets: ["Core"]),
.library(name: "COperatingSystem", targets: ["COperatingSystem"]),
.library(name: "Debugging", targets: ["Debugging"]),
],
dependencies: [
/// Event-driven network application framework for high performance protocol servers & clients, non-blocking.
.package(url: "https://github.com/apple/swift-nio.git", from: "1.8.0"),
],
targets: [
.target(name: "Async", dependencies: ["NIO"]),
.testTarget(name: "AsyncTests", dependencies: ["Async"]),
.target(name: "Bits", dependencies: ["Debugging", "NIO"]),
.testTarget(name: "BitsTests", dependencies: ["Bits", "NIO"]),
.target(name: "Core", dependencies: ["Async", "Bits", "COperatingSystem", "Debugging", "NIOFoundationCompat"]),
.testTarget(name: "CoreTests", dependencies: ["Core"]),
.target(name: "COperatingSystem"),
.target(name: "Debugging"),
.testTarget(name: "DebuggingTests", dependencies: ["Debugging"]),
]
)


I think what I want to do is create a subspec for each non-test target, although I'm not sure that's correct, so please correct me if that's wrong. This is what I've got for Core.podspec:



Pod::Spec.new do |s|

s.name = "Core"
s.version = "3.4.4"
s.summary = "🌎 Utility package containing tools for byte manipulation, Codable, OS APIs, and debugging."

s.description = <<-DESC
Utility package containing tools for byte manipulation, Codable, OS APIs, and debugging.
DESC

s.homepage = "https://github.com/vapor/core"
s.license = :type => "MIT", :file => "LICENSE.txt"

s.author = "Tanner Nelson" => ""

s.ios.deployment_target = "10.0"

s.source = :git => "https://github.com/twof/core.git", :branch => "master"

s.source_files = "Sources/**/*.swift"
s.exclude_files = [
'Pods/**'
]
s.module_name = "Core"

s.swift_version = "4.2"

s.dependency 'SwiftNIO'

s.subspec 'Debugging' do |debug|
debug.source_files = 'Sources/Debugging/**/*.swift'
end

s.subspec 'Async' do |async|
async.dependency 'SwiftNIO'

async.source_files = 'Sources/Async/**/*.swift'
end

s.subspec 'Bits' do |bits|
bits.dependency 'SwiftNIO'
bits.dependency 'Core/Debugging'

bits.source_files = 'Sources/Bits/**/*.swift'
end

s.subspec 'COperatingSystem' do |os|
os.source_files = 'Sources/COperatingSystem/**/*.swift'
end

s.subspec 'Core' do |core|
core.source_files = "Sources/Core/**/*.swift"

core.dependency 'Core/Debugging'
core.dependency 'Core/Async'
core.dependency 'Core/Bits'
core.dependency 'Core/COperatingSystem'
core.dependency 'SwiftNIOFoundationCompat'
end
end


However, the above fails linting with the following errors



 -> Core (3.4.4)
- ERROR | [Core/Bits,Core/Core] xcodebuild: Returned an unsuccessful exit code.
- ERROR | [Core/Bits,Core/Core] xcodebuild: Core/Sources/Bits/BitsError.swift:1:8: error: no such module 'Debugging'


It seems like Core/Debugging is not being used as a dependency for Core/Bits and Core/Core, and I can't tell why that is. If it helps, you can find the full output of pod spec lint Core.podspec --verbose here.







ios swift cocoapods






share|improve this question













share|improve this question











share|improve this question




share|improve this question










asked Nov 15 '18 at 7:22









TWOFTWOF

125111




125111







  • 1





    Have you tried using just bits.dependency 'Debugging'?

    – zero3nna
    Nov 15 '18 at 8:17











  • 'Debugging' points to this pod: cocoapods.org/pods/Debugging unfortunately

    – TWOF
    Nov 15 '18 at 18:47











  • How does your podfile look like? You have to specify your Source first, if you are using private pods. source 'https://github.com/me/my-podspecs.git' This way its looking for your pods first and you shouldnt run into naming problems

    – zero3nna
    Nov 16 '18 at 8:00












  • Can you explain what podfile you're talking about? I thought I'd just need the podspec in order to publish.

    – TWOF
    Nov 18 '18 at 5:28











  • Nvm, I thougt of something different but you are not trying to integrate the pod into a project yet. But your first attempt was right, its Core/Debugging otherwise you get these namespace collisions.

    – zero3nna
    Nov 19 '18 at 8:50












  • 1





    Have you tried using just bits.dependency 'Debugging'?

    – zero3nna
    Nov 15 '18 at 8:17











  • 'Debugging' points to this pod: cocoapods.org/pods/Debugging unfortunately

    – TWOF
    Nov 15 '18 at 18:47











  • How does your podfile look like? You have to specify your Source first, if you are using private pods. source 'https://github.com/me/my-podspecs.git' This way its looking for your pods first and you shouldnt run into naming problems

    – zero3nna
    Nov 16 '18 at 8:00












  • Can you explain what podfile you're talking about? I thought I'd just need the podspec in order to publish.

    – TWOF
    Nov 18 '18 at 5:28











  • Nvm, I thougt of something different but you are not trying to integrate the pod into a project yet. But your first attempt was right, its Core/Debugging otherwise you get these namespace collisions.

    – zero3nna
    Nov 19 '18 at 8:50







1




1





Have you tried using just bits.dependency 'Debugging'?

– zero3nna
Nov 15 '18 at 8:17





Have you tried using just bits.dependency 'Debugging'?

– zero3nna
Nov 15 '18 at 8:17













'Debugging' points to this pod: cocoapods.org/pods/Debugging unfortunately

– TWOF
Nov 15 '18 at 18:47





'Debugging' points to this pod: cocoapods.org/pods/Debugging unfortunately

– TWOF
Nov 15 '18 at 18:47













How does your podfile look like? You have to specify your Source first, if you are using private pods. source 'https://github.com/me/my-podspecs.git' This way its looking for your pods first and you shouldnt run into naming problems

– zero3nna
Nov 16 '18 at 8:00






How does your podfile look like? You have to specify your Source first, if you are using private pods. source 'https://github.com/me/my-podspecs.git' This way its looking for your pods first and you shouldnt run into naming problems

– zero3nna
Nov 16 '18 at 8:00














Can you explain what podfile you're talking about? I thought I'd just need the podspec in order to publish.

– TWOF
Nov 18 '18 at 5:28





Can you explain what podfile you're talking about? I thought I'd just need the podspec in order to publish.

– TWOF
Nov 18 '18 at 5:28













Nvm, I thougt of something different but you are not trying to integrate the pod into a project yet. But your first attempt was right, its Core/Debugging otherwise you get these namespace collisions.

– zero3nna
Nov 19 '18 at 8:50





Nvm, I thougt of something different but you are not trying to integrate the pod into a project yet. But your first attempt was right, its Core/Debugging otherwise you get these namespace collisions.

– zero3nna
Nov 19 '18 at 8:50












0






active

oldest

votes











Your Answer






StackExchange.ifUsing("editor", function ()
StackExchange.using("externalEditor", function ()
StackExchange.using("snippets", function ()
StackExchange.snippets.init();
);
);
, "code-snippets");

StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "1"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);

StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);

else
createEditor();

);

function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);



);













draft saved

draft discarded


















StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53314282%2fhow-do-you-use-one-subspec-as-the-dependency-of-another-subspec-with-cocoapods%23new-answer', 'question_page');

);

Post as a guest















Required, but never shown

























0






active

oldest

votes








0






active

oldest

votes









active

oldest

votes






active

oldest

votes















draft saved

draft discarded
















































Thanks for contributing an answer to Stack Overflow!


  • Please be sure to answer the question. Provide details and share your research!

But avoid


  • Asking for help, clarification, or responding to other answers.

  • Making statements based on opinion; back them up with references or personal experience.

To learn more, see our tips on writing great answers.




draft saved


draft discarded














StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53314282%2fhow-do-you-use-one-subspec-as-the-dependency-of-another-subspec-with-cocoapods%23new-answer', 'question_page');

);

Post as a guest















Required, but never shown





















































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown

































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown







Popular posts from this blog

Top Tejano songwriter Luis Silva dead of heart attack at 64

政党

天津地下鉄3号線