From: Manolis Ragkousis <manolis837@gmail.com>
To: "Ludovic Courtès" <ludo@gnu.org>
Cc: Guix-devel@gnu.org
Subject: Glibc/hurd work till now
Date: Tue, 18 Mar 2014 10:02:34 +0000 [thread overview]
Message-ID: <CAFtzXzPFNa4RZohA48y1_voB_evxDxnAe0tvqSfB83jHTNdoHw@mail.gmail.com> (raw)
[-- Attachment #1.1: Type: text/plain, Size: 274 bytes --]
All the changes till now, work in progress, this is not a final patch.
Try building the cross-libc for hurd with
./pre-inst-env guix build -e '((@@ (gnu packages cross-base)
cross-libc/hurd) "i686-pc-gnu")'
The building process is getting stuck at xhurd-headers recipe.
[-- Attachment #1.2: Type: text/html, Size: 387 bytes --]
[-- Attachment #2: base_crossbase.patch --]
[-- Type: text/x-patch, Size: 17018 bytes --]
From e53f7ca2cb7880ca4f6acfaedb020c2523eaf105 Mon Sep 17 00:00:00 2001
From: Manolis Ragkousis <manolis837@gmail.com>
Date: Tue, 18 Mar 2014 11:33:41 +0000
Subject: [PATCH] gnu: base: Added glibc/hurd
* gnu/packages/base.scm (glibc/hurd): Added glibc/hurd
gnu: crossbase: Added cross-toolchain for the hurd
* gnu/packages/crossbase.scm (cross-gcc/hurd): Added a new cross-gcc
so I can try different config flags
* gnu/packages/crossbase.scm (cross-mig): Added cross-mig because
it is need to build the headers
* gnu/packages/crossbase.scm (cross-libc/hurd): Added cross-libc/hurd
---
gnu/packages/base.scm | 111 ++++++++++++++++++++++++
gnu/packages/cross-base.scm | 205 ++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 316 insertions(+)
diff --git a/gnu/packages/base.scm b/gnu/packages/base.scm
index e17933b..ea90c27 100644
--- a/gnu/packages/base.scm
+++ b/gnu/packages/base.scm
@@ -30,6 +30,10 @@
#:use-module (gnu packages guile)
#:use-module (gnu packages multiprecision)
#:use-module (gnu packages perl)
+ #:use-module (gnu packages perl)
+ #:use-module (guix git-download)
+ #:use-module (gnu packages autotools)
+ #:use-module (gnu packages hurd)
#:use-module (gnu packages linux)
#:use-module (guix packages)
#:use-module (guix download)
@@ -484,6 +488,113 @@ with the Linux kernel.")
(license lgpl2.0+)
(home-page "http://www.gnu.org/software/libc/")))
+(define-public glibc/hurd
+ (package (inherit glibc)
+ (name "glibc-hurd")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "git://git.sv.gnu.org/hurd/glibc")
+ (commit "bdb7a18d78b04ac3ef7a2d905485500f13bb69fb")))
+ (sha256
+ (base32
+ "0v4hy6yimshbvhbhdbbjdir5fm3xr56zj3lnpf01d4nfa0c1h8k1"))
+
+ ))
+ (propagated-inputs `(("gnumach-headers" ,gnumach-headers)
+ ("hurd-headers" ,hurd-headers)))
+ (native-inputs
+ `(
+ ("patch/glibc-make" ,(search-patch "glibc-make-4.0.patch"))
+ ("mig" ,mig)
+ ("perl" ,perl)
+ ("autoconf" ,autoconf-wrapper)
+ ("automake" ,automake)
+ ("libpthread" ,(origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "git://git.sv.gnu.org/hurd/libpthread")
+ (commit "fa9eb2c255e1d46beadcd81edd459b9c3d7dcb8c")))
+ (sha256
+ (base32
+ "0bb8m0pk7b53sww4ahjds77bvqy0alz54g3aylzwncfca52gacqp"))
+ (file-name "libpthread" )))))
+
+ (arguments
+ `(#:out-of-source? #t
+ #:configure-flags
+ (list "--without-cvs"
+ "--enable-add-ons="
+ ;;"--sysconfdir=/etc"
+ "--disable-profile"
+ "--disable-multi-arch"
+
+ (string-append "libc_cv_localedir="
+ (assoc-ref %outputs "locales")
+ "/share/locale")
+
+ ;; Use our Bash instead of /bin/sh.
+ (string-append "BASH_SHELL="
+ (assoc-ref %build-inputs "bash")
+ "/bin/bash"))
+
+ #:phases (alist-cons-before
+ 'pre-configure 'autoconf
+ (lambda _
+ (system* "autoreconf" "-vi" "libpthread"))
+ (alist-cons-before
+ 'configure 'pre-configure
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ (let* ((out (assoc-ref outputs "out"))
+ (bin (string-append out "/bin")))
+ ;; Use `pwd', not `/bin/pwd'.
+ (substitute* "configure"
+ (("/bin/pwd") "pwd"))
+
+ ;; Copy a statically-linked Bash in the output, with
+ ;; no references to other store paths.
+ (mkdir-p bin)
+ (copy-file (string-append (assoc-ref inputs "static-bash")
+ "/bin/bash")
+ (string-append bin "/bash"))
+ (remove-store-references (string-append bin "/bash"))
+ (chmod (string-append bin "/bash") #o555)
+
+ ;; Keep a symlink, for `patch-shebang' resolution.
+ (with-directory-excursion bin
+ (symlink "bash" "sh"))
+
+ ;; Have `system' use that Bash.
+ (substitute* "sysdeps/posix/system.c"
+ (("#define[[:blank:]]+SHELL_PATH.*$")
+ (format #f "#define SHELL_PATH \"~a/bin/bash\"\n"
+ out)))
+
+ ;; Same for `popen'.
+ (substitute* "libio/iopopen.c"
+ (("/bin/sh")
+ (string-append out "/bin/bash")))))
+ (alist-cons-after
+ 'install 'install-locales
+ (lambda _
+ (zero? (system* "make" "localedata/install-locales")))
+
+ (alist-cons-after
+ 'unpack 'apply-patch
+ (lambda _
+ (zero? (system* "patch" "-p1" "-i" (assoc-ref %build-inputs "patch/glibc-make"))))
+ (alist-replace
+ 'unpack
+ ;; FIXME: Remove this when gnu-build-system handles that
+ ;; case correctly.
+ (lambda* (#:key inputs source #:allow-other-keys)
+ (mkdir "source")
+ (chdir "source")
+ (copy-recursively source ".")
+ (copy-recursively (assoc-ref inputs "libpthread") "libpthread")
+ #t)
+ %standard-phases))))))) ))
+
(define-public tzdata
(package
(name "tzdata")
diff --git a/gnu/packages/cross-base.scm b/gnu/packages/cross-base.scm
index 41128b7..2dad637 100644
--- a/gnu/packages/cross-base.scm
+++ b/gnu/packages/cross-base.scm
@@ -21,6 +21,10 @@
#:use-module (gnu packages)
#:use-module (gnu packages gcc)
#:use-module (gnu packages base)
+ #:use-module (gnu packages perl);;
+ #:use-module (guix git-download);;
+ #:use-module (gnu packages autotools);;
+ #:use-module (gnu packages hurd)
#:use-module (gnu packages linux)
#:use-module (guix packages)
#:use-module (guix download)
@@ -256,6 +260,207 @@ XBINUTILS and the cross tool chain."
("cross-binutils" ,xbinutils)
,@(package-native-inputs glibc)))))
+(define* (cross-gcc/hurd target
+ #:optional (xbinutils (cross-binutils target)) libc)
+ "Return a cross-compiler for TARGET, where TARGET is a GNU triplet. Use
+XBINUTILS as the associated cross-Binutils. If LIBC is false, then build a
+GCC that does not target a libc; otherwise, target that libc."
+ (package (inherit gcc-4.8)
+ (name (string-append "gcc-cross-hurd-"
+ (if libc "" "sans-libc-")
+ target))
+ (source (origin (inherit (package-source gcc-4.8))
+ (patches
+ (list (search-patch "gcc-cross-environment-variables.patch")))))
+ (arguments
+ `(#:implicit-inputs? #f
+ #:modules ((guix build gnu-build-system)
+ (guix build utils)
+ (ice-9 regex)
+ (srfi srfi-1)
+ (srfi srfi-26))
+
+ ,@(substitute-keyword-arguments (package-arguments gcc-4.8)
+ ((#:configure-flags flags)
+ `(append (list ,(string-append "--target=" target)
+ ,@(gcc-configure-flags-for-triplet target)
+ ,@(if libc
+ '()
+ `(
+ ;; Disable features not needed at this stage.
+ "--disable-shared" "--enable-static"
+ "--without-headers"
+
+ ;; Disable C++ because libstdc++'s
+ ;; configure script otherwise fails with
+ ;; "Link tests are not allowed after
+ ;; GCC_NO_EXECUTABLES."
+ "--enable-languages=c"
+
+ ;; Disabling things according to other hurd building
+ ;; scripts I saw, I will explain everything with my final patch
+
+ "--disable-threads" ; libgcc, would need libc
+ "--disable-libatomic"
+ "--disable-libmudflap"
+ "--disable-libgomp"
+ "--disable-libssp"
+ "--disable-libquadmath"
+ "--disable-decimal-float" ; would need libc
+ "--with-arch=i686"
+ )))
+
+ ,(if libc
+ flags
+ `(remove (cut string-match "--enable-languages.*" <>)
+ ,flags))))
+ ((#:make-flags flags)
+ (if libc
+ `(let ((libc (assoc-ref %build-inputs "libc")))
+ ;; FLAGS_FOR_TARGET are needed for the target libraries to
+ ;; receive the -Bxxx for the startfiles.
+ (cons (string-append "FLAGS_FOR_TARGET=-B" libc "/lib")
+ ,flags))
+ flags))
+ ((#:phases phases)
+ (let ((phases
+ `(alist-cons-after
+ 'install 'make-cross-binutils-visible
+ (lambda* (#:key outputs inputs #:allow-other-keys)
+ (let* ((out (assoc-ref outputs "out"))
+ (libexec (string-append out "/libexec/gcc/"
+ ,target))
+ (binutils (string-append
+ (assoc-ref inputs "binutils-cross")
+ "/bin/" ,target "-")))
+ (for-each (lambda (file)
+ (symlink (string-append binutils file)
+ (string-append libexec "/"
+ file)))
+ '("as" "ld" "nm"))
+ #t))
+ ,phases)))phases));;)
+ ((#:strip-binaries? _)
+ ;; Disable stripping as this can break binaries, with object files
+ ;; of libgcc.a showing up as having an unknown architecture. See
+ ;; <http://lists.fedoraproject.org/pipermail/arm/2010-August/000663.html>
+ ;; for instance.
+ #f))))
+
+ (native-inputs
+ `(("binutils-cross" ,xbinutils)
+
+ ;; Call it differently so that the builder can check whether the "libc"
+ ;; input is #f.
+ ("libc-native" ,@(assoc-ref %final-inputs "libc"))
+
+ ;; Remaining inputs.
+ ,@(let ((inputs (append (package-inputs gcc-4.8)
+ (alist-delete "libc" %final-inputs))))
+ (if libc
+ `(("libc" ,libc)
+ ,@inputs)
+ inputs))))
+
+ (inputs '())
+
+ ;; Only search target inputs, not host inputs.
+ (search-paths
+ (list (search-path-specification
+ (variable "CROSS_CPATH")
+ (directories '("include")))
+ (search-path-specification
+ (variable "CROSS_LIBRARY_PATH")
+ (directories '("lib" "lib64")))))
+ (native-search-paths '())))
+
+(define* (cross-mig target
+ #:optional
+ (xgcc (cross-gcc/hurd target))
+ (xbinutils (cross-binutils target)))
+
+ (define xgnumach-headers
+ (package (inherit gnumach-headers)
+ (name (string-append (package-name gnumach-headers)
+ "-cross-" target))
+
+ (native-inputs `(("cross-gcc-hurd" ,xgcc)
+ ("cross-binutils" ,xbinutils)
+ ,@(package-native-inputs gnumach-headers)))))
+
+ (package (inherit mig)
+ (name (string-append "mig-cross"))
+ (arguments
+ (substitute-keyword-arguments (package-arguments mig)
+ ((#:configure-flags flags)
+ `(cons ,(string-append "--target=" target)
+ ,flags))
+ ))
+ (propagated-inputs `(("cross-gnumach-headers" ,xgnumach-headers)))
+ (native-inputs `(("cross-gcc-hurd" ,xgcc)
+ ("cross-binutils" ,xbinutils)
+ ,@(package-native-inputs mig)))))
+
+(define* (cross-libc/hurd target
+ #:optional
+ (xgcc (cross-gcc/hurd target))
+ (xbinutils (cross-binutils target))
+ (xmig (cross-mig target)))
+ "Return a libc cross-built for TARGET, a GNU triplet. Use XGCC and
+XBINUTILS and the cross tool chain."
+
+ (define xgnumach-headers
+ (package (inherit gnumach-headers)
+ (name (string-append (package-name gnumach-headers)
+ "-cross-" target))
+
+ (native-inputs `(("cross-gcc-hurd" ,xgcc)
+ ("cross-binutils" ,xbinutils)
+ ,@(package-native-inputs gnumach-headers)))))
+
+ (define xhurd-headers
+ (package (inherit hurd-headers)
+ (name (string-append (package-name hurd-headers)
+ "-cross-" target))
+
+ ;;removing the --host flag because I am getting the error that gcc cannot produce executables
+ (arguments
+ (substitute-keyword-arguments
+ `(#:modules ((guix build gnu-build-system)
+ (guix build utils)
+ (ice-9 regex)
+ (srfi srfi-1)
+ (srfi srfi-26))
+ ,@(package-arguments hurd-headers))
+ ((#:configure-flags flags)
+ `(remove (cut string-match "--host.*" <>)
+ ,flags))))
+ (native-inputs `(("cross-gcc-hurd" ,xgcc)
+ ("cross-binutils" ,xbinutils)
+ ("cross-mig" ,xmig)
+ ,@(alist-delete "mig"(package-native-inputs hurd-headers))))))
+
+
+ (package (inherit glibc/hurd)
+ (name (string-append "glibc-hurd-cross-" target))
+ (arguments
+ (substitute-keyword-arguments
+ `(#:strip-binaries? #f ; disable stripping (see above)
+ ,@(package-arguments glibc/hurd))
+ ((#:configure-flags flags)
+ `(cons ,(string-append "--target=" target)
+ ,flags))))
+
+ (propagated-inputs `(("cross-gnumach-headers" ,xgnumach-headers)
+ ("cross-hurd-headers" ,xhurd-headers)))
+
+ (native-inputs `(("cross-gcc-hurd" ,xgcc)
+ ("cross-binutils" ,xbinutils)
+ ("cross-mig" ,xmig)
+ ,@(alist-delete "mig"(package-native-inputs glibc/hurd))))
+
+ ))
+
\f
;;;
;;; Concrete cross toolchains.
--
1.9.0
next reply other threads:[~2014-03-18 10:02 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-03-18 10:02 Manolis Ragkousis [this message]
2014-03-18 10:57 ` Glibc/hurd work till now Ludovic Courtès
[not found] ` <CAFtzXzNSuz-wx2SDUafTvqtmRUbfOohO2-Nfzy7LYKd-wuWFWQ@mail.gmail.com>
2014-03-18 11:10 ` Fwd: " Manolis Ragkousis
2014-03-18 13:32 ` Ludovic Courtès
2014-03-18 14:55 ` Andreas Enge
2014-03-18 16:04 ` Ludovic Courtès
2014-03-18 19:06 ` Manolis Ragkousis
2014-03-18 20:34 ` Ludovic Courtès
2014-03-18 20:41 ` Manolis Ragkousis
2014-03-19 19:38 ` Manolis Ragkousis
2014-03-19 20:17 ` Ludovic Courtès
2014-03-19 20:47 ` Manolis Ragkousis
2014-03-19 21:58 ` Ludovic Courtès
2014-03-20 16:02 ` Manolis Ragkousis
2014-03-20 20:42 ` libpthread fails to build as an add-on Ludovic Courtès
2014-03-20 20:58 ` Manolis Ragkousis
2014-03-23 8:28 ` Manolis Ragkousis
2014-03-23 9:17 ` Manolis Ragkousis
2014-03-23 21:38 ` Ludovic Courtès
2014-03-21 23:23 ` Glibc/hurd work till now Manolis Ragkousis
2014-03-22 14:16 ` Ludovic Courtès
2014-03-22 16:13 ` Manolis Ragkousis
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://guix.gnu.org/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=CAFtzXzPFNa4RZohA48y1_voB_evxDxnAe0tvqSfB83jHTNdoHw@mail.gmail.com \
--to=manolis837@gmail.com \
--cc=Guix-devel@gnu.org \
--cc=ludo@gnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/guix.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).