From 6bb5edd7b181851edff8fb2de27873d7088a808c Mon Sep 17 00:00:00 2001 From: Florian Brandes Date: Thu, 11 Jul 2024 17:47:44 +0200 Subject: [PATCH 1/2] passExtensions.pass-audit: fix python3.12 compat Signed-off-by: Florian Brandes --- .../pass/extensions/audit/default.nix | 44 ++++++++++++++----- 1 file changed, 34 insertions(+), 10 deletions(-) diff --git a/pkgs/tools/security/pass/extensions/audit/default.nix b/pkgs/tools/security/pass/extensions/audit/default.nix index 055af774a624..c8e24356797d 100644 --- a/pkgs/tools/security/pass/extensions/audit/default.nix +++ b/pkgs/tools/security/pass/extensions/audit/default.nix @@ -1,11 +1,24 @@ -{ lib, stdenv, pass, fetchFromGitHub, pythonPackages, makeWrapper, gnupg }: +{ + lib, + stdenv, + pass, + fetchFromGitHub, + pythonPackages, + gnupg, +}: let - pythonEnv = pythonPackages.python.withPackages (p: [ p.requests p.setuptools p.zxcvbn ]); + pythonEnv = pythonPackages.python.withPackages (p: [ + p.requests + p.setuptools + p.zxcvbn + ]); -in stdenv.mkDerivation rec { +in +pythonPackages.buildPythonApplication rec { pname = "pass-audit"; version = "1.2"; + pyproject = true; src = fetchFromGitHub { owner = "roddhjav"; @@ -22,29 +35,40 @@ in stdenv.mkDerivation rec { postPatch = '' substituteInPlace audit.bash \ --replace-fail 'python3' "${pythonEnv.interpreter}" - substituteInPlace Makefile \ - --replace-fail "install --root" "install --prefix ''' --root" + rm Makefile + patchShebangs audit.bash ''; - outputs = [ "out" "man" ]; + outputs = [ + "out" + "man" + ]; - buildInputs = [ pythonEnv ]; - nativeBuildInputs = [ makeWrapper ]; + build-system = with pythonPackages; [ setuptools ]; + dependencies = [ pythonEnv ]; # Tests freeze on darwin with: pass-audit-1.1 (checkPhase): EOFError doCheck = !stdenv.isDarwin; - nativeCheckInputs = [ pythonPackages.green pass gnupg ]; + nativeCheckInputs = [ + pythonPackages.green + pass + gnupg + ]; checkPhase = '' ${pythonEnv.interpreter} -m green -q ''; - installFlags = [ "DESTDIR=${placeholder "out"}" "PREFIX=" ]; postInstall = '' + mkdir -p $out/lib/password-store/extensions + install -m777 audit.bash $out/lib/password-store/extensions/audit.bash + cp -r share $out/ wrapProgram $out/lib/password-store/extensions/audit.bash \ --prefix PYTHONPATH : "$out/${pythonEnv.sitePackages}" \ --run "export COMMAND" ''; + pythonImportsCheck = [ "pass_audit" ]; + meta = with lib; { description = "Pass extension for auditing your password repository"; homepage = "https://github.com/roddhjav/pass-audit"; From d94ccbdd12ed948ec8adbd4a1826683f0d30e745 Mon Sep 17 00:00:00 2001 From: Maximilian Bosch Date: Thu, 11 Jul 2024 23:39:09 +0200 Subject: [PATCH 2/2] passExtensions.pass-audit: get rid of pythonEnv It seems a little odd to first generate an interpreter pointing to an environment and then building a package from it. This commit alters the build process so that * dependencies are listed explicitly as in any normal python build. * a PYTHONPATH is then generated out of all dependencies and $out. This is injected into the package's entrypoint, the `audit.bash`. --- .../pass/extensions/audit/default.nix | 29 +++++++++---------- .../security/pass/extensions/default.nix | 6 ++-- 2 files changed, 15 insertions(+), 20 deletions(-) diff --git a/pkgs/tools/security/pass/extensions/audit/default.nix b/pkgs/tools/security/pass/extensions/audit/default.nix index c8e24356797d..d3f196a20563 100644 --- a/pkgs/tools/security/pass/extensions/audit/default.nix +++ b/pkgs/tools/security/pass/extensions/audit/default.nix @@ -3,19 +3,11 @@ stdenv, pass, fetchFromGitHub, - pythonPackages, + python3, gnupg, }: -let - pythonEnv = pythonPackages.python.withPackages (p: [ - p.requests - p.setuptools - p.zxcvbn - ]); - -in -pythonPackages.buildPythonApplication rec { +python3.pkgs.buildPythonApplication rec { pname = "pass-audit"; version = "1.2"; pyproject = true; @@ -34,7 +26,7 @@ pythonPackages.buildPythonApplication rec { postPatch = '' substituteInPlace audit.bash \ - --replace-fail 'python3' "${pythonEnv.interpreter}" + --replace-fail python3 "${lib.getExe python3}" rm Makefile patchShebangs audit.bash ''; @@ -44,26 +36,31 @@ pythonPackages.buildPythonApplication rec { "man" ]; - build-system = with pythonPackages; [ setuptools ]; - dependencies = [ pythonEnv ]; + build-system = with python3.pkgs; [ setuptools ]; + dependencies = with python3.pkgs; [ + requests + setuptools + zxcvbn + ]; # Tests freeze on darwin with: pass-audit-1.1 (checkPhase): EOFError doCheck = !stdenv.isDarwin; nativeCheckInputs = [ - pythonPackages.green + python3.pkgs.green pass gnupg ]; checkPhase = '' - ${pythonEnv.interpreter} -m green -q + python3 -m green -q ''; postInstall = '' mkdir -p $out/lib/password-store/extensions install -m777 audit.bash $out/lib/password-store/extensions/audit.bash cp -r share $out/ + buildPythonPath "$out $dependencies" wrapProgram $out/lib/password-store/extensions/audit.bash \ - --prefix PYTHONPATH : "$out/${pythonEnv.sitePackages}" \ + --prefix PYTHONPATH : "$PYTHONPATH" \ --run "export COMMAND" ''; diff --git a/pkgs/tools/security/pass/extensions/default.nix b/pkgs/tools/security/pass/extensions/default.nix index b9c45a1096d3..dfb5dfa35bd0 100644 --- a/pkgs/tools/security/pass/extensions/default.nix +++ b/pkgs/tools/security/pass/extensions/default.nix @@ -1,13 +1,11 @@ { pkgs, ... }: let - inherit (pkgs) callPackage python3Packages; + inherit (pkgs) callPackage; in { - pass-audit = callPackage ./audit { - pythonPackages = python3Packages; - }; + pass-audit = callPackage ./audit {}; pass-checkup = callPackage ./checkup.nix {}; pass-import = callPackage ./import.nix {}; pass-otp = callPackage ./otp.nix {};