tests.buildFHSEnv.liblzma: init

Do so in a generalized manner.
This commit is contained in:
Doron Behar 2024-01-09 15:51:59 +02:00
parent 526a39a140
commit d3332be38c
2 changed files with 71 additions and 0 deletions

View File

@ -0,0 +1,69 @@
{ lib
, buildFHSEnv
, runCommand
, stdenv
, fetchurl
, dpkg
, glibc
, callPackage
}:
let
getSharedObjectFromDebian = sharedObjectName: src: stdenv.mkDerivation {
name = "${sharedObjectName}-fetcher";
inherit src;
nativeBuildInputs = [
dpkg
];
dontBuild = true;
dontConfigure = true;
dontFixup = true;
installPhase = ''
echo shared objects found are:
ls -l usr/lib/*/
cp usr/lib/*/${sharedObjectName} $out
'';
};
makeSharedObjectTest = sharedObject: targetPkgs: let
lddFHSEnv = buildFHSEnv {
name = "ldd-with-ncurses-FHS-env";
inherit targetPkgs;
runScript = "ldd";
};
ldd-in-FHS = "${lddFHSEnv}/bin/${lddFHSEnv.name}";
ldd = "${lib.getBin glibc}/bin/ldd";
find_libFHSEnv = buildFHSEnv {
name = "ls-with-ncurses-FHS-env";
targetPkgs = p: [
p.ncurses5
];
runScript = "find /lib/ -executable";
};
find_lib-in-FHS = "${find_libFHSEnv}/bin/${find_libFHSEnv.name}";
in runCommand "FHS-lib-test" {} ''
echo original ldd output is:
${ldd} ${sharedObject}
lddOutput="$(${ldd-in-FHS} ${sharedObject})"
echo ldd output inside FHS is:
echo "$lddOutput"
if echo $lddOutput | grep -q "not found"; then
echo "shared object could not find all dependencies in the FHS!"
echo The libraries below where found in the FHS:
${find_lib-in-FHS}
exit 1
else
echo $lddOutput > $out
fi
'';
in {
liblzma = makeSharedObjectTest (getSharedObjectFromDebian "libxml2.so.2.9.14" (fetchurl {
url = "mirror://debian/pool/main/libx/libxml2/libxml2_2.9.14+dfsg-1.3~deb12u1_amd64.deb";
hash = "sha256-NbdstwOPwclAIEpPBfM/+3nQJzU85Gk5fZrc+Pmz4ac=";
})) (p: [
p.xz
p.zlib
p.icu72
]);
}

View File

@ -168,5 +168,7 @@ with pkgs;
pkgs-lib = recurseIntoAttrs (import ../pkgs-lib/tests { inherit pkgs; });
buildFHSEnv = recurseIntoAttrs (callPackages ./buildFHSEnv { });
nixpkgs-check-by-name = callPackage ./nixpkgs-check-by-name { };
}