Merge pull request #46574 from obsidiansystems/elf-header
elf-header: Init at <libc version>
This commit is contained in:
commit
0bfdab21cf
43
pkgs/development/libraries/elf-header/default.nix
Normal file
43
pkgs/development/libraries/elf-header/default.nix
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
{ stdenvNoCC, lib, glibc, musl }:
|
||||||
|
|
||||||
|
let
|
||||||
|
libc =
|
||||||
|
if stdenvNoCC.targetPlatform.isMusl
|
||||||
|
then musl
|
||||||
|
else glibc;
|
||||||
|
headerPath =
|
||||||
|
if stdenvNoCC.targetPlatform.isMusl
|
||||||
|
then "musl-${libc.version}/include/elf.h"
|
||||||
|
else "glibc-${libc.version}/elf/elf.h";
|
||||||
|
in
|
||||||
|
|
||||||
|
stdenvNoCC.mkDerivation {
|
||||||
|
name = "elf-header";
|
||||||
|
inherit (libc) version;
|
||||||
|
|
||||||
|
src = null;
|
||||||
|
|
||||||
|
unpackPhase = "true";
|
||||||
|
|
||||||
|
dontBuild = true;
|
||||||
|
|
||||||
|
installPhase = ''
|
||||||
|
mkdir -p "$out/include";
|
||||||
|
tar -xf \
|
||||||
|
${lib.escapeShellArg libc.src} \
|
||||||
|
${lib.escapeShellArg headerPath} \
|
||||||
|
--to-stdout \
|
||||||
|
| sed -e '/features\.h/d' \
|
||||||
|
> "$out/include/elf.h"
|
||||||
|
'';
|
||||||
|
|
||||||
|
meta = libc.meta // {
|
||||||
|
description = "The datastructures of ELF according to the target platform's libc";
|
||||||
|
longDescription = ''
|
||||||
|
The Executable and Linkable Format (ELF, formerly named Extensible Linking
|
||||||
|
Format), is usually defined in a header like this.
|
||||||
|
'';
|
||||||
|
platforms = lib.platforms.all;
|
||||||
|
maintainers = [ lib.maintainers.ericson2314 ];
|
||||||
|
};
|
||||||
|
}
|
@ -139,6 +139,8 @@ stdenv.mkDerivation ({
|
|||||||
# prevent a retained dependency on the bootstrap tools in the stdenv-linux
|
# prevent a retained dependency on the bootstrap tools in the stdenv-linux
|
||||||
# bootstrap.
|
# bootstrap.
|
||||||
BASH_SHELL = "/bin/sh";
|
BASH_SHELL = "/bin/sh";
|
||||||
|
|
||||||
|
passthru = { inherit version; };
|
||||||
}
|
}
|
||||||
|
|
||||||
// (removeAttrs args [ "withLinuxHeaders" "withGd" ]) //
|
// (removeAttrs args [ "withLinuxHeaders" "withGd" ]) //
|
||||||
|
@ -5,8 +5,6 @@
|
|||||||
, withGd ? false
|
, withGd ? false
|
||||||
}:
|
}:
|
||||||
|
|
||||||
assert stdenv.cc.isGNU;
|
|
||||||
|
|
||||||
callPackage ./common.nix { inherit stdenv; } {
|
callPackage ./common.nix { inherit stdenv; } {
|
||||||
name = "glibc" + stdenv.lib.optionalString withGd "-gd";
|
name = "glibc" + stdenv.lib.optionalString withGd "-gd";
|
||||||
|
|
||||||
@ -96,7 +94,8 @@ callPackage ./common.nix { inherit stdenv; } {
|
|||||||
mv $bin/bin/getconf_ $bin/bin/getconf
|
mv $bin/bin/getconf_ $bin/bin/getconf
|
||||||
'';
|
'';
|
||||||
|
|
||||||
separateDebugInfo = true;
|
# Hack to get around eval issue.
|
||||||
|
separateDebugInfo = !stdenv.isDarwin;
|
||||||
|
|
||||||
meta.description = "The GNU C Library";
|
meta.description = "The GNU C Library";
|
||||||
}
|
}
|
||||||
|
@ -2,8 +2,6 @@
|
|||||||
, fetchurl, perl
|
, fetchurl, perl
|
||||||
}:
|
}:
|
||||||
|
|
||||||
assert stdenvNoCC.hostPlatform.isLinux;
|
|
||||||
|
|
||||||
let
|
let
|
||||||
common = { version, sha256, patches ? null }: stdenvNoCC.mkDerivation {
|
common = { version, sha256, patches ? null }: stdenvNoCC.mkDerivation {
|
||||||
name = "linux-headers-${version}";
|
name = "linux-headers-${version}";
|
||||||
@ -13,7 +11,7 @@ let
|
|||||||
inherit sha256;
|
inherit sha256;
|
||||||
};
|
};
|
||||||
|
|
||||||
ARCH = stdenvNoCC.hostPlatform.platform.kernelArch;
|
ARCH = stdenvNoCC.hostPlatform.platform.kernelArch or (throw "missing kernelArch");
|
||||||
|
|
||||||
# It may look odd that we use `stdenvNoCC`, and yet explicit depend on a cc.
|
# It may look odd that we use `stdenvNoCC`, and yet explicit depend on a cc.
|
||||||
# We do this so we have a build->build, not build->host, C compiler.
|
# We do this so we have a build->build, not build->host, C compiler.
|
||||||
|
@ -9536,6 +9536,14 @@ with pkgs;
|
|||||||
installLocales = config.glibc.locales or false;
|
installLocales = config.glibc.locales or false;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
# Provided by libc on Operating Systems that use the Extensible Linker Format.
|
||||||
|
elf-header =
|
||||||
|
if stdenv.hostPlatform.parsed.kernel.execFormat.name == "elf"
|
||||||
|
then null
|
||||||
|
else elf-header-real;
|
||||||
|
|
||||||
|
elf-header-real = callPackage ../development/libraries/elf-header { };
|
||||||
|
|
||||||
glibc_memusage = callPackage ../development/libraries/glibc {
|
glibc_memusage = callPackage ../development/libraries/glibc {
|
||||||
installLocales = false;
|
installLocales = false;
|
||||||
withGd = true;
|
withGd = true;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user