!OqhvaDMJdKYUicLDiE:nixos.org

Nixpkgs Stdenv

225 Members
72 Servers

Load older messages


SenderMessageTime
29 Dec 2025
@mdaniels5757:matrix.orgmdaniels5757Redacted or Malformed Event23:26:10
@mdaniels5757:matrix.orgmdaniels5757

Looks like you can't use fetchFromGitLab in the bootstrap process (like fetchpatch)? With this patch, it evals (I haven't built):

diff --git a/pkgs/development/libraries/libxml2/default.nix b/pkgs/development/libraries/libxml2/default.nix
index 41d2b1f953f0..43df6360ade5 100644
--- a/pkgs/development/libraries/libxml2/default.nix
+++ b/pkgs/development/libraries/libxml2/default.nix
@@ -2,6 +2,7 @@
   lib,
   callPackage,
   fetchFromGitLab,
+  fetchurl,
   fetchpatch,
 }:

@@ -49,14 +50,12 @@ let
         ];
       };
     };
-    libxml2 = callPackage ./common.nix {
+    libxml2 = callPackage ./common.nix rec {
       version = "2.15.1";
-      src = fetchFromGitLab {
-        domain = "gitlab.gnome.org";
-        owner = "GNOME";
-        repo = "libxml2";
-        tag = "v${packages.libxml2.version}";
-        hash = "sha256-FUfYMq5xT2i88JdIw9OtSofraUL3yjsyOVund+mfJKQ=";
+      src = fetchurl {
+        name = "libxml2-${version}-source.tar.gz";
+        url = "https://gitlab.gnome.org/api/v4/projects/GNOME%2Flibxml2/repository/archive.tar.gz?sha=refs/tags/v${packages.libxml2.version}";
+        hash = "sha256-2py4DlRIlD4h1x8379d+whzsNbh8ofHpNAad/QFsTuw=";
       };
       extraMeta = {
         maintainers = with lib.maintainers; [
23:26:28
@grimmauld:m.grimmauld.deGrimmauld (any/all)Ah, nice! I'll give that another shot tomorrow then!23:28:08
4 Aug 2022
@winterqt:nixos.devWinter (she/her) joined the room.03:27:09
@0x4a6f:matrix.org[0x4A6F] joined the room.22:08:01
6 Aug 2022
@winterqt:nixos.devWinter (she/her)

Does anyone know where the fact that the Darwin stdenv builds CMake twice comes from? As far as I can tell, it's from stage 0, and then just gets used in the other stages from there. Am I missing something here, is it something with the overrides? It looks like it might be, but then the fact that those are only allowed in the final stage (per booter.nix) (when that doesn't seem true, since then they wouldn't be defined...?) comes up.

(Isn't this the same pattern (defining in one stage and referencing in the others) that makes Glibc only build a limited number of times in the Linux stdenv?)

08:00:17
@trofi:matrix.org@trofi:matrix.org

You think cmake should be rebuild less? Or more?

glibc's is probably a bit different as it's a part of stdenv.cc.libc and mainly used by that I would guess. Also, if depends if the package is used or not by other packages in the derivation would affect rebuild count as well.

14:59:09
@trofi:matrix.org@trofi:matrix.org Looking at stdenv's dep tree I see 2 cmake-boot hashes and one cmake hash: https://dpaste.com/8GGM6P9BF.txt 15:03:11
@winterqt:nixos.devWinter (she/her)
In reply to @trofi:matrix.org

You think cmake should be rebuild less? Or more?

glibc's is probably a bit different as it's a part of stdenv.cc.libc and mainly used by that I would guess. Also, if depends if the package is used or not by other packages in the derivation would affect rebuild count as well.

I have no particular opinion, I'm just curious how that happens.
21:22:09
@winterqt:nixos.devWinter (she/her) Oh, for clarification, I was talking about cmake-boot. 21:22:19
@winterqt:nixos.devWinter (she/her) (which is cmake in the stdenv stages) 21:22:29
@winterqt:nixos.devWinter (she/her)see the line i linked21:22:36
@trofi:matrix.org@trofi:matrix.org AFAIU cmake = cmakeMinimal is only for stage1-4 (first build: bootstrapTools -> cmake-boot in pastebin). Last stage uses cmake as is. Also note that cmakeMinimal is used by zstd (used by final stage, does second build: stage4 -> cmake-boot -> zstd in pastebin). 21:44:31
@trofi:matrix.org@trofi:matrix.org I used the following command to grep through the full depgraph: $ nix-store --query --graph $(nix-instantiate -A stdenv --argstr system x86_64-darwin) 21:45:39
10 Aug 2022
@luxus:furiosa.orgluxus joined the room.09:55:36
17 Aug 2022
@trofi:matrix.org@trofi:matrix.org Quiz question: for a final glibc used in nixpkgs all over the place which gcc you think is used to build it on linux? a) Possible answers: gcc from bootstrap tools b) gcc from nixpkgs. 17:36:21
@trofi:matrix.org@trofi:matrix.orgYou knew :)17:39:09
@artturin:matrix.orgArtturinobviously it is the more ridiculous answer 🙃17:40:03
@trofi:matrix.org@trofi:matrix.orgYeah :) Spoiler: https://dpaste.com/DMD34BUN9.txt17:40:23
@trofi:matrix.org@trofi:matrix.org * Quiz question: for a final glibc used in nixpkgs all over the place which gcc you think is used to build it on linux? Possible answers: a) gcc from bootstrap tools b) gcc from nixpkgs. 17:42:06
@vcunat:matrix.org@vcunatAFAIK it isn't easy to do better. gcc links against glibc. So either somehow try replacing it later (rather hacky, probably) or build gcc twice during bootstrapping (will remain persistently annoying). Or as you suggest, update the bootstrapping tools more often.17:49:27
@vcunat:matrix.org@vcunatI might've missed some options. Or perhaps even confuse something.17:49:48
@vcunat:matrix.org@vcunat * I might've missed some options. Or perhaps even confused something.17:49:52
@vcunat:matrix.org@vcunat * AFAIK it isn't easy to do better. gcc links against glibc. So either somehow try replacing gcc's glibc later (rather hacky, probably) or build gcc twice during bootstrapping (will remain persistently annoying). Or as you suggest, update the bootstrapping tools more often.17:50:20
@trofi:matrix.org@trofi:matrix.org

[The other day I found stdenv.__bootPackages as a way to refer to each stage's package set. Now I use it and nix-store --query --graph all the time to find out what gets built when and why.]

nod. Your description matches my understanding. Today we build glibc and gcc once during bootstrap (and 3 times binutils?). In this setup at least one of them will have to be built by bootstrapTools.

17:58:53
@rick:matrix.ciphernetics.nlMindaviThis maybe: https://github.com/NixOS/nixpkgs/pull/13234317:58:54
@trofi:matrix.org@trofi:matrix.org AFAIU splitting libraries out does not fully solve the reliance on code generated directly by bootstrapTools toolchain. glibc would still have to be rebuilt once again. But the split might ease adding extra lightweight stages to rebuild some parts of stdenv. I dread of the thought maintaining such patches downstream though :) 18:06:57
@greaka:greaka.degreaka joined the room.20:21:08
20 Aug 2022
@kayla.fire:matrix.orgkayla (she/they) joined the room.17:25:29
21 Aug 2022
@greaka:greaka.degreaka changed their display name from greaka ⚡️ to greaka .09:25:58

Show newer messages


Back to Room ListRoom Version: 9