diff --git a/Plugins/AWSLambdaPackager/Plugin.swift b/Plugins/AWSLambdaPackager/Plugin.swift index 48a4182d..28933333 100644 --- a/Plugins/AWSLambdaPackager/Plugin.swift +++ b/Plugins/AWSLambdaPackager/Plugin.swift @@ -339,7 +339,8 @@ struct AWSLambdaPackager: CommandPlugin { (default is latest) This parameter cannot be used when --base-docker-image is specified. --base-docker-image The name of the base docker image to use for the build. - (default : swift-:amazonlinux2) + (default: swift:-amazonlinux2023 for Swift >= 6.3, + swift:-amazonlinux2 for earlier versions) This parameter cannot be used when --swift-version is specified. --disable-docker-image-update Do not attempt to update the docker image --container-cli The container CLI to use (docker or container) @@ -484,8 +485,38 @@ private struct Configuration: CustomStringConvertible { } let swiftVersion = swiftVersionArgument.first ?? .none // undefined version will yield the latest docker image + + // Swift 6.3+ uses amazonlinux2023, earlier versions use amazonlinux2 + let amazonLinuxVersion: String + if let version = swiftVersion { + let components = version.split(separator: ".").compactMap { Int($0) } + if components.count >= 2 { + let major = components[0] + let minor = components[1] + amazonLinuxVersion = (major > 6 || (major == 6 && minor >= 3)) ? "amazonlinux2023" : "amazonlinux2" + } else if let major = components.first { + // treat "6" (no minor) as possibly 6.0, hence amazonlinux2 + amazonLinuxVersion = major > 6 ? "amazonlinux2023" : "amazonlinux2" + } else { + amazonLinuxVersion = "amazonlinux2023" + } + } else { + // no version specified means "latest", which is >= 6.3 + amazonLinuxVersion = "amazonlinux2023" + } + self.baseDockerImage = - baseDockerImageArgument.first ?? "swift:\(swiftVersion.map { $0 + "-" } ?? "")amazonlinux2" + baseDockerImageArgument.first ?? "swift:\(swiftVersion.map { $0 + "-" } ?? "")\(amazonLinuxVersion)" + + if verboseArgument { + if baseDockerImageArgument.isEmpty { + print( + "swift version: \(swiftVersion ?? "latest"), amazon linux version: \(amazonLinuxVersion), base docker image: \(self.baseDockerImage)" + ) + } else { + print("base docker image (user provided): \(self.baseDockerImage)") + } + } self.disableDockerImageUpdate = disableDockerImageUpdateArgument self.containerCLI = try ContainerCLI.parse(