|
|
# --- 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 - 2004 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 ---
|
|
|
|
|
|
pkg_glibc_version=${xpkg#glibc}
|
|
pkg_glibc_target=${arch_target}
|
|
pkg_glibc_cross=""
|
|
|
|
case "$xpkg" in
|
|
glibc??-cross-*)
|
|
pkg_glibc_cross="${xpkg#glibc*-cross-}"
|
|
pkg_glibc_version=${pkg_glibc_version%-cross-*}
|
|
pkg_glibc_target="${pkg_glibc_cross}-unknown-linux-gnu"
|
|
echo_status "Preparing to build a cross-glibc package for $pkg_glibc_cross."
|
|
;;
|
|
glibc??)
|
|
;;
|
|
*)
|
|
echo_error "Not supported $pkg package name: $xpkg"
|
|
exit 1
|
|
;;
|
|
esac
|
|
|
|
|
|
#---------------------------------
|
|
if [ $pkg_glibc_version = 22 ]; then
|
|
|
|
glibc_custmain() {
|
|
cat > configparms <<- EOF
|
|
prefix = /usr
|
|
slibdir = /lib
|
|
sysconfdir = /etc
|
|
install_root = $root
|
|
CC = $CC
|
|
BUILD_CC = $BUILDCC
|
|
AR = $AR
|
|
RANLIB = $RANLIB
|
|
EOF
|
|
|
|
# Disable glibc internal debuging but build debuging and profile
|
|
# code so we can use this glibc to debug other programs.
|
|
CFLAGS="$CFLAGS -g -DNDEBUG=1" ./configure --with-gnu-binutils \
|
|
--enable-add-ons --enable-profile \
|
|
--with-headers=$root/usr/include/linux \
|
|
--with-gd=/usr \
|
|
--with-gd-lib=/usr/lib \
|
|
--with-gd-include=/usr/include \
|
|
--build=${arch_build} ${arch_target}
|
|
|
|
echo $BUILDCC elf/sln.c -o elf/dyn_sln
|
|
$BUILDCC elf/sln.c -o elf/dyn_sln
|
|
eval $MAKE symbolic-link-prog=elf/dyn_sln all install
|
|
|
|
# Misc. stuff
|
|
#
|
|
if [ "$crossnative" = native ] ; then
|
|
eval $MAKE install-locales -C localedata
|
|
mkdir -p $root/usr/share/man/man3
|
|
if [ -f /usr/bin/perl ] ; then
|
|
eval $MAKE -C linuxthreads/man \
|
|
MANDIR=$root/usr/share/man/man3 all install
|
|
fi
|
|
fi
|
|
ln -sf libbsd-compat.a $root/usr/lib/libbsd.a
|
|
|
|
# copy linuxthreads and crypt documentation
|
|
#
|
|
cp linuxthreads/ChangeLog $docdir/ChangeLog.threads
|
|
cp linuxthreads/Changes $docdir/Changes.threads
|
|
cp linuxthreads/README $docdir/README.threads
|
|
cp linuxthreads/FAQ.html $docdir/FAQ-threads.html
|
|
cp -r linuxthreads/Examples $docdir/examples.threads
|
|
cp crypt/README.ufc-crypt $docdir/README.crypt
|
|
|
|
# NSCD Init script and config
|
|
#
|
|
cp $confdir/nscd.conf $confdir/nsswitch.conf $root/etc/
|
|
install_init nscd $confdir/nscd.init
|
|
|
|
# No absolute path in libc.so if cross-compileing
|
|
#
|
|
if [ $crossnative = cross ] ; then
|
|
libcso=$root/usr/lib/libc.so
|
|
for x in 1 2 3 4 5 ; do
|
|
sed -i 's,/[a-z/]*/,,' $libcso
|
|
done
|
|
fi
|
|
|
|
# Install ld.so.conf
|
|
#
|
|
{
|
|
echo "/usr/lib"
|
|
echo "/usr/X11/lib"
|
|
echo "/usr/local/lib"
|
|
echo "/opt/*/lib"
|
|
} > $root/etc/ld.so.conf
|
|
if [ -f $root/usr/sbin/ldconfig ] ; then
|
|
ln -sf ../usr/sbin/ldconfig $root/sbin/
|
|
fi
|
|
}
|
|
|
|
fi
|
|
#---------------------------------
|
|
|
|
|
|
#---------------------------------
|
|
if [ $pkg_glibc_version = 23 ]; then
|
|
|
|
glibc_custmain() {
|
|
# check whether profiling is enabled
|
|
if [ $ROCKCFG_PKG_GLIBC_ENABLE_PROFILE = 1 ] ; then
|
|
G_PROFILE=--enable-profile
|
|
else
|
|
G_PROFILE=--disable-profile
|
|
fi
|
|
|
|
# Let's use an 'objdir' directory for building glibc
|
|
mkdir -p objdir; cd objdir
|
|
|
|
# Disable glibc internal debuging but build debuging and profile
|
|
# code so we can use this glibc to debug other programs.
|
|
CFLAGS="$CFLAGS -g -DNDEBUG=1" ../configure --prefix=$root/$prefix \
|
|
--with-gnu-binutils --enable-add-ons"$ADDONS" $G_PROFILE \
|
|
--with-headers=$root/$prefix/include --with-gd=/$prefix \
|
|
--with-gd-lib=/$prefix/lib --with-gd-include=/$prefix/include \
|
|
--build=${arch_build} --host=${arch_target}
|
|
|
|
eval $MAKE prefix=/usr slibdir=/lib sysconfdir=/etc all
|
|
if [ -z "$pkg_glibc_cross" ]
|
|
then
|
|
eval $MAKE prefix=/$prefix slibdir=/lib \
|
|
sysconfdir=/etc install_root=$root install
|
|
else
|
|
eval $MAKE prefix=/$prefix install_root=$root install
|
|
fi
|
|
ln -sf libbsd-compat.a $root/$prefix/lib/libbsd.a
|
|
|
|
# Misc. stuff
|
|
#
|
|
if [ $stagelevel -gt 1 -a -z "$pkg_glibc_cross" ]
|
|
then
|
|
# install locales and linuxthread manpages
|
|
#
|
|
eval $MAKE localedata/install-locales
|
|
cp ../localedata/SUPPORTED $root/usr/share/i18n/
|
|
mkdir -p $root/usr/share/man/man3
|
|
if [ -f /usr/bin/perl ] ; then
|
|
eval $MAKE -C ../linuxthreads/man \
|
|
MANDIR=$root/usr/share/man/man3 all install
|
|
fi
|
|
|
|
# copy linuxthreads and crypt documentation
|
|
#
|
|
cp ../linuxthreads/ChangeLog $docdir/ChangeLog.threads
|
|
cp ../linuxthreads/Changes $docdir/Changes.threads
|
|
cp ../linuxthreads/README $docdir/README.threads
|
|
cp ../linuxthreads/FAQ.html $docdir/FAQ-threads.html
|
|
cp -r ../linuxthreads/Examples $docdir/examples.threads
|
|
cp ../crypt/README.ufc-crypt $docdir/README.crypt
|
|
|
|
# NSCD Init script and config
|
|
#
|
|
cp $confdir/nscd.conf $confdir/nsswitch.conf $root/etc/
|
|
install_init nscd $confdir/nscd.init
|
|
fi
|
|
|
|
# No wrong absolute path in libc.so
|
|
#
|
|
if [ $stagelevel -le 1 ]
|
|
then
|
|
libcso=$root/$prefix/lib/libc.so
|
|
sed 's,/[^ ]*/,,g' < $libcso > $libcso.new
|
|
mv $libcso.new $libcso
|
|
fi
|
|
|
|
# Install ld.so.conf
|
|
#
|
|
if [ ! -f $root/etc/ld.so.conf -a -z "$pkg_glibc_cross" ]
|
|
then
|
|
{ echo "/usr/lib" ; echo "/usr/X11/lib"
|
|
echo "/usr/local/lib" ; echo "/opt/*/lib"
|
|
} > $root/etc/ld.so.conf
|
|
fi
|
|
|
|
# Move 'ldconfig' and 'sln' binaries
|
|
#
|
|
if [ -z "$pkg_glibc_cross" ]
|
|
then
|
|
if [ -f "$root/usr/sbin/ldconfig" ]; then
|
|
mv -v $root/usr/sbin/ldconfig $root/sbin/ldconfig
|
|
fi
|
|
if [ -f "$root/usr/sbin/sln" ]; then
|
|
mv -v $root/usr/sbin/sln $root/sbin/sln
|
|
fi
|
|
fi
|
|
|
|
# Create /lib/ld-lsb.so.1 symlink
|
|
#
|
|
if [ -z "$pkg_glibc_cross" ]
|
|
then
|
|
if [ -f $root/lib/ld-linux-$arch_machine.so.2 ]; then
|
|
ln -vfs ld-linux-$arch_machine.so.2 $root/lib/ld-lsb.so.1
|
|
elif [ -f $root/lib/ld-linux.so.2 ]; then
|
|
ln -vfs ld-linux.so.2 $root/lib/ld-lsb.so.1
|
|
fi
|
|
fi
|
|
}
|
|
|
|
fi
|
|
#---------------------------------
|
|
|
|
|
|
glibc_prepatch() {
|
|
tarball="`echo $desc_D | grep linuxthreads | \
|
|
sed 's/.* \(.*\.linuxthreads.*\) .*/\1/'`"
|
|
if [ "$tarball" ] ; then
|
|
tar $taropt $archdir/$tarball
|
|
fi
|
|
}
|
|
|
|
glibc_stage0() {
|
|
if [ $pkg_glibc_version = 23 ]
|
|
then
|
|
mkdir -p objdir; cd objdir
|
|
|
|
confopt="${confopt% --target=*}"
|
|
|
|
var_append confopt " " "--enable-add-ons"$ADDONS" --build=\$arch_build \
|
|
--host=\$arch_target"
|
|
|
|
# due to assembler check - and we do not yet have as ...
|
|
[ $arch = hppa ] && var_append confopt " " "--enable-hacker-mode"
|
|
|
|
eval "../configure --enable-add-ons"$ADDONS" $confopt"
|
|
|
|
make -k cross-compiling=yes install-headers || true
|
|
cp -v ../include/features.h $root/$prefix/include
|
|
fi
|
|
if [ $pkg_glibc_version = 22 ]
|
|
then
|
|
eval "./configure --enable-add-ons $confopt"
|
|
make cross-compiling=yes install-headers
|
|
cp -v include/features.h $root/$prefix/include
|
|
|
|
fi
|
|
|
|
mkdir -p $root/$prefix/include/gnu
|
|
touch $root/$prefix/include/gnu/stubs.h
|
|
cp -v bits/stdio_lim.h $root/$prefix/include/bits
|
|
}
|
|
|
|
|
|
patchfiles="`ls $confdir/glibc$pkg_glibc_version/*.patch \
|
|
$confdir/glibc$pkg_glibc_version/*.patch.$arch 2>/dev/null | tr '\n' ' '` $patchfiles"
|
|
|
|
if [ $stagelevel -le 1 ]; 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
|
|
|
|
|
|
if [ $pkg_glibc_version = 22 ] ; then
|
|
# auto-detect for the old glibc
|
|
ADDONS=""
|
|
else
|
|
# prevent the utilisation of nptl (...) - and enable it later
|
|
# if a 2.5/6 kernel is used
|
|
ADDONS="=linuxthreads"
|
|
fi
|
|
|
|
|
|
threadsver="$ver"
|
|
prepatch="glibc_prepatch"
|
|
|
|
if [ -z "$pkg_glibc_cross" ]
|
|
then
|
|
if [ $stagelevel -eq 0 ]
|
|
then
|
|
custmain="glibc_stage0"
|
|
else
|
|
custmain="glibc_custmain"
|
|
fi
|
|
else
|
|
if [ $pkg_glibc_version = 22 ]; then
|
|
echo_error "Cross-packages are not supported for glibc22!"
|
|
exit 1
|
|
fi
|
|
|
|
arch_target="$pkg_glibc_target"
|
|
arch_machine="${arch_target/-*/}"
|
|
prefix="$prefix/$pkg_glibc_target"
|
|
set_confopt
|
|
|
|
if [ -z "$( type -p $pkg_glibc_target-gcc )" ]
|
|
then
|
|
echo_status "Building only cross-headers because there is no cross-gcc (yet)."
|
|
custmain="glibc_stage0"
|
|
else
|
|
export CC=$pkg_glibc_target-gcc
|
|
export AS=$pkg_glibc_target-as
|
|
export LD=$pkg_glibc_target-ld
|
|
export AR=$pkg_glibc_target-ar
|
|
export NM=$pkg_glibc_target-nm
|
|
export GASP=$pkg_glibc_target-gasp
|
|
export STRIP=$pkg_glibc_target-strip
|
|
export RANLIB=$pkg_glibc_target-ranlib
|
|
export CFLAGS="-O2"
|
|
custmain="glibc_custmain"
|
|
fi
|
|
fi
|
|
|
|
if [ $stagelevel -eq 1 -a -f $confdir/glibc$pkg_glibc_version/no_path_in_glibcso.diff ]
|
|
then
|
|
var_append patchfiles " " $confdir/glibc$pkg_glibc_version/no_path_in_glibcso.diff
|
|
fi
|
|
|