diff options
Diffstat (limited to 'nixpkgs/pkgs/tools/security/pcsclite')
-rw-r--r-- | nixpkgs/pkgs/tools/security/pcsclite/default.nix | 71 | ||||
-rw-r--r-- | nixpkgs/pkgs/tools/security/pcsclite/no-dropdir-literals.patch | 47 |
2 files changed, 118 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/tools/security/pcsclite/default.nix b/nixpkgs/pkgs/tools/security/pcsclite/default.nix new file mode 100644 index 000000000000..db3ddd167a60 --- /dev/null +++ b/nixpkgs/pkgs/tools/security/pcsclite/default.nix @@ -0,0 +1,71 @@ +{ stdenv +, lib +, fetchurl +, autoreconfHook +, autoconf-archive +, pkg-config +, perl +, python3 +, dbus +, polkit +, systemd +, IOKit +}: + +stdenv.mkDerivation rec { + pname = "pcsclite"; + version = "1.9.5"; + + outputs = [ "bin" "out" "dev" "doc" "man" ]; + + src = fetchurl { + url = "https://pcsclite.apdu.fr/files/pcsc-lite-${version}.tar.bz2"; + sha256 = "sha256:024x0hadn0kc0m9yz3l2pqzc5mdqyza9lmckg0bn4xak6frzkqwy"; + }; + + patches = [ ./no-dropdir-literals.patch ]; + + postPatch = '' + sed -i configure.ac \ + -e "s@polkit_policy_dir=.*@polkit_policy_dir=$bin/share/polkit-1/actions@" + ''; + + configureFlags = [ + "--enable-confdir=/etc" + # The OS should care on preparing the drivers into this location + "--enable-usbdropdir=/var/lib/pcsc/drivers" + ] + ++ (if stdenv.isLinux then [ + "--enable-ipcdir=/run/pcscd" + "--enable-polkit" + "--with-systemdsystemunitdir=${placeholder "bin"}/lib/systemd/system" + ] else [ + "--disable-libsystemd" + ]); + + postConfigure = '' + sed -i -re '/^#define *PCSCLITE_HP_DROPDIR */ { + s/(DROPDIR *)(.*)/\1(getenv("PCSCLITE_HP_DROPDIR") ? : \2)/ + }' config.h + ''; + + postInstall = '' + # pcsc-spy is a debugging utility and it drags python into the closure + moveToOutput bin/pcsc-spy "$dev" + ''; + + enableParallelBuilding = true; + + nativeBuildInputs = [ autoreconfHook autoconf-archive pkg-config perl ]; + + buildInputs = [ python3 ] + ++ lib.optionals stdenv.isLinux [ dbus polkit systemd ] + ++ lib.optionals stdenv.isDarwin [ IOKit ]; + + meta = with lib; { + description = "Middleware to access a smart card using SCard API (PC/SC)"; + homepage = "https://pcsclite.apdu.fr/"; + license = licenses.bsd3; + platforms = with platforms; unix; + }; +} diff --git a/nixpkgs/pkgs/tools/security/pcsclite/no-dropdir-literals.patch b/nixpkgs/pkgs/tools/security/pcsclite/no-dropdir-literals.patch new file mode 100644 index 000000000000..4c6d5554d77a --- /dev/null +++ b/nixpkgs/pkgs/tools/security/pcsclite/no-dropdir-literals.patch @@ -0,0 +1,47 @@ +diff --git a/src/hotplug_libudev.c b/src/hotplug_libudev.c +index 51bd95f..84f959b 100644 +--- a/src/hotplug_libudev.c ++++ b/src/hotplug_libudev.c +@@ -120,7 +120,8 @@ static LONG HPReadBundleValues(void) + + if (NULL == hpDir) + { +- Log1(PCSC_LOG_ERROR, "Cannot open PC/SC drivers directory: " PCSCLITE_HP_DROPDIR); ++ Log2(PCSC_LOG_ERROR, "Cannot open PC/SC drivers directory: %s", ++ PCSCLITE_HP_DROPDIR); + Log1(PCSC_LOG_ERROR, "Disabling USB support for pcscd."); + return -1; + } +@@ -741,7 +742,7 @@ ULONG HPRegisterForHotplugEvents(void) + + if (driverSize <= 0) + { +- Log1(PCSC_LOG_INFO, "No bundle files in pcsc drivers directory: " ++ Log2(PCSC_LOG_INFO, "No bundle files in pcsc drivers directory: %s", + PCSCLITE_HP_DROPDIR); + Log1(PCSC_LOG_INFO, "Disabling USB support for pcscd"); + return 0; +diff --git a/src/hotplug_libusb.c b/src/hotplug_libusb.c +index 0ada9f5..d49a407 100644 +--- a/src/hotplug_libusb.c ++++ b/src/hotplug_libusb.c +@@ -142,7 +142,8 @@ static LONG HPReadBundleValues(void) + + if (hpDir == NULL) + { +- Log1(PCSC_LOG_ERROR, "Cannot open PC/SC drivers directory: " PCSCLITE_HP_DROPDIR); ++ Log2(PCSC_LOG_ERROR, "Cannot open PC/SC drivers directory: %s", ++ PCSCLITE_HP_DROPDIR); + Log1(PCSC_LOG_ERROR, "Disabling USB support for pcscd."); + return -1; + } +@@ -282,7 +283,8 @@ static LONG HPReadBundleValues(void) + + if (driverSize == 0) + { +- Log1(PCSC_LOG_INFO, "No bundle files in pcsc drivers directory: " PCSCLITE_HP_DROPDIR); ++ Log2(PCSC_LOG_INFO, "No bundle files in pcsc drivers directory: %s", ++ PCSCLITE_HP_DROPDIR); + Log1(PCSC_LOG_INFO, "Disabling USB support for pcscd"); + } + #ifdef DEBUG_HOTPLUG |