mirror of
https://github.com/NixOS/nixpkgs.git
synced 2024-12-13 17:23:08 +00:00
687371ab28
https://github.com/NixOS/nixpkgs/pull/340162 introduced `autoPatchelfHook` as it's own top-level attribute. This also made it use the Nixpkgs Python build infrastructure, which relies on dependency propagation, leaking Python as a dependency into many builds erroneously. This change uses a `withPackages` constructed environment instead, and manually patches the script shebangs, not triggering the `buildPython*` dependency propagation mechanism
44 lines
872 B
Nix
44 lines
872 B
Nix
{
|
|
stdenv,
|
|
python3,
|
|
lib,
|
|
}:
|
|
|
|
let
|
|
pythonEnv = python3.withPackages (ps: [ ps.pyelftools ]);
|
|
|
|
in
|
|
# Note: Not using python3Packages.buildPythonApplication because of dependency propagation.
|
|
stdenv.mkDerivation {
|
|
pname = "auto-patchelf";
|
|
version = "0-unstable-2024-08-14";
|
|
|
|
buildInputs = [ pythonEnv ];
|
|
|
|
src = ./source;
|
|
|
|
buildPhase = ''
|
|
runHook preBuild
|
|
|
|
substituteInPlace auto-patchelf.py --replace-fail "@defaultBintools@" "$NIX_BINTOOLS"
|
|
|
|
runHook postBuild
|
|
'';
|
|
|
|
installPhase = ''
|
|
runHook preInstall
|
|
|
|
install -Dm755 auto-patchelf.py $out/bin/auto-patchelf
|
|
|
|
runHook postInstall
|
|
'';
|
|
|
|
meta = {
|
|
description = "Automatically patch ELF binaries using patchelf";
|
|
mainProgram = "auto-patchelf";
|
|
license = lib.licenses.mit;
|
|
platforms = lib.platforms.unix;
|
|
maintainers = with lib.maintainers; [ Scrumplex ];
|
|
};
|
|
}
|