###############################################################################
name = glibc
-version = 2.15
+version = 2.19
release = 1
-thisapp = %{name}-2.15-a316c1f
maintainer = Michael Tremer <michael.tremer@ipfire.org>
groups = System/Base
Linux system will not function.
end
-# The version of the ports addon.
-ports_version = 2.15-8a70b2d
-
source_dl = http://ftp.gnu.org/gnu/glibc/
-sources = %{thisapp}.tar.gz glibc-ports-%{ports_version}.tar.gz
+sources = %{thisapp}.tar.xz
build
# Optimize glibc for kernel
OPTIMIZED_KERNEL = 2.6.32
requires
- #audit-devel
+ audit-devel
autoconf
automake
- #gettext
- kernel-headers>=%{OPTIMIZED_KERNEL}
+ gettext
+ kernel-headers >= %{OPTIMIZED_KERNEL}
libcap-devel
libselinux-devel
- #nss-devel
texinfo
end
export QUALITY_AGENT_RPATH_ALLOW_ORIGIN=yes
- prepare
- # Extract source tarballs.
- %{MACRO_EXTRACT_TARBALL}
-
- # Create link for ports addon.
- ln -svf ../glibc-ports-%{ports_version} ports
-
- # Apply the patches.
- %{MACRO_PATCHES}
-
+ prepare_cmds
# In the vi_VN.TCVN locale, bash enters an infinite loop at startup. It is
# unknown whether this is a bash bug or a Glibc problem. Disable
# installation of this locale in order to avoid the problem.
# Build nscd with -fstack-protector-all, instead of -fstack-protector:
sed -e "s/fstack-protector/&-all/" -i nscd/Makefile
- cat %{DIR_SOURCE}/glibc-stack_chk_fail.c > debug/stack_chk_fail.c
-
# Use gnu hash style
sed -i Makeconfig \
-e "s/-Wl,--hash-style=both/-Wl,--hash-style=gnu -Wl,-O1/"
- # stdlib/tst-putenvmod is not linked against libc.
- sed -i stdlib/Makefile \
- -e "s/^CFLAGS-tst-putenvmod.c.*/& -fno-stack-protector/g"
-
- # stdio-common/bug22 hits timeout.
- sed -i stdio-common/bug22.c \
- -e "s/#define TIMEOUT.*/#define TIMEOUT 300/"
-
- # These tests don't work or need more investigation:
- sed -i dlfcn/Makefile -e "s/default //g"
-
- sed -i nptl/Makefile \
- -e "s/tst-mutex5 //g" \
- -e "s/tst-mutex5a //g" \
- -e "s/tst-cond11 //g" \
- -e "s/tst-rwlock6 //g" \
- -e "s/tst-rwlock7 //g" \
- -e "s/tst-sem5 //g" \
- -e "s/tst-cancelx4 //g" \
- -e "s/tst-cancelx5 //g" \
- -e "s/tst-cancelx10 //g" \
- -e "s/tst-cancelx18 //g" \
- -e "s/tst-signal1 //g"
-
- # These are known to fail on x86:
- sed -i rt/Makefile \
- -e "s/tst-cpuclock1 //g" \
- -e "s/tst-cpuclock2 //g"
-
- sed -i elf/Makefile \
- -e "s/tst-tls1 //g" \
- -e "s/tst-tls1-static //g" \
- -e "s/tst-tls2 //g" \
- -e "s/tst-tls2-static //g" \
- -e "s/tst-tls3 //g" \
- -e "s/resolvfail //g" \
- -e "s/constload1 //g" \
- -e "s/order //g" \
- -e "s/lateglobal //g" \
- -e "s/dblload //g" \
- -e "s/dblunload //g" \
- -e "s/reldep6 //g" \
- -e "s/circleload1 //g" \
- -e "s/tst-global1 //g" \
- -e "s/tst-audit2 //g" \
- -e "s/check-localplt //g" \
- -e "s/check-localplt.out$$//g"
-
- sed -i signal/Makefile \
- -e "s/tst-sigset2//g"
+ # http://sourceware.org/ml/libc-ports/2011-09/msg00018.html
+ sed -e "s/PIC/SHARED/g" -i ports/sysdeps/arm/{set,__long}jmp.S
end
configure_options = \
--enable-kernel=%{OPTIMIZED_KERNEL} \
--with-selinux \
--disable-werror \
- --enable-bind-now
-# --enable-nss-crypt
+ --enable-bind-now \
+ --enable-obsolete-rpc \
+ --with-bugurl=http://bugtracker.ipfire.org \
+ --enable-lock-elision
if "%{DISTRO_ARCH}" == "armv5tel"
# Disable hardware FP for ARM.
CFLAGS="%{CFLAGS}" CXXFLAGS="%{CXXFLAGS}"
end
- #test
- # cd $(DIR_SRC)/glibc-build
- # make check TIMEOUTFACTOR=16 \
- # CFLAGS="%{CFLAGS} -fno-stack-protector -U_FORTIFY_SOURCE" \
- # CXXFLAGS="%{CXXFLAGS} -fno-stack-protector -U_FORTIFY_SOURCE"
- #end
-
install
cd %{DIR_SRC}/glibc-build
make install install_root=%{BUILDROOT}
# This would install all locales that are supported
make localedata/install-locales install_root=%{BUILDROOT}
- # Timezone
- cp -v --remove-destination %{BUILDROOT}/usr/share/zoneinfo/GMT \
- %{BUILDROOT}/etc/localtime
- rm -rf %{BUILDROOT}/usr/share/zoneinfo
-
# Configuration
cp -vf %{DIR_SOURCE}/{ld.so.conf,nsswitch.conf} %{BUILDROOT}/etc
mkdir -pv %{BUILDROOT}/etc/{default,ld.so.conf.d}
install -p -m644 %{DIR_APP}/nis/nss %{BUILDROOT}/etc/default/nss
+ if [ "%{DISTRO_ARCH}" = "armv7hl" ]; then
+ ln -svf ld-linux-armhf.so.3 %{BUILDROOT}/lib/ld-linux.so.3
+ fi
+
# Remove unused binaries
rm -vf %{BUILDROOT}/sbin/sln \
%{BUILDROOT}/usr/bin/rpcinfo
# Move some libs to correct place
mv -v %{BUILDROOT}/%{lib}/lib{memusage,pcprofile}.so %{BUILDROOT}%{libdir}
+
+ # Fix library permissions.
+ chmod 755 %{BUILDROOT}%{libdir}/lib*.so*
+
+ # rquota.x and rquota.h are now provided by quota
+ rm -vf %{BUILDROOT}%{includedir}/rpcsvc/rquota.[hx]
end
keep_libraries
packages
package glibc
- requires = glibc-common=%{thisver}
+ requires = glibc-common = %{thisver}
+
+ if "%{DISTRO_ARCH}" == "armv7hl"
+ provides += ld-linux.so.3
+ provides += ld-linux.so.3(GLIBC_2.4)
+ provides += ld-linux.so.3(GLIBC_PRIVATE)
+ end
end
package glibc-common
# XXX description and summary are missing
- requires = tzdata
+ requires
+ glibc = %{thisver}
+ tzdata
+ end
files
/usr/bin
/usr/sbin
/usr/share
+ /usr/lib/locale
!/usr/share/zoneinfo
end
end
end
group = Development/Libraries
- requires = glibc-headers=%{thisver}
+ requires
+ glibc = %{thisver}
+ glibc-headers = %{thisver}
+ end
- files = %{libdir}/*.a %{libdir}/*.o
+ files
+ %{includedir}
+ %{libdir}/*.a
+ %{libdir}/*.o
+ end
end
package glibc-headers
use the standard C libraries.
end
- requires = kernel-headers
+ requires
+ glibc = %{thisver}
+ kernel-headers >= %{OPTIMIZED_KERNEL}
+ end
files
/usr/include