!lheuhImcToQZYTQTuI:nixos.org

Nix on macOS

1175 Members
“There are still many issues with the Darwin platform but most of it is quite usable.” — http://yves.gnu-darwin.org192 Servers

Load older messages


SenderMessageTime
19 Jan 2026
@saiko:knifepoint.netKatalin 🔪 hold on 20:30:03
@saiko:knifepoint.netKatalin 🔪 swiftc -parse -emit-objc-header -emit-objc-header-path swift-export.h -parse-as-library -module-name Check -cxx-interoperability-mode=default - < /dev/null 20:31:59
@saiko:knifepoint.netKatalin 🔪 include swift-export.h in whatever C++ compiler 20:32:13
@reckenrode:matrix.orgRandy Eckenrode I’ve moved it into the package set for now, but I may want to find another place for it if we don’t want it available outside of swift.tests. 20:32:15
@saiko:knifepoint.netKatalin 🔪image.png
Download image.png
20:33:54
@saiko:knifepoint.netKatalin 🔪 here, with normal clang, I get something like this 20:33:55
@reckenrode:matrix.orgRandy Eckenrode
$ nix build -f . swiftPackages.cxx-interop-test -L
swift-cxx-interop-test> Running phase: unpackPhase
swift-cxx-interop-test> unpacking source archive /nix/store/m30j9w6nrkaddslrfwyhbkq28jcs2bqw-src
swift-cxx-interop-test> source root is src
swift-cxx-interop-test> Unpacking SwiftPM dependencies
swift-cxx-interop-test> Running phase: patchPhase
swift-cxx-interop-test> Running phase: updateAutotoolsGnuConfigScriptsPhase
swift-cxx-interop-test> Running phase: configurePhase
swift-cxx-interop-test> no configure script, doing nothing
swift-cxx-interop-test> Running phase: buildPhase
swift-cxx-interop-test> SwiftPM flags: -j 16 -c release -Xswiftc -module-cache-path -Xswiftc /nix/var/nix/builds/nix-build-swift-cxx-interop-test.drv-0/b/module-cache -Xswiftc -I -Xswiftc /nix/store/9gz91ivdymjlk4dhnfs2wri3h3z7y3vv-swift-testing-6.2.3-include/lib/swift/macosx/testing -Xswiftc -I -Xswiftc /nix/store/y3w9x0ywz7d6ya9d95i9i5apbwq6dwmf-swift-stdlib-6.2.3-dev/lib/swift/macosx -Xswiftc -I -Xswiftc /nix/store/9gz91ivdymjlk4dhnfs2wri3h3z7y3vv-swift-testing-6.2.3-include/lib/swift/macosx/testing -Xswiftc -I -Xswiftc /nix/store/y3w9x0ywz7d6ya9d95i9i5apbwq6dwmf-swift-stdlib-6.2.3-dev/lib/swift/macosx
swift-cxx-interop-test> warning: /var/empty/Library/org.swift.swiftpm/configuration is not accessible or not writable, disabling user-level cache features.
swift-cxx-interop-test> warning: /var/empty/Library/org.swift.swiftpm/security is not accessible or not writable, disabling user-level cache features.
swift-cxx-interop-test> warning: 'src': Warning: supplying the --target arm64-apple-macosx14.0 != arm64-apple-darwin argument to a nix-wrapped compiler may not work correctly - cc-wrapper is currently not designed with multi-target compilers in mind. You may want to use an un-wrapped compiler instead.
swift-cxx-interop-test> Building for production...
swift-cxx-interop-test> [0/4] Write sources
swift-cxx-interop-test> [1/4] Write swift-version-2FDF012AFD0A72F3.txt
swift-cxx-interop-test> [3/5] Compiling CxxInteropTest main.swift
swift-cxx-interop-test> [3/5] Write Objects.LinkFileList
swift-cxx-interop-test> Warning: supplying the --target arm64-apple-macosx10.13 != arm64-apple-darwin argument to a nix-wrapped compiler may not work correctly - cc-wrapper is currently not designed with multi-target compilers in mind. You may want to use an un-wrapped compiler instead.
swift-cxx-interop-test> clang: warning: overriding '-mmacos-version-min=14.0' option with '--target=arm64-apple-macosx10.13' [-Woverriding-option]
swift-cxx-interop-test> [4/5] Linking CxxInteropTest
swift-cxx-interop-test> Build complete! (2.32s)
swift-cxx-interop-test> Running phase: installPhase
swift-cxx-interop-test> warning: /var/empty/Library/org.swift.swiftpm/configuration is not accessible or not writable, disabling user-level cache features.
swift-cxx-interop-test> warning: /var/empty/Library/org.swift.swiftpm/security is not accessible or not writable, disabling user-level cache features.
swift-cxx-interop-test> warning: 'src': Warning: supplying the --target arm64-apple-macosx14.0 != arm64-apple-darwin argument to a nix-wrapped compiler may not work correctly - cc-wrapper is currently not designed with multi-target compilers in mind. You may want to use an un-wrapped compiler instead.
swift-cxx-interop-test> warning: /var/empty/Library/org.swift.swiftpm/configuration is not accessible or not writable, disabling user-level cache features.
swift-cxx-interop-test> warning: /var/empty/Library/org.swift.swiftpm/security is not accessible or not writable, disabling user-level cache features.
swift-cxx-interop-test> Running phase: fixupPhase
swift-cxx-interop-test> checking for references to /nix/var/nix/builds/nix-build-swift-cxx-interop-test.drv-0/b/ in /nix/store/jrw7fkjigg64ika9w5dxv2w1m3b4gms9-swift-cxx-interop-test...
swift-cxx-interop-test> patching script interpreter paths in /nix/store/jrw7fkjigg64ika9w5dxv2w1m3b4gms9-swift-cxx-interop-test
swift-cxx-interop-test> stripping (with command strip and flags -S) in  /nix/store/jrw7fkjigg64ika9w5dxv2w1m3b4gms9-swift-cxx-interop-test/bin
swift-cxx-interop-test> Running phase: installCheckPhase
swift-cxx-interop-test> Hello, world!
20:36:04
@reckenrode:matrix.orgRandy Eckenrode I did make one tweak to add a product to Package.swift. The new SwiftPM hook supports installing products automatically if they’re defined in Package.swift. 20:36:36
@samasaur:matrix.orgsamasauroh that's really nice20:36:46
@reckenrode:matrix.orgRandy Eckenrode
$ nix develop -f . swiftPackages.cxx-interop-test -L
$ command -v clang
/nix/store/3fbjimjwwxk682a9gkbr2nss0yf232mf-clang-wrapper-21.1.8/bin/clang
20:37:13
@reckenrode:matrix.orgRandy Eckenrode Though I’m not sure that Swift 6.2 is invoking clang for its interop support. 20:37:27
@saiko:knifepoint.netKatalin 🔪 perhaps it needs additional include directories, or swiftpm does use swift clang inherently 20:37:29
@reckenrode:matrix.orgRandy Eckenrode It seems to be fine when invoked by SwiftPM but not when called directly. I can use the Xcode clang just fine with that header. 20:44:47
@saiko:knifepoint.netKatalin 🔪 yeah, that sounds like the same situation then 20:45:49
@saiko:knifepoint.netKatalin 🔪 iirc that generated header has a bunch of conditional includes at the top with has_include, and these errors look like missing defines, so maybe if you give it just the right include paths it'll get further, but I'd have to start digging 20:46:51
@reckenrode:matrix.orgRandy Eckenrode It needs this header: swiftToCxx/_SwiftCxxInteroperability.h . 20:48:15
@reckenrode:matrix.orgRandy EckenrodeThat has the defines.20:48:23
@reckenrode:matrix.orgRandy Eckenrode The Xcode toolchain ships it at /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/swiftToCxx/_SwiftCxxInteroperability.h. 20:49:32
@reckenrode:matrix.orgRandy EckenrodeI can put it in stdlib-dev/include, which should get picked up automatically by the wrapper.20:51:21
@reckenrode:matrix.orgRandy Eckenrode * I can put it in stdlib-dev/include, which should get picked up automatically by the wrapper. 20:51:29
@saiko:knifepoint.netKatalin 🔪 well well, the very simple case (empty module) does compile with that and clang++ 19. I'll have to test it with a larger project that actually exports some types 20:52:43
@reckenrode:matrix.orgRandy EckenrodeI have a working test that creates a Swift struct from C++ and prints the value.22:46:16
@reckenrode:matrix.orgRandy Eckenrode I added it to the cxx-interop-test package. 22:46:28
@reckenrode:matrix.orgRandy Eckenrode
$ nix build -f . swiftPackages.cxx-interop-test --log-format multiline -L
swift-cxx-interop-test> Running phase: unpackPhase
swift-cxx-interop-test> unpacking source archive /nix/store/nf6dg34afc7p4mjxxkpgc6gs294a4jyb-src
swift-cxx-interop-test> source root is src
swift-cxx-interop-test> Unpacking SwiftPM dependencies
swift-cxx-interop-test> Running phase: patchPhase
swift-cxx-interop-test> Running phase: updateAutotoolsGnuConfigScriptsPhase
swift-cxx-interop-test> Running phase: configurePhase
swift-cxx-interop-test> no configure script, doing nothing
swift-cxx-interop-test> Running phase: buildPhase
swift-cxx-interop-test> SwiftPM flags: -j 16 -c release -Xswiftc -module-cache-path -Xswiftc /nix/var/nix/builds/nix-build-swift-cxx-interop-test.drv-0/b/module-cache -Xswiftc -I -Xswiftc /nix/store/im17i7wbpqrhfpvyh5czlsvjhp00ij4q-swift-testing-6.2.3-include/lib/swift/macosx/testing -Xswiftc -I -Xswiftc /nix/store/h2bri7l88h31bbjrsv8m38y2y8vqqpck-swift-stdlib-6.2.3-dev/lib/swift/macosx -Xswiftc -I -Xswiftc /nix/store/im17i7wbpqrhfpvyh5czlsvjhp00ij4q-swift-testing-6.2.3-include/lib/swift/macosx/testing -Xswiftc -I -Xswiftc /nix/store/h2bri7l88h31bbjrsv8m38y2y8vqqpck-swift-stdlib-6.2.3-dev/lib/swift/macosx
swift-cxx-interop-test> warning: /var/empty/Library/org.swift.swiftpm/configuration is not accessible or not writable, disabling user-level cache features.
swift-cxx-interop-test> warning: /var/empty/Library/org.swift.swiftpm/security is not accessible or not writable, disabling user-level cache features.
swift-cxx-interop-test> warning: 'src': Warning: supplying the --target arm64-apple-macosx14.0 != arm64-apple-darwin argument to a nix-wrapped compiler may not work correctly - cc-wrapper is currently not designed with multi-target compilers in mind. You may want to use an un-wrapped compiler instead.
swift-cxx-interop-test> Building for production...
swift-cxx-interop-test> [0/4] Write sources
swift-cxx-interop-test> [1/4] Write swift-version--41BD1BF3460DAC2D.txt
swift-cxx-interop-test> [3/5] Compiling CxxInteropTest SwiftStruct.swift
swift-cxx-interop-test> [3/5] Write Objects.LinkFileList
swift-cxx-interop-test> Warning: supplying the --target arm64-apple-macosx10.13 != arm64-apple-darwin argument to a nix-wrapped compiler may not work correctly - cc-wrapper is currently not designed with multi-target compilers in mind. You may want to use an un-wrapped compiler instead.
swift-cxx-interop-test> clang: warning: overriding '-mmacos-version-min=14.0' option with '--target=arm64-apple-macosx10.13' [-Woverriding-option]
swift-cxx-interop-test> [4/5] Linking CxxInteropTest
swift-cxx-interop-test> Build complete! (2.18s)
swift-cxx-interop-test> swiftc -parse-as-library -emit-clang-header-path Check-SwiftStruct.h -module-name Check -cxx-interoperability-mode=default Sources/SwiftStruct.swift -c -o SwiftStruct.o
swift-cxx-interop-test> clang++    -c -o main.o main.cpp
swift-cxx-interop-test> clang++ main.o SwiftStruct.o -o SwiftToCxxInteropTest
swift-cxx-interop-test> ld: warning: object file (SwiftStruct.o) was built for newer macOS version (26.0) than being linked (14.0)
swift-cxx-interop-test> Running phase: installPhase
swift-cxx-interop-test> warning: /var/empty/Library/org.swift.swiftpm/configuration is not accessible or not writable, disabling user-level cache features.
swift-cxx-interop-test> warning: /var/empty/Library/org.swift.swiftpm/security is not accessible or not writable, disabling user-level cache features.
swift-cxx-interop-test> warning: 'src': Warning: supplying the --target arm64-apple-macosx14.0 != arm64-apple-darwin argument to a nix-wrapped compiler may not work correctly - cc-wrapper is currently not designed with multi-target compilers in mind. You may want to use an un-wrapped compiler instead.
swift-cxx-interop-test> warning: /var/empty/Library/org.swift.swiftpm/configuration is not accessible or not writable, disabling user-level cache features.
swift-cxx-interop-test> warning: /var/empty/Library/org.swift.swiftpm/security is not accessible or not writable, disabling user-level cache features.
swift-cxx-interop-test> Running phase: fixupPhase
swift-cxx-interop-test> checking for references to /nix/var/nix/builds/nix-build-swift-cxx-interop-test.drv-0/b/ in /nix/store/ncir3cf7mcgcs399189bh8i31w6n7m9j-swift-cxx-interop-test...
swift-cxx-interop-test> patching script interpreter paths in /nix/store/ncir3cf7mcgcs399189bh8i31w6n7m9j-swift-cxx-interop-test
swift-cxx-interop-test> stripping (with command strip and flags -S) in  /nix/store/ncir3cf7mcgcs399189bh8i31w6n7m9j-swift-cxx-interop-test/bin
swift-cxx-interop-test> Running phase: installCheckPhase
swift-cxx-interop-test> Hello, Swift!
swift-cxx-interop-test> Hello, C++!
23:50:17
@reckenrode:matrix.orgRandy EckenrodeRevised test at https://github.com/reckenrode/nixpkgs/tree/swift-update-mk2/pkgs/by-name/sw/swiftPackages/by-name/cx/cxx-interop-test.23:50:24
@reckenrode:matrix.orgRandy EckenrodeIt tests both C++ to Swift and Swift to C++.23:50:33
@reckenrode:matrix.orgRandy Eckenrode I manually copy the swiftToCxx headers to the stdlib^dev output. 23:55:33
20 Jan 2026
@reckenrode:matrix.orgRandy Eckenrode

Does this patch fix the Linux build of Swift?

diff --git a/pkgs/development/compilers/swift/compiler/default.nix b/pkgs/development/compilers/swift/compiler/default.nix
index 5bb32d8496..e83cd984bb 100644
--- a/pkgs/development/compilers/swift/compiler/default.nix
+++ b/pkgs/development/compilers/swift/compiler/default.nix
@@ -148,7 +148,7 @@
       -e "s|${clang.cc}/bin/clang|$unwrappedClang|g" \
       -e "s|^\(\s*\)\($unwrappedClang\) \"@\\\$responseFile\"|\1argv0=\$0\n\1${bash}/bin/bash -c \"exec -a '\$argv0' \2 '@\$responseFile'\"|" \
     ${lib.optionalString (clang.libcxx != null) ''
-      -e 's|$NIX_CXXSTDLIB_COMPILE_${clang.suffixSalt}|-isystem '$SWIFT_BUILD_ROOT'/libcxx/include/c++/v1|g'
+      -e 's|$NIX_CXXSTDLIB_COMPILE_${clang.suffixSalt}|-cxx-isystem '$SWIFT_BUILD_ROOT'/libcxx/include/c++/v1|g'
     ''}
     chmod a+x "$targetFile"
   '';
00:38:54
@reckenrode:matrix.orgRandy Eckenrode… the current Swift can’t build on a remote builder for a different platform?00:55:21
@reckenrode:matrix.orgRandy EckenrodeI’m testing now, but I think that along with the GCC 15 PR fixes the Swift build on Linux.01:08:34

Show newer messages


Back to Room ListRoom Version: 6