From e01a2075cb8aaa338688a9ed4fffb95afe7776de Mon Sep 17 00:00:00 2001 From: Fabian Boemer Date: Wed, 26 Mar 2025 09:41:59 +0200 Subject: [PATCH] Enable Windows CI --- .github/workflows/ci.yml | 16 ++++++++++++++-- Package.swift | 27 +++++++++++++++++---------- 2 files changed, 31 insertions(+), 12 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index afab2dbb..696ebb08 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -16,7 +16,6 @@ concurrency: env: SWIFTLINT_VERSION: 0.57.0 SWIFTFORMAT_VERSION: 0.54.6 - SWIFT_HOMOMORPHIC_ENCRYPTION_ENABLE_BENCHMARKING: 1 jobs: soundness: name: soundness @@ -29,7 +28,7 @@ jobs: name: swifttests uses: swiftlang/github-workflows/.github/workflows/swift_package_test.yml@main with: - enable_windows_checks: false + linux_env_vars: "SWIFT_HOMOMORPHIC_ENCRYPTION_ENABLE_BENCHMARKING=1" # TODO: remove 5.8 after https://github.com/swiftlang/github-workflows/pull/107 linux_exclude_swift_versions: "[{\"swift_version\": \"5.8\"}, {\"swift_version\": \"5.9\"}, {\"swift_version\": \"5.10\"}]" linux_pre_build_command: "apt-get update && apt-get install -y libjemalloc-dev" @@ -39,6 +38,19 @@ jobs: basename=$(basename "$filename" .swift) swift run --configuration release ${basename} done + # TODO: remove 5.8 after https://github.com/swiftlang/github-workflows/pull/107 + windows_exclude_swift_versions: "[{\"swift_version\": \"5.8\"}, {\"swift_version\": \"5.9\"}, {\"swift_version\": \"5.10\"}]" + # swift test --configuration release; + # $filenames = Get-ChildItem -Path Snippets\*.swift -Name -Recurse; + # $filenames = Get-ChildItem -Path Snippets\* -Include *.swift -Name -Recurse; + # ^-- didn't work + windows_build_command: > + $filenames = Get-ChildItem -Path .\Snippets\*.swift -Recurse -Name; + Write-Host "filenames: $filenames"; + foreach ($filename in $filenames) { + basename = $(basename "$filename" .swift) + swift run --configuration release ${basename} + } pre-commit: timeout-minutes: 1 runs-on: ubuntu-22.04 diff --git a/Package.swift b/Package.swift index 5f48772a..20b0e3fa 100644 --- a/Package.swift +++ b/Package.swift @@ -190,16 +190,6 @@ let package = Package( "HomomorphicEncryptionProtobuf", "_TestUtilities", ], swiftSettings: executableSettings), - .testTarget( - name: "PIRGenerateDatabaseTests", - dependencies: ["PIRGenerateDatabase", - "_TestUtilities", - .product(name: "Numerics", package: "swift-numerics")], swiftSettings: executableSettings), - .testTarget( - name: "PIRProcessDatabaseTests", - dependencies: ["PIRProcessDatabase", - "_TestUtilities", - .product(name: "Numerics", package: "swift-numerics")], swiftSettings: executableSettings), .testTarget( name: "PrivateInformationRetrievalTests", dependencies: [ @@ -226,6 +216,23 @@ let package = Package( ], swiftSettings: executableSettings), ]) +// Workaround SwiftPM's attempt to link in executables which does not work on all +// platforms. +#if !os(Windows) +package.targets.append(contentsOf: [ + .testTarget( + name: "PIRGenerateDatabaseTests", + dependencies: ["PIRGenerateDatabase", + "_TestUtilities", + .product(name: "Numerics", package: "swift-numerics")], swiftSettings: executableSettings), + .testTarget( + name: "PIRProcessDatabaseTests", + dependencies: ["PIRProcessDatabase", + "_TestUtilities", + .product(name: "Numerics", package: "swift-numerics")], swiftSettings: executableSettings), +]) +#endif + // MARK: - Benchmarks var enableBenchmarking: Bool {