From d536c39e5490ab2a8d41e594f33483ee2946e610 Mon Sep 17 00:00:00 2001 From: Jan Nieuwenhuizen Date: Sun, 9 Sep 2018 14:53:48 +0200 Subject: [PATCH] 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. --- gnu/packages/bootstrap.scm | 13 +++++++++--- gnu/packages/commencement.scm | 36 +++++++++++++++++++++++++++++++-- gnu/packages/make-bootstrap.scm | 11 +++++++--- 3 files changed, 52 insertions(+), 8 deletions(-) diff --git a/gnu/packages/bootstrap.scm b/gnu/packages/bootstrap.scm index 19995e629f..83dd2f860f 100644 --- a/gnu/packages/bootstrap.scm +++ b/gnu/packages/bootstrap.scm @@ -655,9 +655,16 @@ exec ~a/bin/.gcc-wrapped -B~a/lib \ (define (%bootstrap-inputs) ;; The initial, pre-built inputs. From now on, we can start building our ;; own packages. - `(("libc" ,%bootstrap-glibc) - ("gcc" ,%bootstrap-gcc) - ("binutils" ,%bootstrap-binutils) + `(,@(match (%current-system) + ("i686-linux" `(("linux-libre-headers" ,%bootstrap-linux-libre-headers) + ("mescc-tools-seed" ,%mescc-tools-seed) + ("mes-seed" ,%mes-seed) + ("srfi-43" ,%srfi-43 ) + ("tinycc-seed" ,%tinycc-seed))) + + (_ `(("libc" ,%bootstrap-glibc) + ("gcc" ,%bootstrap-gcc) + ("binutils" ,%bootstrap-binutils)))) ("coreutils&co" ,%bootstrap-coreutils&co) ;; In gnu-build-system.scm, we rely on the availability of Bash. 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"))) diff --git a/gnu/packages/make-bootstrap.scm b/gnu/packages/make-bootstrap.scm index 6523f36d8d..3553737f1e 100644 --- a/gnu/packages/make-bootstrap.scm +++ b/gnu/packages/make-bootstrap.scm @@ -728,9 +728,14 @@ for `sh' in $PATH, and without nscd, and with static NSS modules." %build-inputs) #t))) (inputs `(("guile-tarball" ,%guile-bootstrap-tarball) - ("gcc-tarball" ,%gcc-bootstrap-tarball) - ("binutils-tarball" ,%binutils-bootstrap-tarball) - ("glibc-tarball" ,(%glibc-bootstrap-tarball)) + ,@(match (%current-system) + ("i686-linux" `(("mescc-tools-seed" ,(@ (gnu packages bootstrap) %mescc-tools-seed)) + ("mes-seed" ,(@ (gnu packages bootstrap) %mes-seed)) + ("srfi-43" ,(@ (gnu packages bootstrap) %srfi-43)) + ("tinycc-seed" ,(@ (gnu packages bootstrap) %tinycc-seed)))) + (_ `(("gcc-tarball" ,%gcc-bootstrap-tarball) + ("binutils-tarball" ,%binutils-bootstrap-tarball) + ("glibc-tarball" ,(%glibc-bootstrap-tarball))))) ("coreutils&co-tarball" ,%bootstrap-binaries-tarball))) (synopsis "Tarballs containing all the bootstrap binaries") (description synopsis)