diff options
author | Ludovic Courtès <ludo@gnu.org> | 2012-10-22 22:22:37 +0200 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2012-10-22 22:22:37 +0200 |
commit | 5155fb89b27d5eaf12a9e4a650dbf5bae2d332fb (patch) | |
tree | 4689a871f800b90be85e0dd319d3ad7a1dffe484 /distro | |
parent | 83ce0cf1f15cbeba13b30fc19ce5368eef370bf5 (diff) | |
download | guix-5155fb89b27d5eaf12a9e4a650dbf5bae2d332fb.tar guix-5155fb89b27d5eaf12a9e4a650dbf5bae2d332fb.tar.gz |
distro: Add a statically-linked GCC for bootstrapping.
* distro/packages/base.scm (%gcc-static): New variable.
(%gcc-stripped): Use it.
Diffstat (limited to 'distro')
-rw-r--r-- | distro/packages/base.scm | 55 |
1 files changed, 45 insertions, 10 deletions
diff --git a/distro/packages/base.scm b/distro/packages/base.scm index 7c9d2927c5..6847564159 100644 --- a/distro/packages/base.scm +++ b/distro/packages/base.scm @@ -2288,15 +2288,53 @@ store.") #t)))) (inputs `(("libc" ,glibc-final))))) -(define %gcc-stripped +(define %gcc-static + ;; A statically-linked GCC, with stripped-down functionality. (package (inherit gcc-final) + (name "gcc-static") + (arguments + (lambda (system) + `(#:modules ((guix build utils) + (guix build gnu-build-system) + (srfi srfi-1) + (srfi srfi-26) + (ice-9 regex)) + ,@(substitute-keyword-arguments ((package-arguments gcc-final) system) + ((#:guile _) #f) + ((#:implicit-inputs? _) #t) + ((#:configure-flags flags) + `(append (list + "--disable-shared" + "--disable-plugin" + "--enable-languages=c" + "--disable-libmudflap" + "--disable-libgomp" + "--disable-libssp" + "--disable-libquadmath" + "--disable-decimal-float") + (remove (cut string-match "--(.*plugin|enable-languages)" <>) + ,flags))) + ((#:make-flags flags) + `(cons "BOOT_LDFLAGS=-static" ,flags)))))) + (inputs `(("gmp-source" ,(package-source gmp)) + ("mpfr-source" ,(package-source mpfr)) + ("mpc-source" ,(package-source mpc)) + ("binutils" ,binutils-final) + ,@(package-inputs gcc-4.7))))) + +(define %gcc-stripped + ;; The subset of GCC files needed for bootstrap. + (package (inherit gcc-4.7) (name "gcc-stripped") (build-system trivial-build-system) + (source #f) (arguments `(#:modules ((guix build utils)) #:builder (begin - (use-modules (guix build utils)) + (use-modules (srfi srfi-1) + (srfi srfi-26) + (guix build utils)) (setvbuf (current-output-port) _IOLBF) (let* ((out (assoc-ref %outputs "out")) @@ -2307,15 +2345,12 @@ store.") (for-each remove-store-references (find-files bindir ".*")) - (mkdir-p libdir) - (for-each (lambda (file) - (let ((target (string-append libdir "/" - (basename file)))) - (copy-file file target) - (remove-store-references target))) - (find-files (string-append gcc "/lib") "^libgcc_s.*")) + (copy-recursively (string-append gcc "/lib") libdir) + (for-each remove-store-references + (remove (cut string-suffix? ".h" <>) + (find-files libdir ".*"))) #t)))) - (inputs `(("gcc" ,gcc-final))))) + (inputs `(("gcc" ,%gcc-static))))) (define %guile-static ;; A statically-linked Guile that is relocatable--i.e., it can search |