!OqhvaDMJdKYUicLDiE:nixos.org

Nixpkgs Stdenv

229 Members
75 Servers

Load older messages


SenderMessageTime
24 Feb 2023
@artturin:matrix.orgArtturin
diff --git a/pkgs/applications/misc/keepassxc/default.nix b/pkgs/applications/misc/keepassxc/default.nix
index 3c74b6e9175..158ffe5fc8d 100644
--- a/pkgs/applications/misc/keepassxc/default.nix
+++ b/pkgs/applications/misc/keepassxc/default.nix
@@ -49,11 +49,11 @@ stdenv.mkDerivation rec {
     sha256 = "sha256-amedKK9nplLVJTldeabN3/c+g/QesrdH+qx+rba2/4s=";
   };
 
-  env.NIX_CFLAGS_COMPILE = lib.optionalString stdenv.cc.isClang (toString [
+  env.NIX_CFLAGS_COMPILE = lib.optionals true [
     "-Wno-old-style-cast"
     "-Wno-error"
     "-D__BIG_ENDIAN__=${if stdenv.isBigEndian then "1" else "0"}"
-  ]);
+  ];
 
   NIX_LDFLAGS = lib.optionalString stdenv.isDarwin "-rpath ${libargon2}/lib";
 
diff --git a/pkgs/stdenv/generic/make-derivation.nix b/pkgs/stdenv/generic/make-derivation.nix
index 3d60934557c..fc36edf9ee4 100644
--- a/pkgs/stdenv/generic/make-derivation.nix
+++ b/pkgs/stdenv/generic/make-derivation.nix
@@ -537,8 +537,8 @@ else let
     assert lib.assertMsg (overlappingNames == [ ])
       "The ‘env’ attribute set cannot contain any attributes passed to derivation. The following attributes are overlapping: ${lib.concatStringsSep ", " overlappingNames}";
     lib.mapAttrs
-      (n: v: assert lib.assertMsg (lib.isString v || lib.isBool v || lib.isInt v || lib.isDerivation v)
-        "The ‘env’ attribute set can only contain derivation, string, boolean or integer attributes. The ‘${n}’ attribute is of type ${builtins.typeOf v}."; v)
+      (n: v: assert lib.assertMsg (lib.isString v || lib.isBool v || lib.isInt v || lib.isDerivation v || lib.isList v)
+        "The ‘env’ attribute set can only contain derivation, list, string, boolean or integer attributes. The ‘${n}’ attribute is of type ${builtins.typeOf v}."; (if lib.isList v then toString v else v))
       env;
 
 in
04:42:47
@artturin:matrix.orgArtturinhttps://github.com/NixOS/nixpkgs/pull/21796204:52:20
3 Mar 2023
@artturin:matrix.orgArtturinhttps://github.com/NixOS/nixpkgs/pull/21918215:09:21
7 Mar 2023
@winterqt:nixos.devWinter (she/her)
[nix-shell:~]$ which hello
/nix/store/nfzcdd26n8qs7dyh6kwz2hmp9rkppdcg-hello-2.12.1/bin/hello

[nix-shell:~]$ patchelf --print-needed /nix/store/nfzcdd26n8qs7dyh6kwz2hmp9rkppdcg-hello-2.12.1/bin/hello
libc.so.6
ld-linux-aarch64.so.1

anyone know why we add ldso to needed for (as far as I can tell) just aarch64? i can't get the same result on x86_64-linux, and I don't see any extra flags added via ld-wrapper that would cause this.

01:44:35
@winterqt:nixos.devWinter (she/her) *
[nix-shell:~]$ which hello
/nix/store/nfzcdd26n8qs7dyh6kwz2hmp9rkppdcg-hello-2.12.1/bin/hello

[nix-shell:~]$ patchelf --print-needed /nix/store/nfzcdd26n8qs7dyh6kwz2hmp9rkppdcg-hello-2.12.1/bin/hello
libc.so.6
ld-linux-aarch64.so.1

anyone know why/where we add ldso to needed for (as far as I can tell) just aarch64? i can't get the same result on x86_64-linux, and I don't see any extra flags added via ld-wrapper that would cause this.

01:44:46
@winterqt:nixos.devWinter (she/her) e.g. grepped NIX_DEBUG=7 logs and cannot find anything that would do this 02:19:48
@trofi:matrix.orgtrofi patchelf --set-interpreter 07:18:50
@trofi:matrix.orgtrofi lddtree from pax-utils might make it more obvious where ld.so comes from. 07:19:15
@trofi:matrix.orgtrofi ld.wrapper sets it in pkgs/build-support/bintools-wrapper/ld-wrapper.sh: extraBefore+=("-dynamic-linker" "$NIX_DYNAMIC_LINKER_@suffixSalt@") 07:20:01
@winterqt:nixos.devWinter (she/her)
In reply to @trofi:matrix.org
patchelf --set-interpreter
i don't think that's true entirely (either that or patchelf is bugged on aarch64)? x86_64-linux also has the interpreter set, but patchelf --print-needed does not show it.
12:41:29
@winterqt:nixos.devWinter (she/her)which is why i ask, it just seems strange and nonobvious12:41:49
@winterqt:nixos.devWinter (she/her) (by "true entirely" i mean that doesn't explain what i'm seeing here) 12:44:50
@winterqt:nixos.devWinter (she/her)i checked an aarch64-linux binary not from Nixpkgs and it doesn't have the interpreter in print-needed either, so i think that rules out being a patchelf issue12:45:54
@winterqt:nixos.devWinter (she/her)i just don't know where else the interpreter would get added to needed other than in ld-wrapper, and i do not see it there12:46:30
@winterqt:nixos.devWinter (she/her)just seems very very strange that this is only happening on aarch64 🙃12:54:05
@winterqt:nixos.devWinter (she/her) apologies for the maybe nonsensical rambling trofi, but hopefully those clarifications make the issue(?) clear that it's not the interpreter i'm talking about. i really don't know where to go from here, though, so any help is appreciated. thank you! 15:37:24
@trofi:matrix.orgtrofiDo you have an 'lddtree' output on problematic file? Does it show ldso output anywhere except the interpreter?17:45:31
@trofi:matrix.orgtrofiI generally have less faith in patchelf than readelf or objdump when it comes to parsing elves.17:49:47
@trofi:matrix.orgtrofiOh, it's really added via DT_NEEDED /o\17:55:54
@trofi:matrix.orgtrofi That looks very wrong. patchelf might not have shrunk NEEDED section size and spilled over to INTERP. I'll try to reproduce using qemu-user locally. 18:02:11
@winterqt:nixos.devWinter (she/her)Thank you! If you'd like, I can get an lddtree output sometime today.18:39:12
@winterqt:nixos.devWinter (she/her)* Thank you for looking into it! If you'd like, I can get an lddtree output sometime today.18:45:48
@winterqt:nixos.devWinter (she/her)though I suppose you don't need it since you can just get it with qemu-user18:45:59
@trofi:matrix.orgtrofi Yeah, x86_64-linux lddtree works as is on aarch64-linux binary from hydra and shows the same unexpected dependency. 19:35:49
@winterqt:nixos.devWinter (she/her)Got it, wasn't sure if lddtree used ldd or not.20:51:28
@winterqt:nixos.devWinter (she/her)Definitely odd that this only happens on aarch64-linux... are ELF headers really that different between the architectures?20:52:13
@trofi:matrix.orgtrofiMost header types are the same and mainly differ only by endianness or by field sizes (32 vs 64 bits). But some sections are architecture-specific, like relocations (.rela / .rela.dyn).22:15:13
@trofi:matrix.orgtrofi Looks like it's intentional after all: It's added by ...-glibc-2.35-224/lib/libc.so: GROUP ( ...-glibc-2.35-224/lib/libc.so.6 ...-glibc-2.35-224/lib/libc_ nonshared.a AS_NEEDED ( ...-glibc-2.35-224/lib/ld-linux-aarch64.so.1 ) ) and provides __stack_chk_guard@@GLIBC_2.17 symbol. 22:26:15
8 Mar 2023
@winterqt:nixos.devWinter (she/her)
In reply to @trofi:matrix.org
Looks like it's intentional after all: It's added by ...-glibc-2.35-224/lib/libc.so: GROUP ( ...-glibc-2.35-224/lib/libc.so.6 ...-glibc-2.35-224/lib/libc_ nonshared.a AS_NEEDED ( ...-glibc-2.35-224/lib/ld-linux-aarch64.so.1 ) ) and provides __stack_chk_guard@@GLIBC_2.17 symbol.
Where did you find this info? Now I'm curious why I don't see the stack check guard in e.g. Guix's hello binary 🤔
02:22:13
@winterqt:nixos.devWinter (she/her)Thanks for looking into it by the way02:22:23

Show newer messages


Back to Room ListRoom Version: 9