bootstrap: Add Mes bootstrap.
* gnu/packages/patches/mes-nyacc-0.86.0.patch: Support bootstrap build. * gnu/packages/commencement.scm (%fake-bootstrap mes-boot0, mescc-tools-boot, nyacc-boot, mes-boot, tcc-boot0, tcc-boot, make-mesboot0, diffutils-mesboot, binutils-mesboot0, gcc-core-mesboot, mesboot-headers, glibc-mesboot0, gcc-mesboot0, binutils-mesboot, make-mesboot, gmp-boot, mpfr-boot, mpc-boot, gcc-mesboot1, gcc-mesboot1-wrapper, glibc-headers-mesboot, glibc-mesboot, gcc-mesboot, gcc-mesboot-wrapper, m4-mesboot): New variable. * gnu/packages/patches/binutils-boot-2.20.1a.patch: New file. New file. * gnu/packages/patches/gcc-boot-2.95.3.patch: New file. * gnu/packages/patches/gcc-boot-4.7.4.patch: New file. * gnu/packages/patches/glibc-boot-2.16.0.patch: New file. * gnu/packages/patches/glibc-boot-2.2.5.patch: New file. * gnu/packages/patches/glibc-bootstrap-system-2.16.0.patch: New file. * gnu/packages/patches/tcc-boot-0.9.27.patch: New file. * gnu/local.mk (dist_patch_DATA): Add them.
This commit is contained in:
parent
aec77e8695
commit
0b652851b1
@ -593,6 +593,7 @@ dist_patch_DATA = \
|
||||
%D%/packages/patches/bash-completion-directories.patch \
|
||||
%D%/packages/patches/bazaar-CVE-2017-14176.patch \
|
||||
%D%/packages/patches/beignet-correct-file-names.patch \
|
||||
%D%/packages/patches/binutils-boot-2.20.1a.patch \
|
||||
%D%/packages/patches/binutils-loongson-workaround.patch \
|
||||
%D%/packages/patches/blast+-fix-makefile.patch \
|
||||
%D%/packages/patches/boost-fix-icu-build.patch \
|
||||
@ -697,6 +698,7 @@ dist_patch_DATA = \
|
||||
%D%/packages/patches/gcc-arm-bug-71399.patch \
|
||||
%D%/packages/patches/gcc-arm-link-spec-fix.patch \
|
||||
%D%/packages/patches/gcc-asan-missing-include.patch \
|
||||
%D%/packages/patches/gcc-boot-2.95.3.patch \
|
||||
%D%/packages/patches/gcc-cross-environment-variables.patch \
|
||||
%D%/packages/patches/gcc-fix-texi2pod.patch \
|
||||
%D%/packages/patches/gcc-4.8-libsanitizer-fix.patch \
|
||||
@ -745,6 +747,9 @@ dist_patch_DATA = \
|
||||
%D%/packages/patches/glibc-CVE-2017-1000366-pt2.patch \
|
||||
%D%/packages/patches/glibc-CVE-2017-1000366-pt3.patch \
|
||||
%D%/packages/patches/glibc-allow-kernel-2.6.32.patch \
|
||||
%D%/packages/patches/glibc-boot-2.16.0.patch \
|
||||
%D%/packages/patches/glibc-boot-2.2.5.patch \
|
||||
%D%/packages/patches/glibc-bootstrap-system-2.16.0.patch \
|
||||
%D%/packages/patches/glibc-bootstrap-system.patch \
|
||||
%D%/packages/patches/glibc-hidden-visibility-ldconfig.patch \
|
||||
%D%/packages/patches/glibc-ldd-x86_64.patch \
|
||||
@ -1155,6 +1160,7 @@ dist_patch_DATA = \
|
||||
%D%/packages/patches/t1lib-CVE-2011-1552+.patch \
|
||||
%D%/packages/patches/tar-remove-wholesparse-check.patch \
|
||||
%D%/packages/patches/tar-skip-unreliable-tests.patch \
|
||||
%D%/packages/patches/tcc-boot-0.9.27.patch \
|
||||
%D%/packages/patches/tclxml-3.2-install.patch \
|
||||
%D%/packages/patches/tcsh-fix-autotest.patch \
|
||||
%D%/packages/patches/tcsh-fix-out-of-bounds-read.patch \
|
||||
|
@ -29,6 +29,7 @@
|
||||
#:use-module (gnu packages bootstrap)
|
||||
#:use-module (gnu packages base)
|
||||
#:use-module (gnu packages bash)
|
||||
#:use-module (gnu packages c)
|
||||
#:use-module (gnu packages gcc)
|
||||
#:use-module (gnu packages m4)
|
||||
#:use-module (gnu packages code)
|
||||
@ -40,6 +41,7 @@
|
||||
#:use-module (gnu packages gettext)
|
||||
#:use-module (gnu packages multiprecision)
|
||||
#:use-module (gnu packages compression)
|
||||
#:use-module (gnu packages mes)
|
||||
#:use-module (gnu packages perl)
|
||||
#:use-module (gnu packages linux)
|
||||
#:use-module (gnu packages hurd)
|
||||
@ -79,7 +81,1496 @@
|
||||
;;;
|
||||
;;; Code:
|
||||
|
||||
(define %fake-bootstrap? #t) ; cheat using Guile (instead of Mes) in MesCC
|
||||
; for speed-up?
|
||||
|
||||
(define mes-boot0
|
||||
(let ((version "0.17.1")
|
||||
(revision "2")
|
||||
(commit #f))
|
||||
(package
|
||||
(inherit mes)
|
||||
(name "mes-boot0")
|
||||
(version (if commit (string-append version "-" revision "." (string-take commit 7))
|
||||
version))
|
||||
(source (if commit
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "https://gitlab.com/janneke/mes"
|
||||
"/-/archive/" commit
|
||||
"/mes-" commit ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"1dfnchrz3fb8x220bz28i6p3ql2xfahk9mzin3vk8lyw45s12r5g")))
|
||||
(package-source mes)))
|
||||
(native-inputs '())
|
||||
(propagated-inputs '()))))
|
||||
|
||||
(define mescc-tools-boot
|
||||
(let ((version "0.4")
|
||||
(revision "1")
|
||||
(commit "f02b8f4fda8d0c5c11a1d63a02b2bfdfab55abc5"))
|
||||
(package-with-bootstrap-guile
|
||||
(package
|
||||
(inherit mescc-tools)
|
||||
(name "mescc-tools-boot")
|
||||
(version (string-append version "-" revision "." (string-take commit 7)))
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "https://gitlab.com/janneke/mescc-tools"
|
||||
"/-/archive/" commit
|
||||
"/mescc-tools-" commit ".tar.gz"))
|
||||
(file-name (string-append name "-" version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"14xw954ad4lnnyflgnwvzfhd3kqimniilzzyf4x23vljky2npkbf"))))
|
||||
(inputs '())
|
||||
(propagated-inputs '())
|
||||
(native-inputs
|
||||
`(("mescc-tools-seed" ,%mescc-tools-seed)
|
||||
("mes-source" ,(package-source mes-boot0))
|
||||
|
||||
("coreutils" ,%bootstrap-coreutils&co)
|
||||
("mes-seed" ,%mes-seed)))
|
||||
(build-system gnu-build-system)
|
||||
(arguments
|
||||
`(#:implicit-inputs? #f
|
||||
#:guile ,%bootstrap-guile
|
||||
#:strip-binaries? #f ; binutil's strip b0rkes MesCC/M1/hex2 binaries
|
||||
#:phases
|
||||
(modify-phases %standard-phases
|
||||
(add-after 'unpack 'unpack-seeds
|
||||
(lambda* (#:key outputs #:allow-other-keys)
|
||||
(let* ((coreutils (assoc-ref %build-inputs "coreutils"))
|
||||
(mescc-tools-seed (assoc-ref %build-inputs "mescc-tools-seed"))
|
||||
(mes-seed (assoc-ref %build-inputs "mes-seed"))
|
||||
(mes-source (assoc-ref %build-inputs "mes-source"))
|
||||
(out (assoc-ref %outputs "out")))
|
||||
(with-directory-excursion ".."
|
||||
(and
|
||||
(mkdir-p "mescc-tools-seed")
|
||||
(invoke "tar" "--strip=1" "-C" "mescc-tools-seed"
|
||||
"-xvf" mescc-tools-seed)
|
||||
(mkdir-p "mes-source")
|
||||
(invoke "tar" "--strip=1" "-C" "mes-source"
|
||||
"-xvf" mes-source)
|
||||
(mkdir-p "mes-seed")
|
||||
(invoke "tar" "--strip=1" "-C" "mes-seed"
|
||||
"-xvf" mes-seed))))))
|
||||
(replace 'configure
|
||||
(lambda* (#:key outputs #:allow-other-keys)
|
||||
(let ((coreutils (assoc-ref %build-inputs "coreutils"))
|
||||
(out (assoc-ref %outputs "out")))
|
||||
(setenv "PATH" (string-append coreutils "/bin"
|
||||
":" "../mescc-tools-seed"))
|
||||
(format (current-error-port) "PATH=~s\n" (getenv "PATH"))
|
||||
(setenv "PREFIX" out)
|
||||
(setenv "MES_PREFIX" "../mes-source")
|
||||
(setenv "MESCC_TOOLS_SEED" "../mescc-tools-seed")
|
||||
(setenv "MES_SEED" "../mes-seed")
|
||||
#t)))
|
||||
(replace 'build
|
||||
(lambda _
|
||||
(invoke "sh" "build.sh")))
|
||||
(replace 'check
|
||||
(lambda _
|
||||
(invoke "sh" "check.sh")))
|
||||
(replace 'install
|
||||
(lambda _
|
||||
(invoke "sh" "install.sh"))))))))))
|
||||
|
||||
(define nyacc-boot
|
||||
(let ((version "0.86.0")
|
||||
(revision "0")
|
||||
(commit #f))
|
||||
(package
|
||||
(inherit nyacc)
|
||||
(name "nyacc-boot")
|
||||
(version
|
||||
(if commit
|
||||
(string-append version "-" revision "." (string-take commit 7))
|
||||
version))
|
||||
(source
|
||||
(if commit
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "https://gitlab.com/janneke/nyacc"
|
||||
"/-/archive/" commit
|
||||
"/nyacc-" commit ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"0dlcqmchhl57nh7f0v6qb1kkbi7zbs3b185hcqv57fhb60b7rgcq")))
|
||||
(package-source nyacc))))))
|
||||
|
||||
(define mes-boot
|
||||
(package-with-bootstrap-guile
|
||||
(package
|
||||
(inherit mes)
|
||||
(source (package-source mes-boot0))
|
||||
(name "mes-boot")
|
||||
(inputs '())
|
||||
(propagated-inputs '())
|
||||
(native-inputs
|
||||
`(("mescc-tools" ,mescc-tools-boot)
|
||||
("nyacc-source" ,(package-source nyacc-boot))
|
||||
|
||||
("coreutils" , %bootstrap-coreutils&co)
|
||||
("mes-seed" ,%mes-seed)
|
||||
,@(if %fake-bootstrap? ; cheat: fast non-bootstrap testing with Guile
|
||||
`(("guile" ,%bootstrap-guile)
|
||||
("srfi-43" ,%srfi-43)) ; guile-2.0.9 lacks srfi-43; cherry-pick
|
||||
'())))
|
||||
(arguments
|
||||
`(#:implicit-inputs? #f
|
||||
#:guile ,%bootstrap-guile
|
||||
#:strip-binaries? #f ; binutil's strip b0rkes MesCC/M1/hex2 binaries
|
||||
#:phases
|
||||
(modify-phases %standard-phases
|
||||
(add-after 'unpack 'unpack-seeds
|
||||
(lambda* (#:key outputs #:allow-other-keys)
|
||||
(let ((coreutils (assoc-ref %build-inputs "coreutils"))
|
||||
(srfi-43 (assoc-ref %build-inputs "srfi-43"))
|
||||
(nyacc-source (assoc-ref %build-inputs "nyacc-source"))
|
||||
(mes-seed (assoc-ref %build-inputs "mes-seed")))
|
||||
(with-directory-excursion ".."
|
||||
(and
|
||||
(mkdir-p "nyacc-source")
|
||||
(invoke "tar" "--strip=1" "-C" "nyacc-source" "-xvf" nyacc-source)
|
||||
(mkdir-p "mes-seed")
|
||||
(invoke "tar" "--strip=1" "-C" "mes-seed" "-xvf" mes-seed)
|
||||
(or (not srfi-43)
|
||||
(and (mkdir-p "srfi")
|
||||
(copy-file srfi-43 "srfi/srfi-43.scm")
|
||||
#t)))))))
|
||||
(replace 'configure
|
||||
(lambda* (#:key outputs #:allow-other-keys)
|
||||
(let ((out (assoc-ref %outputs "out")))
|
||||
(symlink (string-append "../nyacc-source/module") "nyacc")
|
||||
(setenv "GUILE_LOAD_PATH" "nyacc")
|
||||
(setenv "GUILE_TOOLS" "true") ; no tools in bootstrap-guile
|
||||
(invoke "bash" "-x" "configure.sh"
|
||||
(string-append "--prefix=" out))
|
||||
(setenv "MES" "src/mes")
|
||||
(setenv "MESCC" "scripts/mescc")
|
||||
(when ,%fake-bootstrap? ; Cheat using Guile+Nyacc+MesCC; ~30 times faster
|
||||
(let ((dir (with-directory-excursion ".." (getcwd)))
|
||||
(guile (assoc-ref %build-inputs "guile"))
|
||||
(srfi-43 (assoc-ref %build-inputs "srfi-43")))
|
||||
(setenv "MES" "guile")
|
||||
(setenv "GUILE_AUTO_COMPILE" "1")
|
||||
(setenv "GUILE_LOAD_COMPILED_PATH"
|
||||
(string-append guile "/lib/guile/2.0/ccache"))
|
||||
(setenv "GUILE_LOAD_PATH"
|
||||
(string-append (string-append dir "/nyacc-source/module")
|
||||
":" dir
|
||||
":" guile "/share/guile/2.0/"))
|
||||
;; these fail with guile-2.0
|
||||
(when srfi-43
|
||||
(delete-file "tests/srfi-9.test")
|
||||
(delete-file "tests/srfi-43.test"))
|
||||
;; give auto-compile a home -- massive speed-up
|
||||
(mkdir-p "/tmp/home")
|
||||
(setenv "HOME" "/tmp/home")))
|
||||
#t)))
|
||||
(replace 'build
|
||||
(lambda _
|
||||
(invoke "sh" "build.sh")))
|
||||
(replace 'check
|
||||
(lambda _
|
||||
(when ,%fake-bootstrap?
|
||||
;; breaks with guile-2.0
|
||||
(delete-file "scaffold/boot/50-primitive-load.scm")
|
||||
(delete-file "scaffold/boot/51-module.scm"))
|
||||
(and
|
||||
(setenv "MES_ARENA" "100000000")
|
||||
(setenv "DIFF" "sh scripts/diff.scm")
|
||||
(invoke "sh" "-x" "build-aux/test.sh" "scaffold/tests/t")
|
||||
(invoke "sh" "-x" "build-aux/test.sh" "scaffold/tests/63-struct-cell")
|
||||
(invoke "sh" "-x" "check.sh"))))
|
||||
(replace 'install
|
||||
(lambda _
|
||||
(invoke "sh" "install.sh"))))))
|
||||
(native-search-paths
|
||||
;; Use the language-specific variables rather than 'CPATH' because they
|
||||
;; are equivalent to '-isystem' whereas 'CPATH' is equivalent to '-I'.
|
||||
;; The intent is to allow headers that are in the search path to be
|
||||
;; treated as "system headers" (headers exempt from warnings) just like
|
||||
;; the typical /usr/include headers on an FHS system.
|
||||
(list (search-path-specification
|
||||
(variable "C_INCLUDE_PATH")
|
||||
(files '("share/mes/include")))
|
||||
(search-path-specification
|
||||
(variable "LIBRARY_PATH")
|
||||
(files '("share/mes/lib"))))))))
|
||||
|
||||
(define tcc-boot0
|
||||
;; Pristine tcc cannot be built by MesCC, we are keeping a delta of 11
|
||||
;; patches. In a very early and rough form they were presented to the
|
||||
;; TinyCC developers, who at the time showed no interest in supporting the
|
||||
;; bootstrappable effort; we will try again later. These patches have been
|
||||
;; ported to 0.9.27, alas the resulting tcc is buggy. Once MesCC is more
|
||||
;; mature, this package should use the 0.9.27 sources (or later).
|
||||
(let ((version "0.9.26")
|
||||
(revision "3")
|
||||
(commit "812e9343e4520ec90934fd7f47134416ad0dce07"))
|
||||
(package-with-bootstrap-guile
|
||||
(package
|
||||
(inherit tcc)
|
||||
(name "tcc-boot0")
|
||||
(version (string-append version "-" revision "." (string-take commit 7)))
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "https://gitlab.com/janneke/tinycc"
|
||||
"/-/archive/" commit
|
||||
"/tinycc-" commit ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"0c68hmi6ryb3bmbmdrr5knhz61li3mlhkmxvji6khgkb199znlqc"))))
|
||||
(build-system gnu-build-system)
|
||||
(supported-systems '("i686-linux" "x86_64-linux"))
|
||||
(inputs '())
|
||||
(propagated-inputs '())
|
||||
(native-inputs
|
||||
`(("mes" ,mes-boot)
|
||||
("mes-seed" ,%mes-seed)
|
||||
("mescc-tools" ,mescc-tools-boot)
|
||||
("nyacc-source" ,(package-source nyacc-boot))
|
||||
|
||||
("coreutils" , %bootstrap-coreutils&co)
|
||||
("tinycc-seed" ,%tinycc-seed)
|
||||
,@(if %fake-bootstrap? ; cheat: fast non-bootstrap testing with Guile
|
||||
`(("guile" ,%bootstrap-guile)
|
||||
("srfi-43" ,%srfi-43)) ; guile-2.0.9 lacks srfi-43; cherry-pick
|
||||
'())))
|
||||
(arguments
|
||||
`(#:implicit-inputs? #f
|
||||
#:guile ,%bootstrap-guile
|
||||
#:strip-binaries? #f ; binutil's strip b0rkes MesCC/M1/hex2 binaries
|
||||
#:phases
|
||||
(modify-phases %standard-phases
|
||||
(add-after 'unpack 'unpack-seeds
|
||||
(lambda* (#:key outputs #:allow-other-keys)
|
||||
(let* ((coreutils (assoc-ref %build-inputs "coreutils"))
|
||||
(srfi-43 (assoc-ref %build-inputs "srfi-43"))
|
||||
(nyacc-source (assoc-ref %build-inputs "nyacc-source"))
|
||||
(mes-seed (assoc-ref %build-inputs "mes-seed"))
|
||||
(tinycc-seed (assoc-ref %build-inputs "tinycc-seed")))
|
||||
(setenv "PATH" (string-append
|
||||
coreutils "/bin"))
|
||||
(format (current-error-port) "PATH=~s\n" (getenv "PATH"))
|
||||
(with-directory-excursion ".."
|
||||
(and
|
||||
(mkdir-p "nyacc-source")
|
||||
(invoke "tar" "--strip=1" "-C" "nyacc-source"
|
||||
"-xvf" nyacc-source)
|
||||
(mkdir-p "mes-seed")
|
||||
(invoke "tar" "--strip=1" "-C" "mes-seed"
|
||||
"-xvf" mes-seed)
|
||||
(mkdir-p "tinycc-seed")
|
||||
(invoke "tar" "--strip=1" "-C" "tinycc-seed"
|
||||
"-xvf" tinycc-seed)
|
||||
(or (not srfi-43)
|
||||
(and (mkdir-p "srfi")
|
||||
(copy-file srfi-43 "srfi/srfi-43.scm")
|
||||
#t)))))))
|
||||
(replace 'configure
|
||||
(lambda* (#:key outputs #:allow-other-keys)
|
||||
(let* ((out (assoc-ref %outputs "out"))
|
||||
(dir (with-directory-excursion ".." (getcwd)))
|
||||
(coreutils (assoc-ref %build-inputs "coreutils"))
|
||||
(guile (assoc-ref %build-inputs "guile"))
|
||||
(mes (assoc-ref %build-inputs "mes"))
|
||||
(mescc-tools (assoc-ref %build-inputs "mescc-tools"))
|
||||
(libc (assoc-ref %build-inputs "libc"))
|
||||
(interpreter (if libc
|
||||
(string-append libc ,(glibc-dynamic-linker))
|
||||
(string-append mes "/lib/mes-loader"))))
|
||||
(setenv "PATH" (string-append
|
||||
coreutils "/bin"
|
||||
":" mes "/bin"
|
||||
(if guile (string-append ":" guile "/bin")
|
||||
"")
|
||||
":" mescc-tools "/bin"))
|
||||
|
||||
(setenv "PREFIX" out)
|
||||
(setenv "MESCC" (string-append mes "/bin/mescc"))
|
||||
(symlink (string-append mes "/share/mes") "mes")
|
||||
(setenv "MES_PREFIX" "mes")
|
||||
(setenv "OBJDUMP" "true")
|
||||
(setenv "ONE_SOURCE" "1")
|
||||
(setenv "PREPROCESS" "1")
|
||||
(setenv "MES_DEBUG" "1")
|
||||
(setenv "MES_ARENA" "70000000")
|
||||
(setenv "MES_MAX_ARENA" "70000000")
|
||||
|
||||
(if ,%fake-bootstrap?
|
||||
(begin ; Cheat using Guile+Nyacc+MesCC; ~30 times faster
|
||||
(setenv "MES" "guile")
|
||||
(setenv "GUILE_AUTO_COMPILE" "1")
|
||||
(setenv "GUILE_LOAD_COMPILED_PATH"
|
||||
(string-append guile "/lib/guile/2.0/ccache"))
|
||||
(setenv "GUILE_LOAD_PATH"
|
||||
(string-append dir
|
||||
":" guile "/share/guile/2.0/"
|
||||
":" dir "/nyacc-source/module"
|
||||
":" mes "/share/mes/guile"))
|
||||
|
||||
;; give auto-compile a home -- massive speed-up
|
||||
(mkdir-p "/tmp/home")
|
||||
(setenv "HOME" "/tmp/home"))
|
||||
|
||||
(begin ; True bootstrap build with Mes+Nyacc+MesCC
|
||||
(setenv "MES" "mes")
|
||||
(setenv "GUILE_LOAD_PATH" "nyacc")
|
||||
(symlink (string-append "../nyacc-source/module") "nyacc")))
|
||||
(invoke "sh" "configure"
|
||||
"--prefix=$PREFIX"
|
||||
(string-append "--elfinterp=" interpreter)
|
||||
"--crtprefix=."
|
||||
"--tccdir=."))))
|
||||
(replace 'build
|
||||
(lambda _
|
||||
(invoke "sh" "build.sh")))
|
||||
(replace 'check
|
||||
(lambda _
|
||||
(setenv "DIFF" "diff.scm")
|
||||
;; fail fast tests
|
||||
;; (invoke "sh" "test.sh" "mes/scaffold/tests/30-strlen")
|
||||
;; (invoke "sh" "-x" "test.sh" "mes/scaffold/tinycc/00_assignment")
|
||||
(setenv "TCC" "./tcc")
|
||||
(invoke "sh" "check.sh")))
|
||||
(replace 'install
|
||||
(lambda _
|
||||
(invoke "sh" "install.sh"))))))
|
||||
(native-search-paths
|
||||
;; Use the language-specific variables rather than 'CPATH' because they
|
||||
;; are equivalent to '-isystem' whereas 'CPATH' is equivalent to '-I'.
|
||||
;; The intent is to allow headers that are in the search path to be
|
||||
;; treated as "system headers" (headers exempt from warnings) just like
|
||||
;; the typical /usr/include headers on an FHS system.
|
||||
(list (search-path-specification
|
||||
(variable "C_INCLUDE_PATH")
|
||||
(files '("include")))
|
||||
(search-path-specification
|
||||
(variable "LIBRARY_PATH")
|
||||
(files '("lib")))))))))
|
||||
|
||||
(define tcc-boot
|
||||
(package-with-bootstrap-guile
|
||||
(package
|
||||
(inherit tcc-boot0)
|
||||
(name "tcc-boot")
|
||||
(version "0.9.27")
|
||||
(source (origin
|
||||
(inherit (package-source tcc))
|
||||
(patches (search-patches "tcc-boot-0.9.27.patch"))))
|
||||
(build-system gnu-build-system)
|
||||
(inputs '())
|
||||
(propagated-inputs '())
|
||||
(native-inputs
|
||||
`(("mes" ,mes-boot)
|
||||
("tcc" ,tcc-boot0)
|
||||
|
||||
("coreutils" , %bootstrap-coreutils&co)))
|
||||
(arguments
|
||||
`(#:implicit-inputs? #f
|
||||
#:guile ,%bootstrap-guile
|
||||
#:strip-binaries? #f ; binutil's strip b0rkes MesCC/M1/hex2
|
||||
; binaries, tcc-boot also comes with
|
||||
; MesCC/M1/hex2-built binaries
|
||||
#:phases
|
||||
(modify-phases %standard-phases
|
||||
(replace 'configure
|
||||
(lambda* (#:key outputs #:allow-other-keys)
|
||||
(let* ((out (assoc-ref %outputs "out"))
|
||||
(coreutils (assoc-ref %build-inputs "coreutils"))
|
||||
(mes (assoc-ref %build-inputs "mes"))
|
||||
(tcc (assoc-ref %build-inputs "tcc"))
|
||||
(libc (assoc-ref %build-inputs "libc"))
|
||||
(interpreter (if libc
|
||||
(string-append libc ,(glibc-dynamic-linker))
|
||||
(string-append mes "/lib/mes-loader"))))
|
||||
;; unpack
|
||||
(setenv "PATH" (string-append
|
||||
coreutils "/bin"
|
||||
":" tcc "/bin"))
|
||||
(format (current-error-port) "PATH=~s\n" (getenv "PATH"))
|
||||
(invoke "sh" "configure"
|
||||
(string-append "--cc=tcc")
|
||||
(string-append "--cpu=i386")
|
||||
(string-append "--prefix=" out)
|
||||
(string-append "--elfinterp=" interpreter)
|
||||
(string-append "--crtprefix=" tcc "/lib")
|
||||
(string-append "--sysincludepaths=" tcc "/include")
|
||||
(string-append "--libpaths=" tcc "/lib")))))
|
||||
(replace 'build
|
||||
(lambda* (#:key outputs #:allow-other-keys)
|
||||
(let* ((out (assoc-ref %outputs "out"))
|
||||
(mes (assoc-ref %build-inputs "mes"))
|
||||
(tcc (assoc-ref %build-inputs "tcc"))
|
||||
(libc (assoc-ref %build-inputs "libc"))
|
||||
(interpreter (if libc
|
||||
(string-append libc ,(glibc-dynamic-linker))
|
||||
(string-append mes "/lib/mes-loader"))))
|
||||
(invoke "tcc"
|
||||
"-vvv"
|
||||
"-D" "BOOTSTRAP=1"
|
||||
"-D" "ONE_SOURCE=1"
|
||||
"-D" "TCC_TARGET_I386=1"
|
||||
"-D" "CONFIG_TCC_STATIC=1"
|
||||
"-D" "CONFIG_USE_LIBGCC=1"
|
||||
"-D" (string-append "CONFIG_TCCDIR=\"" out "/lib/tcc\"")
|
||||
"-D" (string-append "CONFIG_TCC_CRTPREFIX=\"" out "/lib:{B}/lib:.\"")
|
||||
"-D" (string-append "CONFIG_TCC_CRTPREFIX=\"" out "/lib:{B}/lib:.\"")
|
||||
"-D" (string-append "CONFIG_TCC_ELFINTERP=\"" interpreter "\"")
|
||||
"-D" (string-append "CONFIG_TCC_LIBPATHS=\"" tcc "/lib:{B}/lib:.\"")
|
||||
"-D" (string-append "CONFIG_TCC_SYSINCLUDEPATHS=\"" tcc "/include" ":/include:{B}/include\"")
|
||||
"-D" (string-append "TCC_LIBGCC=\"" tcc "/lib/libc.a\"")
|
||||
"-o" "tcc"
|
||||
"tcc.c"))))
|
||||
(replace 'check
|
||||
(lambda _
|
||||
;; FIXME: add sensible check target (without depending on make)
|
||||
;; ./check.sh ?
|
||||
(= 1 (status:exit-val (system* "./tcc" "--help")))))
|
||||
(replace 'install
|
||||
(lambda* (#:key outputs #:allow-other-keys)
|
||||
(let ((out (assoc-ref %outputs "out"))
|
||||
(tcc (assoc-ref %build-inputs "tcc")))
|
||||
(and
|
||||
(mkdir-p (string-append out "/bin"))
|
||||
(copy-file "tcc" (string-append out "/bin/tcc"))
|
||||
(mkdir-p (string-append out "/lib/tcc"))
|
||||
(copy-recursively (string-append tcc "/include")
|
||||
(string-append out "/include"))
|
||||
(copy-recursively (string-append tcc "/lib")
|
||||
(string-append out "/lib"))
|
||||
(invoke "tcc" "-D" "TCC_TARGET_I386=1" "-c" "-o" "libtcc1.o" "lib/libtcc1.c")
|
||||
(invoke "tcc" "-ar" "rc" "libtcc1.a" "libtcc1.o")
|
||||
(copy-file "libtcc1.a" (string-append out "/lib/libtcc1.a"))
|
||||
(delete-file (string-append out "/lib/tcc/libtcc1.a"))
|
||||
(copy-file "libtcc1.a" (string-append out "/lib/tcc/libtcc1.a"))
|
||||
#t))))))))))
|
||||
|
||||
(define make-mesboot0
|
||||
(package-with-bootstrap-guile
|
||||
(package
|
||||
(inherit gnu-make)
|
||||
(name "make-mesboot0")
|
||||
(version "3.80")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "mirror://gnu/make/make-"
|
||||
version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"1pb7fb7fqf9wz9najm85qdma1xhxzf1rhj5gwrlzdsz2zm0hpcv4"))))
|
||||
(supported-systems '("i686-linux" "x86_64-linux"))
|
||||
(inputs '())
|
||||
(propagated-inputs '())
|
||||
(native-inputs `(("tcc" ,tcc-boot)
|
||||
|
||||
("bash" ,%bootstrap-coreutils&co)
|
||||
("coreutils" ,%bootstrap-coreutils&co)))
|
||||
(arguments
|
||||
`(#:implicit-inputs? #f
|
||||
#:tests? #f ; check depends on perl
|
||||
#:guile ,%bootstrap-guile
|
||||
#:configure-flags `("CC=tcc -DO_RDONLY=0"
|
||||
"LD=tcc"
|
||||
"--disable-nls")
|
||||
#:phases
|
||||
(modify-phases %standard-phases
|
||||
(add-after 'configure 'configure-fixup
|
||||
(lambda _
|
||||
(substitute* "build.sh"
|
||||
(("^REMOTE=.*") "REMOTE=stub\n")
|
||||
(("^extras=.*") "extras=getloadavg.c\n"))
|
||||
(substitute* "make.h"
|
||||
(("^extern long int lseek.*" all) (string-append "// " all)))
|
||||
#t))
|
||||
(delete 'patch-generated-file-shebangs) ; no perl
|
||||
(replace 'build
|
||||
(lambda _
|
||||
(invoke "sh" "./build.sh")))
|
||||
(replace 'install
|
||||
(lambda* (#:key outputs #:allow-other-keys)
|
||||
(let* ((out (assoc-ref outputs "out"))
|
||||
(bin (string-append out "/bin")))
|
||||
(install-file "make" bin))))))))))
|
||||
|
||||
(define diffutils-mesboot
|
||||
(package-with-bootstrap-guile
|
||||
(package
|
||||
(inherit diffutils)
|
||||
(name "diffutils-mesboot")
|
||||
(version "2.7")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "mirror://gnu/diffutils/diffutils-"
|
||||
version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"1mirn5i825bn5w7rh6mgn0r8aj9xqanav95dwcl1b8sn82f4iwnm"))))
|
||||
(supported-systems '("i686-linux" "x86_64-linux"))
|
||||
(inputs '())
|
||||
(propagated-inputs '())
|
||||
(native-inputs `(("mes" ,mes-boot)
|
||||
("tcc" ,tcc-boot)
|
||||
|
||||
("bash" ,%bootstrap-coreutils&co)
|
||||
("coreutils" ,%bootstrap-coreutils&co)
|
||||
("make" ,make-mesboot0)))
|
||||
(arguments
|
||||
`(#:implicit-inputs? #f
|
||||
#:guile ,%bootstrap-guile
|
||||
#:parallel-build? #f
|
||||
#:tests? #f ; check is naive, also checks non-built PROGRAMS
|
||||
#:strip-binaries? #f ; no strip yet
|
||||
#:phases
|
||||
(modify-phases %standard-phases
|
||||
;; diffutils-2.7 needs more traditional configure
|
||||
(replace 'configure
|
||||
(lambda* (#:key outputs #:allow-other-keys)
|
||||
(let ((out (assoc-ref outputs "out"))
|
||||
(bash (assoc-ref %build-inputs "bash")))
|
||||
(setenv "CONFIG_SHELL" (string-append bash "/bin/sh"))
|
||||
(setenv "CC" "tcc")
|
||||
(setenv "LD" "tcc")
|
||||
(invoke "./configure" (string-append "--prefix=" out)))))
|
||||
(add-before 'configure 'remove-diff3-sdiff
|
||||
(lambda* (#:key outputs #:allow-other-keys)
|
||||
(substitute* "Makefile.in"
|
||||
(("PROGRAMS = .*" all) "PROGRAMS = cmp diff"))))))))))
|
||||
|
||||
|
||||
(define binutils-mesboot0
|
||||
(package-with-bootstrap-guile
|
||||
(package
|
||||
(inherit binutils)
|
||||
(name "binutils-mesboot0")
|
||||
(version "2.20.1a")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "mirror://gnu/binutils/binutils-"
|
||||
version ".tar.bz2"))
|
||||
(patches (search-patches "binutils-boot-2.20.1a.patch"))
|
||||
(sha256
|
||||
(base32
|
||||
"0r7dr0brfpchh5ic0z9r4yxqn4ybzmlh25sbp30cacqk8nb7rlvi"))))
|
||||
(inputs '())
|
||||
(propagated-inputs '())
|
||||
(native-inputs `(("tcc" ,tcc-boot)
|
||||
|
||||
("bash" ,%bootstrap-coreutils&co)
|
||||
("coreutils" ,%bootstrap-coreutils&co)
|
||||
("diffutils" ,diffutils-mesboot)
|
||||
("make" ,make-mesboot0)))
|
||||
(supported-systems '("i686-linux" "x86_64-linux"))
|
||||
(arguments
|
||||
`(#:implicit-inputs? #f
|
||||
#:guile ,%bootstrap-guile
|
||||
#:tests? #f ; runtest: command not found
|
||||
#:parallel-build? #f
|
||||
#:strip-binaries? #f ; no strip yet
|
||||
#:configure-flags
|
||||
(let ((cppflags (string-append " -D __GLIBC_MINOR__=6"
|
||||
" -D MES_BOOTSTRAP=1"))
|
||||
(bash (assoc-ref %build-inputs "bash")))
|
||||
`(,(string-append "CONFIG_SHELL=" bash "/bin/sh")
|
||||
,(string-append "CPPFLAGS=" cppflags)
|
||||
"AR=tcc -ar"
|
||||
"CXX=false"
|
||||
"RANLIB=true"
|
||||
,(string-append "CC=tcc" cppflags)
|
||||
"--disable-nls"
|
||||
"--disable-shared"
|
||||
"--disable-werror"
|
||||
"--build=i686-unknown-linux-gnu"
|
||||
"--host=i686-unknown-linux-gnu"
|
||||
"--with-sysroot=/")))))))
|
||||
|
||||
(define gcc-core-mesboot
|
||||
;; Gcc-2.95.3 is the most recent GCC that is supported by what the Mes C
|
||||
;; Library v0.16 offers. Gcc-3.x (and 4.x) place higher demands on a C
|
||||
;; library, such as dir.h/struct DIR/readdir, locales, signals... Also,
|
||||
;; with gcc-2.95.3, binutils-boot-2.20.1a and glibc-2.2.5 we found a GNU
|
||||
;; toolchain triplet "that works".
|
||||
(package-with-bootstrap-guile
|
||||
(package
|
||||
(inherit gcc)
|
||||
(name "gcc-core-mesboot")
|
||||
(version "2.95.3")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "mirror://gnu/gcc/gcc-2.95.3/gcc-core-"
|
||||
version
|
||||
".tar.gz"))
|
||||
(patches (search-patches "gcc-boot-2.95.3.patch"))
|
||||
(sha256
|
||||
(base32
|
||||
"1xvfy4pqhrd5v2cv8lzf63iqg92k09g6z9n2ah6ndd4h17k1x0an"))))
|
||||
(supported-systems '("i686-linux" "x86_64-linux"))
|
||||
(inputs '())
|
||||
(propagated-inputs '())
|
||||
(native-inputs `(("binutils" ,binutils-mesboot0)
|
||||
("tcc" ,tcc-boot)
|
||||
|
||||
("bash" ,%bootstrap-coreutils&co)
|
||||
("coreutils" ,%bootstrap-coreutils&co)
|
||||
("diffutils" ,diffutils-mesboot)
|
||||
("make" ,make-mesboot0)))
|
||||
(outputs '("out"))
|
||||
(arguments
|
||||
`(#:implicit-inputs? #f
|
||||
#:guile ,%bootstrap-guile
|
||||
#:tests? #f
|
||||
#:parallel-build? #f
|
||||
#:strip-binaries? #f
|
||||
#:configure-flags
|
||||
(let ((out (assoc-ref %outputs "out")))
|
||||
`("--enable-static"
|
||||
"--disable-shared"
|
||||
"--disable-werror"
|
||||
"--build=i686-unknown-linux-gnu"
|
||||
"--host=i686-unknown-linux-gnu"
|
||||
,(string-append "--prefix=" out)))
|
||||
#:make-flags (list
|
||||
"CC=tcc -static -D __GLIBC_MINOR__=6"
|
||||
"OLDCC=tcc -static -D __GLIBC_MINOR__=6"
|
||||
"CC_FOR_BUILD=tcc -static -D __GLIBC_MINOR__=6"
|
||||
"AR=ar"
|
||||
"RANLIB=ranlib"
|
||||
(string-append "LIBGCC2_INCLUDES=-I "
|
||||
(assoc-ref %build-inputs "tcc")
|
||||
"/include")
|
||||
"LANGUAGES=c"
|
||||
(string-append "BOOT_LDFLAGS="
|
||||
" -B" (assoc-ref %build-inputs "tcc")
|
||||
"/lib/"))
|
||||
#:modules ((guix build gnu-build-system)
|
||||
(guix build utils)
|
||||
(srfi srfi-1))
|
||||
#:phases
|
||||
(modify-phases %standard-phases
|
||||
;; gcc-2.95.3 needs more traditional configure
|
||||
(add-before 'configure 'setenv
|
||||
(lambda* (#:key outputs #:allow-other-keys)
|
||||
(let ((out (assoc-ref outputs "out"))
|
||||
(bash (assoc-ref %build-inputs "bash"))
|
||||
(tcc (assoc-ref %build-inputs "tcc"))
|
||||
(cppflags " -D __GLIBC_MINOR__=6"))
|
||||
(setenv "CONFIG_SHELL" (string-append bash "/bin/sh"))
|
||||
(setenv "CPPFLAGS" cppflags)
|
||||
(setenv "CC" (string-append "tcc" cppflags))
|
||||
(setenv "CC_FOR_BUILD" (string-append "tcc" cppflags))
|
||||
(setenv "CPP" (string-append "tcc -E" cppflags))
|
||||
(with-output-to-file "config.cache"
|
||||
(lambda _
|
||||
(display "
|
||||
ac_cv_c_float_format='IEEE (little-endian)'
|
||||
"))))))
|
||||
(replace 'configure
|
||||
(lambda* (#:key configure-flags #:allow-other-keys)
|
||||
(format (current-error-port)
|
||||
"running ./configure ~a\n" (string-join configure-flags))
|
||||
(apply invoke "./configure" configure-flags)))
|
||||
(add-after 'configure 'remove-info
|
||||
(lambda _
|
||||
;; no info at this stage
|
||||
(delete-file-recursively "texinfo")
|
||||
(invoke "touch" "gcc/cpp.info" "gcc/gcc.info")))
|
||||
(add-after 'install 'install2
|
||||
(lambda* (#:key outputs #:allow-other-keys)
|
||||
(let* ((tcc (assoc-ref %build-inputs "tcc"))
|
||||
(tcc-lib (string-append tcc "/lib/x86-mes-gcc"))
|
||||
(out (assoc-ref outputs "out"))
|
||||
(gcc-dir (string-append
|
||||
out "/lib/gcc-lib/i686-unknown-linux-gnu/2.95.3")))
|
||||
(and
|
||||
(mkdir-p "tmp")
|
||||
(zero? (system (string-append "set -x; cd tmp && ar x ../gcc/libgcc2.a")))
|
||||
(zero? (system (string-append "set -x; cd tmp && ar r " gcc-dir "/libgcc.a *.o")))
|
||||
(copy-file "gcc/libgcc2.a" (string-append out "/lib/libgcc2.a"))
|
||||
(copy-file (string-append tcc "/lib/libtcc1.a")
|
||||
(string-append out "/lib/libtcc1.a"))
|
||||
(invoke "ar" "r" (string-append gcc-dir "/libc.a")
|
||||
(string-append tcc-lib "/libc+gnu.o")
|
||||
(string-append tcc-lib "/libtcc1.o"))
|
||||
(invoke "ar" "r" (string-append out "/lib/libc.a")
|
||||
(string-append tcc-lib "/libc+gnu.o")
|
||||
(string-append tcc-lib "/libtcc1.o"))
|
||||
(invoke "ls" "-ltrF" gcc-dir)
|
||||
(copy-recursively (string-append tcc "/include")
|
||||
(string-append out "/include"))
|
||||
#t)))))))
|
||||
(native-search-paths
|
||||
;; Use the language-specific variables rather than 'CPATH' because they
|
||||
;; are equivalent to '-isystem' whereas 'CPATH' is equivalent to '-I'.
|
||||
;; The intent is to allow headers that are in the search path to be
|
||||
;; treated as "system headers" (headers exempt from warnings) just like
|
||||
;; the typical /usr/include headers on an FHS system.
|
||||
(list (search-path-specification
|
||||
(variable "C_INCLUDE_PATH")
|
||||
(files '("include" "/lib/gcc-lib/i686-unknown-linux-gnu/2.95.3/include")))
|
||||
(search-path-specification
|
||||
(variable "LIBRARY_PATH")
|
||||
(files '("lib"))))))))
|
||||
|
||||
(define mesboot-headers
|
||||
(package-with-bootstrap-guile
|
||||
(package
|
||||
(inherit mes-boot)
|
||||
(name "mesboot-headers")
|
||||
(supported-systems '("i686-linux" "x86_64-linux"))
|
||||
(inputs '())
|
||||
(propagated-inputs '())
|
||||
(native-inputs `(("coreutils" ,%bootstrap-coreutils&co)
|
||||
("headers" ,%bootstrap-linux-libre-headers)))
|
||||
(arguments
|
||||
`(#:implicit-inputs? #f
|
||||
#:guile ,%bootstrap-guile
|
||||
#:tests? #f
|
||||
#:strip-binaries? #f
|
||||
#:phases
|
||||
(modify-phases %standard-phases
|
||||
(delete 'configure)
|
||||
(delete 'build)
|
||||
(replace 'install
|
||||
(lambda* (#:key outputs #:allow-other-keys)
|
||||
(let* ((out (assoc-ref outputs "out"))
|
||||
(include (string-append out "/include"))
|
||||
(headers (assoc-ref %build-inputs "headers" )))
|
||||
(mkdir-p include)
|
||||
(copy-recursively "include" out)
|
||||
(copy-recursively headers out)
|
||||
#t))))))
|
||||
(native-search-paths
|
||||
;; Use the language-specific variables rather than 'CPATH' because they
|
||||
;; are equivalent to '-isystem' whereas 'CPATH' is equivalent to '-I'.
|
||||
;; The intent is to allow headers that are in the search path to be
|
||||
;; treated as "system headers" (headers exempt from warnings) just like
|
||||
;; the typical /usr/include headers on an FHS system.
|
||||
(list (search-path-specification
|
||||
(variable "C_INCLUDE_PATH")
|
||||
(files '("include"))))))))
|
||||
|
||||
(define glibc-mesboot0
|
||||
;; GNU C Library 2.2.5 is the most recent glibc that we managed to build
|
||||
;; using gcc-2.95.3. Newer versions (2.3.x, 2.6, 2.1x) seem to need a newer
|
||||
;; gcc.
|
||||
(package-with-bootstrap-guile
|
||||
(package
|
||||
(inherit glibc)
|
||||
(name "glibc-mesboot0")
|
||||
(version "2.2.5")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "mirror://gnu/glibc/glibc-"
|
||||
version
|
||||
".tar.gz"))
|
||||
(patches (search-patches "glibc-boot-2.2.5.patch"))
|
||||
(sha256
|
||||
(base32
|
||||
"1vl48i16gx6h68whjyhgnn1s57vqq32f9ygfa2fls7pdkbsqvp2q"))))
|
||||
(supported-systems '("i686-linux" "x86_64-linux"))
|
||||
(inputs '())
|
||||
(propagated-inputs '())
|
||||
(native-inputs `(("binutils" ,binutils-mesboot0)
|
||||
("gcc" ,gcc-core-mesboot)
|
||||
|
||||
("bash" ,%bootstrap-coreutils&co)
|
||||
("coreutils" ,%bootstrap-coreutils&co)
|
||||
("diffutils" ,diffutils-mesboot)
|
||||
("headers" ,mesboot-headers)
|
||||
("make" ,make-mesboot0)))
|
||||
(outputs '("out"))
|
||||
(arguments
|
||||
`(#:implicit-inputs? #f
|
||||
#:guile ,%bootstrap-guile
|
||||
#:tests? #f
|
||||
#:strip-binaries? #f
|
||||
#:parallel-build? #f ; gcc-2.95.3 ICEs on massively parallel builds
|
||||
#:make-flags (list (string-append
|
||||
"SHELL="
|
||||
(assoc-ref %build-inputs "bash")
|
||||
"/bin/sh"))
|
||||
#:configure-flags
|
||||
(let ((out (assoc-ref %outputs "out"))
|
||||
(headers (assoc-ref %build-inputs "headers")))
|
||||
(list
|
||||
"--disable-shared"
|
||||
"--enable-static"
|
||||
"--disable-sanity-checks"
|
||||
"--build=i686-unknown-linux-gnu"
|
||||
"--host=i686-unknown-linux-gnu"
|
||||
(string-append "--with-headers=" headers "/include")
|
||||
"--enable-static-nss"
|
||||
"--without-__thread"
|
||||
"--without-cvs"
|
||||
"--without-gd"
|
||||
"--without-tls"
|
||||
(string-append "--prefix=" out)))
|
||||
#:phases
|
||||
(modify-phases %standard-phases
|
||||
(add-before 'configure 'setenv
|
||||
(lambda* (#:key outputs #:allow-other-keys)
|
||||
(let* ((out (assoc-ref outputs "out"))
|
||||
(bash (assoc-ref %build-inputs "bash"))
|
||||
(gcc (assoc-ref %build-inputs "gcc"))
|
||||
(headers (assoc-ref %build-inputs "headers"))
|
||||
(cppflags (string-append
|
||||
;;" -D __STDC__=1"
|
||||
" -D MES_BOOTSTRAP=1"
|
||||
" -D BOOTSTRAP_GLIBC=1"))
|
||||
(cflags (string-append " -L " (getcwd))))
|
||||
(setenv "CONFIG_SHELL" (string-append bash "/bin/sh"))
|
||||
(setenv "SHELL" (getenv "CONFIG_SHELL"))
|
||||
(setenv "CPP" (string-append gcc "/bin/gcc -E " cppflags))
|
||||
(setenv "CC" (string-append gcc "/bin/gcc " cppflags cflags))
|
||||
#t)))
|
||||
;; glibc-2.2.5 needs a more classic invocation of configure
|
||||
;; configure: warning: CONFIG_SHELL=/gnu/store/kpxi8h3669afr9r1bgvaf9ij3y4wdyyn-bash-minimal-4.4.12/bin/bash: invalid host type
|
||||
(replace 'configure
|
||||
(lambda* (#:key configure-flags #:allow-other-keys)
|
||||
(format (current-error-port)
|
||||
"running ./configure ~a\n" (string-join configure-flags))
|
||||
(apply invoke "./configure" configure-flags))))))
|
||||
(native-search-paths
|
||||
;; Use the language-specific variables rather than 'CPATH' because they
|
||||
;; are equivalent to '-isystem' whereas 'CPATH' is equivalent to '-I'.
|
||||
;; The intent is to allow headers that are in the search path to be
|
||||
;; treated as "system headers" (headers exempt from warnings) just like
|
||||
;; the typical /usr/include headers on an FHS system.
|
||||
(list (search-path-specification
|
||||
(variable "C_INCLUDE_PATH")
|
||||
(files '("include")))
|
||||
(search-path-specification
|
||||
(variable "CPLUS_INCLUDE_PATH")
|
||||
(files '("include")))
|
||||
(search-path-specification
|
||||
(variable "LIBRARY_PATH")
|
||||
(files '("lib"))))))))
|
||||
|
||||
(define gcc-mesboot0
|
||||
(package-with-bootstrap-guile
|
||||
(package
|
||||
(inherit gcc-core-mesboot)
|
||||
(name "gcc-mesboot0")
|
||||
(native-inputs `(("binutils" ,binutils-mesboot0)
|
||||
("gcc" ,gcc-core-mesboot)
|
||||
("libc" ,glibc-mesboot0)
|
||||
|
||||
("bash" ,%bootstrap-coreutils&co)
|
||||
("coreutils" ,%bootstrap-coreutils&co)
|
||||
("diffutils" ,diffutils-mesboot)
|
||||
("kernel-headers" ,%bootstrap-linux-libre-headers)
|
||||
("make" ,make-mesboot0)))
|
||||
(arguments
|
||||
(substitute-keyword-arguments (package-arguments gcc-core-mesboot)
|
||||
((#:phases phases)
|
||||
`(modify-phases ,phases
|
||||
(replace 'setenv
|
||||
(lambda* (#:key outputs #:allow-other-keys)
|
||||
(let ((out (assoc-ref outputs "out"))
|
||||
(bash (assoc-ref %build-inputs "bash"))
|
||||
(gcc (assoc-ref %build-inputs "gcc"))
|
||||
(glibc (assoc-ref %build-inputs "libc"))
|
||||
(kernel-headers (assoc-ref %build-inputs "kernel-headers")))
|
||||
(setenv "CONFIG_SHELL" (string-append bash "/bin/sh"))
|
||||
(format (current-error-port) "C_INCLUDE_PATH=~a\n" (getenv "C_INCLUDE_PATH"))
|
||||
(setenv "C_INCLUDE_PATH" (string-append
|
||||
gcc "/lib/gcc-lib/i686-unknown-linux-gnu/2.95.3/include"
|
||||
":" kernel-headers "/include"
|
||||
":" glibc "/include"))
|
||||
(format (current-error-port) "C_INCLUDE_PATH=~a\n" (getenv "C_INCLUDE_PATH"))
|
||||
(format (current-error-port) "LIBRARY_PATH=~a\n" (getenv "LIBRARY_PATH"))
|
||||
;; FIXME: add glibc dirs to paths manually
|
||||
(setenv "LIBRARY_PATH" (string-join
|
||||
(list (string-append glibc "/lib")
|
||||
(getenv "LIBRARY_PATH"))
|
||||
":"))
|
||||
(format (current-error-port) "LIBRARY_PATH=~a\n" (getenv "LIBRARY_PATH"))
|
||||
(with-output-to-file "config.cache"
|
||||
(lambda _
|
||||
(display "
|
||||
ac_cv_c_float_format='IEEE (little-endian)'
|
||||
")))
|
||||
#t)))
|
||||
(replace 'install2
|
||||
(lambda* (#:key outputs #:allow-other-keys)
|
||||
(let* ((out (assoc-ref outputs "out"))
|
||||
(gcc-dir (string-append
|
||||
out "/lib/gcc-lib/i686-unknown-linux-gnu/2.95.3")))
|
||||
(and
|
||||
(mkdir-p "tmp")
|
||||
(zero? (system (string-append "set -x; cd tmp && ar x ../gcc/libgcc2.a")))
|
||||
(zero? (system (string-append "set -x; cd tmp && ar r " gcc-dir "/libgcc.a *.o")))
|
||||
(copy-file "gcc/libgcc2.a" (string-append out "/lib/libgcc2.a"))))))))
|
||||
((#:configure-flags configure-flags)
|
||||
`(let ((out (assoc-ref %outputs "out")))
|
||||
`("--disable-shared"
|
||||
"--disable-werror"
|
||||
"--build=i686-unknown-linux-gnu"
|
||||
"--host=i686-unknown-linux-gnu"
|
||||
,(string-append "--prefix=" out))))
|
||||
((#:make-flags make-flags)
|
||||
`(let ((gcc (assoc-ref %build-inputs "gcc")))
|
||||
`("RANLIB=true"
|
||||
,(string-append "LIBGCC2_INCLUDES=-I " gcc "/include")
|
||||
"LANGUAGES=c"))))))))
|
||||
|
||||
(define binutils-mesboot
|
||||
(package-with-bootstrap-guile
|
||||
(package
|
||||
(inherit binutils-mesboot0)
|
||||
(name "binutils-mesboot")
|
||||
(native-inputs `(("binutils" ,binutils-mesboot0)
|
||||
("libc" ,glibc-mesboot0)
|
||||
("gcc" ,gcc-mesboot0)
|
||||
|
||||
("bash" ,%bootstrap-coreutils&co)
|
||||
("coreutils" ,%bootstrap-coreutils&co)
|
||||
("diffutils" ,diffutils-mesboot)
|
||||
("kernel-headers" ,%bootstrap-linux-libre-headers)
|
||||
("make" ,make-mesboot0)))
|
||||
(arguments
|
||||
(substitute-keyword-arguments (package-arguments binutils-mesboot0)
|
||||
((#:configure-flags configure-flags)
|
||||
'(list "--disable-nls"
|
||||
"--disable-shared"
|
||||
"--disable-werror"
|
||||
"--build=i686-unknown-linux-gnu"
|
||||
"--host=i686-unknown-linux-gnu"
|
||||
"--with-sysroot=/")))))))
|
||||
|
||||
(define make-mesboot
|
||||
(package-with-bootstrap-guile
|
||||
(package
|
||||
(inherit make-mesboot0)
|
||||
(name "make-mesboot")
|
||||
(version "3.82")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "mirror://gnu/make/make-"
|
||||
version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"1rs2f9hmvy3q6zkl15jnlmnpgffm0bhw5ax0h5c7q604wqrip69x"))))
|
||||
(native-inputs `(("binutils" ,binutils-mesboot0)
|
||||
("libc" ,glibc-mesboot0)
|
||||
("gcc" ,gcc-mesboot0)
|
||||
("make" ,make-mesboot0)
|
||||
|
||||
("bash" ,%bootstrap-coreutils&co)
|
||||
("coreutils" ,%bootstrap-coreutils&co)
|
||||
("kernel-headers" ,%bootstrap-linux-libre-headers)))
|
||||
(arguments
|
||||
(substitute-keyword-arguments (package-arguments make-mesboot0)
|
||||
((#:configure-flags configure-flags)
|
||||
`(let ((out (assoc-ref %outputs "out")))
|
||||
`(,(string-append "--prefix=" out))))
|
||||
((#:phases phases)
|
||||
`(modify-phases ,phases
|
||||
(delete 'configure-fixup)
|
||||
(add-before 'configure 'setenv
|
||||
(lambda _
|
||||
(setenv "LIBS" "-lc -lnss_files -lnss_dns -lresolv")
|
||||
#t)))))))))
|
||||
|
||||
(define gmp-boot
|
||||
(package
|
||||
(inherit gmp)
|
||||
(version "4.3.2")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "mirror://gnu/gmp/gmp-" version
|
||||
".tar.gz"))
|
||||
(sha256 (base32
|
||||
"15rwq54fi3s11izas6g985y9jklm3xprfsmym3v1g6xr84bavqvv"))))))
|
||||
|
||||
(define mpfr-boot
|
||||
(package
|
||||
(inherit mpfr)
|
||||
(version "2.4.2")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "mirror://gnu/mpfr/mpfr-" version
|
||||
".tar.gz"))
|
||||
(sha256 (base32
|
||||
"0dxn4904dra50xa22hi047lj8kkpr41d6vb9sd4grca880c7wv94"))))))
|
||||
|
||||
(define mpc-boot
|
||||
(package
|
||||
(inherit mpc)
|
||||
(version "1.0.3")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append
|
||||
"mirror://gnu/mpc/mpc-" version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"1hzci2zrrd7v3g1jk35qindq05hbl0bhjcyyisq9z209xb3fqzb1"))))))
|
||||
|
||||
(define gcc-mesboot1
|
||||
(package-with-bootstrap-guile
|
||||
(package
|
||||
(inherit gcc-mesboot0)
|
||||
(name "gcc-mesboot1")
|
||||
(version "4.7.4")
|
||||
(source (origin (inherit (package-source gcc-4.7))
|
||||
(patches (search-patches "gcc-boot-4.7.4.patch"))))
|
||||
(inputs `(("gmp-source" ,(package-source gmp-boot))
|
||||
("mpfr-source" ,(package-source mpfr-boot))
|
||||
("mpc-source" ,(package-source mpc-boot))))
|
||||
(native-inputs `(("binutils" ,binutils-mesboot)
|
||||
("gcc" ,gcc-mesboot0)
|
||||
("libc" ,glibc-mesboot0)
|
||||
|
||||
("bash" ,%bootstrap-coreutils&co)
|
||||
("coreutils" ,%bootstrap-coreutils&co)
|
||||
("diffutils" ,diffutils-mesboot)
|
||||
("kernel-headers" ,%bootstrap-linux-libre-headers)
|
||||
("make" ,make-mesboot)))
|
||||
(arguments
|
||||
(substitute-keyword-arguments (package-arguments gcc-core-mesboot)
|
||||
((#:make-flags make-flags)
|
||||
`(let* ((libc (assoc-ref %build-inputs "libc"))
|
||||
(ldflags (string-append
|
||||
"-B" libc "/lib "
|
||||
"-Wl,-dynamic-linker "
|
||||
"-Wl," libc
|
||||
,(glibc-dynamic-linker))))
|
||||
(list (string-append "LDFLAGS=" ldflags)
|
||||
(string-append "LDFLAGS_FOR_TARGET=" ldflags))))
|
||||
((#:phases phases)
|
||||
`(modify-phases ,phases
|
||||
;; c&p from commencement.scm:gcc-boot0
|
||||
(add-after 'unpack 'unpack-gmp&co
|
||||
(lambda* (#:key inputs #:allow-other-keys)
|
||||
(let ((gmp (assoc-ref %build-inputs "gmp-source"))
|
||||
(mpfr (assoc-ref %build-inputs "mpfr-source"))
|
||||
(mpc (assoc-ref %build-inputs "mpc-source")))
|
||||
|
||||
;; To reduce the set of pre-built bootstrap inputs, build
|
||||
;; GMP & co. from GCC.
|
||||
(for-each (lambda (source)
|
||||
(or (invoke "tar" "xvf" source)
|
||||
(error "failed to unpack tarball"
|
||||
source)))
|
||||
(list gmp mpfr mpc))
|
||||
|
||||
;; Create symlinks like `gmp' -> `gmp-x.y.z'.
|
||||
,@(map (lambda (lib)
|
||||
;; Drop trailing letters, as gmp-6.0.0a unpacks
|
||||
;; into gmp-6.0.0.
|
||||
`(symlink ,(string-trim-right
|
||||
(package-full-name lib "-")
|
||||
char-set:letter)
|
||||
,(package-name lib)))
|
||||
(list gmp-boot mpfr-boot mpc-boot))
|
||||
#t)))
|
||||
(delete 'remove-info)
|
||||
(replace 'setenv
|
||||
(lambda* (#:key outputs #:allow-other-keys)
|
||||
(let* ((out (assoc-ref outputs "out"))
|
||||
(binutils (assoc-ref %build-inputs "binutils"))
|
||||
(bash (assoc-ref %build-inputs "bash"))
|
||||
(gcc (assoc-ref %build-inputs "gcc"))
|
||||
(glibc (assoc-ref %build-inputs "libc"))
|
||||
(kernel-headers (assoc-ref %build-inputs "kernel-headers")))
|
||||
(setenv "CONFIG_SHELL" (string-append bash "/bin/sh"))
|
||||
(setenv "C_INCLUDE_PATH" (string-append
|
||||
gcc "/lib/gcc-lib/i686-unknown-linux-gnu/2.95.3/include"
|
||||
":" kernel-headers "/include"
|
||||
":" glibc "/include"
|
||||
":" (getcwd) "/mpfr/src"))
|
||||
(setenv "LIBRARY_PATH" (string-append glibc "/lib"
|
||||
":" gcc "/lib"))
|
||||
(format (current-error-port) "C_INCLUDE_PATH=~a\n" (getenv "C_INCLUDE_PATH"))
|
||||
(format (current-error-port) "LIBRARY_PATH=~a\n" (getenv "LIBRARY_PATH"))
|
||||
#t)))
|
||||
(delete 'install2)))
|
||||
((#:configure-flags configure-flags)
|
||||
`(let ((out (assoc-ref %outputs "out"))
|
||||
(glibc (assoc-ref %build-inputs "libc")))
|
||||
(list (string-append "--prefix=" out)
|
||||
"--build=i686-unknown-linux-gnu"
|
||||
"--host=i686-unknown-linux-gnu"
|
||||
|
||||
(string-append "--with-native-system-header-dir=" glibc "/include")
|
||||
(string-append "--with-build-sysroot=" glibc "/include")
|
||||
|
||||
"--disable-bootstrap"
|
||||
"--disable-decimal-float"
|
||||
"--disable-libatomic"
|
||||
"--disable-libcilkrts"
|
||||
"--disable-libgomp"
|
||||
"--disable-libitm"
|
||||
"--disable-libmudflap"
|
||||
"--disable-libquadmath"
|
||||
"--disable-libsanitizer"
|
||||
"--disable-libssp"
|
||||
"--disable-libvtv"
|
||||
"--disable-lto"
|
||||
"--disable-lto-plugin"
|
||||
"--disable-multilib"
|
||||
"--disable-plugin"
|
||||
"--disable-threads"
|
||||
"--enable-languages=c,c++"
|
||||
|
||||
"--enable-static"
|
||||
;; libstdc++.so: error: depends on 'libgcc_s.so.1', which cannot be found in RUNPATH ()
|
||||
"--disable-shared"
|
||||
"--enable-threads=single"
|
||||
|
||||
;; No pre-compiled libstdc++ headers, to save space.
|
||||
"--disable-libstdcxx-pch"
|
||||
|
||||
;; for libcpp ...
|
||||
"--disable-build-with-cxx"))))))))
|
||||
|
||||
(define gcc-mesboot1-wrapper
|
||||
;; We need this so gcc-mesboot1 can be used to create shared binaries that
|
||||
;; have the correct interpreter, otherwise configuring gcc-mesboot using
|
||||
;; --enable-shared will fail.
|
||||
(package-with-bootstrap-guile
|
||||
(package
|
||||
(inherit gcc-mesboot1)
|
||||
(name "gcc-mesboot1-wrapper")
|
||||
(source #f)
|
||||
(inputs '())
|
||||
(native-inputs `(("bash" ,%bootstrap-coreutils&co)
|
||||
("libc" ,glibc-mesboot)
|
||||
("gcc" ,gcc-mesboot1)))
|
||||
(arguments
|
||||
`(#:implicit-inputs? #f
|
||||
#:guile ,%bootstrap-guile
|
||||
#:phases
|
||||
(modify-phases %standard-phases
|
||||
(delete 'unpack)
|
||||
(delete 'configure)
|
||||
(delete 'install)
|
||||
(replace 'build
|
||||
(lambda* (#:key outputs #:allow-other-keys)
|
||||
(let* ((out (assoc-ref outputs "out"))
|
||||
(bash (assoc-ref %build-inputs "bash"))
|
||||
(libc (assoc-ref %build-inputs "libc"))
|
||||
(gcc (assoc-ref %build-inputs "gcc"))
|
||||
(bin (string-append out "/bin")))
|
||||
(mkdir-p bin)
|
||||
(for-each
|
||||
(lambda (program)
|
||||
(let ((wrapper (string-append bin "/" program)))
|
||||
(with-output-to-file wrapper
|
||||
(lambda _
|
||||
(display (string-append "#! " bash "/bin/bash
|
||||
exec " gcc "/bin/" program
|
||||
" -Wl,--dynamic-linker"
|
||||
" -Wl," libc ,(glibc-dynamic-linker)
|
||||
" -Wl,--rpath"
|
||||
" -Wl," libc "/lib"
|
||||
" \"$@\"
|
||||
"))
|
||||
(chmod wrapper #o555)))))
|
||||
'(
|
||||
"gcc"
|
||||
"g++"
|
||||
"i686-unknown-linux-gnu-gcc"
|
||||
"i686-unknown-linux-gnu-g++"
|
||||
))
|
||||
#t)))
|
||||
(replace 'check
|
||||
(lambda* (#:key outputs #:allow-other-keys)
|
||||
(let* ((out (assoc-ref outputs "out"))
|
||||
(bin (string-append out "/bin"))
|
||||
(program (string-append bin "/gcc")))
|
||||
(invoke program "--help"))))))))))
|
||||
|
||||
(define glibc-headers-mesboot
|
||||
(package-with-bootstrap-guile
|
||||
(package
|
||||
(inherit glibc-mesboot0)
|
||||
(name "glibc-headers-mesboot")
|
||||
(version "2.16.0")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "mirror://gnu/glibc/glibc-"
|
||||
version
|
||||
".tar.gz"))
|
||||
(patches (search-patches "glibc-boot-2.16.0.patch"
|
||||
"glibc-bootstrap-system-2.16.0.patch"))
|
||||
(sha256
|
||||
(base32
|
||||
"0vlz4x6cgz7h54qq4528q526qlhnsjzbsvgc4iizn76cb0bfanx7"))))
|
||||
(native-inputs `(("binutils" ,binutils-mesboot)
|
||||
("libc" ,glibc-mesboot0)
|
||||
("gcc" ,gcc-mesboot1)
|
||||
("headers" ,mesboot-headers)
|
||||
|
||||
("bash" ,%bootstrap-coreutils&co)
|
||||
("coreutils" ,%bootstrap-coreutils&co)
|
||||
("diffutils" ,diffutils-mesboot)
|
||||
("kernel-headers" ,%bootstrap-linux-libre-headers)
|
||||
("make" ,make-mesboot)))
|
||||
|
||||
(arguments
|
||||
(substitute-keyword-arguments (package-arguments glibc-mesboot0)
|
||||
((#:configure-flags configure-flags)
|
||||
`(let ((out (assoc-ref %outputs "out"))
|
||||
(headers (assoc-ref %build-inputs "headers")))
|
||||
(list
|
||||
(string-append "--prefix=" out)
|
||||
"--disable-obsolete-rpc"
|
||||
"--host=i686-unknown-linux-gnu"
|
||||
(string-append "--with-headers=" headers "/include")
|
||||
"--enable-static-nss"
|
||||
"--with-pthread"
|
||||
"--without-cvs"
|
||||
"--without-gd"
|
||||
"--enable-add-ons=nptl")))
|
||||
((#:make-flags make-flags)
|
||||
`(let ((bash (assoc-ref %build-inputs "bash")))
|
||||
(list (string-append "SHELL=" bash "/bin/sh")
|
||||
"install-bootstrap-headers=yes" "install-headers")))
|
||||
((#:phases phases)
|
||||
`(modify-phases ,phases
|
||||
(replace 'setenv
|
||||
(lambda* (#:key outputs #:allow-other-keys)
|
||||
(let* ((out (assoc-ref outputs "out"))
|
||||
(headers (assoc-ref %build-inputs "headers"))
|
||||
(bash (assoc-ref %build-inputs "bash"))
|
||||
(coreutils (assoc-ref %build-inputs "coreutils"))
|
||||
(libc (assoc-ref %build-inputs "libc"))
|
||||
(gcc (assoc-ref %build-inputs "gcc"))
|
||||
(cppflags (string-append
|
||||
" -I " (getcwd) "/nptl/sysdeps/pthread/bits"
|
||||
" -D BOOTSTRAP_GLIBC=1"))
|
||||
(cflags (string-append " -L " (getcwd)
|
||||
" -L " libc "/lib")))
|
||||
(setenv "libc_cv_friendly_stddef" "yes")
|
||||
(setenv "CONFIG_SHELL" (string-append bash "/bin/sh"))
|
||||
(setenv "SHELL" (getenv "CONFIG_SHELL"))
|
||||
(format (current-error-port) "CONFIG_SHELL=~s\n" (getenv "CONFIG_SHELL"))
|
||||
|
||||
(setenv "CPP" (string-append gcc "/bin/gcc -E " cppflags))
|
||||
(setenv "CC" (string-append gcc "/bin/gcc " cppflags cflags))
|
||||
|
||||
;; avoid -fstack-protector
|
||||
(setenv "libc_cv_ssp" "false")
|
||||
(substitute* "configure"
|
||||
(("/bin/pwd") (string-append coreutils "/bin/pwd")))
|
||||
(setenv "C_INCLUDE_PATH" (string-append libc "/include"
|
||||
headers "/include"))
|
||||
(setenv "LIBRARY_PATH" (string-append libc "/lib")))))
|
||||
(replace 'install
|
||||
(lambda* (#:key outputs make-flags #:allow-other-keys)
|
||||
(let ((kernel-headers (assoc-ref %build-inputs "kernel-headers"))
|
||||
(out (assoc-ref outputs "out")))
|
||||
(and (apply invoke "make" make-flags)
|
||||
(copy-recursively kernel-headers out)
|
||||
#t))))
|
||||
(replace 'configure
|
||||
(lambda* (#:key configure-flags #:allow-other-keys)
|
||||
(format (current-error-port) "running ../configure ~a\n" (string-join configure-flags))
|
||||
(mkdir-p "build")
|
||||
(chdir "build")
|
||||
(apply invoke "../configure" configure-flags)))
|
||||
(add-after 'configure 'remove-sunrpc
|
||||
(lambda _
|
||||
(invoke "make" (string-append (getcwd) "/sysd-sorted" )
|
||||
(string-append "SHELL=" (getenv "CONFIG_SHELL")))
|
||||
(substitute* "sysd-sorted"
|
||||
((" sunrpc") " ")
|
||||
((" nis") " "))
|
||||
;; 'rpcgen' needs native libc headers to be built.
|
||||
(substitute* "../Makefile"
|
||||
(("^SHELL := /bin/sh") (string-append "SHELL := " (getenv "CONFIG_SHELL"))))
|
||||
(substitute* "../Makeconfig"
|
||||
(("^SHELL := /bin/sh") (string-append "SHELL := " (getenv "CONFIG_SHELL"))))
|
||||
(substitute* "../elf/Makefile"
|
||||
(("^SHELL := /bin/sh") (string-append "SHELL := " (getenv "CONFIG_SHELL")))))))))))))
|
||||
|
||||
(define glibc-mesboot
|
||||
(package-with-bootstrap-guile
|
||||
(package
|
||||
(inherit glibc-headers-mesboot)
|
||||
(name "glibc-mesboot")
|
||||
(native-inputs `(("binutils" ,binutils-mesboot)
|
||||
("libc" ,glibc-mesboot0)
|
||||
("headers" ,glibc-headers-mesboot)
|
||||
("gcc" ,gcc-mesboot1)
|
||||
|
||||
("bash" ,%bootstrap-coreutils&co)
|
||||
("coreutils" ,%bootstrap-coreutils&co)
|
||||
("diffutils" ,diffutils-mesboot)
|
||||
("kernel-headers" ,%bootstrap-linux-libre-headers)
|
||||
("make" ,make-mesboot)))
|
||||
|
||||
(arguments
|
||||
`(#:validate-runpath? #f ; fails when using --enable-shared
|
||||
,@(substitute-keyword-arguments (package-arguments glibc-headers-mesboot)
|
||||
((#:make-flags make-flags)
|
||||
`(let ((bash (assoc-ref %build-inputs "bash")))
|
||||
(list (string-append "SHELL=" bash "/bin/sh"))))
|
||||
((#:phases phases)
|
||||
`(modify-phases ,phases
|
||||
(replace 'install
|
||||
(lambda* (#:key outputs make-flags #:allow-other-keys)
|
||||
(let* ((kernel-headers (assoc-ref %build-inputs "kernel-headers"))
|
||||
(out (assoc-ref outputs "out"))
|
||||
(install-flags (cons "install" make-flags)))
|
||||
(and (apply invoke "make" install-flags)
|
||||
(copy-recursively kernel-headers out)
|
||||
#t)))))))))
|
||||
(native-search-paths ;; FIXME: move to glibc-mesboot0
|
||||
;; Use the language-specific variables rather than 'CPATH' because they
|
||||
;; are equivalent to '-isystem' whereas 'CPATH' is equivalent to '-I'.
|
||||
;; The intent is to allow headers that are in the search path to be
|
||||
;; treated as "system headers" (headers exempt from warnings) just like
|
||||
;; the typical /usr/include headers on an FHS system.
|
||||
(list (search-path-specification
|
||||
(variable "C_INCLUDE_PATH")
|
||||
(files '("include")))
|
||||
(search-path-specification
|
||||
(variable "CPLUS_INCLUDE_PATH")
|
||||
(files '("include")))
|
||||
(search-path-specification
|
||||
(variable "LIBRARY_PATH")
|
||||
(files '("lib"))))))))
|
||||
|
||||
(define gcc-mesboot
|
||||
(package-with-bootstrap-guile
|
||||
(package
|
||||
(inherit gcc-mesboot1)
|
||||
(name "gcc-mesboot")
|
||||
(version "4.9.4")
|
||||
(source (package-source gcc-4.9))
|
||||
(native-inputs `(("binutils" ,binutils-mesboot)
|
||||
("gcc-wrapper" ,gcc-mesboot1-wrapper)
|
||||
("gcc" ,gcc-mesboot1)
|
||||
("libc" ,glibc-mesboot)
|
||||
|
||||
("bash" ,%bootstrap-coreutils&co)
|
||||
("coreutils" ,%bootstrap-coreutils&co)
|
||||
("diffutils" ,diffutils-mesboot)
|
||||
("kernel-headers" ,%bootstrap-linux-libre-headers)
|
||||
("make" ,make-mesboot)))
|
||||
(arguments
|
||||
`(#:validate-runpath? #f
|
||||
,@(substitute-keyword-arguments (package-arguments gcc-mesboot1)
|
||||
((#:configure-flags configure-flags)
|
||||
`(let ((out (assoc-ref %outputs "out"))
|
||||
(glibc (assoc-ref %build-inputs "libc")))
|
||||
(list (string-append "--prefix=" out)
|
||||
"--build=i686-unknown-linux-gnu"
|
||||
"--host=i686-unknown-linux-gnu"
|
||||
|
||||
"--with-host-libstdcxx=-lsupc++"
|
||||
|
||||
(string-append "--with-native-system-header-dir=" glibc "/include")
|
||||
(string-append "--with-build-sysroot=" glibc "/include")
|
||||
|
||||
"--disable-bootstrap"
|
||||
"--disable-decimal-float"
|
||||
"--disable-libatomic"
|
||||
"--disable-libcilkrts"
|
||||
"--disable-libgomp"
|
||||
"--disable-libitm"
|
||||
"--disable-libmudflap"
|
||||
"--disable-libquadmath"
|
||||
"--disable-libsanitizer"
|
||||
"--disable-libssp"
|
||||
"--disable-libvtv"
|
||||
"--disable-lto"
|
||||
"--disable-lto-plugin"
|
||||
"--disable-multilib"
|
||||
"--disable-plugin"
|
||||
"--disable-threads"
|
||||
"--enable-languages=c,c++"
|
||||
|
||||
"--enable-static"
|
||||
"--enable-shared"
|
||||
"--enable-threads=single"
|
||||
|
||||
;; No pre-compiled libstdc++ headers, to save space.
|
||||
"--disable-libstdcxx-pch"
|
||||
|
||||
;; for libcpp ...
|
||||
"--disable-build-with-cxx")))
|
||||
((#:phases phases)
|
||||
`(modify-phases ,phases
|
||||
(replace 'setenv
|
||||
(lambda* (#:key outputs #:allow-other-keys)
|
||||
(let* ((out (assoc-ref outputs "out"))
|
||||
(binutils (assoc-ref %build-inputs "binutils"))
|
||||
(bash (assoc-ref %build-inputs "bash"))
|
||||
(gcc (assoc-ref %build-inputs "gcc"))
|
||||
(glibc (assoc-ref %build-inputs "libc"))
|
||||
(kernel-headers (assoc-ref %build-inputs "kernel-headers")))
|
||||
(setenv "CONFIG_SHELL" (string-append bash "/bin/sh"))
|
||||
(setenv "C_INCLUDE_PATH" (string-append
|
||||
gcc "/lib/gcc-lib/i686-unknown-linux-gnu/4.7.4/include"
|
||||
":" kernel-headers "/include"
|
||||
":" glibc "/include"
|
||||
":" (getcwd) "/mpfr/src"))
|
||||
(setenv "CPLUS_INCLUDE_PATH" (string-append
|
||||
gcc "/lib/gcc-lib/i686-unknown-linux-gnu/4.7.4/include"
|
||||
":" kernel-headers "/include"
|
||||
":" glibc "/include"
|
||||
":" (getcwd) "/mpfr/src"))
|
||||
(setenv "LIBRARY_PATH" (string-append glibc "/lib"
|
||||
":" gcc "/lib"))
|
||||
(format (current-error-port) "C_INCLUDE_PATH=~a\n" (getenv "C_INCLUDE_PATH"))
|
||||
(format (current-error-port) "CPLUS_INCLUDE_PATH=~a\n" (getenv "CPLUS_INCLUDE_PATH"))
|
||||
(format (current-error-port) "LIBRARY_PATH=~a\n" (getenv "LIBRARY_PATH"))
|
||||
#t)))))))))))
|
||||
|
||||
(define gcc-mesboot-wrapper
|
||||
;; We need this so gcc-mesboot can be used to create shared binaries that
|
||||
;; have the correct interpreter and runpath to libc.
|
||||
(package-with-bootstrap-guile
|
||||
(package
|
||||
(inherit gcc-mesboot1-wrapper)
|
||||
(name "gcc-mesboot-wrapper")
|
||||
(source #f)
|
||||
(inputs '())
|
||||
(native-inputs `(("bash" ,%bootstrap-coreutils&co)
|
||||
("libc" ,glibc-mesboot)
|
||||
("gcc" ,gcc-mesboot))))))
|
||||
|
||||
(define m4-mesboot
|
||||
(package-with-bootstrap-guile
|
||||
(package
|
||||
(inherit m4)
|
||||
(name "m4-mesboot")
|
||||
(version "1.4")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "mirror://gnu/m4/m4-"
|
||||
version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"1f9bxj176kf3pvs350w2dfs8jgwhminywri5pyn01b11yc4yhsjw"))))
|
||||
(supported-systems '("i686-linux"))
|
||||
(native-inputs `(("mes" ,mes-boot)
|
||||
("tcc" ,tcc-boot)))
|
||||
(arguments
|
||||
`(#:phases
|
||||
(modify-phases %standard-phases
|
||||
(replace 'configure
|
||||
(lambda* (#:key outputs #:allow-other-keys)
|
||||
(let ((out (assoc-ref outputs "out")))
|
||||
(setenv "CONFIG_SHELL" (string-append
|
||||
(assoc-ref %build-inputs "bash")
|
||||
"/bin/sh"))
|
||||
(setenv "CC" "tcc -static")
|
||||
(setenv "CPP" "tcc -E")
|
||||
(invoke "./configure" (string-append "--prefix=" out)))))))))))
|
||||
|
||||
(define (%bootstrap-inputs+toolchain)
|
||||
;; The traditional bootstrap-inputs. For the i686-linux Reduced Binary Seed
|
||||
;; the actual reduced set with bootstrapped toolchain.
|
||||
(%bootstrap-inputs))
|
||||
|
||||
(define gnu-make-boot0
|
||||
|
157
gnu/packages/patches/binutils-boot-2.20.1a.patch
Normal file
157
gnu/packages/patches/binutils-boot-2.20.1a.patch
Normal file
@ -0,0 +1,157 @@
|
||||
This patch enables building binutils using TCC and Mes C Library
|
||||
|
||||
* disable building DOC
|
||||
* remove signed int trickery that does not work with TCC
|
||||
* fixe the malloc prototype to use size_t
|
||||
* add missing includes
|
||||
* remove C99'isms to avoid of mixing code and variable declaration
|
||||
* [MES_BOOTSTRAP]: remove strncmp to avoid duplicat symbol
|
||||
|
||||
Upstream status: Not presented upstream.
|
||||
|
||||
diff -purN -x config.status -x config.h -x BOOT ../binutils-2.20.1a/bfd/elf32-i386.c binutils-2.20.1a/bfd/elf32-i386.c
|
||||
--- ../binutils-2.20.1a/bfd/elf32-i386.c 2009-09-10 13:47:12.000000000 +0200
|
||||
+++ binutils-2.20.1a/bfd/elf32-i386.c 2018-06-23 19:33:20.068134411 +0200
|
||||
@@ -4254,6 +4254,7 @@ elf_i386_finish_dynamic_symbol (bfd *out
|
||||
if (!h->pointer_equality_needed)
|
||||
abort ();
|
||||
|
||||
+ {
|
||||
/* For non-shared object, we can't use .got.plt, which
|
||||
contains the real function addres if we need pointer
|
||||
equality. We load the GOT entry with the PLT entry. */
|
||||
@@ -4262,6 +4263,7 @@ elf_i386_finish_dynamic_symbol (bfd *out
|
||||
(plt->output_section->vma
|
||||
+ plt->output_offset + h->plt.offset),
|
||||
htab->elf.sgot->contents + h->got.offset);
|
||||
+ }
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
diff -purN -x config.status -x config.h -x BOOT ../binutils-2.20.1a/bfd/elfcode.h binutils-2.20.1a/bfd/elfcode.h
|
||||
--- ../binutils-2.20.1a/bfd/elfcode.h 2009-09-10 13:47:12.000000000 +0200
|
||||
+++ binutils-2.20.1a/bfd/elfcode.h 2018-06-19 19:07:16.647627075 +0200
|
||||
@@ -73,6 +73,7 @@
|
||||
#include "bfdlink.h"
|
||||
#include "libbfd.h"
|
||||
#include "elf-bfd.h"
|
||||
+#include <limits.h>
|
||||
|
||||
/* Renaming structures, typedefs, macros and functions to be size-specific. */
|
||||
#define Elf_External_Ehdr NAME(Elf,External_Ehdr)
|
||||
@@ -706,8 +707,8 @@ elf_object_p (bfd *abfd)
|
||||
if (i_ehdrp->e_shnum != 1)
|
||||
{
|
||||
/* Check that we don't have a totally silly number of sections. */
|
||||
- if (i_ehdrp->e_shnum > (unsigned int) -1 / sizeof (x_shdr)
|
||||
- || i_ehdrp->e_shnum > (unsigned int) -1 / sizeof (i_shdr))
|
||||
+ if (i_ehdrp->e_shnum > INT_MAX / sizeof (x_shdr)
|
||||
+ || i_ehdrp->e_shnum > INT_MAX / sizeof (i_shdr))
|
||||
goto got_wrong_format_error;
|
||||
|
||||
where += (i_ehdrp->e_shnum - 1) * sizeof (x_shdr);
|
||||
diff -purN -x config.status -x config.h -x BOOT ../binutils-2.20.1a/bfd/Makefile.in binutils-2.20.1a/bfd/Makefile.in
|
||||
--- ../binutils-2.20.1a/bfd/Makefile.in 2010-03-03 14:59:15.000000000 +0100
|
||||
+++ binutils-2.20.1a/bfd/Makefile.in 2018-06-16 14:00:46.297724081 +0200
|
||||
@@ -320,7 +320,7 @@ ACLOCAL_AMFLAGS = -I . -I .. -I ../confi
|
||||
# RELEASE=y
|
||||
INCDIR = $(srcdir)/../include
|
||||
CSEARCH = -I. -I$(srcdir) -I$(INCDIR)
|
||||
-SUBDIRS = doc po
|
||||
+SUBDIRS = # these fail to build: doc po
|
||||
bfddocdir = doc
|
||||
libbfd_la_LDFLAGS = $(am__append_1) -release `cat libtool-soversion` \
|
||||
@SHARED_LDFLAGS@ $(am__empty)
|
||||
diff -purN -x config.status -x config.h -x BOOT ../binutils-2.20.1a/binutils/arparse.c binutils-2.20.1a/binutils/arparse.c
|
||||
--- ../binutils-2.20.1a/binutils/arparse.c 2009-10-16 13:52:16.000000000 +0200
|
||||
+++ binutils-2.20.1a/binutils/arparse.c 2018-06-19 01:30:00.576219981 +0200
|
||||
@@ -330,7 +330,7 @@ YYID (i)
|
||||
# define YYMALLOC malloc
|
||||
# if ! defined malloc && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
|
||||
|| defined __cplusplus || defined _MSC_VER)
|
||||
-void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
|
||||
+void *malloc (size_t); /* INFRINGES ON USER NAME SPACE */
|
||||
# endif
|
||||
# endif
|
||||
# ifndef YYFREE
|
||||
diff -purN -x config.status -x config.h -x BOOT ../binutils-2.20.1a/binutils/dwarf.c binutils-2.20.1a/binutils/dwarf.c
|
||||
--- ../binutils-2.20.1a/binutils/dwarf.c 2009-09-14 13:43:26.000000000 +0200
|
||||
+++ binutils-2.20.1a/binutils/dwarf.c 2018-06-16 14:01:45.162684662 +0200
|
||||
@@ -27,6 +27,10 @@
|
||||
#include "dwarf2.h"
|
||||
#include "dwarf.h"
|
||||
|
||||
+#if MES_BOOTSTRAP
|
||||
+#include "getopt.h"
|
||||
+#endif
|
||||
+
|
||||
static int have_frame_base;
|
||||
static int need_base_address;
|
||||
|
||||
diff -purN -x config.status -x config.h -x BOOT ../binutils-2.20.1a/binutils/sysinfo.c binutils-2.20.1a/binutils/sysinfo.c
|
||||
--- ../binutils-2.20.1a/binutils/sysinfo.c 2009-10-16 13:52:17.000000000 +0200
|
||||
+++ binutils-2.20.1a/binutils/sysinfo.c 2018-06-19 01:29:23.823612807 +0200
|
||||
@@ -286,7 +286,7 @@ YYID (i)
|
||||
# define YYMALLOC malloc
|
||||
# if ! defined malloc && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
|
||||
|| defined __cplusplus || defined _MSC_VER)
|
||||
-void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
|
||||
+void *malloc (size_t); /* INFRINGES ON USER NAME SPACE */
|
||||
# endif
|
||||
# endif
|
||||
# ifndef YYFREE
|
||||
diff -purN -x config.status -x config.h -x BOOT ../binutils-2.20.1a/gas/config/tc-i386.c binutils-2.20.1a/gas/config/tc-i386.c
|
||||
--- ../binutils-2.20.1a/gas/config/tc-i386.c 2009-09-14 13:43:27.000000000 +0200
|
||||
+++ binutils-2.20.1a/gas/config/tc-i386.c 2018-06-23 19:39:37.546254752 +0200
|
||||
@@ -4869,6 +4869,7 @@ build_modrm_byte (void)
|
||||
if (vex_3_sources)
|
||||
{
|
||||
unsigned int nds, reg;
|
||||
+ expressionS *exp;
|
||||
|
||||
if (i.tm.opcode_modifier.veximmext
|
||||
&& i.tm.opcode_modifier.immext)
|
||||
@@ -4892,7 +4893,7 @@ build_modrm_byte (void)
|
||||
|
||||
/* Generate an 8bit immediate operand to encode the register
|
||||
operand. */
|
||||
- expressionS *exp = &im_expressions[i.imm_operands++];
|
||||
+ exp = &im_expressions[i.imm_operands++];
|
||||
i.op[i.operands].imms = exp;
|
||||
i.types[i.operands] = imm8;
|
||||
i.operands++;
|
||||
diff -purN -x config.status -x config.h -x BOOT ../binutils-2.20.1a/ld/ldgram.c binutils-2.20.1a/ld/ldgram.c
|
||||
--- ../binutils-2.20.1a/ld/ldgram.c 2009-10-16 13:52:15.000000000 +0200
|
||||
+++ binutils-2.20.1a/ld/ldgram.c 2018-06-19 01:30:57.809165437 +0200
|
||||
@@ -561,7 +561,7 @@ YYID (i)
|
||||
# define YYMALLOC malloc
|
||||
# if ! defined malloc && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
|
||||
|| defined __cplusplus || defined _MSC_VER)
|
||||
-void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
|
||||
+void *malloc (size_t); /* INFRINGES ON USER NAME SPACE */
|
||||
# endif
|
||||
# endif
|
||||
# ifndef YYFREE
|
||||
diff -purN -x config.status -x config.h -x BOOT ../binutils-2.20.1a/libiberty/strncmp.c binutils-2.20.1a/libiberty/strncmp.c
|
||||
--- ../binutils-2.20.1a/libiberty/strncmp.c 2005-03-28 04:09:01.000000000 +0200
|
||||
+++ binutils-2.20.1a/libiberty/strncmp.c 2018-06-23 19:19:50.038992482 +0200
|
||||
@@ -15,6 +15,13 @@ Compares the first @var{n} bytes of two
|
||||
#include <ansidecl.h>
|
||||
#include <stddef.h>
|
||||
|
||||
+#if !MES_BOOTSTRAP
|
||||
+
|
||||
+/*
|
||||
+ libtool: link: /gnu/store/rgwjixk5zl7s2d3xsb2ws2z2q3m0xjm4-tcc-boot-0.9.26-0.97196ce/bin/tcc -D __GLIBC_MINOR__=6 -D MES_BOOTSTRAP=1 -g -o size size.o bucomm.o version.o filemode.o ../bfd/.libs/libbfd.a ../libiberty/libiberty.a ./../intl/libintl.a
|
||||
+ /gnu/store/rgwjixk5zl7s2d3xsb2ws2z2q3m0xjm4-tcc-boot-0.9.26-0.97196ce/lib/libc.a: error: 'strncmp' defined twice
|
||||
+*/
|
||||
+
|
||||
int
|
||||
strncmp(const char *s1, const char *s2, register size_t n)
|
||||
{
|
||||
@@ -31,3 +38,5 @@ strncmp(const char *s1, const char *s2,
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
+
|
||||
+#endif // !MES_BOOTSTRAP
|
137
gnu/packages/patches/gcc-boot-2.95.3.patch
Normal file
137
gnu/packages/patches/gcc-boot-2.95.3.patch
Normal file
@ -0,0 +1,137 @@
|
||||
This patch enables building gcc-2.95.3 using TCC and Mes C Library.
|
||||
|
||||
* Disable building DOC
|
||||
* Avoid running `fixproto'.
|
||||
* Force running `fixinc'.
|
||||
* Replace Makefile trickery of creating an libgcc1.a archive, then
|
||||
extracting the .o files later to create a new libgcc2.a archive.
|
||||
Instead, keep temporary .o files.
|
||||
|
||||
Upstream status: Not presented upstream.
|
||||
|
||||
diff -purN -x foo.c -x BOOT -x BOOT-2 -x BOOT-strict -x .git -x Makefile -x config.status -x config.h -x BOOT -x BOOT-GCC ../gcc-2.95.3/gcc/Makefile.in gcc-2.95.3/gcc/Makefile.in
|
||||
--- ../gcc-2.95.3/gcc/Makefile.in 2001-01-25 15:02:58.000000000 +0100
|
||||
+++ gcc-2.95.3/gcc/Makefile.in 2018-06-23 11:46:03.525159181 +0200
|
||||
@@ -221,7 +221,7 @@ RANLIB_TEST_FOR_TARGET = \
|
||||
SYSTEM_HEADER_DIR = /usr/include
|
||||
|
||||
# Control whether to run fixproto.
|
||||
-STMP_FIXPROTO = stmp-fixproto
|
||||
+# STMP_FIXPROTO = stmp-fixproto
|
||||
|
||||
# Test to see whether <limits.h> exists in the system header files.
|
||||
LIMITS_H_TEST = [ -f $(SYSTEM_HEADER_DIR)/limits.h ]
|
||||
@@ -958,6 +958,7 @@ libgcc1.cross:
|
||||
# fragments.
|
||||
libgcc1.a: libgcc1.c $(CONFIG_H) $(LIB1FUNCS_EXTRA) config.status
|
||||
-rm -f tmplibgcc1.a
|
||||
+ mkdir -p libgcc1-o
|
||||
# Actually build it in tmplibgcc1.a, then rename at end,
|
||||
# so that libgcc1.a itself remains nonexistent if compilation is aborted.
|
||||
# -e causes any failing command to make this rule fail.
|
||||
@@ -974,6 +975,7 @@ libgcc1.a: libgcc1.c $(CONFIG_H) $(LIB1F
|
||||
if [ $$? -eq 0 ] ; then true; else exit 1; fi; \
|
||||
mv libgcc1$(objext) $${name}$(objext); \
|
||||
$(OLDAR) $(OLDAR_FLAGS) tmplibgcc1.a $${name}$(objext); \
|
||||
+ mv $${name}$(objext) libgcc1-o; \
|
||||
rm -f $${name}$(objext); \
|
||||
done
|
||||
# Some shells crash when a loop has no items.
|
||||
@@ -994,6 +996,7 @@ libgcc1.a: libgcc1.c $(CONFIG_H) $(LIB1F
|
||||
if [ $$? -eq 0 ] ; then true; else exit 1; fi; \
|
||||
$(OLDAR) $(OLDAR_FLAGS) tmplibgcc1.a $${name}$(objext); \
|
||||
if [ $$? -eq 0 ] ; then true; else exit 1; fi; \
|
||||
+ mv $${name}$(objext) libgcc1-o; \
|
||||
rm -f $${name}.s $${name}$(objext); \
|
||||
else true; \
|
||||
fi; \
|
||||
@@ -1024,6 +1027,7 @@ libgcc1-asm.a: libgcc2.ready config.stat
|
||||
if [ $$? -eq 0 ] ; then true; else exit 1; fi; \
|
||||
mv libgcc1$(objext) $${name}$(objext); \
|
||||
$(AR_FOR_TARGET) $(AR_FLAGS_FOR_TARGET) tmplibgcc1.a $${name}$(objext); \
|
||||
+ mv $${name}$(objext) libgcc1-o; \
|
||||
rm -f $${name}$(objext); \
|
||||
done
|
||||
-rm -f libgcc1.S
|
||||
@@ -1062,6 +1066,7 @@ libgcc2.a: libgcc2.c libgcc2.ready $(CON
|
||||
# Actually build it in tmplibgcc2.a, then rename at end,
|
||||
# so that libgcc2.a itself remains nonexistent if compilation is aborted.
|
||||
-rm -f tmplibgcc2.a
|
||||
+ mkdir -p libgcc2-o
|
||||
# -e causes any failing command to make this rule fail.
|
||||
# -e doesn't work in certain shells, so we test $$? as well.
|
||||
# lynx has a broken ar, it always complains when the initial library is
|
||||
@@ -1139,6 +1144,7 @@ libgcc2.a: libgcc2.c libgcc2.ready $(CON
|
||||
$(GCC_FOR_TARGET) $(LIBGCC2_CFLAGS) $(INCLUDES) -c $${file}; \
|
||||
if [ $$? -eq 0 ] ; then true; else exit 1; fi; \
|
||||
$(AR_FOR_TARGET) $(AR_FLAGS_FOR_TARGET) tmplibgcc2.a $${oname}$(objext); \
|
||||
+ mv $${oname}$(objext) libgcc2-o;\
|
||||
rm -f $${name}.s $${oname}$(objext); \
|
||||
fi; \
|
||||
done
|
||||
@@ -1156,7 +1162,7 @@ libgcc.a: $(LIBGCC1) $(LIBGCC2)
|
||||
-rm -rf tmplibgcc.a libgcc.a tmpcopy
|
||||
mkdir tmpcopy
|
||||
-if [ x$(LIBGCC1) != x ]; \
|
||||
- then (cd tmpcopy; $(AR_FOR_TARGET) x ../$(LIBGCC1)); \
|
||||
+ then cp -v libgcc1-o/*.o tmpcopy; \
|
||||
else true; \
|
||||
fi
|
||||
# Some versions of ar (specifically the one in RISC/os 5.x), create an
|
||||
@@ -1164,7 +1170,7 @@ libgcc.a: $(LIBGCC1) $(LIBGCC2)
|
||||
# the second ar command tries to overwrite this file. To avoid the error
|
||||
# message from ar, we make sure all files are writable.
|
||||
-(cd tmpcopy; chmod +w * > /dev/null 2>&1)
|
||||
- (cd tmpcopy; $(AR_FOR_TARGET) x ../$(LIBGCC2))
|
||||
+ cp -v libgcc2-o/*.o tmpcopy
|
||||
(cd tmpcopy; $(AR_FOR_TARGET) $(AR_FLAGS_FOR_TARGET) ../tmplibgcc.a *$(objext))
|
||||
rm -rf tmpcopy
|
||||
-if $(RANLIB_TEST_FOR_TARGET) ; then \
|
||||
@@ -2093,14 +2099,18 @@ gcov$(exeext): $(GCOV_OBJS) $(LIBDEPS)
|
||||
# s-* so that mostlyclean does not force the include directory to
|
||||
# be rebuilt.
|
||||
|
||||
+# STMP_FIXINC = @STMP_FIXINC@
|
||||
+STMP_FIXINC = stmp-fixinc
|
||||
+
|
||||
# Build the include directory including float.h (which no longer depends upon
|
||||
# enquire).
|
||||
-stmp-int-hdrs: stmp-fixinc $(USER_H) xlimits.h
|
||||
+stmp-int-hdrs: $(STMP_FIXINC) $(USER_H) xlimits.h
|
||||
# Copy in the headers provided with gcc.
|
||||
# The sed command gets just the last file name component;
|
||||
# this is necessary because VPATH could add a dirname.
|
||||
# Using basename would be simpler, but some systems don't have it.
|
||||
# The touch command is here to workaround an AIX/Linux NFS bug.
|
||||
+ -if [ -d include ] ; then true; else mkdir include; chmod a+rx include; fi
|
||||
for file in .. $(USER_H); do \
|
||||
if [ X$$file != X.. ]; then \
|
||||
realfile=`echo $$file | sed -e 's|.*/\([^/]*\)$$|\1|'`; \
|
||||
@@ -2265,16 +2275,17 @@ stmp-fixproto: fixhdr.ready fixproto stm
|
||||
#
|
||||
# Remake the info files.
|
||||
|
||||
-doc: info
|
||||
-info: cpp.info gcc.info lang.info
|
||||
-
|
||||
-cpp.info: $(srcdir)/cpp.texi
|
||||
- $(MAKEINFO) $(MAKEINFOFLAGS) -I$(srcdir) -o cpp.info $(srcdir)/cpp.texi
|
||||
-
|
||||
-gcc.info: $(srcdir)/gcc.texi $(srcdir)/extend.texi $(srcdir)/install.texi \
|
||||
- $(srcdir)/invoke.texi $(srcdir)/md.texi $(srcdir)/rtl.texi \
|
||||
- $(srcdir)/tm.texi $(srcdir)/gcov.texi
|
||||
- $(MAKEINFO) $(MAKEINFOFLAGS) -I$(srcdir) -o gcc.info $(srcdir)/gcc.texi
|
||||
+doc:
|
||||
+# doc: info
|
||||
+# info: cpp.info gcc.info lang.info
|
||||
+
|
||||
+# cpp.info: $(srcdir)/cpp.texi
|
||||
+# $(MAKEINFO) $(MAKEINFOFLAGS) -I$(srcdir) -o cpp.info $(srcdir)/cpp.texi
|
||||
+
|
||||
+# gcc.info: $(srcdir)/gcc.texi $(srcdir)/extend.texi $(srcdir)/install.texi \
|
||||
+# $(srcdir)/invoke.texi $(srcdir)/md.texi $(srcdir)/rtl.texi \
|
||||
+# $(srcdir)/tm.texi $(srcdir)/gcov.texi
|
||||
+# $(MAKEINFO) $(MAKEINFOFLAGS) -I$(srcdir) -o gcc.info $(srcdir)/gcc.texi
|
||||
|
||||
dvi: gcc.dvi cpp.dvi lang.dvi
|
||||
|
68
gnu/packages/patches/gcc-boot-4.7.4.patch
Normal file
68
gnu/packages/patches/gcc-boot-4.7.4.patch
Normal file
@ -0,0 +1,68 @@
|
||||
This patch enables building gcc-4.7.4 using gcc-2.95.3 and glibc-2.2.5
|
||||
|
||||
* Tweak Makefile to allow overriding NATIVE_SYSTEM_HEADER_DIR using #:makeflags
|
||||
* Add missing limits.h include.
|
||||
* Add SSIZE_MAX define. The SSIZE_MAX define has been added to Mes
|
||||
upstream and can be removed with the next Mes release.
|
||||
* Remove -fbuilding-libgcc flag, it assumes features being present from a
|
||||
newer gcc or glibc.
|
||||
* [MES_BOOTSTRAP_GCC]: Disable threads harder.
|
||||
|
||||
Upstream status: not presented upstream.
|
||||
|
||||
diff --git a/gcc/Makefile.in b/gcc/Makefile.in
|
||||
index f3cc49fdb18..bc5718fc9a6 100644
|
||||
--- a/gcc/Makefile.in
|
||||
+++ b/gcc/Makefile.in
|
||||
@@ -458,7 +458,7 @@ LINKER_PLUGIN_API_H = $(srcdir)/../include/plugin-api.h
|
||||
LTO_SYMTAB_H = $(srcdir)/../include/lto-symtab.h
|
||||
|
||||
# Default native SYSTEM_HEADER_DIR, to be overridden by targets.
|
||||
-NATIVE_SYSTEM_HEADER_DIR = @NATIVE_SYSTEM_HEADER_DIR@
|
||||
+# NATIVE_SYSTEM_HEADER_DIR = @NATIVE_SYSTEM_HEADER_DIR@
|
||||
# Default cross SYSTEM_HEADER_DIR, to be overridden by targets.
|
||||
CROSS_SYSTEM_HEADER_DIR = @CROSS_SYSTEM_HEADER_DIR@
|
||||
|
||||
diff --git a/gcc/config/host-linux.c b/gcc/config/host-linux.c
|
||||
index 94b7a0b89a7..ab2baab55ca 100644
|
||||
--- a/gcc/config/host-linux.c
|
||||
+++ b/gcc/config/host-linux.c
|
||||
@@ -23,6 +23,12 @@
|
||||
#include "hosthooks.h"
|
||||
#include "hosthooks-def.h"
|
||||
|
||||
+// ../.././gcc/config/host-linux.c:213: `SSIZE_MAX' undeclared (first
|
||||
+// use in this function)
|
||||
+#include <limits.h>
|
||||
+#ifndef SSIZE_MAX
|
||||
+# define SSIZE_MAX LONG_MAX
|
||||
+#endif
|
||||
|
||||
/* Linux has a feature called exec-shield-randomize that perturbs the
|
||||
address of non-fixed mapped segments by a (relatively) small amount.
|
||||
diff --git a/libgcc/Makefile.in b/libgcc/Makefile.in
|
||||
index c301ff03cae..f86318c3bd5 100644
|
||||
--- a/libgcc/Makefile.in
|
||||
+++ b/libgcc/Makefile.in
|
||||
@@ -225,7 +225,7 @@ endif
|
||||
LIBGCC2_DEBUG_CFLAGS = -g
|
||||
LIBGCC2_CFLAGS = -O2 $(LIBGCC2_INCLUDES) $(GCC_CFLAGS) $(HOST_LIBGCC2_CFLAGS) \
|
||||
$(LIBGCC2_DEBUG_CFLAGS) -DIN_LIBGCC2 \
|
||||
- -fbuilding-libgcc -fno-stack-protector \
|
||||
+ -fno-stack-protector \
|
||||
$(INHIBIT_LIBC_CFLAGS)
|
||||
|
||||
# Additional options to use when compiling libgcc2.a.
|
||||
diff --git a/libgcc/generic-morestack-thread.c b/libgcc/generic-morestack-thread.c
|
||||
index bbe6dd12b5a..1d1d48223d7 100644
|
||||
--- a/libgcc/generic-morestack-thread.c
|
||||
+++ b/libgcc/generic-morestack-thread.c
|
||||
@@ -35,7 +35,7 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
||||
will want to define inhibit_libc while building a compiler which
|
||||
can build glibc. */
|
||||
|
||||
-#ifndef inhibit_libc
|
||||
+#if 0 //!defined (inhibit_libc) && !MES_BOOTSTRAP_GCC
|
||||
|
||||
#include <errno.h>
|
||||
#include <pthread.h>
|
352
gnu/packages/patches/glibc-boot-2.16.0.patch
Normal file
352
gnu/packages/patches/glibc-boot-2.16.0.patch
Normal file
@ -0,0 +1,352 @@
|
||||
This patch enables building glibc-2.2.5 using TCC and GNU Make 4.x and Mes C Library.
|
||||
|
||||
* Makefile: Do not link with (non-existent) libgc_eh.
|
||||
* Makefile: Add SHELL variable, ready for substitution, export it.
|
||||
* Makefile: Do not build or assume librpc_compat_pic.
|
||||
* Makefile: Do not build libmesusage.
|
||||
* gen-as-const: Always add preamble.
|
||||
* [BOOTSTRAP_GLIBC]: Really disable rpc.
|
||||
|
||||
Upstream status: Not presented upstream.
|
||||
|
||||
diff '--exclude=*.orig' -purN /home/janneke/src/glibc-2.16.0/elf/Makefile glibc-2.16.0/elf/Makefile
|
||||
--- /home/janneke/src/glibc-2.16.0/elf/Makefile 2012-06-30 21:12:34.000000000 +0200
|
||||
+++ glibc-2.16.0/elf/Makefile 2018-09-02 12:54:44.616962543 +0200
|
||||
@@ -17,6 +17,8 @@
|
||||
|
||||
# Makefile for elf subdirectory of GNU C Library.
|
||||
|
||||
+SHELL := /bin/sh
|
||||
+
|
||||
subdir := elf
|
||||
|
||||
headers = elf.h bits/elfclass.h link.h bits/link.h
|
||||
diff '--exclude=*.orig' -purN /home/janneke/src/glibc-2.16.0/include/libc-symbols.h glibc-2.16.0/include/libc-symbols.h
|
||||
--- /home/janneke/src/glibc-2.16.0/include/libc-symbols.h 2012-06-30 21:12:34.000000000 +0200
|
||||
+++ glibc-2.16.0/include/libc-symbols.h 2018-09-02 22:41:00.798467803 +0200
|
||||
@@ -558,9 +558,9 @@ for linking")
|
||||
# define libc_hidden_weak(name) hidden_weak (name)
|
||||
# ifdef LINK_OBSOLETE_RPC
|
||||
/* libc_hidden_nolink_sunrpc should only get used in sunrpc code. */
|
||||
-# define libc_hidden_nolink_sunrpc(name, version) hidden_def (name)
|
||||
+# define libc_hidden_nolink_sunrpc(name, version)
|
||||
# else
|
||||
-# define libc_hidden_nolink_sunrpc(name, version) hidden_nolink (name, libc, version)
|
||||
+# define libc_hidden_nolink_sunrpc(name, version)
|
||||
# endif
|
||||
# define libc_hidden_ver(local, name) hidden_ver (local, name)
|
||||
# define libc_hidden_data_def(name) hidden_data_def (name)
|
||||
diff '--exclude=*.orig' -purN /home/janneke/src/glibc-2.16.0/Makeconfig glibc-2.16.0/Makeconfig
|
||||
--- /home/janneke/src/glibc-2.16.0/Makeconfig 2012-06-30 21:12:34.000000000 +0200
|
||||
+++ glibc-2.16.0/Makeconfig 2018-09-03 00:00:25.290357414 +0200
|
||||
@@ -23,6 +23,9 @@ ifneq (,)
|
||||
This makefile requires GNU Make.
|
||||
endif
|
||||
|
||||
+SHELL := /bin/sh
|
||||
+export SHELL
|
||||
+
|
||||
all: # Make this the default goal
|
||||
|
||||
ifneq "$(origin +included-Makeconfig)" "file"
|
||||
@@ -521,9 +524,9 @@ ifneq ($(have-cc-with-libunwind),yes)
|
||||
else
|
||||
libunwind = -lunwind
|
||||
endif
|
||||
-libgcc_eh := -Wl,--as-needed -lgcc_s $(libunwind) -Wl,--no-as-needed
|
||||
+libgcc_eh := #-Wl,--as-needed -lgcc_s $(libunwind) -Wl,--no-as-needed
|
||||
gnulib := -lgcc $(libgcc_eh)
|
||||
-static-gnulib := -lgcc -lgcc_eh $(libunwind)
|
||||
+static-gnulib := -lgcc $(libunwind)
|
||||
libc.so-gnulib := -lgcc
|
||||
endif
|
||||
+preinit = $(addprefix $(csu-objpfx),crti.o)
|
||||
diff '--exclude=*.orig' -purN /home/janneke/src/glibc-2.16.0/Makefile glibc-2.16.0/Makefile
|
||||
--- /home/janneke/src/glibc-2.16.0/Makefile 2012-06-30 21:12:34.000000000 +0200
|
||||
+++ glibc-2.16.0/Makefile 2018-09-02 23:01:10.485803965 +0200
|
||||
@@ -22,6 +22,9 @@ ifneq (,)
|
||||
This makefile requires GNU Make.
|
||||
endif
|
||||
|
||||
+SHELL := /bin/sh
|
||||
+export SHELL
|
||||
+
|
||||
include Makeconfig
|
||||
|
||||
|
||||
@@ -135,13 +138,10 @@ $(common-objpfx)linkobj/libc.so: $(elfob
|
||||
$(shlib-lds)
|
||||
$(build-shlib)
|
||||
|
||||
-$(common-objpfx)linkobj/libc_pic.a: $(common-objpfx)libc_pic.a \
|
||||
- $(common-objpfx)sunrpc/librpc_compat_pic.a
|
||||
+$(common-objpfx)linkobj/libc_pic.a: $(common-objpfx)libc_pic.a
|
||||
$(..)./scripts/mkinstalldirs $(common-objpfx)linkobj
|
||||
(cd $(common-objpfx)linkobj; \
|
||||
$(AR) x ../libc_pic.a; \
|
||||
- rm $$($(AR) t ../sunrpc/librpc_compat_pic.a | sed 's/^compat-//'); \
|
||||
- $(AR) x ../sunrpc/librpc_compat_pic.a; \
|
||||
$(AR) cr libc_pic.a *.os; \
|
||||
rm *.os)
|
||||
endif
|
||||
@@ -151,7 +151,7 @@ endif
|
||||
# the current libc build for testing.
|
||||
$(common-objpfx)testrun.sh: $(common-objpfx)config.make \
|
||||
$(..)Makeconfig $(..)Makefile
|
||||
- (echo '#!/bin/sh'; \
|
||||
+ (echo '#! $(SHELL)'; \
|
||||
echo 'builddir=`dirname "$$0"`'; \
|
||||
echo 'GCONV_PATH="$${builddir}/iconvdata" \'; \
|
||||
echo 'exec $(subst $(common-objdir),"$${builddir}",\
|
||||
diff '--exclude=*.orig' -purN /home/janneke/src/glibc-2.16.0/Makefile.in glibc-2.16.0/Makefile.in
|
||||
--- /home/janneke/src/glibc-2.16.0/Makefile.in 2012-06-30 21:12:34.000000000 +0200
|
||||
+++ glibc-2.16.0/Makefile.in 2018-09-02 13:03:01.892962551 +0200
|
||||
@@ -9,3 +9,6 @@ all .DEFAULT:
|
||||
install:
|
||||
LANGUAGE=C LC_ALL=C; export LANGUAGE LC_ALL; \
|
||||
$(MAKE) -r PARALLELMFLAGS="$(PARALLELMFLAGS)" -C $(srcdir) objdir=`pwd` $@
|
||||
+
|
||||
+export SHELL
|
||||
+export BASH
|
||||
diff '--exclude=*.orig' -purN /home/janneke/src/glibc-2.16.0/malloc/Makefile glibc-2.16.0/malloc/Makefile
|
||||
--- /home/janneke/src/glibc-2.16.0/malloc/Makefile 2012-06-30 21:12:34.000000000 +0200
|
||||
+++ glibc-2.16.0/malloc/Makefile 2018-09-02 17:11:33.461547394 +0200
|
||||
@@ -35,7 +35,7 @@ install-lib := libmcheck.a
|
||||
non-lib.a := libmcheck.a
|
||||
|
||||
# Additional library.
|
||||
-extra-libs = libmemusage
|
||||
+extra-libs = #libmemusage
|
||||
extra-libs-others = $(extra-libs)
|
||||
|
||||
libmemusage-routines = memusage
|
||||
diff '--exclude=*.orig' -purN /home/janneke/src/glibc-2.16.0/nscd/cache.c glibc-2.16.0/nscd/cache.c
|
||||
--- /home/janneke/src/glibc-2.16.0/nscd/cache.c 2012-06-30 21:12:34.000000000 +0200
|
||||
+++ glibc-2.16.0/nscd/cache.c 2018-09-02 23:38:31.757616750 +0200
|
||||
@@ -74,7 +74,11 @@ struct datahead *
|
||||
cache_search (request_type type, const void *key, size_t len,
|
||||
struct database_dyn *table, uid_t owner)
|
||||
{
|
||||
+#if !BOOTSTRAP_GLIBC
|
||||
unsigned long int hash = __nis_hash (key, len) % table->head->module;
|
||||
+#else
|
||||
+ unsigned long int hash = 0;
|
||||
+#endif
|
||||
|
||||
unsigned long int nsearched = 0;
|
||||
struct datahead *result = NULL;
|
||||
@@ -153,7 +153,11 @@ cache_add (int type, const void *key, si
|
||||
first ? _(" (first)") : "");
|
||||
}
|
||||
|
||||
+#if !BOOTSTRAP_GLIBC
|
||||
unsigned long int hash = __nis_hash (key, len) % table->head->module;
|
||||
+#else
|
||||
+ unsigned long int hash = 0;
|
||||
+#endif
|
||||
struct hashentry *newp;
|
||||
|
||||
newp = mempool_alloc (table, sizeof (struct hashentry), 0);
|
||||
diff '--exclude=*.orig' -purN /home/janneke/src/glibc-2.16.0/nscd/Makefile glibc-2.16.0/nscd/Makefile
|
||||
--- /home/janneke/src/glibc-2.16.0/nscd/Makefile 2012-06-30 21:12:34.000000000 +0200
|
||||
+++ glibc-2.16.0/nscd/Makefile 2018-09-02 23:49:29.948031787 +0200
|
||||
@@ -126,9 +126,7 @@ include $(patsubst %,$(..)cppflags-itera
|
||||
$(objpfx)nscd: $(nscd-modules:%=$(objpfx)%.o)
|
||||
|
||||
ifeq ($(build-shared),yes)
|
||||
-$(objpfx)nscd: $(common-objpfx)rt/librt.so $(shared-thread-library) \
|
||||
- $(common-objpfx)nis/libnsl.so
|
||||
+$(objpfx)nscd: $(common-objpfx)rt/librt.so $(shared-thread-library)
|
||||
else
|
||||
-$(objpfx)nscd: $(common-objpfx)rt/librt.a $(static-thread-library) \
|
||||
- $(common-objpfx)nis/libnsl.a
|
||||
+$(objpfx)nscd: $(common-objpfx)rt/librt.a $(static-thread-library)
|
||||
endif
|
||||
diff '--exclude=*.orig' -purN /home/janneke/src/glibc-2.16.0/nscd/nscd_helper.c glibc-2.16.0/nscd/nscd_helper.c
|
||||
--- /home/janneke/src/glibc-2.16.0/nscd/nscd_helper.c 2012-06-30 21:12:34.000000000 +0200
|
||||
+++ glibc-2.16.0/nscd/nscd_helper.c 2018-09-02 23:38:04.941189464 +0200
|
||||
@@ -474,7 +474,7 @@ struct datahead *
|
||||
__nscd_cache_search (request_type type, const char *key, size_t keylen,
|
||||
const struct mapped_database *mapped, size_t datalen)
|
||||
{
|
||||
- unsigned long int hash = __nis_hash (key, keylen) % mapped->head->module;
|
||||
+ unsigned long int hash = 0;
|
||||
size_t datasize = mapped->datasize;
|
||||
|
||||
ref_t trail = mapped->head->array[hash];
|
||||
diff '--exclude=*.orig' -purN /home/janneke/src/glibc-2.16.0/nss/getent.c glibc-2.16.0/nss/getent.c
|
||||
--- /home/janneke/src/glibc-2.16.0/nss/function.def 2012-06-30 21:12:34.000000000 +0200
|
||||
+++ glibc-2.16.0/nss/function.def 2018-09-18 13:54:49.582060539 +0200
|
||||
@@ -63,10 +63,12 @@
|
||||
DEFINE_GET (files, pwnam)
|
||||
DEFINE_GET (files, pwuid)
|
||||
|
||||
+#if !BOOTSTRAP_GLIBC
|
||||
/* rpc */
|
||||
DEFINE_ENT (files, rpc)
|
||||
DEFINE_GETBY (files, rpc, name)
|
||||
DEFINE_GETBY (files, rpc, number)
|
||||
+#endif
|
||||
|
||||
/* services */
|
||||
DEFINE_ENT (files, serv)
|
||||
diff -u ~/src/glibc-2.16.0/nss/getent.c glibc-2.16.0/nss/getent.c
|
||||
--- /home/janneke/src/glibc-2.16.0/nss/getent.c 2012-06-30 21:12:34.000000000 +0200
|
||||
+++ glibc-2.16.0/nss/getent.c 2018-09-18 13:57:41.856849140 +0200
|
||||
@@ -700,6 +700,7 @@
|
||||
return result;
|
||||
}
|
||||
|
||||
+#if !BOOTSTRAP_GLIBC
|
||||
/* Now is all for rpc */
|
||||
static inline void
|
||||
print_rpc (struct rpcent *rpc)
|
||||
@@ -745,6 +746,7 @@
|
||||
|
||||
return result;
|
||||
}
|
||||
+#endif //rpc
|
||||
|
||||
/* for services */
|
||||
static void
|
||||
@@ -880,7 +882,9 @@
|
||||
D(networks)
|
||||
D(passwd)
|
||||
D(protocols)
|
||||
+#if !BOOTSTRAP_GLIBC
|
||||
D(rpc)
|
||||
+#endif
|
||||
D(services)
|
||||
D(shadow)
|
||||
#undef D
|
||||
diff '--exclude=*.orig' -purN /home/janneke/src/glibc-2.16.0/resolv/netdb.h glibc-2.16.0/resolv/netdb.h
|
||||
--- /home/janneke/src/glibc-2.16.0/resolv/netdb.h 2012-06-30 21:12:34.000000000 +0200
|
||||
+++ glibc-2.16.0/resolv/netdb.h 2018-09-08 08:49:30.537811219 +0200
|
||||
@@ -26,11 +26,13 @@
|
||||
|
||||
#include <netinet/in.h>
|
||||
#include <stdint.h>
|
||||
+#if 0 //!BOOTSTRAP_GLIBC
|
||||
#ifdef __USE_MISC
|
||||
/* This is necessary to make this include file properly replace the
|
||||
Sun version. */
|
||||
# include <rpc/netdb.h>
|
||||
#endif
|
||||
+#endif
|
||||
|
||||
#ifdef __USE_GNU
|
||||
# define __need_sigevent_t
|
||||
diff '--exclude=*.orig' -purN /home/janneke/src/glibc-2.16.0/Rules glibc-2.16.0/Rules
|
||||
--- /home/janneke/src/glibc-2.16.0/Rules 2012-06-30 21:12:34.000000000 +0200
|
||||
+++ glibc-2.16.0/Rules 2018-09-02 10:52:06.927362861 +0200
|
||||
@@ -24,6 +24,9 @@ ifneq (,)
|
||||
This makefile requires GNU Make.
|
||||
endif
|
||||
|
||||
+export SHELL
|
||||
+export BASH
|
||||
+
|
||||
all: # Don't let the default goal come from Makeconfig.
|
||||
|
||||
include $(firstword $(..) ../)Makeconfig
|
||||
diff '--exclude=*.orig' -purN /home/janneke/src/glibc-2.16.0/scripts/gen-as-const.awk glibc-2.16.0/scripts/gen-as-const.awk
|
||||
--- /home/janneke/src/glibc-2.16.0/scripts/gen-as-const.awk 2012-06-30 21:12:34.000000000 +0200
|
||||
+++ glibc-2.16.0/scripts/gen-as-const.awk 2018-09-01 18:08:37.266516330 +0200
|
||||
@@ -14,6 +14,12 @@ BEGIN { started = 0 }
|
||||
|
||||
NF >= 1 && !started {
|
||||
if (test) {
|
||||
+ print "\n#include <stddef.h>";
|
||||
+ print "\n#include <stdint.h>";
|
||||
+# print "\ntypedef unsigned long size_t;";
|
||||
+ print "\n#ifndef offsetof";
|
||||
+ print "\n#define offsetof(type, field) ((size_t)&((type *)0)->field)";
|
||||
+ print "\n#endif";
|
||||
print "\n#include <inttypes.h>";
|
||||
print "\n#include <stdio.h>";
|
||||
print "\n#include <bits/wordsize.h>";
|
||||
@@ -33,8 +39,15 @@ NF >= 1 && !started {
|
||||
" source, #name, U (asconst_##name), #expr, (c_t) (expr));" \
|
||||
" } else ++good;\n";
|
||||
}
|
||||
- else
|
||||
+ else {
|
||||
+ print "\n#include <stddef.h>";
|
||||
+ print "\n#include <stdint.h>";
|
||||
+# print "\ntypedef unsigned long size_t;";
|
||||
+ print "\n#ifndef offsetof";
|
||||
+ print "\n#define offsetof(type, field) ((size_t)&((type *)0)->field)";
|
||||
+ print "\n#endif";
|
||||
print "void dummy(void) {";
|
||||
+ }
|
||||
started = 1;
|
||||
}
|
||||
|
||||
diff '--exclude=*.orig' -purN /home/janneke/src/glibc-2.16.0/sunrpc/auth_none.c glibc-2.16.0/sunrpc/auth_none.c
|
||||
--- /home/janneke/src/glibc-2.16.0/sunrpc/auth_none.c 2012-06-30 21:12:34.000000000 +0200
|
||||
+++ glibc-2.16.0/sunrpc/auth_none.c 2018-09-02 22:09:21.629007932 +0200
|
||||
@@ -95,7 +95,9 @@ authnone_create (void)
|
||||
__libc_once (authnone_private_guard, authnone_create_once);
|
||||
return &authnone_private.no_client;
|
||||
}
|
||||
+#if !BOOTSTRAP_GLIBC
|
||||
libc_hidden_nolink_sunrpc (authnone_create, GLIBC_2_0)
|
||||
+#endif
|
||||
|
||||
static bool_t
|
||||
authnone_marshal (AUTH *client, XDR *xdrs)
|
||||
diff '--exclude=*.orig' -purN /home/janneke/src/glibc-2.16.0/sunrpc/authuxprot.c glibc-2.16.0/sunrpc/authuxprot.c
|
||||
--- /home/janneke/src/glibc-2.16.0/sunrpc/authuxprot.c 2012-06-30 21:12:34.000000000 +0200
|
||||
+++ glibc-2.16.0/sunrpc/authuxprot.c 2018-09-02 22:15:51.927158451 +0200
|
||||
@@ -63,4 +63,6 @@ xdr_authunix_parms (XDR * xdrs, struct a
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
+#if !BOOTSTRAP_GLIBC
|
||||
libc_hidden_nolink_sunrpc (xdr_authunix_parms, GLIBC_2_0)
|
||||
+#endif
|
||||
diff '--exclude=*.orig' -purN /home/janneke/src/glibc-2.16.0/sunrpc/bindrsvprt.c glibc-2.16.0/sunrpc/bindrsvprt.c
|
||||
--- /home/janneke/src/glibc-2.16.0/sunrpc/bindrsvprt.c 2012-06-30 21:12:34.000000000 +0200
|
||||
+++ glibc-2.16.0/sunrpc/bindrsvprt.c 2018-09-02 22:24:32.687187675 +0200
|
||||
@@ -96,4 +96,7 @@ bindresvport (int sd, struct sockaddr_in
|
||||
|
||||
return res;
|
||||
}
|
||||
+#if !BOOTSTRAP_GLIBC
|
||||
libc_hidden_def (bindresvport)
|
||||
+#endif
|
||||
+
|
||||
diff '--exclude=*.orig' -purN /home/janneke/src/glibc-2.16.0/sunrpc/clnt_raw.c glibc-2.16.0/sunrpc/clnt_raw.c
|
||||
--- /home/janneke/src/glibc-2.16.0/sunrpc/clnt_raw.c 2012-06-30 21:12:34.000000000 +0200
|
||||
+++ glibc-2.16.0/sunrpc/clnt_raw.c 2018-09-02 22:33:21.151343826 +0200
|
||||
@@ -40,6 +40,7 @@
|
||||
#include <rpc/svc.h>
|
||||
#include <rpc/xdr.h>
|
||||
#include <libintl.h>
|
||||
+#include <stddef.h>
|
||||
|
||||
#define MCALL_MSG_SIZE 24
|
||||
|
||||
@@ -129,7 +130,9 @@ clntraw_create (u_long prog, u_long vers
|
||||
client->cl_auth = authnone_create ();
|
||||
return client;
|
||||
}
|
||||
+#if !BOOTSTRAP_GLIBC
|
||||
libc_hidden_nolink_sunrpc (clntraw_create, GLIBC_2_0)
|
||||
+#endif
|
||||
|
||||
static enum clnt_stat
|
||||
clntraw_call (h, proc, xargs, argsp, xresults, resultsp, timeout)
|
||||
diff '--exclude=*.orig' -purN /home/janneke/src/glibc-2.16.0/sunrpc/clnt_simp.c glibc-2.16.0/sunrpc/clnt_simp.c
|
||||
--- /home/janneke/src/glibc-2.16.0/sunrpc/clnt_simp.c 2012-06-30 21:12:34.000000000 +0200
|
||||
+++ glibc-2.16.0/sunrpc/clnt_simp.c 2018-09-02 22:34:14.884175251 +0200
|
||||
@@ -139,7 +139,9 @@ callrpc (const char *host, u_long prognu
|
||||
crp->valid = 0;
|
||||
return (int) clnt_stat;
|
||||
}
|
||||
+#if !BOOTSTRAP_GLIBC
|
||||
libc_hidden_nolink_sunrpc (callrpc, GLIBC_2_0)
|
||||
+#endif
|
||||
|
||||
#ifdef _RPC_THREAD_SAFE_
|
||||
void
|
251
gnu/packages/patches/glibc-boot-2.2.5.patch
Normal file
251
gnu/packages/patches/glibc-boot-2.2.5.patch
Normal file
@ -0,0 +1,251 @@
|
||||
This patch enables building glibc-2.2.5 using TCC and GNU Make 4.x and Mes C Library.
|
||||
|
||||
* Makefile: Do not assemble from stdin, use file indirection.
|
||||
* Makefile: Add new target: install-lib-all.
|
||||
* Makefile: Avoid building stub DOC.
|
||||
* [_LIBC_REENTRANT]: Add missing guarding.
|
||||
* [MES_BOOTSTRAP]: Disable some GCC extensions.
|
||||
* [MES_BOOTSTRAP]: Add missing GCC div/mod defines.
|
||||
|
||||
Upstream status: Not presented upstream.
|
||||
|
||||
diff -purN -x .git -x fubar -x fubar.c -x Makefile -x config.status -x config.h -x BOOT -x BOOT-GCC -x texis -x '*.info*' ../glibc-2.2.5/config.h.in glibc-2.2.5/config.h.in
|
||||
--- ../glibc-2.2.5/config.h.in 2001-11-16 02:02:56.000000000 +0100
|
||||
+++ glibc-2.2.5/config.h.in 2018-06-17 21:30:02.313029074 +0200
|
||||
@@ -1,3 +1,10 @@
|
||||
+#if MES_BOOTSTRAP && BOOTSTRAP_GLIBC
|
||||
+#undef __umoddi3
|
||||
+#define __umoddi3(a,b) ((a)%(b))
|
||||
+#undef __udivdi3
|
||||
+#define __udivdi3(a,b) ((a)/(b))
|
||||
+#endif
|
||||
+
|
||||
#if !defined ASSEMBLER && !defined _ISOMAC && !defined __OPTIMIZE__
|
||||
# error "glibc cannot be compiled without optimization"
|
||||
#endif
|
||||
diff -purN -x .git -x fubar -x fubar.c -x Makefile -x config.status -x config.h -x BOOT -x BOOT-GCC -x texis -x '*.info*' ../glibc-2.2.5/configure glibc-2.2.5/configure
|
||||
--- ../glibc-2.2.5/configure 2002-01-08 23:16:44.000000000 +0100
|
||||
+++ glibc-2.2.5/configure 2018-06-07 20:47:26.608895319 +0200
|
||||
@@ -1530,7 +1530,7 @@ echo "configure:1530: checking version o
|
||||
ac_prog_version=`$MAKE --version 2>&1 | sed -n 's/^.*GNU Make[^0-9]*\([0-9][0-9.]*\).*$/\1/p'`
|
||||
case $ac_prog_version in
|
||||
'') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;;
|
||||
- 3.79* | 3.[89]*)
|
||||
+ 3.79* | 3.[89]* | 4.*)
|
||||
ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;;
|
||||
*) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;;
|
||||
|
||||
diff -purN -x .git -x fubar -x fubar.c -x Makefile -x config.status -x config.h -x BOOT -x BOOT-GCC -x texis -x '*.info*' ../glibc-2.2.5/Makeconfig glibc-2.2.5/Makeconfig
|
||||
--- ../glibc-2.2.5/Makeconfig 2001-09-12 20:49:45.000000000 +0200
|
||||
+++ glibc-2.2.5/Makeconfig 2018-06-20 16:33:35.472167202 +0200
|
||||
@@ -400,7 +400,7 @@ ifndef +link
|
||||
$(start-installed-name))\
|
||||
$(+preinit) $(link-extra-libs) \
|
||||
$(common-objpfx)libc% $(+postinit),$^) \
|
||||
- $(link-extra-libs) $(link-libc) $(+postctor) $(+postinit)
|
||||
+ $(link-extra-libs) $(link-libc) $(+postctor) $(+postinit) -lc -lgcc2
|
||||
endif
|
||||
# Command for statically linking programs with the C library.
|
||||
ifndef +link-static
|
||||
@@ -412,7 +412,7 @@ ifndef +link-static
|
||||
$(start-installed-name))\
|
||||
$(+preinit) $(link-extra-libs-static) \
|
||||
$(common-objpfx)libc% $(+postinit),$^) \
|
||||
- $(link-extra-libs-static) $(link-libc-static) $(+postctor) $(+postinit)
|
||||
+ $(link-extra-libs-static) $(link-libc-static) $(+postctor) $(+postinit) -lc -lgcc2
|
||||
endif
|
||||
# Command for statically linking bounded-pointer programs with the C library.
|
||||
ifndef +link-bounded
|
||||
@@ -424,7 +424,7 @@ ifndef +link-bounded
|
||||
$(start-installed-name))\
|
||||
$(+preinit) $(link-extra-libs-bounded) \
|
||||
$(common-objpfx)libc% $(+postinit),$^) \
|
||||
- $(link-extra-libs-bounded) $(link-libc-bounded) $(+postctor) $(+postinit)
|
||||
+ $(link-extra-libs-bounded) $(link-libc-bounded) $(+postctor) $(+postinit) -lc -lgcc2
|
||||
endif
|
||||
ifndef config-LDFLAGS
|
||||
ifeq (yesyes,$(build-shared)$(elf))
|
||||
diff -purN -x .git -x fubar -x fubar.c -x Makefile -x config.status -x config.h -x BOOT -x BOOT-GCC -x texis -x '*.info*' ../glibc-2.2.5/Makerules glibc-2.2.5/Makerules
|
||||
--- ../glibc-2.2.5/Makerules 2001-11-16 02:02:19.000000000 +0100
|
||||
+++ glibc-2.2.5/Makerules 2018-06-10 15:03:42.390329860 +0200
|
||||
@@ -748,6 +748,18 @@ endef
|
||||
installed-libcs := $(foreach o,$(filter-out .os,$(object-suffixes-for-libc)),\
|
||||
$(inst_libdir)/$(patsubst %,$(libtype$o),\
|
||||
$(libprefix)$(libc-name)))
|
||||
+
|
||||
+ifeq (yes,$(build-shared))
|
||||
+install-lib-all: $(inst_libdir)/libc.a \
|
||||
+ $(inst_slibdir)/libc.so$(libc.so-version) \
|
||||
+ $(inst_slibdir)/libc-$(version).so \
|
||||
+ $(inst_libdir)/libc.so \
|
||||
+ install-lib
|
||||
+else
|
||||
+install-lib-all: $(inst_libdir)/libc.a \
|
||||
+ install-lib
|
||||
+endif
|
||||
+
|
||||
install: $(installed-libcs)
|
||||
$(installed-libcs): $(inst_libdir)/lib$(libprefix)%: lib $(+force)
|
||||
$(make-target-directory)
|
||||
diff -purN -x .git -x fubar -x fubar.c -x Makefile -x config.status -x config.h -x BOOT -x BOOT-GCC -x texis -x '*.info*' ../glibc-2.2.5/misc/syslog.c glibc-2.2.5/misc/syslog.c
|
||||
--- ../glibc-2.2.5/misc/syslog.c 2001-08-31 01:13:49.000000000 +0200
|
||||
+++ glibc-2.2.5/misc/syslog.c 2018-06-09 09:01:20.008918690 +0200
|
||||
@@ -216,9 +216,11 @@ vsyslog(pri, fmt, ap)
|
||||
|
||||
/* Prepare for multiple users. We have to take care: open and
|
||||
write are cancellation points. */
|
||||
+#if _LIBC_REENTRANT
|
||||
__libc_cleanup_region_start (1, (void (*) (void *)) cancel_handler,
|
||||
&oldaction_ptr);
|
||||
__libc_lock_lock (syslog_lock);
|
||||
+#endif
|
||||
|
||||
/* Prepare for a broken connection. */
|
||||
memset (&action, 0, sizeof (action));
|
||||
@@ -268,9 +270,11 @@ vsyslog(pri, fmt, ap)
|
||||
if (sigpipe == 0)
|
||||
__sigaction (SIGPIPE, &oldaction, (struct sigaction *) NULL);
|
||||
|
||||
+#if _LIBC_REENTRANT
|
||||
/* End of critical section. */
|
||||
__libc_cleanup_region_end (0);
|
||||
__libc_lock_unlock (syslog_lock);
|
||||
+#endif
|
||||
|
||||
free (buf);
|
||||
}
|
||||
@@ -326,16 +330,20 @@ openlog_internal(const char *ident, int
|
||||
void
|
||||
openlog (const char *ident, int logstat, int logfac)
|
||||
{
|
||||
+#if _LIBC_REENTRANT
|
||||
/* Protect against multiple users. */
|
||||
__libc_cleanup_region_start (1,
|
||||
(void (*) __P ((void *))) __libc_mutex_unlock,
|
||||
&syslog_lock);
|
||||
__libc_lock_lock (syslog_lock);
|
||||
+#endif
|
||||
|
||||
openlog_internal (ident, logstat, logfac);
|
||||
|
||||
+#if _LIBC_REENTRANT
|
||||
/* Free the lock. */
|
||||
__libc_cleanup_region_end (1);
|
||||
+#endif
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -358,18 +366,22 @@ closelog_internal()
|
||||
void
|
||||
closelog ()
|
||||
{
|
||||
+#if _LIBC_REENTRANT
|
||||
/* Protect against multiple users. */
|
||||
__libc_cleanup_region_start (1,
|
||||
(void (*) __P ((void *))) __libc_mutex_unlock,
|
||||
&syslog_lock);
|
||||
__libc_lock_lock (syslog_lock);
|
||||
+#endif
|
||||
|
||||
closelog_internal ();
|
||||
LogTag = NULL;
|
||||
LogType = SOCK_DGRAM; /* this is the default */
|
||||
|
||||
+#if _LIBC_REENTRANT
|
||||
/* Free the lock. */
|
||||
__libc_cleanup_region_end (1);
|
||||
+#endif
|
||||
}
|
||||
|
||||
#ifdef _LIBC_REENTRANT
|
||||
diff -purN -x .git -x fubar -x fubar.c -x Makefile -x config.status -x config.h -x BOOT -x BOOT-GCC -x texis -x '*.info*' ../glibc-2.2.5/Rules glibc-2.2.5/Rules
|
||||
--- ../glibc-2.2.5/Rules 2001-08-30 00:44:35.000000000 +0200
|
||||
+++ glibc-2.2.5/Rules 2018-06-09 08:15:54.880683675 +0200
|
||||
@@ -218,7 +218,7 @@ endif
|
||||
fopen_max=`sed -n 's/^#define OPEN_MAX //1p' $(@:st=hT)`; \
|
||||
filename_max=`sed -n 's/^#define PATH_MAX //1p' $(@:st=hT)`; \
|
||||
iov_max=`sed -n 's/^#define UIO_MAXIOV //p' $(@:st=hT)`; \
|
||||
- fopen_max=$${fopen_max:-16}; \
|
||||
+ fopen_max=$${fu_fopen_max:-16}; \
|
||||
filename_max=$${filename_max:-1024}; \
|
||||
if [ -z $$iov_max ]; then \
|
||||
define_iov_max="# undef IOV_MAX"; \
|
||||
diff -purN -x .git -x fubar -x fubar.c -x Makefile -x config.status -x config.h -x BOOT -x BOOT-GCC -x texis -x '*.info*' ../glibc-2.2.5/stdio-common/perror.c glibc-2.2.5/stdio-common/perror.c
|
||||
--- ../glibc-2.2.5/stdio-common/perror.c 2001-09-01 07:33:01.000000000 +0200
|
||||
+++ glibc-2.2.5/stdio-common/perror.c 2018-06-09 10:42:25.909899529 +0200
|
||||
@@ -48,6 +48,9 @@ perror_internal (FILE *fp, const char *s
|
||||
}
|
||||
|
||||
|
||||
+#if MES_BOOTSTRAP
|
||||
+#define fileno_unlocked(x) 1
|
||||
+#endif
|
||||
/* Print a line on stderr consisting of the text in S, a colon, a space,
|
||||
a message describing the meaning of the contents of `errno' and a newline.
|
||||
If S is NULL or "", the colon and space are omitted. */
|
||||
diff -purN -x .git -x fubar -x fubar.c -x Makefile -x config.status -x config.h -x BOOT -x BOOT-GCC -x texis -x '*.info*' ../glibc-2.2.5/sysdeps/i386/fpu/ftestexcept.c glibc-2.2.5/sysdeps/i386/fpu/ftestexcept.c
|
||||
--- ../glibc-2.2.5/sysdeps/i386/fpu/ftestexcept.c 2001-07-06 06:55:53.000000000 +0200
|
||||
+++ glibc-2.2.5/sysdeps/i386/fpu/ftestexcept.c 2018-06-09 09:45:13.363031424 +0200
|
||||
@@ -25,8 +25,10 @@ fetestexcept (int excepts)
|
||||
{
|
||||
int temp;
|
||||
|
||||
+#if !MES_BOOTSTRAP
|
||||
/* Get current exceptions. */
|
||||
__asm__ ("fnstsw %0" : "=a" (temp));
|
||||
+#endif
|
||||
|
||||
return temp & excepts & FE_ALL_EXCEPT;
|
||||
}
|
||||
diff -purN -x .git -x fubar -x fubar.c -x Makefile -x config.status -x config.h -x BOOT -x BOOT-GCC -x texis -x '*.info*' ../glibc-2.2.5/sysdeps/unix/make-syscalls.sh glibc-2.2.5/sysdeps/unix/make-syscalls.sh
|
||||
--- ../glibc-2.2.5/sysdeps/unix/make-syscalls.sh 2001-09-13 00:19:30.000000000 +0200
|
||||
+++ glibc-2.2.5/sysdeps/unix/make-syscalls.sh 2018-06-20 15:16:01.813004453 +0200
|
||||
@@ -173,7 +173,7 @@ shared-only-routines += $file
|
||||
done
|
||||
|
||||
# And finally, pipe this all into the compiler.
|
||||
- echo ' ) | $(COMPILE.S) -x assembler-with-cpp -o $@ -'
|
||||
+ echo ' ) > stdin.c; $(COMPILE.S) -x assembler-with-cpp -o $@ stdin.c'
|
||||
|
||||
case $weak in
|
||||
*@*)
|
||||
@@ -284,7 +284,7 @@ shared-only-routines += $file
|
||||
echo "\
|
||||
echo ''; \\
|
||||
echo '#include <bp-thunks.h>'; \\
|
||||
- ) | \$(COMPILE.c) -x c -o \$@ -"
|
||||
+ ) > stdin.c; \$(COMPILE.c) -x c -o \$@ stdin.c"
|
||||
### Use this for debugging intermediate output:
|
||||
### ) >\$(@:.ob=.c)
|
||||
### \$(subst -c,-E,\$(COMPILE.c)) -o \$(@:.ob=.ib) \$(@:.ob=.c)
|
||||
diff -purN -x .git -x fubar -x fubar.c -x Makefile -x config.status -x config.h -x BOOT -x BOOT-GCC -x texis -x '*.info*' ../glibc-2.2.5/sysdeps/unix/sysv/linux/sys/timex.h glibc-2.2.5/sysdeps/unix/sysv/linux/sys/timex.h
|
||||
--- ../glibc-2.2.5/sysdeps/unix/sysv/linux/sys/timex.h 2001-07-06 06:56:21.000000000 +0200
|
||||
+++ glibc-2.2.5/sysdeps/unix/sysv/linux/sys/timex.h 2018-06-09 20:09:07.713806647 +0200
|
||||
@@ -54,10 +54,12 @@ struct timex
|
||||
long int errcnt; /* calibration errors (ro) */
|
||||
long int stbcnt; /* stability limit exceeded (ro) */
|
||||
|
||||
+#if !MES_BOOTSTRAP
|
||||
/* ??? */
|
||||
int :32; int :32; int :32; int :32;
|
||||
int :32; int :32; int :32; int :32;
|
||||
int :32; int :32; int :32; int :32;
|
||||
+#endif
|
||||
};
|
||||
|
||||
/* Mode codes (timex.mode) */
|
||||
--- ../glibc-2.2.5/manual/Makefile 2001-08-28 10:05:40.000000000 +0200
|
||||
+++ glibc-2.2.5/manual/Makefile 2018-06-09 10:13:03.093633660 +0200
|
||||
@@ -247,7 +247,11 @@
|
||||
.PHONY: stubs
|
||||
stubs: $(objpfx)stubs
|
||||
endif
|
||||
-$(objpfx)stubs ../po/manual.pot $(objpfx)stamp%:
|
||||
+po/manual.pot $(objpfx)stubs:
|
||||
+ $(make-target-directory)
|
||||
+ touch $@
|
||||
+
|
||||
+$(objpfx)stamp%:
|
||||
$(make-target-directory)
|
||||
touch $@
|
||||
|
30
gnu/packages/patches/glibc-bootstrap-system-2.16.0.patch
Normal file
30
gnu/packages/patches/glibc-bootstrap-system-2.16.0.patch
Normal file
@ -0,0 +1,30 @@
|
||||
We want to allow builds in chroots that lack /bin/sh. Thus, system(3)
|
||||
and popen(3) need to be tweaked to use the right shell. For the bootstrap
|
||||
glibc, we just use whatever `sh' can be found in $PATH. The final glibc
|
||||
instead uses the hard-coded absolute file name of `bash'.
|
||||
|
||||
--- a/sysdeps/posix/system.c
|
||||
+++ b/sysdeps/posix/system.c
|
||||
@@ -134,7 +134,7 @@ do_system (const char *line)
|
||||
INIT_LOCK ();
|
||||
|
||||
/* Exec the shell. */
|
||||
- (void) __execve (SHELL_PATH, (char *const *) new_argv, __environ);
|
||||
+ (void) __execvpe (SHELL_NAME, (char *const *) new_argv, __environ);
|
||||
_exit (127);
|
||||
}
|
||||
else if (pid < (pid_t) 0)
|
||||
|
||||
--- a/libio/iopopen.c
|
||||
+++ b/libio/iopopen.c
|
||||
@@ -145,7 +145,7 @@ _IO_new_proc_open (fp, command, mode)
|
||||
_IO_close (fd);
|
||||
}
|
||||
|
||||
- _IO_execl ("/bin/sh", "sh", "-c", command, (char *) 0);
|
||||
+ execlp ("sh", "sh", "-c", command, (char *) 0);
|
||||
_IO__exit (127);
|
||||
}
|
||||
_IO_close (child_end);
|
||||
|
||||
|
@ -1,3 +1,6 @@
|
||||
Two small patches off the current Mes `wip' branch, that enable using
|
||||
Nyacc-0.86.0; and a fix for running ./check.sh.
|
||||
|
||||
From 9e610736bf779f3295c1192e748cd19cbbe3be28 Mon Sep 17 00:00:00 2001
|
||||
From: Jan Nieuwenhuizen <janneke@gnu.org>
|
||||
Date: Wed, 5 Sep 2018 20:28:06 +0200
|
||||
@ -195,3 +198,28 @@ index 9e341cba..c2efb32c 100644
|
||||
--
|
||||
2.18.0
|
||||
|
||||
From 20deefe6ea0d62a3338a8e2a9552d2a20b0f607e Mon Sep 17 00:00:00 2001
|
||||
From: Jan Nieuwenhuizen <janneke@gnu.org>
|
||||
Date: Sun, 9 Sep 2018 07:11:50 +0200
|
||||
Subject: [PATCH] build: Oops, fix ./check.sh for bootstrap build.
|
||||
|
||||
* build-aux/config.sh (top_builddir): Set default to `.'.
|
||||
---
|
||||
build-aux/config.sh | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
diff --git a/build-aux/config.sh b/build-aux/config.sh
|
||||
index a4b9fdef..4fa84441 100644
|
||||
--- a/build-aux/config.sh
|
||||
+++ b/build-aux/config.sh
|
||||
@@ -17,6 +17,7 @@
|
||||
# along with GNU Mes. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
srcdir=${srcdir-.}
|
||||
+top_builddir=${top_builddir-.}
|
||||
if [ "$V" = 2 ]; then
|
||||
echo $0
|
||||
echo srcdest=${srcdest}
|
||||
--
|
||||
2.18.0
|
||||
|
||||
|
26
gnu/packages/patches/tcc-boot-0.9.27.patch
Normal file
26
gnu/packages/patches/tcc-boot-0.9.27.patch
Normal file
@ -0,0 +1,26 @@
|
||||
From 1431ba3a99582e4c3d2693ac37e57f361858affd Mon Sep 17 00:00:00 2001
|
||||
From: Jan Nieuwenhuizen <janneke@gnu.org>
|
||||
Date: Mon, 11 Jun 2018 18:39:44 +0200
|
||||
Subject: [PATCH] bootstrappable: Force static link.
|
||||
|
||||
---
|
||||
libtcc.c | 3 +++
|
||||
1 file changed, 3 insertions(+)
|
||||
|
||||
diff --git a/libtcc.c b/libtcc.c
|
||||
index 3448f44..02ab850 100644
|
||||
--- a/libtcc.c
|
||||
+++ b/libtcc.c
|
||||
@@ -735,6 +735,9 @@ LIBTCCAPI TCCState *tcc_new(void)
|
||||
tcc_state = s;
|
||||
++nb_states;
|
||||
|
||||
+#if BOOTSTRAP
|
||||
+ s->static_link = 1;
|
||||
+#endif
|
||||
s->alacarte_link = 1;
|
||||
s->nocommon = 1;
|
||||
s->warn_implicit_function_declaration = 1;
|
||||
--
|
||||
2.16.2
|
||||
|
Loading…
Reference in New Issue
Block a user