diff options
author | John Ericson <John.Ericson@Obsidian.Systems> | 2018-09-11 18:17:20 -0400 |
---|---|---|
committer | John Ericson <John.Ericson@Obsidian.Systems> | 2018-09-15 01:14:31 -0400 |
commit | b8ce6a31f555a2e4471880cc4c01b629e7d6d36f (patch) | |
tree | b45d7f3831400cdf844acd84fb5dbbe30f2aeb3c /pkgs | |
parent | 2205beaa8c95746e1ed580875dea202e93a85b5d (diff) | |
download | nixlib-b8ce6a31f555a2e4471880cc4c01b629e7d6d36f.tar nixlib-b8ce6a31f555a2e4471880cc4c01b629e7d6d36f.tar.gz nixlib-b8ce6a31f555a2e4471880cc4c01b629e7d6d36f.tar.bz2 nixlib-b8ce6a31f555a2e4471880cc4c01b629e7d6d36f.tar.lz nixlib-b8ce6a31f555a2e4471880cc4c01b629e7d6d36f.tar.xz nixlib-b8ce6a31f555a2e4471880cc4c01b629e7d6d36f.tar.zst nixlib-b8ce6a31f555a2e4471880cc4c01b629e7d6d36f.zip |
elf-header: Init at <libc version>
A little shim derivation to get this header for Darwin, where it is needed for cross compilation. There's no real reason to do glibc and musl like that, but as I'm maintaining it I suppose I can go overboard like that.
Diffstat (limited to 'pkgs')
-rw-r--r-- | pkgs/development/libraries/elf-header/default.nix | 43 | ||||
-rw-r--r-- | pkgs/top-level/all-packages.nix | 8 |
2 files changed, 51 insertions, 0 deletions
diff --git a/pkgs/development/libraries/elf-header/default.nix b/pkgs/development/libraries/elf-header/default.nix new file mode 100644 index 000000000000..48e5b73d9e72 --- /dev/null +++ b/pkgs/development/libraries/elf-header/default.nix @@ -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 ]; + }; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index e09e89b0b90e..f9df4ea4fb83 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -9513,6 +9513,14 @@ with pkgs; 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 { installLocales = false; withGd = true; |