stripe-cli: 1.23.3 -> 1.23.5 (#375724)
[NixPkgs.git] / pkgs / by-name / el / elfutils / package.nix
blobf07ab5b6aebcbe5d3e3861958c1b24e83646c629
2   lib,
3   stdenv,
4   fetchurl,
5   fetchpatch,
6   pkg-config,
7   musl-fts,
8   musl-obstack,
9   m4,
10   zlib,
11   zstd,
12   bzip2,
13   bison,
14   flex,
15   gettext,
16   xz,
17   setupDebugInfoDirs,
18   argp-standalone,
19   enableDebuginfod ? lib.meta.availableOn stdenv.hostPlatform libarchive,
20   sqlite,
21   curl,
22   json_c,
23   libmicrohttpd,
24   libarchive,
25   gitUpdater,
26   autoreconfHook,
29 # TODO: Look at the hardcoded paths to kernel, modules etc.
30 stdenv.mkDerivation rec {
31   pname = "elfutils";
32   version = "0.192";
34   src = fetchurl {
35     url = "https://sourceware.org/elfutils/ftp/${version}/${pname}-${version}.tar.bz2";
36     hash = "sha256-YWCZvq4kq6Efm2PYbKbMjVZtlouAI5EzTJHfVOq0FrQ=";
37   };
39   patches =
40     [
41       ./debug-info-from-env.patch
42       (fetchpatch {
43         name = "fix-aarch64_fregs.patch";
44         url = "https://git.alpinelinux.org/aports/plain/main/elfutils/fix-aarch64_fregs.patch?id=2e3d4976eeffb4704cf83e2cc3306293b7c7b2e9";
45         sha256 = "zvncoRkQx3AwPx52ehjA2vcFroF+yDC2MQR5uS6DATs=";
46       })
47       (fetchpatch {
48         name = "musl-asm-ptrace-h.patch";
49         url = "https://git.alpinelinux.org/aports/plain/main/elfutils/musl-asm-ptrace-h.patch?id=2e3d4976eeffb4704cf83e2cc3306293b7c7b2e9";
50         sha256 = "8D1wPcdgAkE/TNBOgsHaeTZYhd9l+9TrZg8d5C7kG6k=";
51       })
52       (fetchpatch {
53         name = "musl-macros.patch";
54         url = "https://git.alpinelinux.org/aports/plain/main/elfutils/musl-macros.patch?id=2e3d4976eeffb4704cf83e2cc3306293b7c7b2e9";
55         sha256 = "tp6O1TRsTAMsFe8vw3LMENT/vAu6OmyA8+pzgThHeA8=";
56       })
57       (fetchpatch {
58         name = "musl-strndupa.patch";
59         url = "https://git.alpinelinux.org/aports/plain/main/elfutils/musl-strndupa.patch?id=2e3d4976eeffb4704cf83e2cc3306293b7c7b2e9";
60         sha256 = "sha256-7daehJj1t0wPtQzTv+/Rpuqqs5Ng/EYnZzrcf2o/Lb0=";
61       })
62     ]
63     ++ lib.optionals stdenv.hostPlatform.isMusl [ ./musl-error_h.patch ]
64     # Prevent headers and binaries from colliding which results in an error.
65     # https://sourceware.org/pipermail/elfutils-devel/2024q3/007281.html
66     ++ lib.optional (stdenv.targetPlatform.useLLVM or false) ./cxx-header-collision.patch;
68   postPatch =
69     ''
70       patchShebangs tests/*.sh
71     ''
72     + lib.optionalString stdenv.hostPlatform.isRiscV ''
73       # disable failing test:
74       #
75       # > dwfl_thread_getframes: No DWARF information found
76       sed -i s/run-backtrace-dwarf.sh//g tests/Makefile.in
77     '';
79   outputs = [
80     "bin"
81     "dev"
82     "out"
83     "man"
84   ];
86   # We need bzip2 in NativeInputs because otherwise we can't unpack the src,
87   # as the host-bzip2 will be in the path.
88   nativeBuildInputs =
89     [
90       m4
91       bison
92       flex
93       gettext
94       bzip2
95     ]
96     ++ lib.optional enableDebuginfod pkg-config
97     ++ lib.optional (stdenv.targetPlatform.useLLVM or false) autoreconfHook;
98   buildInputs =
99     [
100       zlib
101       zstd
102       bzip2
103       xz
104     ]
105     ++ lib.optionals stdenv.hostPlatform.isMusl [
106       argp-standalone
107       musl-fts
108       musl-obstack
109     ]
110     ++ lib.optionals enableDebuginfod [
111       sqlite
112       curl
113       json_c
114       libmicrohttpd
115       libarchive
116     ];
118   propagatedNativeBuildInputs = [ setupDebugInfoDirs ];
120   configureFlags =
121     [
122       "--program-prefix=eu-" # prevent collisions with binutils
123       "--enable-deterministic-archives"
124       (lib.enableFeature enableDebuginfod "libdebuginfod")
125       (lib.enableFeature enableDebuginfod "debuginfod")
127       # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=101766
128       # Versioned symbols are nice to have, but we can do without.
129       (lib.enableFeature (!stdenv.hostPlatform.isMicroBlaze) "symbol-versioning")
130     ]
131     ++ lib.optional (stdenv.targetPlatform.useLLVM or false) "--disable-demangler"
132     ++ lib.optionals stdenv.cc.isClang [
133       "CFLAGS=-Wno-unused-private-field"
134       "CXXFLAGS=-Wno-unused-private-field"
135     ];
137   enableParallelBuilding = true;
139   doCheck =
140     # Backtrace unwinding tests rely on glibc-internal symbol names.
141     # Musl provides slightly different forms and fails.
142     # Let's disable tests there until musl support is fully upstreamed.
143     !stdenv.hostPlatform.isMusl
144     # Test suite tries using `uname` to determine whether certain tests
145     # can be executed, so we need to match build and host platform exactly.
146     && (stdenv.hostPlatform == stdenv.buildPlatform);
147   doInstallCheck = !stdenv.hostPlatform.isMusl && (stdenv.hostPlatform == stdenv.buildPlatform);
149   passthru.updateScript = gitUpdater {
150     url = "https://sourceware.org/git/elfutils.git";
151     rev-prefix = "elfutils-";
152   };
154   meta = with lib; {
155     homepage = "https://sourceware.org/elfutils/";
156     description = "Set of utilities to handle ELF objects";
157     platforms = platforms.linux;
158     # https://lists.fedorahosted.org/pipermail/elfutils-devel/2014-November/004223.html
159     badPlatforms = [ lib.systems.inspect.platformPatterns.isStatic ];
160     # licenses are GPL2 or LGPL3+ for libraries, GPL3+ for bins,
161     # but since this package isn't split that way, all three are listed.
162     license = with licenses; [
163       gpl2Only
164       lgpl3Plus
165       gpl3Plus
166     ];
167     maintainers = with maintainers; [ r-burns ];
168   };