From f5337eced96590602a2b3d1e206cd4b19c5e2d26 Mon Sep 17 00:00:00 2001 From: Mike Frysinger Date: Tue, 23 Aug 2011 18:37:57 +0000 Subject: [PATCH] Add support for live git builds. Package-Manager: portage-2.2.0_alpha51/cvs/Linux x86_64 --- sys-libs/glibc/ChangeLog | 8 +- sys-libs/glibc/Manifest | 13 +- sys-libs/glibc/files/eblits/src_unpack.eblit | 13 +- sys-libs/glibc/glibc-2.14.ebuild | 28 +- sys-libs/glibc/glibc-9999.ebuild | 261 +++++++++++++++++++ 5 files changed, 304 insertions(+), 19 deletions(-) create mode 100644 sys-libs/glibc/glibc-9999.ebuild diff --git a/sys-libs/glibc/ChangeLog b/sys-libs/glibc/ChangeLog index 47ed236b33eb..e04e98daf50b 100644 --- a/sys-libs/glibc/ChangeLog +++ b/sys-libs/glibc/ChangeLog @@ -1,6 +1,12 @@ # ChangeLog for sys-libs/glibc # Copyright 1999-2011 Gentoo Foundation; Distributed under the GPL v2 -# $Header: /var/cvsroot/gentoo-x86/sys-libs/glibc/ChangeLog,v 1.786 2011/08/23 15:52:19 vapier Exp $ +# $Header: /var/cvsroot/gentoo-x86/sys-libs/glibc/ChangeLog,v 1.787 2011/08/23 18:37:57 vapier Exp $ + +*glibc-9999 (23 Aug 2011) + + 23 Aug 2011; Mike Frysinger glibc-2.14.ebuild, + +glibc-9999.ebuild, files/eblits/src_unpack.eblit: + Add support for live git builds. 23 Aug 2011; Mike Frysinger glibc-2.14.ebuild: Add ports tarball from upstream glibc-2.14 tag. diff --git a/sys-libs/glibc/Manifest b/sys-libs/glibc/Manifest index 7c174c25c41f..16586b6e7c29 100644 --- a/sys-libs/glibc/Manifest +++ b/sys-libs/glibc/Manifest @@ -22,7 +22,7 @@ AUX eblits/pkg_setup.eblit 3318 RMD160 4a38e5f9a385d9134b54ab27a654e9a83eeb9258 AUX eblits/src_compile.eblit 5844 RMD160 29faae79a18f157e1412d527380c7b70cf7d2442 SHA1 7be66723d4b8af71dfda1bcd0308791acbdbf12e SHA256 29673cef6619ca56bc9ce8eaf8c1a995857626f6bcd72251c5a339ad0574c6fd AUX eblits/src_install.eblit 7754 RMD160 d13b0283a096d681b3a4f1f4f0499af45ca1c97a SHA1 7b5b4b2da323cdc4ec6c39f2a4b229b7118568b9 SHA256 ae407a96cdff1c053846370a791e4796fb45bc04ae5b7ded06bae0b4861ceff7 AUX eblits/src_test.eblit 1172 RMD160 a70e31e655cd3e306af6a498002de85b72258566 SHA1 4aec15e6ab67279258fd23400701fd38c106a38b SHA256 e5a390761b7ec613460b8da26df3ffe2a137217261dd9f87f2b78c3fa2a12727 -AUX eblits/src_unpack.eblit 5631 RMD160 ff841c2b06e2896dd178d5795da0cd9da2f1aa01 SHA1 b2cbf59f27e55aa0d6ae5c0b3d1cc766df6866c5 SHA256 98c5e9c71f0c3529260cf538cf5935e5b58955cd0b9a721fe90abb661921a5b4 +AUX eblits/src_unpack.eblit 5848 RMD160 8012ba4a31e689080ec2d70156c503b0c36e3119 SHA1 5aab07c312c3ab0624ead0e0a7f7d5cecfe1bf00 SHA256 19f73007557718580860a6e1b7613b4a69a4a639f17a9d3cb9ca2aba9576ccca AUX nscd 1621 RMD160 f6d20c4c3814f70d7741f3fa2e0b53ba32c37960 SHA1 5751fe798024c2021b7b3ed3e798618e2a38244a SHA256 6165db3a2fcb251d4f3655c0461e018ce9c92a37f7f22a8fd2b75178b5435bc8 AUX nsswitch.conf 503 RMD160 f375f92f6b41029c93382c39cef896261b140cfc SHA1 42f7f5cc3de75c69bf60d806ac8490106ea63326 SHA256 6c38b8642d5da884327ad678d0351d57be3621562253bd9711394bad87e45e2d DIST glibc-2.10.1-patches-7.tar.bz2 113612 RMD160 333b6e15132dd72f09369aea52e88156aecfda5a SHA1 b8b42bd16f99b43d20a08790b9bffac4dfd57060 SHA256 6c94493e08c13072c94c967f55b659e6c950ec470c9677c43cfab10e24a88370 @@ -53,14 +53,15 @@ EBUILD glibc-2.12.1-r3.ebuild 8716 RMD160 4974eaa02a6712aa918dbc4f7d266bac5d8c99 EBUILD glibc-2.12.2.ebuild 8721 RMD160 6ea5b296311cc9da0fb912bf21a166ac428a2273 SHA1 8d831dcf6b1475bd3fbd18d6673d4aebea59bdb6 SHA256 293536a87b7929b3b447e4bd3130ba2afcf735bb68a5ac489c823ef5bab35b6d EBUILD glibc-2.13-r2.ebuild 8618 RMD160 f97a8e83bf6cd2d2e7a0e3495784846d3eea511b SHA1 7e8efe0fb0574d813f8672f0306b4f270df22d40 SHA256 22b04f258efc03abd1e5dc0aa2e80e2bb0fe310201d9dbf7855275db71e6fc0e EBUILD glibc-2.13-r4.ebuild 8621 RMD160 abd708804687e041ca7b69ace94a0760d9d64e7f SHA1 1b4f91c3c4a199f9753945507960a3f320cef29b SHA256 e2d5b6563261bb719f30854e3fc34b698ba1e4445a73bb97601d2b66c670b5c7 -EBUILD glibc-2.14.ebuild 8589 RMD160 1f9bca6ac1fd6265ebd2737b5ea2fb68f32e2692 SHA1 a0c85d2e011b290838b8d8be8165afa91c69d523 SHA256 205bb05934bb221cec6dc9dc03cc79bcef5ce6a10dd73e76c34f6f91ceccd367 +EBUILD glibc-2.14.ebuild 8816 RMD160 3636642398b7a7977aa7a0afe0254f5ca06868db SHA1 caa87c2b7e36ed077b8f6777b07a584dc2a2a387 SHA256 3914ac7655cf05e845a2b8c1e2fb77e33635cf294ca276cf16b0145c27278ba3 EBUILD glibc-2.9_p20081201-r3.ebuild 7776 RMD160 d39bb361d39b3c0cea8a2fff12a78aa5ade97ef0 SHA1 176d5ea4e8dc116f2de3b589551a8ad6b56c98f7 SHA256 3dfd5c6bf0983d723cebc491f1940e446210e48b485c6b9a8fa9a4b929e3c29e -MISC ChangeLog 140216 RMD160 9cb4f9106ee5d7fe9d0b5b89806206354a989a07 SHA1 0f247997469e473d43b40d03d1730e269718ac71 SHA256 14613b4f9c1aa2b9a51e0c888c42363ebac991b0d18729930ebd3085221d0e05 +EBUILD glibc-9999.ebuild 8816 RMD160 0f99539092bd377dae374b6ca1804b120e550c4e SHA1 eec907a26e13dc33e1daae473b4a7460742f20f6 SHA256 d8c790f04070991e40c43f7bfa531cf6fd03759885fb0f60fed6071f7b53555f +MISC ChangeLog 140401 RMD160 168e51ebfa7237da8986664f0b098b9390f1d7a1 SHA1 ad004a9995c6b1e28fd1efd8b4147344661c9776 SHA256 f9ad00104762220ac5e5197c97c05b07ee270db17dc7f5f3fe83dc3fbe342981 MISC metadata.xml 539 RMD160 cf4d236b54a77b3cea382d53e4e61721bd14169b SHA1 b54ad589378da193ddc89676f8468c6d1b79521f SHA256 d7cb6dd119c81b5bf12c360af3705ca31a56ffa8bec999b44faa63c183719c31 -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.17 (GNU/Linux) -iF4EAREIAAYFAk5TzLoACgkQaC/OocHi7JbI7AEAn0+RAyWZF7/vR3E4i8+/RNW7 -23fXmX3y9b5dOR+JDKUA/i9OjZfTaYc01gEjOay3gczb3etFdu/MgS9J/cMkwvyM -=FR18 +iF4EAREIAAYFAk5T84wACgkQaC/OocHi7JZKPAEAkfJiD+XixvxK2cre53okT27E +5jzBdWee1uC1Q6mqQDsA/AkQGpdfVD/lp6pvgqxAm86BzZ6KH2N9ceusJaoqOB8L +=2liC -----END PGP SIGNATURE----- diff --git a/sys-libs/glibc/files/eblits/src_unpack.eblit b/sys-libs/glibc/files/eblits/src_unpack.eblit index a309f7e4ca5d..c22c25ca7fa3 100644 --- a/sys-libs/glibc/files/eblits/src_unpack.eblit +++ b/sys-libs/glibc/files/eblits/src_unpack.eblit @@ -1,6 +1,6 @@ # Copyright 1999-2011 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 -# $Header: /var/cvsroot/gentoo-x86/sys-libs/glibc/files/eblits/src_unpack.eblit,v 1.12 2011/03/11 02:40:28 vapier Exp $ +# $Header: /var/cvsroot/gentoo-x86/sys-libs/glibc/files/eblits/src_unpack.eblit,v 1.13 2011/08/23 18:37:57 vapier Exp $ int_to_KV() { local version=$1 major minor micro @@ -77,7 +77,16 @@ toolchain-glibc_src_unpack() { # Check NPTL support _before_ we unpack things to save some time want_nptl && check_nptl_support - unpack_pkg + if [[ -n ${EGIT_REPO_URIS} ]] ; then + local i d + for ((i=0; i<${#EGIT_REPO_URIS[@]}; ++i)) ; do + EGIT_REPO_URI=${EGIT_REPO_URIS[$i]} + EGIT_SOURCEDIR=${EGIT_SOURCEDIRS[$i]} + git-2_src_unpack + done + else + unpack_pkg + fi cd "${S}" touch locale/C-translit.h #185476 #218003 diff --git a/sys-libs/glibc/glibc-2.14.ebuild b/sys-libs/glibc/glibc-2.14.ebuild index e521b2dd163e..b6792ca51d1b 100644 --- a/sys-libs/glibc/glibc-2.14.ebuild +++ b/sys-libs/glibc/glibc-2.14.ebuild @@ -1,6 +1,6 @@ # Copyright 1999-2011 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 -# $Header: /var/cvsroot/gentoo-x86/sys-libs/glibc/glibc-2.14.ebuild,v 1.7 2011/08/23 15:52:19 vapier Exp $ +# $Header: /var/cvsroot/gentoo-x86/sys-libs/glibc/glibc-2.14.ebuild,v 1.8 2011/08/23 18:37:57 vapier Exp $ inherit eutils versionator libtool toolchain-funcs flag-o-matic gnuconfig multilib @@ -13,15 +13,23 @@ RESTRICT="strip" # strip ourself #46186 EMULTILIB_PKG="true" # Configuration variables -if [[ ${PV} == *_p* ]] ; then -RELEASE_VER=${PV%_p*} -BRANCH_UPDATE="" -SNAP_VER=${PV#*_p} -else -RELEASE_VER=${PV} +RELEASE_VER="" BRANCH_UPDATE="" SNAP_VER="" -fi +case ${PV} in +9999*) + EGIT_REPO_URIS=( "git://sourceware.org/git/glibc.git" "git://sourceware.org/git/glibc-ports.git" ) + EGIT_SOURCEDIRS=( "${S}" "${S}/ports" ) + inherit git-2 + ;; +*_p*) + RELEASE_VER=${PV%_p*} + SNAP_VER=${PV#*_p} + ;; +*) + RELEASE_VER=${PV} + ;; +esac MANPAGE_VER="" # pregenerated manpages INFOPAGE_VER="" # pregenerated infopages LIBIDN_VER="" # it's integrated into the main tarball now @@ -32,7 +40,7 @@ NPTL_KERN_VER=${NPTL_KERN_VER:-"2.6.9"} # min kernel version nptl require #LT_KERN_VER=${LT_KERN_VER:-"2.4.1"} # min kernel version linuxthreads requires IUSE="debug gd glibc-omitfp hardened multilib nls selinux profile vanilla crosscompile_opts_headers-only ${LT_VER:+glibc-compat20 nptl nptlonly}" -S=${WORKDIR}/glibc-${RELEASE_VER}${SNAP_VER:+-${SNAP_VER}} +[[ -n ${RELEASE_VER} ]] && S=${WORKDIR}/glibc-${RELEASE_VER}${SNAP_VER:+-${SNAP_VER}} # Here's how the cross-compile logic breaks down ... # CTARGET - machine that will target the binaries @@ -123,7 +131,7 @@ SRC_URI=$( TARNAME="${PN}-${RELEASE_VER}" [[ -n ${PORTS_VER} ]] && PORTS_VER=${SNAP_VER} upstream_uris ${TARNAME}-${SNAP_VER}.tar.bz2 - else + elif [[ -z ${EGIT_REPO_URIS} ]] ; then upstream_uris ${TARNAME}-${RELEASE_VER}.tar.bz2 fi [[ -n ${LIBIDN_VER} ]] && upstream_uris glibc-libidn-${LIBIDN_VER}.tar.bz2 diff --git a/sys-libs/glibc/glibc-9999.ebuild b/sys-libs/glibc/glibc-9999.ebuild new file mode 100644 index 000000000000..7f491fc4201c --- /dev/null +++ b/sys-libs/glibc/glibc-9999.ebuild @@ -0,0 +1,261 @@ +# Copyright 1999-2011 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: /var/cvsroot/gentoo-x86/sys-libs/glibc/glibc-9999.ebuild,v 1.1 2011/08/23 18:37:57 vapier Exp $ + +inherit eutils versionator libtool toolchain-funcs flag-o-matic gnuconfig multilib + +DESCRIPTION="GNU libc6 (also called glibc2) C library" +HOMEPAGE="http://www.gnu.org/software/libc/libc.html" + +LICENSE="LGPL-2" +#KEYWORDS="~amd64 ~ia64 ~ppc ~ppc64 ~s390 ~sh ~sparc ~x86" +RESTRICT="strip" # strip ourself #46186 +EMULTILIB_PKG="true" + +# Configuration variables +RELEASE_VER="" +BRANCH_UPDATE="" +SNAP_VER="" +case ${PV} in +9999*) + EGIT_REPO_URIS=( "git://sourceware.org/git/glibc.git" "git://sourceware.org/git/glibc-ports.git" ) + EGIT_SOURCEDIRS=( "${S}" "${S}/ports" ) + inherit git-2 + ;; +*_p*) + RELEASE_VER=${PV%_p*} + SNAP_VER=${PV#*_p} + ;; +*) + RELEASE_VER=${PV} + ;; +esac +MANPAGE_VER="" # pregenerated manpages +INFOPAGE_VER="" # pregenerated infopages +LIBIDN_VER="" # it's integrated into the main tarball now +PATCH_VER="" # Gentoo patchset +PORTS_VER="" # version of glibc ports addon +LT_VER="" # version of linuxthreads addon +NPTL_KERN_VER=${NPTL_KERN_VER:-"2.6.9"} # min kernel version nptl requires +#LT_KERN_VER=${LT_KERN_VER:-"2.4.1"} # min kernel version linuxthreads requires + +IUSE="debug gd glibc-omitfp hardened multilib nls selinux profile vanilla crosscompile_opts_headers-only ${LT_VER:+glibc-compat20 nptl nptlonly}" +[[ -n ${RELEASE_VER} ]] && S=${WORKDIR}/glibc-${RELEASE_VER}${SNAP_VER:+-${SNAP_VER}} + +# Here's how the cross-compile logic breaks down ... +# CTARGET - machine that will target the binaries +# CHOST - machine that will host the binaries +# CBUILD - machine that will build the binaries +# If CTARGET != CHOST, it means you want a libc for cross-compiling. +# If CHOST != CBUILD, it means you want to cross-compile the libc. +# CBUILD = CHOST = CTARGET - native build/install +# CBUILD != (CHOST = CTARGET) - cross-compile a native build +# (CBUILD = CHOST) != CTARGET - libc for cross-compiler +# CBUILD != CHOST != CTARGET - cross-compile a libc for a cross-compiler +# For install paths: +# CHOST = CTARGET - install into / +# CHOST != CTARGET - install into /usr/CTARGET/ + +export CBUILD=${CBUILD:-${CHOST}} +export CTARGET=${CTARGET:-${CHOST}} +if [[ ${CTARGET} == ${CHOST} ]] ; then + if [[ ${CATEGORY/cross-} != ${CATEGORY} ]] ; then + export CTARGET=${CATEGORY/cross-} + fi +fi + +[[ ${CTARGET} == hppa* ]] && NPTL_KERN_VER=${NPTL_KERN_VER/2.6.9/2.6.20} + +is_crosscompile() { + [[ ${CHOST} != ${CTARGET} ]] +} +alt_libdir() { + if is_crosscompile ; then + echo /usr/${CTARGET}/$(get_libdir) + else + echo /$(get_libdir) + fi +} + +if is_crosscompile ; then + SLOT="${CTARGET}-2.2" +else + # Why SLOT 2.2 you ask yourself while sippin your tea ? + # Everyone knows 2.2 > 0, duh. + SLOT="2.2" +fi + +# General: We need a new-enough binutils for as-needed +# arch: we need to make sure our binutils/gcc supports TLS +DEPEND=">=sys-devel/gcc-3.4.4 + arm? ( >=sys-devel/binutils-2.16.90 >=sys-devel/gcc-4.1.0 ) + x86? ( >=sys-devel/gcc-4.3 ) + amd64? ( >=sys-devel/binutils-2.19 >=sys-devel/gcc-4.3 ) + ppc? ( >=sys-devel/gcc-4.1.0 ) + ppc64? ( >=sys-devel/gcc-4.1.0 ) + >=sys-devel/binutils-2.15.94 + ${LT_VER:+nptl? (} >=sys-kernel/linux-headers-${NPTL_KERN_VER} ${LT_VER:+)} + >=sys-devel/gcc-config-1.3.12 + >=app-misc/pax-utils-0.1.10 + virtual/os-headers + nls? ( sys-devel/gettext ) + >=sys-apps/sandbox-1.2.18.1-r2 + ! [version] +eblit-include() { + local skipable=false + [[ $1 == "--skip" ]] && skipable=true && shift + [[ $1 == pkg_* ]] && skipable=true + + local e v func=$1 ver=$2 + [[ -z ${func} ]] && die "Usage: eblit-include [version]" + for v in ${ver:+-}${ver} -${PVR} -${PV} "" ; do + e="${FILESDIR}/eblits/${func}${v}.eblit" + if [[ -e ${e} ]] ; then + source "${e}" + return 0 + fi + done + ${skipable} && return 0 + die "Could not locate requested eblit '${func}' in ${FILESDIR}/eblits/" +} + +# eblit-run-maybe +# run the specified function if it is defined +eblit-run-maybe() { + [[ $(type -t "$@") == "function" ]] && "$@" +} + +# eblit-run [version] +# aka: src_unpack() { eblit-run src_unpack ; } +eblit-run() { + eblit-include --skip common "${*:2}" + eblit-include "$@" + eblit-run-maybe eblit-$1-pre + eblit-${PN}-$1 + eblit-run-maybe eblit-$1-post +} + +src_unpack() { eblit-run src_unpack ; } +src_compile() { eblit-run src_compile ; } +src_test() { eblit-run src_test ; } +src_install() { eblit-run src_install ; } + +# FILESDIR might not be available during binpkg install +for x in setup {pre,post}inst ; do + e="${FILESDIR}/eblits/pkg_${x}.eblit" + if [[ -e ${e} ]] ; then + . "${e}" + eval "pkg_${x}() { eblit-run pkg_${x} ; }" + fi +done + +pkg_setup() { + eblit-run pkg_setup + + # Static binary sanity check #332927 + if [[ ${ROOT} == "/" ]] && \ + has_version "<${CATEGORY}/${P}" && \ + built_with_use sys-apps/coreutils static + then + eerror "Please rebuild coreutils with USE=-static, then install" + eerror "glibc, then you may rebuild coreutils with USE=static." + die "Avoiding system meltdown #332927" + fi +} + +eblit-src_unpack-post() { + if use hardened ; then + cd "${S}" + einfo "Patching to get working PIE binaries on PIE (hardened) platforms" + gcc-specs-pie && epatch "${FILESDIR}"/2.12/glibc-2.12-hardened-pie.patch + epatch "${FILESDIR}"/2.10/glibc-2.10-hardened-configure-picdefault.patch + epatch "${FILESDIR}"/2.10/glibc-2.10-hardened-inittls-nosysenter.patch + + einfo "Installing Hardened Gentoo SSP and FORTIFY_SOURCE handler" + cp -f "${FILESDIR}"/2.6/glibc-2.6-gentoo-stack_chk_fail.c \ + debug/stack_chk_fail.c || die + cp -f "${FILESDIR}"/2.10/glibc-2.10-gentoo-chk_fail.c \ + debug/chk_fail.c || die + + if use debug ; then + # When using Hardened Gentoo stack handler, have smashes dump core for + # analysis - debug only, as core could be an information leak + # (paranoia). + sed -i \ + -e '/^CFLAGS-backtrace.c/ iCFLAGS-stack_chk_fail.c = -DSSP_SMASH_DUMPS_CORE' \ + debug/Makefile \ + || die "Failed to modify debug/Makefile for debug stack handler" + sed -i \ + -e '/^CFLAGS-backtrace.c/ iCFLAGS-chk_fail.c = -DSSP_SMASH_DUMPS_CORE' \ + debug/Makefile \ + || die "Failed to modify debug/Makefile for debug fortify handler" + fi + + # Build nscd with ssp-all + sed -i \ + -e 's:-fstack-protector$:-fstack-protector-all:' \ + nscd/Makefile \ + || die "Failed to ensure nscd builds with ssp-all" + fi +} + +maint_pkg_create() { + local base="/usr/local/src/gnu/glibc/glibc-${PV:0:1}_${PV:2:1}" + cd ${base} + local stamp=$(date +%Y%m%d) + local d + for d in libc ports ; do + #(cd ${d} && cvs up) + case ${d} in + libc) tarball="${P}";; + ports) tarball="${PN}-ports-${PV}";; + esac + rm -f ${tarball}* + ln -sf ${d} ${tarball} + tar hcf - ${tarball} --exclude-vcs | lzma > "${T}"/${tarball}.tar.lzma + du -b "${T}"/${tarball}.tar.lzma + done +} -- 2.26.2