summary refs log tree commit diff
diff options
context:
space:
mode:
authorJan Nieuwenhuizen <janneke@gnu.org>2018-09-09 11:42:29 +0200
committerMark H Weaver <mhw@netris.org>2019-08-15 14:46:03 -0400
commit4f3811f6bbdfba817601eb3168f5b3e0d2f1c3f6 (patch)
treea8ef0639a5aa54ed729bb8a156e5f1117bec1b79
parentd4cf5b018a6ec9170ca1b8c46023003c164364b9 (diff)
downloadguix-4f3811f6bbdfba817601eb3168f5b3e0d2f1c3f6.tar.gz
guix: copy-linux-headers: Extract procedure, add headers.
* guix/build/make-bootstrap.scm (copy-linux-headers): New procedure; extract
from make-stripped-libc and add headers for Mes bootstrap.
(make-stripped-libc): Use it.
-rw-r--r--guix/build/make-bootstrap.scm72
1 files changed, 53 insertions, 19 deletions
diff --git a/guix/build/make-bootstrap.scm b/guix/build/make-bootstrap.scm
index 48799f7e90..e5ef1d6d2b 100644
--- a/guix/build/make-bootstrap.scm
+++ b/guix/build/make-bootstrap.scm
@@ -1,6 +1,7 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2015, 2017 Manolis Fragkiskos Ragkousis <manolis837@gmail.com>
 ;;; Copyright © 2015, 2019 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2018 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -23,7 +24,8 @@
   #:use-module (srfi srfi-19)
   #:use-module (srfi srfi-26)
   #:use-module (guix build utils)
-  #:export (make-stripped-libc))
+  #:export (copy-linux-headers
+            make-stripped-libc))
 
 ;; Commentary:
 ;;
@@ -31,6 +33,53 @@
 ;;
 ;; Code:
 
+(define (copy-linux-headers output kernel-headers)
+  "Copy to OUTPUT the subset of KERNEL-HEADERS that is needed when producing a
+bootstrap libc."
+
+  (let* ((incdir (string-append output "/include")))
+    (mkdir-p incdir)
+
+    ;; Copy some of the Linux-Libre headers that glibc headers
+    ;; refer to.
+    (mkdir (string-append incdir "/linux"))
+    (for-each (lambda (file)
+                (install-file (pk 'src (string-append kernel-headers "/include/linux/" file))
+                              (pk 'dest (string-append incdir "/linux"))))
+              '(
+                "a.out.h"               ; for 2.2.5
+                "atalk.h"               ; for 2.2.5
+                "errno.h"
+                "falloc.h"
+                "if_addr.h"             ; for 2.16.0
+                "if_ether.h"            ; for 2.2.5
+                "if_link.h"             ; for 2.16.0
+                "ioctl.h"
+                "kernel.h"
+                "limits.h"
+                "neighbour.h"           ; for 2.16.0
+                "netlink.h"             ; for 2.16.0
+                "param.h"
+                "prctl.h"               ; for 2.16.0
+                "posix_types.h"
+                "rtnetlink.h"           ; for 2.16.0
+                "socket.h"
+                "stddef.h"
+                "swab.h"                ; for 2.2.5
+                "sysctl.h"
+                "sysinfo.h"             ; for 2.2.5
+                "types.h"
+                "version.h"             ; for 2.2.5
+                ))
+
+    (copy-recursively (string-append kernel-headers "/include/asm")
+                      (string-append incdir "/asm"))
+    (copy-recursively (string-append kernel-headers "/include/asm-generic")
+                      (string-append incdir "/asm-generic"))
+    (copy-recursively (string-append kernel-headers "/include/linux/byteorder")
+                      (string-append incdir "/linux/byteorder"))
+    #t))
+
 (define (make-stripped-libc output libc kernel-headers)
   "Copy to OUTPUT the subset of LIBC and KERNEL-HEADERS that is needed
 when producing a bootstrap libc."
@@ -43,25 +92,10 @@ when producing a bootstrap libc."
                         (string-append incdir "/mach"))
       #t))
   
-  (define (copy-linux-headers output kernel-headers)
+  (define (copy-libc+linux-headers output kernel-headers)
     (let* ((incdir (string-append output "/include")))
       (copy-recursively (string-append libc "/include") incdir)
-
-      ;; Copy some of the Linux-Libre headers that glibc headers
-      ;; refer to.
-      (mkdir (string-append incdir "/linux"))
-      (for-each (lambda (file)
-                  (install-file (string-append kernel-headers "/include/linux/" file)
-                                (string-append incdir "/linux")))
-                '("limits.h" "errno.h" "socket.h" "kernel.h"
-                  "sysctl.h" "param.h" "ioctl.h" "types.h"
-                  "posix_types.h" "stddef.h" "falloc.h"))
-
-      (copy-recursively (string-append kernel-headers "/include/asm")
-                        (string-append incdir "/asm"))
-      (copy-recursively (string-append kernel-headers "/include/asm-generic")
-                        (string-append incdir "/asm-generic"))
-      #t))
+      (copy-linux-headers output kernel-headers)))
 
   (define %libc-object-files-rx "^(crt.*|ld.*|lib(c|m|dl|rt|pthread|nsl|\
 util).*\\.so(\\..*)?|lib(machuser|hurduser).so.*|(libc(rt|)|libpthread)\
@@ -80,6 +114,6 @@ _nonshared\\.a)$")
 
     (if (directory-exists? (string-append kernel-headers "/include/mach"))
         (copy-mach-headers output kernel-headers)
-        (copy-linux-headers output kernel-headers)))
+        (copy-libc+linux-headers output kernel-headers)))