#!/bin/bash # --- ROCK-COPYRIGHT-NOTE-BEGIN --- # # This copyright note is auto-generated by ./scripts/Create-CopyPatch. # Please add additional copyright information _after_ the line containing # the ROCK-COPYRIGHT-NOTE-END tag. Otherwise it might get removed by # the ./scripts/Create-CopyPatch script. Do not edit this copyright text! # # ROCK Linux: rock-src/package/base/glibc/glibc.conf # ROCK Linux is Copyright (C) 1998 - 2006 Clifford Wolf # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. A copy of the GNU General Public # License can be found at Documentation/COPYING. # # Many people helped and are helping developing ROCK Linux. Please # have a look at http://www.rocklinux.org/ and the Documentation/TEAM # file for details. # # --- ROCK-COPYRIGHT-NOTE-END --- forcefpic=0 pkg_glibc_version=${xpkg#glibc} pkg_glibc_host="$arch_target" pkg_glibc_cross="" pkg_glibc_headers_only=0 pkg_glibc_cc="" if [[ "$xpkg" = *-32bit ]] ; then pkg_glibc_cc="$BUILD32" pkg_glibc_host="$arch_target32" elif [ "$BUILD64" ] ; then pkg_glibc_cc="$BUILD64" fi prefix="usr" set_confopt case "$xpkg" in glibc??-cross-*) pkg_glibc_cross="${xpkg#glibc*-cross-}" pkg_glibc_version=${pkg_glibc_version%-cross-*} pkg_glibc_host="${pkg_glibc_cross}-unknown-linux-gnu" prefix="$prefix/$pkg_glibc_host" set_confopt echo_status "Preparing to build a cross-glibc package for $pkg_glibc_cross." ;; glibc??|glibc??-32bit) pkg_glibc_version=${pkg_glibc_version%-??bit} ;; *) echo_error "Not supported $pkg package name: $xpkg" false ;; esac patchfiles="`ls $confdir/glibc$pkg_glibc_version/*.patch \ $confdir/glibc$pkg_glibc_version/*.patch.$arch 2>/dev/null | tr '\n' ' '` $patchfiles" if [ $stagelevel -le 2 ]; then patchfiles="`ls $patchfiles $confdir/glibc$pkg_glibc_version/*.patch.cross \ $confdir/glibc$pkg_glibc_version/*.patch.cross.$arch 2>/dev/null | tr '\n' ' '`" fi # Use absolute path to configure script as e.g. the path to # ports/sysdeps/unix/sysv/linux/mips/mips64/ldd-rewrite.sed is based on it # and will point to the wrong location otherwise. configscript="$builddir/glibc-*/configure" if [ $stagelevel -eq 0 ] ; then pkg_glibc_headers_only=1 configprefix="CC=gcc" confopt="--prefix=/$prefix --build=${CLFS_HOST} --host=${CLFS_TARGET} \ --with-headers=${CLFS}/$prefix/include --cache-file=config.cache" makeopt="" makeinstopt="install-headers" else if [ $stagelevel -eq 1 ] ; then export CC="${CLFS_TARGET}-gcc $pkg_glibc_cc" export AR="${CLFS_TARGET}-ar" export RANLIB="${CLFS_TARGET}-ranlib" fi confopt="prefix=/$prefix --build=${CLFS_HOST} --host=$pkg_glibc_host \$extraconfopt" var_append extraconfopt " " "--disable-profile --enable-add-ons \ --with-tls --enable-kernel=2.6.0 --with-__thread --cache-file=config.cache" if [ $stagelevel -le 2 ] ; then var_append extraconfopt " " "--with-binutils=${CLFS}/$cross_tools/bin \ --with-headers=${CLFS}/$prefix/include" fi makeopt="" makeinstopt="install" fi if [ "$pkg_glibc_cross" ] ; then arch_target="$pkg_glibc_host" arch_machine="${arch_target##-*}" if [ -z "$( type -p $pkg_glibc_host-gcc )" ] then echo_status "Building only cross-headers because there is no cross-gcc (yet)." pkg_glibc_headers_only=1 makeinstopt="install-headers" else export CC=$pkg_glibc_host-gcc export AR=$pkg_glibc_host-ar export RANLIB=$pkg_glibc_host-ranlib fi fi # Fix for mips/mips64 when building glibc headers. if [ $pkg_glibc_headers_only = 1 ] ; then if [[ "$arch_machine" == mips* ]] ; then # don't pass mips specific options to build C compiler var_append BUILDCC_WRAPPER_REMOVE " " "-mabi=*" # installing headers fails if _MIPS_SZPTR (and thus _WORDSIZE) # is not defined, with: ./bits/types.h:129:3: error: #error if [[ "$arch_machine" == mips64* ]] ; then var_append BUILDCC_WRAPPER_APPEND " " "-D_MIPS_SZPTR=64" else var_append BUILDCC_WRAPPER_APPEND " " "-D_MIPS_SZPTR=32" fi fi fi hook_add prepatch 5 "glibc_prepatch" glibc_prepatch () { echo Extracting $archdir/glibc-ports-*.tar.bz2 ... tar -xf $archdir/glibc-ports-*.tar.bz2 mv -v glibc-ports-* ports if [ $stagelevel -ge 3 ] ; then echo Extracting $archdir/glibc-libidn-*.tar.bz2 ... tar -xf $archdir/glibc-libidn-*.tar.bz2 mv -v glibc-libidn-* libidn fi } custmain="glibc_custmain" glibc_custmain () { if [ $pkg_glibc_headers_only = 1 ] ; then cp configure{,.orig} sed -e 's/3.4/3.[0-9]/g' configure.orig > configure # more configure hacks: tls support everywhere for x in $( find .. -name configure | xargs grep libc_cv_.*_tls | \ sed -r 's,.*(libc_cv),\1,; s,(_tls).*,\1,' | sort -u; ) do eval "export $x=yes"; done export libc_cv_mlong_double_128=yes export libc_cv_mlong_double_128ibm=yes export libc_cv_mabi_ibmlongdouble=yes export libc_cv_ppc_machine=yes fi mkdir -v ../objdir ; cd ../objdir if [ $stagelevel -le 2 -o "$pkg_glibc_cross" ] ; then echo "libc_cv_forced_unwind=yes" > config.cache echo "libc_cv_c_cleanup=yes" >> config.cache fi if [ -z "$pkg_glibc_cross" ] ; then echo "slibdir=/$multilib" >> configparms fi echo "install_root=$instroot" >> configparms eval_config_command $( eval echo $confopt ) if [ $pkg_glibc_headers_only = 0 ] ; then eval $MAKE $makeopt fi if [ "$ROCKCFG_DO_CHECK" = 1 -a $stagelevel -ge 3 ] ; then make -k check 2>&1 | tee glibc-check-log grep Error glibc-check-log || true fi eval $MAKE $makeinstopt if [ $pkg_glibc_headers_only = 1 ] ; then mkdir -p $root/$prefix/include/bits cp -v bits/stdio_lim.h ${CLFS}/$prefix/include/bits/ mkdir -p $root/$prefix/include/gnu touch ${CLFS}/$prefix/include/gnu/stubs.h case "$arch" in x86) if [ "$ROCKCFG_X86_BITS" = 64 ] ; then pkg_glibc_arch=x86_64 else pkg_glibc_arch=i386 fi ;; *) pkg_glibc_arch="$arch" ;; esac if [ -e ../glibc-*/nptl/sysdeps/unix/sysv/linux/$arch/bits/pthreadtypes.h ] then cp -v ../glibc-*/nptl/sysdeps/unix/sysv/linux/$arch/bits/pthreadtypes.h \ ${CLFS}/$prefix/include/bits fi elif [[ "$xpkg" != *-32bit ]] ; then ln -sf libbsd-compat.a $libdir/libbsd.a # copy crypt documentation # cp -v ../glibc-*/crypt/README.ufc-crypt $docdir/README.crypt # NSCD Init script and config # cp $confdir/nscd.conf $confdir/nsswitch.conf $sysconfdir/ install_init nscd $confdir/nscd.init cp -av $confdir/{ld.so,nsswitch}.conf $sysconfdir/ if [ -f $datadir/zoneinfo/Factory ] ; then cp -v --remove-destination $datadir/zoneinfo/Factory \ $sysconfdir/localtime fi # Create /lib/ld-lsb.so.1 symlink # if [ -f $root/$multilib/ld-linux-$arch_machine.so.2 ]; then ln -vfs ld-linux-$arch_machine.so.2 $root/$multilib/ld-lsb.so.1 elif [ -f $root/$multilib/ld-linux.so.2 ]; then ln -vfs ld-linux.so.2 $root/$multilib/ld-lsb.so.1 fi if [ $stagelevel -ge 3 -a -z "$pkg_glibc_cross" ] ; then # otherwise we risk the hosts /usr/lib/locale/locale-archive being overwritten eval $MAKE localedata/install-locales cp -v ../glibc-*/localedata/SUPPORTED $root/usr/share/i18n/ fi elif [[ "$xpkg" = *-32bit ]] ; then # -32bit and -64bit differ by these files, in addition to lib and lib64 dirs; # -32bit installs: # usr/bin/lddlibc4 # libexec/getconf/POSIX_V6_ILP32_OFF32 # libexec/getconf/POSIX_V6_ILP32_OFFBIG # include/gnu/stubs-32.h # include/sys/vm86.h # -64bit installs: # include/gnu/stubs-64.h cp -av $dummydir/lib/* $root/$multilib/ cp -av $dummydir/usr/lib/* $root/usr/$multilib/ cp -av $bindir/lddlibc4 $root/usr/bin/ mkdir -vp $root/usr/include/{gnu,sys} cp -av $includedir/gnu/stubs-32.h $root/usr/include/gnu/ cp -av $includedir/sys/vm86.h $root/usr/include/sys/ fi }