# _without_fp build without frame pointer (pass --enable-omitfp)
# _without_memusage build without memusage
#
+# _with_kernheaders use "kernheaders" as user-space kernel headers
+# (instead of copying from kernel-headers 2.4.x)
+# [broken at the moment]
+#
# TODO:
# - localedb-gen man pages(?)
# - serious problem with upgrade (changing zoneinfo/posix/* dirs into symlinks)
# are there any other solutions than revert???
#
+# WARNING:
+# posix zoneinfo dir removed, /etc/rc.d/init.d/timezone must be changed
+# in order to use this version!
+#
+%bcond_with nptl # enable new posix thread library (req: kernel 2.5/2.6)
+ # instead of linuxthreads
+
+%if %{with nptl}
+%define min_kernel 2.5.65
+%endif
+
%{!?min_kernel:%define min_kernel 2.2.0}
-%define rel 2.13
+%define rel 2.19
Summary: GNU libc
Summary(de): GNU libc
Summary(fr): GNU libc
# borrowed from util-linux
Source7: sln.8
Source8: %{name}-localedb-gen
+# Kernel headers for userspace
+Source9: %{name}-kernheaders.tar.bz2
+# Source9-md5: b48fec281f854627d6b8781cd1dd72d2
+Source10: ftp://people.redhat.com/drepper/nptl/nptl-0.57.tar.bz2
+# Source10-md5: 82472303a736b53812906f97548e54f1
Patch0: %{name}-info.patch
Patch2: %{name}-pld.patch
Patch3: %{name}-crypt-blowfish.patch
Patch18: %{name}-lthrds_noomit.patch
Patch19: %{name}-no_opt_override.patch
Patch20: %{name}-gcc33.patch
+#Patch21: %{name}-sanity.patch
+Patch22: %{name}-secureexec.patch
+Patch23: %{name}-kernel_includes.patch
+Patch24: %{name}-sparc64_pause.patch
+Patch25: %{name}-linuxthreads.patch
URL: http://www.gnu.org/software/libc/
BuildRequires: binutils >= 2.13.90.0.2
BuildRequires: gcc >= 3.2
%{!?_without_memusage:BuildRequires: gd-devel >= 2.0.1}
BuildRequires: gettext-devel >= 0.10.36
-%{!?_without_dist_kernel:BuildRequires: glibc-kernheaders}
+%if 0%{!?_with_kernheaders:1}
+%{!?_without_dist_kernel:BuildRequires: kernel-headers < 2.5}
+%endif
BuildRequires: perl-base
BuildRequires: rpm-build >= 4.0.2-46
BuildRequires: rpm-perlprov
Conflicts: kernel < %{min_kernel}
Conflicts: ld.so < 1.9.9-10
Conflicts: man-pages < 1.43
+Conflicts: rc-scripts < 0.3.1-13
Conflicts: rpm < 4.1
%define debugcflags -O1 -g
+%ifarch sparc64
+%define _without_memusage 1
+%define specflags_sparc64 -mvis -fcall-used-g6
+%endif
%description
Contains the standard libraries that are used by multiple programs on
Without these, a Linux system will not function. It also contains
national language (locale) support and timezone databases.
+Can be used on: Linux kernel >= %{min_kernel}.
+
%description -l de
Enthält die Standard-Libraries, die von verschiedenen Programmen im
System benutzt werden. Um Festplatten- und Arbeitsspeicher zu sparen
Ferner enthält es den Support für die verschiedenen Sprachgregionen
(locale) und die Zeitzonen-Datenbank.
+Can be used on: Linux kernel >= %{min_kernel}.
+
%description -l fr
Contient les bibliothèques standards utilisées par de nombreux
programmes du système. Afin d'économiser l'espace disque et mémoire,
langues nationales (locales) et les bases de données des zones
horaires.
+Can be used on: Linux kernel >= %{min_kernel}.
+
%description -l ja
glibc
¥Ñ¥Ã¥±¡¼¥¸¤Ï¥·¥¹¥Æ¥à¾å¤ÎÊ£¿ô¤Î¥×¥í¥°¥é¥à¤Ç»È¤ï¤ì¤ëɸ½à¥é¥¤¥Ö¥é¥ê¤ò
¥Ñ¥Ã¥±¡¼¥¸¤Ï¤Þ¤¿ÃÏ°è¸À¸ì (locale) ¥µ¥Ý¡¼¥È¤È¥¿¥¤¥à¥¾¡¼¥ó¥Ç¡¼¥¿¥Ù¡¼¥¹
¥µ¥Ý¡¼¥È¤ò¤Õ¤¯¤ß¤Þ¤¹¡£
+Can be used on: Linux kernel >= %{min_kernel}.
+
%description -l pl
W pakiecie znajduj± siê podstawowe biblioteki, u¿ywane przez ró¿ne
programy w Twoim systemie. U¿ywanie przez programy bibliotek z tego
Znajduj± siê tutaj równie¿ definicje ró¿nych informacji dla wielu
jêzyków (locale) oraz definicje stref czasowych.
+Przeznaczony dla j±dra Linux >= %{min_kernel}.
+
%description -l ru
óÏÄÅÒÖÉÔ ÓÔÁÎÄÁÒÔÎÙÅ ÂÉÂÌÉÏÔÅËÉ, ÉÓÐÏÌØÚÕÅÍÙÅ ÍÎÏÇÏÞÉÓÌÅÎÎÙÍÉ
ÐÒÏÇÒÁÍÍÁÍÉ × ÓÉÓÔÅÍÅ. äÌÑ ÔÏÇÏ, ÞÔÏÂÙ ÓÏÈÒÁÎÉÔØ ÄÉÓËÏ×ÏÅ ÐÒÏÓÔÒÁÎÓÔ×Ï
ÐÁËÅÔ ÓÏÄÅÒÖÉÔ ÐÏÄÄÅÒÖËÕ ÎÁÃÉÏÎÁÌØÎÙÈ ÑÚÙËÏ× (locale) É ÂÁÚÙ ÄÁÎÎÙÈ
×ÒÅÍÅÎÎÙÈ ÚÏÎ (timezone databases).
+Can be used on: Linux kernel >= %{min_kernel}.
+
%description -l tr
Bu paket, birçok programýn kullandýðý standart kitaplýklarý içerir.
Disk alaný ve bellek kullanýmýný azaltmak ve ayný zamanda güncelleme
içerir. Bu kitaplýklar olmadan Linux sistemi çalýþmayacaktýr. Yerel
dil desteði ve zaman dilimi veri tabaný da bu pakette yer alýr.
+Can be used on: Linux kernel >= %{min_kernel}.
+
%description -l uk
í¦ÓÔÉÔØ ÓÔÁÎÄÁÒÔΦ ¦Â̦ÏÔÅËÉ, ËÏÔÒ¦ ×ÉËÏÒÉÓÔÏ×ÕÀÔØÓÑ ÞÉÓÌÅÎÎÉÍÉ
ÐÒÏÇÒÁÍÁÍÉ × ÓÉÓÔÅͦ. äÌÑ ÔÏÇÏ, ÝÏ ÚÂÅÒÅÇÔÉ ÄÉÓËÏ×ÉÊ ÐÒÏÓÔ¦Ò ÔÁ
ôÁËÏÖ ÐÁËÅÔ Í¦ÓÔÉÔØ Ð¦ÄÔÒÉÍËÕ ÎÁæÏÎÁÌØÎÉÈ ÍÏ× (locale) ÔÁ ÂÁÚÉ ÄÁÎÎÉÈ
ÞÁÓÏ×ÉÈ ÚÏÎ (timezone databases).
+Can be used on: Linux kernel >= %{min_kernel}.
+
%package devel
Summary: Additional libraries required to compile
Summary(de): Weitere Libraries zum Kompilieren
%package pic
Summary: glibc PIC archive
-Summary(pl): archiwum PIC glibc
+Summary(pl): Archiwum PIC glibc
Release: %{rel}
Group: Development/Libraries/Libc
Requires: %{name}-devel = %{epoch}:%{version}
Modu³ tradycyjnych plikowych baz danych NSS glibc.
%package -n nss_hesiod
-Summary: Hesiod NSS glibc module
+Summary: hesiod NSS glibc module
Summary(pl): Modu³ hesiod NSS glibc
Release: %{rel}
Group: Base
http://sources.redhat.com/ml/libc-alpha/2000-12/msg00068.html
%prep
-%setup -q -a 1
+%setup -q -a 9
+%if %{with nptl}
+%{__tar} xfj %{SOURCE10}
+%else
+%{__tar} xfj %{SOURCE1}
+%endif
%patch0 -p1
%patch2 -p1
%patch3 -p1
%patch4 -p1
-%patch5 -p1
-%patch6 -p1
%patch9 -p1
%patch10 -p1
#%%patch11 -p1
%patch14 -p1
%patch16 -p1
%patch17 -p1
-%patch18 -p1
# don't know, if it is good idea, for brave ones
#%patch19 -p1
%patch20 -p1
+#%patch21 -p1
+%patch22 -p1
+%{!?_with_kernheaders:%patch23}
+%patch24 -p1
+# updated - lt
+
+%if %{without nptl}
+%patch5 -p1
+%patch6 -p1
+%patch25 -p1
+%patch18 -p1
+%endif
chmod +x scripts/cpp
# standardize name
mv -f localedata/locales/{lug_UG,lg_UG}
+#make proper symlink for asm in headers
+#cd usr/include
+#%ifarch %{ix86}
+#ln -s asm-i386 asm
+#%endif
+#cd ../..
+
%build
+# Prepare kernel headers
+TARGET_CPU=$(echo "%{_target_cpu}" | sed -e s/i.86/i386/ -e s/sun4u/sparc64/ \
+ -e s/athlon/i386/ -e s/arm.*/arm/ \
+ -e s/sa110/arm/ -e s/s390x/s390/)
+_headers_dir=`pwd`/usr/include; export _headers_dir;
+(cd $_headers_dir && ln -s asm-${TARGET_CPU} asm)
+
+# Build glibc
mkdir builddir
cd builddir
# avoid stripping ld.so by -s in rpmldflags
LDFLAGS=" " ; export LDFLAGS
+#CFLAGS="-I $_headers_dir %{rpmcflags}"; export CFLAGS
../%configure \
- --enable-add-ons=linuxthreads \
--enable-kernel="%{?kernel:%{kernel}}%{!?kernel:%{min_kernel}}" \
--enable-profile \
- --%{?_without_fp:en}%{!?_without_fp:dis}able-omitfp
-# --with-headers=%{_kernelsrcdir}/include
+ --%{?_without_fp:en}%{!?_without_fp:dis}able-omitfp \
+%if %{with nptl}
+ CPPFLAGS="-I%{_kernelsrcdir}/include" \
+ --with-headers=%{_kernelsrcdir}/include
+ --enable-add-ons=nptl \
+%else
+ --enable-add-ons=linuxthreads \
+%if 0%{!?_with_kernheaders:1}
+ CPPFLAGS="-I%{_kernelsrcdir}/include" \
+ --with-headers=%{_kernelsrcdir}/include
+%else
+ CPPFLAGS="-I$_headers_dir" \
+ --with-headers=$_headers_dir
+%endif
+%endif
# problem compiling with --enable-bounded (must be reported to libc-alpha)
%{__make} %{?parallelmkflags}
rm -rf $RPM_BUILD_ROOT
install -d $RPM_BUILD_ROOT{/etc/{logrotate.d,rc.d/init.d,sysconfig},%{_mandir}/man{3,8},/var/log}
+_headers_dir=`pwd`/usr/include; export _headers_dir;
+
cd builddir
env LANGUAGE=C LC_ALL=C \
install elf/postshell $RPM_BUILD_ROOT/sbin
-%{!?_without_memusage:mv -f $RPM_BUILD_ROOT/lib/libmemusage.so $RPM_BUILD_ROOT%{_libdir}}
-mv -f $RPM_BUILD_ROOT/lib/libpcprofile.so $RPM_BUILD_ROOT%{_libdir}
+%{!?_without_memusage:mv -f $RPM_BUILD_ROOT/lib*/libmemusage.so $RPM_BUILD_ROOT%{_libdir}}
+mv -f $RPM_BUILD_ROOT/lib*/libpcprofile.so $RPM_BUILD_ROOT%{_libdir}
%{__make} -C ../linuxthreads/man
install ../linuxthreads/man/*.3thr $RPM_BUILD_ROOT%{_mandir}/man3
rm -rf $RPM_BUILD_ROOT%{_datadir}/zoneinfo/{localtime,posixtime,posixrules,posix/*}
-cd $RPM_BUILD_ROOT%{_datadir}/zoneinfo
-for i in [A-Z]*; do
- ln -s ../$i posix
-done
-cd -
+#cd $RPM_BUILD_ROOT%{_datadir}/zoneinfo
+#for i in [A-Z]*; do
+# ln -s ../$i posix
+#done
+#cd -
ln -sf %{_sysconfdir}/localtime $RPM_BUILD_ROOT%{_datadir}/zoneinfo/localtime
ln -sf localtime $RPM_BUILD_ROOT%{_datadir}/zoneinfo/posixtime
cp -f ../ChangeLog* ../documentation
-rm -f $RPM_BUILD_ROOT%{_libdir}/libnss_*.so
+rm -f $RPM_BUILD_ROOT%{_libdir}*/libnss_*.so
# strip ld.so with --strip-debug only (other ELFs are stripped by rpm):
-%{!?debug:strip -g -R .comment -R .note $RPM_BUILD_ROOT/lib/ld-%{version}.so}
+%{!?debug:strip -g -R .comment -R .note $RPM_BUILD_ROOT/lib*/ld-%{version}.so}
# Collect locale files and mark them with %%lang()
rm -f ../glibc.lang
echo '%defattr(644,root,root,755)' > ../glibc.lang
-for i in $RPM_BUILD_ROOT%{_datadir}/locale/* $RPM_BUILD_ROOT%{_libdir}/locale/* ; do
+for i in $RPM_BUILD_ROOT%{_datadir}/locale/* $RPM_BUILD_ROOT%{_libdir}*/locale/* ; do
if [ -d $i ]; then
lang=`echo $i | sed -e 's/.*locale\///' -e 's/\/.*//'`
twochar=1
# list of long %%lang values we do support
- for j in de_AT de_BE de_CH de_LU es_AR ja_JP.SJIS ko_KR.utf8 pt_BR \
+ for j in de_AT de_BE de_CH de_LU es_AR es_MX ja_JP.SJIS ko_KR.utf8 pt_BR \
zh_CN zh_CN.gbk zh_HK zh_TW ; do
if [ $j = "$lang" ]; then
twochar=
done
# XXX: to be added when become supported by glibc
# am,bn,ml (present in sources, but incomplete and disabled) (used by GNOME)
-# kn,mn,ia (used by GNOME)
+# ia,kn,li,mn,sr@Latn (used by GNOME)
+# note: GNOME2 uses sr as cyrillic!
# nso,ss,ven,xh,zu (used by KDE)
-for i in af ar az be bg br bs cy de_AT el en eo es_AR et eu fa fi ga gr he hi \
- hr hu id is ja_JP.SJIS ka lg lt lv mk ms mt nn pt ro ru se sl sq sr \
- sr@cyrillic ta tg th uk uz vi wa yi zh_CN ; do
+for i in af ar az be bg br bs cy de_AT el en en_AU eo es_AR es_MX et eu fa fi \
+ ga gr he hi hr hu id is ja_JP.SJIS ka lg lt lv mk ms mt nn pt ro ru \
+ se sl sq sr sr@cyrillic ta tg th uk uz vi wa yi zh_CN ; do
if [ ! -d $RPM_BUILD_ROOT%{_datadir}/locale/$i/LC_MESSAGES ]; then
install -d $RPM_BUILD_ROOT%{_datadir}/locale/$i/LC_MESSAGES
lang=`echo $i | sed -e 's/_.*//'`
rm -f $RPM_BUILD_ROOT%{_mandir}/diff.*
rm -f $RPM_BUILD_ROOT%{_infodir}/dir
# we don't support kernel without ptys support
-rm -f $RPM_BUILD_ROOT%{_libdir}/pt_chown
+rm -f $RPM_BUILD_ROOT%{_libdir}*/pt_chown
# copy actual kernel headers for glibc-kernel-headers
-#%{__mkdir} -p $RPM_BUILD_ROOT%{_includedir}
-#%{__cp} -Hr %{_kernelsrcdir}/include/{asm,linux} $RPM_BUILD_ROOT%{_includedir}
-#if [ -d %{_kernelsrcdir}/include/asm-generic ] ; then
-# %{__cp} -Hr %{_kernelsrcdir}/include/asm-generic $RPM_BUILD_ROOT%{_includedir}
-#fi
+%if 0%{!?_with_kernheaders:1}
+%{__mkdir} -p $RPM_BUILD_ROOT%{_includedir}
+%{__cp} -Hr %{_kernelsrcdir}/include/{asm,linux} $RPM_BUILD_ROOT%{_includedir}
+if [ -d %{_kernelsrcdir}/include/asm-generic ] ; then
+ %{__cp} -Hr %{_kernelsrcdir}/include/asm-generic $RPM_BUILD_ROOT%{_includedir}
+fi
+%else
+%{__cp} -Hr $_headers_dir/{asm,linux} $RPM_BUILD_ROOT%{_includedir}
+%endif
%clean
rm -rf $RPM_BUILD_ROOT
%postun devel
[ ! -x /usr/sbin/fix-info-dir ] || /usr/sbin/fix-info-dir -c %{_infodir} >/dev/null 2>&1
-#%pre kernel-headers
+%pre kernel-headers
# useful if these are symlinks
-#if [ -h %{_includedir}/asm ]; then rm -f %{_includedir}/asm; fi
-#if [ -h %{_includedir}/linux ]; then rm -f %{_includedir}/linux; fi
+if [ -h %{_includedir}/asm ]; then rm -f %{_includedir}/asm; fi
+if [ -h %{_includedir}/linux ]; then rm -f %{_includedir}/linux; fi
%post -n nscd
/sbin/chkconfig --add nscd
-touch /var/log/nscd && (chmod 000 /var/log/nscd; chown root.root /var/log/nscd; chmod 640 /var/log/nscd)
+touch /var/log/nscd
+chmod 000 /var/log/nscd
+chown root:root /var/log/nscd
+chmod 640 /var/log/nscd
if [ -f /var/lock/subsys/nscd ]; then
/etc/rc.d/init.d/nscd restart 1>&2
else
%attr(755,root,root) %{_sbindir}/zdump
%attr(755,root,root) %{_sbindir}/zic
-%attr(755,root,root) /lib/ld-*
-%attr(755,root,root) /lib/libanl*
-%attr(755,root,root) /lib/libdl*
-%attr(755,root,root) /lib/libnsl*
-%attr(755,root,root) /lib/lib[BScmprtu]*
+%attr(755,root,root) /lib*/ld-*
+%attr(755,root,root) /lib*/libanl*
+%attr(755,root,root) /lib*/libdl*
+%attr(755,root,root) /lib*/libnsl*
+%attr(755,root,root) /lib*/lib[BScmprtu]*
%dir %{_datadir}/locale
%{_datadir}/locale/locale.alias
%{_datadir}/zoneinfo
%exclude %{_datadir}/zoneinfo/right
-%dir %{_libdir}/locale
+%dir %{_libdir}*/locale
%{_mandir}/man1/[!lsg]*
%{_mandir}/man1/getent.1*
#%files -n nss_dns
%defattr(644,root,root,755)
-%attr(755,root,root) /lib/libnss_dns*.so*
+%attr(755,root,root) /lib*/libnss_dns*.so*
#%files -n nss_files
%defattr(644,root,root,755)
-%attr(755,root,root) /lib/libnss_files*.so*
+%attr(755,root,root) /lib*/libnss_files*.so*
%files zoneinfo_right
%defattr(644,root,root,755)
%files -n nss_compat
%defattr(644,root,root,755)
-%attr(755,root,root) /lib/libnss_compat*.so*
+%attr(755,root,root) /lib*/libnss_compat*.so*
%files -n nss_hesiod
%defattr(644,root,root,755)
-%attr(755,root,root) /lib/libnss_hesiod*.so*
+%attr(755,root,root) /lib*/libnss_hesiod*.so*
%files -n nss_nis
%defattr(644,root,root,755)
-%attr(755,root,root) /lib/libnss_nis.so.*
-%attr(755,root,root) /lib/libnss_nis-*.so
+%attr(755,root,root) /lib*/libnss_nis.so.*
+%attr(755,root,root) /lib*/libnss_nis-*.so
%files -n nss_nisplus
%defattr(644,root,root,755)
-%attr(755,root,root) /lib/libnss_nisplus*.so*
+%attr(755,root,root) /lib*/libnss_nisplus*.so*
%if %{?_without_memusage:0}%{!?_without_memusage:1}
%files memusage
%defattr(644,root,root,755)
%attr(755,root,root) %{_bindir}/memusage*
-%attr(755,root,root) %{_libdir}/libmemusage*
+%attr(755,root,root) %{_libdir}*/libmemusage*
%endif
%files devel
%{_infodir}/libc.info*
-%attr(755,root,root) %{_libdir}/lib[!m]*.so
-%attr(755,root,root) %{_libdir}/libm.so
-%attr(755,root,root) %{_libdir}/*crt*.o
-%{_libdir}/libbsd-compat.a
-%{_libdir}/libbsd.a
-%{_libdir}/libc_nonshared.a
-%{_libdir}/libg.a
-%{_libdir}/libieee.a
-%{_libdir}/libpthread_nonshared.a
-%{_libdir}/librpcsvc.a
+%attr(755,root,root) %{_libdir}*/lib[!m]*.so
+%attr(755,root,root) %{_libdir}*/libm.so
+%attr(755,root,root) %{_libdir}*/*crt*.o
+%{_libdir}*/libbsd-compat.a
+%{_libdir}*/libbsd.a
+%{_libdir}*/libc_nonshared.a
+%{_libdir}*/libg.a
+%{_libdir}*/libieee.a
+%{_libdir}*/libpthread_nonshared.a
+%{_libdir}*/librpcsvc.a
%{_mandir}/man1/getconf*
%{_mandir}/man1/sprof*
%lang(pt_BR) %{_mandir}/pt_BR/man3/*
%lang(ru) %{_mandir}/ru/man3/*
-#%files kernel-headers
-#%defattr(644,root,root,755)
-#%{_includedir}/asm*
-#%{_includedir}/linux
+%files kernel-headers
+%defattr(644,root,root,755)
+%{_includedir}/asm*
+%{_includedir}/linux
%files -n nscd
%defattr(644,root,root,755)
%files localedb-all
%defattr(644,root,root,755)
-%{_libdir}/locale/locale-archive
+%{_libdir}*/locale/locale-archive
%files -n iconv
%defattr(644,root,root,755)
%attr(755,root,root) %{_sbindir}/iconvconfig
-%dir %{_libdir}/gconv
-%{_libdir}/gconv/gconv-modules
-%attr(755,root,root) %{_libdir}/gconv/*.so
+%dir %{_libdir}*/gconv
+%{_libdir}*/gconv/gconv-modules
+%attr(755,root,root) %{_libdir}*/gconv/*.so
%files static
%defattr(644,root,root,755)
-%{_libdir}/libanl.a
-%{_libdir}/libBrokenLocale.a
-%{_libdir}/libc.a
-%{_libdir}/libcrypt.a
-%{_libdir}/libdl.a
-%{_libdir}/libm.a
-%{_libdir}/libmcheck.a
-%{_libdir}/libnsl.a
-%{_libdir}/libpthread.a
-%{_libdir}/libresolv.a
-%{_libdir}/librt.a
-%{_libdir}/libutil.a
+%{_libdir}*/libanl.a
+%{_libdir}*/libBrokenLocale.a
+%{_libdir}*/libc.a
+%{_libdir}*/libcrypt.a
+%{_libdir}*/libdl.a
+%{_libdir}*/libm.a
+%{_libdir}*/libmcheck.a
+%{_libdir}*/libnsl.a
+%{_libdir}*/libpthread.a
+%{_libdir}*/libresolv.a
+%{_libdir}*/librt.a
+%{_libdir}*/libutil.a
%files profile
%defattr(644,root,root,755)
-%{_libdir}/lib*_p.a
+%{_libdir}*/lib*_p.a
%files pic
%defattr(644,root,root,755)
-%{_libdir}/lib*_pic.a
-%{_libdir}/lib*.map
-%{_libdir}/soinit.o
-%{_libdir}/sofini.o
+%{_libdir}*/lib*_pic.a
+%{_libdir}*/lib*.map
+%{_libdir}*/soinit.o
+%{_libdir}*/sofini.o