From bfe15006a71f73d2d8249755edbb360aba52fd9c Mon Sep 17 00:00:00 2001 From: "Philip K. Warren" Date: Mon, 18 May 2026 09:29:49 -0500 Subject: [PATCH] Update to swift v1.38.0 --- plugins/apple/swift/v1.38.0/.dockerignore | 3 + plugins/apple/swift/v1.38.0/Dockerfile | 19 ++++++ plugins/apple/swift/v1.38.0/buf.plugin.yaml | 21 +++++++ .../swift/v1.38.0/extramoduleimports.patch | 63 +++++++++++++++++++ .../apple/swift/v1.38.0/eliza/plugin.sum | 1 + .../apple/swift/v1.38.0/petapis/plugin.sum | 1 + 6 files changed, 108 insertions(+) create mode 100644 plugins/apple/swift/v1.38.0/.dockerignore create mode 100644 plugins/apple/swift/v1.38.0/Dockerfile create mode 100644 plugins/apple/swift/v1.38.0/buf.plugin.yaml create mode 100644 plugins/apple/swift/v1.38.0/extramoduleimports.patch create mode 100644 tests/testdata/buf.build/apple/swift/v1.38.0/eliza/plugin.sum create mode 100644 tests/testdata/buf.build/apple/swift/v1.38.0/petapis/plugin.sum diff --git a/plugins/apple/swift/v1.38.0/.dockerignore b/plugins/apple/swift/v1.38.0/.dockerignore new file mode 100644 index 000000000..ff0a69ef1 --- /dev/null +++ b/plugins/apple/swift/v1.38.0/.dockerignore @@ -0,0 +1,3 @@ +* +!Dockerfile +!extramoduleimports.patch diff --git a/plugins/apple/swift/v1.38.0/Dockerfile b/plugins/apple/swift/v1.38.0/Dockerfile new file mode 100644 index 000000000..5e92273a3 --- /dev/null +++ b/plugins/apple/swift/v1.38.0/Dockerfile @@ -0,0 +1,19 @@ +# syntax=docker/dockerfile:1.23 +FROM swift:6.3.2-bookworm@sha256:40918972df286d15aa47f4686c98a211f0a6152ca1d48b3dbccd6f56a3c34815 AS build + +RUN apt-get update \ + && apt-get install -y libstdc++-12-dev unzip +COPY --link extramoduleimports.patch /app/extramoduleimports.patch +WORKDIR /app +RUN git clone --depth 1 --branch 1.38.0 https://github.com/apple/swift-protobuf --recursive +WORKDIR /app/swift-protobuf +RUN git apply /app/extramoduleimports.patch +RUN swift build -c release --static-swift-stdlib -Xlinker -s + +FROM gcr.io/distroless/cc-debian13:latest@sha256:56aaf20ab2523a346a67c8e8f8e8dabe447447d0788b82284d14ad79cd5f93cc AS base + +FROM scratch +COPY --link --from=base / / +COPY --link --from=build /app/swift-protobuf/.build/release/protoc-gen-swift . +USER nobody +ENTRYPOINT [ "/protoc-gen-swift" ] diff --git a/plugins/apple/swift/v1.38.0/buf.plugin.yaml b/plugins/apple/swift/v1.38.0/buf.plugin.yaml new file mode 100644 index 000000000..d6c837619 --- /dev/null +++ b/plugins/apple/swift/v1.38.0/buf.plugin.yaml @@ -0,0 +1,21 @@ +version: v1 +name: buf.build/apple/swift +plugin_version: v1.38.0 +source_url: https://github.com/apple/swift-protobuf +integration_guide_url: https://github.com/apple/swift-protobuf#getting-started +description: Base types for Swift. Generates message and enum types. +output_languages: + - swift +registry: + swift: + deps: + - source: https://github.com/apple/swift-protobuf.git + package: swift-protobuf + swift_versions: [ ".v6" ] + products: [ SwiftProtobuf ] + version: 1.38.0 + opts: + - Visibility=Public + - FileNaming=PathToUnderscores +spdx_license_id: Apache-2.0 +license_url: https://github.com/apple/swift-protobuf/blob/1.38.0/LICENSE.txt diff --git a/plugins/apple/swift/v1.38.0/extramoduleimports.patch b/plugins/apple/swift/v1.38.0/extramoduleimports.patch new file mode 100644 index 000000000..e3b9e6c87 --- /dev/null +++ b/plugins/apple/swift/v1.38.0/extramoduleimports.patch @@ -0,0 +1,63 @@ +diff --git a/Sources/protoc-gen-swift/FileGenerator.swift b/Sources/protoc-gen-swift/FileGenerator.swift +index d370e25..cea7bd2 100644 +--- a/Sources/protoc-gen-swift/FileGenerator.swift ++++ b/Sources/protoc-gen-swift/FileGenerator.swift +@@ -161,6 +161,14 @@ class FileGenerator { + return + } + ++ let neededCustomImports = generatorOptions.extraModuleImports ++ if !neededCustomImports.isEmpty { ++ p.print() ++ for i in neededCustomImports { ++ p.print("import \(i)\n") ++ } ++ } ++ + p.print() + generateVersionCheck(printer: &p) + +diff --git a/Sources/protoc-gen-swift/GeneratorOptions.swift b/Sources/protoc-gen-swift/GeneratorOptions.swift +index 159e621..a8f631e 100644 +--- a/Sources/protoc-gen-swift/GeneratorOptions.swift ++++ b/Sources/protoc-gen-swift/GeneratorOptions.swift +@@ -115,6 +115,7 @@ package class GeneratorOptions { + } + } + ++ let extraModuleImports: [String] + let outputNaming: OutputNaming + let enumGeneration: EnumGeneration + let protoToModuleMappings: ProtoFileToModuleMappings +@@ -146,6 +147,7 @@ package class GeneratorOptions { + } + + package init(parameter: any CodeGeneratorParameter) throws { ++ var externalModuleImports: [String] = [] + var outputNaming: OutputNaming = .fullPath + var enumGeneration: EnumGeneration = .none + var moduleMapPath: String? +@@ -238,6 +240,15 @@ package class GeneratorOptions { + value: pair.value + ) + } ++ case "ExtraModuleImports": ++ if !pair.value.isEmpty { ++ externalModuleImports.append(pair.value) ++ } else { ++ throw GenerationError.invalidParameterValue( ++ name: pair.key, ++ value: pair.value ++ ) ++ } + default: + throw GenerationError.unknownParameter(name: pair.key) + } +@@ -272,6 +283,7 @@ package class GeneratorOptions { + visibilitySourceSnippet = "package " + } + ++ self.extraModuleImports = externalModuleImports + self.experimentalStripNonfunctionalCodegen = experimentalStripNonfunctionalCodegen + self.experimentalHiddenNames = experimentalHiddenNames + diff --git a/tests/testdata/buf.build/apple/swift/v1.38.0/eliza/plugin.sum b/tests/testdata/buf.build/apple/swift/v1.38.0/eliza/plugin.sum new file mode 100644 index 000000000..f898bb9ce --- /dev/null +++ b/tests/testdata/buf.build/apple/swift/v1.38.0/eliza/plugin.sum @@ -0,0 +1 @@ +h1:qeyF/DAfv+fz8bCazdKuLL5Bjrrp1/xTp7aS3oCwqeI= diff --git a/tests/testdata/buf.build/apple/swift/v1.38.0/petapis/plugin.sum b/tests/testdata/buf.build/apple/swift/v1.38.0/petapis/plugin.sum new file mode 100644 index 000000000..0142ace4d --- /dev/null +++ b/tests/testdata/buf.build/apple/swift/v1.38.0/petapis/plugin.sum @@ -0,0 +1 @@ +h1:3NaCKHGNbSrmK831WmWSaoWMEVq5dt45Fok8MEgOcgU=