!OqhvaDMJdKYUicLDiE:nixos.org

Nixpkgs Stdenv

212 Members
67 Servers

Load older messages


SenderMessageTime
25 May 2025
@rosscomputerguy:matrix.orgTristan Ross Idk 15:32:48
@reckenrode:matrix.orgRandy EckenrodeThinking about Wine, it has a number of vendored dependencies that would be nice to devendor. It would also be nice to build wine-mono and wine-gecko from source.15:32:54
@reckenrode:matrix.orgRandy EckenrodeI would not want to have to manually override all the dependencies to build Gecko or Mono.15:33:22
@rosscomputerguy:matrix.orgTristan RossYeah, it seems like no matter what, cross compilation is always going to be expensive but necessary.15:34:39
@rosscomputerguy:matrix.orgTristan Ross Ericson brought up that crossStdenv could be done easier with the GCC rewrite he's been trying to push 15:37:23
@rosscomputerguy:matrix.orgTristan Ross And there's things crossStdenv uses that should have us make changes to the CC wrapper and the toolchain attributes PR would make things nicer as well. 15:38:13
@reckenrode:matrix.orgRandy Eckenrode It makes sense to have a crossStdenv for trivial cases that just need a compiler, but sometimes a package set is actually needed. A stdenv adapter won’t be good enough as a substitute. Darwin went through that with the SDK. Overriding the SDK in Rust packages was a major problem and often didn’t work. 15:41:27
@reckenrode:matrix.orgRandy Eckenrode Also note that such an adapter can’t be written recursively. My first attempt at a general adapter used recursion. Eval performance increased by over 500%. I had to use builtins.genericClosure to do it with good performance. 15:42:07
@rosscomputerguy:matrix.orgTristan RossIdeally, it would be nice if we could have a way to "pull back" the stdenv to stage 3 and then inject new stages in.15:43:58
@rosscomputerguy:matrix.orgTristan RossThen we could overlay that and it hopefully wouldn't have to eval stages before the new stages.15:44:26
@reckenrode:matrix.orgRandy EckenrodeI’d prefer to view the stdenv bootstrap as a black box so that implementation details don’t become fixed API.15:47:48
@rosscomputerguy:matrix.orgTristan RossTrue though we'd have to do something to the stdenv for it to be able to do cross unless we split CC away from the stdenv.15:48:47
@reckenrode:matrix.orgRandy EckenrodeDarwin’s stdenv bootstrap has changed a lot. The SDK update dropped several stages last fall.15:49:04
@reckenrode:matrix.orgRandy EckenrodeI wish the stdenv bootstrap could be structured like a cross from bootstrap tools to final environment.15:49:17
@reckenrode:matrix.orgRandy EckenrodeLet the standard cross-compilation machinery take care of building things for the right platforms instead of having to micromanage a bunch of overrides.15:49:38
@reckenrode:matrix.orgRandy EckenrodeThen from there you could cross to another platform.15:49:53
@reckenrode:matrix.orgRandy Eckenrode I wonder if some of the hard-coded stuff could be removed. Right now, stdenvNoCC is an override of stdenv. Could it be the other way? stdenv is stdenvNoCC with the requisite compilers as extra packages? 15:51:19
@rosscomputerguy:matrix.orgTristan Ross Yeah, that's what I'm thinking 15:51:36
@reckenrode:matrix.orgRandy EckenrodeIIRC wasn’t there some talk about that for libc++ once libstdc++ gets split out of gcc?15:51:42
@rosscomputerguy:matrix.orgTristan Ross Idk but probably 15:52:01
@rosscomputerguy:matrix.orgTristan Ross It would be nice to be able to view the stdenv as just tools and CC as the actual C toolchain 15:52:42
@rosscomputerguy:matrix.orgTristan RossAnd you could override the unwinder, cxxlib, etc15:53:00
@rosscomputerguy:matrix.orgTristan Ross I think I've seen clang get rebuilt for cross so being able to not have to rebuild clang when doing cross would be nice 15:54:05
@reckenrode:matrix.orgRandy EckenrodeClang shouldn’t be rebuilt for cross anymore. Only the wrapper now.16:44:06
@reckenrode:matrix.orgRandy EckenrodeDarwin bintools shouldn’t need rebuilding either, but that work hadn’t been done yet.16:45:14
@rosscomputerguy:matrix.orgTristan Ross
In reply to @reckenrode:matrix.org
Clang shouldn’t be rebuilt for cross anymore. Only the wrapper now.
Huh, it's rebuilt for me when I tried getting it to work with crossStdenv. But I've found a problem where the bintools wrapper for LLVM doesn't include as for target lol.
16:52:05
@reckenrode:matrix.orgRandy EckenrodeWeird. There was work done early in the 25.05 cycle to reduce the Clang rebuilds.16:52:38
@reckenrode:matrix.orgRandy Eckenrodehttps://github.com/NixOS/nixpkgs/pull/355532 https://github.com/NixOS/nixpkgs/pull/356162 https://github.com/NixOS/nixpkgs/pull/35763316:53:28
@reckenrode:matrix.orgRandy Eckenrode

On Darwin, I get /nix/store/5ibsf7mwyci07f5kdxrzww43204y7ysv-clang-20.1.4.drv for every:

$ nix-instantiate . -A pkgsCross.gnu64.llvmPackages.libcxxStdenv.cc.cc
$ nix-instantiate . -A pkgsCross.gnu64.pkgsLLVM.stdenv.cc.cc
$ nix-instantiate . -A pkgsCross.x86_64-darwin.stdenv.cc.cc
$ nix-instantiate . -A stdenv.cc.cc
$ nix-instantiate . -A clang.cc
$ nix-instantiate . -A llvmPackages.clang.cc
$ nix-instantiate . -A llvmPackages_20.clang.cc
16:55:03
@rosscomputerguy:matrix.orgTristan Ross Yeah, it's something which started when I made glibc actually handle cross correctly in crossStdenv 16:57:10

Show newer messages


Back to Room ListRoom Version: 9