Search code examples
swiftgitsqliteserver-sidevapor

majorVersion and minor in describing dependency package in Vapor


How to decide what to put for majorVersion and minor in below code. I was trying to use sqlite3 with vapor and got stuck here.

import PackageDescription

let package = Package(
    name: "Hello",
    dependencies: [
        .Package(url: "https://github.com/vapor/vapor.git", majorVersion: 1, minor: 1)
        ,.Package(url: "https://github.com/vapor/sqlite-driver.git", majorVersion: 1, minor: 0)
        ,.Package(url: "https://github.com/vapor/sqlite-provider.git", majorVersion: 1, minor: 1)
    ],
    exclude: [
        "Config",
        "Database",
        "Localization",
        "Public",
        "Resources",
        "Tests",
    ]
)

I am getting error as below when I do vapor build -

Fetching Dependencies [Failed] Check your dependencies' Package.swift files to see where the conflict is. Error: swift-package: error: The dependency graph could not be satisfied. The package (https://github.com/vapor/sqlite-driver.git) with version tag in range (1.1.0..<1.1.9223372036854775807) is not found. Found tags ([0.0.0, 0.1.0, 0.1.1, 0.2.0, 0.3.0, 0.3.1, 0.3.2, 0.4.0, 0.4.1, 0.5.0, 0.6.0, 0.7.0, 1.0.0, 1.0.1])


Solution

  • The 'dependency graph' error relates to one of your packages depending on a conflicting version of another package. The error messages tells you to 'Check your dependencies' Package.swift files to see where the conflict is.'

    You don't need to include both sqlite-driver and sqlite-provider as the latter already has a built-in dependency on the former. Simply remove the dependency on sqlite-driver from your app's Package.swift. Also make sure to vapor clean afterwards.

    import PackageDescription
    
    let package = Package(
        name: "Hello",
        dependencies: [
            .Package(url: "https://github.com/vapor/vapor.git", majorVersion: 1, minor: 1),
            .Package(url: "https://github.com/vapor/sqlite-provider.git", majorVersion: 1, minor: 1)
        ],
        exclude: [
            "Config",
            "Database",
            "Localization",
            "Public",
            "Resources",
            "Tests",
        ]
    )
    

    Note: Vapor is now at version 1.2 so you might want to change the version you are pulling in.