osquery: fix build

Patch toolchain rpath manually instead of using autoPatchelfHook

Workaround for #333710

Fixes #332533
This commit is contained in:
squalus 2024-08-10 08:33:15 -07:00
parent 615639f369
commit 5793fb5b9e
2 changed files with 18 additions and 5 deletions

View File

@ -6,6 +6,7 @@
, git
, perl
, python3
, stdenv
, stdenvNoCC
, ninja
, autoPatchelfHook
@ -13,6 +14,7 @@
, jq
, removeReferencesTo
, nixosTests
, file
}:
let
@ -50,7 +52,7 @@ let
sha256 = opensslSha256;
};
toolchain = import ./toolchain-bin.nix { inherit autoPatchelfHook stdenvNoCC lib fetchzip; };
toolchain = import ./toolchain-bin.nix { inherit stdenv lib fetchzip file; };
in

View File

@ -1,4 +1,4 @@
{ stdenvNoCC, lib, autoPatchelfHook, fetchzip }:
{ stdenv, lib, fetchzip, file }:
let
version = "1.1.0";
@ -16,21 +16,32 @@ let
in
stdenvNoCC.mkDerivation {
stdenv.mkDerivation {
name = "osquery-toolchain-bin";
inherit version;
src = fetchzip dist.${stdenvNoCC.hostPlatform.system};
src = fetchzip dist.${stdenv.hostPlatform.system};
nativeBuildInputs = [ autoPatchelfHook ];
nativeBuildInputs = [ file ];
installPhase = ''
mkdir $out
cp -r * $out
'';
# autoPatchelfHook cannot be used here because of https://github.com/NixOS/nixpkgs/issues/333710
postFixup = ''
read -r interpreter < "$NIX_BINTOOLS"/nix-support/dynamic-linker
for file in $(find "$out"/usr/bin -type f -executable); do
if [[ $(file "$file") == *ELF*dynamically* ]]; then
patchelf --interpreter "$interpreter" "$file"
patchelf --set-rpath "$out/usr/lib" "$file"
fi
done
'';
meta = with lib; {
description = "A LLVM-based toolchain for Linux designed to build a portable osquery";
homepage = "https://github.com/osquery/osquery-toolchain";