commit: 84f34557e19b9cce392e412b6957628083c0f241 Author: Benda Xu <heroxbd <AT> gentoo <DOT> org> AuthorDate: Sat May 28 10:12:07 2016 +0000 Commit: Benda XU <heroxbd <AT> gentoo <DOT> org> CommitDate: Fri Jun 10 01:47:29 2016 +0000 URL: https://gitweb.gentoo.org/repo/proj/prefix.git/commit/?id=84f34557
scripts/bootstrap-prefix.sh: stage3 ld should link to stage2 zlib. zlib should not get rpath encoded scripts/bootstrap-prefix.sh | 77 ++++++++++++++++++++++++++++++++------------- 1 file changed, 55 insertions(+), 22 deletions(-) diff --git a/scripts/bootstrap-prefix.sh b/scripts/bootstrap-prefix.sh index 0d209b2..108723c 100755 --- a/scripts/bootstrap-prefix.sh +++ b/scripts/bootstrap-prefix.sh @@ -1353,38 +1353,71 @@ bootstrap_stage3() { fi fi - configure_toolchain || return 1 - export CONFIG_SHELL="${ROOT}"/tmp/bin/bash - export CPPFLAGS="-I${ROOT}/usr/include" - export LDFLAGS="-L${ROOT}/usr/$(get_libdir)" - unset CC CXX - emerge_pkgs() { EPREFIX="${ROOT}" \ do_emerge_pkgs "$@" } - # GCC sometimes decides that it needs to run makeinfo to update some - # info pages from .texi files. Obviously we don't care at this - # stage and rather have it continue instead of abort the build - export MAKEINFO="echo makeinfo GNU texinfo 4.13" - - # Build a native compiler. + configure_toolchain || return 1 + export CONFIG_SHELL="${ROOT}"/tmp/bin/bash + + # binutils cannot link against zlib in EPREFIX because + # later ld's host DL cannot load refreshed zlib with + # new glibc symbols. It cannot link against host zlib + # either because it might be too old. Therefore it + # can only be linked against stage2 zlib. + configure_cflags pkgs=( - $([[ ${CHOST} == *-aix* ]] && echo dev-libs/libiconv ) # bash dependency - sys-libs/ncurses - sys-libs/readline - app-shells/bash - sys-apps/sed - app-arch/xz-utils + sys-apps/baselayout sys-apps/gentoo-functions - sys-apps/baselayout-prefix - sys-devel/m4 - sys-devel/flex sys-devel/binutils-config - sys-libs/zlib ${linker} ) + is-rap && emerge_pkgs --nodeps "${pkgs[@]}" || return 1 + + export CPPFLAGS="-I${ROOT}/usr/include" + export LDFLAGS="-L${ROOT}/usr/$(get_libdir)" + unset CC CXX + + # GCC sometimes decides that it needs to run makeinfo to update some + # info pages from .texi files. Obviously we don't care at this + # stage and rather have it continue instead of abort the build + [[ -x "${ROOT}"/usr/bin/makeinfo ]] || cat > "${ROOT}"/usr/bin/makeinfo <<EOF +#!${ROOT}/bin/bash +echo "makeinfo GNU texinfo 4.13" +for a in \$@; do +case \$a in +--*) f=\$(echo "\$a" | sed -r 's,--.*=(.*),\1,') ;; +-*) ;; +*) f=\$a ;; +esac +[[ -e \$f ]] || touch \$f +done +EOF + chmod +x "${ROOT}"/usr/bin/makeinfo + export INSTALL_INFO="${ROOT}"/usr/bin/makeinfo + + if is-rap ; then + # zlib is needed by cc1 of gcc and has to be installed + # before glibc + pkgs=( sys-libs/zlib ) + else + pkgs=( + $([[ ${CHOST} == *-aix* ]] && echo dev-libs/libiconv ) # bash dependency + sys-libs/ncurses + sys-libs/readline + app-shells/bash + sys-apps/sed + app-arch/xz-utils + sys-apps/gentoo-functions + sys-apps/baselayout-prefix + sys-devel/m4 + sys-devel/flex + sys-devel/binutils-config + sys-libs/zlib + ${linker} + ) + fi emerge_pkgs --nodeps "${pkgs[@]}" || return 1 if is-rap ; then