diff --git a/pkgs/by-name/op/openscap/package.nix b/pkgs/by-name/op/openscap/package.nix index 34776269a5ca..c7e090b03d47 100644 --- a/pkgs/by-name/op/openscap/package.nix +++ b/pkgs/by-name/op/openscap/package.nix @@ -26,6 +26,7 @@ valgrind, asciidoc, installShellFiles, + makeWrapper, rpm, system-sendmail, gnome2, @@ -55,6 +56,7 @@ stdenv.mkDerivation rec { cmake asciidoc doxygen + makeWrapper rpm swig util-linux @@ -104,6 +106,10 @@ stdenv.mkDerivation rec { --replace-fail "DESTINATION ''${PERL_VENDORARCH}" "DESTINATION ''${SWIG_PERL_DIR}" substituteInPlace src/common/oscap_pcre.c \ --replace-fail "#include " "#include <${pcre2.dev}/include/pcre2.h>" + + # Patch SCE engine to not hardcode FHS paths, allowing it to use the transient environment's PATH + substituteInPlace src/SCE/sce_engine.c \ + --replace-fail 'env_values[0] = "PATH=/bin:/sbin:/usr/bin:/usr/local/bin:/usr/sbin";' 'env_values[0] = "_PATCHED_OUT_DUMMY_VAR=patched-out";' ''; cmakeFlags = [ @@ -143,6 +149,13 @@ stdenv.mkDerivation rec { rm -rf $out/share/man8 ''; + postFixup = '' + # Set plugin directory to discover the SCE plugin. + # openscap calls dlopen with this as the directory prefix. + wrapProgram $out/bin/oscap \ + --set OSCAP_CHECK_ENGINE_PLUGIN_DIR $out/lib + ''; + meta = { description = "NIST Certified SCAP 1.2 toolkit"; homepage = "https://github.com/OpenSCAP/openscap";