diff mbox

gnu: Add openfwwf-firmware.

Message ID 20161116212918.5dd43c22@centurylink.net
State New
Headers show

Commit Message

Eric Bavier Nov. 17, 2016, 3:29 a.m. UTC
Hello Guix,

We've had at least one person on IRC confirm that this firmware package
worked for them, allowing them to use their wireless hardware.

Would it be appropriate to add this to %base-firmware?  The output is
rather small.

`~Eric

Comments

Leo Famulari Nov. 18, 2016, 9:04 p.m. UTC | #1
On Wed, Nov 16, 2016 at 09:29:18PM -0600, Eric Bavier wrote:
> Hello Guix,
> 
> We've had at least one person on IRC confirm that this firmware package
> worked for them, allowing them to use their wireless hardware.
> 
> Would it be appropriate to add this to %base-firmware?  The output is
> rather small.

How small?

Since they seem to work, I'd say they should be added.

> From c397f73d69326db24c211e4e2bda46e647d0e751 Mon Sep 17 00:00:00 2001
> From: Eric Bavier <bavier@member.fsf.org>
> Date: Thu, 12 May 2016 13:57:01 -0500
> Subject: [PATCH] gnu: Add openfwwf-firmware.
> 
> * gnu/packages/firmware.scm (b43-tools, openfwwf-firmware): New
> variables.

> +(define-public b43-tools
> +  (let ((commit "8dce53297966b31b6c70a7a03c2433978dd9f288")
> +        (rev "1"))

How do we choose a commit?

> +    (package
> +      (name "b43-tools")
> +      (version (string-append "20140625-" rev "." (string-take commit 7)))

Is the timestamp some kind of upstream version string? If not, and there
is no upstream version naming, we should use 0.0.0, right?

> +         #:phases
> +         (let ((subdirs '("assembler" "disassembler"))) ;TODO: fwcutter

Can you expand the TODO comment?
Eric Bavier Nov. 19, 2016, 3:14 a.m. UTC | #2
On Fri, 18 Nov 2016 16:04:30 -0500
Leo Famulari <leo@famulari.name> wrote:

> On Wed, Nov 16, 2016 at 09:29:18PM -0600, Eric Bavier wrote:
> > Hello Guix,
> > 
> > We've had at least one person on IRC confirm that this firmware package
> > worked for them, allowing them to use their wireless hardware.
> > 
> > Would it be appropriate to add this to %base-firmware?  The output is
> > rather small.  
> 
> How small?

36K

> Since they seem to work, I'd say they should be added.
> 
> > From c397f73d69326db24c211e4e2bda46e647d0e751 Mon Sep 17 00:00:00 2001
> > From: Eric Bavier <bavier@member.fsf.org>
> > Date: Thu, 12 May 2016 13:57:01 -0500
> > Subject: [PATCH] gnu: Add openfwwf-firmware.
> > 
> > * gnu/packages/firmware.scm (b43-tools, openfwwf-firmware): New
> > variables.  
> 
> > +(define-public b43-tools
> > +  (let ((commit "8dce53297966b31b6c70a7a03c2433978dd9f288")
> > +        (rev "1"))  
> 
> How do we choose a commit?

This was the latest commit at the time of packaging.  There have been
new commits since, but they affect only the debugging tools, which we
do not build here.

> > +    (package
> > +      (name "b43-tools")
> > +      (version (string-append "20140625-" rev "." (string-take commit 7)))  
> 
> Is the timestamp some kind of upstream version string? If not, and there
> is no upstream version naming, we should use 0.0.0, right?

This package contains a collections of tools, only one of which
declares any sort of version (fwcutter).  I had gathered that the
date-string approach was acceptable for VCS checkouts when versions are
otherwise not available.  We have 34 other packages whose version begin
with such a date-string (e.g. guile-minikanren, scmutils,
guile-for-guile-emacs, guile-emacs, woff2, font-google-noto, ...).

> > +         #:phases
> > +         (let ((subdirs '("assembler" "disassembler"))) ;TODO: fwcutter  
> 
> Can you expand the TODO comment?

I may just remove it.  If someone needs the other tools, they should
know what to do.

`~Eric
Leo Famulari Nov. 19, 2016, 4:13 a.m. UTC | #3
On Fri, Nov 18, 2016 at 09:14:31PM -0600, Eric Bavier wrote:
> On Fri, 18 Nov 2016 16:04:30 -0500
> Leo Famulari <leo@famulari.name> wrote:
> > > +      (version (string-append "20140625-" rev "." (string-take commit 7)))  
> > 
> > Is the timestamp some kind of upstream version string? If not, and there
> > is no upstream version naming, we should use 0.0.0, right?
> 
> This package contains a collections of tools, only one of which
> declares any sort of version (fwcutter).  I had gathered that the
> date-string approach was acceptable for VCS checkouts when versions are
> otherwise not available.  We have 34 other packages whose version begin
> with such a date-string (e.g. guile-minikanren, scmutils,
> guile-for-guile-emacs, guile-emacs, woff2, font-google-noto, ...).

Okay, no strong opinion here :)

Thanks for writing this package!
Ludovic Courtès Nov. 21, 2016, 9:05 a.m. UTC | #4
Eric Bavier <ericbavier@centurylink.net> skribis:

> On Fri, 18 Nov 2016 16:04:30 -0500
> Leo Famulari <leo@famulari.name> wrote:
>
>> On Wed, Nov 16, 2016 at 09:29:18PM -0600, Eric Bavier wrote:
>> > Hello Guix,
>> > 
>> > We've had at least one person on IRC confirm that this firmware package
>> > worked for them, allowing them to use their wireless hardware.
>> > 
>> > Would it be appropriate to add this to %base-firmware?  The output is
>> > rather small.  
>> 
>> How small?
>
> 36K

I think it makes sense to add it to ‘%bash-firmware’.

Maybe we can also mention it in guix.texi, next to where we talk about
Atheros-based WiFi devices.

Thank you Eric!

Ludo’.
Eric Bavier Nov. 22, 2016, 3:42 p.m. UTC | #5
On Mon, 21 Nov 2016 10:05:50 +0100
ludo@gnu.org (Ludovic Courtès) wrote:

> Eric Bavier <ericbavier@centurylink.net> skribis:
> 
> > On Fri, 18 Nov 2016 16:04:30 -0500
> > Leo Famulari <leo@famulari.name> wrote:
> >  
> >> On Wed, Nov 16, 2016 at 09:29:18PM -0600, Eric Bavier wrote:  
> >> > Hello Guix,
> >> > 
> >> > We've had at least one person on IRC confirm that this firmware package
> >> > worked for them, allowing them to use their wireless hardware.
> >> > 
> >> > Would it be appropriate to add this to %base-firmware?  The output is
> >> > rather small.    
> >> 
> >> How small?  
> >
> > 36K  
> 
> I think it makes sense to add it to ‘%bash-firmware’.
> 
> Maybe we can also mention it in guix.texi, next to where we talk about
> Atheros-based WiFi devices.

Okay.  Done in e36a67c91a2a48c6a534afae767bf0758b949644 and
52db41aff8771518f99eb1f9b63b814b568f7a4a

`~Eric
Danny Milosavljevic Dec. 6, 2016, 7:56 p.m. UTC | #6
On Wed, 16 Nov 2016 21:29:18 -0600
Eric Bavier <ericbavier@centurylink.net> wrote:
> +     "This is firmware from Open FirmWare for WiFi networks (OpenFWWF) for the
> +Broadcom/AirForce chipset BCM43xx with Wirelss-Core Revision 5.  It is used by
                                               ^ Wirelss-Core ? Is it really called that ?
diff mbox

Patch

From c397f73d69326db24c211e4e2bda46e647d0e751 Mon Sep 17 00:00:00 2001
From: Eric Bavier <bavier@member.fsf.org>
Date: Thu, 12 May 2016 13:57:01 -0500
Subject: [PATCH] gnu: Add openfwwf-firmware.

* gnu/packages/firmware.scm (b43-tools, openfwwf-firmware): New
variables.
---
 gnu/packages/firmware.scm | 92 +++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 92 insertions(+)

diff --git a/gnu/packages/firmware.scm b/gnu/packages/firmware.scm
index 45b7bf7..790e11e 100644
--- a/gnu/packages/firmware.scm
+++ b/gnu/packages/firmware.scm
@@ -1,5 +1,6 @@ 
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2014, 2015 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2016 Eric Bavier <bavier@member.fsf.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -19,11 +20,14 @@ 
 (define-module (gnu packages firmware)
   #:use-module (guix licenses)
   #:use-module (guix packages)
+  #:use-module (guix download)
   #:use-module (guix git-download)
   #:use-module (guix build-system gnu)
   #:use-module (gnu packages)
+  #:use-module (gnu packages bison)
   #:use-module (gnu packages cmake)
   #:use-module (gnu packages cross-base)
+  #:use-module (gnu packages flex)
   #:use-module (gnu packages perl))
 
 (define-public ath9k-htc-firmware
@@ -82,3 +86,91 @@ 
 802.11n NICs (aka Wi-Fi USB dongles).  It is used by the ath9k driver of
 Linux-libre.")
     (license (non-copyleft "http://directory.fsf.org/wiki/License:ClearBSD"))))
+
+(define-public b43-tools
+  (let ((commit "8dce53297966b31b6c70a7a03c2433978dd9f288")
+        (rev "1"))
+    (package
+      (name "b43-tools")
+      (version (string-append "20140625-" rev "." (string-take commit 7)))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "http://git.bues.ch/git/b43-tools.git")
+               (commit commit)))
+         (filename (string-append name "-" version "-checkout"))
+         (sha256
+          (base32
+           "08k7sdr9jagm43r2zv4h03j86klhkblpk73p12444a3vzg1gy1lv"))))
+      (build-system gnu-build-system)
+      (native-inputs
+       `(("flex" ,flex)
+         ("bison" ,bison)))
+      (arguments
+       `(#:modules ((srfi srfi-1)
+                    (guix build gnu-build-system)
+                    (guix build utils))
+         #:tests? #f                    ;no tests
+         #:phases
+         (let ((subdirs '("assembler" "disassembler"))) ;TODO: fwcutter
+           (modify-phases %standard-phases
+             (delete 'configure)
+             (add-before 'build 'patch-/bin/true
+               (lambda _
+                 (substitute* (find-files "." "Makefile")
+                   (("/bin/true") ":"))
+                 #t))
+             (replace 'build
+               (lambda _
+                 (every (lambda (dir)
+                          (zero? (system* "make" "-C" dir "CC=gcc")))
+                        subdirs)))
+             (replace 'install
+               (lambda* (#:key outputs #:allow-other-keys)
+                 (let ((out (assoc-ref outputs "out")))
+                   (mkdir-p (string-append out "/bin"))
+                   (every (lambda (dir)
+                            (zero?
+                             (system* "make" "-C" dir
+                                      (string-append "PREFIX=" out)
+                                      "install")))
+                          subdirs))))))))
+      (home-page
+       "http://bues.ch/cms/hacking/misc.html#linux_b43_driver_firmware_tools")
+      (synopsis "Collection of tools for the b43 wireless driver")
+      (description
+       "The b43 firmware tools is a collection of firmware extractor,
+assembler, disassembler, and debugging tools for the Linux kernel b43 wireless
+driver.")
+      (license gpl2))))
+
+(define-public openfwwf-firmware
+  (package
+    (name "openfwwf-firmware")
+    (version "5.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "http://netweb.ing.unibs.it/~openfwwf/firmware/"
+                           "openfwwf-" version ".tar.gz"))
+       (sha256
+        (base32
+         "1p60gdi7w88s7qw82d3g9v7mk887mhvidf4l5q5hh09j10h37q4x"))))
+    (build-system gnu-build-system)
+    (native-inputs
+     `(("b43-tools" ,b43-tools)))
+    (arguments
+     `(#:make-flags (list (string-append "PREFIX="
+                                         (assoc-ref %outputs "out")
+                                         "/lib/firmware/b43-open"))
+       #:tests? #f                      ;no tests
+       #:phases (modify-phases %standard-phases
+                  (delete 'configure))))
+    (home-page "http://netweb.ing.unibs.it/~openfwwf/")
+    (synopsis "Firmware for BCM43xx devices")
+    (description
+     "This is firmware from Open FirmWare for WiFi networks (OpenFWWF) for the
+Broadcom/AirForce chipset BCM43xx with Wirelss-Core Revision 5.  It is used by
+the b43-open driver of Linux-libre.")
+    (license gpl2)))
-- 
2.10.2