diff --git a/pkgs/tools/security/chipsec/compile-ko.diff b/pkgs/tools/security/chipsec/compile-ko.diff new file mode 100644 index 00000000000..0ab2c80a625 --- /dev/null +++ b/pkgs/tools/security/chipsec/compile-ko.diff @@ -0,0 +1,13 @@ +diff --git i/setup.py w/setup.py +index cfe2665..5795874 100755 +--- i/setup.py ++++ w/setup.py +@@ -179,7 +179,7 @@ class build_ext(_build_ext): + driver_build_function = self._build_win_driver + self._build_win_compression() + +- if not self.skip_driver: ++ if True: + driver_build_function() + + def get_source_files(self): diff --git a/pkgs/tools/security/chipsec/default.nix b/pkgs/tools/security/chipsec/default.nix index 8fe28229d8c..fbb9c421e35 100644 --- a/pkgs/tools/security/chipsec/default.nix +++ b/pkgs/tools/security/chipsec/default.nix @@ -20,7 +20,9 @@ python3.pkgs.buildPythonApplication rec { sha256 = "01sp24z63r3nqxx57zc4873b8i5dqipy7yrxzrwjns531vznhiy2"; }; - KERNEL_SRC_DIR = lib.optionalString withDriver "${kernel.dev}/lib/modules/${kernel.modDirVersion}/build"; + patches = lib.optionals withDriver [ ./ko-path.diff ./compile-ko.diff ]; + + KSRC = lib.optionalString withDriver "${kernel.dev}/lib/modules/${kernel.modDirVersion}/build"; nativeBuildInputs = [ libelf @@ -32,7 +34,19 @@ python3.pkgs.buildPythonApplication rec { python3.pkgs.pytestCheckHook ]; - setupPyBuildFlags = lib.optional (!withDriver) "--skip-driver"; + preBuild = lib.optionalString withDriver '' + export CHIPSEC_BUILD_LIB=$(mktemp -d) + mkdir -p $CHIPSEC_BUILD_LIB/chipsec/helper/linux + ''; + + preInstall = lib.optionalString withDriver '' + mkdir -p $out/${python3.pkgs.python.sitePackages}/drivers/linux + mv $CHIPSEC_BUILD_LIB/chipsec/helper/linux/chipsec.ko \ + $out/${python3.pkgs.python.sitePackages}/drivers/linux/chipsec.ko + ''; + + setupPyBuildFlags = [ "--build-lib=$CHIPSEC_BUILD_LIB" ] + ++ lib.optional (!withDriver) "--skip-driver"; pythonImportsCheck = [ "chipsec" ]; diff --git a/pkgs/tools/security/chipsec/ko-path.diff b/pkgs/tools/security/chipsec/ko-path.diff new file mode 100644 index 00000000000..ad26d232d96 --- /dev/null +++ b/pkgs/tools/security/chipsec/ko-path.diff @@ -0,0 +1,13 @@ +diff --git c/chipsec/helper/linux/linuxhelper.py i/chipsec/helper/linux/linuxhelper.py +index c51b5e6..4be05ea 100644 +--- c/chipsec/helper/linux/linuxhelper.py ++++ i/chipsec/helper/linux/linuxhelper.py +@@ -152,7 +152,7 @@ class LinuxHelper(Helper): + else: + a2 = "a2=0x{}".format(phys_mem_access_prot) + +- driver_path = os.path.join(chipsec.file.get_main_dir(), "chipsec", "helper", "linux", "chipsec.ko" ) ++ driver_path = os.path.join(chipsec.file.get_main_dir(), "drivers", "linux", "chipsec.ko" ) + if not os.path.exists(driver_path): + driver_path += ".xz" + if not os.path.exists(driver_path):