Skip to content
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

Support for Swift Package Manager ? #112

Closed
mackoj opened this issue Oct 30, 2017 · 4 comments
Closed

Support for Swift Package Manager ? #112

mackoj opened this issue Oct 30, 2017 · 4 comments

Comments

@mackoj
Copy link

mackoj commented Oct 30, 2017

Hi,

Thanks for the great library. It's could be great if you consider adding support for Swift package manager.

This is an example of Package.swift to add to the root of your repository. But you will still have to remove all code that is not available on Linux to make it work.

// swift-tools-version:4.0
import PackageDescription

let package = Package(
    name: "Heimdallr",
    products: [
        .library(name: "Heimdallr", targets: ["Heimdallr"]),
    ],
    dependencies: [
        .package(url: "https://github.com/antitypical/Result.git", .upToNextMajor(from: "3.0.0")),
    ],
    targets: [
         .target(
            name: "Heimdallr",
            dependencies: ["Result"],
            path: "Heimdallr",
            exclude: [
                "HeimdallrTests",
                "script",
                "Carthage",
                "Heimdallr/Supporting Files",
                "bin"]),
    ],
    swiftLanguageVersions: [3]
)

Errors that I get when I try to build it for SPM(Swift Package Manager).

/Users/jmacko/code/vapor/Heimdallr.swift/Heimdallr/OAuthAccessToken.swift:5:32: error: use of undeclared type 'NSObject'
public class OAuthAccessToken: NSObject {
                               ^~~~~~~~
/Users/jmacko/code/vapor/Heimdallr.swift/Heimdallr/OAuthAccessToken.swift:4:2: error: only classes that inherit from NSObject can be declared @objc
@objc
~^~~~
/Users/jmacko/code/vapor/Heimdallr.swift/Heimdallr/OAuthAccessToken.swift:5:32: error: use of undeclared type 'NSObject'
public class OAuthAccessToken: NSObject {
                               ^~~~~~~~
/Users/jmacko/code/vapor/Heimdallr.swift/Heimdallr/OAuthAccessToken.swift:4:2: error: only classes that inherit from NSObject can be declared @objc
@objc
~^~~~
/Users/jmacko/code/vapor/Heimdallr.swift/Heimdallr/OAuthAccessToken.swift:5:32: error: use of undeclared type 'NSObject'
public class OAuthAccessToken: NSObject {
                               ^~~~~~~~
/Users/jmacko/code/vapor/Heimdallr.swift/Heimdallr/OAuthAccessToken.swift:4:2: error: only classes that inherit from NSObject can be declared @objc
@objc
~^~~~
/Users/jmacko/code/vapor/Heimdallr.swift/Heimdallr/OAuthAccessToken.swift:5:32: error: use of undeclared type 'NSObject'
public class OAuthAccessToken: NSObject {
                               ^~~~~~~~
/Users/jmacko/code/vapor/Heimdallr.swift/Heimdallr/OAuthAccessToken.swift:4:2: error: only classes that inherit from NSObject can be declared @objc
@objc
~^~~~
/Users/jmacko/code/vapor/Heimdallr.swift/Heimdallr/OAuthAccessToken.swift:5:32: error: use of undeclared type 'NSObject'
public class OAuthAccessToken: NSObject {
                               ^~~~~~~~
/Users/jmacko/code/vapor/Heimdallr.swift/Heimdallr/OAuthAccessToken.swift:4:2: error: only classes that inherit from NSObject can be declared @objc
@objc
~^~~~
/Users/jmacko/code/vapor/Heimdallr.swift/Heimdallr/OAuthAccessToken.swift:13:27: error: use of undeclared type 'Date'
    public let expiresAt: Date?
                          ^~~~
/Users/jmacko/code/vapor/Heimdallr.swift/Heimdallr/OAuthAccessToken.swift:27:68: error: use of undeclared type 'Date'
    public init(accessToken: String, tokenType: String, expiresAt: Date? = nil, refreshToken: String? = nil) {
                                                                   ^~~~
/Users/jmacko/code/vapor/Heimdallr.swift/Heimdallr/OAuthAccessToken.swift:43:87: error: use of undeclared type 'Date'
    public func copy(accessToken: String? = nil, tokenType: String? = nil, expiresAt: Date?? = nil, refreshToken: String?? = nil) -> OAuthAccessToken {
                                                                                      ^~~~
/Users/jmacko/code/vapor/Heimdallr.swift/Heimdallr/OAuthAccessToken.swift:78:36: error: use of undeclared type 'Data'
    public class func decode(data: Data) -> OAuthAccessToken? {
                                   ^~~~
/Users/jmacko/code/vapor/Heimdallr.swift/Heimdallr/OAuthAccessToken.swift:60:63: error: use of undeclared type 'Date'
        func toDate(_ timeIntervalSinceNow: TimeInterval?) -> Date? {
                                                              ^~~~
/Users/jmacko/code/vapor/Heimdallr.swift/Heimdallr/OAuthAccessToken.swift:60:45: error: use of undeclared type 'TimeInterval'
        func toDate(_ timeIntervalSinceNow: TimeInterval?) -> Date? {
                                            ^~~~~~~~~~~~
/Users/jmacko/code/vapor/Heimdallr.swift/Heimdallr/OAuthAccessToken.swift:71:49: error: use of undeclared type 'TimeInterval'
        let expiresAt = (json["expires_in"] as? TimeInterval).flatMap(toDate)
                                                ^~~~~~~~~~~~
/Users/jmacko/code/vapor/Heimdallr.swift/Heimdallr/OAuthAccessToken.swift:79:31: error: use of unresolved identifier 'JSONSerialization'
        guard let json = try? JSONSerialization.jsonObject(with: data, options: JSONSerialization.ReadingOptions(rawValue: 0)),
                              ^~~~~~~~~~~~~~~~~
/Users/jmacko/code/vapor/Heimdallr.swift/Heimdallr/OAuthAccessToken.swift:79:81: error: use of unresolved identifier 'JSONSerialization'
        guard let json = try? JSONSerialization.jsonObject(with: data, options: JSONSerialization.ReadingOptions(rawValue: 0)),
                                                                                ^~~~~~~~~~~~~~~~~
/Users/jmacko/code/vapor/Heimdallr.swift/Heimdallr/OAuthAccessToken.swift:4:2: error: @objc attribute used without importing module 'Foundation'
@objc
~^~~~
/Users/jmacko/code/vapor/Heimdallr.swift/Heimdallr/OAuthAccessToken.swift:5:32: error: use of undeclared type 'NSObject'
public class OAuthAccessToken: NSObject {
                               ^~~~~~~~
/Users/jmacko/code/vapor/Heimdallr.swift/Heimdallr/OAuthAccessToken.swift:4:2: error: only classes that inherit from NSObject can be declared @objc
@objc
~^~~~
/Users/jmacko/code/vapor/Heimdallr.swift/Heimdallr/OAuthAccessToken.swift:78:36: error: use of undeclared type 'Data'
    public class func decode(data: Data) -> OAuthAccessToken? {
                                   ^~~~
/Users/jmacko/code/vapor/Heimdallr.swift/Heimdallr/OAuthAccessToken.swift:5:32: error: use of undeclared type 'NSObject'
public class OAuthAccessToken: NSObject {
                               ^~~~~~~~
/Users/jmacko/code/vapor/Heimdallr.swift/Heimdallr/OAuthAccessToken.swift:4:2: error: only classes that inherit from NSObject can be declared @objc
@objc
~^~~~
/Users/jmacko/code/vapor/Heimdallr.swift/Heimdallr/OAuthAccessToken.swift:43:87: error: use of undeclared type 'Date'
    public func copy(accessToken: String? = nil, tokenType: String? = nil, expiresAt: Date?? = nil, refreshToken: String?? = nil) -> OAuthAccessToken {
                                                                                      ^~~~
/Users/jmacko/code/vapor/Heimdallr.swift/Heimdallr/OAuthError.swift:90:36: error: use of undeclared type 'Data'
    public class func decode(data: Data) -> OAuthError? {
                                   ^~~~
/Users/jmacko/code/vapor/Heimdallr.swift/Heimdallr/OAuthAccessToken.swift:13:27: error: use of undeclared type 'Date'
    public let expiresAt: Date?
                          ^~~~
/Users/jmacko/code/vapor/Heimdallr.swift/Heimdallr/OAuthAccessToken.swift:5:32: error: use of undeclared type 'NSObject'
public class OAuthAccessToken: NSObject {
                               ^~~~~~~~
/Users/jmacko/code/vapor/Heimdallr.swift/Heimdallr/OAuthAccessToken.swift:4:2: error: only classes that inherit from NSObject can be declared @objc
@objc
~^~~~
/Users/jmacko/code/vapor/Heimdallr.swift/Heimdallr/OAuthAccessTokenKeychainStore.swift:14:48: error: use of undeclared type 'Data'
    internal func dataForKey(_ key: String) -> Data? {
                                               ^~~~
/Users/jmacko/code/vapor/Heimdallr.swift/Heimdallr/OAuthAccessTokenKeychainStore.swift:38:35: error: use of undeclared type 'Data'
    internal func setData(_ data: Data, forKey key: String) {
                                  ^~~~
/Users/jmacko/code/vapor/Heimdallr.swift/Heimdallr/OAuthAccessTokenKeychainStore.swift:51:38: error: use of undeclared type 'Data'
    internal func updateData(_ data: Data, forKey key: String) {
                                     ^~~~
/Users/jmacko/code/vapor/Heimdallr.swift/Heimdallr/OAuthAccessToken.swift:13:27: error: use of undeclared type 'Date'
    public let expiresAt: Date?
                          ^~~~
/Users/jmacko/code/vapor/Heimdallr.swift/Heimdallr/OAuthAccessTokenKeychainStore.swift:117:17: error: use of unresolved identifier 'Date'
                Date(timeIntervalSince1970: expiresAtInSeconds)
                ^~~~
CoreFoundation.CFDate:1:14: note: did you mean 'CFDate'?
public class CFDate : _CFObject {
             ^
/Users/jmacko/code/vapor/Heimdallr.swift/Heimdallr/OAuthAccessTokenKeychainStore.swift:93:2: error: @objc attribute used without importing module 'Foundation'
@objc public class OAuthAccessTokenKeychainStore: NSObject, OAuthAccessTokenStore {
~^~~~
error: terminated(1): /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swift-build-tool -f /Users/jmacko/code/vapor/Heimdallr.swift/.build/debug.yaml main

Thanks,

@mackoj mackoj changed the title Support for SPM and Linux ? Support for Swift Package Manager ? Oct 30, 2017
@mackoj
Copy link
Author

mackoj commented Oct 30, 2017

I made a PR that add support for SPM for macOS

@mackoj
Copy link
Author

mackoj commented Nov 9, 2017

In order to have SPM support for Linux we should remove the dependence to Security.framework in the future version of Swift 4.1 we will be able to do something more clean like proposed in SE-0075.

@RolandasRazma
Copy link

any update on this? With Xcode 11 SwiftPM is build in and would be nice to use it

@mackoj
Copy link
Author

mackoj commented Sep 16, 2019

@RolandasRazma I don't think they care I'm closing this I don't want to be notify anymore

@mackoj mackoj closed this as completed Sep 16, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants