From 89f7581b9e4c739a3d4a95559981112cd469ac11 Mon Sep 17 00:00:00 2001 From: Sam <30577766+Samasaur1@users.noreply.github.com> Date: Sat, 8 Nov 2025 20:16:29 -0700 Subject: [PATCH 1/2] swiftPackages.swift: ignore unguarded-availability error I couldn't figure out how to get CMake to set the correct target, as it insisted on using OS X 10.9 no matter what I set. --- pkgs/development/compilers/swift/compiler/default.nix | 3 +++ 1 file changed, 3 insertions(+) diff --git a/pkgs/development/compilers/swift/compiler/default.nix b/pkgs/development/compilers/swift/compiler/default.nix index c71a22589d9f..5bb32d8496cd 100644 --- a/pkgs/development/compilers/swift/compiler/default.nix +++ b/pkgs/development/compilers/swift/compiler/default.nix @@ -523,8 +523,10 @@ stdenv.mkDerivation { # Add appleSwiftCore to the search paths. Adding the whole SDK results in build failures. OLD_NIX_SWIFTFLAGS_COMPILE="$NIX_SWIFTFLAGS_COMPILE" OLD_NIX_LDFLAGS="$NIX_LDFLAGS" + OLD_NIX_CFLAGS_COMPILE="$NIX_CFLAGS_COMPILE" export NIX_SWIFTFLAGS_COMPILE=" -I ${appleSwiftCore}/lib/swift" export NIX_LDFLAGS+=" -L ${appleSwiftCore}/lib/swift" + export NIX_CFLAGS_COMPILE+=" -Wno-error=unguarded-availability" '' + '' @@ -568,6 +570,7 @@ stdenv.mkDerivation { # Restore search paths to remove appleSwiftCore. export NIX_SWIFTFLAGS_COMPILE="$OLD_NIX_SWIFTFLAGS_COMPILE" export NIX_LDFLAGS="$OLD_NIX_LDFLAGS" + export NIX_CFLAGS_COMPILE="$OLD_NIX_CFLAGS_COMPILE" '' + '' From 5b123afb9a54ab3514c113d2a8164a0f9fb245e2 Mon Sep 17 00:00:00 2001 From: Sam <30577766+Samasaur1@users.noreply.github.com> Date: Sat, 8 Nov 2025 20:16:29 -0700 Subject: [PATCH 2/2] swiftPackages.swift: prefix unguarded-availability flag with -Xcc The Swift wrapper uses a hook directly from cc-wrapper to set the `-target` flag appropriately. This works because Clang and Swift use the same syntax for `-target`, but there was never a guarantee that this compatibility would be true for every option set in the hook. Indeed, commit 369cc5c66b1efdbca2f136aa0055fedca1117304 (PR #445119) made availability warnings into errors by setting the `-Werror=unguarded-availability` flag in this hook, which Swift doesn't accept at the top level. This caused all invocations of Swift to fail with the error `unknown argument: '-Werror=unguarded-availability'` - including the bootstrap Swift, which meant that `swiftPackages.swift` would fail. This commit adds all `-Werror` flags to the list of flags that need to be prefixed with `-Xcc`. I could have just dropped the flag, since Swift already makes this an error, but you can have C/C++ targets in Swift packages and we'd want to pass this flag on to them. (I'm not sure whether the clang used for those targets is already wrapped, but if it is there is no harm done.) --- pkgs/development/compilers/swift/wrapper/wrapper.sh | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/pkgs/development/compilers/swift/wrapper/wrapper.sh b/pkgs/development/compilers/swift/wrapper/wrapper.sh index 21fba5395123..2017f580cef2 100644 --- a/pkgs/development/compilers/swift/wrapper/wrapper.sh +++ b/pkgs/development/compilers/swift/wrapper/wrapper.sh @@ -248,6 +248,9 @@ fi # TODO: If we ever need to expand functionality of this hook, it may no longer # be compatible with Swift. Right now, it is only used on Darwin to force # -target, which also happens to work with Swift. +# As of 369cc5c66b1efdbca2f136aa0055fedca1117304 (#445119), this hook also sets +# the -Werror=unguarded-availability flag, which Swift can't accept. We prefix +# that flag with -Xcc in the for loop below if [[ -e $cc_wrapper/nix-support/add-local-cc-cflags-before.sh ]]; then source $cc_wrapper/nix-support/add-local-cc-cflags-before.sh fi @@ -262,7 +265,7 @@ for ((i=0; i < ${#extraBefore[@]}; i++));do # TODO: Assumes macOS. extraBefore[i]="${extraBefore[i]/-apple-darwin/-apple-macosx${MACOSX_DEPLOYMENT_TARGET:-11.0}}" ;; - -march=*|-mcpu=*|-mfloat-abi=*|-mfpu=*|-mmode=*|-mthumb|-marm|-mtune=*) + -march=*|-mcpu=*|-mfloat-abi=*|-mfpu=*|-mmode=*|-mthumb|-marm|-mtune=*|-Werror=*) [[ i -gt 0 && ${extraBefore[i-1]} == -Xcc ]] && continue extraBefore=( "${extraBefore[@]:0:i}"