#
# You can define min_kernel macro by "rpm --define 'min_kernel version'"
-# default is 2.2.0 (no changes up to 2.3.25)
+# default is 2.4.6
#
# Conditional build:
%bcond_without fp # build without frame pointer (pass \--enable-omitfp)
%bcond_with kernelheaders # use headers from kernel-headers instead of
# glibc-kernel-headers (evil, breakage etc., don't use)
%bcond_without dist_kernel # for above, allow non-distribution kernel
-%bcond_with idn # build with included libidn
-%bcond_without tests # do not perform "make test"
+%bcond_with nptl # use nptl instead of linuxthreads
+%bcond_with tls # use tls
+%bcond_with tests # do not perform "make test"
+
#
# TODO:
# - localedb-gen man pages(?)
# posix zoneinfo dir removed, /etc/rc.d/init.d/timezone must be changed
# in order to use this version!
#
-%{!?min_kernel:%global min_kernel 2.4.6}
+
+%{!?min_kernel:%global min_kernel 2.4.6}
+
+%if %{with nptl}
+# it seems that nptl uses cmpxchgl (available since i486) on x86
+%ifarch i486 i586 i686 athlon amd64 ia64 s390 s390x sparcv9 ppc ppc64
+%if "%{min_kernel}" < "2.6.0"
+%global min_kernel 2.6.0
+%endif
+%else
+%undefine with_nptl
+%endif
+%endif
+
+%if %{with tls}
+%ifnarch %{ix86} amd64 ia64 s390 s390x sparc sparcv9 ppc ppc64
+%undefine with_tls
+%endif
+%endif
+
%define gkh_version 7:2.6.0.3
Summary: GNU libc
Summary(de): GNU libc
Summary(uk): GNU libc ×ÅÒÓ¦§ 2.3
Name: glibc
Version: 2.3.3
-Release: 0.1
+Release: 0.20040101.8%{?with_nptl:+nptl}
Epoch: 6
License: LGPL
Group: Libraries
Source7: sln.8
Source8: %{name}-localedb-gen
Patch0: %{name}-info.patch
-Patch1: %{name}-initgroups-overflow.patch
+Patch1: %{name}-pl.po-update.patch
Patch2: %{name}-pld.patch
Patch3: %{name}-crypt-blowfish.patch
-Patch4: %{name}-string2-pointer-arith.patch
-Patch5: %{name}-linuxthreads-lock.patch
-Patch6: %{name}-pthread_create-manpage.patch
-Patch9: %{name}-paths.patch
-Patch10: %{name}-vaargs.patch
-Patch11: %{name}-getaddrinfo-workaround.patch
-Patch12: %{name}-postshell.patch
-Patch14: %{name}-missing-nls.patch
-Patch16: %{name}-java-libc-wait.patch
-Patch18: %{name}-lthrds_noomit.patch
-Patch19: %{name}-no_opt_override.patch
-Patch23: %{name}-kernel_includes.patch
-Patch24: %{name}-includes.patch
-Patch26: %{name}-alpha-fix-as-syntax.patch
-Patch27: %{name}-soinit-EH_FRAME.patch
-Patch30: %{name}-sparc-errno_fix.patch
-Patch31: %{name}-make.patch
+Patch4: %{name}-linuxthreads-lock.patch
+Patch5: %{name}-pthread_create-manpage.patch
+Patch6: %{name}-paths.patch
+Patch7: %{name}-getaddrinfo-workaround.patch
+Patch8: %{name}-postshell.patch
+Patch9: %{name}-missing-nls.patch
+Patch10: %{name}-java-libc-wait.patch
+Patch11: %{name}-lthrds_noomit.patch
+Patch12: %{name}-no_opt_override.patch
+# this is broken (hardcoded /usr/src/linux)
+Patch13: %{name}-kernel_includes.patch
+Patch14: %{name}-includes.patch
+Patch15: %{name}-soinit-EH_FRAME.patch
+Patch16: %{name}-fix-asserts.patch
+Patch17: %{name}-sparc-errno_fix.patch
+Patch18: %{name}-make.patch
+Patch19: %{name}-tests-io-tmp.patch
+Patch20: %{name}-tests-noproc.patch
+Patch21: %{name}-linuxthreads-ppc-fix.patch
+Patch22: %{name}-alpha-sigaction.patch
+Patch23: %{name}-new-charsets.patch
URL: http://www.gnu.org/software/libc/
BuildRequires: automake
BuildRequires: binutils >= 2.13.90.0.2
BuildRequires: rpm-perlprov
BuildRequires: sed >= 4.0.5
BuildRequires: texinfo
+AutoReq: false
PreReq: basesystem
+Requires: glibc-misc = %{epoch}:%{version}-%{release}
Provides: ld.so.2
Provides: ldconfig
Provides: /sbin/ldconfig
Obsoletes: %{name}-common
Obsoletes: %{name}-debug
Obsoletes: ldconfig
-AutoReq: false
-Requires: glibc-misc = %{epoch}:%{version}-%{release}
-BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
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
+BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
%define debugcflags -O1 -g
%ifarch sparc64
Summary: Utilities and data used by glibc
Summary(pl): Narzêdzia i dane u¿ywane przez glibc
Group: Development/Libraries
+AutoReq: false
Requires: %{name} = %{epoch}:%{version}-%{release}
%description misc
%description localedb-all
This package contains locale database for all locales supported by
-glibc. In glibc 2.3.x it's one large file (about 19MB) - if you want
+glibc. In glibc 2.3.x it's one large file (about 27MB) - if you want
something smaller with support for chosen locales only, consider
installing localedb-src and regenerating database using localedb-gen
script (when database is generated, localedb-src can be uninstalled).
%description localedb-all -l es
Este paquete contiene una base de datos de todos los locales soportados
-por glibc. En glibc 2.3.x ése es un fichero grande (aprox. 19 MB) -- si
+por glibc. En glibc 2.3.x ése es un fichero grande (aprox. 27 MB) -- si
prefiere algo más pequeño, sólo con soporte de unos locales elegidos,
considérese instalar localedb-src y regenerar la base de datos usando
el escript localedb-gen (una vez que la base de datos esté creada,
%description localedb-all -l pl
Ten pakiet zawiera bazê danych locale dla wszystkich lokalizacji
obs³ugiwanych przez glibc. W glibc 2.3.x jest to jeden du¿y plik
-(oko³o 19MB); aby mieæ co¶ mniejszego, z obs³ug± tylko wybranych
+(oko³o 27MB); aby mieæ co¶ mniejszego, z obs³ug± tylko wybranych
lokalizacji, nale¿y zainstalowaæ pakiet localedb-src i przegenerowaæ
bazê danych przy u¿yciu skryptu localedb-gen (po wygenerowaniu bazy
pakiet localedb-src mo¿na odinstalowaæ).
Group: Libraries
%ifarch amd64
Provides: glibc = %{epoch}:%{version}-%{release}
+Requires: glibc-misc = %{epoch}:%{version}-%{release}
%else
Requires: %{name} = %{epoch}:%{version}-%{release}
%endif
%description -n %{name}64
-64-bit GNU libc libraries for sparc64 architecture.
+64-bit GNU libc libraries for 64bit architecture.
%description -n %{name}64 -l es
-Bibliotecas GNU libc de 64 bits para la arquitectura sparc64.
+Bibliotecas GNU libc de 64 bits para la arquitectura 64bit.
%description -n %{name}64 -l pl
-Biblioteki 64-bitowe GNU libc dla architektury sparc64.
+Biblioteki 64-bitowe GNU libc dla architektury 64bit.
%package -n %{name}64-devel
Summary: Development files for 64-bit GNU libc libraries
Requires: %{name}-devel = %{epoch}:%{version}-%{release}
%description -n %{name}64-devel
-Development files for 64-bit GNU libc libraries for sparc64
+Development files for 64-bit GNU libc libraries for 64bit
architecture.
%description -n %{name}64-devel -l es
Ficheros de desarrollo para las bibliotecas GNU libc de 64 bits para la
-arquitectura sparc64.
+arquitectura 64bit.
%description -n %{name}64-devel -l pl
Pliki do programowania z u¿yciem 64-bitowych bibliotek GNU libc dla
-architektury sparc64.
+architektury 64bit.
%package -n %{name}64-static
Summary: Static 64-bit GNU libc libraries
%prep
%setup -q -a 1
%patch0 -p1
+%patch1 -p1
%patch2 -p1
%patch3 -p1
%patch4 -p1
%patch5 -p1
%patch6 -p1
+#%%patch7 -p1
+%patch8 -p1
%patch9 -p1
%patch10 -p1
-#%%patch11 -p1
-%patch12 -p1
-%patch14 -p1
+%patch11 -p1
+# don't know, if it is good idea, for brave ones
+#%patch12 -p1
+%{?with_kernelheaders:%patch13}
+%{?!with_kernelheaders:%patch14 -p1}
+%patch15 -p1
%patch16 -p1
+%patch17
%patch18 -p1
-# don't know, if it is good idea, for brave ones
-#%patch19 -p1
-%{?with_kernelheaders:%patch23}
-%{?!with_kernelheaders:%patch24 -p1}
-%patch26 -p1
-%patch27 -p1
-%patch30
-%patch31 -p1
+%patch19 -p1
+%patch20 -p1
+%patch21 -p1
+%patch22 -p1
+%patch23 -p1
chmod +x scripts/cpp
# avoid stripping ld.so by -s in rpmldflags
LDFLAGS=" " ; export LDFLAGS
../%configure \
- --enable-add-ons=linuxthreads \
--enable-kernel="%{min_kernel}" \
- --enable-profile \
--%{!?with_fp:en}%{?with_fp:dis}able-omitfp \
+%if %{with nptl}
+ --enable-add-ons=nptl \
+ --with-tls \
+ --disable-profile \
+%else
+ %{?with_tls:--with-tls} \
+ --enable-add-ons=linuxthreads \
+ --enable-profile \
+%endif
%if %{with kernelheaders}
CPPFLAGS="-I%{_kernelsrcdir}/include" \
- --with-headers=%{_kernelsrcdir}/include
+ --with-headers=%{_kernelsrcdir}/include
%else
CPPFLAGS="-I%{_includedir}" \
- --with-headers=%{_includedir}
+ --with-headers=%{_includedir}
%endif
# problem compiling with --enable-bounded (must be reported to libc-alpha)
%{__make} %{?parallelmkflags}
-%{?with_tests:%{__make} tests}
+%if %{with tests}
+env LANGUAGE=C LC_ALL=C \
+%{__make} tests 2>&1 | awk '
+BEGIN { file = "" }
+{
+ if (($0 ~ /\*\*\* \[.*\.out\] Error/) && (file == "")) {
+ file=$0;
+ gsub(/.*\[/, NIL, file);
+ gsub(/\].*/, NIL, file);
+ }
+ print $0;
+}
+END { if (file != "") { print "ERROR OUTPUT FROM " file; system("cat " file); exit(1); } }'
+%endif
%install
rm -rf $RPM_BUILD_ROOT
mv -f $RPM_BUILD_ROOT/%{_lib}/libpcprofile.so $RPM_BUILD_ROOT%{_libdir}
%endif
+%if %{without nptl}
%{__make} -C ../linuxthreads/man
install ../linuxthreads/man/*.3thr $RPM_BUILD_ROOT%{_mandir}/man3
+%endif
rm -rf $RPM_BUILD_ROOT%{_datadir}/zoneinfo/{localtime,posixtime,posixrules,posix/*}
rm -rf ../documentation
install -d ../documentation
+%if %{without nptl}
cp -f ../linuxthreads/ChangeLog ../documentation/ChangeLog.threads
cp -f ../linuxthreads/Changes ../documentation/Changes.threads
cp -f ../linuxthreads/README ../documentation/README.threads
+%endif
cp -f ../crypt/README.ufc-crypt ../documentation/
cp -f ../ChangeLog* ../documentation
# Collect locale files and mark them with %%lang()
rm -f ../glibc.lang
+# bokmaal has been renamed (no_NO -> nb_NO) in 2.3.3, but not in po
+mv -f $RPM_BUILD_ROOT%{_datadir}/locale/{no,nb}
echo '%defattr(644,root,root,755)' > ../glibc.lang
for i in $RPM_BUILD_ROOT%{_datadir}/locale/* $RPM_BUILD_ROOT%{_libdir}/locale/* ; do
if [ -d $i ]; then
fi
done
# XXX: to be added when become supported by glibc
-# am,bn,ml (present in sources, but incomplete and disabled) (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 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
+# ia,li,sr@Latn (used by GNOME)
+# note: GNOME2 uses sr (and probably uz) as cyrillic!
+# nso,ss,ven (used by KDE)
+# NOTES:
+# bn is used for bn_BD or bn_IN?
+# omitted here - already existing (with libc.mo):
+# be,ca,cs,da,de,el,en_GB,es,fi,fr,gl,hr,hu,it,ja,ko,nb,nl,pl,pt_BR,sk,sv,tr,zh_CN,zh_TW
+for i in af am ar az bg bn br bs cy de_AT en en_AU eo es_AR es_MX et eu fa ga \
+ gr he hi id is ja_JP.SJIS ka kn lg lt lv mk ml mn ms mt nn pt ro ru \
+ se sl sq sr sr@cyrillic ta tg th uk uz vi wa xh yi zu ; 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/_.*//'`
%{_libdir}/librt.a
%{_libdir}/libutil.a
+%if %{without nptl}
%files profile
%defattr(644,root,root,755)
%{_libdir}/lib*_p.a
+%endif
%files pic
%defattr(644,root,root,755)