summaryrefslogtreecommitdiffstats
path: root/pkgs/tools/security/chipsec
diff options
context:
space:
mode:
authorDaniel Schaefer <daniel.schaefer@hpe.com>2021-04-09 14:32:28 +0800
committerDaniel Schaefer <daniel.schaefer@hpe.com>2021-04-09 23:00:28 +0800
commitb036fe2fede8507cf732d1f6378783d57925b6c7 (patch)
tree98d20102dcaad94157ad7596f82691943f3837f8 /pkgs/tools/security/chipsec
parent74ad753b4f9fd891b629595ae9ae23bd25e41252 (diff)
chipsec: Fix building kernel module
In recent versions of chipsec the build scripts have changed and we haven't built the kernel module in nixpkgs. Upstream has changed the variable for the kernel sources. Additional patches are needed as a workaround. Those issues should be fixed upstream.
Diffstat (limited to 'pkgs/tools/security/chipsec')
-rw-r--r--pkgs/tools/security/chipsec/compile-ko.diff13
-rw-r--r--pkgs/tools/security/chipsec/default.nix18
-rw-r--r--pkgs/tools/security/chipsec/ko-path.diff13
3 files changed, 42 insertions, 2 deletions
diff --git a/pkgs/tools/security/chipsec/compile-ko.diff b/pkgs/tools/security/chipsec/compile-ko.diff
new file mode 100644
index 000000000000..0ab2c80a6251
--- /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 8fe28229d8cd..fbb9c421e353 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 000000000000..ad26d232d964
--- /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):