swiftlang / swift-package-manager

The Package Manager for the Swift Programming Language
Apache License 2.0
9.74k stars 1.34k forks source link

[SR-5956] Some repos cannot be fetched #4945

Closed swift-ci closed 6 years ago

swift-ci commented 7 years ago
Previous ID SR-5956
Radar None
Original Reporter cocoapriest (JIRA User)
Type Bug
Status Resolved
Resolution Duplicate
Environment Apple Swift version 4.0 (swiftlang-900.0.65 clang-900.0.37) Target: x86_64-apple-macosx10.9 Apple Swift Package Manager - Swift 4.0.0-dev (swiftpm-13126)
Additional Detail from JIRA | | | |------------------|-----------------| |Votes | 0 | |Component/s | Package Manager | |Labels | Bug | |Assignee | None | |Priority | Medium | md5: d0c45c9863228cd8c7a87e1081a806ba

duplicates:

Issue Description:

SPM freezes while doing updates for some packages:

Fetching https://github.com/krzyzanowskim/CryptoSwift.git
error: reachedTimeLimit

It happens on indirect dependencies only. When I include this dependency in my Package.swift, SPM fetches it without problems.

For now, I found only 2 repos behaving this weirdly –
https://github.com/nvzqz/Threadly.git and https://github.com/krzyzanowskim/CryptoSwift.git

Here is exactly my Package.swift:

// swift-tools-version:4.0

import PackageDescription

let _ = Package(
    name: "api",
    products: [
        .library(
            name: "api",
            targets: ["api"])
    ],
    dependencies: [
        .package(url: "https://github.com/PerfectlySoft/Perfect-HTTPServer.git", from: "3.0.0"),
        .package(url: "https://github.com/PerfectlySoft/Perfect-CURL.git", from: "3.0.0"),
        .package(url: "https://github.com/PerfectSideRepos/Perfect-RegEx.git", from: "1.1.0"),
        .package(url: "https://github.com/OpenKitten/MongoKitten.git", from: "4.0.0"),
        .package(url: "https://github.com/iamjono/JSONConfig.git", from: "1.0.0"),
        .package(url: "../../s3", from: "0.1.0")
    ],
    targets: [
        .target(
            name: "api",
            dependencies: ["PerfectHTTPServer", "PerfectCURL", "MongoKitten", "Regex", "JSONConfig", "s3"])
    ]
)

And from my local s3 package:

// swift-tools-version:4.0

import PackageDescription

let package = Package(
    name: "s3",
    products: [
        .library(
            name: "s3",
            targets: ["s3"])
        ],
    dependencies: [
        .package(url: "https://github.com/krzyzanowskim/CryptoSwift.git", from: "0.7.2")
    ],
    targets: [
        .target(
            name: "s3",
            dependencies: ["CryptoSwift"])
    ]
)
swift-ci commented 7 years ago

Comment by Konstantin Gonikman (JIRA)

Another interesting thing: if I comment out some of the dependencies, everything seems to work. But I can't believe there's something like "too many dependencies" setting..

aciidgh commented 7 years ago

The problem is that you require Perfect-HTTPServer v3 which eventually requires PerfectLib v3 where as JSONConfig requires PerfectLib v2. This makes the graph unresolvable. If you remove JSONConfig dependency, swiftpm is able to reach a solution.

Cloning https://github.com/PerfectlySoft/Perfect-HTTP.git
Resolving https://github.com/PerfectlySoft/Perfect-HTTP.git at 3.0.0
Cloning https://github.com/PerfectlySoft/Perfect-libcurl.git
Resolving https://github.com/PerfectlySoft/Perfect-libcurl.git at 2.0.6
Cloning https://github.com/PerfectSideRepos/Perfect-RegEx.git
Resolving https://github.com/PerfectSideRepos/Perfect-RegEx.git at 1.1.0
Cloning https://github.com/PerfectlySoft/Perfect-HTTPServer.git
Resolving https://github.com/PerfectlySoft/Perfect-HTTPServer.git at 3.0.0
Cloning https://github.com/OpenKitten/Schrodinger.git
Resolving https://github.com/OpenKitten/Schrodinger.git at 1.0.1
Cloning /private/tmp/test/s3
Resolving /private/tmp/test/s3 at 0.1.0
Cloning https://github.com/krzyzanowskim/CryptoSwift.git
Resolving https://github.com/krzyzanowskim/CryptoSwift.git at 0.7.2
Cloning https://github.com/OpenKitten/Cheetah.git
Resolving https://github.com/OpenKitten/Cheetah.git at 1.0.3
Cloning https://github.com/OpenKitten/CryptoKitten.git
Resolving https://github.com/OpenKitten/CryptoKitten.git at 0.2.3
Cloning https://github.com/PerfectlySoft/Perfect-CURL.git
Resolving https://github.com/PerfectlySoft/Perfect-CURL.git at 3.0.0
Cloning https://github.com/OpenKitten/BSON.git
Resolving https://github.com/OpenKitten/BSON.git at 5.1.5
Cloning https://github.com/PerfectlySoft/Perfect-COpenSSL.git
Resolving https://github.com/PerfectlySoft/Perfect-COpenSSL.git at 3.0.0
Cloning https://github.com/PerfectlySoft/Perfect-Thread.git
Resolving https://github.com/PerfectlySoft/Perfect-Thread.git at 3.0.0
Cloning https://github.com/PerfectlySoft/Perfect-Crypto.git
Resolving https://github.com/PerfectlySoft/Perfect-Crypto.git at 3.0.0
Cloning https://github.com/OpenKitten/KittenCore.git
Resolving https://github.com/OpenKitten/KittenCore.git at 0.2.3
Cloning https://github.com/PerfectlySoft/PerfectLib.git
Resolving https://github.com/PerfectlySoft/PerfectLib.git at 3.0.0
Cloning https://github.com/OpenKitten/MongoKitten.git
Resolving https://github.com/OpenKitten/MongoKitten.git at 4.0.15
Cloning https://github.com/PerfectlySoft/Perfect-Net.git
Resolving https://github.com/PerfectlySoft/Perfect-Net.git at 3.0.0
aciidgh commented 7 years ago

I am duplicating this to SR-4400 because we need make the resolver faster.

swift-ci commented 6 years ago

Comment by Guido Marucci Blas (JIRA)

Hi! I'm still seeing this problem when running inside a docker container trying to build a project on ubuntu

Using docker image: botengine-build-latest
root@f7b0b8aa23b1:/botengine# script/build
Swift version: Swift version 4.2-dev (LLVM c41d146806, Clang 3ef62dacf4, Swift 57940b7c68)
Target: x86_64-unknown-linux-gnu
Build path: ./.build-ubuntu/x86_64-unknown-linux/debug
Build flags:  --build-path ./.build-ubuntu
Fetching https://github.com/daltoniam/common-crypto-spm
Fetching https://github.com/ReactiveCocoa/ReactiveSwift
Fetching https://github.com/apple/swift-nio.git
Fetching https://github.com/SlackKit/SKWebAPI
Fetching https://github.com/daltoniam/Starscream
Fetching https://github.com/apple/swift-nio-ssl-support.git
Fetching https://github.com/attaswift/BigInt
Fetching https://github.com/Quick/Quick.git
Fetching https://github.com/attaswift/SipHash
Fetching https://github.com/SlackKit/SKCore
Fetching https://github.com/SlackKit/SKClient
Fetching https://github.com/apple/swift-nio-ssl.git
Fetching https://github.com/Quick/Nimble.git
Fetching https://github.com/SlackKit/SKRTMAPI
Fetching https://github.com/vapor/core.git
Fetching https://github.com/timburks/SwiftyBase64
Fetching https://github.com/typelift/SwiftCheck.git
Fetching https://github.com/llvm-swift/FileCheck.git
Fetching https://github.com/vapor/http.git
Fetching https://github.com/daltoniam/zlib-spm.git
Fetching https://github.com/apple/swift-nio-zlib-support.git
Fetching https://github.com/antitypical/Result.git
Fetching https://github.com/krzyzanowskim/CryptoSwift.git
Fetching https://github.com/vapor/engine
Fetching https://github.com/vapor/crypto.git
Fetching https://github.com/vapor/tls.git
Fetching https://github.com/vapor/sockets.git
Fetching https://github.com/vapor/random.git
error: reachedTimeLimit
'BotEngine' /botengine: error: product dependency 'ReactiveSwift' not found
'BotEngine' /botengine: error: product dependency 'ReactiveSwift' not found
'BotEngine' /botengine: error: product dependency 'SKCore' not found
'BotEngine' /botengine: error: product dependency 'SKClient' not found
'BotEngine' /botengine: error: product dependency 'SKRTMAPI' not found
'BotEngine' /botengine: error: product dependency 'HTTP' not found
'BotEngine' /botengine: error: product dependency 'SwiftCheck' not found
'BotEngine' /botengine: error: product dependency 'ReactiveSwift' not found
'BotEngine' /botengine: error: product dependency 'CryptoSwift' not found
'BotEngine' /botengine: error: product dependency 'BigInt' not found
'BotEngine' /botengine: error: product dependency 'SwiftyBase64' not found

This happens with

Here is my Package.swift file

// swift-tools-version:4.0
// The swift-tools-version declares the minimum version of Swift required to build this package.

import PackageDescription

let package = Package(
    name: "BotEngine",
    products: [
        .executable(name: "BotEngine", targets: ["BotEngine"]),
        .library(name: "BotEngineKit", targets: ["BotEngineKit"]),
        .library(name: "GoogleAPI", targets: ["GoogleAPI"]),
        .library(name: "GoogleOAuth", targets: ["GoogleOAuth"]),
        .library(name: "TestKit", targets: ["TestKit"]),
        .library(name: "WoloxKit", targets: ["WoloxKit"])
    ],
    dependencies: [
        // Dependencies
        .package(url: "https://github.com/ReactiveCocoa/ReactiveSwift", from: "3.1.0"),
        .package(url: "https://github.com/vapor/http.git", from: "3.0.0"),
        .package(url: "https://github.com/SlackKit/SKCore", .upToNextMinor(from: "4.1.0")),
        .package(url: "https://github.com/SlackKit/SKClient", .upToNextMinor(from: "4.1.0")),
        .package(url: "https://github.com/SlackKit/SKRTMAPI", .upToNextMinor(from: "4.1.0")),
        .package(url: "https://github.com/krzyzanowskim/CryptoSwift.git", from: "0.8.0"),
        .package(url: "https://github.com/attaswift/BigInt", from: "3.0.0"),
        .package(url: "https://github.com/timburks/SwiftyBase64", from: "1.2.0"),

        // Test dependencies
        .package(url: "https://github.com/typelift/SwiftCheck.git", from: "0.8.1")
    ],
    targets: [
        .target(
            name: "BotEngine",
            dependencies: [
              "BotEngineKit"
            ]
        ),
        .target(
            name: "BotEngineKit",
            dependencies: [
              "GoogleAPI",
              "ReactiveSwift",
              "GoogleOAuth",
              "SKCore",
              "SKClient",
              "SKRTMAPI",
              "HTTP"
            ]
        ),
        .target(
          name: "GoogleAPI",
          dependencies: [
            "ReactiveSwift"
          ]
        ),
        .target(
          name: "GoogleOAuth",
          dependencies: [
            "CryptoSwift",
            "BigInt",
            "SwiftyBase64"
          ]
        ),
        .target(
          name: "TestKit",
          dependencies: [
            "GoogleAPI"
          ]
        ),
        .target(
            name: "WoloxKit",
            dependencies: [
              "GoogleAPI",
              "ReactiveSwift"
            ]
        ),

        // Test targets
        .testTarget(
            name: "BotEngineKitTests",
            dependencies: [
              "BotEngineKit",
              "TestKit",
              "SwiftCheck"
            ]
        ),
        .testTarget(
            name: "WoloxKitTests",
            dependencies: [
              "WoloxKit",
              "TestKit"
            ]
        ),
        .testTarget(
            name: "GoogleAPITests",
            dependencies: [
              "GoogleAPI",
              "TestKit"
            ]
        )
    ]
)
swift-ci commented 6 years ago

Comment by Guido Marucci Blas (JIRA)

I've created a new issue https://bugs.swift.org/browse/SR-7957