summary refs log tree commit diff
path: root/gnu/packages/commencement.scm
diff options
context:
space:
mode:
authorJan Nieuwenhuizen <janneke@gnu.org>2018-09-09 14:53:48 +0200
committerJan Nieuwenhuizen <janneke@gnu.org>2018-09-23 09:46:26 +0200
commitd536c39e5490ab2a8d41e594f33483ee2946e610 (patch)
tree3f0afa0265050d28c9c5f1e768274df5bc5e96e2 /gnu/packages/commencement.scm
parentcffe966dd5d3b412d31a4b1c7bf9f81a2697dd7b (diff)
downloadguix-d536c39e5490ab2a8d41e594f33483ee2946e610.tar.gz
bootstrap: Replace GNU toolchain seeds with Mes for i686-linux.
* gnu/packages/bootstrap.scm (%bootstrap-inputs)[i686-linux]: Replace
%bootstrap-gcc, %bootstrap-binutils, %bootstrap-glibc with %mescc-tools-seed,
%mes-seed, %srfi-43 and %tinycc-seed.
* gnu/packages/make-bootstrap.scm (%bootstrap-tarballs)[i686-linux]: Replace
gcc-tarball, binutils-tarball, glibc-tarball with %mescc-tools-seed,
%mes-seed, %srfi-43 and %tinycc-seed.
* gnu/packages/commencement.scm (%bootstrap-inputs+toolchain)[i686-linux]: Add
glibc-mesboot, binutils-mesboot, gcc-wrapper, gcc-mesboot.
(file-boot0)[i686-linux]: Disable strip-binaries?, validate-runpath?.
(libstdc++-boot0)[i686-linux]: Add libtool install workarourd: copy
libstdc++.so.0.0.20 from gcc-mesboot.
(gcc-boot0)[i686-linux]: Add libtool install workaround: touch
libcc1.so.0.0.0, libcc1plugin.so.0.0.0.
(perl-boot0): Disable validate-runpath?.
(bison-boot0)[i686-linux]: Do not use ranlib -D.
Diffstat (limited to 'gnu/packages/commencement.scm')
-rw-r--r--gnu/packages/commencement.scm36
1 files changed, 34 insertions, 2 deletions
diff --git a/gnu/packages/commencement.scm b/gnu/packages/commencement.scm
index 349dc32adf..446129c4be 100644
--- a/gnu/packages/commencement.scm
+++ b/gnu/packages/commencement.scm
@@ -1571,7 +1571,13 @@ exec " gcc "/bin/" program
 (define (%bootstrap-inputs+toolchain)
   ;; The traditional bootstrap-inputs.  For the i686-linux Reduced Binary Seed
   ;; the actual reduced set with bootstrapped toolchain.
-  (%bootstrap-inputs))
+  (append (match (%current-system)
+            ("i686-linux" `(("libc" ,glibc-mesboot)
+                            ("binutils" ,binutils-mesboot)
+                            ("gcc-wrapper" ,gcc-mesboot-wrapper)
+                            ("gcc" ,gcc-mesboot)))
+            (_ '()))
+          (%bootstrap-inputs)))
 
 (define gnu-make-boot0
   (package-with-bootstrap-guile
@@ -1716,7 +1722,23 @@ exec " gcc "/bin/" program
          ;; XXX: libstdc++.so NEEDs ld.so for some reason.
          #:validate-runpath? #f
 
-         ,@(package-arguments lib)))
+         ,@(match (%current-system)
+             ("i686-linux"
+              (substitute-keyword-arguments (package-arguments lib)
+                ((#:phases phases)
+                 `(modify-phases ,phases
+                    ;; FIXME: why doesn't this package build libstdc++.so.6.0.20,
+                    ;; when gcc-mesboot builds it fine?
+                    ;; libtool: install: /gnu/store/7swwdnq02lqk4xkd8740fxdj1h4va38l-bootstrap-binaries-0/bin/install -c .libs/libstdc++.so.6.0.20 /gnu/store/np5pmdlwfin3vmqk88chh0fgs0ncki79-libstdc++-boot0-4.8.5/lib/libstdc++.so.6.0.20
+                    ;; /gnu/store/7swwdnq02lqk4xkd8740fxdj1h4va38l-bootstrap-binaries-0/bin/install: cannot stat '.libs/libstdc++.so.6.0.20': No such file or directory
+                    (add-after 'build 'copy-libstdc++-
+                      (lambda* (#:key outputs #:allow-other-keys)
+                        (let ((gcc (assoc-ref %build-inputs "gcc"))
+                              (out (assoc-ref outputs "out")))
+                          (copy-file (string-append gcc "/lib/libstdc++.so.6.0.20")
+                                     (string-append "src/.libs/libstdc++.so.6.0.20"))
+                          #t)))))))
+             (_ (package-arguments lib)))))
       (inputs (%boot0-inputs))
       (native-inputs '()))))
 
@@ -1786,6 +1808,16 @@ exec " gcc "/bin/" program
                                          ,(package-name lib)))
                              (list gmp-6.0 mpfr mpc))
                       #t)))
+                ,(match (%current-system)
+                   ("i686-linux"
+                    '(add-after 'build 'libtool-workaround
+                      (lambda _
+                        ;; libtool: install: /gnu/store/7swwdnq02lqk4xkd8740fxdj1h4va38l-bootstrap-binaries-0/bin/install -c .libs/libcc1.so.0.0.0 /gnu/store/8qf47i99nxz9jvrmq5va0g3q1yvs3x74-gcc-cross-boot0-5.5.0-lib/lib/./libcc1.so.0.0.0
+                        ;; /gnu/store/7swwdnq02lqk4xkd8740fxdj1h4va38l-bootstrap-binaries-0/bin/install: cannot stat '.libs/libcc1.so.0.0.0': No such file or directory
+                        (system* "touch"
+                                 "libcc1/.libs/libcc1.so.0.0.0"
+                                 "libcc1/.libs/libcc1plugin.so.0.0.0"))))
+                   (_ 'identity))
                 (add-after 'install 'symlink-libgcc_eh
                   (lambda* (#:key outputs #:allow-other-keys)
                     (let ((out (assoc-ref outputs "lib")))