Subject: [bug#31997] [PATCH] gnu: linux-libre*: Add Keyed Interface and redefine variants to use new Interface.

From: Joshua Lewis Hayes <[email-masked]>
Date: Thu, 28 Jun 2018 19:49:18 +0000 (GMT)

Though make-linux-libre provides a keyed interface for configuration and
versioning, it remains unaccessable to users due to a lack of public
definition.

This adapts linux-libre to become a public keyed interface for greater
flexibility for users, without promoting proprietary software. Also redefines
linux-libre-<version/arch> variants to use linux-libre as the interface
being used, to reduce direct reliance on the low-level make-linux-libre
function.

>From 91dcc98640b5e7eb494893100f6ebae823a6cb58 Mon Sep 17 00:00:00 2001
From: Joshua Lewis Hayes <[email-masked]>
Date: Thu, 28 Jun 2018 20:01:47 +0000
Subject: [PATCH] gnu: linux-libre*: Add Keyed Interface and redefine variants
to use new Interface.

* gnu/packages/linux.scm (linux-libre): Add Keyed Interface
* gnu/packages/linux.scm (linux-libre-*): Redefine to use Interface

---
gnu/packages/linux.scm | 89 ++++++++++++++++++++++++++------------------------
1 file changed, 47 insertions(+), 42 deletions(-)

diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm
index 50f90e165..74292288f 100644
--- a/gnu/packages/linux.scm
+++ b/gnu/packages/linux.scm
@@ -28,6 +28,7 @@
;;; Copyright © 2017 nee <[email-masked]>
;;; Copyright © 2017 Dave Love <[email-masked]>
;;; Copyright © 2018 Pierre-Antoine Rouby <[email-masked]>
+;;; Copyright © 2018 Joshua Lewis Hayes <[email-masked]>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -405,66 +406,70 @@ It has been modified to remove all non-free binary blobs.")
 (define %linux-libre-version "4.17.3")
 (define %linux-libre-hash "06mjbs3i0xq1h1cgr6xldr6a8rxsy30mf86wp3n2ff6l5v78iw2q")

-(define-public linux-libre
- (make-linux-libre %linux-libre-version
- %linux-libre-hash
- %linux-compatible-systems
- #:configuration-file kernel-config))
-
 (define %linux-libre-4.14-version "4.14.52")
 (define %linux-libre-4.14-hash "0lx916iw33n32h1fca59r7mh6l2smyml6igvzhimcah62hqx4rk8")

+(define-public (linux-libre #:key
+ (version %linux-libre-version)
+ (hash %linux-libre-hash)
+ (systems %linux-compatible-systems)
+ (configuration-file kernel-config)
+ (defconfig "defconfig")
+ (extra-version #f)
+ (extra-options %extra-options)
+ (patches (list %boot-logo-patch)))
+ (make-linux-libre version
+ hash
+ systems
+ #:configuration-file configuration-file
+ #:defconfig defconfig
+ #:extra-version extra-version
+ #:extra-options extra-options
+ #:patches patches))
+
 (define-public linux-libre-4.14
- (make-linux-libre %linux-libre-4.14-version
- %linux-libre-4.14-hash
- '("x86_64-linux" "i686-linux" "armhf-linux")
- #:configuration-file kernel-config))
+ (linux-libre #:version %linux-libre-4.14-version
+ #:hash %linux-libre-4.14-hash
+ #:systems '("x86_64-linux" "i686-linux" "armhf-linux")))

 (define-public linux-libre-4.9
- (make-linux-libre "4.9.110"
- "0nzfna9w9a45y521d3dcxkdv66gn38n4pq814rdqazk74qb5macn"
- %intel-compatible-systems
- #:configuration-file kernel-config))
+ (linux-libre #:version "4.9.110"
+ #:hash "0nzfna9w9a45y521d3dcxkdv66gn38n4pq814rdqazk74qb5macn"
+ #:systems %intel-compatible-systems))

 (define-public linux-libre-4.4
- (make-linux-libre "4.4.138"
- "1030ra5gn24qmx8lsnhr6kfnfm60avzs23r81dl7mvzr5dci8vsl"
- %intel-compatible-systems
- #:configuration-file kernel-config))
+ (linux-libre #:version "4.4.138"
+ #:hash "1030ra5gn24qmx8lsnhr6kfnfm60avzs23r81dl7mvzr5dci8vsl"
+ #:systems %intel-compatible-systems))

 (define-public linux-libre-4.1
- (make-linux-libre "4.1.52"
- "0a2flzf79kz9c1y9zpxdclsfivp38d2sgnwifg4gvyqixdy63sk9"
- %intel-compatible-systems
- #:configuration-file kernel-config))
+ (linux-libre #:version "4.1.52"
+ #:hash "0a2flzf79kz9c1y9zpxdclsfivp38d2sgnwifg4gvyqixdy63sk9"
+ #:systems %intel-compatible-systems))

 (define-public linux-libre-arm-generic

- (make-linux-libre %linux-libre-version
- %linux-libre-hash
- '("armhf-linux")
- #:defconfig "multi_v7_defconfig"
- #:extra-version "arm-generic"))
+ (linux-libre #:systems '("armhf-linux")
+ #:defconfig "multi_v7_defconfig"
+ #:extra-version "arm-generic"))

 (define-public linux-libre-arm-generic-4.14
- (make-linux-libre %linux-libre-4.14-version
- %linux-libre-4.14-hash
- '("armhf-linux")
- #:defconfig "multi_v7_defconfig"
- #:extra-version "arm-generic"))
+ (linux-libre #:version %linux-libre-4.14-version
+ #:hash %linux-libre-4.14-hash
+ #:systems '("armhf-linux")
+ #:defconfig "multi_v7_defconfig"
+ #:extra-version "arm-generic"))

 (define-public linux-libre-arm-omap2plus
- (make-linux-libre %linux-libre-version
- %linux-libre-hash
- '("armhf-linux")
- #:defconfig "omap2plus_defconfig"
- #:extra-version "arm-omap2plus"))
+ (linux-libre #:systems '("armhf-linux")
+ #:defconfig "omap2plus_defconfig"
+ #:extra-version "arm-omap2plus"))

 (define-public linux-libre-arm-omap2plus-4.14
- (make-linux-libre %linux-libre-4.14-version
- %linux-libre-4.14-hash
- '("armhf-linux")
- #:defconfig "omap2plus_defconfig"
- #:extra-version "arm-omap2plus"))
+ (linux-libre #:version %linux-libre-4.14-version
+ #:hash %linux-libre-4.14-hash
+ #:systems '("armhf-linux")
+ #:defconfig "omap2plus_defconfig"
+ #:extra-version "arm-omap2plus"))

^L
;;;
--
2.16.1