summaryrefslogtreecommitdiffstats
path: root/source/l/glibc/glibc.SlackBuild
diff options
context:
space:
mode:
Diffstat (limited to 'source/l/glibc/glibc.SlackBuild')
-rwxr-xr-xsource/l/glibc/glibc.SlackBuild174
1 files changed, 38 insertions, 136 deletions
diff --git a/source/l/glibc/glibc.SlackBuild b/source/l/glibc/glibc.SlackBuild
index c97559eee..9418e6692 100755
--- a/source/l/glibc/glibc.SlackBuild
+++ b/source/l/glibc/glibc.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2006, 2008, 2009, 2010, 2011, 2012, 2013 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2006, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -22,23 +22,18 @@
## build glibc-$VERSION for Slackware
-VERSION=${VERSION:-2.17}
+VERSION=${VERSION:-$(echo glibc-*.tar.xz | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
CHECKOUT=${CHECKOUT:-""}
-BUILD=${BUILD:-7}
-
-## Included in glibc now:
-## glibc-libidn version
-#LIBIDNVER=2.10.1
+BUILD=${BUILD:-1}
# I was considering disabling NSCD, but MoZes talked me out of it. :)
#DISABLE_NSCD=" --disable-nscd "
-# $ARCH may be preset, otherwise i486 compatibility with i686 binary
-# structuring is the Slackware default, since this is what gcc-3.2+
-# requires for binary compatibility with previous releases.
+# $ARCH may be preset, otherwise i586 compatibility with i686 binary
+# structuring is the Slackware default.
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
- i?86) export ARCH=i486 ;;
+ i?86) export ARCH=i586 ;;
arm*) export ARCH=arm ;;
# Unless $ARCH is already set, use uname -m for all other archs:
*) export ARCH=$( uname -m ) ;;
@@ -56,7 +51,7 @@ case $ARCH in
LIBDIRSUFFIX=""
;;
i586)
- OPTIMIZ="-O3 -march=i586"
+ OPTIMIZ="-O3 -march=i586 -mtune=i686"
LIBDIRSUFFIX=""
;;
i686)
@@ -85,9 +80,9 @@ case $ARCH in
x86_64)
TARGET=${TARGET:-x86_64}
;;
- i486)
- # This should be i486 for all 32-bit x86 arch:
- TARGET=${TARGET:-i486}
+ i586)
+ # This should be i586 for all 32-bit x86 arch:
+ TARGET=${TARGET:-i586}
;;
esac
@@ -108,13 +103,7 @@ CWD=$(pwd)
TMP=${TMP:-/glibc-tmp-$(mcookie)}
mkdir -p $TMP
-NUMJOBS=${NUMJOBS:--j4}
-
-# Sanity check on the version number in the install scripts:
-if ! grep -vq libutil-${VERSION}.so $CWD/doinst.sh-glibc ; then
- echo "FATAL: doinst.sh scripts have wrong version numbers."
- exit 1
-fi
+NUMJOBS=${NUMJOBS:-" -j7 "}
# This function fixes a doinst.sh file for x86_64.
# With thanks to Fred Emmott.
@@ -144,58 +133,23 @@ apply_patches() {
# not existing. This patch reverts is_IS to the version shipped in
# glibc-2.5:
zcat $CWD/is_IS.diff.gz | patch -p1 --verbose || exit 1
- # Fix NIS netgroups:
- zcat $CWD/glibc.nis-netgroups.diff.gz | patch -p1 --verbose || exit 1
# Support ru_RU.CP1251 locale:
zcat $CWD/glibc.ru_RU.CP1251.diff.gz | patch -p1 --verbose || exit 1
- # Fix missing MAX macro in getcwd.c:
- zcat $CWD/glibc.getcwd.max.macro.diff.gz | patch -p1 --verbose || exit 1
# Fix resolver problem with glibc-2.9:
zcat $CWD/glibc-2.10-dns-no-gethostbyname4.diff.gz | patch -p0 --verbose || exit 1
# This reverts a patch that was made to glibc to fix "namespace leakage",
# which seems to cause some build failures (e.g. with conntrack):
- zcat $CWD/glibc.revert.to.fix.build.breakages.diff.gz | patch -p1 --verbose || exit 1
- # This partial security patch still applies and might be needed:
- zcat $CWD/glibc.git-96611391ad8823ba58405325d78cefeae5cdf699-CVE-2010-3847b.patch.gz | patch -p1 --verbose || exit 1
+ zcat $CWD/glibc.revert.to.fix.build.breakages.diff.gz | patch -p1 -l --verbose || exit 1
# Make it harder for people to trick ldd into running code:
zcat $CWD/glibc.ldd.trace.through.dynamic.linker.diff.gz | patch -p1 --verbose || exit 1
- # Make glibc compile with binutils using --enable-initfini-array.
- # At this time, we do not recommend this due to probable ABI breakage.
- # The also patch needs work before it would apply.
- # ***NOT READY***
- #zcat $CWD/glibc.git-4a531bb0b3b582cb693de9f76d2d97d970f9a5d5.patch.gz | patch -p1 --verbose || exit 1
- #
- # Avoid the Intel optimized asm routines for now because they break
- # the flash player. We'll phase this in when it's safer to do so.
- zcat $CWD/glibc.disable.broken.optimized.memcpy.diff.gz | patch -p1 --verbose || exit 1
- # Fix buffer overrun in regexp matcher. This bug is deemed low impact since
- # the buffer contents cannot be controlled, but could lead to a crash.
- zcat $CWD/glibc.CVE-2013-0242.diff.gz | patch -p1 --verbose || exit 1
- # Fix stack overflow in getaddrinfo with many results. This bug can only be
- # triggered through DNS poisoning or through the use of a hostile DNS
- # server (in which case you already have problems), and requires large
- # amounts of data to be sent to the targeted machine. May lead to a
- # crash. Considered low impact.
- zcat $CWD/glibc.CVE-2013-1914.diff.gz | patch -p1 --verbose || exit 1
- # Remove pt_chown by default, as it can be used for a local privilege
- # escalation. However, although this is worth patching in the -current
- # version, it requires a non-default (and known to weaken security) setting
- # for FUSE. Additionally, the patch is not portable to older versions of
- # glibc (but thanks Mancha for porting it to 2.17!). On older versions
- # of glibc, making /usr/libexec/pt_chown a symlink to /bin/true will
- # provide the same fix, if needed. But the insecure setting for FUSE
- # probably opens up many other possible exploits and should be avoided.
- zcat $CWD/glibc.CVE-2013-2207.diff.gz | patch -p1 --verbose || exit 1
- # Patch integer overflows in pvalloc, valloc, and
- # posix_memalign/memalign/aligned_alloc (CVE-2013-4332).
- zcat $CWD/glibc.CVE-2013-4332.diff.gz | patch -p1 --verbose || exit 1
+ # Add a C.UTF-8 locale:
+ zcat $CWD/glibc-c-utf8-locale.patch.gz | patch -p1 --verbose || exit 1
}
# This is going to be the initial $DESTDIR:
export PKG=$TMP/package-glibc-incoming-tree
PGLIBC=$TMP/package-glibc
PSOLIBS=$TMP/package-glibc-solibs
-PZONE=$TMP/package-glibc-zoneinfo
PI18N=$TMP/package-glibc-i18n
PPROFILE=$TMP/package-glibc-profile
PDEBUG=$TMP/package-glibc-debug
@@ -232,9 +186,6 @@ tar xvf $CWD/glibc-$CVSVER.tar.xz \
|| tar xvf $CWD/glibc-$CVSVER.tar.gz
cd glibc-$CVSVER
-#tar xvf $CWD/glibc-libidn-$LIBIDNVER.tar.?z*
-#mv glibc-libidn-$LIBIDNVER libidn
-
chown -R root:root .
find . -perm 666 -exec chmod 644 {} \;
find . -perm 664 -exec chmod 644 {} \;
@@ -266,9 +217,9 @@ CFLAGS="-g $OPTIMIZ" \
../configure \
--prefix=/usr \
--libdir=/usr/lib${LIBDIRSUFFIX} \
- --enable-kernel=3.2.29 \
+ --enable-kernel=2.6.32 \
--with-headers=/usr/include \
- --enable-add-ons=libidn,nptl \
+ --enable-add-ons \
--enable-obsolete-rpc \
--enable-profile \
$DISABLE_NSCD \
@@ -304,24 +255,9 @@ strip -g $PKG/lib${LIBDIRSUFFIX}/l*.so*
strip -g $PKG/usr/lib${LIBDIRSUFFIX}/l*.so*
strip -g $PKG/usr/lib${LIBDIRSUFFIX}/lib*.a
-# Build and install the zoneinfo database:
-cd $TMP
-rm -rf tzcodedata-build
-mkdir tzcodedata-build
-cd tzcodedata-build
-tar xzf $CWD/tzdata?????.tar.gz
-tar xzf $CWD/tzcode?????.tar.gz
-sed -i "s,/usr/local,$(pwd),g" Makefile
-sed -i "s,/etc/zoneinfo,/zoneinfo,g" Makefile
-make
-make install
-mkdir -p $PKG/usr/share/zoneinfo/{posix,right}
-cp -a zoneinfo/* $PKG/usr/share/zoneinfo
-cp -a zoneinfo-posix/* $PKG/usr/share/zoneinfo/posix
-cp -a zoneinfo-leaps/* $PKG/usr/share/zoneinfo/right
-# Remove $PKG/usr/share/zoneinfo/localtime -- the install script will
-# create it as a link to /etc/localtime.
-rm -f $PKG/usr/share/zoneinfo/localtime
+# Remove the rquota.x and rquota.h include files, as they are provided by
+# the quota package:
+rm -f $PKG/usr/include/rpcsvc/rquota.{h,x}
# Back to the sources dir to add some files/docs:
cd $TMP/glibc-$CVSVER
@@ -331,31 +267,19 @@ cd $TMP/glibc-$CVSVER
mkdir -p $PKG/etc
cat nscd/nscd.conf > $PKG/etc/nscd.conf.new
-# Install some scripts to help select a timezone:
-( cd $CWD/timezone-scripts
- # Try to rebuild this:
- sh output-updated-timeconfig.sh $PKG/usr/share/zoneinfo > timeconfig 2> /dev/null
-)
-mkdir -p $PKG/var/log/setup
-cp -a $CWD/timezone-scripts/setup.timeconfig $PKG/var/log/setup
-chown root:root $PKG/var/log/setup/setup.timeconfig
-chmod 755 $PKG/var/log/setup/setup.timeconfig
-mkdir -p $PKG/usr/sbin
-cp -a $CWD/timezone-scripts/timeconfig $PKG/usr/sbin
-chown root:root $PKG/usr/sbin/timeconfig
-chmod 755 $PKG/usr/sbin/timeconfig
-
-## Install docs:
+# Install docs:
( mkdir -p $PKG/usr/doc/glibc-$VERSION
cp -a \
- BUGS CONFORMANCE COPYING COPYING.LIB FAQ INSTALL LICENSES NAMESPACE \
- NEWS NOTES PROJECTS README README.libm \
+ BUGS CONFORMANCE COPYING* FAQ INSTALL LICENSES NAMESPACE \
+ NEWS NOTES PROJECTS README* \
$PKG/usr/doc/glibc-$VERSION
)
-# Don't forget to add the /usr/share/zoneinfo/localtime -> /etc/localtime symlink! :)
-if [ ! -r $PKG/usr/share/zoneinfo/localtime ]; then
- ( cd $PKG/usr/share/zoneinfo ; ln -sf /etc/localtime . )
+# Trim the NEWS file to omit ancient history:
+if [ -r NEWS ]; then
+ DOCSDIR=$(echo $PKG/usr/doc/glibc-$VERSION)
+ cat NEWS | head -n 1000 > $DOCSDIR/NEWS
+ touch -r NEWS $DOCSDIR/NEWS
fi
# OK, there are some very old Linux standards that say that any binaries in a /bin or
@@ -392,33 +316,6 @@ rm $PKG/etc/ld.so.cache
# OK, time to make some packages #
##################################
-# glibc-zoneinfo. We will start with an easy one to avoid breaking a sweat. ;-)
-cd $CWD
-ZONE_VERSIONS="$(echo tzdata* | cut -f1 -d . | cut -b7-11)"
-echo $ZONE_VERSIONS
-cd $PZONE
-# Install some scripts to help select a timezone:
-mkdir -p $PZONE/var/log/setup
-cp -a $CWD/timezone-scripts/setup.timeconfig $PZONE/var/log/setup
-chown root:root $PZONE/var/log/setup/setup.timeconfig
-chmod 755 $PZONE/var/log/setup/setup.timeconfig
-mkdir -p $PZONE/usr/sbin
-cp -a $CWD/timezone-scripts/timeconfig $PZONE/usr/sbin
-chown root:root $PZONE/usr/sbin/timeconfig
-chmod 755 $PZONE/usr/sbin/timeconfig
-mkdir $PZONE/install
-cat $CWD/doinst.sh-glibc-zoneinfo > $PZONE/install/doinst.sh
-cat $CWD/slack-desc.glibc-zoneinfo > $PZONE/install/slack-desc
-mkdir -p $PZONE/usr/share
-cd $PZONE/usr/share
-cp -a --verbose $PKG/usr/share/zoneinfo .
-cd $PZONE
-mkdir -p $PZONE/etc
-# This is already hard-coded into doinst.sh (like it'll be there anyway ;-):
-rm -f etc/localtime
-# Wrap it up:
-makepkg -l y -c n $TMP/glibc-zoneinfo-$ZONE_VERSIONS-noarch-$BUILD.txz
-
# glibc-profile:
cd $PPROFILE
mkdir -p usr/lib${LIBDIRSUFFIX}
@@ -444,12 +341,15 @@ makepkg -l y -c n $TMP/glibc-debug-$VERSION-$SLACKWARE_ARCH-$BUILD.txz
# glibc-i18n:
cd $PI18N
-mkdir -p usr/lib${LIBDIRSUFFIX}
-rm -rf usr/lib${LIBDIRSUFFIX}/locale
-cp -a $PKG/usr/lib${LIBDIRSUFFIX}/locale usr/lib${LIBDIRSUFFIX}
-mkdir -p usr/share
-cp -a $PKG/usr/share/i18n usr/share
-cp -a $PKG/usr/share/locale usr/share
+mkdir -p usr/lib${LIBDIRSUFFIX}/locale
+mv $PKG/usr/lib${LIBDIRSUFFIX}/locale/* usr/lib${LIBDIRSUFFIX}/locale
+mkdir -p usr/share/{i18n,locale}
+mv $PKG/usr/share/i18n/* usr/share/i18n
+mv $PKG/usr/share/locale/* usr/share/locale
+# Leave copies of the C, POSIX, and en_US locales in the main glibc package:
+cp -a usr/lib${LIBDIRSUFFIX}/locale/{C,en_US}* $PKG/usr/lib${LIBDIRSUFFIX}/locale
+mkdir -p $PKG/usr/share/i18n/locales
+cp -a usr/share/i18n/locales/{C,POSIX,en_US} $PKG/usr/share/i18n/locales
mkdir install
cp -a $CWD/slack-desc.glibc-i18n install/slack-desc
makepkg -l y -c n $TMP/glibc-i18n-$VERSION-$SLACKWARE_ARCH-$BUILD.txz
@@ -490,6 +390,7 @@ mkdir install
cp -a $CWD/slack-desc.glibc-solibs install/slack-desc
cp -a $CWD/doinst.sh-glibc-solibs install/doinst.sh
fix_doinst
+sed -i "s/@@VERSION@@/$VERSION/g" install/doinst.sh
# Ditch links:
find . -type l -exec rm {} \;
# Build the package:
@@ -509,6 +410,7 @@ mkdir install
cp -a $CWD/slack-desc.glibc install/slack-desc
cp -a $CWD/doinst.sh-glibc install/doinst.sh
fix_doinst
+sed -i "s/@@VERSION@@/$VERSION/g" install/doinst.sh
( cd lib${LIBDIRSUFFIX}
mkdir incoming
mv *so* incoming