Subject: Re: [bug#31447] [PATCH] linux-libre: Add aarch64-linux.

From: Vagrant Cascadian <[email-masked]>
Date: Sat, 19 May 2018 16:33:56 -0700

On 2018-05-18, Vagrant Cascadian wrote:
> On 2018-05-17, Vagrant Cascadian wrote:
>> Since submitting, I did notice that the way .dtb files are installed, it
>> doesn't preserve the subdirectory structure. Unlike the "arm"
>> architecture, where .dtb files are all placed in a single directory, on
>> "arm64" there are sub-directories for each soc family:
>>
>>   allwinner/sun50i-a64-pine64-plus.dtb
>>
>> It looks like the linux Makefile supports setting INSTALL_DTBS_PATH
>> variable, and both "arm" and "arm64" architectures have a "dtbs_install"
>> target, which may simply do "the right thing".

Attached is a patch which does that. Did test builds of linux-libre on
x86_64-linux (no dtb files), aarch64-linux (dtb files in subdirs) and
armhf-linux (dtb files in one big huge directory); all of these variants
appear to be doing the right thing.

The patch basically follows the previous behavior by checking for the
presence of .dtb files, but rather than installing them manually,
invokes "make dtbs_install".

I did try to restrict dtb installation based on architecture (only arm,
arm64 and mips linux architectures currently implement the dtbs_install
Makefile target), which would seem a little cleaner to me. My attempt
was essentially:

  (if (string=? (getenv "ARCH") (or "arm" "arm64" "mips"))
    (invoke "make" "dtbs_install" ... )
  )

Which somehow matched on all architectures... and so failed to build on
on x86_64.

Since the compile cycles were so long to test if it worked or not, I've
set it aside for now and decided to submit what I had working.

So, with the previous updated patch and the following patch, it should
be ready to go. Please feel free to squash them or merge them
separately; whatever makes the most sense. Or give more review and
feedback, of course. :)

live well,
  vagrant

From 4e5ea2e07282b3c3125fc1922e729085a2e2706f Mon Sep 17 00:00:00 2001
From: Vagrant Cascadian <[email-masked]>
Date: Sat, 19 May 2018 21:08:41 +0000
Subject: [PATCH 2/2] gnu: linux-libre: Use "make dtbs_install" to install
 device tree files.

* gnu/packages/linux.scm (make-linux-libre):
  Use "make dtbs_install" to install device tree files.
---
 gnu/packages/linux.scm | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm
index fe4704601..d8c75dd8c 100644
--- a/gnu/packages/linux.scm
+++ b/gnu/packages/linux.scm
@@ -366,8 +366,11 @@ for ARCH and optionally VARIANT, or #f if there is no such configuration."
                (for-each (lambda (file) (install-file file out))
                          (find-files "." "^(\\.config|bzImage|zImage|Image|vmlinuz|System\\.map)$"))
                ;; Install device tree files
-               (for-each (lambda (file) (install-file file dtbdir))
-                         (find-files "." "\\.dtb$"))
+               (unless (null? (find-files "." "\\.dtb$"))
+                              (mkdir-p dtbdir)
+                              (invoke "make"
+                                      (string-append "INSTALL_DTBS_PATH=" dtbdir)
+                                      "dtbs_install"))
                ;; Install kernel modules
                (mkdir-p moddir)
                (invoke "make"
-- 
2.11.0