# - math/{test-fenv,test-tgmath,test-float,test-ifloat}, debug/backtrace-tst(SEGV) fail on alpha
#
# Conditional build:
-# min_kernel (default is 3.4.0 except for x86/x86_64 where 3.2.0 suffices)
+# min_kernel (default is 3.2.0 with arch specific values x32 (3.4.0) aarch64 (3.7.0)
%bcond_without memusage # don't build memusage utility
%bcond_without selinux # without SELinux support (in nscd)
%bcond_with tests # perform "make test"
%bcond_without localedb # don't build localedb-all (is time consuming)
%bcond_with cross # make a cross build, skip native programs
-%bcond_without nss_crypt # disable crypt features based on Mozilla NSS library
%bcond_with bash_nls # use bash NLS in shell scripts (ldd, sotruss); restores /bin/bash dep
%bcond_without cet # Intel Control-flow Enforcement Technology (CET)
-%bcond_with crypt # don't build obsolete libcrypt
#
-%ifarch %{ix86} %{x8664}
-%{!?min_kernel:%global min_kernel 3.2.0}
-%else
+%ifarch aarch64
+%{!?min_kernel:%global min_kernel 3.7.0}
+%endif
+%ifarch x32
%{!?min_kernel:%global min_kernel 3.4.0}
%endif
+%ifnarch aarch64 x32
+%{!?min_kernel:%global min_kernel 3.2.0}
+%endif
%ifarch sparc64
%undefine with_memusage
%endif
-%ifnarch i686 %{x8664} x32
+%ifnarch %{x8664}
%undefine with_cet
%endif
%ifnarch %{arm}
%define with_static_pie 1
%endif
-%define core_version 2.35
+%define core_version 2.39
%define llh_version 7:2.6.32.1-1
Summary: GNU libc
Summary(uk.UTF-8): GNU libc версії
Name: glibc
Version: %{core_version}
-Release: 8
+Release: 5
Epoch: 6
License: LGPL v2.1+
Group: Libraries
Source0: https://ftp.gnu.org/gnu/glibc/%{name}-%{version}.tar.xz
-# Source0-md5: dd571c67d85d89d7f60b854a4e207423
+# Source0-md5: be81e87f72b5ea2c0ffe2bedfeb680c6
Source2: nscd.init
Source3: nscd.sysconfig
Source4: nscd.logrotate
Source9: nscd.tmpfiles
# use branch.sh to update glibc-git.patch
Patch0: glibc-git.patch
-# Patch0-md5: 74a4b37b13ce8c8cc15b9f05398c58cd
+# Patch0-md5: aa35f19b5a327e476cbd7763267c9195
# against GNU TP (libc domain)
#Patch1: %{name}-pl.po-update.patch
Patch2: %{name}-pld.patch
-Patch3: %{name}-crypt-blowfish.patch
+
Patch4: %{name}-no-bash-nls.patch
-Patch5: nss_crash.patch
Patch6: %{name}-paths.patch
Patch10: %{name}-info.patch
Patch23: %{name}-pt_pax.patch
Patch30: glibc-rh1124987.patch
+Patch31: arm-widevine-compat.patch
URL: http://www.gnu.org/software/libc/
%{?with_selinux:BuildRequires: audit-libs-devel}
-BuildRequires: autoconf >= 2.69
+BuildRequires: autoconf >= 2.71
BuildRequires: automake
-BuildRequires: binutils >= 2:2.29
+BuildRequires: binutils >= 4:2.29
BuildRequires: bison >= 2.7
%{!?with_cross:BuildRequires: dietlibc-static}
BuildRequires: gawk >= 3.1.2
+%ifarch aarch64
+BuildRequires: gcc >= 6:10.1.0
+%else
%if %{with cet}
BuildRequires: gcc >= 6:8.0
%else
BuildRequires: gcc >= 6:6.2
%endif
+%endif
%{?with_memusage:BuildRequires: gd-devel >= 2.0.1}
BuildRequires: gettext-tools >= 0.10.36
%{?with_selinux:BuildRequires: libcap-devel}
%{?with_selinux:BuildRequires: libselinux-devel >= 1.18}
BuildRequires: linux-libc-headers >= %{llh_version}
BuildRequires: make >= 1:4.0
-%{?with_nss_crypt:BuildRequires: nss-devel >= 1:3.15.1-2}
BuildRequires: perl-base
BuildRequires: python3 >= 1:3.4
BuildRequires: python3-modules >= 1:3.4
Suggests: tzdata
Conflicts: %{name}-misc < %{epoch}:%{version}-%{release}
Conflicts: SysVinit < 2.86-11
-Conflicts: kernel < %{min_kernel}
+Conflicts: kernel < 3:%{min_kernel}
Conflicts: kernel24
Conflicts: kernel24-smp
Conflicts: ld.so < 1.9.9-10
Conflicts: rpm < 4.1
Conflicts: util-linux < 2.35.1-2
Conflicts: xorg-driver-video-nvidia-libs < 1:295.33
-ExclusiveArch: i486 i586 i686 pentium3 pentium4 athlon %{x8664} x32 ia64 alpha s390 s390x sparc sparc64 sparcv9 ppc ppc64 armv5tel armv6hl armv7hl armv7hnl aarch64
+ExclusiveArch: i486 i586 i686 pentium3 pentium4 athlon %{x8664} x32 alpha s390 s390x sparc sparc64 sparcv9 ppc ppc64 armv5tel armv6hl armv7hl armv7hnl aarch64
BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
# errno, ps_*, __resp, __h_errno symbols
-%define skip_post_check_so libm.so.6 libc_malloc_debug.so.0 libcrypt.so.1 libthread_db.so.1 libresolv.so.2 libnss_db.so.2 libnss_compat.so.2 libnss_hesiod.so.2 libnsl.so.1 librt.so.1
+%define skip_post_check_so libm.so.6 libc_malloc_debug.so.0 libthread_db.so.1 libresolv.so.2 libnss_db.so.2 libnss_compat.so.2 libnss_hesiod.so.2 libnsl.so.1 librt.so.1
# avoid -s here (ld.so must not be stripped to allow any program debugging)
%define filterout_ld (-Wl,)?-[sS] (-Wl,)?--strip.*
%description misc -l pl.UTF-8
Narzędzia i dane używane przez glibc.
-%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: %{name}-libcrypt(%{_target_cpu}) = %{epoch}:%{version}-%{release}
-%ifarch %{ix86}
-Provides: %{name}-libcrypt(ix86) = %{epoch}:%{version}-%{release}
-%endif
-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
%description -n nss_db -l pl.UTF-8
Moduł NSS glibc wykorzystujący haszowaną bazę danych klucz-wartość.
-%package -n nss_dns
-Summary: BIND NSS glibc module
-Summary(es.UTF-8): Módulo BIND NSS de glibc
-Summary(pl.UTF-8): Moduł BIND NSS glibc
-Group: Base
-Requires: %{name} = %{epoch}:%{version}-%{release}
-
-%description -n nss_dns
-BIND NSS glibc module.
-
-%description -n nss_dns -l es.UTF-8
-Módulo BIND NSS de glibc.
-
-%description -n nss_dns -l pl.UTF-8
-Moduł BIND NSS glibc.
-
-%package -n nss_files
-Summary: Traditional files databases NSS glibc module
-Summary(es.UTF-8): Módulo de tradicionales bases de datos en ficheros para glibc
-Summary(pl.UTF-8): Moduł tradycyjnych plikowych baz danych NSS glibc
-Group: Base
-Requires: %{name} = %{epoch}:%{version}-%{release}
-
-%description -n nss_files
-Traditional files databases NSS glibc module.
-
-%description -n nss_files -l es.UTF-8
-Módulo de tradicionales bases de datos en ficheros para glibc.
-
-%description -n nss_files -l pl.UTF-8
-Moduł tradycyjnych plikowych baz danych NSS glibc.
-
%package -n nss_hesiod
Summary: hesiod NSS glibc module
Summary(es.UTF-8): Módulo hesiod NSS de glibc
Requires: %{name} = %{epoch}:%{version}-%{release}
Requires: %{name}-devel-utils = %{epoch}:%{version}-%{release}
Requires: %{name}-headers = %{epoch}:%{version}-%{release}
-%if %{with crypt}
-Requires: %{name}-libcrypt(%{_target_cpu}) = %{epoch}:%{version}-%{release}
-%else
Requires: libxcrypt-devel >= 4.0.0
-%endif
Provides: %{name}-devel(%{_target_cpu}) = %{epoch}:%{version}-%{release}
%ifarch %{ix86}
Provides: %{name}-devel(ix86) = %{epoch}:%{version}-%{release}
Summary(uk.UTF-8): Статичні бібліотеки glibc
Group: Development/Libraries
Requires: %{name}-devel = %{epoch}:%{version}-%{release}
-%{!?with_crypt:Requires: libxcrypt-static >= 4.0.0}
+Requires: libxcrypt-static >= 4.0.0
Provides: %{name}-static(%{_target_cpu}) = %{epoch}:%{version}-%{release}
%ifarch %{ix86}
Provides: %{name}-static(ix86) = %{epoch}:%{version}-%{release}
%patch0 -p1
%patch2 -p1
-%patch3 -p1
+
%{!?with_bash_nls:%patch4 -p1}
-%patch5 -p1
%patch6 -p1
%patch23 -p0
%patch30 -p1
+%ifarch %{arm} aarch64
+%patch31 -p1
+%endif
# cleanup backups after patching
find '(' -name '*~' -o -name '*.orig' ')' -print0 | xargs -0 -r -l512 rm -f
../%configure \
%if %{with cet}
--enable-cet \
-%endif
-%if %{without crypt}
- --disable-crypt \
%endif
--enable-bind-now \
- --enable-experimental-malloc \
--enable-hidden-plt \
--enable-kernel="%{min_kernel}" \
- --enable-nss-crypt%{!?with_nss_crypt:=no} \
--enable-obsolete-nsl \
--enable-profile \
--enable-stack-protector=strong \
--enable-stackguard-randomization \
- --enable-tunables \
--with-binutils=$(pwd)/alt-tools \
--with-bugurl=http://bugs.pld-linux.org/ \
--with-headers=%{_includedir} \
%{__mv} $RPM_BUILD_ROOT/%{_lib}/libpcprofile.so $RPM_BUILD_ROOT%{_libdir}
# make symlinks across top-level directories absolute
-for l in BrokenLocale anl %{?with_crypt:crypt} c_malloc_debug\
-%ifarch %{x8664} x32
+for l in BrokenLocale anl c_malloc_debug\
+%ifarch %{x8664} x32 aarch64
mvec \
%endif
nss_compat nss_db nss_hesiod resolv thread_db; do
for f in DESIGN-systemtap-probes.txt TODO{,-kernel,-testing}; do
cp -af nptl/$f documentation/$f.nptl
done
-cp -af crypt/README.ufc-crypt ChangeLog* documentation
+cp -af ChangeLog* documentation
# Collect locale files and mark them with %%lang()
echo '%defattr(644,root,root,755)' > glibc.lang
# haw (iso-codes, stellarium)
# hrx (stellarium)
# hye (xfce)
-# ie (xfce, cinnamon)
+# ie (GNOME, xfce, cinnamon)
# ilo (kudzu, libosinfo, libreport)
# io (alacarte, gtk+2, gnome, iso-codes)
# jam (iso-codes)
# jv (avant-window-navigator, gmpc, kdesudo, mate, cinnamon)
# ki (iso-codes)
# kok@latin (inkscape)
-# kmr (vlc)
+# kmr (iso-codes, vlc)
# ksw (cinnamon)
# ku_IQ (mate)
# kv (iso-codes)
# kw@kkcor, kw@uccor (libosinfo - currently empty) - add as supported variants when non-empty?
# man (ccsm; incorrectly named md)
# mni@beng[ali] (inkscape)
-# mo (iso-codes)
+# mo (cinnamon, iso-codes)
# mus (bluez-gnome)
# na (iso-codes)
# nah (iso-codes, mate)
# nv (iso-codes)
# pi (iso-codes)
# pms (deluge, mate-tweak)
+# ro_MD (iso-codes)
# rue (cinnamon)
# sat@deva[nagari] (inkscape)
# sco (gnomad2, mate, picard, stellarium, cinnamon)
# son (gtkspell3, iso-codes)
# su (terminator)
# swg (sim)
-# syr (iso-codes)
# tet (vlc)
# tw (libosinfo)
+# tzm (iso-codes)
# vec (mate-applet-indicator)
# wba (libosinfo)
-# zgh (cinnamon, xapps)
#
# To be removed (after fixing packages still using it):
# sr@Latn (use sr@latin instead)
# aa=aa_ER
# ab=ab_GE
# ak=ak_GH
+# as=as_IN
# anp=anp_IN
# ar=common? (AE, BH, DZ, EG, IQ, JO, KW, LB, LY, MA, OM, QA, SA, SD, SY, TN, YE)
+# ay=ay_PE
# az=az_AZ
# ber=ber_DZ? (or common for DZ, MA?)
# bn=bn_BD
# ln=ln_CD
# lo=lo_LA
# mjw=mjw_IN
+# nan=nan_TW
# nds=nds_DE
# nl=nl_NL
# om=om_ET
# sd=sd_IN
# sd@devanagari=sd_IN@devanagari
# shn=shn_MM
+# sm=sm_WS
# so=so_SO
# sr=sr_RS [cyrillic]
# sr@latin=sr_RS@latin
# tpi=tpi_PG
# tr=tr_TR
# ur=ur_PK (?)
+# zgh=zgh_MA
# zh: no short code used (use zh_CN, zh_HK, zh_SG[not included yet], zh_TW)
#
# 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 ru rw sk
# sv tr zh_CN zh_TW
#
-for i in aa aa@saaho ab af ak am an ang anp ar ar_TN as ast az az_IR \
+for i in aa aa@saaho ab af ak am an ang anp ar ar_TN as ast az az_IR ay \
be@latin be@tarask bem ber bg bho bn bn_IN bo br brx bs byn \
ca@valencia ce chr ckb cmn crh csb cv cy de_AT de_CH doi dv dz \
en en@boldquot en@quot en@shaw en_AU en_CA en_IE en_NZ en_US en_ZA eo \
et eu fa ff fil fo fr_BE fr_CA fr_CH fur fy ga gd gez gu gv \
ha he hi hne ht hsb hy ia id ig ik is it_CH iu \
ka kab kg kk kl km kn kok ks ks@devanagari ku kw ky la lb lg li ln lo lt lv \
- mai mg mhr mi mjw mk ml mn mni mr ms mt my nds ne nl_BE nn nr nso oc om or os \
+ mai mg mhr mi mjw mk ml mn mni mr ms mt my nan nds ne nl_BE nn nr nso oc om or os \
pa pap ps pt ps quz rm ro \
- sa sat sc sd sd@devanagari se shn si sid sl so sq \
- sr sr@Latn sr@ije sr@ijekavian sr@ijekavianlatin sr@latin ss st sw szl \
+ sa sat sc sd sd@devanagari se shn si sid sl sm so sq \
+ sr sr@Latn sr@ije sr@ijekavian sr@ijekavianlatin sr@latin ss st sw syr szl \
ta te tg th ti tig tk tl tlh tn tpi ts tt tt@iqtelif \
- ug uk ur uz uz@cyrillic ve vi wa wal wo xh yi yo zh_HK zu; do
+ ug uk ur uz uz@cyrillic ve vi wa wal wo xh yi yo zgh zh_HK zu; do
if [ ! -d $RPM_BUILD_ROOT%{_localedir}/$i/LC_MESSAGES ]; then
install -d $RPM_BUILD_ROOT%{_localedir}/$i/LC_MESSAGES
# use lang() tags with ll_CC@variant (stripping charset and @quot|@boldquot)
done
# LC_TIME category, used for localized date formats (at least by coreutils)
-for i in af be bg ca cs da de el en eo es et eu fi fr ga gl hr hu ia id it ja kk ko lg lt \
- ms nb nl pl pt pt_BR ro ru rw sk sl sr sv tr uk vi zh_CN zh_TW; do
+for i in af be bg ca cs da de el en eo es et eu fi fr ga gl hr hu ia id it ja ka kk ko lg lt \
+ ms nb nl pl pt pt_BR ro ru rw sk sl sr sv ta tr uk vi zh_CN zh_TW; do
if [ ! -d $RPM_BUILD_ROOT%{_localedir}/$i ]; then
echo "%lang($lang) %{_localedir}/$i" >> glibc.lang
fi
%{__rm} $RPM_BUILD_ROOT%{_mandir}/pl/man3/{alphasort,cfgetispeed,cfgetospeed,cfmakeraw,cfsetispeed,cfsetospeed,closelog,dn_comp,dn_expand,fscanf}.3
%{__rm} $RPM_BUILD_ROOT%{_mandir}/tr/man3/{encrypt_r,setkey,setkey_r}.3
-%if %{without crypt}
%{__rm} $RPM_BUILD_ROOT%{_mandir}{,/ja}/man3/crypt{,_r}.3
%{__rm} $RPM_BUILD_ROOT%{_mandir}/{de,es,fr,pl,pt,ru,tr}/man3/crypt.3
-%endif
%clean
rm -rf $RPM_BUILD_ROOT
-/bin/cp -an %{_libdir}/locale/locale-archive %{_prefix}/lib/locale/locale-archive
%endif
-%post libcrypt -p /sbin/ldconfig
-%postun libcrypt -p /sbin/ldconfig
-
%post memusage -p /sbin/ldconfig
%postun memusage -p /sbin/ldconfig
%ifarch %{ix86} sparc sparcv9 sparc64 alpha sh
%attr(755,root,root) /%{_lib}/ld-linux.so.2
%endif
-%ifarch ia64
-%attr(755,root,root) /%{_lib}/ld-linux-ia64.so.2
-%endif
%ifarch %{x8664}
%attr(755,root,root) /%{_lib}/ld-linux-x86-64.so.2
%endif
%ifarch armv6hl armv7hl armv7hnl
%attr(755,root,root) /lib/ld-linux-armhf.so.3
%endif
-%ifnarch %{ix86} sparc sparcv9 sparc64 alpha sh ia64 %{x8664} x32 ppc64 s390x %{arm} aarch64
+%ifnarch %{ix86} sparc sparcv9 sparc64 alpha sh %{x8664} x32 ppc64 s390x %{arm} aarch64
%attr(755,root,root) /%{_lib}/ld.so.1
%endif
%ifarch alpha
%attr(755,root,root) /%{_lib}/libBrokenLocale.so.1
%endif
%attr(755,root,root) /%{_lib}/libanl.so.1
-%ifarch alpha ia64
+%ifarch alpha
%attr(755,root,root) /%{_lib}/libc.so.6.1
%else
%attr(755,root,root) /%{_lib}/libc.so.6
%else
%attr(755,root,root) /%{_lib}/libdl.so.2
%endif
-%ifarch alpha ia64
+%ifarch alpha
%attr(755,root,root) /%{_lib}/libm.so.6.1
%else
%attr(755,root,root) /%{_lib}/libm.so.6
%endif
-%ifarch %{x8664} x32
+%ifarch %{x8664} x32 aarch64
%attr(755,root,root) /%{_lib}/libmvec.so.1
%endif
%ifarch alpha
%endif
%dir %{_prefix}/lib/locale
-#%files -n nss_dns
-%defattr(644,root,root,755)
%attr(755,root,root) /%{_lib}/libnss_dns.so.2
-
-#%files -n nss_files
-%defattr(644,root,root,755)
%attr(755,root,root) /%{_lib}/libnss_files.so.2
-%defattr(644,root,root,755)
-
%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/nsswitch.conf
%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/gai.conf
%defattr(644,root,root,755)
%attr(755,root,root) %{_bindir}/ldd
%attr(755,root,root) %{_bindir}/pldd
-%ifarch %{ix86} m68k sparc sparcv9
+%ifarch m68k sparc sparcv9
%attr(755,root,root) %{_bindir}/lddlibc4
%endif
%attr(755,root,root) %{_bindir}/sotruss
%lang(zh_CN) %{_mandir}/zh_CN/man1/ldd.1*
%lang(zh_TW) %{_mandir}/zh_TW/man1/ldd.1*
-%if %{with crypt}
-%files libcrypt
-%defattr(644,root,root,755)
-%ifarch alpha
-%attr(755,root,root) /%{_lib}/libcrypt.so.1.1
-%else
-%attr(755,root,root) /%{_lib}/libcrypt.so.1
-%endif
-%endif
-
%files -n ldconfig
%defattr(644,root,root,755)
%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/ld.so.conf
%files devel
%defattr(644,root,root,755)
%attr(755,root,root) %{_libdir}/libBrokenLocale.so
-%{?with_crypt:%attr(755,root,root) %{_libdir}/libcrypt.so}
# for dlopen and not linking
%attr(755,root,root) %{_libdir}/libanl.so
%attr(755,root,root) %{_libdir}/libm.so
-%ifarch %{x8664} x32
+%ifarch %{x8664} x32 aarch64
%attr(755,root,root) %{_libdir}/libmvec.so
%endif
%attr(755,root,root) %{_libdir}/libpcprofile.so
%defattr(644,root,root,755)
%{_libdir}/libBrokenLocale.a
%{_libdir}/libc.a
-%{?with_crypt:%{_libdir}/libcrypt.a}
%{_libdir}/libm.a
%{_libdir}/libmcheck.a
-%ifarch %{x8664} x32
+%ifarch %{x8664} x32 aarch64
%{_libdir}/libm-%{core_version}.a
%{_libdir}/libmvec.a
%endif
%{_libdir}/libBrokenLocale_p.a
%{_libdir}/libanl_p.a
%{_libdir}/libc_p.a
-%{?with_crypt:%{_libdir}/libcrypt_p.a}
%{_libdir}/libdl_p.a
%{_libdir}/libm_p.a
-%ifarch %{x8664} x32
+%ifarch %{x8664} x32 aarch64
%{_libdir}/libmvec_p.a
%endif
%{_libdir}/libpthread_p.a