summary refs log tree commit diff
path: root/pkgs/development/python-modules/pyscard/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/development/python-modules/pyscard/default.nix')
-rw-r--r--pkgs/development/python-modules/pyscard/default.nix40
1 files changed, 26 insertions, 14 deletions
diff --git a/pkgs/development/python-modules/pyscard/default.nix b/pkgs/development/python-modules/pyscard/default.nix
index bab8e502b9c..06e2690c111 100644
--- a/pkgs/development/python-modules/pyscard/default.nix
+++ b/pkgs/development/python-modules/pyscard/default.nix
@@ -1,5 +1,13 @@
 { stdenv, fetchPypi, fetchpatch, buildPythonPackage, swig, pcsclite, PCSC }:
 
+let
+  # Package does not support configuring the pcsc library.
+  withApplePCSC = stdenv.isDarwin;
+
+  inherit (stdenv.lib) getLib getDev optionalString optionals;
+  inherit (stdenv.hostPlatform.extensions) sharedLibrary;
+in
+
 buildPythonPackage rec {
   version = "1.9.8";
   pname = "pyscard";
@@ -9,24 +17,28 @@ buildPythonPackage rec {
     sha256 = "15fh00z1an6r5j7hrz3jlq0rb3jygwf3x4jcwsa008bv8vpcg7gm";
   };
 
-  postPatch = ''
-    sed -e 's!"libpcsclite\.so\.1"!"${stdenv.lib.getLib pcsclite}/lib/libpcsclite.so.1"!' \
-        -i smartcard/scard/winscarddll.c
+  postPatch = if withApplePCSC then ''
+    substituteInPlace smartcard/scard/winscarddll.c \
+      --replace "/System/Library/Frameworks/PCSC.framework/PCSC" \
+                "${PCSC}/Library/Frameworks/PCSC.framework/PCSC"
+  '' else ''
+    substituteInPlace smartcard/scard/winscarddll.c \
+      --replace "libpcsclite.so.1" \
+                "${getLib pcsclite}/lib/libpcsclite${sharedLibrary}"
   '';
 
-  NIX_CFLAGS_COMPILE = "-isystem ${stdenv.lib.getDev pcsclite}/include/PCSC/";
+  NIX_CFLAGS_COMPILE = optionalString (! withApplePCSC)
+    "-I ${getDev pcsclite}/include/PCSC";
 
-  patches = [
-    # Fixes darwin tests
-    # See: https://github.com/LudovicRousseau/pyscard/issues/77
-    (fetchpatch {
-      url = "https://github.com/LudovicRousseau/pyscard/commit/62e675028086c75656444cc21d563d9f08ebf8e7.patch";
-      sha256 = "1lr55npcpc8j750vf7vaisqyk18d5f00l7nii2lvawg4sssjaaf7";
-    })
-  ];
+  # The error message differs depending on the macOS host version.
+  # Since Nix reports a constant host version, but proxies to the
+  # underlying library, it's not possible to determine the correct
+  # expected error message.  This patch allows both errors to be
+  # accepted.
+  # See: https://github.com/LudovicRousseau/pyscard/issues/77
+  patches = optionals withApplePCSC [ ./ignore-macos-bug.patch ];
 
-  propagatedBuildInputs = [ pcsclite ];
-  buildInputs = stdenv.lib.optional stdenv.isDarwin PCSC;
+  propagatedBuildInputs = if withApplePCSC then [ PCSC ] else [ pcsclite ];
   nativeBuildInputs = [ swig ];
 
   meta = {