Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Fetching contributors…

Cannot retrieve contributors at this time

153 lines (123 sloc) 4.761 kb
(
# The fortify compiler option cause the build to fail
bad_flags -D_FORTIFY_SOURCE=2 &&
mkdir -p $SOURCE_DIRECTORY/tmp &&
export CC_OPTS=( Pipe ) &&
KVER=`installed_version kernel-headers` &&
# There is no other option but nptl
OPTS+=" --enable-add-ons=nptl,libidn --with-__thread --with-tls --disable-profile --enable-kernel=$KVER" &&
if [ -n "$MAKES" ] && [ "$MAKES" -gt 1 ] ; then
sedit "s/# PARALLELMFLAGS = -j 4/PARALLELMFLAGS = -j $MAKES/" Makefile.in
fi &&
export CC=gcc &&
# Don't fully strip libc
if [[ "$LDFLAGS" == *-s* ]] ; then
STRIP=y
fi &&
unset LDFLAGS &&
# fix the compile for x86_64
sedit "s:s_floor-c s_ceil-c s_floorf-c s_ceilf-c:s_floorf-c s_ceilf-c:g" sysdeps/x86_64/fpu/multiarch/Makefile &&
patch_it $SOURCE2 1 &&
patch_it $SOURCE3 1 &&
patch_it $SOURCE4 1 &&
# Fix res_query assertion
patch_it $SOURCE5 1 &&
# Fix various hangs
patch_it $SOURCE6 1 &&
# disable final test
sed -i '/test-installation.pl/d' Makefile &&
INSTALL_ROOT=$SOURCE_DIRECTORY/glibcroot &&
mkdir -p $INSTALL_ROOT &&
cd $INSTALL_ROOT &&
OPTS+=" --with-headers=/usr/include" &&
../configure --prefix=/usr \
--infodir=/usr/share/info \
--mandir=/usr/share/man \
--with-elf \
--without-gd \
--without-cvs \
--enable-shared \
--enable-obsolete-rpc \
--host=$BUILD \
--build=$BUILD \
--disable-multi-arch \
--enable-bind-now \
--enable-stackguard-randomization \
$OPTS &&
# explicitly exit here since the following code unsets $?
make || exit 1 &&
# Preserve the old glibc temporarily
LD=/lib/ld-linux-x86-64.so.2 &&
GLIBC=/lib/libc.so.6 &&
DL=/lib/libdl.so.2 &&
M=/lib/libm.so.6 &&
RT=/lib/librt.so.1 &&
PTHREAD=/lib/libpthread.so.0 &&
NSS=/lib/libnss_files.so.2 &&
UTIL=/lib/libutil.so.1 &&
NSL=/lib/libnsl.so.1 &&
CRYPT=/lib/libcrypt.so.1 &&
DL=/lib/libdl.so.2 &&
cp $LD /lib/ld-lunar.so &&
cp $GLIBC /lib/libc-lunar.so &&
cp $DL /lib/libdl-lunar.so &&
cp $M /lib/libm-lunar.so &&
cp $RT /lib/librt-lunar.so &&
cp $PTHREAD /lib/libpthread-lunar.so &&
cp $NSS /lib/libnss_files-lunar.so &&
cp $UTIL /lib/libutil-lunar.so &&
cp $NSL /lib/libnsl-lunar.so &&
cp $CRYPT /lib/libcrypt-lunar.so &&
# Setup links for libraries
sln /lib/ld-lunar.so $LD &&
sln /lib/libc-lunar.so $GLIBC &&
sln /lib/libdl-lunar.so $DL &&
sln /lib/libm-lunar.so $M &&
sln /lib/librt-lunar.so $RT &&
sln /lib/libpthread-lunar.so $PTHREAD &&
sln /lib/libnss_files-lunar.so $NSS &&
sln /lib/libutil-lunar.so $UTIL &&
sln /lib/libnsl-lunar.so $NSL &&
sln /lib/libcrypt-lunar.so $CRYPT &&
# clean hack to make sure gnu/stubs.h gets refreshed
rm -f /usr/include/gnu/stubs.h &&
# This removes the old glibc
prepare_install &&
# And now we install the new
make install &&
# Now optionally perform debug symbol stripping only
if [ "$STRIP" == "y" ] ; then
for FN in ld-$MAJOR.so \
lib{anl,BrokenLocale,c,crypt,dl,m,nsl,util,pthread,resolv}-$MAJOR.so \
libnss_{compat,files,hesiod,nis,nisplus}-$MAJOR.so \
lib{memusage,pcprofile,SegFault,thread_db-1.0}.so ; do
strip -S /lib/$FN
done &&
for FN in "/usr/lib/gconv/*.so" ; do
strip -S $FN
done
fi &&
# Added a symlink for ash and others
ln -sf /usr/lib/libbsd-compat.a /usr/lib/libbsd.a &&
# Rebuild the ld cache
rm -f /etc/ld.so.cache 2>/dev/null &&
ldconfig &&
# Remove the temporary libc
rm /lib/{ld,lib{c,dl,m,rt,pthread,nss_files,util,nsl,crypt}}-lunar.so &&
# Generate locale info
if [ -z "$GLIBC_LOCALES" ]; then
make localedata/install-locales || exit 1
else
devoke_installwatch &&
for LOCALE in $GLIBC_LOCALES; do
INPUTFILE=$(echo $LOCALE | cut -d/ -f1 | sed -e 's:\..*$::g') &&
OUTPUTFILE=$(echo $LOCALE | cut -d/ -f1) &&
CHARMAP=$(echo $LOCALE | cut -d/ -f2) &&
mkdir -p /usr/lib/locale/$OUTPUTFILE &&
echo "localedef -i $INPUTFILE -f $CHARMAP $OUTPUTFILE" &&
localedef -i $INPUTFILE -f $CHARMAP $OUTPUTFILE
done
invoke_installwatch &&
touch /usr/lib/locale/locale-archive
fi
) > $C_FIFO 2>&1 && ldconfig
Jump to Line
Something went wrong with that request. Please try again.