On Wed, 11 Apr 2012, Mike Frysinger wrote:
On Wednesday 11 April 2012 15:31:20 Bernhard Reutner-Fischer wrote:On Wed, Apr 11, 2012 at 09:19:47PM +0200, Piotr Gluszenia Slawinski wrote:On Wed, 11 Apr 2012, Bernhard Reutner-Fischer wrote:Hello all,The uClibc team is happy to announce the maintenance-release of uClibc-0.9.33.1.not sure if anyone responsible is on the list but... will there be release for gentoo?I hope gentoo folks will take care of this soonish, yep.Ed's been making ebuilds of late
hello. i've attached my (outdated) ebuilds which has some tweaks to allow i.e. glib to build (but not only). basically some options were left away in ebuild , i can't recall well which (diffing should revail...) there is also nptl ebuild from another (experimental) chroot jail orbit ebuild which fixes building ipv6 with uclibc (with patch), glib 2.26 fix , mini-iconv, and uclibc-0.9.32.2 ebuildallowing to build nptl and locale enabled uclibc for use with glib-enabled system - though it's hacked to "just work" , and is not syntax-correct. there were mainly missing uclibc options added via setopt, but without expanding USE flags correctly.
all those are in gzipped tape image attached - perhaps it'll have some use.
btw. i'm running system with x and glib , allowing full gtk, stuff like pidgin, xchat, etc. since few years without issues, and i'm very glad it works so well :) --
usr_local_portage.tar.gz
Description: Binary data
# Copyright 1999-2009 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 # $Header: /var/cvsroot/gentoo-x86/sys-libs/uclibc/uclibc-0.9.30.1-r1.ebuild,v 1.4 2009/07/26 19:39:02 vapier Exp $ #ESVN_REPO_URI="svn://uclibc.org/trunk/uClibc" #inherit subversion inherit eutils flag-o-matic toolchain-funcs savedconfig export CBUILD=${CBUILD:-${CHOST}} export CTARGET=${CTARGET:-${CHOST}} if [[ ${CTARGET} == ${CHOST} ]] ; then if [[ ${CATEGORY/cross-} != ${CATEGORY} ]] ; then export CTARGET=${CATEGORY/cross-} fi fi # Handle the case where we want uclibc on glibc ... if [[ ${CTARGET} == ${CHOST} ]] && [[ ${CHOST} != *-uclibc* ]] ; then export UCLIBC_AND_GLIBC="sitting in a tree" export CTARGET=${CHOST%%-*}-pc-linux-uclibc fi MY_P=uClibc-0.9.30.1 SVN_VER="" PATCH_VER="1.0" DESCRIPTION="C library for developing embedded Linux systems" HOMEPAGE="http://www.uclibc.org/" SRC_URI="http://uclibc.org/downloads/${MY_P}.tar.bz2" [[ -z ${SVN_VER} ]] || \ SRC_URI="${SRC_URI} mirror://gentoo/${MY_P}-svn-update-${SVN_VER}.patch.bz2" [[ -z ${PATCH_VER} ]] || \ SRC_URI="${SRC_URI} mirror://gentoo/${MY_P}-patches-${PATCH_VER}.tar.bz2" LICENSE="LGPL-2" SLOT="0" KEYWORDS="-* ~amd64 ~arm ~m68k ~mips ~ppc ~sh ~sparc ~x86" IUSE="build elibc_uclibc uclibc-compat debug hardened ssp ipv6 minimal wordexp crosscompile_opts_headers-only" RESTRICT="strip" RDEPEND="" PROVIDE="elibc_uclibc? ( virtual/libc )" if [[ -n $CTARGET && ${CTARGET} != ${CHOST} ]]; then DEPEND="" SLOT="${CTARGET}" else DEPEND="virtual/os-headers app-misc/pax-utils" SLOT="0" fi S=${WORKDIR}/${MY_P} alt_build_kprefix() { if [[ ${CBUILD} == ${CHOST} && ${CTARGET} == ${CHOST} ]] \ || [[ -n ${UCLIBC_AND_GLIBC} ]] then echo /usr/include else echo /usr/${CTARGET}/usr/include fi } just_headers() { use crosscompile_opts_headers-only && [[ ${CHOST} != ${CTARGET} ]] } uclibc_endian() { # 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 case $(file "${T}"/endian.o) in *" MSB "*) echo "big";; *" LSB "*) echo "little";; *) echo "NFC";; esac rm -f "${T}"/endian.{s,o} } pkg_setup() { just_headers && return 0 has_version ${CATEGORY}/uclibc || return 0 [[ -n ${UCLIBC_AND_GLIBC} ]] && return 0 [[ ${ROOT} != "/" ]] && return 0 [[ ${CATEGORY} == cross-* ]] && return 0 } PIE_STABLE="arm mips ppc x86" CPU_ALPHA="" CPU_AMD64="" 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}} MIPS_{N64,O32,N32}_ABI" CPU_PPC="" CPU_SH="SH{2,3,4,5}" 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}" check_cpu_opts() { local cpu_var="CPU_$(echo $(tc-arch) | tr [a-z] [A-Z])" [[ -z ${!cpu_var} ]] && return 0 if [[ -z ${UCLIBC_CPU} ]] ; then ewarn "You really should consider setting UCLIBC_CPU" ewarn "Otherwise, the build will be generic (read: slow)." ewarn "Available CPU options:" UCLIBC_CPU=$(eval echo ${!cpu_var}) echo ${UCLIBC_CPU} case ${CTARGET} in mips[1234]*) export UCLIBC_CPU="MIPS_ISA_${CTARGET:4:1}";; sh[2345]*) export UCLIBC_CPU="SH${CTARGET:2:1}";; i[456]86*) export UCLIBC_CPU="${CTARGET:1:1}86";; *) export UCLIBC_CPU=${UCLIBC_CPU%% *};; esac else local cpu found=0 for cpu in $(eval echo ${!cpu_var}) ; do [[ ${UCLIBC_CPU} == "${cpu}" ]] && found=1 && break done if [[ ${found} -eq 0 ]] ; then ewarn "UCLIBC_CPU choice '${UCLIBC_CPU}' not supported" ewarn "Valid choices:" eval echo ${!cpu_var} die "pick a supported cpu type" fi 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 \ || unpack ${A} cd "${S}" check_cpu_opts echo einfo "Runtime Prefix: /" einfo "Devel Prefix: /usr" einfo "Kernel Prefix: $(alt_build_kprefix)" einfo "CBUILD: ${CBUILD}" einfo "CHOST: ${CHOST}" einfo "CTARGET: ${CTARGET}" einfo "CPU: ${UCLIBC_CPU:-default}" einfo "ENDIAN: $(uclibc_endian)" echo ########## PATCHES ########## [[ -n ${SVN_VER} ]] && \ epatch "${WORKDIR}"/${MY_P}-cvs-update-${SVN_VER}.patch if [[ -n ${PATCH_VER} ]] ; then unpack ${MY_P}-patches-${PATCH_VER}.tar.bz2 EPATCH_SUFFIX="patch" epatch "${WORKDIR}"/patch epatch "/usr/local/portage/sys-libs/uclibc/patches/" fi sed -i 's:getline:get_line:' extra/scripts/unifdef.c #277186 ########## CPU SELECTION ########## local target config_target case $(tc-arch) in alpha) target="alpha"; config_target="no cpu-specific options";; amd64) target="x86_64"; config_target="no cpu-specific options";; arm) target="arm"; config_target="GENERIC_ARM";; ia64) target="ia64"; config_target="no cpu-specific options";; m68k) target="m68k"; config_target="no cpu-specific options";; mips) target="mips"; config_target="MIPS_ISA_1";; ppc) target="powerpc"; config_target="no cpu-specific options";; sh) target="sh"; config_target="SH4";; sparc) target="sparc"; config_target="no cpu-specific options";; x86) target="i386"; config_target="GENERIC_386";; *) die "$(tc-arch) lists no defaults :/";; esac 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 ARCH=${target} defconfig >/dev/null || die "could not config" for def in DO{DEBUG{,_PT},ASSERTS} SUPPORT_LD_DEBUG{,_EARLY} UCLIBC_HAS_PROFILING; do sed -i -e "s:${def}=y:# ${def} is not set:" .config done if use debug ; then set_opt SUPPORT_LD_DEBUG y set_opt DODEBUG y fi sed -i -e '/ARCH_.*_ENDIAN/d' .config set_opt "ARCH_WANTS_$(uclibc_endian | tr [a-z] [A-Z])_ENDIAN" y if [[ $(tc-is-softfloat) != "no" ]] ; then set_opt UCLIBC_HAS_FPU n fi if [[ ${CTARGET/eabi} != ${CTARGET} ]] ; then set_opt CONFIG_ARM_OABI n set_opt CONFIG_ARM_EABI y fi local moredefs="COMPAT_ATEXIT" local compat_sym=atexit # We need todo this for a few months. .30 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 ${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 -Cq $(echo ${fnames}) | sort | uniq" echo ewarn "Leaving on ${moredefs}" fi else moredefs="" fi 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} UCLIBC_HAS_REENTRANT_RPC UCLIBC_HAS_GNU_GLOB PTHREADS_DEBUG_SUPPORT UCLIBC_HAS_TZ_FILE_READ_MANY UCLIBC_HAS_FENV UCLIBC_SUSV3_LEGACY UCLIBC_SUSV3_LEGACY_MACROS UCLIBC_HAS_PROGRAM_INVOCATION_NAME ; do set_opt "${def}" y done set_opt UCLIBC_HAS_CTYPE_UNSAFE n set_opt UCLIBC_HAS_LOCALE n set_opt UCLIBC_HAS_GETPT y use ipv6 && set_opt UCLIBC_HAS_IPV6 y use wordexp && set_opt UCLIBC_HAS_WORDEXP y # we need to do it independently of hardened to get ssp.c built into libc 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 if has $(tc-arch) x86 || has $(tc-arch) ppc; then set_opt UCLIBC_BUILD_NOEXECSTACK y else set_opt UCLIBC_BUILD_NOEXECSTACK n fi set_opt UCLIBC_BUILD_RELRO y if use hardened ; then if has $(tc-arch) ${PIE_STABLE} ; then set_opt UCLIBC_BUILD_PIE y else set_opt UCLIBC_BUILD_PIE n fi set_opt UCLIBC_BUILD_NOW y use ssp && { set_opt SSP_QUICK_CANARY n set_opt UCLIBC_BUILD_SSP y } else 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 restore_config .config # setup build and run paths local cross=${CTARGET}- type -p ${cross}ar > /dev/null || cross="" sed -i \ -e "/^CROSS_COMPILER_PREFIX/s:=.*:=\"${cross}\":" \ -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" cp .config myconfig emake -s clean > /dev/null || die "could not clean" } src_compile() { cp myconfig .config emake headers || die "make headers failed" just_headers && return 0 emake || die "make failed" if [[ ${CTARGET} != ${CHOST} ]] ; then emake -C utils hostutils || die "make hostutils failed" elif [[ ${CHOST} == *-uclibc* ]] ; then emake utils || die "make utils failed" fi } src_test() { [[ ${CHOST} != ${CTARGET} ]] && return 0 [[ ${CBUILD} != ${CHOST} ]] && return 0 # assert test fails on pax/grsec enabled kernels - normal # vfork test fails in sandbox (both glibc/uclibc) make UCLIBC_ONLY=1 check || die "test failed" } src_install() { local sysroot=${D} [[ ${CHOST} != ${CTARGET} ]] && sysroot="${sysroot}/usr/${CTARGET}" local target="install" just_headers && target="install_headers" emake DESTDIR="${sysroot}" ${target} || die "install failed" save_config .config # remove files coming from kernel-headers rm -rf "${sysroot}"/usr/include/{linux,asm*} # Make sure we install the sys-include symlink so that when # we build a 2nd stage cross-compiler, gcc finds the target # system headers correctly. See gcc/doc/gccinstall.info if [[ ${CTARGET} != ${CHOST} ]] ; then dosym usr/include /usr/${CTARGET}/sys-include if ! just_headers ; then newbin utils/ldconfig.host ${CTARGET}-ldconfig || die newbin utils/ldd.host ${CTARGET}-ldd || die fi return 0 fi if [[ ${CHOST} == *-uclibc* ]] ; then emake DESTDIR="${D}" install_utils || die "install-utils failed" dobin extra/scripts/getent fi dodoc Changelog* README TODO docs/*.txt DEDICATION.mjn3 } pkg_postinst() { [[ ${CTARGET} != ${CHOST} ]] && return 0 [[ ${CHOST} != *-uclibc* ]] && return 0 if [[ ! -e ${ROOT}/etc/TZ ]] ; then ewarn "Please remember to set your timezone in /etc/TZ" [[ ! -d ${ROOT}/etc ]] && mkdir -p "${ROOT}"/etc echo "UTC" > "${ROOT}"/etc/TZ fi [[ ${ROOT} != "/" ]] && return 0 # update cache before reloading init /sbin/ldconfig # reload init ... [[ -x /sbin/telinit ]] && /sbin/telinit U &> /dev/null }
_______________________________________________ uClibc mailing list uClibc@uclibc.org http://lists.busybox.net/mailman/listinfo/uclibc