Commit e871fcf8 authored by Connor Baker's avatar Connor Baker
Browse files

stdenvAdapters.useLibsFrom: use targetStdenv.cc.override

As @SomeoneSerge pointed out in https://github.com/NixOS/nixpkgs/pull/281371#discussion_r1531174155,
by avoiding `wrapCCWith` and using `targetStdenv.cc.override`, we avoid roundtrip wrapping and
are able to use `coreutils` from `targetStdenv`.
parent f2522053
Loading
Loading
Loading
Loading
+9 −5
Original line number Diff line number Diff line
@@ -237,14 +237,18 @@ rec {
      });
    });

  /* Copy the libstdc++ from the model stdenv to the target stdenv.
   *
   * TODO(@connorbaker):
   * This interface provides behavior which should be revisited prior to the
   * release of 24.05. For a more detailed explanation and discussion, see
   * https://github.com/NixOS/nixpkgs/issues/283517. */
  useLibsFrom = modelStdenv: targetStdenv:
    let
      ccForLibs = modelStdenv.cc.cc;
      cc = pkgs.wrapCCWith {
        /* NOTE: cc.cc is the unwrapped compiler. Should we respect the old
         * wrapper instead? */
        cc = targetStdenv.cc.cc;

      /* NOTE(@connorbaker):
       * This assumes targetStdenv.cc is a cc-wrapper. */
      cc = targetStdenv.cc.override {
        /* NOTE(originally by rrbutani):
         * Normally the `useCcForLibs`/`gccForLibs` mechanism is used to get a
         * clang based `cc` to use `libstdc++` (from gcc).