Unverified Commit e214dd26 authored by Rick van Schijndel's avatar Rick van Schijndel Committed by GitHub
Browse files

Merge pull request #303009 from baloo/baloo/tpm2-pytss/fixup-cross-compilation

python311Packages.tpm2-pytss: fix cross-compilation
parents d1484355 bd17c30c
Loading
Loading
Loading
Loading
+22 −0
Original line number Diff line number Diff line
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 −0
Original line number Diff line number Diff line
{ lib
, stdenv
, substituteAll
, buildPythonPackage
, fetchPypi
, pythonOlder
@@ -17,6 +19,9 @@
, swtpm
}:

let
  isCross = (stdenv.buildPlatform != stdenv.hostPlatform);
in
buildPythonPackage rec {
  pname = "tpm2-pytss";
  version = "2.2.1";
@@ -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 = ''