--- uclibc-0.9.28.3-r2.ebuild 2008-02-19 14:06:30.000000000 -0500 +++ uclibc-0.9.29.ebuild 2008-02-19 15:24:20.000000000 -0500 @@ -1,6 +1,6 @@ # Copyright 1999-2008 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 -# $Header: /var/cvsroot/gentoo-x86/sys-libs/uclibc/uclibc-0.9.28.3-r2.ebuild,v 1.2 2008/01/08 07:32:43 vapier Exp $ +# $Header: /var/cvsroot/gentoo-x86/sys-libs/uclibc/uclibc-0.9.29.ebuild,v 1.2 2008/01/08 07:32:43 vapier Exp $ #ESVN_REPO_URI="svn://uclibc.org/trunk/uClibc" #inherit subversion @@ -21,7 +21,7 @@ MY_P=uClibc-${PV} SVN_VER="" -PATCH_VER="1.2" +#PATCH_VER="1.2" DESCRIPTION="C library for developing embedded Linux systems" HOMEPAGE="http://www.uclibc.org/" SRC_URI="mirror://kernel/linux/libs/uclibc/${MY_P}.tar.bz2 @@ -56,9 +56,9 @@ if [[ ${CBUILD} == ${CHOST} && ${CTARGET} == ${CHOST} ]] \ || [[ -n ${UCLIBC_AND_GLIBC} ]] then - echo /usr + echo /usr/include else - echo /usr/${CTARGET}/usr + echo /usr/${CTARGET}/usr/include fi } just_headers() { @@ -69,7 +69,7 @@ # XXX: this wont work for a toolchain which is bi-endian, but we # dont have any such thing at the moment, so not a big deal touch "${T}"/endian.s - $(tc-getAS ${CTARGET}) "${T}"/endian.s -o "${T}"/endian.o + $(tc-getAS) "${T}"/endian.s -o "${T}"/endian.o case $(file "${T}"/endian.o) in *" MSB "*) echo "big";; *" LSB "*) echo "little";; @@ -102,13 +102,13 @@ CPU_ALPHA="" CPU_AMD64="" -CPU_ARM="GENERIC_ARM ARM{610,710,720T,920T,922T,926T,_{SA110,SA1100,XSCALE}}" +CPU_ARM="GENERIC_ARM ARM{610,710,7TDMI,720T,920T,922T,926T,10T,1136JF_S,1176JZ{_,F_}S,_{SA110,SA1100,XSCALE,IWMMXT}}" CPU_IA64="" CPU_M68K="" -CPU_MIPS="MIPS_ISA_{1,2,3,4,MIPS{32,64}}" +CPU_MIPS="MIPS_ISA_{1,2,3,4,MIPS{32,64}} MIPS_{N64,O32,N32}_ABI" CPU_PPC="" CPU_SH="SH{2,3,4,5}" -CPU_SPARC="" +CPU_SPARC="SPARC_V{7,8,9,9B}" CPU_X86="GENERIC_386 {3,4,5,6}86 586MMX PENTIUM{II,III,4} K{6,7} ELAN CRUSOE WINCHIP{C6,2} CYRIXIII NEHEMIAH" IUSE_UCLIBC_CPU="${CPU_ARM} ${CPU_MIPS} ${CPU_PPC} ${CPU_SH} ${CPU_SPARC} ${CPU_X86}" @@ -142,6 +142,11 @@ fi } +set_opt() { + sed -i -e "/^\# $1 is not set/d" -e "/^$1=.*/d" .config + echo "$1=$2" >> .config +} + src_unpack() { [[ -n ${ESVN_REPO_URI} ]] \ && subversion_src_unpack \ @@ -175,6 +180,9 @@ epatch "${WORKDIR}"/patch/math fi + epatch "${FILESDIR}/${P}-inet_network.patch" + epatch "${FILESDIR}/${P}-net-tools_compile.patch" + ########## CPU SELECTION ########## local target config_target @@ -191,49 +199,47 @@ x86) target="i386"; config_target="GENERIC_386";; *) die "$(tc-arch) lists no defaults :/";; esac - sed -i -e "s:default TARGET_i386:default TARGET_${target}:" \ - extra/Configs/Config.in sed -i -e "s:default CONFIG_${config_target}:default CONFIG_${UCLIBC_CPU:-${config_target}}:" \ extra/Configs/Config.${target} + sed -i -e "s:^HOSTCC.*=.*:HOSTCC=$(tc-getBUILD_CC):" Rules.mak ########## CONFIG SETUP ########## - make defconfig >/dev/null || die "could not config" + make ARCH=${target} defconfig >/dev/null || die "could not config" for def in DO{DEBUG{,_PT},ASSERTS} SUPPORT_LD_DEBUG{,_EARLY} ; do sed -i -e "s:${def}=y:# ${def} is not set:" .config done if use debug ; then - #echo "SUPPORT_LD_DEBUG_EARLY=y" >> .config - echo "SUPPORT_LD_DEBUG=y" >> .config - echo "DODEBUG=y" >> .config - #echo "DODEBUG_PT=y" >> .config + set_opt SUPPORT_LD_DEBUG y + set_opt DODEBUG y fi sed -i -e '/ARCH_.*_ENDIAN/d' .config - echo "ARCH_$(uclibc_endian | tr [a-z] [A-Z])_ENDIAN=y" >> .config + set_opt "ARCH_WANTS_$(uclibc_endian | tr [a-z] [A-Z])_ENDIAN" y if [[ $(tc-is-softfloat) != "no" ]] ; then - sed -i -e '/^HAS_FPU=y$/d' .config - echo 'HAS_FPU=n' >> .config + set_opt UCLIBC_HAS_FPU n fi - local moredefs="DL_FINI_CRT_COMPAT" - # We need todo this for a few months. .28 is a major upgrade. + local moredefs="COMPAT_ATEXIT" + local compat_sym=atexit + + # We need todo this for a few months. .29 is a major upgrade. # Don't do it from cross-compiling case though if ! use uclibc-compat ; then if [[ -z ${UCLIBC_AND_GLIBC} ]] && [[ -z ${UCLIBC_SCANNED_COMPAT} ]] && \ ! just_headers && [[ ${CHOST} == ${CTARGET} ]] ; then local fnames="" - einfo "Doing a scanelf in paths for bins containing the __uClibc_start_main symbol" - fnames=$(scanelf -pyqs__uClibc_start_main -F%F#s) + einfo "Doing a scanelf in paths for bins containing the ${compat_sym} symbol" + fnames=$(scanelf -pyqs${compat_sym} -F%F#s) if [[ -z ${fnames} ]] ; then einfo "This system is clean." einfo "To prevent the scanning of files again in the future you can export UCLIBC_SCANNED_COMPAT=1" moredefs="" else ewarn "You need to remerge the packages that contain the following files before you can remerge ${P} without USE=uclibc-compat enabled." - ewarn "qfile ${fnames}" + ewarn "qfile -Cq $(echo ${fnames}) | sort | uniq" echo ewarn "Leaving on ${moredefs}" fi @@ -241,28 +247,37 @@ moredefs="" fi fi - for def in ${moredefs} MALLOC_GLIBC_COMPAT DO_C99_MATH UCLIBC_HAS_{RPC,CTYPE_CHECKED,WCHAR,HEXADECIMAL_FLOATS,GLIBC_CUSTOM_PRINTF,FOPEN_EXCLUSIVE_MODE,GLIBC_CUSTOM_STREAMS,PRINTF_M_SPEC,FTW} ; do - sed -i -e "s:# ${def} is not set:${def}=y:" .config + if [[ "x${UCLIBC_CONFIGURATION}" != "x" ]] ; then + read -r -a UCLIB_CONF <<< "${UCLIBC_CONFIGURATION}" + for conf in ${UCLIB_CONF[@]} ; do + set_opt ${conf%%=*} ${conf#*=} + done + fi + for def in ${moredefs} MALLOC_GLIBC_COMPAT DO_C99_MATH UCLIBC_HAS_{RPC,FULL_RPC,CTYPE_CHECKED,WCHAR,HEXADECIMAL_FLOATS,GLIBC_CUSTOM_PRINTF,FOPEN_EXCLUSIVE_MODE,GLIBC_CUSTOM_STREAMS,PRINTF_M_SPEC,FTW} ; do + set_opt "${def}" y done - echo "UCLIBC_HAS_FULL_RPC=y" >> .config - echo "PTHREADS_DEBUG_SUPPORT=y" >> .config - echo "UCLIBC_HAS_TZ_FILE_READ_MANY=n" >> .config + set_opt UCLIBC_HAS_CTYPE_UNSAFE n + set_opt UCLIBC_HAS_REENTRANT_RPC n + set_opt PTHREADS_DEBUG_SUPPORT y + set_opt UCLIBC_HAS_TZ_FILE_READ_MANY n + set_opt UCLIBC_SUSV3_LEGACY y + set_opt UCLIBC_SUSV3_LEGACY_MACROS y if use iconv ; then - sed -i -e "s:# UCLIBC_HAS_LOCALE is not set:UCLIBC_HAS_LOCALE=y:" .config - echo "UCLIBC_HAS_XLOCALE=n" >> .config - echo "UCLIBC_HAS_GLIBC_DIGIT_GROUPING=y" >> .config - echo "UCLIBC_HAS_SCANF_LENIENT_DIGIT_GROUPING=y" >> .config + set_opt UCLIBC_HAS_LOCALE y + set_opt UCLIBC_HAS_XLOCALE n + set_opt UCLIBC_HAS_GLIBC_DIGIT_GROUPING y + set_opt UCLIBC_HAS_SCANF_LENIENT_DIGIT_GROUPING y if use nls ; then - echo "UCLIBC_HAS_GETTEXT_AWARENESS=y" >> .config + set_opt UCLIBC_HAS_GETTEXT_AWARENESS y else - echo "UCLIBC_HAS_GETTEXT_AWARENESS=n" >> .config + set_opt UCLIBC_HAS_GETTEXT_AWARENESS n fi if use pregen ; then - echo "UCLIBC_PREGENERATED_LOCALE_DATA=y" >> .config - echo "UCLIBC_DOWNLOAD_PREGENERATED_LOCALE_DATA=y" >> .config + set_opt UCLIBC_PREGENERATED_LOCALE_DATA y + set_opt UCLIBC_DOWNLOAD_PREGENERATED_LOCALE_DATA y if use userlocales ; then cp "${DISTDIR}"/${MY_P}-user-locale.tar.gz \ extra/locale/uClibc-locale-030818.tgz \ @@ -273,54 +288,47 @@ || die "could not copy locale" fi else - echo "UCLIBC_PREGENERATED_LOCALE_DATA=n" >> .config + set_opt UCLIBC_PREGENERATED_LOCALE_DATA n fi else - echo "UCLIBC_HAS_LOCALE=n" >> .config + set_opt UCLIBC_HAS_LOCALE n fi - use ipv6 && sed -i -e "s:# UCLIBC_HAS_IPV6 is not set:UCLIBC_HAS_IPV6=y:" .config + use ipv6 && set_opt UCLIBC_HAS_IPV6 y - # uncomment if you miss wordexp (alsa-lib) - use wordexp && sed -i -e "s:# UCLIBC_HAS_WORDEXP is not set:UCLIBC_HAS_WORDEXP=y:" .config + use wordexp && set_opt UCLIBC_HAS_WORDEXP y # we need to do it independently of hardened to get ssp.c built into libc - sed -i -e "s:# UCLIBC_SECURITY.*:UCLIBC_SECURITY=y:" .config - echo "UCLIBC_HAS_SSP=y" >> .config - echo "SSP_USE_ERANDOM=n" >> .config - echo "PROPOLICE_BLOCK_ABRT=n" >> .config - if use debug ; then - echo "PROPOLICE_BLOCK_SEGV=y" >> .config - echo "PROPOLICE_BLOCK_KILL=n" >> .config - else - echo "PROPOLICE_BLOCK_SEGV=n" >> .config - echo "PROPOLICE_BLOCK_KILL=y" >> .config - fi + set_opt UCLIBC_HAS_SSP y + set_opt UCLIBC_HAS_SSP_COMPAT y + set_opt UCLIBC_HAS_ARC4RANDOM y + set_opt PROPOLICE_BLOCK_ABRT n + set_opt PROPOLICE_BLOCK_SEGV y # arm/mips do not emit PT_GNU_STACK, but if we enable this here # it will be emitted as RWE, ppc has to be checked, x86 needs it # this option should be used independently of hardened # relro could be also moved out of hardened if has $(tc-arch) x86 ; then - echo "UCLIBC_BUILD_NOEXECSTACK=y" >> .config + set_opt UCLIBC_BUILD_NOEXECSTACK y else - echo "UCLIBC_BUILD_NOEXECSTACK=n" >> .config + set_opt UCLIBC_BUILD_NOEXECSTACK n fi - echo "UCLIBC_BUILD_RELRO=y" >> .config + set_opt UCLIBC_BUILD_RELRO y if use hardened ; then if has $(tc-arch) ${PIE_STABLE} ; then - echo "UCLIBC_BUILD_PIE=y" >> .config + set_opt UCLIBC_BUILD_PIE y else - echo "UCLIBC_BUILD_PIE=n" >> .config + set_opt UCLIBC_BUILD_PIE n fi - echo "SSP_QUICK_CANARY=n" >> .config - echo "UCLIBC_BUILD_SSP=y" >> .config - echo "UCLIBC_BUILD_NOW=y" >> .config + set_opt SSP_QUICK_CANARY n + set_opt UCLIBC_BUILD_SSP y + set_opt UCLIBC_BUILD_NOW y else - echo "UCLIBC_BUILD_PIE=n" >> .config - echo "SSP_QUICK_CANARY=y" >> .config - echo "UCLIBC_BUILD_SSP=n" >> .config - echo "UCLIBC_BUILD_NOW=n" >> .config + set_opt UCLIBC_BUILD_PIE n + set_opt SSP_QUICK_CANARY y + set_opt UCLIBC_BUILD_SSP n + set_opt UCLIBC_BUILD_NOW n fi # Allow users some custom control over the config @@ -343,10 +351,11 @@ type -p ${cross}ar > /dev/null || cross="" sed -i \ -e "/^CROSS_COMPILER_PREFIX/s:=.*:=\"${cross}\":" \ - -e "/^KERNEL_SOURCE/s:=.*:=\"$(alt_build_kprefix)\":" \ + -e "/^KERNEL_HEADERS/s:=.*:=\"$(alt_build_kprefix)\":" \ -e "/^SHARED_LIB_LOADER_PREFIX/s:=.*:=\"/$(get_libdir)\":" \ -e "/^DEVEL_PREFIX/s:=.*:=\"/usr\":" \ -e "/^RUNTIME_PREFIX/s:=.*:=\"/\":" \ + -e "/^UCLIBC_EXTRA_CFLAGS/s:=.*:=\"${UCLIBC_EXTRA_CFLAGS}\":" \ .config || die yes "" 2> /dev/null | make -s oldconfig > /dev/null || die "could not make oldconfig"