summary refs log tree commit diff
path: root/pkgs/os-specific/linux/wpa_supplicant
diff options
context:
space:
mode:
authorWilliam A. Kennington III <william@wkennington.com>2015-04-24 13:27:40 -0700
committerWilliam A. Kennington III <william@wkennington.com>2015-04-24 15:02:25 -0700
commit4ae59b199a45604735a01896a650f78684d48a5c (patch)
treeb7374126a03fbaa549d63da0043c9a761261a1c0 /pkgs/os-specific/linux/wpa_supplicant
parentc719235b403b65b040193419bf3fa1c356b6dda4 (diff)
downloadnixlib-4ae59b199a45604735a01896a650f78684d48a5c.tar
nixlib-4ae59b199a45604735a01896a650f78684d48a5c.tar.gz
nixlib-4ae59b199a45604735a01896a650f78684d48a5c.tar.bz2
nixlib-4ae59b199a45604735a01896a650f78684d48a5c.tar.lz
nixlib-4ae59b199a45604735a01896a650f78684d48a5c.tar.xz
nixlib-4ae59b199a45604735a01896a650f78684d48a5c.tar.zst
nixlib-4ae59b199a45604735a01896a650f78684d48a5c.zip
wpa_supplicant: 2.3 -> 2.4
Diffstat (limited to 'pkgs/os-specific/linux/wpa_supplicant')
-rw-r--r--pkgs/os-specific/linux/wpa_supplicant/build-fix.patch12
-rw-r--r--pkgs/os-specific/linux/wpa_supplicant/default.nix93
2 files changed, 81 insertions, 24 deletions
diff --git a/pkgs/os-specific/linux/wpa_supplicant/build-fix.patch b/pkgs/os-specific/linux/wpa_supplicant/build-fix.patch
new file mode 100644
index 000000000000..a186cdad9697
--- /dev/null
+++ b/pkgs/os-specific/linux/wpa_supplicant/build-fix.patch
@@ -0,0 +1,12 @@
+diff --git a/wpa_supplicant/Makefile b/wpa_supplicant/Makefile
+index 0f82af9..70564ff 100644
+--- a/wpa_supplicant/Makefile
++++ b/wpa_supplicant/Makefile
+@@ -1558,6 +1558,7 @@ OBJS += $(CONFIG_MAIN).o
+ ifdef CONFIG_PRIVSEP
+ OBJS_priv += $(OBJS_d) ../src/drivers/drivers.o
+ OBJS_priv += $(OBJS_l2)
++OBJS_priv += ../src/crypto/crypto_openssl.o
+ OBJS_priv += ../src/utils/os_$(CONFIG_OS).o
+ OBJS_priv += ../src/utils/$(CONFIG_ELOOP).o
+ OBJS_priv += ../src/utils/common.o
diff --git a/pkgs/os-specific/linux/wpa_supplicant/default.nix b/pkgs/os-specific/linux/wpa_supplicant/default.nix
index 7e594e21849c..f6142bd630f6 100644
--- a/pkgs/os-specific/linux/wpa_supplicant/default.nix
+++ b/pkgs/os-specific/linux/wpa_supplicant/default.nix
@@ -1,47 +1,91 @@
-{ stdenv, fetchurl, lib, openssl, dbus_libs, pkgconfig, libnl
-, readlineSupport ? true, readline
+{ stdenv, fetchurl, lib, openssl, pkgconfig, libnl
+, dbus_libs ? null, readline ? null, pcsclite ? null
 }:
 
-assert readlineSupport -> readline != null;
-
+with stdenv.lib;
 stdenv.mkDerivation rec {
-  version = "2.3";
+  version = "2.4";
 
   name = "wpa_supplicant-${version}";
 
   src = fetchurl {
     url = "http://hostap.epitest.fi/releases/${name}.tar.gz";
-    sha256 = "0skvkl6c10ls4s48b2wmf47h9j1y40nlzxnzn8hyaw2j0prmpapa";
+    sha256 = "08li21q1wjn5chrv289w666il9ah1w419y3dkq2rl4wnq0rci385";
   };
 
-  extraConfig =
-    ''
-      CONFIG_DEBUG_SYSLOG=y
-      CONFIG_CTRL_IFACE_DBUS=y
-      CONFIG_CTRL_IFACE_DBUS_NEW=y
-      CONFIG_CTRL_IFACE_DBUS_INTRO=y
-      CONFIG_DRIVER_NL80211=y
-      CONFIG_LIBNL32=y
-      ${stdenv.lib.optionalString readlineSupport "CONFIG_READLINE=y"}
-    '';
+  # TODO: Patch epoll so that the dbus actually responds
+  # TODO: Figure out how to get privsep working, currently getting SIGBUS
+  extraConfig = ''
+    CONFIG_LIBNL32=y
+    CONFIG_EAP_FAST=y
+    CONFIG_EAP_PWD=y
+    CONFIG_EAP_PAX=y
+    CONFIG_EAP_SAKE=y
+    CONFIG_EAP_GPSK=y
+    CONFIG_EAP_GPSK_SHA256=y
+    CONFIG_WPS=y
+    CONFIG_WPS_ER=y
+    CONFIG_WPS_NFS=y
+    CONFIG_EAP_IKEV2=y
+    CONFIG_EAP_EKE=y
+    CONFIG_HT_OVERRIDES=y
+    CONFIG_VHT_OVERRIDES=y
+    CONFIG_ELOOP=eloop
+    #CONFIG_ELOOP_EPOLL=y
+    CONFIG_L2_PACKET=linux
+    CONFIG_IEEE80211W=y
+    CONFIG_TLS=openssl
+    CONFIG_TLSV11=y
+    CONFIG_TLSV12=y
+    CONFIG_IEEE80211R=y
+    CONFIG_DEBUG_SYSLOG=y
+    #CONFIG_PRIVSEP=y
+    CONFIG_IEEE80211N=y
+    CONFIG_IEEE80211AC=y
+    CONFIG_INTERNETWORKING=y
+    CONFIG_HS20=y
+    CONFIG_P2P=y
+    CONFIG_TDLS=y
+  '' + optionalString (pcsclite != null) ''
+    CONFIG_EAP_SIM=y
+    CONFIG_EAP_AKA=y
+    CONFIG_EAP_AKA_PRIME=y
+    CONFIG_PCSC=y
+  '' + optionalString (dbus_libs != null) ''
+    CONFIG_CTRL_IFACE_DBUS=y
+    CONFIG_CTRL_IFACE_DBUS_NEW=y
+    CONFIG_CTRL_IFACE_DBUS_INTRO=y
+  '' + (if readline != null then ''
+    CONFIG_READLINE=y
+  '' else ''
+    CONFIG_WPA_CLI_EDIT=y
+  '');
 
   preBuild = ''
     cd wpa_supplicant
     cp -v defconfig .config
     echo "$extraConfig" >> .config
-    cat .config
+    cat -n .config
     substituteInPlace Makefile --replace /usr/local $out
-    export NIX_CFLAGS_COMPILE="$NIX_CFLAGS_COMPILE -I$(echo "${libnl}"/include/libnl*/)"
+    export NIX_CFLAGS_COMPILE="$NIX_CFLAGS_COMPILE \
+      -I$(echo "${libnl}"/include/libnl*/) \
+      -I${pcsclite}/include/PCSC/"
   '';
 
-  buildInputs = [ openssl dbus_libs libnl ]
-    ++ lib.optional readlineSupport readline;
+  buildInputs = [ openssl libnl dbus_libs readline pcsclite ];
 
   nativeBuildInputs = [ pkgconfig ];
 
-  patches = [ ./0001-P2P-Validate-SSID-element-length-before-copying-it-C.patch ];
+  patches = [
+    ./0001-P2P-Validate-SSID-element-length-before-copying-it-C.patch
+    ./build-fix.patch
+  ];
 
   postInstall = ''
+    # Copy the wpa_priv binary which is not installed
+    mkdir -p $out/bin
+    cp -v wpa_priv $out/bin
+
     mkdir -p $out/share/man/man5 $out/share/man/man8
     cp -v "doc/docbook/"*.5 $out/share/man/man5/
     cp -v "doc/docbook/"*.8 $out/share/man/man8/
@@ -52,10 +96,11 @@ stdenv.mkDerivation rec {
     cp -v "systemd/"*.service $out/etc/systemd/system
   '';
 
-  meta = {
+  meta = with stdenv.lib; {
     homepage = http://hostap.epitest.fi/wpa_supplicant/;
     description = "A tool for connecting to WPA and WPA2-protected wireless networks";
-    maintainers = with stdenv.lib.maintainers; [marcweber urkud];
-    platforms = stdenv.lib.platforms.linux;
+    license = licenses.bsd3;
+    maintainers = with maintainers; [ marcweber urkud wkennington ];
+    platforms = platforms.linux;
   };
 }