| 1 Nov 2025 |
samasaur | i wonder if there is a working group for packaging the toolchain itself | 00:23:37 |
Randy Eckenrode | Maybe, but the way Nix does things is an impediment. | 00:29:09 |
Katalin πͺ |
Encourage development of Swift integrations in existing build and packaging systems that are outside of the Swift project (e.g. CMake, Bazel)
this is really cool to see :^) | 00:30:54 |
Katalin πͺ | especially since I'm working on making Swift support in Meson better | 00:32:08 |
Katalin πͺ | but also just in general | 00:32:15 |
niklaskorz | so I'm still not sure if that either just doesn't work or I'm looking in the wrong place | 09:51:43 |
niklaskorz | diff --git a/pkgs/stdenv/cross/default.nix b/pkgs/stdenv/cross/default.nix
index cc53957eee0d..15f76c9fbe53 100644
--- a/pkgs/stdenv/cross/default.nix
+++ b/pkgs/stdenv/cross/default.nix
@@ -69,6 +69,7 @@ lib.init bootStages
extraNativeBuildInputs =
old.extraNativeBuildInputs
++ lib.optionals (hostPlatform.isLinux && !buildPlatform.isLinux) [ buildPackages.patchelf ]
+ ++ lib.optionals (buildPlatform.isDarwin && !hostPlatform.isDarwin) [ buildPackages.apple-sdk ]
++ lib.optional (
let
f =
| 09:51:52 |
niklaskorz | this doesn't fix the build issue unfortunately, same result as before | 09:52:04 |
niklaskorz | also there generally is no way to pass RUSTFLAGS to the build script compilation it seems | 10:06:52 |
niklaskorz | a PR in 2017 was rejected: https://github.com/rust-lang/cargo/pull/4428 | 10:07:00 |
niklaskorz |
The flag is not passed to all compiler instances: When cross-compiling (i.e., when --target is set), the flag is not passed to build scripts. It seems there is currently no way to pass anything to build scripts when --target is set, which clearly is a feature gap.
| 10:07:27 |
niklaskorz | upstream issue: https://github.com/rust-lang/cargo/issues/4423 | 10:08:15 |
niklaskorz | I feel like this is the actual cause of the issue we're seeing π
| 10:09:06 |
niklaskorz | also from the cargo docs: | 10:13:44 |
niklaskorz |
If the --target flag (or build.target) is used, then the flags will only be passed to the compiler for the target. Things being built for the host, such as build scripts or proc macros, will not receive the args. Without --target, the flags will be passed to all compiler invocations (including build scripts and proc macros) because dependencies are shared. If you have args that you do not want to pass to build scripts or proc macros and are building for the host, pass --target with the host triple.
| 10:13:46 |
Randy Eckenrode | If you nix develop the failing drv, what does the environment look like? DEVELOPER_DIE_FOR_BUILD should be set. | 10:33:23 |
Randy Eckenrode | * If you nix develop the failing drv, what does the environment look like? DEVELOPER_DIR_FOR_BUILD should be set. | 10:33:34 |
niklaskorz | bash-5.3$ echo $DEVELOPER_DIR_FOR_BUILD/
/nix/store/ybygcq3s191f07bwgxbqpgqv0ak4h17k-apple-sdk-11.3/
| 10:36:46 |
Randy Eckenrode | So it is getting set but not used. | 10:37:34 |
Randy Eckenrode | And libiconv is in the appropriate deps packages list? | 10:39:22 |
niklaskorz | yeah I tried both nativeBuildInputs as well as depsBuildBuild | 10:43:43 |
Randy Eckenrode | I meant in the build environment. | 11:25:50 |
emily | I would try adding this in the native stdenv instead perhaps | 15:07:41 |
niklaskorz | did that too | 15:07:52 |
niklaskorz | no change in behavior, alas | 15:08:02 |
niklaskorz | (much recompiling for no seeming effect today^^) | 15:08:31 |
niklaskorz | * (much recompiling for seemingly no effect today^^) | 15:08:38 |
niklaskorz | at least I now found out that rust has since added the ability to pass rustflags through the cargo config's [host] section | 15:09:59 |
niklaskorz | so I'll try adding the library search path to libiconv there as a sanity check | 15:10:16 |
niklaskorz | * at least I now found out that rust has since added the ability to pass rustflags for build scripts through the cargo config's [host] section | 15:10:29 |