Skip to content

Commit

Permalink
Merge pull request NixOS#303009 from baloo/baloo/tpm2-pytss/fixup-cro…
Browse files Browse the repository at this point in the history
…ss-compilation

python311Packages.tpm2-pytss: fix cross-compilation
  • Loading branch information
Mindavi authored Apr 15, 2024
2 parents d148435 + bd17c30 commit e214dd2
Show file tree
Hide file tree
Showing 2 changed files with 39 additions and 0 deletions.
22 changes: 22 additions & 0 deletions pkgs/development/python-modules/tpm2-pytss/cross.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
diff --git a/setup.py b/setup.py
index 1b5f513..d660b9a 100644
--- a/setup.py
+++ b/setup.py
@@ -184,7 +184,8 @@ class type_generator(build_ext):
f"unable to find tss2_tpm2_types.h in {pk['include_dirs']}"
)
pdata = preprocess_file(
- header_path, cpp_args=["-D__extension__=", "-D__attribute__(x)="]
+ header_path, cpp_args=["-D__extension__=", "-D__attribute__(x)="],
+ cpp_path="@crossPrefix@-cpp",
)
parser = c_parser.CParser()
ast = parser.parse(pdata, "tss2_tpm2_types.h")
@@ -210,6 +211,7 @@ class type_generator(build_ext):
"-D__float128=long double",
"-D_FORTIFY_SOURCE=0",
],
+ cpp_path="@crossPrefix@-cpp",
)
parser = c_parser.CParser()
past = parser.parse(pdata, "tss2_policy.h")
17 changes: 17 additions & 0 deletions pkgs/development/python-modules/tpm2-pytss/default.nix
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
{ lib
, stdenv
, substituteAll
, buildPythonPackage
, fetchPypi
, pythonOlder
Expand All @@ -17,6 +19,9 @@
, swtpm
}:

let
isCross = (stdenv.buildPlatform != stdenv.hostPlatform);
in
buildPythonPackage rec {
pname = "tpm2-pytss";
version = "2.2.1";
Expand All @@ -32,6 +37,18 @@ buildPythonPackage rec {
patches = [
# Fix hardcoded `fapi-config.json` configuration path
./fapi-config.patch
] ++ lib.optionals isCross [
# pytss will regenerate files from headers of tpm2-tss.
# Those headers are fed through a compiler via pycparser. pycparser expects `cpp`
# to be in the path.
# This is put in the path via stdenv when not cross-compiling, but this is absent
# when cross-compiling is turned on.
# This patch changes the call to pycparser.preprocess_file to provide the name
# of the cross-compiling cpp
(substituteAll {
src = ./cross.patch;
crossPrefix = stdenv.hostPlatform.config;
})
];

postPatch = ''
Expand Down

0 comments on commit e214dd2

Please sign in to comment.