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.
This commit is contained in:
		
							parent
							
								
									dbabfc470d
								
							
						
					
					
						commit
						efe3c5717d
					
				
					 1 changed files with 53 additions and 19 deletions
				
			
		|  | @ -1,6 +1,7 @@ | |||
| ;;; GNU Guix --- Functional package management for GNU | ||||
| ;;; Copyright © 2015, 2017 Manolis Fragkiskos Ragkousis <manolis837@gmail.com> | ||||
| ;;; Copyright © 2015 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))) | ||||
| 
 | ||||
| 
 | ||||
|  |  | |||
		Reference in a new issue