summaryrefslogtreecommitdiffstats
path: root/pkgs/test
diff options
context:
space:
mode:
authorAtemu <atemu.main@gmail.com>2024-01-31 16:09:16 +0100
committerGitHub <noreply@github.com>2024-01-31 16:09:16 +0100
commit52418a5183eb450bfc8894d5a8ff803caa2f233a (patch)
treed0e41bab8d2dcfa6ddeaadf5333af4786abd6041 /pkgs/test
parentafb69fea3c9fe754bae550b2c9561971e9fbdd52 (diff)
parent3b6e224d123b2c3ab84b5e6fa5b056ee4c629c23 (diff)
Merge pull request #279844 from doronbehar/tests/buildFHSEnv
tests.buildFHSEnv.libtinfo: init
Diffstat (limited to 'pkgs/test')
-rw-r--r--pkgs/test/buildFHSEnv/default.nix84
-rw-r--r--pkgs/test/default.nix2
2 files changed, 86 insertions, 0 deletions
diff --git a/pkgs/test/buildFHSEnv/default.nix b/pkgs/test/buildFHSEnv/default.nix
new file mode 100644
index 000000000000..0a355e1aeeac
--- /dev/null
+++ b/pkgs/test/buildFHSEnv/default.nix
@@ -0,0 +1,84 @@
+{ 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 {
+ # This test proves an issue with buildFHSEnv - don't expect it to succeed,
+ # this is discussed in https://github.com/NixOS/nixpkgs/pull/279844 .
+ libtinfo = makeSharedObjectTest (getSharedObjectFromDebian "libedit.so.2.0.70" (fetchurl {
+ url = "mirror://debian/pool/main/libe/libedit/libedit2_3.1-20221030-2_amd64.deb";
+ hash = "sha256-HPFKvycW0yedsS0GV6VzfPcAdKHnHTvfcyBmJePInOY=";
+ })) (p: let
+ ncurses' = p.ncurses.overrideAttrs (old: {
+ configureFlags = old.configureFlags ++ [ "--with-termlib" ];
+ postFixup = "";
+ });
+ in [
+ (ncurses'.override { unicodeSupport = false; })
+ p.libbsd
+ ]);
+
+ 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
+ ]);
+}
diff --git a/pkgs/test/default.nix b/pkgs/test/default.nix
index f6a1b0286cb4..b89fcc3ecb6d 100644
--- a/pkgs/test/default.nix
+++ b/pkgs/test/default.nix
@@ -169,6 +169,8 @@ with pkgs;
pkgs-lib = recurseIntoAttrs (import ../pkgs-lib/tests { inherit pkgs; });
+ buildFHSEnv = recurseIntoAttrs (callPackages ./buildFHSEnv { });
+
nixpkgs-check-by-name = callPackage ./nixpkgs-check-by-name { };
auto-patchelf-hook = callPackage ./auto-patchelf-hook { };