From 196f5cb265db8ab2fc0539d9fa4530ec71265d05 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20=C4=8Cun=C3=A1t?= Date: Thu, 19 Jul 2012 11:42:40 +0200 Subject: [PATCH] Fix broadcom_sta for linux-3.4 and clean nix source. Idea from Kevin Quick, implementation from Gentoo. Also cleaned and added a minor license patch from Gentoo. Builds for many x86_64 kernels. --- pkgs/os-specific/linux/broadcom-sta/default.nix | 12 +++++------- pkgs/os-specific/linux/broadcom-sta/license.patch | 12 ++++++++++++ pkgs/os-specific/linux/broadcom-sta/linux-3.4.patch | 12 ++++++++++++ pkgs/os-specific/linux/broadcom-sta/mutex-sema.patch | 12 ------------ 4 files changed, 29 insertions(+), 19 deletions(-) create mode 100644 pkgs/os-specific/linux/broadcom-sta/license.patch create mode 100644 pkgs/os-specific/linux/broadcom-sta/linux-3.4.patch delete mode 100644 pkgs/os-specific/linux/broadcom-sta/mutex-sema.patch diff --git a/pkgs/os-specific/linux/broadcom-sta/default.nix b/pkgs/os-specific/linux/broadcom-sta/default.nix index ff21b5d5254b..041141cdad25 100644 --- a/pkgs/os-specific/linux/broadcom-sta/default.nix +++ b/pkgs/os-specific/linux/broadcom-sta/default.nix @@ -7,7 +7,7 @@ in stdenv.mkDerivation { name = "broadcom-sta-${version}-${kernel.version}"; - + src = fetchurl { url = "http://www.broadcom.com/docs/linux_sta/hybrid-portsrc_x86_${bits}-v${version}.tar.gz"; sha256 = if bits == "32" @@ -16,12 +16,10 @@ stdenv.mkDerivation { }; buildInputs = [ kernel ]; - patches = [ ./makefile.patch ./linux-2.6.39.patch ./linux-3.2.patch ]; - #++ stdenv.lib.optional - #(! builtins.lessThan (builtins.compareVersions kernel.version "2.6.37") 0) - #[ ./mutex-sema.patch ]; - - NIX_CFLAGS_COMPILE = "-I${kernel}/lib/modules/${kernel.modDirVersion}/build/include/generated"; + patches = + [ ./makefile.patch ./linux-2.6.39.patch ./linux-3.2.patch + ./linux-3.4.patch ./license.patch + ]; makeFlags = "KDIR=${kernel}/lib/modules/${kernel.modDirVersion}/build"; diff --git a/pkgs/os-specific/linux/broadcom-sta/license.patch b/pkgs/os-specific/linux/broadcom-sta/license.patch new file mode 100644 index 000000000000..b320d977e8b0 --- /dev/null +++ b/pkgs/os-specific/linux/broadcom-sta/license.patch @@ -0,0 +1,12 @@ +diff -Naur hybrid-portsrc-x86_32-v5_10_91_9.orig/src/wl/sys/wl_linux.c hybrid-portsrc-x86_32-v5_10_91_9/src/wl/sys/wl_linux.c +--- hybrid-portsrc-x86_32-v5_10_91_9.orig/src/wl/sys/wl_linux.c 2009-04-23 02:48:59.000000000 +0900 ++++ hybrid-portsrc-x86_32-v5_10_91_9/src/wl/sys/wl_linux.c 2009-05-08 00:48:20.000000000 +0900 +@@ -163,6 +163,8 @@ + static void wl_free_if(wl_info_t *wl, wl_if_t *wlif); + static void wl_get_driver_info(struct net_device *dev, struct ethtool_drvinfo *info); + ++MODULE_LICENSE("MIXED/Proprietary"); ++ + static struct pci_device_id wl_id_table[] = { + { PCI_VENDOR_ID_BROADCOM, 0x4311, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0 }, + { PCI_VENDOR_ID_BROADCOM, 0x4312, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0 }, diff --git a/pkgs/os-specific/linux/broadcom-sta/linux-3.4.patch b/pkgs/os-specific/linux/broadcom-sta/linux-3.4.patch new file mode 100644 index 000000000000..854131c641b2 --- /dev/null +++ b/pkgs/os-specific/linux/broadcom-sta/linux-3.4.patch @@ -0,0 +1,12 @@ +--- broadcom-sta.orig/src/wl/sys/wl_linux.c ++++ broadcom-sta.new/src/wl/sys/wl_linux.c +@@ -40,7 +40,9 @@ + #include + #define WLC_MAXBSSCFG 1 + ++#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 4, 0) + #include ++#endif + #include + #include + #include diff --git a/pkgs/os-specific/linux/broadcom-sta/mutex-sema.patch b/pkgs/os-specific/linux/broadcom-sta/mutex-sema.patch deleted file mode 100644 index 922c8f2d22dd..000000000000 --- a/pkgs/os-specific/linux/broadcom-sta/mutex-sema.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff -aur old/src/wl/sys/wl_linux.c new/src/wl/sys/wl_linux.c ---- old/src/wl/sys/wl_linux.c 2010-12-25 18:17:33.333343048 +0100 -+++ new/src/wl/sys/wl_linux.c 2010-12-25 18:21:05.856676376 +0100 -@@ -483,7 +483,7 @@ - #ifdef WL_ALL_PASSIVE - spin_lock_init(&wl->txq_lock); - #endif -- init_MUTEX(&wl->sem); -+ sema_init(&wl->sem, 1); - } - - if (!(wl->wlc = wlc_attach((void *) wl, vendor, device, unit, wl->piomode,