diff options
author | Alyssa Ross <hi@alyssa.is> | 2021-08-04 10:43:07 +0000 |
---|---|---|
committer | Alyssa Ross <hi@alyssa.is> | 2021-08-04 10:43:07 +0000 |
commit | 62614cbef7da005c1eda8c9400160f6bcd6546b8 (patch) | |
tree | c2630f69080637987b68acb1ee8676d2681fe304 /pkgs/development/libraries/tpm2-tss | |
parent | d9c82ed3044c72cecf01c6ea042489d30914577c (diff) | |
parent | e24069138dfec3ef94f211f1da005bb5395adc11 (diff) | |
download | nixpkgs-62614cbef7da005c1eda8c9400160f6bcd6546b8.tar nixpkgs-62614cbef7da005c1eda8c9400160f6bcd6546b8.tar.gz nixpkgs-62614cbef7da005c1eda8c9400160f6bcd6546b8.tar.bz2 nixpkgs-62614cbef7da005c1eda8c9400160f6bcd6546b8.tar.lz nixpkgs-62614cbef7da005c1eda8c9400160f6bcd6546b8.tar.xz nixpkgs-62614cbef7da005c1eda8c9400160f6bcd6546b8.tar.zst nixpkgs-62614cbef7da005c1eda8c9400160f6bcd6546b8.zip |
Merge branch 'nixpkgs-update' into master
Diffstat (limited to 'pkgs/development/libraries/tpm2-tss')
-rw-r--r-- | pkgs/development/libraries/tpm2-tss/default.nix | 32 | ||||
-rw-r--r-- | pkgs/development/libraries/tpm2-tss/no-dynamic-loader-path.patch | 39 |
2 files changed, 66 insertions, 5 deletions
diff --git a/pkgs/development/libraries/tpm2-tss/default.nix b/pkgs/development/libraries/tpm2-tss/default.nix index 2421d3f8899..a272cf8b934 100644 --- a/pkgs/development/libraries/tpm2-tss/default.nix +++ b/pkgs/development/libraries/tpm2-tss/default.nix @@ -1,18 +1,18 @@ { stdenv, lib, fetchFromGitHub , autoreconfHook, autoconf-archive, pkg-config, doxygen, perl , openssl, json_c, curl, libgcrypt -, cmocka, uthash, ibm-sw-tpm2, iproute, procps, which +, cmocka, uthash, ibm-sw-tpm2, iproute2, procps, which }: stdenv.mkDerivation rec { pname = "tpm2-tss"; - version = "2.4.1"; + version = "3.0.3"; src = fetchFromGitHub { owner = "tpm2-software"; repo = pname; rev = version; - sha256 = "09x5czaj4a8cyf8cxavcasx3yy1kik1s45a90c7zvxb7y1kfp9zs"; + sha256 = "106yhsjwjadxsl9dqxywg287mdwsksman02hdalhav18vcnvnlpj"; }; nativeBuildInputs = [ @@ -20,14 +20,28 @@ stdenv.mkDerivation rec { ]; buildInputs = [ openssl json_c curl libgcrypt ]; checkInputs = [ - cmocka uthash ibm-sw-tpm2 iproute procps which + cmocka uthash ibm-sw-tpm2 iproute2 procps which ]; preAutoreconf = "./bootstrap"; enableParallelBuilding = true; - postPatch = "patchShebangs script"; + patches = [ + # Do not rely on dynamic loader path + # TCTI loader relies on dlopen(), this patch prefixes all calls with the output directory + ./no-dynamic-loader-path.patch + ]; + + postPatch = '' + patchShebangs script + substituteInPlace src/tss2-tcti/tctildr-dl.c \ + --replace '@PREFIX@' $out/lib/ + substituteInPlace ./test/unit/tctildr-dl.c \ + --replace ', "libtss2' ", \"$out/lib/libtss2" \ + --replace ', "foo' ", \"$out/lib/foo" \ + --replace ', TEST_TCTI_NAME' ", \"$out/lib/\"TEST_TCTI_NAME" + ''; configureFlags = [ "--enable-unit" @@ -35,6 +49,14 @@ stdenv.mkDerivation rec { ]; doCheck = true; + preCheck = '' + # Since we rewrote the load path in the dynamic loader for the TCTI + # The various tcti implementation should be placed in their target directory + # before we could run tests + installPhase + # install already done, dont need another one + dontInstall=1 + ''; postInstall = '' # Do not install the upstream udev rules, they rely on specific diff --git a/pkgs/development/libraries/tpm2-tss/no-dynamic-loader-path.patch b/pkgs/development/libraries/tpm2-tss/no-dynamic-loader-path.patch new file mode 100644 index 00000000000..86cdcd1541e --- /dev/null +++ b/pkgs/development/libraries/tpm2-tss/no-dynamic-loader-path.patch @@ -0,0 +1,39 @@ +diff --git a/src/tss2-tcti/tctildr-dl.c b/src/tss2-tcti/tctildr-dl.c +index b364695c..b13be3ef 100644 +--- a/src/tss2-tcti/tctildr-dl.c ++++ b/src/tss2-tcti/tctildr-dl.c +@@ -85,7 +85,15 @@ handle_from_name(const char *file, + if (handle == NULL) { + return TSS2_TCTI_RC_BAD_REFERENCE; + } +- *handle = dlopen(file, RTLD_NOW); ++ size = snprintf(file_xfrm, ++ sizeof (file_xfrm), ++ "@PREFIX@%s", ++ file); ++ if (size >= sizeof (file_xfrm)) { ++ LOG_ERROR("TCTI name truncated in transform."); ++ return TSS2_TCTI_RC_BAD_VALUE; ++ } ++ *handle = dlopen(file_xfrm, RTLD_NOW); + if (*handle != NULL) { + return TSS2_RC_SUCCESS; + } else { +@@ -94,7 +102,7 @@ handle_from_name(const char *file, + /* 'name' alone didn't work, try libtss2-tcti-<name>.so.0 */ + size = snprintf(file_xfrm, + sizeof (file_xfrm), +- TCTI_NAME_TEMPLATE_0, ++ "@PREFIX@" TCTI_NAME_TEMPLATE_0, + file); + if (size >= sizeof (file_xfrm)) { + LOG_ERROR("TCTI name truncated in transform."); +@@ -109,7 +117,7 @@ handle_from_name(const char *file, + /* libtss2-tcti-<name>.so.0 didn't work, try libtss2-tcti-<name>.so */ + size = snprintf(file_xfrm, + sizeof (file_xfrm), +- TCTI_NAME_TEMPLATE, ++ "@PREFIX@" TCTI_NAME_TEMPLATE, + file); + if (size >= sizeof (file_xfrm)) { + LOG_ERROR("TCTI name truncated in transform."); |