haskellPackages.password: use crypton, disable scrypt on non-x86

- crypton is maintained, contrary to cryptonite
- since the Hackage scrypt package uses SSE2, we can't build it on
  non-x86 platforms (non x86_64 even probably). The best option
  is to disable the Scrypt module. To prevent cabal from pulling
  in scrypt in spite of that, we need to patch build-depends to
  respect the flag.
This commit is contained in:
sternenseemann
2024-10-26 01:35:13 +02:00
parent a3532c957d
commit 169b24df41
4 changed files with 50 additions and 5 deletions
@@ -829,8 +829,6 @@ supported-platforms:
midi-alsa: [ platforms.linux ] # alsa-core only supported on linux
midisurface: [ platforms.linux ] # alsa-core only supported on linux
OrderedBits: [ platforms.x86 ] # lacks implementations for non-x86: https://github.com/choener/OrderedBits/blob/401cbbe933b1635aa33e8e9b29a4a570b0a8f044/lib/Data/Bits/Ordered.hs#L316
password: [ platforms.x86 ] # uses scrypt, which requries x86
password-instances: [ platforms.x86 ] # uses scrypt, which requries x86
reactivity: [ platforms.windows ]
reflex-libtelnet: [ platforms.linux ] # pkgs.libtelnet only supports linux
scat: [ platforms.x86 ] # uses scrypt, which requries x86
@@ -113,6 +113,35 @@ self: super: builtins.intersectAttrs super {
'' + drv.preCheck or "";
}) super.agda2lagda;
# - Disable scrypt support since the library used only works on x86 due to SSE2:
# https://github.com/informatikr/scrypt/issues/8
# - Use crypton as the encryption backend. That override becomes obsolete with
# 3.1.* since cabal2nix picks crypton by default then.
password =
let
scryptSupported = pkgs.stdenv.hostPlatform.isx86;
in
lib.pipe
(super.password.override ({
cryptonite = self.crypton;
} // lib.optionalAttrs (!scryptSupported) {
scrypt = null;
}))
([
(enableCabalFlag "crypton")
(disableCabalFlag "cryptonite")
# https://github.com/cdepillabout/password/pull/84
(appendPatch ./patches/password-3.0.4.0-scrypt-conditional.patch)
(overrideCabal (drv: {
# patch doesn't apply otherwise because of revisions
prePatch = drv.prePatch or "" + ''
${pkgs.buildPackages.dos2unix}/bin/dos2unix *.cabal
'';
}))
] ++ lib.optionals (!scryptSupported) [
(disableCabalFlag "scrypt")
]);
audacity = enableCabalFlag "buildExamples" (overrideCabal (drv: {
executableHaskellDepends = [self.optparse-applicative self.soxlib];
-3
View File
@@ -234439,7 +234439,6 @@ self: {
];
description = "Hashing and checking of passwords";
license = lib.licenses.bsd3;
platforms = lib.platforms.x86;
maintainers = [ lib.maintainers.cdepillabout ];
}) {};
@@ -234465,7 +234464,6 @@ self: {
];
description = "Hashing and checking of passwords";
license = lib.licenses.bsd3;
platforms = lib.platforms.x86;
hydraPlatforms = lib.platforms.none;
maintainers = [ lib.maintainers.cdepillabout ];
}) {};
@@ -234491,7 +234489,6 @@ self: {
];
description = "typeclass instances for password package";
license = lib.licenses.bsd3;
platforms = lib.platforms.x86;
maintainers = [ lib.maintainers.cdepillabout ];
}) {};
@@ -0,0 +1,21 @@
diff --git a/password/password.cabal b/password/password.cabal
index 506457e..8fa978b 100644
--- a/password.cabal
+++ b/password.cabal
@@ -186,6 +186,8 @@ test-suite password-tasty
other-modules:
Scrypt
Data.Password.Scrypt
+ build-depends:
+ scrypt
ghc-options:
-threaded -O2 -rtsopts -with-rtsopts=-N
build-depends:
@@ -195,7 +197,6 @@ test-suite password-tasty
, bytestring
, memory
, quickcheck-instances
- , scrypt
, tasty
, tasty-hunit
, tasty-quickcheck