+# TODO:
+# - look at locale fixes/updates in bugzilla
+# - no more chicken-egg problem (postshell is no more dynamically linked with libc), remove SONAME symlinks? see files section.
+# [OLD]
+# - localedb-gen man pages(?)
+# - math/{test-fenv,test-tgmath,test-float,test-ifloat},
+# debug/backtrace-tst(SEGV) fail on alpha
#
# Conditional build:
# min_kernel (default is 2.6.12)
%bcond_without localedb # don't build localedb-all (is time consuming)
%bcond_with cross # build using crossgcc (without libgcc_eh)
#
-# TODO:
-# - look at locale fixes/updates in bugzilla
-# - no more chicken-egg problem (postshell is no more dynamically linked with libc), remove SONAME symlinks? see files section.
-# - unbash /usr/bin/ldd (and other scripts?)
-# [OLD]
-# - localedb-gen man pages(?)
-# - math/{test-fenv,test-tgmath,test-float,test-ifloat},
-# debug/backtrace-tst(SEGV) fail on alpha
%{!?min_kernel:%global min_kernel 2.6.12}
%ifarch sparc64
Summary(tr.UTF-8): GNU libc
Summary(uk.UTF-8): GNU libc версії
Name: glibc
-Version: 2.10.1
-Release: 5
+Version: 2.12
+Release: 3
Epoch: 6
License: LGPL v2.1+
Group: Libraries
-Source0: ftp://sources.redhat.com/pub/glibc/releases/%{name}-%{version}.tar.bz2
-# Source0-md5: ee71dedf724dc775e4efec9b823ed3be
-Source1: ftp://sources.redhat.com/pub/glibc/releases/%{name}-libidn-%{version}.tar.bz2
-# Source1-md5: 8ef88560ec608d5923ee05eb5f0e15ea
+# Source0: ftp://sources.redhat.com/pub/glibc/releases/%{name}-%{version}.tar.bz2
+Source0: %{name}-%{version}.tar.bz2
+# Source0-md5: 37526f1337474dffcf9cda5292957c24
Source2: nscd.init
Source3: nscd.sysconfig
Source4: nscd.logrotate
Patch23: %{name}-pt_pax.patch
Patch25: %{name}-cv_gnu89_inline.patch
Patch26: %{name}-posix-sh.patch
+Patch27: %{name}-i686.patch
+Patch28: %{name}-dl.patch
URL: http://www.gnu.org/software/libc/
%{?with_selinux:BuildRequires: audit-libs-devel}
BuildRequires: autoconf
%endif
%{!?with_cross:BuildRequires: dietlibc-static}
BuildRequires: gawk
-BuildRequires: gcc >= 5:3.4
+BuildRequires: gcc >= 6:4.3
%{?with_memusage:BuildRequires: gd-devel >= 2.0.1}
BuildRequires: gettext-devel >= 0.10.36
%{?with_selinux:BuildRequires: libselinux-devel >= 1.18}
BuildRequires: linux-libc-headers >= %{llh_version}
-BuildRequires: nss-devel >= 3.12.3
+BuildRequires: nss-devel >= 1:3.12.3
BuildRequires: perl-base
BuildRequires: rpm-build >= 4.3-0.20030610.28
-BuildRequires: rpm-perlprov
BuildRequires: rpmbuild(macros) >= 1.413
BuildRequires: sed >= 4.0.5
BuildRequires: texinfo
%endif
Suggests: localedb
Suggests: tzdata
-Conflicts: SysVinit < 2.86-11
Conflicts: %{name}-misc < %{epoch}:%{version}-%{release}
+Conflicts: SysVinit < 2.86-11
Conflicts: kernel < %{min_kernel}
Conflicts: kernel24
Conflicts: kernel24-smp
# avoid -D_FORTIFY_SOURCE=X
%define filterout_cpp -D_FORTIFY_SOURCE=[0-9]+
+%define specflags_sparcv9 -mcpu=ultrasparc -mvis -fcall-used-g6
%define specflags_sparc64 -mcpu=ultrasparc -mvis -fcall-used-g6
# ld.so needs not to be stripped to work
# Xen-friendly glibc
%define specflags_ia32 -mno-tls-direct-seg-refs
-%define specflags_x86_64 -mno-tls-direct-seg-refs
-%define specflags_amd64 -mno-tls-direct-seg-refs
+%define specflags_x86_64 -mno-tls-direct-seg-refs -fasynchronous-unwind-tables
+%define specflags_amd64 -mno-tls-direct-seg-refs -fasynchronous-unwind-tables
%define specflags_ia32e -mno-tls-direct-seg-refs
# we don't want perl dependency in glibc-devel
%package libcrypt
Summary: glibc library for crypt(3)
+Summary(pl.UTF-8): Biblioteka glibc z funkcją crypt(3)
Group: Libraries
Requires: %{name} = %{epoch}:%{version}-%{release}
+Provides: crypt(blowfish)
%description libcrypt
glibc library for crypt(3).
+%description libcrypt -l pl.UTF-8
+Biblioteka glibc z funkcją crypt(3).
+
%package -n ldconfig
Summary: Create shared library cache and maintains symlinks
Summary(de.UTF-8): Erstellt ein shared library cache und verwaltet symlinks
Zabawka.
%prep
-%setup -q -a1
-ln -s glibc-libidn-%{version} libidn
+%setup -q
#%patch1 -p1
%patch2 -p1
%patch3 -p1
%patch23 -p0
%patch25 -p1
%patch26 -p1
+%patch27 -p1
+%patch28 -p1
# cleanup backups after patching
find '(' -name '*~' -o -name '*.orig' ')' -print0 | xargs -0 -r -l512 rm -f
chmod +x scripts/cpp
# i786 (aka pentium4) hack
-cd nptl/sysdeps/i386 && ln -s i686 i786 && cd -
-cd nptl/sysdeps/unix/sysv/linux/i386 && ln -s i686 i786 && cd -
+ln -s i686 nptl/sysdeps/i386/i786
+ln -s i686 nptl/sysdeps/unix/sysv/linux/i386/i786
%build
# glibc has its own way to remove PLT relocations. / H. J. Lu.
--with%{!?with_selinux:out}-selinux \
--with-tls \
--enable-add-ons=nptl,libidn \
+%if "%{pld_release}" != "ti"
--enable-nss-crypt \
+%endif
--enable-stackguard-randomization \
--enable-hidden-plt \
--enable-bind-now \
%install
rm -rf $RPM_BUILD_ROOT
-install -d $RPM_BUILD_ROOT{/etc/{default,logrotate.d,rc.d/init.d,sysconfig},%{_mandir}/man{3,8},/var/log,/var/{lib,run}/nscd}
+install -d $RPM_BUILD_ROOT{/etc/{default,logrotate.d,rc.d/init.d,sysconfig},%{_mandir}/man{3,8},/var/log,/var/{lib,run}/nscd,/var/cache/ldconfig}
cd builddir
env LANGUAGE=C LC_ALL=C \
math/libm_pic.a libm.map
resolv/libresolv_pic.a"
-install $PICFILES $RPM_BUILD_ROOT%{_libdir}
-install elf/soinit.os $RPM_BUILD_ROOT%{_libdir}/soinit.o
-install elf/sofini.os $RPM_BUILD_ROOT%{_libdir}/sofini.o
+install -p $PICFILES $RPM_BUILD_ROOT%{_libdir}
+install -p elf/soinit.os $RPM_BUILD_ROOT%{_libdir}/soinit.o
+install -p elf/sofini.os $RPM_BUILD_ROOT%{_libdir}/sofini.o
# Include %{_libdir}/gconv/gconv-modules.cache
./iconv/iconvconfig --nostdlib --prefix=$RPM_BUILD_ROOT %{_libdir}/gconv -o $RPM_BUILD_ROOT%{_libdir}/gconv/gconv-modules.cache
cd ..
%if %{without cross}
-install glibc-postinst $RPM_BUILD_ROOT/sbin
+install -p glibc-postinst $RPM_BUILD_ROOT/sbin
%endif
%{?with_memusage:mv -f $RPM_BUILD_ROOT/%{_lib}/libmemusage.so $RPM_BUILD_ROOT%{_libdir}}
# linking nss modules directly is not supported
rm -f $RPM_BUILD_ROOT%{_libdir}/libnss_*.so
-install %{SOURCE2} $RPM_BUILD_ROOT/etc/rc.d/init.d/nscd
-install %{SOURCE3} $RPM_BUILD_ROOT/etc/sysconfig/nscd
-install %{SOURCE4} $RPM_BUILD_ROOT/etc/logrotate.d/nscd
-install nscd/nscd.conf $RPM_BUILD_ROOT%{_sysconfdir}
+install -p %{SOURCE2} $RPM_BUILD_ROOT/etc/rc.d/init.d/nscd
+cp -a %{SOURCE3} $RPM_BUILD_ROOT/etc/sysconfig/nscd
+cp -a %{SOURCE4} $RPM_BUILD_ROOT/etc/logrotate.d/nscd
+cp -a nscd/nscd.conf $RPM_BUILD_ROOT%{_sysconfdir}
+cp -a posix/gai.conf $RPM_BUILD_ROOT%{_sysconfdir}
+cp -a nis/nss $RPM_BUILD_ROOT/etc/default/nss
sed -e 's#\([ \t]\)db\([ \t]\)#\1#g' nss/nsswitch.conf > $RPM_BUILD_ROOT%{_sysconfdir}/nsswitch.conf
-install posix/gai.conf $RPM_BUILD_ROOT%{_sysconfdir}
-install nis/nss $RPM_BUILD_ROOT/etc/default/nss
bzip2 -dc %{SOURCE5} | tar xf - -C $RPM_BUILD_ROOT%{_mandir}
-> $RPM_BUILD_ROOT%{_sysconfdir}/ld.so.cache
+: > $RPM_BUILD_ROOT%{_sysconfdir}/ld.so.cache
install -d $RPM_BUILD_ROOT%{_sysconfdir}/ld.so.conf.d
echo 'include ld.so.conf.d/*.conf' > $RPM_BUILD_ROOT%{_sysconfdir}/ld.so.conf
+: > $RPM_BUILD_ROOT/var/cache/ldconfig/aux-cache
+
rm -f $RPM_BUILD_ROOT%{_mandir}/hu/man7/man.7
-:> $RPM_BUILD_ROOT/var/log/nscd
-:> $RPM_BUILD_ROOT/var/lib/nscd/passwd
-:> $RPM_BUILD_ROOT/var/lib/nscd/group
-:> $RPM_BUILD_ROOT/var/lib/nscd/hosts
+# doesn't fit with out tzdata concept and configure.in is stupid assuming bash
+# is first posix compatible shell making this script depend on bash.
+rm -f $RPM_BUILD_ROOT%{_bindir}/tzselect
+rm -f $RPM_BUILD_ROOT%{_mandir}/man8/tzselect.8*
+rm -f $RPM_BUILD_ROOT%{_mandir}/*/man8/tzselect.8*
+
+: > $RPM_BUILD_ROOT/var/log/nscd
+: > $RPM_BUILD_ROOT/var/lib/nscd/passwd
+: > $RPM_BUILD_ROOT/var/lib/nscd/group
+: > $RPM_BUILD_ROOT/var/lib/nscd/hosts
rm -rf documentation
install -d documentation
for f in ANNOUNCE ChangeLog DESIGN-{barrier,condvar,rwlock,sem}.txt TODO{,-kernel,-testing}; do
- cp -f nptl/$f documentation/$f.nptl
+ cp -af nptl/$f documentation/$f.nptl
done
-cp -f crypt/README.ufc-crypt ChangeLog* documentation
+cp -af crypt/README.ufc-crypt ChangeLog* documentation
# Collect locale files and mark them with %%lang()
echo '%defattr(644,root,root,755)' > glibc.lang
# NOTES:
# Languages not supported by glibc locales, but usable via $LANGUAGE:
# ang - Old English (gtk+, gnome)
+# ca@valencia (gtk+, gnome; as ca_ES@valencia in FileZilla; locale exists in Debian)
# tlh - Klingon (bzflag)
# and variants:
# sr@ije (use LANGUAGE=sr_ME@ije/sr_RS@ije) (gnome)
#
# To be added when they become supported by glibc:
-# az_IR (gtk+)
-# ca@valencia (gtk+2; as ca_ES@valencia in FileZilla; locale exists in Debian)
-# co (vlc)
-# dv (iso-codes)
-# gn (gn_BR in gnome, maybe gn_PY)
-# la (deluge, gnome, others; patch needed, won't be officially supported)
-# my (gaim)
+# az_IR (gtk+2)
+# bal (newt,pessulus)
+# bem (alacarte)
+# ckb [or ku_IQ/ku_IR] (vlc,miro)
+# co (vlc)
+# gn (gn_BR in gnome, maybe gn_PY)
# bal (newt)
# haw (iso-codes)
# ilo (kudzu)
+# io (gtk+2, gnome, alacarte)
+# jv (gmpc)
# kok (iso-codes)
+# lb (geany,miro)
# man (ccsm; incorrectly named md)
# mus (bluez-gnome)
-# sco (gnomad2)
+# sco (gnomad2, picard)
+# swg (sim)
# syr (iso-codes)
-# ven (kalarm)
+# tet (vlc)
#
# bn is used for bn_BD or bn_IN? Assume bn_IN as nothing for bn_BD appeared
# till now.
# sv tr zh_CN zh_TW
#
for i in aa aa@saaho af am an ang ar ar_TN as ast az be@alternative be@latin \
- bg bn bn_IN br bs byn crh csb cy de_AT de_CH dz en en@boldquot en@quot \
- en_AU en_CA en_NZ en_US eo es_AR es_CL es_CO es_CR es_DO es_EC es_GT \
- es_HN es_MX es_NI es_PA es_PE es_PR es_SV es_UY es_VE et eu fa fil fo \
- fr_BE fr_CA fr_CH fur fy ga gd gez gu gv ha he hi hsb hy ia id ig ik \
- is it_CH iu ka kk kl km kn ks ku kw ky lg li lo lt lv mai mg mi mk ml \
- mn mr ms mt nds ne nl_BE nn nr nso oc om or pa pap ps pt rm ro sa sc \
- se si sid sl so sq sr sr@Latn sr@ije sr@latin ss st sw ta te tg th ti \
- tig tk tl tlh tn ts tt ug uk ur uz uz@cyrillic ve vi wa wal wo xh yi \
- yo zh_HK zu; do
+ bg bn bn_IN br bs byn ca@valencia crh csb cy de_AT de_CH dv dz en \
+ en@boldquot en@quot en_AU en_CA en_NZ en_US eo es_AR es_CL es_CO es_CR \
+ es_DO es_EC es_GT es_HN es_MX es_NI es_PA es_PE es_PR es_SV es_UY \
+ es_VE et eu fa fil fo fr_BE fr_CA fr_CH fur fy ga gd gez gu gv ha he \
+ hi hne hsb hy ia id ig ik is it_CH iu ka kk kl km kn ks ku kw ky la \
+ lg li lo lt lv mai mg mi mk ml mn mr ms mt my nds ne nl_BE nn nr nso \
+ oc om or pa pap ps pt ps rm ro sa sc se si sid sl so sq sr sr@Latn \
+ sr@ije sr@latin ss st sw ta te tg th ti tig tk tl tlh tn ts tt ug uk \
+ ur uz uz@cyrillic ve vi wa wal wo xh yi yo zh_HK zu; do
if [ ! -d $RPM_BUILD_ROOT%{_datadir}/locale/$i/LC_MESSAGES ]; then
install -d $RPM_BUILD_ROOT%{_datadir}/locale/$i/LC_MESSAGES
# use lang() tags with ll_CC@variant (stripping charset and @quot|@boldquot)
- lang=`echo $i | sed -e 's/@quot\>\|@boldquot\>//'`
+ lang=$(echo $i | sed -e 's/@quot\>\|@boldquot\>//')
echo "%lang($lang) %{_datadir}/locale/$i" >> glibc.lang
fi
done
# LC_TIME category, used for localized date formats (at least by coreutils)
-for i in af be bg ca cs da de el es et eu fi fr ga gl hu id it ja ko lt ms nb nl pl \
- pt pt_BR ru rw sk sl sv tr uk vi zh_CN zh_TW; do
+for i in af be bg ca cs da de el en es et eu fi fr ga gl hu id it ja ko lg lt \
+ ms nb nl pl pt pt_BR ro ru rw sk sl sv tr uk vi zh_CN zh_TW; do
if [ ! -d $RPM_BUILD_ROOT%{_datadir}/locale/$i ]; then
echo "%lang($lang) %{_datadir}/locale/$i" >> glibc.lang
fi
%post memusage -p /sbin/ldconfig
%postun memusage -p /sbin/ldconfig
+%post -n localedb-src
+SUPPORTED_LOCALES=
+[ -f /etc/sysconfig/i18n ] && . /etc/sysconfig/i18n
+[ -f /etc/sysconfig/localedb ] && . /etc/sysconfig/localedb
+if [ "$SUPPORTED_LOCALES" ]; then
+ localedb-gen || :
+fi
+
%post devel -p /sbin/postshell
-/usr/sbin/fix-info-dir -c %{_infodir}
%useradd -P nscd -u 144 -r -d /tmp -s /bin/false -c "Name Service Cache Daemon" -g nscd nscd
%post -n nscd
+if [ ! -f /var/log/nscd ]; then
+ umask 027
+ touch /var/log/nscd
+ chown root:root /var/log/nscd
+ chmod 640 /var/log/nscd
+fi
/sbin/chkconfig --add nscd
-touch /var/log/nscd
-chmod 000 /var/log/nscd
-chown root:root /var/log/nscd
-chmod 640 /var/log/nscd
-%service nscd restart "nscd daemon"
+%service nscd restart "Name Service Cache Daemon"
%preun -n nscd
if [ "$1" = "0" ]; then
%defattr(644,root,root,755)
%attr(755,root,root) %{_bindir}/catchsegv
%attr(755,root,root) %{_bindir}/ldd
-%attr(755,root,root) %{_bindir}/tzselect
%{_mandir}/man1/catchsegv.1*
%{_mandir}/man1/ldd.1*
-%{_mandir}/man8/tzselect.8*
%lang(es) %{_mandir}/es/man1/ldd.1*
-%lang(es) %{_mandir}/es/man8/tzselect.8*
%lang(fi) %{_mandir}/fi/man1/ldd.1*
%lang(fr) %{_mandir}/fr/man1/ldd.1*
-%lang(fr) %{_mandir}/fr/man8/tzselect.8*
%lang(hu) %{_mandir}/hu/man1/ldd.1*
-%lang(it) %{_mandir}/it/man8/tzselect.8*
%lang(ja) %{_mandir}/ja/man1/ldd.1*
-%lang(ja) %{_mandir}/ja/man8/tzselect.8*
%lang(ko) %{_mandir}/ko/man1/ldd.1*
-%lang(ko) %{_mandir}/ko/man8/tzselect.8*
%lang(pl) %{_mandir}/pl/man1/ldd.1*
-%lang(pt) %{_mandir}/pt/man8/tzselect.8*
%lang(ru) %{_mandir}/ru/man1/ldd.1*
-%lang(ru) %{_mandir}/ru/man8/tzselect.8*
%lang(tr) %{_mandir}/tr/man1/ldd.1*
%lang(zh_CN) %{_mandir}/zh_CN/man1/ldd.1*
-%lang(zh_CN) %{_mandir}/zh_CN/man8/tzselect.8*
%files libcrypt
%defattr(644,root,root,755)
%attr(755,root,root) /%{_lib}/libcrypt-%{version}.so
%ifarch alpha
-%ghost %attr(755,root,root) /%{_lib}/libcrypt.so.1.1
+%attr(755,root,root) %ghost /%{_lib}/libcrypt.so.1.1
%else
-%ghost %attr(755,root,root) /%{_lib}/libcrypt.so.1
+%attr(755,root,root) %ghost /%{_lib}/libcrypt.so.1
%endif
%files -n ldconfig
%lang(pl) %{_mandir}/pl/man8/ldconfig.8*
%lang(pt) %{_mandir}/pt/man8/ldconfig.8*
%lang(ru) %{_mandir}/ru/man8/ldconfig.8*
+%dir %attr(700,root,root) /var/cache/ldconfig
+%attr(600,root,root) %ghost /var/cache/ldconfig/aux-cache
%files -n nss_compat
%defattr(644,root,root,755)