diff options
author | Ludovic Courtès <ludo@gnu.org> | 2018-11-18 23:12:36 +0100 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2018-11-18 23:12:36 +0100 |
commit | 2d546858b139e5fcf2cbdf9958a17fd98803ac4c (patch) | |
tree | d4949e03ad6e44bbd49220fa02f25645ed700454 /gnu/packages/hurd.scm | |
parent | 8504d1922240b29815fd3e1e231e27da391338cd (diff) | |
download | guix-2d546858b139e5fcf2cbdf9958a17fd98803ac4c.tar.gz |
gnu: hurd: Build against glibc 2.28.
Version 2.28 of glibc is the first in a long time that fully supports GNU/Hurd. This change updates the Hurd and Mach to provide the features glibc 2.28 expects and adjusts the cross-compilation tool chain for "i586-pc-gnu". * gnu/packages/base.scm (glibc/linux): Rename to... (glibc): ... this. [propagated-inputs]: Add 'hurd-target?' case. [arguments]: Use '--disable-werror' when 'hurd-target?'. Add 'augment-libc.so' phase when 'hurd-target?'. [native-inputs]: Add MIG and PERL when 'hurd-target?'. (glibc/hurd, glibc-for-target): Remove (glibc/hurd-headers): Inherit from GLIBC, not GLIBC/HURD. [arguments]: Remove "--enable-obsolete-rpc" configure flag and 'patch-configure-script' phase. * gnu/packages/cross-base.scm (cross-kernel-headers)[xglibc/hurd-headers]: Move 'set-cross-headers-path' after 'unpack'. * gnu/packages/cross-base.scm (cross-libc)[cross-libc-for-target]: Remove. Pass "--disable-werror" when TARGET matches 'hurd-triplet?'. * gnu/packages/hurd.scm (hurd-target?, patch-url): New procedures. (gnumach-headers)[source](patches, modules, snippet): New fields. (hurd-headers): Use Git commit 98b3390. [native-inputs]: Add AUTOCONF and AUTOMAKE. [arguments]: Add "ac_cv_func_*" configure flags. (hurd-minimal)[native-inputs]: Remove. [arguments]: In 'build' phase, build "include/assert-backtrace.h" first.
Diffstat (limited to 'gnu/packages/hurd.scm')
-rw-r--r-- | gnu/packages/hurd.scm | 136 |
1 files changed, 93 insertions, 43 deletions
diff --git a/gnu/packages/hurd.scm b/gnu/packages/hurd.scm index d6c1fb5e64..938cb116ca 100644 --- a/gnu/packages/hurd.scm +++ b/gnu/packages/hurd.scm @@ -1,5 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2014, 2015, 2016, 2017 Manolis Fragkiskos Ragkousis <manolis837@gmail.com> +;;; Copyright © 2018 Ludovic Courtès <ludo@gnu.org> ;;; ;;; This file is part of GNU Guix. ;;; @@ -24,17 +25,25 @@ #:use-module (guix utils) #:use-module (guix build-system gnu) #:use-module (guix build-system trivial) + #:use-module (gnu packages autotools) #:use-module (gnu packages flex) #:use-module (gnu packages bison) #:use-module (gnu packages perl) #:use-module (gnu packages base) #:use-module (guix git-download) - #:export (hurd-triplet?)) + #:export (hurd-triplet? + hurd-target?)) (define (hurd-triplet? triplet) (and (string-suffix? "-gnu" triplet) (not (string-contains triplet "linux")))) +(define (hurd-target?) + "Return true if the cross-compilation target or the current system is +GNU/Hurd." + (or (and=> (%current-target-system) hurd-triplet?) + (string-suffix? (%current-system) "-gnu"))) + (define (gnumach-source-url version) (string-append "mirror://gnu/gnumach/gnumach-" version ".tar.gz")) @@ -43,6 +52,10 @@ (string-append "mirror://gnu/hurd/hurd-" version ".tar.gz")) +(define (patch-url repository commit) + (string-append "https://git.savannah.gnu.org/cgit/hurd/" repository + ".git/patch/?id=" commit)) + (define-public gnumach-headers (package (name "gnumach-headers") @@ -53,7 +66,24 @@ (uri (gnumach-source-url version)) (sha256 (base32 - "02hygsfpd2dljl5lg1vjjg9pizi9jyxd4aiiqzjshz6jax62jm9f")))) + "02hygsfpd2dljl5lg1vjjg9pizi9jyxd4aiiqzjshz6jax62jm9f")) + (patches (list (origin + ;; This patch adds <mach/vm_wire.h>, which defines the + ;; VM_WIRE_* constants needed by glibc 2.28. + (method url-fetch) + (uri (patch-url "gnumach" "2b0f19f602e08fd9d37268233b962674fd592634")) + (sha256 + (base32 + "01iajnwsmka0w9hwjkxxijc4xfhwqbvlkw1w8n71hpnhfixd0y28")) + (file-name "gnumach-vm-wire-header.patch")))) + (modules '((guix build utils))) + (snippet + '(begin + ;; Actually install vm_wire.h. + (substitute* "Makefile.in" + (("^include_mach_HEADERS =") + "include_mach_HEADERS = include/mach/vm_wire.h")) + #t)))) (build-system gnu-build-system) (arguments `(#:phases @@ -110,56 +140,71 @@ communication.") (license gpl2+))) (define-public hurd-headers - (package - (name "hurd-headers") - (version "0.9") - (source (origin - (method url-fetch) - (uri (hurd-source-url version)) - (sha256 - (base32 - "1nw9gly0n7pyv3cpfm4mmxy4yccrx4g0lyrvd3vk2vil26jpbggw")))) - (build-system gnu-build-system) - (native-inputs - `(("mig" ,mig))) - (arguments - `(#:phases - (modify-phases %standard-phases - (replace 'install - (lambda _ - (invoke "make" "install-headers" "no_deps=t"))) - (delete 'build)) + ;; Resort to a post-0.9 snapshot that provides the 'file_utimens' and + ;; 'file_exec_paths' RPCs that glibc 2.28 expects. + (let ((revision "0") + (commit "98b33905c89b7e5c309c74ae32302a5745901a6e")) + (package + (name "hurd-headers") + (version "0.9") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://git.savannah.gnu.org/git/hurd/hurd.git") + (commit commit))) + (sha256 + (base32 + "1mj22sxgscas2675vrbxr477mwbxdj68pqcrh65lbir8qlssrgrf")) + (file-name (git-file-name name version)))) + (build-system gnu-build-system) + (native-inputs + `(("mig" ,mig) + ("autoconf" ,autoconf) + ("automake" ,automake))) + (arguments + `(#:phases + (modify-phases %standard-phases + (replace 'install + (lambda _ + (invoke "make" "install-headers" "no_deps=t"))) + (delete 'build)) - #:configure-flags '(;; Pretend we're on GNU/Hurd; 'configure' wants - ;; that. - ,@(if (%current-target-system) - '() - '("--host=i586-pc-gnu")) + #:configure-flags '( ;; Pretend we're on GNU/Hurd; 'configure' wants + ;; that. + ,@(if (%current-target-system) + '() + '("--host=i586-pc-gnu")) - ;; Reduce set of dependencies. - "--without-parted" - "--disable-ncursesw" - "--disable-test" - "--without-libbz2" - "--without-libz" - ;; Skip the clnt_create check because it expects - ;; a working glibc causing a circular dependency. - "ac_cv_search_clnt_create=no") + ;; Reduce set of dependencies. + "--without-parted" + "--disable-ncursesw" + "--disable-test" + "--without-libbz2" + "--without-libz" + ;; Skip the clnt_create check because it expects + ;; a working glibc causing a circular dependency. + "ac_cv_search_clnt_create=no" - #:tests? #f)) - (home-page "https://www.gnu.org/software/hurd/hurd.html") - (synopsis "GNU Hurd headers") - (description - "This package provides C headers of the GNU Hurd, used to build the GNU C + ;; Annihilate the checks for the 'file_exec_paths' + ;; & co. libc functions to avoid "link tests are + ;; not allowed after AC_NO_EXECUTABLES" error. + "ac_cv_func_file_exec_paths=no" + "ac_cv_func_exec_exec_paths=no" + "ac_cv_func__hurd_exec_paths=no" + "ac_cv_func_file_futimens=no") + + #:tests? #f)) + (home-page "https://www.gnu.org/software/hurd/hurd.html") + (synopsis "GNU Hurd headers") + (description + "This package provides C headers of the GNU Hurd, used to build the GNU C Library and other user programs.") - (license gpl2+))) + (license gpl2+)))) (define-public hurd-minimal (package (inherit hurd-headers) (name "hurd-minimal") (inputs `(("glibc-hurd-headers" ,glibc/hurd-headers))) - (native-inputs - `(("mig" ,mig))) (arguments (substitute-keyword-arguments (package-arguments hurd-headers) ((#:phases _) @@ -178,6 +223,11 @@ Library and other user programs.") #t))) (replace 'build (lambda _ + ;; Install <assert-backtrace.h> & co. + (invoke "make" "-Clibshouldbeinlibc" + "../include/assert-backtrace.h") + + ;; Build libihash. (invoke "make" "-Clibihash" "libihash.a"))))))) (home-page "https://www.gnu.org/software/hurd/hurd.html") (synopsis "GNU Hurd libraries") |