nixpkgs/pkgs/by-name/el/elf-header-real/package.nix
aleksana 571c71e6f7 treewide: migrate packages to pkgs/by-name, take 1
We are migrating packages that meet below requirements:

1. using `callPackage`
2. called path is a directory
3. overriding set is empty (`{ }`)
4. not containing path expressions other than relative path (to
makenixpkgs-vet happy)
5. not referenced by nix files outside of the directory, other
than`pkgs/top-level/all-packages.nix`
6. not referencing nix files outside of the directory
7. not referencing `default.nix` (since it's changed to `package.nix`)
8. `outPath` doesn't change after migration

The tool is here: https://github.com/Aleksanaa/by-name-migrate.
2024-11-09 20:04:51 +08:00

45 lines
1.0 KiB
Nix

{ 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 {
pname = "elf-header";
inherit (libc) version;
src = null;
dontUnpack = 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 // {
outputsToInstall = [ "out" ];
description = "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 ];
};
}