Build Information
Failed to build WatchDuck, reference main (0c4672), with Swift 6.1 for Android on 17 Nov 2025 20:53:27 UTC.
Build Command
bash -c docker run --pull=always --rm -v "checkouts-4609320-2":/host -w "$PWD" -e JAVA_HOME="/root/.sdkman/candidates/java/current" -e SPI_BUILD="1" -e SPI_PROCESSING="1" registry.gitlab.com/finestructure/spi-images:android-6.1-latest swift build --swift-sdk aarch64-unknown-linux-android24 2>&1Build Log
========================================
RunAll
========================================
Builder version: 4.68.0
Interrupt handler set up.
========================================
Checkout
========================================
Clone URL: https://github.com/BertanT/WatchDuck.git
Reference: main
Initialized empty Git repository in /host/spi-builder-workspace/.git/
hint: Using 'master' as the name for the initial branch. This default branch name
hint: is subject to change. To configure the initial branch name to use in all
hint: of your new repositories, which will suppress this warning, call:
hint:
hint: git config --global init.defaultBranch <name>
hint:
hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and
hint: 'development'. The just-created branch can be renamed via this command:
hint:
hint: git branch -m <name>
From https://github.com/BertanT/WatchDuck
* branch main -> FETCH_HEAD
* [new branch] main -> origin/main
HEAD is now at 0c46728 Update to the latest ci version
Cloned https://github.com/BertanT/WatchDuck.git
Revision (git rev-parse @):
0c467281521a869bd0b4e11ea2daadb83cd3a2a8
SPI manifest file found: $PWD/.spi.yml
SUCCESS checkout https://github.com/BertanT/WatchDuck.git at main
========================================
Build
========================================
Selected platform: android
Swift version: 6.1
Building package at path: $PWD
https://github.com/BertanT/WatchDuck.git
https://github.com/BertanT/WatchDuck.git
WARNING: environment variable SUPPRESS_SWIFT_6_FLAGS is not set
{
"dependencies" : [
{
"identity" : "swift-argument-parser",
"requirement" : {
"revision" : [
"41982a3656a71c768319979febd796c6fd111d5c"
]
},
"type" : "sourceControl",
"url" : "https://github.com/apple/swift-argument-parser.git"
},
{
"identity" : "yams",
"requirement" : {
"revision" : [
"b4b8042411dc7bbb696300a34a4bf3ba1b7ad19b"
]
},
"type" : "sourceControl",
"url" : "https://github.com/jpsim/Yams.git"
},
{
"identity" : "plot",
"requirement" : {
"revision" : [
"271926b4413fe868739d99f5eadcf2bd6cd62fb8"
]
},
"type" : "sourceControl",
"url" : "https://github.com/JohnSundell/Plot.git"
},
{
"identity" : "shellout",
"requirement" : {
"revision" : [
"e1577acf2b6e90086d01a6d5e2b8efdaae033568"
]
},
"type" : "sourceControl",
"url" : "https://github.com/JohnSundell/ShellOut.git"
},
{
"identity" : "swift-docc-plugin",
"requirement" : {
"revision" : [
"85e4bb4e1cd62cec64a4b8e769dcefdf0c5b9d64"
]
},
"type" : "sourceControl",
"url" : "https://github.com/swiftlang/swift-docc-plugin"
}
],
"manifest_display_name" : "WatchDuck",
"name" : "WatchDuck",
"path" : "/host/spi-builder-workspace",
"platforms" : [
{
"name" : "macos",
"version" : "12.0"
}
],
"products" : [
{
"name" : "watchduck",
"targets" : [
"watchduck"
],
"type" : {
"executable" : null
}
}
],
"targets" : [
{
"c99name" : "watchduck",
"module_type" : "SwiftTarget",
"name" : "watchduck",
"path" : "Sources",
"product_dependencies" : [
"ArgumentParser",
"Yams",
"Plot",
"ShellOut"
],
"product_memberships" : [
"watchduck"
],
"resources" : [
{
"path" : "/host/spi-builder-workspace/Sources/Resources",
"rule" : {
"copy" : {
}
}
}
],
"sources" : [
"Checks/HTTPResponseCodeCheck.swift",
"Commands/Run.swift",
"Commands/ServiceInstall.swift",
"Commands/ServiceUninstall.swift",
"Commands/WatchDuck.swift",
"Data/AnyWDCheck.swift",
"Data/PackageResources.swift",
"Data/WDCheck.swift",
"Data/WDConfig.swift",
"Data/WDLog.swift",
"Data/WDOutage.swift",
"Data/WDStatus.swift",
"HTML/FileComponents.swift",
"HTML/WDHTML.swift",
"HTML/WDPageFooter.swift",
"HTML/WDPageHeader.swift",
"HTML/WDPageListSubtext.swift",
"HTML/WDPageStatusList.swift",
"Helpers/ANSIColors.swift",
"Helpers/CLISpinner.swift",
"Helpers/Extensions/Bundle+StaticURL.swift",
"Helpers/Extensions/Bundle+StaticURLs.swift",
"Helpers/Extensions/ClosedRange+ContainsRange.swift",
"Helpers/Extensions/Error+UnderlyingLocalizedDescription.swift",
"Helpers/Extensions/HTTPURLResponse+TextEncoding.swift",
"Helpers/Extensions/KeyedDecodingContainer+AssignIfPresent.swift",
"Helpers/Extensions/Sequence+Uniqued.swift",
"Helpers/Extensions/String+CFString.swift",
"Helpers/Extensions/String+Color+Bold.swift",
"Helpers/Extensions/String.Encoding+IANACharset.swift",
"Helpers/Extensions/Task+SleepTimeInterval.swift",
"Helpers/Extensions/URL+CurrentDirectory.swift",
"Helpers/Extensions/URL+StaticString.swift",
"Helpers/Extensions/URLRequest+PreferredTextEncoding.swift",
"Helpers/Extensions/URLSession+RetryingData.swift",
"Helpers/HTTPMethod.swift",
"Helpers/OSUtils.swift"
],
"type" : "executable"
}
],
"tools_version" : "6.0"
}
Running build ...
bash -c docker run --pull=always --rm -v "checkouts-4609320-2":/host -w "$PWD" -e JAVA_HOME="/root/.sdkman/candidates/java/current" -e SPI_BUILD="1" -e SPI_PROCESSING="1" registry.gitlab.com/finestructure/spi-images:android-6.1-latest swift build --swift-sdk aarch64-unknown-linux-android24 -Xswiftc -Xfrontend -Xswiftc -stats-output-dir -Xswiftc -Xfrontend -Xswiftc .stats 2>&1
android-6.1-latest: Pulling from finestructure/spi-images
Digest: sha256:496d77b037d0552dd779110e0d7093275ebb8376a63c7a364a5a4acca11a4ff5
Status: Image is up to date for registry.gitlab.com/finestructure/spi-images:android-6.1-latest
Fetching https://github.com/apple/swift-argument-parser.git
[1/16686] Fetching swift-argument-parser
Fetched https://github.com/apple/swift-argument-parser.git from cache (1.00s)
Fetching https://github.com/jpsim/Yams.git
[1/11263] Fetching yams
Fetched https://github.com/jpsim/Yams.git from cache (1.37s)
Fetching https://github.com/JohnSundell/Plot.git
[1/2096] Fetching plot
Fetched https://github.com/JohnSundell/Plot.git from cache (0.28s)
Fetching https://github.com/JohnSundell/ShellOut.git
[1/980] Fetching shellout
Fetched https://github.com/JohnSundell/ShellOut.git from cache (0.22s)
Fetching https://github.com/swiftlang/swift-docc-plugin
[1/2158] Fetching swift-docc-plugin
Fetched https://github.com/swiftlang/swift-docc-plugin from cache (0.33s)
Fetching https://github.com/swiftlang/swift-docc-symbolkit
[1/3578] Fetching swift-docc-symbolkit
Fetched https://github.com/swiftlang/swift-docc-symbolkit from cache (0.35s)
Computing version for https://github.com/swiftlang/swift-docc-symbolkit
Computed https://github.com/swiftlang/swift-docc-symbolkit at 1.0.0 (0.93s)
Creating working copy for https://github.com/JohnSundell/ShellOut.git
Working copy of https://github.com/JohnSundell/ShellOut.git resolved at e1577acf2b6e90086d01a6d5e2b8efdaae033568
Creating working copy for https://github.com/swiftlang/swift-docc-symbolkit
Working copy of https://github.com/swiftlang/swift-docc-symbolkit resolved at 1.0.0
Creating working copy for https://github.com/apple/swift-argument-parser.git
Working copy of https://github.com/apple/swift-argument-parser.git resolved at 41982a3656a71c768319979febd796c6fd111d5c
Creating working copy for https://github.com/jpsim/Yams.git
Working copy of https://github.com/jpsim/Yams.git resolved at b4b8042411dc7bbb696300a34a4bf3ba1b7ad19b
Creating working copy for https://github.com/swiftlang/swift-docc-plugin
Working copy of https://github.com/swiftlang/swift-docc-plugin resolved at 85e4bb4e1cd62cec64a4b8e769dcefdf0c5b9d64
Creating working copy for https://github.com/JohnSundell/Plot.git
Working copy of https://github.com/JohnSundell/Plot.git resolved at 271926b4413fe868739d99f5eadcf2bd6cd62fb8
[1/1] Compiling plugin Swift-DocC Preview
[2/2] Compiling plugin Swift-DocC
[3/3] Compiling plugin GenerateManual
Building for debugging...
[3/25] Write sources
[5/25] Copying Resources
[7/25] Write sources
[10/25] Compiling writer.c
[11/25] Compiling reader.c
[12/25] Compiling api.c
[13/25] Compiling parser.c
[14/25] Compiling emitter.c
[15/25] Compiling scanner.c
[15/25] Write swift-version-24593BA9C3E375BF.txt
[18/108] Emitting module ArgumentParserToolInfo
[19/108] Compiling ArgumentParserToolInfo ToolInfo.swift
[20/109] Wrapping AST for ArgumentParserToolInfo for debugging
[22/147] Compiling ArgumentParser BashCompletionsGenerator.swift
[23/147] Compiling ArgumentParser CompletionsGenerator.swift
[24/149] Emitting module Plot
[25/157] Compiling ArgumentParser OptionGroup.swift
[26/157] Compiling ArgumentParser AsyncParsableCommand.swift
[27/157] Compiling ArgumentParser CommandConfiguration.swift
[28/157] Emitting module ArgumentParser
[32/162] Compiling ArgumentParser CommandGroup.swift
[33/162] Compiling ArgumentParser EnumerableFlag.swift
[34/162] Compiling ArgumentParser ExpressibleByArgument.swift
[35/162] Compiling ArgumentParser ParsableArguments.swift
[36/162] Compiling ArgumentParser ParsableArgumentsValidation.swift
[37/162] Compiling ArgumentParser ParsableCommand.swift
[38/162] Compiling ArgumentParser ArgumentDecoder.swift
[39/162] Compiling ArgumentParser ArgumentVisibility.swift
[40/162] Compiling ArgumentParser CompletionKind.swift
[41/162] Compiling ArgumentParser Errors.swift
[42/162] Compiling ArgumentParser Flag.swift
[43/162] Compiling ArgumentParser NameSpecification.swift
[44/162] Compiling ArgumentParser Option.swift
[47/162] Compiling Yams YamlError.swift
[48/162] Compiling Yams YamlTagProviding.swift
[49/162] Compiling ArgumentParser Argument.swift
[50/162] Compiling ArgumentParser ArgumentHelp.swift
[51/162] Compiling ArgumentParser ArgumentDefinition.swift
[52/162] Compiling ArgumentParser ArgumentSet.swift
[53/162] Compiling ArgumentParser CommandParser.swift
[54/162] Compiling ArgumentParser InputKey.swift
[55/162] Compiling ArgumentParser InputOrigin.swift
[56/162] Compiling ArgumentParser CollectionExtensions.swift
[57/162] Compiling ArgumentParser Platform.swift
[58/162] Compiling ArgumentParser SequenceExtensions.swift
[59/162] Compiling ArgumentParser StringExtensions.swift
[60/162] Compiling ArgumentParser Tree.swift
[61/162] Compiling Plot SiteMapElements.swift
[62/162] Compiling Plot TwitterCardType.swift
[63/162] Compiling Plot URLRepresentable.swift
[64/162] Compiling Plot XML.swift
[65/162] Compiling Plot XMLAttributes.swift
[66/162] Compiling Plot XMLElements.swift
[67/162] Compiling Plot AnyAttribute.swift
[68/162] Compiling Plot AnyElement.swift
[71/162] Compiling Plot AnyEnvironmentValue.swift
[72/162] Compiling Plot AnyNode.swift
[73/162] Compiling Plot ElementRenderingBuffer.swift
[74/162] Compiling Plot ElementWrapper.swift
[75/162] Compiling Plot Environment.swift
[76/162] Compiling Plot ModifiedComponent.swift
[77/162] Compiling Plot Renderer.swift
[78/162] Compiling Plot String+Escaping.swift
[79/162] Compiling Plot PodcastMediaType.swift
[80/162] Compiling Plot PodcastType.swift
[81/162] Compiling Plot RSS.swift
[82/162] Compiling Plot RSSAttributes.swift
[83/162] Compiling Plot RSSElements.swift
[84/162] Compiling Plot Renderable.swift
[85/162] Compiling Plot SiteMap.swift
[86/162] Compiling Plot SiteMapChangeFrequency.swift
[87/162] Compiling ShellOut ShellOut.swift
[88/162] Emitting module ShellOut
[91/163] Compiling ArgumentParser Name.swift
[92/163] Compiling ArgumentParser Parsed.swift
[93/163] Compiling ArgumentParser ParsedValues.swift
[94/163] Compiling ArgumentParser ParserError.swift
[95/163] Compiling ArgumentParser SplitArguments.swift
[96/163] Compiling ArgumentParser DumpHelpGenerator.swift
[97/163] Compiling ArgumentParser HelpCommand.swift
[98/163] Compiling ArgumentParser HelpGenerator.swift
[105/163] Compiling ArgumentParser MessageInfo.swift
[106/163] Compiling ArgumentParser UsageGenerator.swift
[112/163] Compiling Plot PodcastFeed.swift
[134/163] Emitting module Yams
[158/166] Wrapping AST for ShellOut for debugging
[160/166] Wrapping AST for Yams for debugging
[161/166] Wrapping AST for Plot for debugging
[162/166] Wrapping AST for ArgumentParser for debugging
[164/201] Compiling watchduck Bundle+StaticURL.swift
[165/201] Compiling watchduck Bundle+StaticURLs.swift
[166/201] Compiling watchduck ClosedRange+ContainsRange.swift
[167/201] Compiling watchduck Error+UnderlyingLocalizedDescription.swift
[168/201] Compiling watchduck HTTPURLResponse+TextEncoding.swift
error: emit-module command failed with exit code 1 (use -v to see invocation)
[169/201] Emitting module watchduck
/host/spi-builder-workspace/Sources/Commands/Run.swift:29:46: error: type 'PackageResources' has no member 'defaultConfigURL'
27 | help: "The configuration JSON file path.",
28 | transform: URL.init(fileURLWithPath:))
29 | private var configURL = PackageResources.defaultConfigURL
| `- error: type 'PackageResources' has no member 'defaultConfigURL'
30 |
31 | @Flag(
/host/spi-builder-workspace/Sources/Commands/Run.swift:22:8: error: type 'Run' does not conform to protocol 'Decodable'
20 | import Foundation
21 |
22 | struct Run: AsyncParsableCommand {
| `- error: type 'Run' does not conform to protocol 'Decodable'
23 | static let configuration = CommandConfiguration(abstract: "Runs checks to update logs and the static webpage.")
24 |
:
27 | help: "The configuration JSON file path.",
28 | transform: URL.init(fileURLWithPath:))
29 | private var configURL = PackageResources.defaultConfigURL
| `- note: cannot automatically synthesize 'Decodable' because '<<error type>>' does not conform to 'Decodable'
30 |
31 | @Flag(
Swift.Decodable.init:2:1: note: protocol requires initializer 'init(from:)' with type 'Decodable'
1 | protocol Decodable {
2 | init(from decoder: any Decoder) throws}
| `- note: protocol requires initializer 'init(from:)' with type 'Decodable'
3 |
/host/spi-builder-workspace/Sources/Data/PackageResources.swift:112:68: error: cannot find 'defaultConfigURL' in scope
110 |
111 | \("!!! Please check the following before proceeding !!!".color(.red, bold: true))
112 | > WatchDuck will always use the configuration at \(defaultConfigURL.path) in system service mode.
| `- error: cannot find 'defaultConfigURL' in scope
113 | A sample configuration will be created there if it does not exist. To learn more about how to edit the configuration, see \(docsURL).
114 | """
[170/205] Compiling watchduck AnyWDCheck.swift
/host/spi-builder-workspace/Sources/Data/PackageResources.swift:112:68: error: cannot find 'defaultConfigURL' in scope
110 |
111 | \("!!! Please check the following before proceeding !!!".color(.red, bold: true))
112 | > WatchDuck will always use the configuration at \(defaultConfigURL.path) in system service mode.
| `- error: cannot find 'defaultConfigURL' in scope
113 | A sample configuration will be created there if it does not exist. To learn more about how to edit the configuration, see \(docsURL).
114 | """
[171/205] Compiling watchduck PackageResources.swift
/host/spi-builder-workspace/Sources/Data/PackageResources.swift:112:68: error: cannot find 'defaultConfigURL' in scope
110 |
111 | \("!!! Please check the following before proceeding !!!".color(.red, bold: true))
112 | > WatchDuck will always use the configuration at \(defaultConfigURL.path) in system service mode.
| `- error: cannot find 'defaultConfigURL' in scope
113 | A sample configuration will be created there if it does not exist. To learn more about how to edit the configuration, see \(docsURL).
114 | """
[172/205] Compiling watchduck WDCheck.swift
/host/spi-builder-workspace/Sources/Data/PackageResources.swift:112:68: error: cannot find 'defaultConfigURL' in scope
110 |
111 | \("!!! Please check the following before proceeding !!!".color(.red, bold: true))
112 | > WatchDuck will always use the configuration at \(defaultConfigURL.path) in system service mode.
| `- error: cannot find 'defaultConfigURL' in scope
113 | A sample configuration will be created there if it does not exist. To learn more about how to edit the configuration, see \(docsURL).
114 | """
[173/205] Compiling watchduck WDConfig.swift
/host/spi-builder-workspace/Sources/Data/PackageResources.swift:112:68: error: cannot find 'defaultConfigURL' in scope
110 |
111 | \("!!! Please check the following before proceeding !!!".color(.red, bold: true))
112 | > WatchDuck will always use the configuration at \(defaultConfigURL.path) in system service mode.
| `- error: cannot find 'defaultConfigURL' in scope
113 | A sample configuration will be created there if it does not exist. To learn more about how to edit the configuration, see \(docsURL).
114 | """
[174/205] Compiling watchduck WDLog.swift
/host/spi-builder-workspace/Sources/Data/PackageResources.swift:112:68: error: cannot find 'defaultConfigURL' in scope
110 |
111 | \("!!! Please check the following before proceeding !!!".color(.red, bold: true))
112 | > WatchDuck will always use the configuration at \(defaultConfigURL.path) in system service mode.
| `- error: cannot find 'defaultConfigURL' in scope
113 | A sample configuration will be created there if it does not exist. To learn more about how to edit the configuration, see \(docsURL).
114 | """
[175/205] Compiling watchduck HTTPResponseCodeCheck.swift
/host/spi-builder-workspace/Sources/Commands/Run.swift:29:46: error: type 'PackageResources' has no member 'defaultConfigURL'
27 | help: "The configuration JSON file path.",
28 | transform: URL.init(fileURLWithPath:))
29 | private var configURL = PackageResources.defaultConfigURL
| `- error: type 'PackageResources' has no member 'defaultConfigURL'
30 |
31 | @Flag(
/host/spi-builder-workspace/Sources/Commands/Run.swift:22:8: error: type 'Run' does not conform to protocol 'Decodable'
20 | import Foundation
21 |
22 | struct Run: AsyncParsableCommand {
| `- error: type 'Run' does not conform to protocol 'Decodable'
23 | static let configuration = CommandConfiguration(abstract: "Runs checks to update logs and the static webpage.")
24 |
:
27 | help: "The configuration JSON file path.",
28 | transform: URL.init(fileURLWithPath:))
29 | private var configURL = PackageResources.defaultConfigURL
| `- note: cannot automatically synthesize 'Decodable' because '<<error type>>' does not conform to 'Decodable'
30 |
31 | @Flag(
Swift.Decodable.init:2:1: note: protocol requires initializer 'init(from:)' with type 'Decodable'
1 | protocol Decodable {
2 | init(from decoder: any Decoder) throws}
| `- note: protocol requires initializer 'init(from:)' with type 'Decodable'
3 |
/host/spi-builder-workspace/Sources/Commands/Run.swift:44:24: error: cannot find 'SIG_IGN' in scope
42 |
43 | // TODO: Make signal handling more elegant while keeping it secure if possible.
44 | signal(SIGINT, SIG_IGN)
| `- error: cannot find 'SIG_IGN' in scope
45 |
46 | let sigintSource = DispatchSource.makeSignalSource(signal: SIGINT, queue: DispatchQueue.main)
/host/spi-builder-workspace/Sources/Data/PackageResources.swift:112:68: error: cannot find 'defaultConfigURL' in scope
110 |
111 | \("!!! Please check the following before proceeding !!!".color(.red, bold: true))
112 | > WatchDuck will always use the configuration at \(defaultConfigURL.path) in system service mode.
| `- error: cannot find 'defaultConfigURL' in scope
113 | A sample configuration will be created there if it does not exist. To learn more about how to edit the configuration, see \(docsURL).
114 | """
/host/spi-builder-workspace/Sources/Commands/ServiceInstall.swift:39:32: error: type 'PackageResources' has no member 'serviceInstallExtraInstructions'
37 | print(PackageResources.asciiDuck)
38 | print(PackageResources.serviceInstallBanner)
39 | print(PackageResources.serviceInstallExtraInstructions)
| `- error: type 'PackageResources' has no member 'serviceInstallExtraInstructions'
40 |
41 | if !acceptDefault {
/host/spi-builder-workspace/Sources/Commands/ServiceInstall.swift:64:54: error: type 'PackageResources' has no member 'serviceFileDest'
62 | ])
63 | #endif
64 | _ = try? shellOut(to: "rm \(PackageResources.serviceFileDest.path)")
| `- error: type 'PackageResources' has no member 'serviceFileDest'
65 |
66 | print("> Copying system service configuration file...".color(.magenta))
/host/spi-builder-workspace/Sources/Commands/ServiceInstall.swift:67:70: error: type 'PackageResources' has no member 'serviceFileDest'
65 |
66 | print("> Copying system service configuration file...".color(.magenta))
67 | try FileManager.default.createDirectory(at: PackageResources.serviceFileDest.deletingLastPathComponent(), withIntermediateDirectories: true)
| `- error: type 'PackageResources' has no member 'serviceFileDest'
68 | try Data(contentsOf: PackageResources.serviceFileSource).write(to: PackageResources.serviceFileDest, options: [.atomic])
69 |
/host/spi-builder-workspace/Sources/Commands/ServiceInstall.swift:68:47: error: type 'PackageResources' has no member 'serviceFileSource'
66 | print("> Copying system service configuration file...".color(.magenta))
67 | try FileManager.default.createDirectory(at: PackageResources.serviceFileDest.deletingLastPathComponent(), withIntermediateDirectories: true)
68 | try Data(contentsOf: PackageResources.serviceFileSource).write(to: PackageResources.serviceFileDest, options: [.atomic])
| `- error: type 'PackageResources' has no member 'serviceFileSource'
69 |
70 | print("> Starting \(PackageResources.serviceName) and enabling it on boot.".color(.magenta))
/host/spi-builder-workspace/Sources/Commands/ServiceInstall.swift:68:93: error: type 'PackageResources' has no member 'serviceFileDest'
66 | print("> Copying system service configuration file...".color(.magenta))
67 | try FileManager.default.createDirectory(at: PackageResources.serviceFileDest.deletingLastPathComponent(), withIntermediateDirectories: true)
68 | try Data(contentsOf: PackageResources.serviceFileSource).write(to: PackageResources.serviceFileDest, options: [.atomic])
| `- error: type 'PackageResources' has no member 'serviceFileDest'
69 |
70 | print("> Starting \(PackageResources.serviceName) and enabling it on boot.".color(.magenta))
/host/spi-builder-workspace/Sources/Commands/ServiceInstall.swift:70:46: error: type 'PackageResources' has no member 'serviceName'
68 | try Data(contentsOf: PackageResources.serviceFileSource).write(to: PackageResources.serviceFileDest, options: [.atomic])
69 |
70 | print("> Starting \(PackageResources.serviceName) and enabling it on boot.".color(.magenta))
| `- error: type 'PackageResources' has no member 'serviceName'
71 | #if os(macOS)
72 | try shellOut(to: [
/host/spi-builder-workspace/Sources/Commands/ServiceInstall.swift:84:69: error: type 'PackageResources' has no member 'defaultConfigURL'
82 | #endif
83 |
84 | if !FileManager.default.fileExists(atPath: PackageResources.defaultConfigURL.path) {
| `- error: type 'PackageResources' has no member 'defaultConfigURL'
85 | print("> Creating sample configuration file at \(PackageResources.defaultConfigURL.path)...".color(.magenta))
86 | try FileManager.default.createDirectory(at: PackageResources.defaultConfigURL.deletingLastPathComponent(), withIntermediateDirectories: true)
/host/spi-builder-workspace/Sources/Commands/ServiceInstall.swift:85:79: error: type 'PackageResources' has no member 'defaultConfigURL'
83 |
84 | if !FileManager.default.fileExists(atPath: PackageResources.defaultConfigURL.path) {
85 | print("> Creating sample configuration file at \(PackageResources.defaultConfigURL.path)...".color(.magenta))
| `- error: type 'PackageResources' has no member 'defaultConfigURL'
86 | try FileManager.default.createDirectory(at: PackageResources.defaultConfigURL.deletingLastPathComponent(), withIntermediateDirectories: true)
87 | try FileManager.default.copyItem(at: PackageResources.sampleConfigSource, to: PackageResources.defaultConfigURL)
/host/spi-builder-workspace/Sources/Commands/ServiceInstall.swift:86:74: error: type 'PackageResources' has no member 'defaultConfigURL'
84 | if !FileManager.default.fileExists(atPath: PackageResources.defaultConfigURL.path) {
85 | print("> Creating sample configuration file at \(PackageResources.defaultConfigURL.path)...".color(.magenta))
86 | try FileManager.default.createDirectory(at: PackageResources.defaultConfigURL.deletingLastPathComponent(), withIntermediateDirectories: true)
| `- error: type 'PackageResources' has no member 'defaultConfigURL'
87 | try FileManager.default.copyItem(at: PackageResources.sampleConfigSource, to: PackageResources.defaultConfigURL)
88 | }
/host/spi-builder-workspace/Sources/Commands/ServiceInstall.swift:87:108: error: type 'PackageResources' has no member 'defaultConfigURL'
85 | print("> Creating sample configuration file at \(PackageResources.defaultConfigURL.path)...".color(.magenta))
86 | try FileManager.default.createDirectory(at: PackageResources.defaultConfigURL.deletingLastPathComponent(), withIntermediateDirectories: true)
87 | try FileManager.default.copyItem(at: PackageResources.sampleConfigSource, to: PackageResources.defaultConfigURL)
| `- error: type 'PackageResources' has no member 'defaultConfigURL'
88 | }
89 |
/host/spi-builder-workspace/Sources/Commands/ServiceUninstall.swift:66:54: error: type 'PackageResources' has no member 'serviceFileDest'
64 |
65 | print("> Cleaning any configuration files...".color(.magenta))
66 | _ = try? shellOut(to: "rm \(PackageResources.serviceFileDest.path)")
| `- error: type 'PackageResources' has no member 'serviceFileDest'
67 |
68 | print("\n✔ The WatchDuck system service is now uninstalled.".color(.green, bold: true))
[176/205] Compiling watchduck Run.swift
/host/spi-builder-workspace/Sources/Commands/Run.swift:29:46: error: type 'PackageResources' has no member 'defaultConfigURL'
27 | help: "The configuration JSON file path.",
28 | transform: URL.init(fileURLWithPath:))
29 | private var configURL = PackageResources.defaultConfigURL
| `- error: type 'PackageResources' has no member 'defaultConfigURL'
30 |
31 | @Flag(
/host/spi-builder-workspace/Sources/Commands/Run.swift:22:8: error: type 'Run' does not conform to protocol 'Decodable'
20 | import Foundation
21 |
22 | struct Run: AsyncParsableCommand {
| `- error: type 'Run' does not conform to protocol 'Decodable'
23 | static let configuration = CommandConfiguration(abstract: "Runs checks to update logs and the static webpage.")
24 |
:
27 | help: "The configuration JSON file path.",
28 | transform: URL.init(fileURLWithPath:))
29 | private var configURL = PackageResources.defaultConfigURL
| `- note: cannot automatically synthesize 'Decodable' because '<<error type>>' does not conform to 'Decodable'
30 |
31 | @Flag(
Swift.Decodable.init:2:1: note: protocol requires initializer 'init(from:)' with type 'Decodable'
1 | protocol Decodable {
2 | init(from decoder: any Decoder) throws}
| `- note: protocol requires initializer 'init(from:)' with type 'Decodable'
3 |
/host/spi-builder-workspace/Sources/Commands/Run.swift:44:24: error: cannot find 'SIG_IGN' in scope
42 |
43 | // TODO: Make signal handling more elegant while keeping it secure if possible.
44 | signal(SIGINT, SIG_IGN)
| `- error: cannot find 'SIG_IGN' in scope
45 |
46 | let sigintSource = DispatchSource.makeSignalSource(signal: SIGINT, queue: DispatchQueue.main)
/host/spi-builder-workspace/Sources/Data/PackageResources.swift:112:68: error: cannot find 'defaultConfigURL' in scope
110 |
111 | \("!!! Please check the following before proceeding !!!".color(.red, bold: true))
112 | > WatchDuck will always use the configuration at \(defaultConfigURL.path) in system service mode.
| `- error: cannot find 'defaultConfigURL' in scope
113 | A sample configuration will be created there if it does not exist. To learn more about how to edit the configuration, see \(docsURL).
114 | """
/host/spi-builder-workspace/Sources/Commands/ServiceInstall.swift:39:32: error: type 'PackageResources' has no member 'serviceInstallExtraInstructions'
37 | print(PackageResources.asciiDuck)
38 | print(PackageResources.serviceInstallBanner)
39 | print(PackageResources.serviceInstallExtraInstructions)
| `- error: type 'PackageResources' has no member 'serviceInstallExtraInstructions'
40 |
41 | if !acceptDefault {
/host/spi-builder-workspace/Sources/Commands/ServiceInstall.swift:64:54: error: type 'PackageResources' has no member 'serviceFileDest'
62 | ])
63 | #endif
64 | _ = try? shellOut(to: "rm \(PackageResources.serviceFileDest.path)")
| `- error: type 'PackageResources' has no member 'serviceFileDest'
65 |
66 | print("> Copying system service configuration file...".color(.magenta))
/host/spi-builder-workspace/Sources/Commands/ServiceInstall.swift:67:70: error: type 'PackageResources' has no member 'serviceFileDest'
65 |
66 | print("> Copying system service configuration file...".color(.magenta))
67 | try FileManager.default.createDirectory(at: PackageResources.serviceFileDest.deletingLastPathComponent(), withIntermediateDirectories: true)
| `- error: type 'PackageResources' has no member 'serviceFileDest'
68 | try Data(contentsOf: PackageResources.serviceFileSource).write(to: PackageResources.serviceFileDest, options: [.atomic])
69 |
/host/spi-builder-workspace/Sources/Commands/ServiceInstall.swift:68:47: error: type 'PackageResources' has no member 'serviceFileSource'
66 | print("> Copying system service configuration file...".color(.magenta))
67 | try FileManager.default.createDirectory(at: PackageResources.serviceFileDest.deletingLastPathComponent(), withIntermediateDirectories: true)
68 | try Data(contentsOf: PackageResources.serviceFileSource).write(to: PackageResources.serviceFileDest, options: [.atomic])
| `- error: type 'PackageResources' has no member 'serviceFileSource'
69 |
70 | print("> Starting \(PackageResources.serviceName) and enabling it on boot.".color(.magenta))
/host/spi-builder-workspace/Sources/Commands/ServiceInstall.swift:68:93: error: type 'PackageResources' has no member 'serviceFileDest'
66 | print("> Copying system service configuration file...".color(.magenta))
67 | try FileManager.default.createDirectory(at: PackageResources.serviceFileDest.deletingLastPathComponent(), withIntermediateDirectories: true)
68 | try Data(contentsOf: PackageResources.serviceFileSource).write(to: PackageResources.serviceFileDest, options: [.atomic])
| `- error: type 'PackageResources' has no member 'serviceFileDest'
69 |
70 | print("> Starting \(PackageResources.serviceName) and enabling it on boot.".color(.magenta))
/host/spi-builder-workspace/Sources/Commands/ServiceInstall.swift:70:46: error: type 'PackageResources' has no member 'serviceName'
68 | try Data(contentsOf: PackageResources.serviceFileSource).write(to: PackageResources.serviceFileDest, options: [.atomic])
69 |
70 | print("> Starting \(PackageResources.serviceName) and enabling it on boot.".color(.magenta))
| `- error: type 'PackageResources' has no member 'serviceName'
71 | #if os(macOS)
72 | try shellOut(to: [
/host/spi-builder-workspace/Sources/Commands/ServiceInstall.swift:84:69: error: type 'PackageResources' has no member 'defaultConfigURL'
82 | #endif
83 |
84 | if !FileManager.default.fileExists(atPath: PackageResources.defaultConfigURL.path) {
| `- error: type 'PackageResources' has no member 'defaultConfigURL'
85 | print("> Creating sample configuration file at \(PackageResources.defaultConfigURL.path)...".color(.magenta))
86 | try FileManager.default.createDirectory(at: PackageResources.defaultConfigURL.deletingLastPathComponent(), withIntermediateDirectories: true)
/host/spi-builder-workspace/Sources/Commands/ServiceInstall.swift:85:79: error: type 'PackageResources' has no member 'defaultConfigURL'
83 |
84 | if !FileManager.default.fileExists(atPath: PackageResources.defaultConfigURL.path) {
85 | print("> Creating sample configuration file at \(PackageResources.defaultConfigURL.path)...".color(.magenta))
| `- error: type 'PackageResources' has no member 'defaultConfigURL'
86 | try FileManager.default.createDirectory(at: PackageResources.defaultConfigURL.deletingLastPathComponent(), withIntermediateDirectories: true)
87 | try FileManager.default.copyItem(at: PackageResources.sampleConfigSource, to: PackageResources.defaultConfigURL)
/host/spi-builder-workspace/Sources/Commands/ServiceInstall.swift:86:74: error: type 'PackageResources' has no member 'defaultConfigURL'
84 | if !FileManager.default.fileExists(atPath: PackageResources.defaultConfigURL.path) {
85 | print("> Creating sample configuration file at \(PackageResources.defaultConfigURL.path)...".color(.magenta))
86 | try FileManager.default.createDirectory(at: PackageResources.defaultConfigURL.deletingLastPathComponent(), withIntermediateDirectories: true)
| `- error: type 'PackageResources' has no member 'defaultConfigURL'
87 | try FileManager.default.copyItem(at: PackageResources.sampleConfigSource, to: PackageResources.defaultConfigURL)
88 | }
/host/spi-builder-workspace/Sources/Commands/ServiceInstall.swift:87:108: error: type 'PackageResources' has no member 'defaultConfigURL'
85 | print("> Creating sample configuration file at \(PackageResources.defaultConfigURL.path)...".color(.magenta))
86 | try FileManager.default.createDirectory(at: PackageResources.defaultConfigURL.deletingLastPathComponent(), withIntermediateDirectories: true)
87 | try FileManager.default.copyItem(at: PackageResources.sampleConfigSource, to: PackageResources.defaultConfigURL)
| `- error: type 'PackageResources' has no member 'defaultConfigURL'
88 | }
89 |
/host/spi-builder-workspace/Sources/Commands/ServiceUninstall.swift:66:54: error: type 'PackageResources' has no member 'serviceFileDest'
64 |
65 | print("> Cleaning any configuration files...".color(.magenta))
66 | _ = try? shellOut(to: "rm \(PackageResources.serviceFileDest.path)")
| `- error: type 'PackageResources' has no member 'serviceFileDest'
67 |
68 | print("\n✔ The WatchDuck system service is now uninstalled.".color(.green, bold: true))
[177/205] Compiling watchduck ServiceInstall.swift
/host/spi-builder-workspace/Sources/Commands/Run.swift:29:46: error: type 'PackageResources' has no member 'defaultConfigURL'
27 | help: "The configuration JSON file path.",
28 | transform: URL.init(fileURLWithPath:))
29 | private var configURL = PackageResources.defaultConfigURL
| `- error: type 'PackageResources' has no member 'defaultConfigURL'
30 |
31 | @Flag(
/host/spi-builder-workspace/Sources/Commands/Run.swift:22:8: error: type 'Run' does not conform to protocol 'Decodable'
20 | import Foundation
21 |
22 | struct Run: AsyncParsableCommand {
| `- error: type 'Run' does not conform to protocol 'Decodable'
23 | static let configuration = CommandConfiguration(abstract: "Runs checks to update logs and the static webpage.")
24 |
:
27 | help: "The configuration JSON file path.",
28 | transform: URL.init(fileURLWithPath:))
29 | private var configURL = PackageResources.defaultConfigURL
| `- note: cannot automatically synthesize 'Decodable' because '<<error type>>' does not conform to 'Decodable'
30 |
31 | @Flag(
Swift.Decodable.init:2:1: note: protocol requires initializer 'init(from:)' with type 'Decodable'
1 | protocol Decodable {
2 | init(from decoder: any Decoder) throws}
| `- note: protocol requires initializer 'init(from:)' with type 'Decodable'
3 |
/host/spi-builder-workspace/Sources/Commands/Run.swift:44:24: error: cannot find 'SIG_IGN' in scope
42 |
43 | // TODO: Make signal handling more elegant while keeping it secure if possible.
44 | signal(SIGINT, SIG_IGN)
| `- error: cannot find 'SIG_IGN' in scope
45 |
46 | let sigintSource = DispatchSource.makeSignalSource(signal: SIGINT, queue: DispatchQueue.main)
/host/spi-builder-workspace/Sources/Data/PackageResources.swift:112:68: error: cannot find 'defaultConfigURL' in scope
110 |
111 | \("!!! Please check the following before proceeding !!!".color(.red, bold: true))
112 | > WatchDuck will always use the configuration at \(defaultConfigURL.path) in system service mode.
| `- error: cannot find 'defaultConfigURL' in scope
113 | A sample configuration will be created there if it does not exist. To learn more about how to edit the configuration, see \(docsURL).
114 | """
/host/spi-builder-workspace/Sources/Commands/ServiceInstall.swift:39:32: error: type 'PackageResources' has no member 'serviceInstallExtraInstructions'
37 | print(PackageResources.asciiDuck)
38 | print(PackageResources.serviceInstallBanner)
39 | print(PackageResources.serviceInstallExtraInstructions)
| `- error: type 'PackageResources' has no member 'serviceInstallExtraInstructions'
40 |
41 | if !acceptDefault {
/host/spi-builder-workspace/Sources/Commands/ServiceInstall.swift:64:54: error: type 'PackageResources' has no member 'serviceFileDest'
62 | ])
63 | #endif
64 | _ = try? shellOut(to: "rm \(PackageResources.serviceFileDest.path)")
| `- error: type 'PackageResources' has no member 'serviceFileDest'
65 |
66 | print("> Copying system service configuration file...".color(.magenta))
/host/spi-builder-workspace/Sources/Commands/ServiceInstall.swift:67:70: error: type 'PackageResources' has no member 'serviceFileDest'
65 |
66 | print("> Copying system service configuration file...".color(.magenta))
67 | try FileManager.default.createDirectory(at: PackageResources.serviceFileDest.deletingLastPathComponent(), withIntermediateDirectories: true)
| `- error: type 'PackageResources' has no member 'serviceFileDest'
68 | try Data(contentsOf: PackageResources.serviceFileSource).write(to: PackageResources.serviceFileDest, options: [.atomic])
69 |
/host/spi-builder-workspace/Sources/Commands/ServiceInstall.swift:68:47: error: type 'PackageResources' has no member 'serviceFileSource'
66 | print("> Copying system service configuration file...".color(.magenta))
67 | try FileManager.default.createDirectory(at: PackageResources.serviceFileDest.deletingLastPathComponent(), withIntermediateDirectories: true)
68 | try Data(contentsOf: PackageResources.serviceFileSource).write(to: PackageResources.serviceFileDest, options: [.atomic])
| `- error: type 'PackageResources' has no member 'serviceFileSource'
69 |
70 | print("> Starting \(PackageResources.serviceName) and enabling it on boot.".color(.magenta))
/host/spi-builder-workspace/Sources/Commands/ServiceInstall.swift:68:93: error: type 'PackageResources' has no member 'serviceFileDest'
66 | print("> Copying system service configuration file...".color(.magenta))
67 | try FileManager.default.createDirectory(at: PackageResources.serviceFileDest.deletingLastPathComponent(), withIntermediateDirectories: true)
68 | try Data(contentsOf: PackageResources.serviceFileSource).write(to: PackageResources.serviceFileDest, options: [.atomic])
| `- error: type 'PackageResources' has no member 'serviceFileDest'
69 |
70 | print("> Starting \(PackageResources.serviceName) and enabling it on boot.".color(.magenta))
/host/spi-builder-workspace/Sources/Commands/ServiceInstall.swift:70:46: error: type 'PackageResources' has no member 'serviceName'
68 | try Data(contentsOf: PackageResources.serviceFileSource).write(to: PackageResources.serviceFileDest, options: [.atomic])
69 |
70 | print("> Starting \(PackageResources.serviceName) and enabling it on boot.".color(.magenta))
| `- error: type 'PackageResources' has no member 'serviceName'
71 | #if os(macOS)
72 | try shellOut(to: [
/host/spi-builder-workspace/Sources/Commands/ServiceInstall.swift:84:69: error: type 'PackageResources' has no member 'defaultConfigURL'
82 | #endif
83 |
84 | if !FileManager.default.fileExists(atPath: PackageResources.defaultConfigURL.path) {
| `- error: type 'PackageResources' has no member 'defaultConfigURL'
85 | print("> Creating sample configuration file at \(PackageResources.defaultConfigURL.path)...".color(.magenta))
86 | try FileManager.default.createDirectory(at: PackageResources.defaultConfigURL.deletingLastPathComponent(), withIntermediateDirectories: true)
/host/spi-builder-workspace/Sources/Commands/ServiceInstall.swift:85:79: error: type 'PackageResources' has no member 'defaultConfigURL'
83 |
84 | if !FileManager.default.fileExists(atPath: PackageResources.defaultConfigURL.path) {
85 | print("> Creating sample configuration file at \(PackageResources.defaultConfigURL.path)...".color(.magenta))
| `- error: type 'PackageResources' has no member 'defaultConfigURL'
86 | try FileManager.default.createDirectory(at: PackageResources.defaultConfigURL.deletingLastPathComponent(), withIntermediateDirectories: true)
87 | try FileManager.default.copyItem(at: PackageResources.sampleConfigSource, to: PackageResources.defaultConfigURL)
/host/spi-builder-workspace/Sources/Commands/ServiceInstall.swift:86:74: error: type 'PackageResources' has no member 'defaultConfigURL'
84 | if !FileManager.default.fileExists(atPath: PackageResources.defaultConfigURL.path) {
85 | print("> Creating sample configuration file at \(PackageResources.defaultConfigURL.path)...".color(.magenta))
86 | try FileManager.default.createDirectory(at: PackageResources.defaultConfigURL.deletingLastPathComponent(), withIntermediateDirectories: true)
| `- error: type 'PackageResources' has no member 'defaultConfigURL'
87 | try FileManager.default.copyItem(at: PackageResources.sampleConfigSource, to: PackageResources.defaultConfigURL)
88 | }
/host/spi-builder-workspace/Sources/Commands/ServiceInstall.swift:87:108: error: type 'PackageResources' has no member 'defaultConfigURL'
85 | print("> Creating sample configuration file at \(PackageResources.defaultConfigURL.path)...".color(.magenta))
86 | try FileManager.default.createDirectory(at: PackageResources.defaultConfigURL.deletingLastPathComponent(), withIntermediateDirectories: true)
87 | try FileManager.default.copyItem(at: PackageResources.sampleConfigSource, to: PackageResources.defaultConfigURL)
| `- error: type 'PackageResources' has no member 'defaultConfigURL'
88 | }
89 |
/host/spi-builder-workspace/Sources/Commands/ServiceUninstall.swift:66:54: error: type 'PackageResources' has no member 'serviceFileDest'
64 |
65 | print("> Cleaning any configuration files...".color(.magenta))
66 | _ = try? shellOut(to: "rm \(PackageResources.serviceFileDest.path)")
| `- error: type 'PackageResources' has no member 'serviceFileDest'
67 |
68 | print("\n✔ The WatchDuck system service is now uninstalled.".color(.green, bold: true))
[178/205] Compiling watchduck ServiceUninstall.swift
/host/spi-builder-workspace/Sources/Commands/Run.swift:29:46: error: type 'PackageResources' has no member 'defaultConfigURL'
27 | help: "The configuration JSON file path.",
28 | transform: URL.init(fileURLWithPath:))
29 | private var configURL = PackageResources.defaultConfigURL
| `- error: type 'PackageResources' has no member 'defaultConfigURL'
30 |
31 | @Flag(
/host/spi-builder-workspace/Sources/Commands/Run.swift:22:8: error: type 'Run' does not conform to protocol 'Decodable'
20 | import Foundation
21 |
22 | struct Run: AsyncParsableCommand {
| `- error: type 'Run' does not conform to protocol 'Decodable'
23 | static let configuration = CommandConfiguration(abstract: "Runs checks to update logs and the static webpage.")
24 |
:
27 | help: "The configuration JSON file path.",
28 | transform: URL.init(fileURLWithPath:))
29 | private var configURL = PackageResources.defaultConfigURL
| `- note: cannot automatically synthesize 'Decodable' because '<<error type>>' does not conform to 'Decodable'
30 |
31 | @Flag(
Swift.Decodable.init:2:1: note: protocol requires initializer 'init(from:)' with type 'Decodable'
1 | protocol Decodable {
2 | init(from decoder: any Decoder) throws}
| `- note: protocol requires initializer 'init(from:)' with type 'Decodable'
3 |
/host/spi-builder-workspace/Sources/Commands/Run.swift:44:24: error: cannot find 'SIG_IGN' in scope
42 |
43 | // TODO: Make signal handling more elegant while keeping it secure if possible.
44 | signal(SIGINT, SIG_IGN)
| `- error: cannot find 'SIG_IGN' in scope
45 |
46 | let sigintSource = DispatchSource.makeSignalSource(signal: SIGINT, queue: DispatchQueue.main)
/host/spi-builder-workspace/Sources/Data/PackageResources.swift:112:68: error: cannot find 'defaultConfigURL' in scope
110 |
111 | \("!!! Please check the following before proceeding !!!".color(.red, bold: true))
112 | > WatchDuck will always use the configuration at \(defaultConfigURL.path) in system service mode.
| `- error: cannot find 'defaultConfigURL' in scope
113 | A sample configuration will be created there if it does not exist. To learn more about how to edit the configuration, see \(docsURL).
114 | """
/host/spi-builder-workspace/Sources/Commands/ServiceInstall.swift:39:32: error: type 'PackageResources' has no member 'serviceInstallExtraInstructions'
37 | print(PackageResources.asciiDuck)
38 | print(PackageResources.serviceInstallBanner)
39 | print(PackageResources.serviceInstallExtraInstructions)
| `- error: type 'PackageResources' has no member 'serviceInstallExtraInstructions'
40 |
41 | if !acceptDefault {
/host/spi-builder-workspace/Sources/Commands/ServiceInstall.swift:64:54: error: type 'PackageResources' has no member 'serviceFileDest'
62 | ])
63 | #endif
64 | _ = try? shellOut(to: "rm \(PackageResources.serviceFileDest.path)")
| `- error: type 'PackageResources' has no member 'serviceFileDest'
65 |
66 | print("> Copying system service configuration file...".color(.magenta))
/host/spi-builder-workspace/Sources/Commands/ServiceInstall.swift:67:70: error: type 'PackageResources' has no member 'serviceFileDest'
65 |
66 | print("> Copying system service configuration file...".color(.magenta))
67 | try FileManager.default.createDirectory(at: PackageResources.serviceFileDest.deletingLastPathComponent(), withIntermediateDirectories: true)
| `- error: type 'PackageResources' has no member 'serviceFileDest'
68 | try Data(contentsOf: PackageResources.serviceFileSource).write(to: PackageResources.serviceFileDest, options: [.atomic])
69 |
/host/spi-builder-workspace/Sources/Commands/ServiceInstall.swift:68:47: error: type 'PackageResources' has no member 'serviceFileSource'
66 | print("> Copying system service configuration file...".color(.magenta))
67 | try FileManager.default.createDirectory(at: PackageResources.serviceFileDest.deletingLastPathComponent(), withIntermediateDirectories: true)
68 | try Data(contentsOf: PackageResources.serviceFileSource).write(to: PackageResources.serviceFileDest, options: [.atomic])
| `- error: type 'PackageResources' has no member 'serviceFileSource'
69 |
70 | print("> Starting \(PackageResources.serviceName) and enabling it on boot.".color(.magenta))
/host/spi-builder-workspace/Sources/Commands/ServiceInstall.swift:68:93: error: type 'PackageResources' has no member 'serviceFileDest'
66 | print("> Copying system service configuration file...".color(.magenta))
67 | try FileManager.default.createDirectory(at: PackageResources.serviceFileDest.deletingLastPathComponent(), withIntermediateDirectories: true)
68 | try Data(contentsOf: PackageResources.serviceFileSource).write(to: PackageResources.serviceFileDest, options: [.atomic])
| `- error: type 'PackageResources' has no member 'serviceFileDest'
69 |
70 | print("> Starting \(PackageResources.serviceName) and enabling it on boot.".color(.magenta))
/host/spi-builder-workspace/Sources/Commands/ServiceInstall.swift:70:46: error: type 'PackageResources' has no member 'serviceName'
68 | try Data(contentsOf: PackageResources.serviceFileSource).write(to: PackageResources.serviceFileDest, options: [.atomic])
69 |
70 | print("> Starting \(PackageResources.serviceName) and enabling it on boot.".color(.magenta))
| `- error: type 'PackageResources' has no member 'serviceName'
71 | #if os(macOS)
72 | try shellOut(to: [
/host/spi-builder-workspace/Sources/Commands/ServiceInstall.swift:84:69: error: type 'PackageResources' has no member 'defaultConfigURL'
82 | #endif
83 |
84 | if !FileManager.default.fileExists(atPath: PackageResources.defaultConfigURL.path) {
| `- error: type 'PackageResources' has no member 'defaultConfigURL'
85 | print("> Creating sample configuration file at \(PackageResources.defaultConfigURL.path)...".color(.magenta))
86 | try FileManager.default.createDirectory(at: PackageResources.defaultConfigURL.deletingLastPathComponent(), withIntermediateDirectories: true)
/host/spi-builder-workspace/Sources/Commands/ServiceInstall.swift:85:79: error: type 'PackageResources' has no member 'defaultConfigURL'
83 |
84 | if !FileManager.default.fileExists(atPath: PackageResources.defaultConfigURL.path) {
85 | print("> Creating sample configuration file at \(PackageResources.defaultConfigURL.path)...".color(.magenta))
| `- error: type 'PackageResources' has no member 'defaultConfigURL'
86 | try FileManager.default.createDirectory(at: PackageResources.defaultConfigURL.deletingLastPathComponent(), withIntermediateDirectories: true)
87 | try FileManager.default.copyItem(at: PackageResources.sampleConfigSource, to: PackageResources.defaultConfigURL)
/host/spi-builder-workspace/Sources/Commands/ServiceInstall.swift:86:74: error: type 'PackageResources' has no member 'defaultConfigURL'
84 | if !FileManager.default.fileExists(atPath: PackageResources.defaultConfigURL.path) {
85 | print("> Creating sample configuration file at \(PackageResources.defaultConfigURL.path)...".color(.magenta))
86 | try FileManager.default.createDirectory(at: PackageResources.defaultConfigURL.deletingLastPathComponent(), withIntermediateDirectories: true)
| `- error: type 'PackageResources' has no member 'defaultConfigURL'
87 | try FileManager.default.copyItem(at: PackageResources.sampleConfigSource, to: PackageResources.defaultConfigURL)
88 | }
/host/spi-builder-workspace/Sources/Commands/ServiceInstall.swift:87:108: error: type 'PackageResources' has no member 'defaultConfigURL'
85 | print("> Creating sample configuration file at \(PackageResources.defaultConfigURL.path)...".color(.magenta))
86 | try FileManager.default.createDirectory(at: PackageResources.defaultConfigURL.deletingLastPathComponent(), withIntermediateDirectories: true)
87 | try FileManager.default.copyItem(at: PackageResources.sampleConfigSource, to: PackageResources.defaultConfigURL)
| `- error: type 'PackageResources' has no member 'defaultConfigURL'
88 | }
89 |
/host/spi-builder-workspace/Sources/Commands/ServiceUninstall.swift:66:54: error: type 'PackageResources' has no member 'serviceFileDest'
64 |
65 | print("> Cleaning any configuration files...".color(.magenta))
66 | _ = try? shellOut(to: "rm \(PackageResources.serviceFileDest.path)")
| `- error: type 'PackageResources' has no member 'serviceFileDest'
67 |
68 | print("\n✔ The WatchDuck system service is now uninstalled.".color(.green, bold: true))
[179/205] Compiling watchduck WatchDuck.swift
/host/spi-builder-workspace/Sources/Commands/Run.swift:29:46: error: type 'PackageResources' has no member 'defaultConfigURL'
27 | help: "The configuration JSON file path.",
28 | transform: URL.init(fileURLWithPath:))
29 | private var configURL = PackageResources.defaultConfigURL
| `- error: type 'PackageResources' has no member 'defaultConfigURL'
30 |
31 | @Flag(
/host/spi-builder-workspace/Sources/Commands/Run.swift:22:8: error: type 'Run' does not conform to protocol 'Decodable'
20 | import Foundation
21 |
22 | struct Run: AsyncParsableCommand {
| `- error: type 'Run' does not conform to protocol 'Decodable'
23 | static let configuration = CommandConfiguration(abstract: "Runs checks to update logs and the static webpage.")
24 |
:
27 | help: "The configuration JSON file path.",
28 | transform: URL.init(fileURLWithPath:))
29 | private var configURL = PackageResources.defaultConfigURL
| `- note: cannot automatically synthesize 'Decodable' because '<<error type>>' does not conform to 'Decodable'
30 |
31 | @Flag(
Swift.Decodable.init:2:1: note: protocol requires initializer 'init(from:)' with type 'Decodable'
1 | protocol Decodable {
2 | init(from decoder: any Decoder) throws}
| `- note: protocol requires initializer 'init(from:)' with type 'Decodable'
3 |
/host/spi-builder-workspace/Sources/Commands/Run.swift:44:24: error: cannot find 'SIG_IGN' in scope
42 |
43 | // TODO: Make signal handling more elegant while keeping it secure if possible.
44 | signal(SIGINT, SIG_IGN)
| `- error: cannot find 'SIG_IGN' in scope
45 |
46 | let sigintSource = DispatchSource.makeSignalSource(signal: SIGINT, queue: DispatchQueue.main)
/host/spi-builder-workspace/Sources/Data/PackageResources.swift:112:68: error: cannot find 'defaultConfigURL' in scope
110 |
111 | \("!!! Please check the following before proceeding !!!".color(.red, bold: true))
112 | > WatchDuck will always use the configuration at \(defaultConfigURL.path) in system service mode.
| `- error: cannot find 'defaultConfigURL' in scope
113 | A sample configuration will be created there if it does not exist. To learn more about how to edit the configuration, see \(docsURL).
114 | """
/host/spi-builder-workspace/Sources/Commands/ServiceInstall.swift:39:32: error: type 'PackageResources' has no member 'serviceInstallExtraInstructions'
37 | print(PackageResources.asciiDuck)
38 | print(PackageResources.serviceInstallBanner)
39 | print(PackageResources.serviceInstallExtraInstructions)
| `- error: type 'PackageResources' has no member 'serviceInstallExtraInstructions'
40 |
41 | if !acceptDefault {
/host/spi-builder-workspace/Sources/Commands/ServiceInstall.swift:64:54: error: type 'PackageResources' has no member 'serviceFileDest'
62 | ])
63 | #endif
64 | _ = try? shellOut(to: "rm \(PackageResources.serviceFileDest.path)")
| `- error: type 'PackageResources' has no member 'serviceFileDest'
65 |
66 | print("> Copying system service configuration file...".color(.magenta))
/host/spi-builder-workspace/Sources/Commands/ServiceInstall.swift:67:70: error: type 'PackageResources' has no member 'serviceFileDest'
65 |
66 | print("> Copying system service configuration file...".color(.magenta))
67 | try FileManager.default.createDirectory(at: PackageResources.serviceFileDest.deletingLastPathComponent(), withIntermediateDirectories: true)
| `- error: type 'PackageResources' has no member 'serviceFileDest'
68 | try Data(contentsOf: PackageResources.serviceFileSource).write(to: PackageResources.serviceFileDest, options: [.atomic])
69 |
/host/spi-builder-workspace/Sources/Commands/ServiceInstall.swift:68:47: error: type 'PackageResources' has no member 'serviceFileSource'
66 | print("> Copying system service configuration file...".color(.magenta))
67 | try FileManager.default.createDirectory(at: PackageResources.serviceFileDest.deletingLastPathComponent(), withIntermediateDirectories: true)
68 | try Data(contentsOf: PackageResources.serviceFileSource).write(to: PackageResources.serviceFileDest, options: [.atomic])
| `- error: type 'PackageResources' has no member 'serviceFileSource'
69 |
70 | print("> Starting \(PackageResources.serviceName) and enabling it on boot.".color(.magenta))
/host/spi-builder-workspace/Sources/Commands/ServiceInstall.swift:68:93: error: type 'PackageResources' has no member 'serviceFileDest'
66 | print("> Copying system service configuration file...".color(.magenta))
67 | try FileManager.default.createDirectory(at: PackageResources.serviceFileDest.deletingLastPathComponent(), withIntermediateDirectories: true)
68 | try Data(contentsOf: PackageResources.serviceFileSource).write(to: PackageResources.serviceFileDest, options: [.atomic])
| `- error: type 'PackageResources' has no member 'serviceFileDest'
69 |
70 | print("> Starting \(PackageResources.serviceName) and enabling it on boot.".color(.magenta))
/host/spi-builder-workspace/Sources/Commands/ServiceInstall.swift:70:46: error: type 'PackageResources' has no member 'serviceName'
68 | try Data(contentsOf: PackageResources.serviceFileSource).write(to: PackageResources.serviceFileDest, options: [.atomic])
69 |
70 | print("> Starting \(PackageResources.serviceName) and enabling it on boot.".color(.magenta))
| `- error: type 'PackageResources' has no member 'serviceName'
71 | #if os(macOS)
72 | try shellOut(to: [
/host/spi-builder-workspace/Sources/Commands/ServiceInstall.swift:84:69: error: type 'PackageResources' has no member 'defaultConfigURL'
82 | #endif
83 |
84 | if !FileManager.default.fileExists(atPath: PackageResources.defaultConfigURL.path) {
| `- error: type 'PackageResources' has no member 'defaultConfigURL'
85 | print("> Creating sample configuration file at \(PackageResources.defaultConfigURL.path)...".color(.magenta))
86 | try FileManager.default.createDirectory(at: PackageResources.defaultConfigURL.deletingLastPathComponent(), withIntermediateDirectories: true)
/host/spi-builder-workspace/Sources/Commands/ServiceInstall.swift:85:79: error: type 'PackageResources' has no member 'defaultConfigURL'
83 |
84 | if !FileManager.default.fileExists(atPath: PackageResources.defaultConfigURL.path) {
85 | print("> Creating sample configuration file at \(PackageResources.defaultConfigURL.path)...".color(.magenta))
| `- error: type 'PackageResources' has no member 'defaultConfigURL'
86 | try FileManager.default.createDirectory(at: PackageResources.defaultConfigURL.deletingLastPathComponent(), withIntermediateDirectories: true)
87 | try FileManager.default.copyItem(at: PackageResources.sampleConfigSource, to: PackageResources.defaultConfigURL)
/host/spi-builder-workspace/Sources/Commands/ServiceInstall.swift:86:74: error: type 'PackageResources' has no member 'defaultConfigURL'
84 | if !FileManager.default.fileExists(atPath: PackageResources.defaultConfigURL.path) {
85 | print("> Creating sample configuration file at \(PackageResources.defaultConfigURL.path)...".color(.magenta))
86 | try FileManager.default.createDirectory(at: PackageResources.defaultConfigURL.deletingLastPathComponent(), withIntermediateDirectories: true)
| `- error: type 'PackageResources' has no member 'defaultConfigURL'
87 | try FileManager.default.copyItem(at: PackageResources.sampleConfigSource, to: PackageResources.defaultConfigURL)
88 | }
/host/spi-builder-workspace/Sources/Commands/ServiceInstall.swift:87:108: error: type 'PackageResources' has no member 'defaultConfigURL'
85 | print("> Creating sample configuration file at \(PackageResources.defaultConfigURL.path)...".color(.magenta))
86 | try FileManager.default.createDirectory(at: PackageResources.defaultConfigURL.deletingLastPathComponent(), withIntermediateDirectories: true)
87 | try FileManager.default.copyItem(at: PackageResources.sampleConfigSource, to: PackageResources.defaultConfigURL)
| `- error: type 'PackageResources' has no member 'defaultConfigURL'
88 | }
89 |
/host/spi-builder-workspace/Sources/Commands/ServiceUninstall.swift:66:54: error: type 'PackageResources' has no member 'serviceFileDest'
64 |
65 | print("> Cleaning any configuration files...".color(.magenta))
66 | _ = try? shellOut(to: "rm \(PackageResources.serviceFileDest.path)")
| `- error: type 'PackageResources' has no member 'serviceFileDest'
67 |
68 | print("\n✔ The WatchDuck system service is now uninstalled.".color(.green, bold: true))
[180/205] Compiling watchduck KeyedDecodingContainer+AssignIfPresent.swift
[181/205] Compiling watchduck Sequence+Uniqued.swift
[182/205] Compiling watchduck String+CFString.swift
[183/205] Compiling watchduck String+Color+Bold.swift
[184/205] Compiling watchduck String.Encoding+IANACharset.swift
[185/205] Compiling watchduck URLSession+RetryingData.swift
/host/spi-builder-workspace/Sources/Helpers/OSUtils.swift:25:63: error: type 'PackageResources' has no member 'kernelName'
23 | enum OSUtils {
24 | static func kernelCheck() throws {
25 | guard (try shellOut(to: "uname")) == PackageResources.kernelName else {
| `- error: type 'PackageResources' has no member 'kernelName'
26 | print("Error: Kernel-binary mismatch! Please stop using WatchDuck and re-install the correct binary for your operating system!".color(.red))
27 | throw ExitCode(EXIT_FAILURE)
[186/205] Compiling watchduck HTTPMethod.swift
/host/spi-builder-workspace/Sources/Helpers/OSUtils.swift:25:63: error: type 'PackageResources' has no member 'kernelName'
23 | enum OSUtils {
24 | static func kernelCheck() throws {
25 | guard (try shellOut(to: "uname")) == PackageResources.kernelName else {
| `- error: type 'PackageResources' has no member 'kernelName'
26 | print("Error: Kernel-binary mismatch! Please stop using WatchDuck and re-install the correct binary for your operating system!".color(.red))
27 | throw ExitCode(EXIT_FAILURE)
[187/205] Compiling watchduck OSUtils.swift
/host/spi-builder-workspace/Sources/Helpers/OSUtils.swift:25:63: error: type 'PackageResources' has no member 'kernelName'
23 | enum OSUtils {
24 | static func kernelCheck() throws {
25 | guard (try shellOut(to: "uname")) == PackageResources.kernelName else {
| `- error: type 'PackageResources' has no member 'kernelName'
26 | print("Error: Kernel-binary mismatch! Please stop using WatchDuck and re-install the correct binary for your operating system!".color(.red))
27 | throw ExitCode(EXIT_FAILURE)
[188/205] Compiling watchduck resource_bundle_accessor.swift
/host/spi-builder-workspace/Sources/Helpers/OSUtils.swift:25:63: error: type 'PackageResources' has no member 'kernelName'
23 | enum OSUtils {
24 | static func kernelCheck() throws {
25 | guard (try shellOut(to: "uname")) == PackageResources.kernelName else {
| `- error: type 'PackageResources' has no member 'kernelName'
26 | print("Error: Kernel-binary mismatch! Please stop using WatchDuck and re-install the correct binary for your operating system!".color(.red))
27 | throw ExitCode(EXIT_FAILURE)
[189/205] Compiling watchduck Task+SleepTimeInterval.swift
[190/205] Compiling watchduck URL+CurrentDirectory.swift
[191/205] Compiling watchduck URL+StaticString.swift
[192/205] Compiling watchduck URLRequest+PreferredTextEncoding.swift
[193/205] Compiling watchduck WDPageHeader.swift
[194/205] Compiling watchduck WDPageListSubtext.swift
[195/205] Compiling watchduck WDPageStatusList.swift
[196/205] Compiling watchduck ANSIColors.swift
[197/205] Compiling watchduck CLISpinner.swift
[198/205] Compiling watchduck WDOutage.swift
[199/205] Compiling watchduck WDStatus.swift
[200/205] Compiling watchduck FileComponents.swift
[201/205] Compiling watchduck WDHTML.swift
[202/205] Compiling watchduck WDPageFooter.swift
Running build ...
bash -c docker run --pull=always --rm -v "checkouts-4609320-2":/host -w "$PWD" -e JAVA_HOME="/root/.sdkman/candidates/java/current" -e SPI_BUILD="1" -e SPI_PROCESSING="1" registry.gitlab.com/finestructure/spi-images:android-6.1-latest swift build --swift-sdk aarch64-unknown-linux-android24 2>&1
android-6.1-latest: Pulling from finestructure/spi-images
Digest: sha256:496d77b037d0552dd779110e0d7093275ebb8376a63c7a364a5a4acca11a4ff5
Status: Image is up to date for registry.gitlab.com/finestructure/spi-images:android-6.1-latest
[0/1] Planning build
[1/1] Compiling plugin Swift-DocC Preview
[2/2] Compiling plugin Swift-DocC
[3/3] Compiling plugin GenerateManual
Building for debugging...
[3/12] Write swift-version-24593BA9C3E375BF.txt
[5/95] Compiling Plot EmptyComponent.swift
[6/95] Compiling Plot EnvironmentKey.swift
[7/95] Compiling Plot EnvironmentValue.swift
[8/95] Compiling Plot HTML.swift
[9/97] Compiling ShellOut ShellOut.swift
[10/97] Emitting module ShellOut
[11/98] Compiling Plot SiteMapElements.swift
[12/98] Compiling Plot TwitterCardType.swift
[13/98] Compiling Plot URLRepresentable.swift
[14/98] Compiling Plot XML.swift
[15/98] Compiling Plot XMLAttributes.swift
[16/98] Compiling Plot XMLElements.swift
[17/98] Compiling Plot AnyAttribute.swift
[18/98] Compiling Plot AnyElement.swift
[19/106] Compiling Plot PodcastMediaType.swift
[20/106] Compiling Plot PodcastType.swift
[21/106] Compiling Plot RSS.swift
[22/106] Compiling Plot RSSAttributes.swift
[23/106] Compiling Plot RSSElements.swift
[24/106] Compiling Plot Renderable.swift
[25/106] Compiling Plot SiteMap.swift
[26/106] Compiling Plot SiteMapChangeFrequency.swift
[28/105] Compiling Plot Attribute.swift
[29/105] Compiling Plot Component.swift
[30/105] Compiling Plot ComponentAttributes.swift
[31/105] Compiling Plot ComponentBuilder.swift
[32/105] Compiling Plot ComponentContainer.swift
[33/105] Compiling Plot ComponentGroup.swift
[34/105] Compiling Plot ControlFlow.swift
[35/105] Compiling Plot Directionality.swift
[36/105] Compiling Plot Document.swift
[37/105] Compiling Plot DocumentEncoding.swift
[38/105] Compiling Plot Element.swift
[39/105] Compiling Plot ElementClosingMode.swift
[40/105] Compiling Plot ElementComponent.swift
[41/105] Compiling Plot ElementDefinition.swift
[46/105] Compiling Plot Node.swift
[47/105] Compiling Plot NodeConvertible.swift
[48/105] Compiling Plot Optional+Component.swift
[49/105] Compiling Plot PodcastAttributes.swift
[50/105] Compiling Plot PodcastComponents.swift
[51/105] Compiling Plot PodcastElements.swift
[52/105] Compiling Plot PodcastEpisodeType.swift
[53/105] Compiling Plot PodcastFeed.swift
[54/105] Emitting module ArgumentParserToolInfo
[55/105] Compiling ArgumentParserToolInfo ToolInfo.swift
[59/105] Compiling Yams YamlError.swift
[60/105] Compiling Yams YamlTagProviding.swift
[61/105] Emitting module Plot
[62/105] Compiling Plot HTMLInputType.swift
[63/105] Compiling Plot HTMLLinkRelationship.swift
[64/105] Compiling Plot HTMLListStyle.swift
[65/105] Compiling Plot HTMLVideoFormat.swift
[66/105] Compiling Plot HTMLViewportFitMode.swift
[67/105] Compiling Plot HTMLViewportWidthMode.swift
[68/105] Compiling Plot Indentation.swift
[69/105] Compiling Plot Language.swift
[70/105] Compiling Plot AnyEnvironmentValue.swift
[71/105] Compiling Plot AnyNode.swift
[72/105] Compiling Plot ElementRenderingBuffer.swift
[73/105] Compiling Plot ElementWrapper.swift
[74/105] Compiling Plot Environment.swift
[75/105] Compiling Plot ModifiedComponent.swift
[76/105] Compiling Plot Renderer.swift
[77/105] Compiling Plot String+Escaping.swift
[78/120] Compiling ArgumentParser ArgumentVisibility.swift
[79/120] Compiling ArgumentParser CompletionKind.swift
[80/120] Compiling ArgumentParser Errors.swift
[81/120] Compiling ArgumentParser ZshCompletionsGenerator.swift
[82/120] Compiling ArgumentParser Argument.swift
[83/120] Compiling ArgumentParser ArgumentHelp.swift
[84/143] Emitting module Yams
[85/143] Compiling ArgumentParser Flag.swift
[86/143] Compiling ArgumentParser NameSpecification.swift
[87/143] Compiling ArgumentParser Option.swift
[88/143] Compiling ArgumentParser BashCompletionsGenerator.swift
[89/143] Compiling ArgumentParser CompletionsGenerator.swift
[90/143] Compiling ArgumentParser FishCompletionsGenerator.swift
[92/144] Compiling ArgumentParser AsyncParsableCommand.swift
[93/144] Compiling ArgumentParser CommandConfiguration.swift
[94/144] Compiling ArgumentParser CommandGroup.swift
[95/144] Compiling ArgumentParser EnumerableFlag.swift
[96/144] Compiling ArgumentParser ArgumentDefinition.swift
[97/144] Compiling ArgumentParser ArgumentSet.swift
[98/144] Compiling ArgumentParser CommandParser.swift
[99/144] Compiling ArgumentParser InputKey.swift
[100/144] Compiling ArgumentParser InputOrigin.swift
[102/144] Emitting module ArgumentParser
[115/148] Compiling ArgumentParser CollectionExtensions.swift
[116/148] Compiling ArgumentParser Platform.swift
[117/148] Compiling ArgumentParser SequenceExtensions.swift
[118/148] Compiling ArgumentParser StringExtensions.swift
[119/148] Compiling ArgumentParser Tree.swift
[120/148] Compiling ArgumentParser Name.swift
[121/148] Compiling ArgumentParser Parsed.swift
[122/148] Compiling ArgumentParser ParsedValues.swift
[123/148] Compiling ArgumentParser ParserError.swift
[124/148] Compiling ArgumentParser SplitArguments.swift
[125/148] Compiling ArgumentParser DumpHelpGenerator.swift
[126/148] Compiling ArgumentParser HelpCommand.swift
[127/148] Compiling ArgumentParser HelpGenerator.swift
[128/148] Compiling ArgumentParser MessageInfo.swift
[129/148] Compiling ArgumentParser UsageGenerator.swift
[130/148] Compiling ArgumentParser ExpressibleByArgument.swift
[131/148] Compiling ArgumentParser ParsableArguments.swift
[132/148] Compiling ArgumentParser ParsableArgumentsValidation.swift
[133/148] Compiling ArgumentParser ParsableCommand.swift
[134/148] Compiling ArgumentParser ArgumentDecoder.swift
[135/148] Compiling ArgumentParser OptionGroup.swift
[146/183] Compiling watchduck Bundle+StaticURL.swift
[147/183] Compiling watchduck Bundle+StaticURLs.swift
[148/183] Compiling watchduck ClosedRange+ContainsRange.swift
[149/183] Compiling watchduck Error+UnderlyingLocalizedDescription.swift
[150/183] Compiling watchduck HTTPURLResponse+TextEncoding.swift
[151/187] Compiling watchduck AnyWDCheck.swift
/host/spi-builder-workspace/Sources/Data/PackageResources.swift:112:68: error: cannot find 'defaultConfigURL' in scope
110 |
111 | \("!!! Please check the following before proceeding !!!".color(.red, bold: true))
112 | > WatchDuck will always use the configuration at \(defaultConfigURL.path) in system service mode.
| `- error: cannot find 'defaultConfigURL' in scope
113 | A sample configuration will be created there if it does not exist. To learn more about how to edit the configuration, see \(docsURL).
114 | """
[152/187] Compiling watchduck PackageResources.swift
/host/spi-builder-workspace/Sources/Data/PackageResources.swift:112:68: error: cannot find 'defaultConfigURL' in scope
110 |
111 | \("!!! Please check the following before proceeding !!!".color(.red, bold: true))
112 | > WatchDuck will always use the configuration at \(defaultConfigURL.path) in system service mode.
| `- error: cannot find 'defaultConfigURL' in scope
113 | A sample configuration will be created there if it does not exist. To learn more about how to edit the configuration, see \(docsURL).
114 | """
[153/187] Compiling watchduck WDCheck.swift
/host/spi-builder-workspace/Sources/Data/PackageResources.swift:112:68: error: cannot find 'defaultConfigURL' in scope
110 |
111 | \("!!! Please check the following before proceeding !!!".color(.red, bold: true))
112 | > WatchDuck will always use the configuration at \(defaultConfigURL.path) in system service mode.
| `- error: cannot find 'defaultConfigURL' in scope
113 | A sample configuration will be created there if it does not exist. To learn more about how to edit the configuration, see \(docsURL).
114 | """
[154/187] Compiling watchduck WDConfig.swift
/host/spi-builder-workspace/Sources/Data/PackageResources.swift:112:68: error: cannot find 'defaultConfigURL' in scope
110 |
111 | \("!!! Please check the following before proceeding !!!".color(.red, bold: true))
112 | > WatchDuck will always use the configuration at \(defaultConfigURL.path) in system service mode.
| `- error: cannot find 'defaultConfigURL' in scope
113 | A sample configuration will be created there if it does not exist. To learn more about how to edit the configuration, see \(docsURL).
114 | """
[155/187] Compiling watchduck WDLog.swift
/host/spi-builder-workspace/Sources/Data/PackageResources.swift:112:68: error: cannot find 'defaultConfigURL' in scope
110 |
111 | \("!!! Please check the following before proceeding !!!".color(.red, bold: true))
112 | > WatchDuck will always use the configuration at \(defaultConfigURL.path) in system service mode.
| `- error: cannot find 'defaultConfigURL' in scope
113 | A sample configuration will be created there if it does not exist. To learn more about how to edit the configuration, see \(docsURL).
114 | """
[156/187] Compiling watchduck HTTPResponseCodeCheck.swift
/host/spi-builder-workspace/Sources/Commands/Run.swift:29:46: error: type 'PackageResources' has no member 'defaultConfigURL'
27 | help: "The configuration JSON file path.",
28 | transform: URL.init(fileURLWithPath:))
29 | private var configURL = PackageResources.defaultConfigURL
| `- error: type 'PackageResources' has no member 'defaultConfigURL'
30 |
31 | @Flag(
/host/spi-builder-workspace/Sources/Commands/Run.swift:22:8: error: type 'Run' does not conform to protocol 'Decodable'
20 | import Foundation
21 |
22 | struct Run: AsyncParsableCommand {
| `- error: type 'Run' does not conform to protocol 'Decodable'
23 | static let configuration = CommandConfiguration(abstract: "Runs checks to update logs and the static webpage.")
24 |
:
27 | help: "The configuration JSON file path.",
28 | transform: URL.init(fileURLWithPath:))
29 | private var configURL = PackageResources.defaultConfigURL
| `- note: cannot automatically synthesize 'Decodable' because '<<error type>>' does not conform to 'Decodable'
30 |
31 | @Flag(
Swift.Decodable.init:2:1: note: protocol requires initializer 'init(from:)' with type 'Decodable'
1 | protocol Decodable {
2 | init(from decoder: any Decoder) throws}
| `- note: protocol requires initializer 'init(from:)' with type 'Decodable'
3 |
/host/spi-builder-workspace/Sources/Commands/Run.swift:44:24: error: cannot find 'SIG_IGN' in scope
42 |
43 | // TODO: Make signal handling more elegant while keeping it secure if possible.
44 | signal(SIGINT, SIG_IGN)
| `- error: cannot find 'SIG_IGN' in scope
45 |
46 | let sigintSource = DispatchSource.makeSignalSource(signal: SIGINT, queue: DispatchQueue.main)
/host/spi-builder-workspace/Sources/Data/PackageResources.swift:112:68: error: cannot find 'defaultConfigURL' in scope
110 |
111 | \("!!! Please check the following before proceeding !!!".color(.red, bold: true))
112 | > WatchDuck will always use the configuration at \(defaultConfigURL.path) in system service mode.
| `- error: cannot find 'defaultConfigURL' in scope
113 | A sample configuration will be created there if it does not exist. To learn more about how to edit the configuration, see \(docsURL).
114 | """
/host/spi-builder-workspace/Sources/Commands/ServiceInstall.swift:39:32: error: type 'PackageResources' has no member 'serviceInstallExtraInstructions'
37 | print(PackageResources.asciiDuck)
38 | print(PackageResources.serviceInstallBanner)
39 | print(PackageResources.serviceInstallExtraInstructions)
| `- error: type 'PackageResources' has no member 'serviceInstallExtraInstructions'
40 |
41 | if !acceptDefault {
/host/spi-builder-workspace/Sources/Commands/ServiceInstall.swift:64:54: error: type 'PackageResources' has no member 'serviceFileDest'
62 | ])
63 | #endif
64 | _ = try? shellOut(to: "rm \(PackageResources.serviceFileDest.path)")
| `- error: type 'PackageResources' has no member 'serviceFileDest'
65 |
66 | print("> Copying system service configuration file...".color(.magenta))
/host/spi-builder-workspace/Sources/Commands/ServiceInstall.swift:67:70: error: type 'PackageResources' has no member 'serviceFileDest'
65 |
66 | print("> Copying system service configuration file...".color(.magenta))
67 | try FileManager.default.createDirectory(at: PackageResources.serviceFileDest.deletingLastPathComponent(), withIntermediateDirectories: true)
| `- error: type 'PackageResources' has no member 'serviceFileDest'
68 | try Data(contentsOf: PackageResources.serviceFileSource).write(to: PackageResources.serviceFileDest, options: [.atomic])
69 |
/host/spi-builder-workspace/Sources/Commands/ServiceInstall.swift:68:47: error: type 'PackageResources' has no member 'serviceFileSource'
66 | print("> Copying system service configuration file...".color(.magenta))
67 | try FileManager.default.createDirectory(at: PackageResources.serviceFileDest.deletingLastPathComponent(), withIntermediateDirectories: true)
68 | try Data(contentsOf: PackageResources.serviceFileSource).write(to: PackageResources.serviceFileDest, options: [.atomic])
| `- error: type 'PackageResources' has no member 'serviceFileSource'
69 |
70 | print("> Starting \(PackageResources.serviceName) and enabling it on boot.".color(.magenta))
/host/spi-builder-workspace/Sources/Commands/ServiceInstall.swift:68:93: error: type 'PackageResources' has no member 'serviceFileDest'
66 | print("> Copying system service configuration file...".color(.magenta))
67 | try FileManager.default.createDirectory(at: PackageResources.serviceFileDest.deletingLastPathComponent(), withIntermediateDirectories: true)
68 | try Data(contentsOf: PackageResources.serviceFileSource).write(to: PackageResources.serviceFileDest, options: [.atomic])
| `- error: type 'PackageResources' has no member 'serviceFileDest'
69 |
70 | print("> Starting \(PackageResources.serviceName) and enabling it on boot.".color(.magenta))
/host/spi-builder-workspace/Sources/Commands/ServiceInstall.swift:70:46: error: type 'PackageResources' has no member 'serviceName'
68 | try Data(contentsOf: PackageResources.serviceFileSource).write(to: PackageResources.serviceFileDest, options: [.atomic])
69 |
70 | print("> Starting \(PackageResources.serviceName) and enabling it on boot.".color(.magenta))
| `- error: type 'PackageResources' has no member 'serviceName'
71 | #if os(macOS)
72 | try shellOut(to: [
/host/spi-builder-workspace/Sources/Commands/ServiceInstall.swift:84:69: error: type 'PackageResources' has no member 'defaultConfigURL'
82 | #endif
83 |
84 | if !FileManager.default.fileExists(atPath: PackageResources.defaultConfigURL.path) {
| `- error: type 'PackageResources' has no member 'defaultConfigURL'
85 | print("> Creating sample configuration file at \(PackageResources.defaultConfigURL.path)...".color(.magenta))
86 | try FileManager.default.createDirectory(at: PackageResources.defaultConfigURL.deletingLastPathComponent(), withIntermediateDirectories: true)
/host/spi-builder-workspace/Sources/Commands/ServiceInstall.swift:85:79: error: type 'PackageResources' has no member 'defaultConfigURL'
83 |
84 | if !FileManager.default.fileExists(atPath: PackageResources.defaultConfigURL.path) {
85 | print("> Creating sample configuration file at \(PackageResources.defaultConfigURL.path)...".color(.magenta))
| `- error: type 'PackageResources' has no member 'defaultConfigURL'
86 | try FileManager.default.createDirectory(at: PackageResources.defaultConfigURL.deletingLastPathComponent(), withIntermediateDirectories: true)
87 | try FileManager.default.copyItem(at: PackageResources.sampleConfigSource, to: PackageResources.defaultConfigURL)
/host/spi-builder-workspace/Sources/Commands/ServiceInstall.swift:86:74: error: type 'PackageResources' has no member 'defaultConfigURL'
84 | if !FileManager.default.fileExists(atPath: PackageResources.defaultConfigURL.path) {
85 | print("> Creating sample configuration file at \(PackageResources.defaultConfigURL.path)...".color(.magenta))
86 | try FileManager.default.createDirectory(at: PackageResources.defaultConfigURL.deletingLastPathComponent(), withIntermediateDirectories: true)
| `- error: type 'PackageResources' has no member 'defaultConfigURL'
87 | try FileManager.default.copyItem(at: PackageResources.sampleConfigSource, to: PackageResources.defaultConfigURL)
88 | }
/host/spi-builder-workspace/Sources/Commands/ServiceInstall.swift:87:108: error: type 'PackageResources' has no member 'defaultConfigURL'
85 | print("> Creating sample configuration file at \(PackageResources.defaultConfigURL.path)...".color(.magenta))
86 | try FileManager.default.createDirectory(at: PackageResources.defaultConfigURL.deletingLastPathComponent(), withIntermediateDirectories: true)
87 | try FileManager.default.copyItem(at: PackageResources.sampleConfigSource, to: PackageResources.defaultConfigURL)
| `- error: type 'PackageResources' has no member 'defaultConfigURL'
88 | }
89 |
/host/spi-builder-workspace/Sources/Commands/ServiceUninstall.swift:66:54: error: type 'PackageResources' has no member 'serviceFileDest'
64 |
65 | print("> Cleaning any configuration files...".color(.magenta))
66 | _ = try? shellOut(to: "rm \(PackageResources.serviceFileDest.path)")
| `- error: type 'PackageResources' has no member 'serviceFileDest'
67 |
68 | print("\n✔ The WatchDuck system service is now uninstalled.".color(.green, bold: true))
[157/187] Compiling watchduck Run.swift
/host/spi-builder-workspace/Sources/Commands/Run.swift:29:46: error: type 'PackageResources' has no member 'defaultConfigURL'
27 | help: "The configuration JSON file path.",
28 | transform: URL.init(fileURLWithPath:))
29 | private var configURL = PackageResources.defaultConfigURL
| `- error: type 'PackageResources' has no member 'defaultConfigURL'
30 |
31 | @Flag(
/host/spi-builder-workspace/Sources/Commands/Run.swift:22:8: error: type 'Run' does not conform to protocol 'Decodable'
20 | import Foundation
21 |
22 | struct Run: AsyncParsableCommand {
| `- error: type 'Run' does not conform to protocol 'Decodable'
23 | static let configuration = CommandConfiguration(abstract: "Runs checks to update logs and the static webpage.")
24 |
:
27 | help: "The configuration JSON file path.",
28 | transform: URL.init(fileURLWithPath:))
29 | private var configURL = PackageResources.defaultConfigURL
| `- note: cannot automatically synthesize 'Decodable' because '<<error type>>' does not conform to 'Decodable'
30 |
31 | @Flag(
Swift.Decodable.init:2:1: note: protocol requires initializer 'init(from:)' with type 'Decodable'
1 | protocol Decodable {
2 | init(from decoder: any Decoder) throws}
| `- note: protocol requires initializer 'init(from:)' with type 'Decodable'
3 |
/host/spi-builder-workspace/Sources/Commands/Run.swift:44:24: error: cannot find 'SIG_IGN' in scope
42 |
43 | // TODO: Make signal handling more elegant while keeping it secure if possible.
44 | signal(SIGINT, SIG_IGN)
| `- error: cannot find 'SIG_IGN' in scope
45 |
46 | let sigintSource = DispatchSource.makeSignalSource(signal: SIGINT, queue: DispatchQueue.main)
/host/spi-builder-workspace/Sources/Data/PackageResources.swift:112:68: error: cannot find 'defaultConfigURL' in scope
110 |
111 | \("!!! Please check the following before proceeding !!!".color(.red, bold: true))
112 | > WatchDuck will always use the configuration at \(defaultConfigURL.path) in system service mode.
| `- error: cannot find 'defaultConfigURL' in scope
113 | A sample configuration will be created there if it does not exist. To learn more about how to edit the configuration, see \(docsURL).
114 | """
/host/spi-builder-workspace/Sources/Commands/ServiceInstall.swift:39:32: error: type 'PackageResources' has no member 'serviceInstallExtraInstructions'
37 | print(PackageResources.asciiDuck)
38 | print(PackageResources.serviceInstallBanner)
39 | print(PackageResources.serviceInstallExtraInstructions)
| `- error: type 'PackageResources' has no member 'serviceInstallExtraInstructions'
40 |
41 | if !acceptDefault {
/host/spi-builder-workspace/Sources/Commands/ServiceInstall.swift:64:54: error: type 'PackageResources' has no member 'serviceFileDest'
62 | ])
63 | #endif
64 | _ = try? shellOut(to: "rm \(PackageResources.serviceFileDest.path)")
| `- error: type 'PackageResources' has no member 'serviceFileDest'
65 |
66 | print("> Copying system service configuration file...".color(.magenta))
/host/spi-builder-workspace/Sources/Commands/ServiceInstall.swift:67:70: error: type 'PackageResources' has no member 'serviceFileDest'
65 |
66 | print("> Copying system service configuration file...".color(.magenta))
67 | try FileManager.default.createDirectory(at: PackageResources.serviceFileDest.deletingLastPathComponent(), withIntermediateDirectories: true)
| `- error: type 'PackageResources' has no member 'serviceFileDest'
68 | try Data(contentsOf: PackageResources.serviceFileSource).write(to: PackageResources.serviceFileDest, options: [.atomic])
69 |
/host/spi-builder-workspace/Sources/Commands/ServiceInstall.swift:68:47: error: type 'PackageResources' has no member 'serviceFileSource'
66 | print("> Copying system service configuration file...".color(.magenta))
67 | try FileManager.default.createDirectory(at: PackageResources.serviceFileDest.deletingLastPathComponent(), withIntermediateDirectories: true)
68 | try Data(contentsOf: PackageResources.serviceFileSource).write(to: PackageResources.serviceFileDest, options: [.atomic])
| `- error: type 'PackageResources' has no member 'serviceFileSource'
69 |
70 | print("> Starting \(PackageResources.serviceName) and enabling it on boot.".color(.magenta))
/host/spi-builder-workspace/Sources/Commands/ServiceInstall.swift:68:93: error: type 'PackageResources' has no member 'serviceFileDest'
66 | print("> Copying system service configuration file...".color(.magenta))
67 | try FileManager.default.createDirectory(at: PackageResources.serviceFileDest.deletingLastPathComponent(), withIntermediateDirectories: true)
68 | try Data(contentsOf: PackageResources.serviceFileSource).write(to: PackageResources.serviceFileDest, options: [.atomic])
| `- error: type 'PackageResources' has no member 'serviceFileDest'
69 |
70 | print("> Starting \(PackageResources.serviceName) and enabling it on boot.".color(.magenta))
/host/spi-builder-workspace/Sources/Commands/ServiceInstall.swift:70:46: error: type 'PackageResources' has no member 'serviceName'
68 | try Data(contentsOf: PackageResources.serviceFileSource).write(to: PackageResources.serviceFileDest, options: [.atomic])
69 |
70 | print("> Starting \(PackageResources.serviceName) and enabling it on boot.".color(.magenta))
| `- error: type 'PackageResources' has no member 'serviceName'
71 | #if os(macOS)
72 | try shellOut(to: [
/host/spi-builder-workspace/Sources/Commands/ServiceInstall.swift:84:69: error: type 'PackageResources' has no member 'defaultConfigURL'
82 | #endif
83 |
84 | if !FileManager.default.fileExists(atPath: PackageResources.defaultConfigURL.path) {
| `- error: type 'PackageResources' has no member 'defaultConfigURL'
85 | print("> Creating sample configuration file at \(PackageResources.defaultConfigURL.path)...".color(.magenta))
86 | try FileManager.default.createDirectory(at: PackageResources.defaultConfigURL.deletingLastPathComponent(), withIntermediateDirectories: true)
/host/spi-builder-workspace/Sources/Commands/ServiceInstall.swift:85:79: error: type 'PackageResources' has no member 'defaultConfigURL'
83 |
84 | if !FileManager.default.fileExists(atPath: PackageResources.defaultConfigURL.path) {
85 | print("> Creating sample configuration file at \(PackageResources.defaultConfigURL.path)...".color(.magenta))
| `- error: type 'PackageResources' has no member 'defaultConfigURL'
86 | try FileManager.default.createDirectory(at: PackageResources.defaultConfigURL.deletingLastPathComponent(), withIntermediateDirectories: true)
87 | try FileManager.default.copyItem(at: PackageResources.sampleConfigSource, to: PackageResources.defaultConfigURL)
/host/spi-builder-workspace/Sources/Commands/ServiceInstall.swift:86:74: error: type 'PackageResources' has no member 'defaultConfigURL'
84 | if !FileManager.default.fileExists(atPath: PackageResources.defaultConfigURL.path) {
85 | print("> Creating sample configuration file at \(PackageResources.defaultConfigURL.path)...".color(.magenta))
86 | try FileManager.default.createDirectory(at: PackageResources.defaultConfigURL.deletingLastPathComponent(), withIntermediateDirectories: true)
| `- error: type 'PackageResources' has no member 'defaultConfigURL'
87 | try FileManager.default.copyItem(at: PackageResources.sampleConfigSource, to: PackageResources.defaultConfigURL)
88 | }
/host/spi-builder-workspace/Sources/Commands/ServiceInstall.swift:87:108: error: type 'PackageResources' has no member 'defaultConfigURL'
85 | print("> Creating sample configuration file at \(PackageResources.defaultConfigURL.path)...".color(.magenta))
86 | try FileManager.default.createDirectory(at: PackageResources.defaultConfigURL.deletingLastPathComponent(), withIntermediateDirectories: true)
87 | try FileManager.default.copyItem(at: PackageResources.sampleConfigSource, to: PackageResources.defaultConfigURL)
| `- error: type 'PackageResources' has no member 'defaultConfigURL'
88 | }
89 |
/host/spi-builder-workspace/Sources/Commands/ServiceUninstall.swift:66:54: error: type 'PackageResources' has no member 'serviceFileDest'
64 |
65 | print("> Cleaning any configuration files...".color(.magenta))
66 | _ = try? shellOut(to: "rm \(PackageResources.serviceFileDest.path)")
| `- error: type 'PackageResources' has no member 'serviceFileDest'
67 |
68 | print("\n✔ The WatchDuck system service is now uninstalled.".color(.green, bold: true))
[158/187] Compiling watchduck ServiceInstall.swift
/host/spi-builder-workspace/Sources/Commands/Run.swift:29:46: error: type 'PackageResources' has no member 'defaultConfigURL'
27 | help: "The configuration JSON file path.",
28 | transform: URL.init(fileURLWithPath:))
29 | private var configURL = PackageResources.defaultConfigURL
| `- error: type 'PackageResources' has no member 'defaultConfigURL'
30 |
31 | @Flag(
/host/spi-builder-workspace/Sources/Commands/Run.swift:22:8: error: type 'Run' does not conform to protocol 'Decodable'
20 | import Foundation
21 |
22 | struct Run: AsyncParsableCommand {
| `- error: type 'Run' does not conform to protocol 'Decodable'
23 | static let configuration = CommandConfiguration(abstract: "Runs checks to update logs and the static webpage.")
24 |
:
27 | help: "The configuration JSON file path.",
28 | transform: URL.init(fileURLWithPath:))
29 | private var configURL = PackageResources.defaultConfigURL
| `- note: cannot automatically synthesize 'Decodable' because '<<error type>>' does not conform to 'Decodable'
30 |
31 | @Flag(
Swift.Decodable.init:2:1: note: protocol requires initializer 'init(from:)' with type 'Decodable'
1 | protocol Decodable {
2 | init(from decoder: any Decoder) throws}
| `- note: protocol requires initializer 'init(from:)' with type 'Decodable'
3 |
/host/spi-builder-workspace/Sources/Commands/Run.swift:44:24: error: cannot find 'SIG_IGN' in scope
42 |
43 | // TODO: Make signal handling more elegant while keeping it secure if possible.
44 | signal(SIGINT, SIG_IGN)
| `- error: cannot find 'SIG_IGN' in scope
45 |
46 | let sigintSource = DispatchSource.makeSignalSource(signal: SIGINT, queue: DispatchQueue.main)
/host/spi-builder-workspace/Sources/Data/PackageResources.swift:112:68: error: cannot find 'defaultConfigURL' in scope
110 |
111 | \("!!! Please check the following before proceeding !!!".color(.red, bold: true))
112 | > WatchDuck will always use the configuration at \(defaultConfigURL.path) in system service mode.
| `- error: cannot find 'defaultConfigURL' in scope
113 | A sample configuration will be created there if it does not exist. To learn more about how to edit the configuration, see \(docsURL).
114 | """
/host/spi-builder-workspace/Sources/Commands/ServiceInstall.swift:39:32: error: type 'PackageResources' has no member 'serviceInstallExtraInstructions'
37 | print(PackageResources.asciiDuck)
38 | print(PackageResources.serviceInstallBanner)
39 | print(PackageResources.serviceInstallExtraInstructions)
| `- error: type 'PackageResources' has no member 'serviceInstallExtraInstructions'
40 |
41 | if !acceptDefault {
/host/spi-builder-workspace/Sources/Commands/ServiceInstall.swift:64:54: error: type 'PackageResources' has no member 'serviceFileDest'
62 | ])
63 | #endif
64 | _ = try? shellOut(to: "rm \(PackageResources.serviceFileDest.path)")
| `- error: type 'PackageResources' has no member 'serviceFileDest'
65 |
66 | print("> Copying system service configuration file...".color(.magenta))
/host/spi-builder-workspace/Sources/Commands/ServiceInstall.swift:67:70: error: type 'PackageResources' has no member 'serviceFileDest'
65 |
66 | print("> Copying system service configuration file...".color(.magenta))
67 | try FileManager.default.createDirectory(at: PackageResources.serviceFileDest.deletingLastPathComponent(), withIntermediateDirectories: true)
| `- error: type 'PackageResources' has no member 'serviceFileDest'
68 | try Data(contentsOf: PackageResources.serviceFileSource).write(to: PackageResources.serviceFileDest, options: [.atomic])
69 |
/host/spi-builder-workspace/Sources/Commands/ServiceInstall.swift:68:47: error: type 'PackageResources' has no member 'serviceFileSource'
66 | print("> Copying system service configuration file...".color(.magenta))
67 | try FileManager.default.createDirectory(at: PackageResources.serviceFileDest.deletingLastPathComponent(), withIntermediateDirectories: true)
68 | try Data(contentsOf: PackageResources.serviceFileSource).write(to: PackageResources.serviceFileDest, options: [.atomic])
| `- error: type 'PackageResources' has no member 'serviceFileSource'
69 |
70 | print("> Starting \(PackageResources.serviceName) and enabling it on boot.".color(.magenta))
/host/spi-builder-workspace/Sources/Commands/ServiceInstall.swift:68:93: error: type 'PackageResources' has no member 'serviceFileDest'
66 | print("> Copying system service configuration file...".color(.magenta))
67 | try FileManager.default.createDirectory(at: PackageResources.serviceFileDest.deletingLastPathComponent(), withIntermediateDirectories: true)
68 | try Data(contentsOf: PackageResources.serviceFileSource).write(to: PackageResources.serviceFileDest, options: [.atomic])
| `- error: type 'PackageResources' has no member 'serviceFileDest'
69 |
70 | print("> Starting \(PackageResources.serviceName) and enabling it on boot.".color(.magenta))
/host/spi-builder-workspace/Sources/Commands/ServiceInstall.swift:70:46: error: type 'PackageResources' has no member 'serviceName'
68 | try Data(contentsOf: PackageResources.serviceFileSource).write(to: PackageResources.serviceFileDest, options: [.atomic])
69 |
70 | print("> Starting \(PackageResources.serviceName) and enabling it on boot.".color(.magenta))
| `- error: type 'PackageResources' has no member 'serviceName'
71 | #if os(macOS)
72 | try shellOut(to: [
/host/spi-builder-workspace/Sources/Commands/ServiceInstall.swift:84:69: error: type 'PackageResources' has no member 'defaultConfigURL'
82 | #endif
83 |
84 | if !FileManager.default.fileExists(atPath: PackageResources.defaultConfigURL.path) {
| `- error: type 'PackageResources' has no member 'defaultConfigURL'
85 | print("> Creating sample configuration file at \(PackageResources.defaultConfigURL.path)...".color(.magenta))
86 | try FileManager.default.createDirectory(at: PackageResources.defaultConfigURL.deletingLastPathComponent(), withIntermediateDirectories: true)
/host/spi-builder-workspace/Sources/Commands/ServiceInstall.swift:85:79: error: type 'PackageResources' has no member 'defaultConfigURL'
83 |
84 | if !FileManager.default.fileExists(atPath: PackageResources.defaultConfigURL.path) {
85 | print("> Creating sample configuration file at \(PackageResources.defaultConfigURL.path)...".color(.magenta))
| `- error: type 'PackageResources' has no member 'defaultConfigURL'
86 | try FileManager.default.createDirectory(at: PackageResources.defaultConfigURL.deletingLastPathComponent(), withIntermediateDirectories: true)
87 | try FileManager.default.copyItem(at: PackageResources.sampleConfigSource, to: PackageResources.defaultConfigURL)
/host/spi-builder-workspace/Sources/Commands/ServiceInstall.swift:86:74: error: type 'PackageResources' has no member 'defaultConfigURL'
84 | if !FileManager.default.fileExists(atPath: PackageResources.defaultConfigURL.path) {
85 | print("> Creating sample configuration file at \(PackageResources.defaultConfigURL.path)...".color(.magenta))
86 | try FileManager.default.createDirectory(at: PackageResources.defaultConfigURL.deletingLastPathComponent(), withIntermediateDirectories: true)
| `- error: type 'PackageResources' has no member 'defaultConfigURL'
87 | try FileManager.default.copyItem(at: PackageResources.sampleConfigSource, to: PackageResources.defaultConfigURL)
88 | }
/host/spi-builder-workspace/Sources/Commands/ServiceInstall.swift:87:108: error: type 'PackageResources' has no member 'defaultConfigURL'
85 | print("> Creating sample configuration file at \(PackageResources.defaultConfigURL.path)...".color(.magenta))
86 | try FileManager.default.createDirectory(at: PackageResources.defaultConfigURL.deletingLastPathComponent(), withIntermediateDirectories: true)
87 | try FileManager.default.copyItem(at: PackageResources.sampleConfigSource, to: PackageResources.defaultConfigURL)
| `- error: type 'PackageResources' has no member 'defaultConfigURL'
88 | }
89 |
/host/spi-builder-workspace/Sources/Commands/ServiceUninstall.swift:66:54: error: type 'PackageResources' has no member 'serviceFileDest'
64 |
65 | print("> Cleaning any configuration files...".color(.magenta))
66 | _ = try? shellOut(to: "rm \(PackageResources.serviceFileDest.path)")
| `- error: type 'PackageResources' has no member 'serviceFileDest'
67 |
68 | print("\n✔ The WatchDuck system service is now uninstalled.".color(.green, bold: true))
[159/187] Compiling watchduck ServiceUninstall.swift
/host/spi-builder-workspace/Sources/Commands/Run.swift:29:46: error: type 'PackageResources' has no member 'defaultConfigURL'
27 | help: "The configuration JSON file path.",
28 | transform: URL.init(fileURLWithPath:))
29 | private var configURL = PackageResources.defaultConfigURL
| `- error: type 'PackageResources' has no member 'defaultConfigURL'
30 |
31 | @Flag(
/host/spi-builder-workspace/Sources/Commands/Run.swift:22:8: error: type 'Run' does not conform to protocol 'Decodable'
20 | import Foundation
21 |
22 | struct Run: AsyncParsableCommand {
| `- error: type 'Run' does not conform to protocol 'Decodable'
23 | static let configuration = CommandConfiguration(abstract: "Runs checks to update logs and the static webpage.")
24 |
:
27 | help: "The configuration JSON file path.",
28 | transform: URL.init(fileURLWithPath:))
29 | private var configURL = PackageResources.defaultConfigURL
| `- note: cannot automatically synthesize 'Decodable' because '<<error type>>' does not conform to 'Decodable'
30 |
31 | @Flag(
Swift.Decodable.init:2:1: note: protocol requires initializer 'init(from:)' with type 'Decodable'
1 | protocol Decodable {
2 | init(from decoder: any Decoder) throws}
| `- note: protocol requires initializer 'init(from:)' with type 'Decodable'
3 |
/host/spi-builder-workspace/Sources/Commands/Run.swift:44:24: error: cannot find 'SIG_IGN' in scope
42 |
43 | // TODO: Make signal handling more elegant while keeping it secure if possible.
44 | signal(SIGINT, SIG_IGN)
| `- error: cannot find 'SIG_IGN' in scope
45 |
46 | let sigintSource = DispatchSource.makeSignalSource(signal: SIGINT, queue: DispatchQueue.main)
/host/spi-builder-workspace/Sources/Data/PackageResources.swift:112:68: error: cannot find 'defaultConfigURL' in scope
110 |
111 | \("!!! Please check the following before proceeding !!!".color(.red, bold: true))
112 | > WatchDuck will always use the configuration at \(defaultConfigURL.path) in system service mode.
| `- error: cannot find 'defaultConfigURL' in scope
113 | A sample configuration will be created there if it does not exist. To learn more about how to edit the configuration, see \(docsURL).
114 | """
/host/spi-builder-workspace/Sources/Commands/ServiceInstall.swift:39:32: error: type 'PackageResources' has no member 'serviceInstallExtraInstructions'
37 | print(PackageResources.asciiDuck)
38 | print(PackageResources.serviceInstallBanner)
39 | print(PackageResources.serviceInstallExtraInstructions)
| `- error: type 'PackageResources' has no member 'serviceInstallExtraInstructions'
40 |
41 | if !acceptDefault {
/host/spi-builder-workspace/Sources/Commands/ServiceInstall.swift:64:54: error: type 'PackageResources' has no member 'serviceFileDest'
62 | ])
63 | #endif
64 | _ = try? shellOut(to: "rm \(PackageResources.serviceFileDest.path)")
| `- error: type 'PackageResources' has no member 'serviceFileDest'
65 |
66 | print("> Copying system service configuration file...".color(.magenta))
/host/spi-builder-workspace/Sources/Commands/ServiceInstall.swift:67:70: error: type 'PackageResources' has no member 'serviceFileDest'
65 |
66 | print("> Copying system service configuration file...".color(.magenta))
67 | try FileManager.default.createDirectory(at: PackageResources.serviceFileDest.deletingLastPathComponent(), withIntermediateDirectories: true)
| `- error: type 'PackageResources' has no member 'serviceFileDest'
68 | try Data(contentsOf: PackageResources.serviceFileSource).write(to: PackageResources.serviceFileDest, options: [.atomic])
69 |
/host/spi-builder-workspace/Sources/Commands/ServiceInstall.swift:68:47: error: type 'PackageResources' has no member 'serviceFileSource'
66 | print("> Copying system service configuration file...".color(.magenta))
67 | try FileManager.default.createDirectory(at: PackageResources.serviceFileDest.deletingLastPathComponent(), withIntermediateDirectories: true)
68 | try Data(contentsOf: PackageResources.serviceFileSource).write(to: PackageResources.serviceFileDest, options: [.atomic])
| `- error: type 'PackageResources' has no member 'serviceFileSource'
69 |
70 | print("> Starting \(PackageResources.serviceName) and enabling it on boot.".color(.magenta))
/host/spi-builder-workspace/Sources/Commands/ServiceInstall.swift:68:93: error: type 'PackageResources' has no member 'serviceFileDest'
66 | print("> Copying system service configuration file...".color(.magenta))
67 | try FileManager.default.createDirectory(at: PackageResources.serviceFileDest.deletingLastPathComponent(), withIntermediateDirectories: true)
68 | try Data(contentsOf: PackageResources.serviceFileSource).write(to: PackageResources.serviceFileDest, options: [.atomic])
| `- error: type 'PackageResources' has no member 'serviceFileDest'
69 |
70 | print("> Starting \(PackageResources.serviceName) and enabling it on boot.".color(.magenta))
/host/spi-builder-workspace/Sources/Commands/ServiceInstall.swift:70:46: error: type 'PackageResources' has no member 'serviceName'
68 | try Data(contentsOf: PackageResources.serviceFileSource).write(to: PackageResources.serviceFileDest, options: [.atomic])
69 |
70 | print("> Starting \(PackageResources.serviceName) and enabling it on boot.".color(.magenta))
| `- error: type 'PackageResources' has no member 'serviceName'
71 | #if os(macOS)
72 | try shellOut(to: [
/host/spi-builder-workspace/Sources/Commands/ServiceInstall.swift:84:69: error: type 'PackageResources' has no member 'defaultConfigURL'
82 | #endif
83 |
84 | if !FileManager.default.fileExists(atPath: PackageResources.defaultConfigURL.path) {
| `- error: type 'PackageResources' has no member 'defaultConfigURL'
85 | print("> Creating sample configuration file at \(PackageResources.defaultConfigURL.path)...".color(.magenta))
86 | try FileManager.default.createDirectory(at: PackageResources.defaultConfigURL.deletingLastPathComponent(), withIntermediateDirectories: true)
/host/spi-builder-workspace/Sources/Commands/ServiceInstall.swift:85:79: error: type 'PackageResources' has no member 'defaultConfigURL'
83 |
84 | if !FileManager.default.fileExists(atPath: PackageResources.defaultConfigURL.path) {
85 | print("> Creating sample configuration file at \(PackageResources.defaultConfigURL.path)...".color(.magenta))
| `- error: type 'PackageResources' has no member 'defaultConfigURL'
86 | try FileManager.default.createDirectory(at: PackageResources.defaultConfigURL.deletingLastPathComponent(), withIntermediateDirectories: true)
87 | try FileManager.default.copyItem(at: PackageResources.sampleConfigSource, to: PackageResources.defaultConfigURL)
/host/spi-builder-workspace/Sources/Commands/ServiceInstall.swift:86:74: error: type 'PackageResources' has no member 'defaultConfigURL'
84 | if !FileManager.default.fileExists(atPath: PackageResources.defaultConfigURL.path) {
85 | print("> Creating sample configuration file at \(PackageResources.defaultConfigURL.path)...".color(.magenta))
86 | try FileManager.default.createDirectory(at: PackageResources.defaultConfigURL.deletingLastPathComponent(), withIntermediateDirectories: true)
| `- error: type 'PackageResources' has no member 'defaultConfigURL'
87 | try FileManager.default.copyItem(at: PackageResources.sampleConfigSource, to: PackageResources.defaultConfigURL)
88 | }
/host/spi-builder-workspace/Sources/Commands/ServiceInstall.swift:87:108: error: type 'PackageResources' has no member 'defaultConfigURL'
85 | print("> Creating sample configuration file at \(PackageResources.defaultConfigURL.path)...".color(.magenta))
86 | try FileManager.default.createDirectory(at: PackageResources.defaultConfigURL.deletingLastPathComponent(), withIntermediateDirectories: true)
87 | try FileManager.default.copyItem(at: PackageResources.sampleConfigSource, to: PackageResources.defaultConfigURL)
| `- error: type 'PackageResources' has no member 'defaultConfigURL'
88 | }
89 |
/host/spi-builder-workspace/Sources/Commands/ServiceUninstall.swift:66:54: error: type 'PackageResources' has no member 'serviceFileDest'
64 |
65 | print("> Cleaning any configuration files...".color(.magenta))
66 | _ = try? shellOut(to: "rm \(PackageResources.serviceFileDest.path)")
| `- error: type 'PackageResources' has no member 'serviceFileDest'
67 |
68 | print("\n✔ The WatchDuck system service is now uninstalled.".color(.green, bold: true))
[160/187] Compiling watchduck WatchDuck.swift
/host/spi-builder-workspace/Sources/Commands/Run.swift:29:46: error: type 'PackageResources' has no member 'defaultConfigURL'
27 | help: "The configuration JSON file path.",
28 | transform: URL.init(fileURLWithPath:))
29 | private var configURL = PackageResources.defaultConfigURL
| `- error: type 'PackageResources' has no member 'defaultConfigURL'
30 |
31 | @Flag(
/host/spi-builder-workspace/Sources/Commands/Run.swift:22:8: error: type 'Run' does not conform to protocol 'Decodable'
20 | import Foundation
21 |
22 | struct Run: AsyncParsableCommand {
| `- error: type 'Run' does not conform to protocol 'Decodable'
23 | static let configuration = CommandConfiguration(abstract: "Runs checks to update logs and the static webpage.")
24 |
:
27 | help: "The configuration JSON file path.",
28 | transform: URL.init(fileURLWithPath:))
29 | private var configURL = PackageResources.defaultConfigURL
| `- note: cannot automatically synthesize 'Decodable' because '<<error type>>' does not conform to 'Decodable'
30 |
31 | @Flag(
Swift.Decodable.init:2:1: note: protocol requires initializer 'init(from:)' with type 'Decodable'
1 | protocol Decodable {
2 | init(from decoder: any Decoder) throws}
| `- note: protocol requires initializer 'init(from:)' with type 'Decodable'
3 |
/host/spi-builder-workspace/Sources/Commands/Run.swift:44:24: error: cannot find 'SIG_IGN' in scope
42 |
43 | // TODO: Make signal handling more elegant while keeping it secure if possible.
44 | signal(SIGINT, SIG_IGN)
| `- error: cannot find 'SIG_IGN' in scope
45 |
46 | let sigintSource = DispatchSource.makeSignalSource(signal: SIGINT, queue: DispatchQueue.main)
/host/spi-builder-workspace/Sources/Data/PackageResources.swift:112:68: error: cannot find 'defaultConfigURL' in scope
110 |
111 | \("!!! Please check the following before proceeding !!!".color(.red, bold: true))
112 | > WatchDuck will always use the configuration at \(defaultConfigURL.path) in system service mode.
| `- error: cannot find 'defaultConfigURL' in scope
113 | A sample configuration will be created there if it does not exist. To learn more about how to edit the configuration, see \(docsURL).
114 | """
/host/spi-builder-workspace/Sources/Commands/ServiceInstall.swift:39:32: error: type 'PackageResources' has no member 'serviceInstallExtraInstructions'
37 | print(PackageResources.asciiDuck)
38 | print(PackageResources.serviceInstallBanner)
39 | print(PackageResources.serviceInstallExtraInstructions)
| `- error: type 'PackageResources' has no member 'serviceInstallExtraInstructions'
40 |
41 | if !acceptDefault {
/host/spi-builder-workspace/Sources/Commands/ServiceInstall.swift:64:54: error: type 'PackageResources' has no member 'serviceFileDest'
62 | ])
63 | #endif
64 | _ = try? shellOut(to: "rm \(PackageResources.serviceFileDest.path)")
| `- error: type 'PackageResources' has no member 'serviceFileDest'
65 |
66 | print("> Copying system service configuration file...".color(.magenta))
/host/spi-builder-workspace/Sources/Commands/ServiceInstall.swift:67:70: error: type 'PackageResources' has no member 'serviceFileDest'
65 |
66 | print("> Copying system service configuration file...".color(.magenta))
67 | try FileManager.default.createDirectory(at: PackageResources.serviceFileDest.deletingLastPathComponent(), withIntermediateDirectories: true)
| `- error: type 'PackageResources' has no member 'serviceFileDest'
68 | try Data(contentsOf: PackageResources.serviceFileSource).write(to: PackageResources.serviceFileDest, options: [.atomic])
69 |
/host/spi-builder-workspace/Sources/Commands/ServiceInstall.swift:68:47: error: type 'PackageResources' has no member 'serviceFileSource'
66 | print("> Copying system service configuration file...".color(.magenta))
67 | try FileManager.default.createDirectory(at: PackageResources.serviceFileDest.deletingLastPathComponent(), withIntermediateDirectories: true)
68 | try Data(contentsOf: PackageResources.serviceFileSource).write(to: PackageResources.serviceFileDest, options: [.atomic])
| `- error: type 'PackageResources' has no member 'serviceFileSource'
69 |
70 | print("> Starting \(PackageResources.serviceName) and enabling it on boot.".color(.magenta))
/host/spi-builder-workspace/Sources/Commands/ServiceInstall.swift:68:93: error: type 'PackageResources' has no member 'serviceFileDest'
66 | print("> Copying system service configuration file...".color(.magenta))
67 | try FileManager.default.createDirectory(at: PackageResources.serviceFileDest.deletingLastPathComponent(), withIntermediateDirectories: true)
68 | try Data(contentsOf: PackageResources.serviceFileSource).write(to: PackageResources.serviceFileDest, options: [.atomic])
| `- error: type 'PackageResources' has no member 'serviceFileDest'
69 |
70 | print("> Starting \(PackageResources.serviceName) and enabling it on boot.".color(.magenta))
/host/spi-builder-workspace/Sources/Commands/ServiceInstall.swift:70:46: error: type 'PackageResources' has no member 'serviceName'
68 | try Data(contentsOf: PackageResources.serviceFileSource).write(to: PackageResources.serviceFileDest, options: [.atomic])
69 |
70 | print("> Starting \(PackageResources.serviceName) and enabling it on boot.".color(.magenta))
| `- error: type 'PackageResources' has no member 'serviceName'
71 | #if os(macOS)
72 | try shellOut(to: [
/host/spi-builder-workspace/Sources/Commands/ServiceInstall.swift:84:69: error: type 'PackageResources' has no member 'defaultConfigURL'
82 | #endif
83 |
84 | if !FileManager.default.fileExists(atPath: PackageResources.defaultConfigURL.path) {
| `- error: type 'PackageResources' has no member 'defaultConfigURL'
85 | print("> Creating sample configuration file at \(PackageResources.defaultConfigURL.path)...".color(.magenta))
86 | try FileManager.default.createDirectory(at: PackageResources.defaultConfigURL.deletingLastPathComponent(), withIntermediateDirectories: true)
/host/spi-builder-workspace/Sources/Commands/ServiceInstall.swift:85:79: error: type 'PackageResources' has no member 'defaultConfigURL'
83 |
84 | if !FileManager.default.fileExists(atPath: PackageResources.defaultConfigURL.path) {
85 | print("> Creating sample configuration file at \(PackageResources.defaultConfigURL.path)...".color(.magenta))
| `- error: type 'PackageResources' has no member 'defaultConfigURL'
86 | try FileManager.default.createDirectory(at: PackageResources.defaultConfigURL.deletingLastPathComponent(), withIntermediateDirectories: true)
87 | try FileManager.default.copyItem(at: PackageResources.sampleConfigSource, to: PackageResources.defaultConfigURL)
/host/spi-builder-workspace/Sources/Commands/ServiceInstall.swift:86:74: error: type 'PackageResources' has no member 'defaultConfigURL'
84 | if !FileManager.default.fileExists(atPath: PackageResources.defaultConfigURL.path) {
85 | print("> Creating sample configuration file at \(PackageResources.defaultConfigURL.path)...".color(.magenta))
86 | try FileManager.default.createDirectory(at: PackageResources.defaultConfigURL.deletingLastPathComponent(), withIntermediateDirectories: true)
| `- error: type 'PackageResources' has no member 'defaultConfigURL'
87 | try FileManager.default.copyItem(at: PackageResources.sampleConfigSource, to: PackageResources.defaultConfigURL)
88 | }
/host/spi-builder-workspace/Sources/Commands/ServiceInstall.swift:87:108: error: type 'PackageResources' has no member 'defaultConfigURL'
85 | print("> Creating sample configuration file at \(PackageResources.defaultConfigURL.path)...".color(.magenta))
86 | try FileManager.default.createDirectory(at: PackageResources.defaultConfigURL.deletingLastPathComponent(), withIntermediateDirectories: true)
87 | try FileManager.default.copyItem(at: PackageResources.sampleConfigSource, to: PackageResources.defaultConfigURL)
| `- error: type 'PackageResources' has no member 'defaultConfigURL'
88 | }
89 |
/host/spi-builder-workspace/Sources/Commands/ServiceUninstall.swift:66:54: error: type 'PackageResources' has no member 'serviceFileDest'
64 |
65 | print("> Cleaning any configuration files...".color(.magenta))
66 | _ = try? shellOut(to: "rm \(PackageResources.serviceFileDest.path)")
| `- error: type 'PackageResources' has no member 'serviceFileDest'
67 |
68 | print("\n✔ The WatchDuck system service is now uninstalled.".color(.green, bold: true))
error: emit-module command failed with exit code 1 (use -v to see invocation)
[161/187] Emitting module watchduck
/host/spi-builder-workspace/Sources/Commands/Run.swift:29:46: error: type 'PackageResources' has no member 'defaultConfigURL'
27 | help: "The configuration JSON file path.",
28 | transform: URL.init(fileURLWithPath:))
29 | private var configURL = PackageResources.defaultConfigURL
| `- error: type 'PackageResources' has no member 'defaultConfigURL'
30 |
31 | @Flag(
/host/spi-builder-workspace/Sources/Commands/Run.swift:22:8: error: type 'Run' does not conform to protocol 'Decodable'
20 | import Foundation
21 |
22 | struct Run: AsyncParsableCommand {
| `- error: type 'Run' does not conform to protocol 'Decodable'
23 | static let configuration = CommandConfiguration(abstract: "Runs checks to update logs and the static webpage.")
24 |
:
27 | help: "The configuration JSON file path.",
28 | transform: URL.init(fileURLWithPath:))
29 | private var configURL = PackageResources.defaultConfigURL
| `- note: cannot automatically synthesize 'Decodable' because '<<error type>>' does not conform to 'Decodable'
30 |
31 | @Flag(
Swift.Decodable.init:2:1: note: protocol requires initializer 'init(from:)' with type 'Decodable'
1 | protocol Decodable {
2 | init(from decoder: any Decoder) throws}
| `- note: protocol requires initializer 'init(from:)' with type 'Decodable'
3 |
/host/spi-builder-workspace/Sources/Data/PackageResources.swift:112:68: error: cannot find 'defaultConfigURL' in scope
110 |
111 | \("!!! Please check the following before proceeding !!!".color(.red, bold: true))
112 | > WatchDuck will always use the configuration at \(defaultConfigURL.path) in system service mode.
| `- error: cannot find 'defaultConfigURL' in scope
113 | A sample configuration will be created there if it does not exist. To learn more about how to edit the configuration, see \(docsURL).
114 | """
[162/187] Compiling watchduck Task+SleepTimeInterval.swift
[163/187] Compiling watchduck URL+CurrentDirectory.swift
[164/187] Compiling watchduck URL+StaticString.swift
[165/187] Compiling watchduck URLRequest+PreferredTextEncoding.swift
[166/187] Compiling watchduck URLSession+RetryingData.swift
/host/spi-builder-workspace/Sources/Helpers/OSUtils.swift:25:63: error: type 'PackageResources' has no member 'kernelName'
23 | enum OSUtils {
24 | static func kernelCheck() throws {
25 | guard (try shellOut(to: "uname")) == PackageResources.kernelName else {
| `- error: type 'PackageResources' has no member 'kernelName'
26 | print("Error: Kernel-binary mismatch! Please stop using WatchDuck and re-install the correct binary for your operating system!".color(.red))
27 | throw ExitCode(EXIT_FAILURE)
[167/187] Compiling watchduck HTTPMethod.swift
/host/spi-builder-workspace/Sources/Helpers/OSUtils.swift:25:63: error: type 'PackageResources' has no member 'kernelName'
23 | enum OSUtils {
24 | static func kernelCheck() throws {
25 | guard (try shellOut(to: "uname")) == PackageResources.kernelName else {
| `- error: type 'PackageResources' has no member 'kernelName'
26 | print("Error: Kernel-binary mismatch! Please stop using WatchDuck and re-install the correct binary for your operating system!".color(.red))
27 | throw ExitCode(EXIT_FAILURE)
[168/187] Compiling watchduck OSUtils.swift
/host/spi-builder-workspace/Sources/Helpers/OSUtils.swift:25:63: error: type 'PackageResources' has no member 'kernelName'
23 | enum OSUtils {
24 | static func kernelCheck() throws {
25 | guard (try shellOut(to: "uname")) == PackageResources.kernelName else {
| `- error: type 'PackageResources' has no member 'kernelName'
26 | print("Error: Kernel-binary mismatch! Please stop using WatchDuck and re-install the correct binary for your operating system!".color(.red))
27 | throw ExitCode(EXIT_FAILURE)
[169/187] Compiling watchduck resource_bundle_accessor.swift
/host/spi-builder-workspace/Sources/Helpers/OSUtils.swift:25:63: error: type 'PackageResources' has no member 'kernelName'
23 | enum OSUtils {
24 | static func kernelCheck() throws {
25 | guard (try shellOut(to: "uname")) == PackageResources.kernelName else {
| `- error: type 'PackageResources' has no member 'kernelName'
26 | print("Error: Kernel-binary mismatch! Please stop using WatchDuck and re-install the correct binary for your operating system!".color(.red))
27 | throw ExitCode(EXIT_FAILURE)
[170/187] Compiling watchduck WDPageHeader.swift
[171/187] Compiling watchduck WDPageListSubtext.swift
[172/187] Compiling watchduck WDPageStatusList.swift
[173/187] Compiling watchduck ANSIColors.swift
[174/187] Compiling watchduck CLISpinner.swift
[175/187] Compiling watchduck KeyedDecodingContainer+AssignIfPresent.swift
[176/187] Compiling watchduck Sequence+Uniqued.swift
[177/187] Compiling watchduck String+CFString.swift
[178/187] Compiling watchduck String+Color+Bold.swift
[179/187] Compiling watchduck String.Encoding+IANACharset.swift
[180/187] Compiling watchduck WDOutage.swift
[181/187] Compiling watchduck WDStatus.swift
[182/187] Compiling watchduck FileComponents.swift
[183/187] Compiling watchduck WDHTML.swift
[184/187] Compiling watchduck WDPageFooter.swift
BUILD FAILURE 6.1 android