c070d93
%define glibcsrcdir glibc-2.32.9000-84-ge74b61c09a
Patsy Griffin 58f285e
%define glibcversion 2.32.9000
Siddhesh Poyarekar 5817231
# Pre-release tarballs are pulled in from git using a command that is
Siddhesh Poyarekar 5817231
# effectively:
Siddhesh Poyarekar 5817231
#
Siddhesh Poyarekar 5817231
# git archive HEAD --format=tar --prefix=$(git describe --match 'glibc-*')/ \
Siddhesh Poyarekar 5817231
#	> $(git describe --match 'glibc-*').tar
Siddhesh Poyarekar 5817231
# gzip -9 $(git describe --match 'glibc-*').tar
Siddhesh Poyarekar 5817231
#
Siddhesh Poyarekar 5817231
# glibc_release_url is only defined when we have a release tarball.
3bd5cf3
%{lua: if string.match(rpm.expand("%glibcsrcdir"), "^glibc%-[0-9.]+$") then
3bd5cf3
  rpm.define("glibc_release_url https://ftp.gnu.org/gnu/glibc/") end}
9abcefa
##############################################################################
c57221c
# We support the following options:
Carlos O'Donell 6e8e9f6
# --with/--without,
Carlos O'Donell 6e8e9f6
# * testsuite - Running the testsuite.
Carlos O'Donell 6e8e9f6
# * benchtests - Running and building benchmark subpackage.
Carlos O'Donell 6e8e9f6
# * bootstrap - Bootstrapping the package.
Carlos O'Donell 6e8e9f6
# * werror - Build with -Werror
Carlos O'Donell 6e8e9f6
# * docs - Build with documentation and the required dependencies.
Carlos O'Donell 6e8e9f6
# * valgrind - Run smoke tests with valgrind to verify dynamic loader.
Carlos O'Donell 6e8e9f6
#
Carlos O'Donell 6e8e9f6
# You must always run the testsuite for production builds.
Carlos O'Donell 6e8e9f6
# Default: Always run the testsuite.
Carlos O'Donell 6e8e9f6
%bcond_without testsuite
Carlos O'Donell 6e8e9f6
# Default: Always build the benchtests.
Carlos O'Donell 6e8e9f6
%bcond_without benchtests
Carlos O'Donell 6e8e9f6
# Default: Not bootstrapping.
Carlos O'Donell 6e8e9f6
%bcond_with bootstrap
Carlos O'Donell 6e8e9f6
# Default: Enable using -Werror
Carlos O'Donell 6e8e9f6
%bcond_without werror
Carlos O'Donell 6e8e9f6
# Default: Always build documentation.
Carlos O'Donell 6e8e9f6
%bcond_without docs
Carlos O'Donell 6e8e9f6
b0deb57
# Default: Always run valgrind tests if there is architecture support.
b0deb57
%ifarch %{valgrind_arches}
b0deb57
%bcond_without valgrind
b0deb57
%else
b0deb57
%bcond_with valgrind
b0deb57
%endif
b0deb57
# Restrict %%{valgrind_arches} further in case there are problems with
b0deb57
# the smoke test.
Carlos O'Donell 6e8e9f6
%if %{with valgrind}
b0deb57
%ifarch ppc64 ppc64p7
b0deb57
# The valgrind smoke test does not work on ppc64, ppc64p7 (bug 1273103).
Carlos O'Donell 6e8e9f6
%undefine with_valgrind
Carlos O'Donell 6e8e9f6
%endif
Carlos O'Donell 6e8e9f6
%endif
b0deb57
Carlos O'Donell 6e8e9f6
%if %{with bootstrap}
Carlos O'Donell 6e8e9f6
# Disable benchtests, -Werror, docs, and valgrind if we're bootstrapping
Carlos O'Donell 6e8e9f6
%undefine with_benchtests
Carlos O'Donell 6e8e9f6
%undefine with_werror
Carlos O'Donell 6e8e9f6
%undefine with_docs
Carlos O'Donell 6e8e9f6
%undefine with_valgrind
Siddhesh Poyarekar 5d3d5d4
%endif
Carlos O'Donell b60f740
cc5db6c
# Only some architectures have static PIE support.
a4166cd
%define pie_arches %{ix86} x86_64
cc5db6c
3bef91d
# Build the POWER9 runtime on POWER, but only for downstream.
3bef91d
%ifarch ppc64le
3bef91d
%define buildpower9 0%{?rhel} > 0
3bef91d
%else
3bef91d
%define buildpower9 0
3bef91d
%endif
3bef91d
9abcefa
##############################################################################
9abcefa
# Any architecture/kernel combination that supports running 32-bit and 64-bit
9abcefa
# code in userspace is considered a biarch arch.
7ae647b
%define biarcharches %{ix86} x86_64 s390 s390x
711089d
711089d
# Avoid generating a glibc-headers package on architectures which are
711089d
# not biarch.
711089d
%ifarch %{biarcharches}
711089d
%define need_headers_package 1
eb8a860
%ifarch %{ix86} x86_64
eb8a860
%define headers_package_name glibc-headers-x86
eb8a860
%endif
eb8a860
%ifarch s390 s390x
eb8a860
%define headers_package_name glibc-headers-s390
eb8a860
%endif
711089d
%else
711089d
%define need_headers_package 0
711089d
%endif
711089d
9abcefa
##############################################################################
9abcefa
# If the debug information is split into two packages, the core debuginfo
db303b9
# package and the common debuginfo package then the arch should be listed
9abcefa
# here. If the arch is not listed here then a single core debuginfo package
9abcefa
# will be created for the architecture.
Andreas Schwab 87a7e49
%define debuginfocommonarches %{biarcharches} alpha alphaev6
9abcefa
##############################################################################
9abcefa
# %%package glibc - The GNU C Library (glibc) core package.
9abcefa
##############################################################################
ffc48ad
Summary: The GNU libc libraries
cvsdist c381c23
Name: glibc
Andreas Schwab 237bb90
Version: %{glibcversion}
c070d93
Release: 6%{?dist}
43a2140
43a2140
# In general, GPLv2+ is used by programs, LGPLv2+ is used for
43a2140
# libraries.
43a2140
#
43a2140
# LGPLv2+ with exceptions is used for things that are linked directly
43a2140
# into dynamically linked programs and shared libraries (e.g. crt
43a2140
# files, lib*_nonshared.a).  Historically, this exception also applies
43a2140
# to parts of libio.
43a2140
#
43a2140
# GPLv2+ with exceptions is used for parts of the Arm unwinder.
43a2140
#
43a2140
# GFDL is used for the documentation.
43a2140
#
43a2140
# Some other licenses are used in various places (BSD, Inner-Net,
43a2140
# ISC, Public Domain).
43a2140
#
43a2140
# HSRL and FSFAP are only used in test cases, which currently do not
43a2140
# ship in binary RPMs, so they are not listed here.  MIT is used for
43a2140
# scripts/install-sh, which does not ship, either.
43a2140
#
43a2140
# GPLv3+ is used by manual/texinfo.tex, which we do not use.
43a2140
#
43a2140
# LGPLv3+ is used by some Hurd code, which we do not build.
43a2140
#
43a2140
# LGPLv2 is used in one place (time/timespec_get.c, by mistake), but
43a2140
# it is not actually compiled, so it does not matter for libraries.
43a2140
License: LGPLv2+ and LGPLv2+ with exceptions and GPLv2+ and GPLv2+ with exceptions and BSD and Inner-Net and ISC and Public Domain and GFDL
43a2140
Andreas Schwab 68ea17c
URL: http://www.gnu.org/software/glibc/
fb1f848
Source0: %{?glibc_release_url}%{glibcsrcdir}.tar.xz
7e6e06c
Source1: nscd.conf
7e6e06c
Source2: bench.mk
7e6e06c
Source3: glibc-bench-compare
5a04553
# A copy of localedata/SUPPORTED in the Source0 tarball.  The
a92e3b7
# SUPPORTED file is used below to generate the list of locale
5a04553
# packages, using a Lua snippet.
Patsy Franklin ebf7539
# When the upstream SUPPORTED is out of sync with our copy, the
Patsy Franklin ebf7539
# prep phase will fail and you will need to update the local
Patsy Franklin ebf7539
# copy.
9edc2b6
Source11: SUPPORTED
29d1004
# Include in the source RPM for reference.
29d1004
Source12: ChangeLog.old
64db3ac
# Provide ISO language code to name translation using Python's
64db3ac
# langtable. The langtable data is maintained by the Fedora
64db3ac
# i18n team and is a harmonization of CLDR and glibc lang_name
64db3ac
# data in a more accessible API (also used by Anaconda).
64db3ac
Source13: convnames.py
29d1004
9abcefa
##############################################################################
Carlos O'Donell 0e17ea2
# Patches:
Carlos O'Donell 0e17ea2
# - See each individual patch file for origin and upstream status.
Carlos O'Donell 0e17ea2
# - For new patches follow template.patch format.
Carlos O'Donell 0e17ea2
##############################################################################
7e6e06c
Patch1: glibc-fedora-nscd.patch
Carlos O'Donell bebdebb
Patch3: glibc-rh697421.patch
Carlos O'Donell bebdebb
Patch4: glibc-fedora-linux-tcsetattr.patch
Carlos O'Donell bebdebb
Patch5: glibc-rh741105.patch
Carlos O'Donell bebdebb
Patch6: glibc-fedora-localedef.patch
Carlos O'Donell bebdebb
Patch8: glibc-fedora-manual-dircategory.patch
Carlos O'Donell bebdebb
Patch9: glibc-rh827510.patch
Carlos O'Donell bebdebb
Patch12: glibc-rh819430.patch
Carlos O'Donell bebdebb
Patch13: glibc-fedora-localedata-rh61908.patch
Carlos O'Donell bebdebb
Patch14: glibc-fedora-__libc_multiple_libcs.patch
Carlos O'Donell bebdebb
Patch15: glibc-rh1070416.patch
Carlos O'Donell bebdebb
Patch16: glibc-nscd-sysconfig.patch
Carlos O'Donell bebdebb
Patch17: glibc-cs-path.patch
Carlos O'Donell bebdebb
Patch18: glibc-c-utf8-locale.patch
71cb283
Patch23: glibc-python3.patch
7e6e06c
Patch29: glibc-fedora-nsswitch.patch
Arjun Shankar 3e8e5d3
Patch30: glibc-deprecated-selinux-makedb.patch
Arjun Shankar 3e8e5d3
Patch31: glibc-deprecated-selinux-nscd.patch
b8f476d
Patch32: glibc-rhbz1869030-faccessat2-eperm.patch
a4d24cb
9abcefa
##############################################################################
9abcefa
# Continued list of core "glibc" package information:
9abcefa
##############################################################################
ffc48ad
Obsoletes: glibc-profile < 2.4
cvsdist c381c23
Provides: ldconfig
9abcefa
754fe39
# The dynamic linker supports DT_GNU_HASH
754fe39
Provides: rtld(GNU_HASH)
afea822
afea822
# We need libgcc for cancellation support in POSIX threads.
afea822
Requires: libgcc%{_isa}
afea822
cvsdist c381c23
Requires: glibc-common = %{version}-%{release}
9abcefa
ad93166
# Various components (regex, glob) have been imported from gnulib.
ad93166
Provides: bundled(gnulib)
ad93166
87b6ed7
Requires(pre): basesystem
eb580e4
Requires: basesystem
9abcefa
a578dc7
%ifarch %{ix86}
a578dc7
# Automatically install the 32-bit variant if the 64-bit variant has
a578dc7
# been installed.  This covers the case when glibc.i686 is installed
a578dc7
# after nss_*.x86_64.  (See below for the other ordering.)
a578dc7
Recommends: (nss_db(x86-32) if nss_db(x86-64))
a578dc7
Recommends: (nss_hesiod(x86-32) if nss_hesiod(x86-64))
a578dc7
%endif
a578dc7
cvsdist e8590cd
# This is for building auxiliary programs like memusage, nscd
cvsdist c381c23
# For initial glibc bootstraps it can be commented out
Andreas Krebbel 71d4a02
%if %{without bootstrap}
Carlos O'Donell 6e8e9f6
BuildRequires: gd-devel libpng-devel zlib-devel
Andreas Krebbel 71d4a02
%endif
Carlos O'Donell 6e8e9f6
%if %{with docs}
Carlos O'Donell 6e8e9f6
# Removing texinfo will cause check-safety.sh test to fail because it seems to
Carlos O'Donell 6e8e9f6
# trigger documentation generation based on dependencies.  We need to fix this
Carlos O'Donell 6e8e9f6
# upstream in some way that doesn't depend on generating docs to validate the
Carlos O'Donell 6e8e9f6
# texinfo.  I expect it's simply the wrong dependency for that target.
238627a
BuildRequires: texinfo >= 5.0
Carlos O'Donell 6e8e9f6
%endif
Carlos O'Donell 6e8e9f6
%if %{without bootstrap}
Carlos O'Donell 6e8e9f6
BuildRequires: libselinux-devel >= 1.33.4-3
Carlos O'Donell 6e8e9f6
%endif
Carlos O'Donell 6e8e9f6
BuildRequires: audit-libs-devel >= 1.1.3, sed >= 3.95, libcap-devel, gettext
Carlos O'Donell 0457f64
# We need procps-ng (/bin/ps), util-linux (/bin/kill), and gawk (/bin/awk),
Carlos O'Donell 0457f64
# but it is more flexible to require the actual programs and let rpm infer
Carlos O'Donell 0457f64
# the packages. However, until bug 1259054 is widely fixed we avoid the
Carlos O'Donell 0457f64
# following:
Carlos O'Donell 0457f64
# BuildRequires: /bin/ps, /bin/kill, /bin/awk
Carlos O'Donell 0457f64
# And use instead (which should be reverted some time in the future):
Carlos O'Donell 0457f64
BuildRequires: procps-ng, util-linux, gawk
Andreas Schwab c883c14
BuildRequires: systemtap-sdt-devel
9abcefa
Carlos O'Donell 6e8e9f6
%if %{with valgrind}
Carlos O'Donell 0457f64
# Require valgrind for smoke testing the dynamic loader to make sure we
Carlos O'Donell 0457f64
# have not broken valgrind.
Mark Wielaard 05146e3
BuildRequires: valgrind
Siddhesh Poyarekar e9a7f4c
%endif
Siddhesh Poyarekar e9a7f4c
Siddhesh Poyarekar 944ed51
# We use systemd rpm macros for nscd
Siddhesh Poyarekar 944ed51
BuildRequires: systemd
Siddhesh Poyarekar 944ed51
a63c0b6
# We use python for the microbenchmarks and locale data regeneration
a63c0b6
# from unicode sources (carried out manually). We choose python3
a63c0b6
# explicitly because it supports both use cases.  On some
a63c0b6
# distributions, python3 does not actually install /usr/bin/python3,
a63c0b6
# so we also depend on python3-devel.
a63c0b6
BuildRequires: python3 python3-devel
64db3ac
BuildRequires: python3dist(langtable)
37b7dfd
00b734f
# This GCC version is needed for -fstack-clash-protection support.
cf072ec
BuildRequires: gcc >= 7.2.1-6
fda3e07
%define enablekernel 3.2
Andreas Schwab 98c76af
Conflicts: kernel < %{enablekernel}
Andreas Schwab 444e2cc
%define target %{_target_cpu}-redhat-linux
Andreas Schwab 444e2cc
%ifarch %{arm}
Andreas Schwab 444e2cc
%define target %{_target_cpu}-redhat-linuxeabi
cvsdist 7abcfd3
%endif
cffaeb6
%ifarch ppc64le
cffaeb6
%define target ppc64le-redhat-linux
cffaeb6
%endif
9abcefa
e098446
# GNU make 4.0 introduced the -O option.
e098446
BuildRequires: make >= 4.0
e098446
bb83f92
# The intl subsystem generates a parser using bison.
bb83f92
BuildRequires: bison >= 2.7
bb83f92
8a71833
# binutils 2.30-17 is needed for --generate-missing-build-notes.
8a71833
BuildRequires: binutils >= 2.30-17
cd5e5a1
Andreas Schwab 677ba77
# Earlier releases have broken support for IRELATIVE relocations
Andreas Schwab 677ba77
Conflicts: prelink < 0.4.2
9abcefa
Andreas Schwab 237bb90
%if 0%{?_enable_debug_packages}
ffc48ad
BuildRequires: elfutils >= 0.72
dcaaa78
BuildRequires: rpm >= 4.2-0.56
cvsdist c381c23
%endif
9abcefa
Andreas Krebbel 71d4a02
%if %{without bootstrap}
Carlos O'Donell 8fdf674
%if %{with testsuite}
Carlos O'Donell 8fdf674
# The testsuite builds static C++ binaries that require a C++ compiler,
Carlos O'Donell 8fdf674
# static C++ runtime from libstdc++-static, and lastly static glibc.
Carlos O'Donell 6e8e9f6
BuildRequires: gcc-c++
dbc262b
BuildRequires: libstdc++-static
Carlos O'Donell 8fdf674
# A configure check tests for the ability to create static C++ binaries
Carlos O'Donell 8fdf674
# before glibc is built and therefore we need a glibc-static for that
Carlos O'Donell 8fdf674
# check to pass even if we aren't going to use any of those objects to
Carlos O'Donell 8fdf674
# build the tests.
Carlos O'Donell 8fdf674
BuildRequires: glibc-static
90612b2
90612b2
# libidn2 (but not libidn2-devel) is needed for testing AI_IDN/NI_IDN.
90612b2
BuildRequires: libidn2
Carlos O'Donell 8fdf674
%endif
Carlos O'Donell 8fdf674
%endif
dbc262b
9abcefa
# Filter out all GLIBC_PRIVATE symbols since they are internal to
8c7b7c2
# the package and should not be examined by any other tool.
Andreas Schwab 96f2a7b
%global __filter_GLIBC_PRIVATE 1
cvsdist c381c23
Carlos O'Donell f2d4020
# For language packs we have glibc require a virtual dependency
Carlos O'Donell f2d4020
# "glibc-langpack" wich gives us at least one installed langpack.
Carlos O'Donell f2d4020
# If no langpack providing 'glibc-langpack' was installed you'd
b1869f9
# get language-neutral support e.g. C, POSIX, and C.UTF-8 locales.
b1869f9
# In the past we used to install the glibc-all-langpacks by default
b1869f9
# but we no longer do this to minimize container and VM sizes.
b1869f9
# Today you must actively use the language packs infrastructure to
b1869f9
# install language support.
Carlos O'Donell f2d4020
Requires: glibc-langpack = %{version}-%{release}
b1869f9
Suggests: glibc-minimal-langpack = %{version}-%{release}
Carlos O'Donell f2d4020
cvsdist c381c23
%description
cvsdist c381c23
The glibc package contains standard libraries which are used by
cvsdist c381c23
multiple programs on the system. In order to save disk space and
cvsdist c381c23
memory, as well as to make upgrading easier, common system code is
cvsdist c381c23
kept in one place and shared between programs. This particular package
cvsdist c381c23
contains the most important sets of shared libraries: the standard C
cvsdist c381c23
library and the standard math library. Without these two libraries, a
cvsdist c381c23
Linux system will not function.
cvsdist c381c23
7ad97ba
######################################################################
b8bc11a
# libnsl subpackage
b8bc11a
######################################################################
b8bc11a
b8bc11a
%package -n libnsl
b8bc11a
Summary: Legacy support library for NIS
b8bc11a
Requires: %{name}%{_isa} = %{version}-%{release}
b8bc11a
b8bc11a
%description -n libnsl
b8bc11a
This package provides the legacy version of libnsl library, for
b8bc11a
accessing NIS services.
b8bc11a
b8bc11a
This library is provided for backwards compatibility only;
b8bc11a
applications should use libnsl2 instead to gain IPv6 support.
b8bc11a
9abcefa
##############################################################################
9abcefa
# glibc "devel" sub-package
9abcefa
##############################################################################
cvsdist c381c23
%package devel
cvsdist c381c23
Summary: Object files for development using standard C libraries.
ffc48ad
Requires: %{name} = %{version}-%{release}
2687b3c
Requires: libxcrypt-devel%{_isa} >= 4.0.0
711089d
Requires: kernel-headers >= 3.2
711089d
BuildRequires: kernel-headers >= 3.2
711089d
%if %{need_headers_package}
eb8a860
Requires: %{headers_package_name} = %{version}-%{release}
eb8a860
%endif
eb8a860
# For backwards compatibility, when the glibc-headers package existed.
711089d
Provides: glibc-headers = %{version}-%{release}
711089d
Provides: glibc-headers(%{_target_cpu})
eb8a860
Obsoletes: glibc-headers < %{version}-%{release}
cvsdist c381c23
cvsdist c381c23
%description devel
cvsdist c381c23
The glibc-devel package contains the object files necessary
cvsdist c381c23
for developing programs which use the standard C libraries (which are
cvsdist c381c23
used by nearly all programs).  If you are developing programs which
cvsdist c381c23
will use the standard C libraries, your system needs to have these
cvsdist c381c23
standard object files available in order to create the
cvsdist c381c23
executables.
cvsdist c381c23
cvsdist c381c23
Install glibc-devel if you are going to develop programs which will
cvsdist c381c23
use the standard C libraries.
cvsdist c381c23
9abcefa
##############################################################################
9abcefa
# glibc "static" sub-package
9abcefa
##############################################################################
65bf1c4
%package static
65bf1c4
Summary: C library static libraries for -static linking.
65bf1c4
Requires: %{name}-devel = %{version}-%{release}
2687b3c
Requires: libxcrypt-static%{?_isa} >= 4.0.0
65bf1c4
65bf1c4
%description static
65bf1c4
The glibc-static package contains the C library static libraries
65bf1c4
for -static linking.  You don't need these, unless you link statically,
65bf1c4
which is highly discouraged.
65bf1c4
9abcefa
##############################################################################
9abcefa
# glibc "headers" sub-package
Carlos O'Donell e63fda9
# - The headers package includes all common headers that are shared amongst
711089d
#   the multilib builds. It avoids file conflicts between the architecture-
711089d
#   specific glibc-devel variants.
Carlos O'Donell e63fda9
#   Files like gnu/stubs.h which have gnu/stubs-32.h (i686) and gnu/stubs-64.h
Carlos O'Donell e63fda9
#   are included in glibc-headers, but the -32 and -64 files are in their
Carlos O'Donell e63fda9
#   respective i686 and x86_64 devel packages.
9abcefa
##############################################################################
711089d
%if %{need_headers_package}
eb8a860
%package -n %{headers_package_name}
eb8a860
Summary: Additional internal header files for glibc-devel.
eb8a860
BuildArch: noarch
711089d
Requires: %{name} = %{version}-%{release}
cvsdist c381c23
eb8a860
%description -n %{headers_package_name}
eb8a860
The %{headers_package_name} package contains the architecture-specific
711089d
header files which cannot be included in glibc-devel package.
711089d
%endif
cvsdist c381c23
9abcefa
##############################################################################
9abcefa
# glibc "common" sub-package
9abcefa
##############################################################################
cvsdist c381c23
%package common
cvsdist c381c23
Summary: Common binaries and locale data for glibc
e5e8f77
Requires: %{name} = %{version}-%{release}
cvsdist c381c23
Requires: tzdata >= 2003a
cvsdist c381c23
cvsdist c381c23
%description common
cvsdist c381c23
The glibc-common package includes common binaries for the GNU libc
cvsdist c381c23
libraries, as well as national language (locale) support.
cvsdist c381c23
c09c662
######################################################################
c09c662
# File triggers to do ldconfig calls automatically (see rhbz#1380878)
c09c662
######################################################################
c09c662
c09c662
# File triggers for when libraries are added or removed in standard
28e47fe
# paths.
28e47fe
%transfiletriggerin common -P 2000000 -- /lib /usr/lib /lib64 /usr/lib64
28e47fe
/sbin/ldconfig
c09c662
%end
c09c662
28e47fe
%transfiletriggerpostun common -P 2000000 -- /lib /usr/lib /lib64 /usr/lib64
28e47fe
/sbin/ldconfig
c09c662
%end
c09c662
34927af
# We need to run ldconfig manually because __brp_ldconfig assumes that
34927af
# glibc itself is always installed in $RPM_BUILD_ROOT, but with sysroots
34927af
# we may be installed into a subdirectory of that path.  Therefore we
34927af
# unset __brp_ldconfig and run ldconfig by hand with the sysroots path
34927af
# passed to -r.
c09c662
%undefine __brp_ldconfig
c09c662
c09c662
######################################################################
c09c662
9edc2b6
%package locale-source
9edc2b6
Summary: The sources for the locales
9edc2b6
Requires: %{name} = %{version}-%{release}
9edc2b6
Requires: %{name}-common = %{version}-%{release}
9edc2b6
9edc2b6
%description locale-source
9edc2b6
The sources for all locales provided in the language packs.
9edc2b6
If you are building custom locales you will most likely use
9edc2b6
these sources as the basis for your new locale.
9edc2b6
9df6505
%{lua:
746617c
-- Array of languages (ISO-639 codes).
746617c
local languages = {}
746617c
-- Dictionary from language codes (as in the languages array) to arrays
746617c
-- of regions.
746617c
local supplements = {}
746617c
do
746617c
   -- Parse the SUPPORTED file.  Eliminate duplicates.
746617c
   local lang_region_seen = {}
746617c
   for line in io.lines(rpm.expand("%{SOURCE11}")) do
746617c
      -- Match lines which contain a language (eo) or language/region
746617c
      -- (en_US) strings.
746617c
      local lang_region = string.match(line, "^([a-z][^/@.]+)")
746617c
      if lang_region ~= nil then
746617c
	 if lang_region_seen[lang_region] == nil then
746617c
	    lang_region_seen[lang_region] = true
746617c
746617c
	    -- Split language/region pair.
746617c
	    local lang, region = string.match(lang_region, "^(.+)_(.+)")
746617c
	    if lang == nil then
746617c
	       -- Region is missing, use only the language.
746617c
	       lang = lang_region
746617c
	    end
746617c
	    local suppl = supplements[lang]
746617c
	    if suppl == nil then
746617c
	       suppl = {}
746617c
	       supplements[lang] = suppl
746617c
	       -- New language not seen before.
746617c
	       languages[#languages + 1] = lang
746617c
	    end
746617c
	    if region ~= nil then
746617c
	       -- New region because of the check against
746617c
	       -- lang_region_seen above.
746617c
	       suppl[#suppl + 1] = region
746617c
	    end
746617c
	 end
746617c
      end
746617c
   end
746617c
   -- Sort for determinism.
746617c
   table.sort(languages)
746617c
   for _, supples in pairs(supplements) do
746617c
      table.sort(supplements)
746617c
   end
746617c
end
746617c
64db3ac
-- Compute the language names
64db3ac
local langnames = {}
64db3ac
local python3 = io.open('/usr/bin/python3', 'r')
64db3ac
if python3 then
64db3ac
   python3:close()
64db3ac
   local args = table.concat(languages, ' ')
64db3ac
   local file = io.popen(rpm.expand("%{SOURCE13}") .. ' ' .. args)
64db3ac
   while true do
64db3ac
       line = file:read()
64db3ac
       if line == nil then break end
64db3ac
       langnames[#langnames + 1] = line
64db3ac
   end
64db3ac
   file:close()
64db3ac
else
64db3ac
   for i = 1, #languages do
64db3ac
      langnames[#langnames + 1] = languages[i]
64db3ac
   end
64db3ac
end
64db3ac
746617c
-- Compute the Supplements: list for a language, based on the regions.
746617c
local function compute_supplements(lang)
ea59ae7
   result = "langpacks-core-" .. lang
746617c
   regions = supplements[lang]
746617c
   if regions ~= nil then
746617c
      for i = 1, #regions do
ea59ae7
	 result = result .. " or langpacks-core-" .. lang .. "_" .. regions[i]
746617c
      end
746617c
   end
746617c
   return result
746617c
end
746617c
746617c
-- Emit the definition of a language pack package.
64db3ac
local function lang_package(lang, langname)
746617c
   local suppl = compute_supplements(lang)
746617c
   print(rpm.expand([[
746617c
746617c
%package langpack-]]..lang..[[
746617c
64db3ac
Summary: Locale data for ]]..langname..[[
746617c
746617c
Provides: glibc-langpack = %{version}-%{release}
746617c
Requires: %{name} = %{version}-%{release}
746617c
Requires: %{name}-common = %{version}-%{release}
684ac6e
Supplements: (glibc and (]]..suppl..[[))
746617c
%description langpack-]]..lang..[[
746617c
746617c
The glibc-langpack-]]..lang..[[ package includes the basic information required
64db3ac
to support the ]]..langname..[[ language in your applications.
746617c
%files -f langpack-]]..lang..[[.filelist langpack-]]..lang..[[
746617c
]]))
746617c
end
746617c
746617c
for i = 1, #languages do
64db3ac
   lang_package(languages[i], langnames[i])
746617c
end
9df6505
}
9edc2b6
Carlos O'Donell f2d4020
# The glibc-all-langpacks provides the virtual glibc-langpack,
Carlos O'Donell f2d4020
# and thus satisfies glibc's requirement for installed locales.
Carlos O'Donell f2d4020
# Users can add one more other langauge packs and then eventually
Carlos O'Donell f2d4020
# uninstall all-langpacks to save space.
9edc2b6
%package all-langpacks
Carlos O'Donell f2d4020
Summary: All language packs for %{name}.
Carlos O'Donell f2d4020
Requires: %{name} = %{version}-%{release}
Carlos O'Donell f2d4020
Requires: %{name}-common = %{version}-%{release}
Carlos O'Donell f2d4020
Provides: %{name}-langpack = %{version}-%{release}
9edc2b6
%description all-langpacks
Carlos O'Donell f2d4020
db303b9
# No %files, this is an empty package. The C/POSIX and
Carlos O'Donell f2d4020
# C.UTF-8 files are already installed by glibc. We create
Carlos O'Donell f2d4020
# minimal-langpack because the virtual provide of
Carlos O'Donell f2d4020
# glibc-langpack needs at least one package installed
Carlos O'Donell f2d4020
# to satisfy it. Given that no-locales installed is a valid
Carlos O'Donell f2d4020
# use case we support it here with this package.
Carlos O'Donell f2d4020
%package minimal-langpack
Carlos O'Donell f2d4020
Summary: Minimal language packs for %{name}.
Carlos O'Donell f2d4020
Provides: glibc-langpack = %{version}-%{release}
Carlos O'Donell f2d4020
Requires: %{name} = %{version}-%{release}
Carlos O'Donell f2d4020
Requires: %{name}-common = %{version}-%{release}
Carlos O'Donell f2d4020
%description minimal-langpack
Carlos O'Donell f2d4020
This is a Meta package that is used to install minimal language packs.
Carlos O'Donell f2d4020
This package ensures you can use C, POSIX, or C.UTF-8 locales, but
Carlos O'Donell f2d4020
nothing else. It is designed for assembling a minimal system.
Carlos O'Donell f2d4020
%files minimal-langpack
9edc2b6
9abcefa
##############################################################################
9abcefa
# glibc "nscd" sub-package
9abcefa
##############################################################################
cvsdist c381c23
%package -n nscd
cvsdist c381c23
Summary: A Name Service Caching Daemon (nscd).
Andreas Schwab d047b37
Requires: %{name} = %{version}-%{release}
Carlos O'Donell 4f51555
%if %{without bootstrap}
Carlos O'Donell 6e8e9f6
Requires: libselinux >= 1.17.10-1
Carlos O'Donell 6e8e9f6
%endif
Carlos O'Donell 6e8e9f6
Requires: audit-libs >= 1.1.3
Andreas Schwab 389eedc
Requires(pre): /usr/sbin/useradd, coreutils
Siddhesh Poyarekar a383e78
Requires(post): systemd
Siddhesh Poyarekar a383e78
Requires(preun): systemd
Siddhesh Poyarekar a383e78
Requires(postun): systemd, /usr/sbin/userdel
cvsdist c381c23
cvsdist c381c23
%description -n nscd
b8bc11a
The nscd daemon caches name service lookups and can improve
b8bc11a
performance with LDAP, and may help with DNS as well.
cvsdist c381c23
9abcefa
##############################################################################
6f4d10f
# Subpackages for NSS modules except nss_files, nss_compat, nss_dns
d5e9ea2
##############################################################################
d5e9ea2
Carlos O'Donell c9ce354
# This should remain it's own subpackage or "Provides: nss_db" to allow easy
Carlos O'Donell c9ce354
# migration from old systems that previously had the old nss_db package
Carlos O'Donell c9ce354
# installed. Note that this doesn't make the migration that smooth, the
Carlos O'Donell c9ce354
# databases still need rebuilding because the formats were different.
Carlos O'Donell c9ce354
# The nss_db package was deprecated in F16 and onwards:
Carlos O'Donell c9ce354
# https://lists.fedoraproject.org/pipermail/devel/2011-July/153665.html
Carlos O'Donell c9ce354
# The different database format does cause some issues for users:
Carlos O'Donell c9ce354
# https://lists.fedoraproject.org/pipermail/devel/2011-December/160497.html
d5e9ea2
%package -n nss_db
d5e9ea2
Summary: Name Service Switch (NSS) module using hash-indexed files
d5e9ea2
Requires: %{name}%{_isa} = %{version}-%{release}
a578dc7
%ifarch x86_64
a578dc7
# Automatically install the 32-bit variant if the 64-bit variant has
a578dc7
# been installed.  This covers the case when glibc.i686 is installed
a578dc7
# before nss_db.x86_64.  (See above for the other ordering.)
a578dc7
Recommends: (nss_db(x86-32) if glibc(x86-32))
a578dc7
%endif
d5e9ea2
d5e9ea2
%description -n nss_db
d5e9ea2
The nss_db Name Service Switch module uses hash-indexed files in /var/db
d5e9ea2
to speed up user, group, service, host name, and other NSS-based lookups.
d5e9ea2
d5e9ea2
%package -n nss_hesiod
d5e9ea2
Summary: Name Service Switch (NSS) module using Hesiod
d5e9ea2
Requires: %{name}%{_isa} = %{version}-%{release}
a578dc7
%ifarch x86_64
a578dc7
# Automatically install the 32-bit variant if the 64-bit variant has
a578dc7
# been installed.  This covers the case when glibc.i686 is installed
a578dc7
# before nss_hesiod.x86_64.  (See above for the other ordering.)
a578dc7
Recommends: (nss_hesiod(x86-32) if glibc(x86-32))
a578dc7
%endif
d5e9ea2
d5e9ea2
%description -n nss_hesiod
d5e9ea2
The nss_hesiod Name Service Switch module uses the Domain Name System
d5e9ea2
(DNS) as a source for user, group, and service information, following
d5e9ea2
the Hesiod convention of Project Athena.
d5e9ea2
d5e9ea2
%package nss-devel
d5e9ea2
Summary: Development files for directly linking NSS service modules
173c242
Requires: %{name}%{_isa} = %{version}-%{release}
d5e9ea2
Requires: nss_db%{_isa} = %{version}-%{release}
d5e9ea2
Requires: nss_hesiod%{_isa} = %{version}-%{release}
d5e9ea2
d5e9ea2
%description nss-devel
d5e9ea2
The glibc-nss-devel package contains the object files necessary to
d5e9ea2
compile applications and libraries which directly link against NSS
d5e9ea2
modules supplied by glibc.
d5e9ea2
d5e9ea2
This is a rare and special use case; regular development has to use
d5e9ea2
the glibc-devel package instead.
d5e9ea2
d5e9ea2
##############################################################################
9abcefa
# glibc "utils" sub-package
9abcefa
##############################################################################
cvsdist c381c23
%package utils
cvsdist c381c23
Summary: Development utilities from GNU C library
ffc48ad
Requires: %{name} = %{version}-%{release}
cvsdist c381c23
cvsdist c381c23
%description utils
cvsdist c381c23
The glibc-utils package contains memusage, a memory usage profiler,
cvsdist c381c23
mtrace, a memory leak tracer and xtrace, a function call tracer
cvsdist c381c23
which can be helpful during program debugging.
cvsdist c381c23
cvsdist c381c23
If unsure if you need this, don't install this package.
cvsdist c381c23
8c7b7c2
##############################################################################
8c7b7c2
# glibc core "debuginfo" sub-package
8c7b7c2
##############################################################################
Andreas Schwab 237bb90
%if 0%{?_enable_debug_packages}
cvsdist c381c23
%define debug_package %{nil}
e74e801
%define __debug_install_post %{nil}
e74e801
%global __debug_package 1
Carlos O'Donell 8877992
# Disable thew new features that glibc packages don't use.
Carlos O'Donell 8877992
%undefine _debugsource_packages
Carlos O'Donell 8877992
%undefine _debuginfo_subpackages
Carlos O'Donell 8877992
%undefine _unique_debug_names
Carlos O'Donell 8877992
%undefine _unique_debug_srcs
cvsdist c381c23
cvsdist c381c23
%package debuginfo
cvsdist c381c23
Summary: Debug information for package %{name}
e0b4499
AutoReqProv: no
cvsdist c381c23
%ifarch %{debuginfocommonarches}
cvsdist c381c23
Requires: glibc-debuginfo-common = %{version}-%{release}
Andreas Schwab 50a0037
%else
c1407c8
%ifarch %{ix86} %{sparc}
Andreas Schwab 50a0037
Obsoletes: glibc-debuginfo-common
Andreas Schwab 50a0037
%endif
cvsdist c381c23
%endif
cvsdist c381c23
cvsdist c381c23
%description debuginfo
cvsdist c381c23
This package provides debug information for package %{name}.
cvsdist c381c23
Debug information is useful when developing applications that use this
cvsdist c381c23
package or when debugging this package.
cvsdist c381c23
cvsdist ce09106
This package also contains static standard C libraries with
cvsdist ce09106
debugging information.  You need this only if you want to step into
cvsdist ce09106
C library routines during debugging programs statically linked against
cvsdist ce09106
one or more of the standard C libraries.
cvsdist ce09106
To use this debugging information, you need to link binaries
0d1d15d
with -static -L%{_prefix}/lib/debug%{_libdir} compiler options.
cvsdist ce09106
9abcefa
##############################################################################
9abcefa
# glibc common "debuginfo-common" sub-package
9abcefa
##############################################################################
cvsdist c381c23
%ifarch %{debuginfocommonarches}
cvsdist c381c23
cvsdist c381c23
%package debuginfo-common
cvsdist c381c23
Summary: Debug information for package %{name}
e0b4499
AutoReqProv: no
cvsdist c381c23
cvsdist c381c23
%description debuginfo-common
cvsdist c381c23
This package provides debug information for package %{name}.
cvsdist c381c23
Debug information is useful when developing applications that use this
cvsdist c381c23
package or when debugging this package.
cvsdist c381c23
134a36d
%endif
134a36d
%endif
cvsdist c381c23
Carlos O'Donell 6e8e9f6
%if %{with benchtests}
Siddhesh Poyarekar 67b30d7
%package benchtests
Siddhesh Poyarekar 67b30d7
Summary: Benchmarking binaries and scripts for %{name}
Siddhesh Poyarekar 67b30d7
%description benchtests
Siddhesh Poyarekar 67b30d7
This package provides built benchmark binaries and scripts to run
Siddhesh Poyarekar 67b30d7
microbenchmark tests on the system.
Siddhesh Poyarekar 67b30d7
%endif
Siddhesh Poyarekar 67b30d7
9abcefa
##############################################################################
Carlos O'Donell 9588eec
# compat-libpthread-nonshared
Carlos O'Donell 9588eec
# See: https://sourceware.org/bugzilla/show_bug.cgi?id=23500
Carlos O'Donell 9588eec
##############################################################################
Carlos O'Donell 9588eec
%package -n compat-libpthread-nonshared
Carlos O'Donell 9588eec
Summary: Compatibility support for linking against libpthread_nonshared.a.
Carlos O'Donell 9588eec
Carlos O'Donell 9588eec
%description -n compat-libpthread-nonshared
Carlos O'Donell 9588eec
This package provides compatibility support for applications that expect
Carlos O'Donell 9588eec
libpthread_nonshared.a to exist. The support provided is in the form of
Carlos O'Donell 9588eec
an empty libpthread_nonshared.a that allows dynamic links to succeed.
Carlos O'Donell 9588eec
Such applications should be adjusted to avoid linking against
Carlos O'Donell 9588eec
libpthread_nonshared.a which is no longer used. The static library
Carlos O'Donell 9588eec
libpthread_nonshared.a is an internal implementation detail of the C
Carlos O'Donell 9588eec
runtime and should not be expected to exist.
Carlos O'Donell 9588eec
Carlos O'Donell 9588eec
##############################################################################
9abcefa
# Prepare for the build.
9abcefa
##############################################################################
cvsdist c381c23
%prep
5603627
%autosetup -n %{glibcsrcdir} -p1
29b39d6
9abcefa
##############################################################################
9abcefa
# %%prep - Additional prep required...
9abcefa
##############################################################################
Siddhesh Poyarekar 67b30d7
# Make benchmark scripts executable
Siddhesh Poyarekar 67b30d7
chmod +x benchtests/scripts/*.py scripts/pylint
Siddhesh Poyarekar 67b30d7
9abcefa
# Remove all files generated from patching.
cvsdist c381c23
find . -type f -size 0 -o -name "*.orig" -exec rm -f {} \;
9abcefa
9abcefa
# Ensure timestamps on configure files are current to prevent
9abcefa
# regenerating them.
cvsdist c381c23
touch `find . -name configure`
9abcefa
9abcefa
# Ensure *-kw.h files are current to prevent regenerating them.
da64eed
touch locale/programs/*-kw.h
cvsdist c381c23
a92e3b7
# Verify that our copy of localedata/SUPPORTED matches the glibc
a92e3b7
# version.
a92e3b7
#
5a04553
# The separate file copy is used by the Lua parser above.
a92e3b7
# Patches or new upstream versions may change the list of locales,
a92e3b7
# which changes the set of langpacks we need to build.  Verify the
a92e3b7
# differences then update the copy of SUPPORTED.  This approach has
a92e3b7
# two purposes: (a) avoid spurious changes to the set of langpacks,
5a04553
# and (b) the Lua snippet can use a fully patched-up version
a92e3b7
# of the localedata/SUPPORTED file.
43e96b9
diff -u %{SOURCE11} localedata/SUPPORTED
9edc2b6
9abcefa
##############################################################################
9abcefa
# Build glibc...
9abcefa
##############################################################################
cvsdist c381c23
%build
0fb8a56
# Log osystem information
Carlos O'Donell 256beb3
uname -a
9d8ea8c
LD_SHOW_AUXV=1 /bin/true
Carlos O'Donell 256beb3
cat /proc/cpuinfo
fa1678e
cat /proc/sysinfo 2>/dev/null || true
Carlos O'Donell 256beb3
cat /proc/meminfo
d4be858
df
9abcefa
8c7b7c2
# We build using the native system compilers.
cvsdist c381c23
GCC=gcc
e1fb04f
GXX=g++
9abcefa
04e38e0
# Part of rpm_inherit_flags.  Is overridden below.
04e38e0
rpm_append_flag ()
04e38e0
{
04e38e0
    BuildFlags="$BuildFlags $*"
04e38e0
}
04e38e0
04e38e0
# Propagates the listed flags to rpm_append_flag if supplied by
04e38e0
# redhat-rpm-config.
081ef32
BuildFlags="-O2 -g"
081ef32
rpm_inherit_flags ()
081ef32
{
890019e
	local reference=" $* "
081ef32
	local flag
890019e
	for flag in $RPM_OPT_FLAGS $RPM_LD_FLAGS ; do
890019e
		if echo "$reference" | grep -q -F " $flag " ; then
04e38e0
			rpm_append_flag "$flag"
081ef32
		fi
081ef32
	done
081ef32
}
Carlos O'Donell b60f740
081ef32
# Propgate select compiler flags from redhat-rpm-config.  These flags
081ef32
# are target-dependent, so we use only those which are specified in
9f8b04e
# redhat-rpm-config.  We keep the -m32/-m32/-m64 flags to support
9f8b04e
# multilib builds.
3bef91d
#
3bef91d
# Note: For building alternative run-times, care is required to avoid
3bef91d
# overriding the architecture flags which go into CC/CXX.  The flags
3bef91d
# below are passed in CFLAGS.
cvsdist c381c23
081ef32
rpm_inherit_flags \
4adfefa
	"-Wp,-D_GLIBCXX_ASSERTIONS" \
081ef32
	"-fasynchronous-unwind-tables" \
081ef32
	"-fstack-clash-protection" \
081ef32
	"-funwind-tables" \
081ef32
	"-m31" \
081ef32
	"-m32" \
081ef32
	"-m64" \
4265b0b
	"-march=haswell" \
9f8b04e
	"-march=i686" \
9f8b04e
	"-march=x86-64" \
9f8b04e
	"-march=z13" \
9f8b04e
	"-march=z14" \
9f8b04e
	"-march=zEC12" \
888bec1
	"-mbranch-protection=standard" \
9f8b04e
	"-mfpmath=sse" \
84981f5
	"-msse2" \
2fcfa68
	"-mstackrealign" \
9f8b04e
	"-mtune=generic" \
9f8b04e
	"-mtune=z13" \
9f8b04e
	"-mtune=z14" \
9f8b04e
	"-mtune=zEC12" \
9be86f0
	"-specs=/usr/lib/rpm/redhat/redhat-annobin-cc1" \
66afdc6
133c946
# libc_nonshared.a cannot be built with the default hardening flags
133c946
# because the glibc build system is incompatible with
133c946
# -D_FORTIFY_SOURCE.  The object files need to be marked as to be
133c946
# skipped in annobin annotations.  (The -specs= variant of activating
133c946
# annobin does not work here because of flag ordering issues.)
133c946
# See <https://bugzilla.redhat.com/show_bug.cgi?id=1668822>.
133c946
BuildFlagsNonshared="-fplugin=annobin -fplugin-arg-annobin-disable -Wa,--generate-missing-build-notes=yes"
04e38e0
8a71833
# Special flag to enable annobin annotations for statically linked
8a71833
# assembler code.  Needs to be passed to make; not preserved by
8a71833
# configure.
6a43999
%define glibc_make_flags_as ASFLAGS="-g -Wa,--generate-missing-build-notes=yes"
723de53
%define glibc_make_flags %{glibc_make_flags_as}
8a71833
66afdc6
##############################################################################
9abcefa
# %%build - Generic options.
9abcefa
##############################################################################
cvsdist c381c23
EnableKernel="--enable-kernel=%{enablekernel}"
9abcefa
# Save the used compiler and options into the file "Gcc" for use later
9abcefa
# by %%install.
2f520ca
echo "$GCC" > Gcc
cvsdist ce09106
9abcefa
##############################################################################
9abcefa
# build()
9abcefa
#	Build glibc in `build-%{target}$1', passing the rest of the arguments
9abcefa
#	as CFLAGS to the build (not the same as configure CFLAGS). Several
dc90541
#	global values are used to determine build flags, kernel version,
dc90541
#	system tap support, etc.
9abcefa
##############################################################################
Andreas Schwab 444e2cc
build()
a9d8ca8
{
081ef32
	local builddir=build-%{target}${1:+-$1}
d4d7eff
	${1+shift}
d4d7eff
	rm -rf $builddir
d4d7eff
	mkdir $builddir
d4d7eff
	pushd $builddir
081ef32
	../configure CC="$GCC" CXX="$GXX" CFLAGS="$BuildFlags $*" \
d4d7eff
		--prefix=%{_prefix} \
8ed8731
		--with-headers=%{_prefix}/include $EnableKernel \
04e38e0
		--with-nonshared-cflags="$BuildFlagsNonshared" \
8ed8731
		--enable-bind-now \
d4d7eff
		--build=%{target} \
4570c40
		--enable-stack-protector=strong \
cc5db6c
%ifarch %{pie_arches}
5163dbe
		--enable-static-pie \
5163dbe
%endif
c659285
		--enable-tunables \
d4d7eff
		--enable-systemtap \
Carlos O'Donell b60f740
		${core_with_options} \
a4a5659
%ifarch x86_64 %{ix86}
a4a5659
	       --enable-cet \
a4a5659
%endif
ad9d2e1
%ifarch %{ix86}
ad9d2e1
		--disable-multi-arch \
ad9d2e1
%endif
Carlos O'Donell 6e8e9f6
%if %{without werror}
Carlos O'Donell 6e8e9f6
		--disable-werror \
Carlos O'Donell 6e8e9f6
%endif
Carlos O'Donell 6e8e9f6
		--disable-profile \
Carlos O'Donell 6e8e9f6
%if %{with bootstrap}
Carlos O'Donell 6e8e9f6
		--without-selinux \
Siddhesh Poyarekar 5d3d5d4
%endif
58f5912
		--disable-crypt ||
d4d7eff
		{ cat config.log; false; }
Andreas Schwab f81c27d
9bc189f
	%make_build -r %{glibc_make_flags}
d4d7eff
	popd
a9d8ca8
}
a9d8ca8
559f435
# Default set of compiler options.
Andreas Schwab 444e2cc
build
a9d8ca8
3bef91d
%if %{buildpower9}
3bef91d
(
3bef91d
  GCC="$GCC -mcpu=power9 -mtune=power9"
3bef91d
  GXX="$GXX -mcpu=power9 -mtune=power9"
3bef91d
  core_with_options="--with-cpu=power9"
3bef91d
  build power9
3bef91d
)
3bef91d
%endif
3bef91d
9abcefa
##############################################################################
9abcefa
# Install glibc...
9abcefa
##############################################################################
cvsdist c381c23
%install
c13214a
6f4d10f
# The built glibc is installed into a subdirectory of $RPM_BUILD_ROOT.
6f4d10f
# For a system glibc that subdirectory is "/" (the root of the filesystem).
6f4d10f
# This is called a sysroot (system root) and can be changed if we have a
6f4d10f
# distribution that supports multiple installed glibc versions.
6f4d10f
%define glibc_sysroot $RPM_BUILD_ROOT
6f4d10f
c6e9927
# Remove existing file lists.
c6e9927
find . -type f -name '*.filelist' -exec rm -rf {} \;
c6e9927
9abcefa
# Reload compiler and build options that were used during %%build.
cvsdist c381c23
GCC=`cat Gcc`
cvsdist c381c23
16398fc
%ifarch riscv64
16398fc
# RISC-V ABI wants to install everything in /lib64/lp64d or /usr/lib64/lp64d.
16398fc
# Make these be symlinks to /lib64 or /usr/lib64 respectively.  See:
16398fc
# https://lists.fedoraproject.org/archives/list/devel@lists.fedoraproject.org/thread/DRHT5YTPK4WWVGL3GIN5BF2IKX2ODHZ3/
6f4d10f
for d in %{glibc_sysroot}%{_libdir} %{glibc_sysroot}/%{_lib}; do
16398fc
	mkdir -p $d
16398fc
	(cd $d && ln -sf . lp64d)
16398fc
done
16398fc
%endif
16398fc
6f4d10f
# Build and install:
6f4d10f
make -j1 install_root=%{glibc_sysroot} install -C build-%{target}
c6e9927
7e232bd
pushd build-%{target}
fdcac6f
# Do not use a parallel make here because the hardlink optimization in
fdcac6f
# localedef is not fully reproducible when running concurrently.
fdcac6f
make install_root=%{glibc_sysroot} \
d4d7eff
	install-locales -C ../localedata objdir=`pwd`
7e232bd
popd
cvsdist c381c23
71c008f
# install_different:
71c008f
#	Install all core libraries into DESTDIR/SUBDIR. Either the file is
71c008f
#	installed as a copy or a symlink to the default install (if it is the
71c008f
#	same). The path SUBDIR_UP is the prefix used to go from
71c008f
#	DESTDIR/SUBDIR to the default installed libraries e.g.
71c008f
#	ln -s SUBDIR_UP/foo.so DESTDIR/SUBDIR/foo.so.
71c008f
#	When you call this function it is expected that you are in the root
71c008f
#	of the build directory, and that the default build directory is:
71c008f
#	"../build-%{target}" (relatively).
71c008f
#	The primary use of this function is to install alternate runtimes
71c008f
#	into the build directory and avoid duplicating this code for each
71c008f
#	runtime.
71c008f
install_different()
71c008f
{
baa7ac6
	local lib libbase libbaseso dlib
71c008f
	local destdir="$1"
71c008f
	local subdir="$2"
71c008f
	local subdir_up="$3"
71c008f
	local libdestdir="$destdir/$subdir"
71c008f
	# All three arguments must be non-zero paths.
71c008f
	if ! [ "$destdir" \
71c008f
	       -a "$subdir" \
71c008f
	       -a "$subdir_up" ]; then
71c008f
		echo "One of the arguments to install_different was emtpy."
71c008f
		exit 1
71c008f
	fi
71c008f
	# Create the destination directory and the multilib directory.
71c008f
	mkdir -p "$destdir"
71c008f
	mkdir -p "$libdestdir"
71c008f
	# Walk all of the libraries we installed...
71c008f
	for lib in libc math/libm nptl/libpthread rt/librt nptl_db/libthread_db
71c008f
	do
71c008f
		libbase=${lib#*/}
71c008f
		# Take care that `libbaseso' has a * that needs expanding so
71c008f
		# take care with quoting.
6f4d10f
		libbaseso=$(basename %{glibc_sysroot}/%{_lib}/${libbase}-*.so)
71c008f
		# Only install if different from default build library.
71c008f
		if cmp -s ${lib}.so ../build-%{target}/${lib}.so; then
71c008f
			ln -sf "$subdir_up"/$libbaseso $libdestdir/$libbaseso
71c008f
		else
71c008f
			cp -a ${lib}.so $libdestdir/$libbaseso
71c008f
		fi
6f4d10f
		dlib=$libdestdir/$(basename %{glibc_sysroot}/%{_lib}/${libbase}.so.*)
71c008f
		ln -sf $libbaseso $dlib
71c008f
	done
71c008f
}
71c008f
3bef91d
%if %{buildpower9}
3bef91d
pushd build-%{target}-power9
3bef91d
install_different "$RPM_BUILD_ROOT/%{_lib}" power9 ..
3bef91d
popd
3bef91d
%endif
3bef91d
9abcefa
##############################################################################
cvsdist c381c23
# Remove the files we don't want to distribute
9abcefa
##############################################################################
9abcefa
9abcefa
# Remove the libNoVersion files.
9abcefa
# XXX: This looks like a bug in glibc that accidentally installed these
9abcefa
#      wrong files. We probably don't need this today.
6f4d10f
rm -f %{glibc_sysroot}/%{_libdir}/libNoVersion*
6f4d10f
rm -f %{glibc_sysroot}/%{_lib}/libNoVersion*
cvsdist c381c23
5a3b560
# Remove the old nss modules.
6f4d10f
rm -f %{glibc_sysroot}/%{_lib}/libnss1-*
6f4d10f
rm -f %{glibc_sysroot}/%{_lib}/libnss-*.so.1
24d9119
Colin Walters d8e1573
# This statically linked binary is no longer necessary in a world where
Colin Walters d8e1573
# the default Fedora install uses an initramfs, and further we have rpm-ostree
Colin Walters d8e1573
# which captures the whole userspace FS tree.
Colin Walters d8e1573
# Further, see https://github.com/projectatomic/rpm-ostree/pull/1173#issuecomment-355014583
6f4d10f
rm -f %{glibc_sysroot}/{usr/,}sbin/sln
Colin Walters d8e1573
6ff958f
######################################################################
6ff958f
# Run ldconfig to create all the symbolic links we need
6ff958f
######################################################################
6ff958f
6ff958f
# Note: This has to happen before creating /etc/ld.so.conf.
6ff958f
6f4d10f
mkdir -p %{glibc_sysroot}/var/cache/ldconfig
6f4d10f
truncate -s 0 %{glibc_sysroot}/var/cache/ldconfig/aux-cache
6ff958f
6ff958f
# ldconfig is statically linked, so we can use the new version.
6f4d10f
%{glibc_sysroot}/sbin/ldconfig -N -r %{glibc_sysroot}
6ff958f
8c7b7c2
##############################################################################
5a3b560
# Install info files
8c7b7c2
##############################################################################
8c7b7c2
Carlos O'Donell 6e8e9f6
%if %{with docs}
9abcefa
# Move the info files if glibc installed them into the wrong location.
6f4d10f
if [ -d %{glibc_sysroot}%{_prefix}/info -a "%{_infodir}" != "%{_prefix}/info" ]; then
6f4d10f
  mkdir -p %{glibc_sysroot}%{_infodir}
6f4d10f
  mv -f %{glibc_sysroot}%{_prefix}/info/* %{glibc_sysroot}%{_infodir}
6f4d10f
  rm -rf %{glibc_sysroot}%{_prefix}/info
cvsdist c381c23
fi
cvsdist c381c23
9abcefa
# Compress all of the info files.
6f4d10f
gzip -9nvf %{glibc_sysroot}%{_infodir}/libc*
Carlos O'Donell 8fdf674
Carlos O'Donell 8fdf674
%else
6f4d10f
rm -f %{glibc_sysroot}%{_infodir}/dir
6f4d10f
rm -f %{glibc_sysroot}%{_infodir}/libc.info*
Carlos O'Donell 6e8e9f6
%endif
cvsdist c381c23
5a3b560
##############################################################################
9edc2b6
# Create locale sub-package file lists
5a3b560
##############################################################################
5a3b560
5a3b560
olddir=`pwd`
6f4d10f
pushd %{glibc_sysroot}%{_prefix}/lib/locale
bd8d243
rm -f locale-archive
Carlos O'Donell f2d4020
$olddir/build-%{target}/elf/ld.so \
Carlos O'Donell f2d4020
        --library-path $olddir/build-%{target}/ \
Carlos O'Donell f2d4020
        $olddir/build-%{target}/locale/localedef \
50bcae9
	--alias-file=$olddir/intl/locale.alias \
6f4d10f
        --prefix %{glibc_sysroot} --add-to-archive \
c42d98b
        eo *_*
bd8d243
# Historically, glibc-all-langpacks deleted the file on updates (sic),
bd8d243
# so we need to restore it in the posttrans scriptlet (like the old
bd8d243
# glibc-all-langpacks versions)
bd8d243
ln locale-archive locale-archive.real
bd8d243
9edc2b6
# Create the file lists for the language specific sub-packages:
c8064eb
for i in eo *_*
9edc2b6
do
9edc2b6
    lang=${i%%_*}
9edc2b6
    if [ ! -e langpack-${lang}.filelist ]; then
9edc2b6
        echo "%dir %{_prefix}/lib/locale" >> langpack-${lang}.filelist
9edc2b6
    fi
9edc2b6
    echo "%dir  %{_prefix}/lib/locale/$i" >> langpack-${lang}.filelist
9edc2b6
    echo "%{_prefix}/lib/locale/$i/*" >> langpack-${lang}.filelist
9edc2b6
done
9edc2b6
popd
6f4d10f
pushd %{glibc_sysroot}%{_prefix}/share/locale
9edc2b6
for i in */LC_MESSAGES/libc.mo
9edc2b6
do
9edc2b6
    locale=${i%%%%/*}
9edc2b6
    lang=${locale%%%%_*}
9edc2b6
    echo "%lang($lang) %{_prefix}/share/locale/${i}" \
6f4d10f
         >> %{glibc_sysroot}%{_prefix}/lib/locale/langpack-${lang}.filelist
9edc2b6
done
5a3b560
popd
6f4d10f
mv  %{glibc_sysroot}%{_prefix}/lib/locale/*.filelist .
cvsdist c381c23
9abcefa
##############################################################################
9abcefa
# Install configuration files for services
9abcefa
##############################################################################
9abcefa
7e6e06c
install -p -m 644 nss/nsswitch.conf %{glibc_sysroot}/etc/nsswitch.conf
cvsdist c381c23
cvsdist c381c23
# This is for ncsd - in glibc 2.2
6f4d10f
install -m 644 nscd/nscd.conf %{glibc_sysroot}/etc
6f4d10f
mkdir -p %{glibc_sysroot}%{_tmpfilesdir}
7e6e06c
install -m 644 %{SOURCE1} %{buildroot}%{_tmpfilesdir}
6f4d10f
mkdir -p %{glibc_sysroot}/lib/systemd/system
6f4d10f
install -m 644 nscd/nscd.service nscd/nscd.socket %{glibc_sysroot}/lib/systemd/system
cvsdist c381c23
cvsdist c381c23
# Include ld.so.conf
6f4d10f
echo 'include ld.so.conf.d/*.conf' > %{glibc_sysroot}/etc/ld.so.conf
6f4d10f
truncate -s 0 %{glibc_sysroot}/etc/ld.so.cache
6f4d10f
chmod 644 %{glibc_sysroot}/etc/ld.so.conf
6f4d10f
mkdir -p %{glibc_sysroot}/etc/ld.so.conf.d
6f4d10f
mkdir -p %{glibc_sysroot}/etc/sysconfig
6f4d10f
truncate -s 0 %{glibc_sysroot}/etc/sysconfig/nscd
6f4d10f
truncate -s 0 %{glibc_sysroot}/etc/gai.conf
cvsdist c381c23
0d1d15d
# Include %{_libdir}/gconv/gconv-modules.cache
6f4d10f
truncate -s 0 %{glibc_sysroot}%{_libdir}/gconv/gconv-modules.cache
6f4d10f
chmod 644 %{glibc_sysroot}%{_libdir}/gconv/gconv-modules.cache
cvsdist c381c23
9abcefa
##############################################################################
3bc8fa7
# Install debug copies of unstripped static libraries
3bc8fa7
# - This step must be last in order to capture any additional static
3bc8fa7
#   archives we might have added.
3bc8fa7
##############################################################################
3bc8fa7
3bc8fa7
# If we are building a debug package then copy all of the static archives
3bc8fa7
# into the debug directory to keep them as unstripped copies.
3bc8fa7
%if 0%{?_enable_debug_packages}
6f4d10f
mkdir -p %{glibc_sysroot}%{_prefix}/lib/debug%{_libdir}
6f4d10f
cp -a %{glibc_sysroot}%{_libdir}/*.a \
6f4d10f
	%{glibc_sysroot}%{_prefix}/lib/debug%{_libdir}/
6f4d10f
rm -f %{glibc_sysroot}%{_prefix}/lib/debug%{_libdir}/*_p.a
3bc8fa7
%endif
3bc8fa7
6f4d10f
# Remove any zoneinfo files; they are maintained by tzdata.
6f4d10f
rm -rf %{glibc_sysroot}%{_prefix}/share/zoneinfo
Carlos O'Donell e4aafbc
Carlos O'Donell e4aafbc
# Make sure %config files have the same timestamp across multilib packages.
Carlos O'Donell e4aafbc
#
Carlos O'Donell e4aafbc
# XXX: Ideally ld.so.conf should have the timestamp of the spec file, but there
Carlos O'Donell e4aafbc
# doesn't seem to be any macro to give us that.  So we do the next best thing,
34927af
# which is to at least keep the timestamp consistent. The choice of using
34927af
# SOURCE0 is arbitrary.
6f4d10f
touch -r %{SOURCE0} %{glibc_sysroot}/etc/ld.so.conf
0aab7eb
touch -r inet/etc.rpc %{glibc_sysroot}/etc/rpc
Carlos O'Donell e4aafbc
Carlos O'Donell e4aafbc
# Lastly copy some additional documentation for the packages.
Carlos O'Donell e4aafbc
rm -rf documentation
Carlos O'Donell e4aafbc
mkdir documentation
Carlos O'Donell e4aafbc
cp timezone/README documentation/README.timezone
Carlos O'Donell e4aafbc
cp posix/gai.conf documentation/
Carlos O'Donell e4aafbc
Carlos O'Donell e4aafbc
%ifarch s390x
Carlos O'Donell e4aafbc
# Compatibility symlink
6f4d10f
mkdir -p %{glibc_sysroot}/lib
6f4d10f
ln -sf /%{_lib}/ld64.so.1 %{glibc_sysroot}/lib/ld64.so.1
Carlos O'Donell e4aafbc
%endif
Carlos O'Donell e4aafbc
Carlos O'Donell e4aafbc
%if %{with benchtests}
Carlos O'Donell e4aafbc
# Build benchmark binaries.  Ignore the output of the benchmark runs.
Carlos O'Donell e4aafbc
pushd build-%{target}
Carlos O'Donell e4aafbc
make BENCH_DURATION=1 bench-build
Carlos O'Donell e4aafbc
popd
Carlos O'Donell e4aafbc
Carlos O'Donell e4aafbc
# Copy over benchmark binaries.
6f4d10f
mkdir -p %{glibc_sysroot}%{_prefix}/libexec/glibc-benchtests
6f4d10f
cp $(find build-%{target}/benchtests -type f -executable) %{glibc_sysroot}%{_prefix}/libexec/glibc-benchtests/
Carlos O'Donell e4aafbc
# ... and the makefile.
7e6e06c
for b in %{SOURCE2} %{SOURCE3}; do
6f4d10f
	cp $b %{glibc_sysroot}%{_prefix}/libexec/glibc-benchtests/
Carlos O'Donell e4aafbc
done
Carlos O'Donell e4aafbc
# .. and finally, the comparison scripts.
6f4d10f
cp benchtests/scripts/benchout.schema.json %{glibc_sysroot}%{_prefix}/libexec/glibc-benchtests/
6f4d10f
cp benchtests/scripts/compare_bench.py %{glibc_sysroot}%{_prefix}/libexec/glibc-benchtests/
6f4d10f
cp benchtests/scripts/import_bench.py %{glibc_sysroot}%{_prefix}/libexec/glibc-benchtests/
6f4d10f
cp benchtests/scripts/validate_benchout.py %{glibc_sysroot}%{_prefix}/libexec/glibc-benchtests/
134a36d
%endif
Carlos O'Donell e4aafbc
Carlos O'Donell e4aafbc
%if 0%{?_enable_debug_packages}
Carlos O'Donell e4aafbc
# The #line directives gperf generates do not give the proper
Carlos O'Donell e4aafbc
# file name relative to the build directory.
Carlos O'Donell e4aafbc
pushd locale
Carlos O'Donell e4aafbc
ln -s programs/*.gperf .
Carlos O'Donell e4aafbc
popd
Carlos O'Donell e4aafbc
pushd iconv
Carlos O'Donell e4aafbc
ln -s ../locale/programs/charmap-kw.gperf .
Carlos O'Donell e4aafbc
popd
Carlos O'Donell e4aafbc
Carlos O'Donell e4aafbc
%if %{with docs}
Carlos O'Donell e4aafbc
# Remove the `dir' info-heirarchy file which will be maintained
Carlos O'Donell e4aafbc
# by the system as it adds info files to the install.
6f4d10f
rm -f %{glibc_sysroot}%{_infodir}/dir
Carlos O'Donell e4aafbc
%endif
Carlos O'Donell e4aafbc
6f4d10f
mkdir -p %{glibc_sysroot}/var/{db,run}/nscd
6f4d10f
touch %{glibc_sysroot}/var/{db,run}/nscd/{passwd,group,hosts,services}
6f4d10f
touch %{glibc_sysroot}/var/run/nscd/{socket,nscd.pid}
Carlos O'Donell e4aafbc
Carlos O'Donell e4aafbc
# Move libpcprofile.so and libmemusage.so into the proper library directory.
Carlos O'Donell e4aafbc
# They can be moved without any real consequences because users would not use
Carlos O'Donell e4aafbc
# them directly.
6f4d10f
mkdir -p %{glibc_sysroot}%{_libdir}
6f4d10f
mv -f %{glibc_sysroot}/%{_lib}/lib{pcprofile,memusage}.so \
6f4d10f
	%{glibc_sysroot}%{_libdir}
Carlos O'Donell e4aafbc
Carlos O'Donell e4aafbc
# Strip all of the installed object files.
6f4d10f
strip -g %{glibc_sysroot}%{_libdir}/*.o
Carlos O'Donell e4aafbc
Carlos O'Donell e4aafbc
###############################################################################
Carlos O'Donell e4aafbc
# Rebuild libpthread.a using --whole-archive to ensure all of libpthread
Carlos O'Donell e4aafbc
# is included in a static link. This prevents any problems when linking
Carlos O'Donell e4aafbc
# statically, using parts of libpthread, and other necessary parts not
Carlos O'Donell e4aafbc
# being included. Upstream has decided that this is the wrong approach to
Carlos O'Donell e4aafbc
# this problem and that the full set of dependencies should be resolved
Carlos O'Donell e4aafbc
# such that static linking works and produces the most minimally sized
Carlos O'Donell e4aafbc
# static application possible.
Carlos O'Donell e4aafbc
###############################################################################
6f4d10f
pushd %{glibc_sysroot}%{_prefix}/%{_lib}/
Carlos O'Donell e4aafbc
$GCC -r -nostdlib -o libpthread.o -Wl,--whole-archive ./libpthread.a
Carlos O'Donell e4aafbc
rm libpthread.a
Carlos O'Donell e4aafbc
ar rcs libpthread.a libpthread.o
Carlos O'Donell e4aafbc
rm libpthread.o
Carlos O'Donell e4aafbc
popd
Carlos O'Donell e4aafbc
6f4d10f
# The xtrace and memusage scripts have hard-coded paths that need to be
6f4d10f
# translated to a correct set of paths using the $LIB token which is
6f4d10f
# dynamically translated by ld.so as the default lib directory.
6f4d10f
for i in %{glibc_sysroot}%{_prefix}/bin/{xtrace,memusage}; do
6f4d10f
%if %{with bootstrap}
6f4d10f
  test -w $i || continue
6f4d10f
%endif
6f4d10f
  sed -e 's~=/%{_lib}/libpcprofile.so~=%{_libdir}/libpcprofile.so~' \
6f4d10f
      -e 's~=/%{_lib}/libmemusage.so~=%{_libdir}/libmemusage.so~' \
6f4d10f
      -e 's~='\''/\\\$LIB/libpcprofile.so~='\''%{_prefix}/\\$LIB/libpcprofile.so~' \
6f4d10f
      -e 's~='\''/\\\$LIB/libmemusage.so~='\''%{_prefix}/\\$LIB/libmemusage.so~' \
6f4d10f
      -i $i
6f4d10f
done
6f4d10f
Carlos O'Donell e4aafbc
##############################################################################
Carlos O'Donell 9588eec
# Build an empty libpthread_nonshared.a for compatiliby with applications
Carlos O'Donell 9588eec
# that have old linker scripts that reference this file. We ship this only
Carlos O'Donell 9588eec
# in compat-libpthread-nonshared sub-package.
Carlos O'Donell 9588eec
##############################################################################
Carlos O'Donell 9588eec
ar cr %{glibc_sysroot}%{_prefix}/%{_lib}/libpthread_nonshared.a
Carlos O'Donell 9588eec
Carlos O'Donell 9588eec
##############################################################################
Carlos O'Donell e4aafbc
# Beyond this point in the install process we no longer modify the set of
0fb8a56
# installed files.
Carlos O'Donell e4aafbc
##############################################################################
Carlos O'Donell e4aafbc
3bc8fa7
##############################################################################
9abcefa
# Build the file lists used for describing the package and subpackages.
9abcefa
##############################################################################
d5e9ea2
# There are several main file lists (and many more for
9edc2b6
# the langpack sub-packages (langpack-${lang}.filelist)):
092cf93
# * master.filelist
6f4d10f
#	- Master file list from which all other lists are built.
6f4d10f
# * glibc.filelist
6f4d10f
#	- Files for the glibc packages.
9abcefa
# * common.filelist
6f4d10f
#	- Flies for the common subpackage.
9abcefa
# * utils.filelist
6f4d10f
#	- Files for the utils subpackage.
9abcefa
# * nscd.filelist
6f4d10f
#	- Files for the nscd subpackage.
9abcefa
# * devel.filelist
6f4d10f
#	- Files for the devel subpackage.
9abcefa
# * headers.filelist
6f4d10f
#	- Files for the headers subpackage.
9abcefa
# * static.filelist
6f4d10f
#	- Files for the static subpackage.
b8bc11a
# * libnsl.filelist
6f4d10f
#       - Files for the libnsl subpackage
6f4d10f
# * nss_db.filelist
6f4d10f
# * nss_hesiod.filelist
d5e9ea2
#       - File lists for nss_* NSS module subpackages.
d5e9ea2
# * nss-devel.filelist
d5e9ea2
#       - File list with the .so symbolic links for NSS packages.
Carlos O'Donell 9588eec
# * compat-libpthread-nonshared.filelist.
Carlos O'Donell 9588eec
#	- File list for compat-libpthread-nonshared subpackage.
9abcefa
# * debuginfo.filelist
6f4d10f
#	- Files for the glibc debuginfo package.
9abcefa
# * debuginfocommon.filelist
6f4d10f
#	- Files for the glibc common debuginfo package.
9abcefa
#
9abcefa
6f4d10f
# Create the main file lists. This way we can append to any one of them later
6f4d10f
# wihtout having to create it. Note these are removed at the start of the
6f4d10f
# install phase.
092cf93
touch master.filelist
6f4d10f
touch glibc.filelist
6f4d10f
touch common.filelist
6f4d10f
touch utils.filelist
6f4d10f
touch nscd.filelist
6f4d10f
touch devel.filelist
6f4d10f
touch headers.filelist
6f4d10f
touch static.filelist
6f4d10f
touch libnsl.filelist
6f4d10f
touch nss_db.filelist
6f4d10f
touch nss_hesiod.filelist
6f4d10f
touch nss-devel.filelist
Carlos O'Donell 9588eec
touch compat-libpthread-nonshared.filelist
6f4d10f
touch debuginfo.filelist
6f4d10f
touch debuginfocommon.filelist
6f4d10f
6f4d10f
###############################################################################
6f4d10f
# Master file list, excluding a few things.
6f4d10f
###############################################################################
Andreas Schwab 237bb90
{
6f4d10f
  # List all files or links that we have created during install.
6f4d10f
  # Files with 'etc' are configuration files, likewise 'gconv-modules'
6f4d10f
  # and 'gconv-modules.cache' are caches, and we exclude them.
6f4d10f
  find %{glibc_sysroot} \( -type f -o -type l \) \
Andreas Schwab 237bb90
       \( \
Andreas Schwab 237bb90
	 -name etc -printf "%%%%config " -o \
Andreas Schwab 237bb90
	 -name gconv-modules \
Andreas Schwab 237bb90
	 -printf "%%%%verify(not md5 size mtime) %%%%config(noreplace) " -o \
Andreas Schwab 237bb90
	 -name gconv-modules.cache \
Andreas Schwab 237bb90
	 -printf "%%%%verify(not md5 size mtime) " \
Andreas Schwab 237bb90
	 , \
Andreas Schwab 6843c2d
	 ! -path "*/lib/debug/*" -printf "/%%P\n" \)
6f4d10f
  # List all directories with a %%dir prefix.  We omit the info directory and
Siddhesh Poyarekar aeaedc4
  # all directories in (and including) /usr/share/locale.
6f4d10f
  find %{glibc_sysroot} -type d \
Siddhesh Poyarekar aeaedc4
       \( -path '*%{_prefix}/share/locale' -prune -o \
Carlos O'Donell 6e8e9f6
       \( -path '*%{_prefix}/share/*' \
Carlos O'Donell 6e8e9f6
%if %{with docs}
Carlos O'Donell 6e8e9f6
	! -path '*%{_infodir}' -o \
Carlos O'Donell 6e8e9f6
%endif
Andreas Schwab 976b178
	  -path "*%{_prefix}/include/*" \
Siddhesh Poyarekar aeaedc4
       \) -printf "%%%%dir /%%P\n" \)
Andreas Schwab 237bb90
} | {
9edc2b6
  # Also remove the *.mo entries.  We will add them to the
9edc2b6
  # language specific sub-packages.
d5e9ea2
  # libnss_ files go into subpackages related to NSS modules.
9edc2b6
  # and .*/share/i18n/charmaps/.*), they go into the sub-package
d5e9ea2
  # "locale-source":
Siddhesh Poyarekar 0cda723
  sed -e '\,.*/share/locale/\([^/_]\+\).*/LC_MESSAGES/.*\.mo,d' \
9edc2b6
      -e '\,.*/share/i18n/locales/.*,d' \
9edc2b6
      -e '\,.*/share/i18n/charmaps/.*,d' \
6f4d10f
      -e '\,.*/etc/\(localtime\|nsswitch.conf\|ld\.so\.conf\|ld\.so\.cache\|default\|rpc\|gai\.conf\),d' \
6f4d10f
      -e '\,.*/%{_libdir}/lib\(pcprofile\|memusage\)\.so,d' \
6f4d10f
      -e '\,.*/bin/\(memusage\|mtrace\|xtrace\|pcprofiledump\),d'
092cf93
} | sort > master.filelist
cvsdist c381c23
6f4d10f
# The master file list is now used by each subpackage to list their own
6f4d10f
# files. We go through each package and subpackage now and create their lists.
6f4d10f
# Each subpackage picks the files from the master list that they need.
6f4d10f
# The order of the subpackage list generation does not matter.
Siddhesh Poyarekar 0cda723
092cf93
# Make the master file list read-only after this point to avoid accidental
092cf93
# modification.
092cf93
chmod 0444 master.filelist
092cf93
6f4d10f
###############################################################################
6f4d10f
# glibc
6f4d10f
###############################################################################
6f4d10f
6f4d10f
# Add all files with the following exceptions:
6f4d10f
# - The info files '%{_infodir}/dir'
6f4d10f
# - The partial (lib*_p.a) static libraries, include files.
6f4d10f
# - The static files, objects, unversioned DSOs, and nscd.
6f4d10f
# - The bin, locale, some sbin, and share.
34927af
#   - We want iconvconfig in the main package and we do this by using
34927af
#     a double negation of -v and [^i] so it removes all files in
34927af
#     sbin *but* iconvconfig.
6f4d10f
# - All the libnss files (we add back the ones we want later).
6f4d10f
# - All bench test binaries.
6f4d10f
# - The aux-cache, since it's handled specially in the files section.
092cf93
cat master.filelist \
6f4d10f
	| grep -v \
6f4d10f
	-e '%{_infodir}' \
6f4d10f
	-e '%{_libdir}/lib.*_p.a' \
6f4d10f
	-e '%{_prefix}/include' \
6f4d10f
	-e '%{_libdir}/lib.*\.a' \
6f4d10f
        -e '%{_libdir}/.*\.o' \
6f4d10f
	-e '%{_libdir}/lib.*\.so' \
6f4d10f
	-e 'nscd' \
6f4d10f
	-e '%{_prefix}/bin' \
6f4d10f
	-e '%{_prefix}/lib/locale' \
34927af
	-e '%{_prefix}/sbin/[^i]' \
6f4d10f
	-e '%{_prefix}/share' \
6f4d10f
	-e '/var/db/Makefile' \
6f4d10f
	-e '/libnss_.*\.so[0-9.]*$' \
6f4d10f
	-e '/libnsl' \
6f4d10f
	-e 'glibc-benchtests' \
6f4d10f
	-e 'aux-cache' \
6f4d10f
	> glibc.filelist
6f4d10f
6f4d10f
# Add specific files:
6f4d10f
# - The nss_files, nss_compat, and nss_db files.
6f4d10f
# - The libmemusage.so and libpcprofile.so used by utils.
6f4d10f
for module in compat files dns; do
092cf93
    cat master.filelist \
6f4d10f
	| grep -E \
6f4d10f
	-e "/libnss_$module(\.so\.[0-9.]+|-[0-9.]+\.so)$" \
6f4d10f
	>> glibc.filelist
cvsdist c381c23
done
092cf93
grep -e "libmemusage.so" -e "libpcprofile.so" master.filelist >> glibc.filelist
6f4d10f
6f4d10f
###############################################################################
6f4d10f
# glibc-devel
6f4d10f
###############################################################################
cvsdist c381c23
Carlos O'Donell 6e8e9f6
%if %{with docs}
6f4d10f
# Put the info files into the devel file list, but exclude the generated dir.
092cf93
grep '%{_infodir}' master.filelist | grep -v '%{_infodir}/dir' > devel.filelist
Carlos O'Donell 6e8e9f6
%endif
9abcefa
6f4d10f
# Put some static files into the devel package.
092cf93
grep '%{_libdir}/lib.*\.a' master.filelist \
6f4d10f
  | grep '/lib\(\(c\|pthread\|nldbl\|mvec\)_nonshared\|g\|ieee\|mcheck\)\.a$' \
6f4d10f
  >> devel.filelist
6f4d10f
6f4d10f
# Put all of the object files and *.so (not the versioned ones) into the
6f4d10f
# devel package.
092cf93
grep '%{_libdir}/.*\.o' < master.filelist >> devel.filelist
092cf93
grep '%{_libdir}/lib.*\.so' < master.filelist >> devel.filelist
6f4d10f
# The exceptions are:
6f4d10f
# - libmemusage.so and libpcprofile.so in glibc used by utils.
6f4d10f
# - libnss_*.so which are in nss-devel.
6f4d10f
sed -i -e '\,libmemusage.so,d' \
6f4d10f
	-e '\,libpcprofile.so,d' \
6f4d10f
	-e '\,/libnss_[a-z]*\.so$,d' \
6f4d10f
	devel.filelist
6f4d10f
6f4d10f
###############################################################################
6f4d10f
# glibc-headers
6f4d10f
###############################################################################
6f4d10f
711089d
%if %{need_headers_package}
Carlos O'Donell e63fda9
# The glibc-headers package includes only common files which are identical
Carlos O'Donell e63fda9
# across all multilib packages. We must keep gnu/stubs.h and gnu/lib-names.h
Carlos O'Donell e63fda9
# in the glibc-headers package, but the -32, -64, -64-v1, and -64-v2 versions
711089d
# go into glibc-devel.
092cf93
grep '%{_prefix}/include/gnu/stubs-.*\.h$' < master.filelist >> devel.filelist || :
092cf93
grep '%{_prefix}/include/gnu/lib-names-.*\.h$' < master.filelist >> devel.filelist || :
9abcefa
# Put the include files into headers file list.
092cf93
grep '%{_prefix}/include' < master.filelist \
Carlos O'Donell 2542c05
  | egrep -v '%{_prefix}/include/gnu/stubs-.*\.h$' \
Carlos O'Donell 2542c05
  | egrep -v '%{_prefix}/include/gnu/lib-names-.*\.h$' \
Carlos O'Donell e63fda9
  > headers.filelist
711089d
%else
711089d
# If there is no glibc-headers package, all header files go into the
711089d
# glibc-devel package.
711089d
grep '%{_prefix}/include' < master.filelist >> devel.filelist
711089d
%endif
cvsdist c381c23
6f4d10f
###############################################################################
6f4d10f
# glibc-static
6f4d10f
###############################################################################
9abcefa
9abcefa
# Put the rest of the static files into the static package.
092cf93
grep '%{_libdir}/lib.*\.a' < master.filelist \
d62730d
  | grep -v '/lib\(\(c\|pthread\|nldbl\|mvec\)_nonshared\|g\|ieee\|mcheck\)\.a$' \
65bf1c4
  > static.filelist
9abcefa
6f4d10f
###############################################################################
6f4d10f
# glibc-common
6f4d10f
###############################################################################
6f4d10f
6f4d10f
# All of the bin and certain sbin files go into the common package except
34927af
# iconvconfig which needs to go in glibc. Likewise nscd is excluded because
34927af
# it goes in nscd. The iconvconfig binary is kept in the main glibc package
34927af
# because we use it in the post-install scriptlet to rebuild the
DJ Delorie 1fa2170
# gconv-modules.cache.  The makedb binary is in nss_db.
DJ Delorie 1fa2170
grep '%{_prefix}/bin' master.filelist \
DJ Delorie 1fa2170
	| grep -v '%{_prefix}/bin/makedb' \
DJ Delorie 1fa2170
	>> common.filelist
34927af
grep '%{_prefix}/sbin' master.filelist \
34927af
	| grep -v '%{_prefix}/sbin/iconvconfig' \
6f4d10f
	| grep -v 'nscd' >> common.filelist
6f4d10f
# All of the files under share go into the common package since they should be
6f4d10f
# multilib-independent.
6f4d10f
# Exceptions:
6f4d10f
# - The actual share directory, not owned by us.
6f4d10f
# - The info files which go in devel, and the info directory.
092cf93
grep '%{_prefix}/share' master.filelist \
6f4d10f
	| grep -v \
6f4d10f
	-e '%{_prefix}/share/info/libc.info.*' \
6f4d10f
	-e '%%dir %{prefix}/share/info' \
6f4d10f
	-e '%%dir %{prefix}/share' \
6f4d10f
	>> common.filelist
cvsdist c381c23
6f4d10f
###############################################################################
6f4d10f
# nscd
6f4d10f
###############################################################################
6f4d10f
9abcefa
# The nscd binary must go into the nscd subpackage.
cvsdist c381c23
echo '%{_prefix}/sbin/nscd' > nscd.filelist
cvsdist c381c23
6f4d10f
###############################################################################
6f4d10f
# glibc-utils
6f4d10f
###############################################################################
9abcefa
9abcefa
# Add the utils scripts and programs to the utils subpackage.
Andreas Schwab aeada30
cat > utils.filelist <
Andreas Krebbel 71d4a02
%if %{without bootstrap}
cvsdist c381c23
%{_prefix}/bin/memusage
cvsdist c381c23
%{_prefix}/bin/memusagestat
Jeroen van Meeuwen (Kolab Systems) 5b4007b
%endif
Jeroen van Meeuwen (Kolab Systems) 97506ad
%{_prefix}/bin/mtrace
cvsdist c381c23
%{_prefix}/bin/pcprofiledump
cvsdist c381c23
%{_prefix}/bin/xtrace
cvsdist c381c23
EOF
cvsdist c381c23
6f4d10f
###############################################################################
6f4d10f
# nss_db, nss_hesiod
6f4d10f
###############################################################################
6f4d10f
d5e9ea2
# Move the NSS-related files to the NSS subpackages.  Be careful not
d5e9ea2
# to pick up .debug files, and the -devel symbolic links.
6f4d10f
for module in db hesiod; do
d5e9ea2
  grep -E "/libnss_$module(\.so\.[0-9.]+|-[0-9.]+\.so)$" \
092cf93
    master.filelist > nss_$module.filelist
d5e9ea2
done
DJ Delorie 1fa2170
grep -E "%{_prefix}/bin/makedb$" master.filelist >> nss_db.filelist
6f4d10f
6f4d10f
###############################################################################
6f4d10f
# nss-devel
6f4d10f
###############################################################################
6f4d10f
d5e9ea2
# Symlinks go into the nss-devel package (instead of the main devel
d5e9ea2
# package).
092cf93
grep '/libnss_[a-z]*\.so$' master.filelist > nss-devel.filelist
6f4d10f
6f4d10f
###############################################################################
6f4d10f
# libnsl
6f4d10f
###############################################################################
d5e9ea2
b8bc11a
# Prepare the libnsl-related file lists.
092cf93
grep '/libnsl-[0-9.]*.so$' master.filelist > libnsl.filelist
b8bc11a
test $(wc -l < libnsl.filelist) -eq 1
6f4d10f
Jeroen van Meeuwen (Kolab Systems) 5b4007b
%if %{with benchtests}
6f4d10f
###############################################################################
6f4d10f
# glibc-benchtests
6f4d10f
###############################################################################
b8bc11a
Carlos O'Donell e4aafbc
# List of benchmarks.
Siddhesh Poyarekar 67b30d7
find build-%{target}/benchtests -type f -executable | while read b; do
Siddhesh Poyarekar 67b30d7
	echo "%{_prefix}/libexec/glibc-benchtests/$(basename $b)"
Siddhesh Poyarekar 67b30d7
done >> benchtests.filelist
Siddhesh Poyarekar 67b30d7
# ... and the makefile.
7e6e06c
for b in %{SOURCE2} %{SOURCE3}; do
Siddhesh Poyarekar 67b30d7
	echo "%{_prefix}/libexec/glibc-benchtests/$(basename $b)" >> benchtests.filelist
Siddhesh Poyarekar 67b30d7
done
Carlos O'Donell e4aafbc
# ... and finally, the comparison scripts.
Siddhesh Poyarekar 67b30d7
echo "%{_prefix}/libexec/glibc-benchtests/benchout.schema.json" >> benchtests.filelist
Siddhesh Poyarekar 67b30d7
echo "%{_prefix}/libexec/glibc-benchtests/compare_bench.py*" >> benchtests.filelist
Siddhesh Poyarekar 67b30d7
echo "%{_prefix}/libexec/glibc-benchtests/import_bench.py*" >> benchtests.filelist
Siddhesh Poyarekar 67b30d7
echo "%{_prefix}/libexec/glibc-benchtests/validate_benchout.py*" >> benchtests.filelist
Siddhesh Poyarekar 67b30d7
%endif
Siddhesh Poyarekar 67b30d7
9abcefa
###############################################################################
Carlos O'Donell 9588eec
# compat-libpthread-nonshared
Carlos O'Donell 9588eec
###############################################################################
Carlos O'Donell 9588eec
echo "%{_libdir}/libpthread_nonshared.a" >> compat-libpthread-nonshared.filelist
Carlos O'Donell 9588eec
Carlos O'Donell 9588eec
###############################################################################
6f4d10f
# glibc-debuginfocommon, and glibc-debuginfo
9abcefa
###############################################################################
65bf1c4
dcaaa78
find_debuginfo_args='--strict-build-id -g -i'
e0b4499
%ifarch %{debuginfocommonarches}
e0b4499
find_debuginfo_args="$find_debuginfo_args \
d4d7eff
	-l common.filelist \
d4d7eff
	-l utils.filelist \
d4d7eff
	-l nscd.filelist \
b8e4762
	-p '.*/(sbin|libexec)/.*' \
d4d7eff
	-o debuginfocommon.filelist \
b8bc11a
	-l nss_db.filelist -l nss_hesiod.filelist \
6f4d10f
	-l libnsl.filelist -l glibc.filelist \
Carlos O'Donell 6e8e9f6
%if %{with benchtests}
6e6bd41
	-l benchtests.filelist
Carlos O'Donell 6e8e9f6
%endif
6e6bd41
	"
e0b4499
%endif
6f4d10f
fce9549
/usr/lib/rpm/find-debuginfo.sh $find_debuginfo_args -o debuginfo.filelist
cvsdist c381c23
9abcefa
# List all of the *.a archives in the debug directory.
e0b4499
list_debug_archives()
e0b4499
{
0d1d15d
	local dir=%{_prefix}/lib/debug%{_libdir}
6f4d10f
	find %{glibc_sysroot}$dir -name "*.a" -printf "$dir/%%P\n"
e0b4499
}
cvsdist c381c23
cvsdist c381c23
%ifarch %{debuginfocommonarches}
e0b4499
9abcefa
# Remove the source files from the common package debuginfo.
6f4d10f
sed -i '\#^%{glibc_sysroot}%{_prefix}/src/debug/#d' debuginfocommon.filelist
9abcefa
9abcefa
# Create a list of all of the source files we copied to the debug directory.
6f4d10f
find %{glibc_sysroot}%{_prefix}/src/debug \
Andreas Schwab 87a7e49
     \( -type d -printf '%%%%dir ' \) , \
Andreas Schwab 87a7e49
     -printf '%{_prefix}/src/debug/%%P\n' > debuginfocommon.sources
Andreas Schwab 87a7e49
Andreas Schwab 87a7e49
%ifarch %{biarcharches}
Andreas Schwab 87a7e49
9abcefa
# Add the source files to the core debuginfo package.
Andreas Schwab 87a7e49
cat debuginfocommon.sources >> debuginfo.filelist
Andreas Schwab 87a7e49
Andreas Schwab 87a7e49
%else
Andreas Schwab 87a7e49
cvsdist c381c23
%ifarch %{ix86}
Andreas Schwab 50a0037
%define basearch i686
cvsdist c381c23
%endif
cvsdist c381c23
%ifarch sparc sparcv9
cvsdist c381c23
%define basearch sparc
cvsdist c381c23
%endif
e0b4499
9abcefa
# The auxarches get only these few source files.
e0b4499
auxarches_debugsources=\
e0b4499
'/(generic|linux|%{basearch}|nptl(_db)?)/|/%{glibcsrcdir}/build|/dl-osinfo\.h'
e0b4499
9abcefa
# Place the source files into the core debuginfo pakcage.
e0b4499
egrep "$auxarches_debugsources" debuginfocommon.sources >> debuginfo.filelist
e0b4499
9abcefa
# Remove the source files from the common debuginfo package.
e0b4499
egrep -v "$auxarches_debugsources" \
ffc48ad
  debuginfocommon.sources >> debuginfocommon.filelist
e0b4499
134a36d
%endif
Andreas Schwab 87a7e49
9abcefa
# Add the list of *.a archives in the debug directory to
9abcefa
# the common debuginfo package.
e0b4499
list_debug_archives >> debuginfocommon.filelist
e0b4499
134a36d
%endif
cvsdist c381c23
Siddhesh Poyarekar 7007495
# Remove some common directories from the common package debuginfo so that we
Siddhesh Poyarekar 7007495
# don't end up owning them.
Siddhesh Poyarekar 7007495
exclude_common_dirs()
Siddhesh Poyarekar 7007495
{
Siddhesh Poyarekar 7007495
	exclude_dirs="%{_prefix}/src/debug"
Siddhesh Poyarekar 7007495
	exclude_dirs="$exclude_dirs $(echo %{_prefix}/lib/debug{,/%{_lib},/bin,/sbin})"
Siddhesh Poyarekar 7007495
	exclude_dirs="$exclude_dirs $(echo %{_prefix}/lib/debug%{_prefix}{,/%{_lib},/libexec,/bin,/sbin})"
Siddhesh Poyarekar 7007495
Siddhesh Poyarekar 7007495
	for d in $(echo $exclude_dirs | sed 's/ /\n/g'); do
Siddhesh Poyarekar 7007495
		sed -i "\|^%%dir $d/\?$|d" $1
Siddhesh Poyarekar 7007495
	done
Siddhesh Poyarekar 7007495
}
Siddhesh Poyarekar 7007495
Siddhesh Poyarekar 7007495
%ifarch %{debuginfocommonarches}
Siddhesh Poyarekar 7007495
exclude_common_dirs debuginfocommon.filelist
Siddhesh Poyarekar 7007495
%endif
Siddhesh Poyarekar 7007495
exclude_common_dirs debuginfo.filelist
Siddhesh Poyarekar 7007495
134a36d
%endif
e0b4499
Carlos O'Donell e4aafbc
##############################################################################
7448524
# Run the glibc testsuite
7448524
##############################################################################
7448524
%check
Carlos O'Donell 6e8e9f6
%if %{with testsuite}
f515946
5c2fe5c
# Run the glibc tests. If any tests fail to build we exit %check with
5c2fe5c
# an error, otherwise we print the test failure list and the failed
5c2fe5c
# test output and continue.  Write to standard error to avoid
5c2fe5c
# synchronization issues with make and shell tracing output if
5c2fe5c
# standard output and standard error are different pipes.
f515946
run_tests () {
5c2fe5c
  # This hides a test suite build failure, which should be fatal.  We
5c2fe5c
  # check "Summary of test results:" below to verify that all tests
5c2fe5c
  # were built and run.
9bc189f
  %make_build check |& tee rpmbuild.check.log >&2
5c2fe5c
  test -n tests.sum
5c2fe5c
  if ! grep -q '^Summary of test results:$' rpmbuild.check.log ; then
5c2fe5c
    echo "FAIL: test suite build of target: $(basename "$(pwd)")" >& 2
5c2fe5c
    exit 1
5c2fe5c
  fi
5c2fe5c
  set +x
5c2fe5c
  grep -v ^PASS: tests.sum > rpmbuild.tests.sum.not-passing || true
5c2fe5c
  if test -n rpmbuild.tests.sum.not-passing ; then
5c2fe5c
    echo ===================FAILED TESTS===================== >&2
5c2fe5c
    echo "Target: $(basename "$(pwd)")" >& 2
5c2fe5c
    cat rpmbuild.tests.sum.not-passing >&2
5c2fe5c
    while read failed_code failed_test ; do
5c2fe5c
      for suffix in out test-result ; do
5c2fe5c
        if test -e "$failed_test.$suffix"; then
5c2fe5c
	  echo >&2
5c2fe5c
          echo "=====$failed_code $failed_test.$suffix=====" >&2
5c2fe5c
          cat -- "$failed_test.$suffix" >&2
5c2fe5c
	  echo >&2
5c2fe5c
        fi
5c2fe5c
      done
5c2fe5c
    done 
5c2fe5c
  fi
5c2fe5c
5c2fe5c
  # Unconditonally dump differences in the system call list.
5c2fe5c
  echo "* System call consistency checks:" >&2
5c2fe5c
  cat misc/tst-syscall-list.out >&2
5c2fe5c
  set -x
f515946
}
f515946
7448524
# Increase timeouts
7448524
export TIMEOUTFACTOR=16
7448524
parent=$$
7448524
echo ====================TESTING=========================
3bef91d
3bef91d
# Default libraries.
7448524
pushd build-%{target}
f515946
run_tests
7448524
popd
7448524
3bef91d
%if %{buildpower9}
3bef91d
echo ====================TESTING -mcpu=power9=============
3bef91d
pushd build-%{target}-power9
3bef91d
run_tests
3bef91d
popd
3bef91d
%endif
3bef91d
3bef91d
3bef91d
7448524
echo ====================TESTING END=====================
7448524
PLTCMD='/^Relocation section .*\(\.rela\?\.plt\|\.rela\.IA_64\.pltoff\)/,/^$/p'
7448524
echo ====================PLT RELOCS LD.SO================
6f4d10f
readelf -Wr %{glibc_sysroot}/%{_lib}/ld-*.so | sed -n -e "$PLTCMD"
7448524
echo ====================PLT RELOCS LIBC.SO==============
6f4d10f
readelf -Wr %{glibc_sysroot}/%{_lib}/libc-*.so | sed -n -e "$PLTCMD"
7448524
echo ====================PLT RELOCS END==================
7448524
a548534
# Obtain a way to run the dynamic loader.  Avoid matching the symbolic
a548534
# link and then pick the first loader (although there should be only
a548534
# one).
a548534
run_ldso="$(find %{glibc_sysroot}/%{_lib}/ld-*.so -type f | LC_ALL=C sort | head -n1) --library-path %{glibc_sysroot}/%{_lib}"
9d8ea8c
9d8ea8c
# Show the auxiliary vector as seen by the new library
9d8ea8c
# (even if we do not perform the valgrind test).
a548534
LD_SHOW_AUXV=1 $run_ldso /bin/true
9d8ea8c
a548534
# Finally, check if valgrind runs with the new glibc.
a548534
# We want to fail building if valgrind is not able to run with this glibc so
a548534
# that we can then coordinate with valgrind to get it fixed before we update
a548534
# glibc.
9d8ea8c
%if %{with valgrind}
a548534
$run_ldso /usr/bin/valgrind --error-exitcode=1 \
a548534
	$run_ldso /usr/bin/true
a548534
# true --help performs some memory allocations.
a548534
$run_ldso /usr/bin/valgrind --error-exitcode=1 \
a548534
	$run_ldso /usr/bin/true --help >/dev/null
Siddhesh Poyarekar e9a7f4c
%endif
Siddhesh Poyarekar e9a7f4c
134a36d
%endif
7448524
7448524
Andreas Schwab 9603304
%pre -p <lua>
Andreas Schwab 9603304
-- Check that the running kernel is new enough
Andreas Schwab 9603304
required = '%{enablekernel}'
Andreas Schwab 7dc6703
rel = posix.uname("%r")
Andreas Schwab 7dc6703
if rpm.vercmp(rel, required) < 0 then
Andreas Schwab 7dc6703
  error("FATAL: kernel too old", 0)
Andreas Schwab 9603304
end
Andreas Schwab 9603304
34927af
%post -p <lua>
34927af
-- We use lua's posix.exec because there may be no shell that we can
34927af
-- run during glibc upgrade.
34927af
function post_exec (program, ...)
34927af
  local pid = posix.fork ()
34927af
  if pid == 0 then
34927af
    assert (posix.exec (program, ...))
34927af
  elseif pid > 0 then
34927af
    posix.wait (pid)
34927af
  end
34927af
end
34927af
34927af
-- (1) Remove multilib libraries from previous installs.
34927af
-- In order to support in-place upgrades, we must immediately remove
34927af
-- obsolete platform directories after installing a new glibc
34927af
-- version.  RPM only deletes files removed by updates near the end
34927af
-- of the transaction.  If we did not remove the obsolete platform
34927af
-- directories here, they may be preferred by the dynamic linker
34927af
-- during the execution of subsequent RPM scriptlets, likely
34927af
-- resulting in process startup failures.
34927af
34927af
-- Full set of libraries glibc may install.
34927af
install_libs = { "anl", "BrokenLocale", "c", "dl", "m", "mvec",
34927af
		 "nss_compat", "nss_db", "nss_dns", "nss_files",
34927af
		 "nss_hesiod", "pthread", "resolv", "rt", "SegFault",
34927af
		 "thread_db", "util" }
34927af
34927af
-- We are going to remove these libraries. Generally speaking we remove
34927af
-- all core libraries in the multilib directory.
34927af
-- We employ a tight match where X.Y is in [2.0,9.9*], so we would 
34927af
-- match "libc-2.0.so" and so on up to "libc-9.9*".
34927af
remove_regexps = {}
34927af
for i = 1, #install_libs do
34927af
  remove_regexps[i] = ("lib" .. install_libs[i]
34927af
                       .. "%%-[2-9]%%.[0-9]+%%.so$")
34927af
end
34927af
34927af
-- Two exceptions:
34927af
remove_regexps[#install_libs + 1] = "libthread_db%%-1%%.0%%.so"
34927af
remove_regexps[#install_libs + 2] = "libSegFault%%.so"
34927af
34927af
-- We are going to search these directories.
34927af
local remove_dirs = { "%{_libdir}/i686",
34927af
		      "%{_libdir}/i686/nosegneg",
34927af
		      "%{_libdir}/power6",
34927af
		      "%{_libdir}/power7",
34927af
		      "%{_libdir}/power8" }
34927af
34927af
-- Walk all the directories with files we need to remove...
34927af
for _, rdir in ipairs (remove_dirs) do
34927af
  if posix.access (rdir) then
34927af
    -- If the directory exists we look at all the files...
34927af
    local remove_files = posix.files (rdir)
34927af
    for rfile in remove_files do
34927af
      for _, rregexp in ipairs (remove_regexps) do
34927af
	-- Does it match the regexp?
34927af
	local dso = string.match (rfile, rregexp)
34927af
        if (dso ~= nil) then
34927af
	  -- Removing file...
34927af
	  os.remove (rdir .. '/' .. rfile)
34927af
	end
34927af
      end
34927af
    end
34927af
  end
34927af
end
34927af
34927af
-- (2) Update /etc/ld.so.conf
34927af
-- Next we update /etc/ld.so.conf to ensure that it starts with
34927af
-- a literal "include ld.so.conf.d/*.conf".
34927af
34927af
local ldsoconf = "/etc/ld.so.conf"
34927af
local ldsoconf_tmp = "/etc/glibc_post_upgrade.ld.so.conf"
34927af
34927af
if posix.access (ldsoconf) then
34927af
34927af
  -- We must have a "include ld.so.conf.d/*.conf" line.
34927af
  local have_include = false
34927af
  for line in io.lines (ldsoconf) do
34927af
    -- This must match, and we don't ignore whitespace.
34927af
    if string.match (line, "^include ld.so.conf.d/%%*%%.conf$") ~= nil then
34927af
      have_include = true
34927af
    end
34927af
  end
34927af
34927af
  if not have_include then
34927af
    -- Insert "include ld.so.conf.d/*.conf" line at the start of the
34927af
    -- file. We only support one of these post upgrades running at
34927af
    -- a time (temporary file name is fixed).
34927af
    local tmp_fd = io.open (ldsoconf_tmp, "w")
34927af
    if tmp_fd ~= nil then
34927af
      tmp_fd:write ("include ld.so.conf.d/*.conf\n")
34927af
      for line in io.lines (ldsoconf) do
34927af
        tmp_fd:write (line .. "\n")
34927af
      end
34927af
      tmp_fd:close ()
34927af
      local res = os.rename (ldsoconf_tmp, ldsoconf)
34927af
      if res == nil then
34927af
        io.stdout:write ("Error: Unable to update configuration file (rename).\n")
34927af
      end
34927af
    else
34927af
      io.stdout:write ("Error: Unable to update configuration file (open).\n")
34927af
    end
34927af
  end
34927af
end
34927af
34927af
-- (3) Rebuild ld.so.cache early.
34927af
-- If the format of the cache changes then we need to rebuild
34927af
-- the cache early to avoid any problems running binaries with
34927af
-- the new glibc.
34927af
34927af
-- Note: We use _prefix because Fedora's UsrMove says so.
34927af
post_exec ("%{_prefix}/sbin/ldconfig")
34927af
34927af
-- (4) Update gconv modules cache.
34927af
-- If the /usr/lib/gconv/gconv-modules.cache exists, then update it
34927af
-- with the latest set of modules that were just installed.
34927af
-- We assume that the cache is in _libdir/gconv and called
34927af
-- "gconv-modules.cache".
34927af
34927af
local iconv_dir = "%{_libdir}/gconv"
34927af
local iconv_cache = iconv_dir .. "/gconv-modules.cache"
34927af
if (posix.utime (iconv_cache) == 0) then
34927af
  post_exec ("%{_prefix}/sbin/iconvconfig",
34927af
	     "-o", iconv_cache,
34927af
	     "--nostdlib",
34927af
	     iconv_dir)
34927af
else
34927af
  io.stdout:write ("Error: Missing " .. iconv_cache .. " file.\n")
34927af
end
cvsdist c381c23
bd8d243
%posttrans all-langpacks -e -p <lua>
bd8d243
-- The old glibc-all-langpacks postun scriptlet deleted the locale-archive
bd8d243
-- file, so we may have to resurrect it on upgrades.
bd8d243
local archive_path = "%{_prefix}/lib/locale/locale-archive"
bd8d243
local real_path = "%{_prefix}/lib/locale/locale-archive.real"
bd8d243
local stat_archive = posix.stat(archive_path)
bd8d243
local stat_real = posix.stat(real_path)
bd8d243
-- If the hard link was removed, restore it.
bd8d243
if stat_archive ~= nil and stat_real ~= nil
bd8d243
    and (stat_archive.ino ~= stat_real.ino
bd8d243
         or stat_archive.dev ~= stat_real.dev) then
bd8d243
  posix.unlink(archive_path)
bd8d243
  stat_archive = nil
bd8d243
end
bd8d243
-- If the file is gone, restore it.
bd8d243
if stat_archive == nil then
bd8d243
  posix.link(real_path, archive_path)
bd8d243
end
bd8d243
-- Remove .rpmsave file potentially created due to config file change.
bd8d243
local save_path = archive_path .. ".rpmsave"
bd8d243
if posix.access(save_path) then
bd8d243
  posix.unlink(save_path)
bd8d243
end
bd8d243
cvsdist c381c23
%pre -n nscd
Andreas Schwab 08541d9
getent group nscd >/dev/null || /usr/sbin/groupadd -g 28 -r nscd
Andreas Schwab 08541d9
getent passwd nscd >/dev/null ||
Andreas Schwab 08541d9
  /usr/sbin/useradd -M -o -r -d / -s /sbin/nologin \
Andreas Schwab 08541d9
		    -c "NSCD Daemon" -u 28 -g nscd nscd
cvsdist c381c23
cvsdist c381c23
%post -n nscd
f8556b4
%systemd_post nscd.service
cvsdist c381c23
cvsdist c381c23
%preun -n nscd
f8556b4
%systemd_preun nscd.service
cvsdist c381c23
cvsdist c381c23
%postun -n nscd
Andreas Schwab 389eedc
if test $1 = 0; then
ffc48ad
  /usr/sbin/userdel nscd > /dev/null 2>&1 || :
cvsdist c381c23
fi
f8556b4
%systemd_postun_with_restart nscd.service
cvsdist c381c23
092cf93
%files -f glibc.filelist
63769b1
%dir %{_prefix}/%{_lib}/audit
3bef91d
%if %{buildpower9}
3bef91d
%dir /%{_lib}/power9
3bef91d
%endif
cvsdist c381c23
%ifarch s390x
b8e4762
/lib/ld64.so.1
cvsdist c381c23
%endif
cvsdist c381c23
%verify(not md5 size mtime) %config(noreplace) /etc/nsswitch.conf
cvsdist c381c23
%verify(not md5 size mtime) %config(noreplace) /etc/ld.so.conf
Andreas Schwab 809a543
%verify(not md5 size mtime) %config(noreplace) /etc/rpc
cvsdist 195182b
%dir /etc/ld.so.conf.d
ef031de
%dir %{_prefix}/libexec/getconf
0d1d15d
%dir %{_libdir}/gconv
50740a3
%dir %attr(0700,root,root) /var/cache/ldconfig
50740a3
%attr(0600,root,root) %verify(not md5 size mtime) %ghost %config(missingok,noreplace) /var/cache/ldconfig/aux-cache
cvsdist 4a201b7
%attr(0644,root,root) %verify(not md5 size mtime) %ghost %config(missingok,noreplace) /etc/ld.so.cache
Andreas Schwab d047b37
%attr(0644,root,root) %verify(not md5 size mtime) %ghost %config(missingok,noreplace) /etc/gai.conf
8ca6f66
%doc README NEWS INSTALL elf/rtld-debugger-interface.txt
Carlos O'Donell 6e8e9f6
# If rpm doesn't support %license, then use %doc instead.
e653c3c
%{!?_licensedir:%global license %%doc}
e653c3c
%license COPYING COPYING.LIB LICENSES
cvsdist c381c23
cvsdist c381c23
%files -f common.filelist common
111d75b
%dir %{_prefix}/lib/locale
Carlos O'Donell 0457f64
%dir %{_prefix}/lib/locale/C.utf8
Carlos O'Donell 0457f64
%{_prefix}/lib/locale/C.utf8/*
7ad97ba
%doc documentation/README.timezone
7ad97ba
%doc documentation/gai.conf
cvsdist c381c23
Carlos O'Donell f2d4020
%files all-langpacks
bd8d243
%{_prefix}/lib/locale/locale-archive
bd8d243
%{_prefix}/lib/locale/locale-archive.real
59ddeec
%{_prefix}/share/locale/*/LC_MESSAGES/libc.mo
Carlos O'Donell f2d4020
9edc2b6
%files locale-source
9edc2b6
%dir %{_prefix}/share/i18n/locales
9edc2b6
%{_prefix}/share/i18n/locales/*
9edc2b6
%dir %{_prefix}/share/i18n/charmaps
9edc2b6
%{_prefix}/share/i18n/charmaps/*
9edc2b6
cvsdist c381c23
%files -f devel.filelist devel
cvsdist c381c23
65bf1c4
%files -f static.filelist static
65bf1c4
711089d
%if  %{need_headers_package}
eb8a860
%files -f headers.filelist -n %{headers_package_name}
711089d
%endif
cvsdist c381c23
cvsdist c381c23
%files -f utils.filelist utils
cvsdist c381c23
cvsdist c381c23
%files -f nscd.filelist -n nscd
cvsdist c381c23
%config(noreplace) /etc/nscd.conf
cfeb07d
%dir %attr(0755,root,root) /var/run/nscd
cfeb07d
%dir %attr(0755,root,root) /var/db/nscd
b8e4762
/lib/systemd/system/nscd.service
b8e4762
/lib/systemd/system/nscd.socket
Siddhesh Poyarekar 944ed51
%{_tmpfilesdir}/nscd.conf
cfeb07d
%attr(0644,root,root) %verify(not md5 size mtime) %ghost %config(missingok,noreplace) /var/run/nscd/nscd.pid
cfeb07d
%attr(0666,root,root) %verify(not md5 size mtime) %ghost %config(missingok,noreplace) /var/run/nscd/socket
cfeb07d
%attr(0600,root,root) %verify(not md5 size mtime) %ghost %config(missingok,noreplace) /var/run/nscd/passwd
cfeb07d
%attr(0600,root,root) %verify(not md5 size mtime) %ghost %config(missingok,noreplace) /var/run/nscd/group
cfeb07d
%attr(0600,root,root) %verify(not md5 size mtime) %ghost %config(missingok,noreplace) /var/run/nscd/hosts
9893fad
%attr(0600,root,root) %verify(not md5 size mtime) %ghost %config(missingok,noreplace) /var/run/nscd/services
cfeb07d
%attr(0600,root,root) %verify(not md5 size mtime) %ghost %config(missingok,noreplace) /var/db/nscd/passwd
cfeb07d
%attr(0600,root,root) %verify(not md5 size mtime) %ghost %config(missingok,noreplace) /var/db/nscd/group
cfeb07d
%attr(0600,root,root) %verify(not md5 size mtime) %ghost %config(missingok,noreplace) /var/db/nscd/hosts
9893fad
%attr(0600,root,root) %verify(not md5 size mtime) %ghost %config(missingok,noreplace) /var/db/nscd/services
63b6b66
%ghost %config(missingok,noreplace) /etc/sysconfig/nscd
cvsdist c381c23
d5e9ea2
%files -f nss_db.filelist -n nss_db
d3da0e9
/var/db/Makefile
d5e9ea2
%files -f nss_hesiod.filelist -n nss_hesiod
d5e9ea2
%doc hesiod/README.hesiod
d5e9ea2
%files -f nss-devel.filelist nss-devel
d5e9ea2
b8bc11a
%files -f libnsl.filelist -n libnsl
b8bc11a
/%{_lib}/libnsl.so.1
b8bc11a
Andreas Schwab 237bb90
%if 0%{?_enable_debug_packages}
cvsdist c381c23
%files debuginfo -f debuginfo.filelist
cvsdist c381c23
%ifarch %{debuginfocommonarches}
cvsdist c381c23
%files debuginfo-common -f debuginfocommon.filelist
cvsdist c381c23
%endif
cvsdist c381c23
%endif
cvsdist c381c23
Carlos O'Donell 6e8e9f6
%if %{with benchtests}
Siddhesh Poyarekar 67b30d7
%files benchtests -f benchtests.filelist
Siddhesh Poyarekar 67b30d7
%endif
Siddhesh Poyarekar 67b30d7
Carlos O'Donell 9588eec
%files -f compat-libpthread-nonshared.filelist -n compat-libpthread-nonshared
Carlos O'Donell 9588eec
cvsdist c381c23
%changelog
c070d93
* Tue Sep 08 2020 DJ Delorie <dj@redhat.com> - 2.32.9000-6
c070d93
- Auto-sync with upstream branch master,
c070d93
  commit e74b61c09a2a2ab52153e731225ccba5078659b1.
c070d93
- Disable -Wstringop-overread for some string tests
c070d93
- string: Fix GCC 11 `-Werror=stringop-overread' error
c070d93
- C11 threads: Fix inaccuracies in testsuite
c070d93
- elf.h: Add aarch64 bti/pac dynamic tag constants
c070d93
- x86: Set CPU usable feature bits conservatively [BZ #26552]
c070d93
Patsy Griffin 6cd5b06
* Wed Sep 02 2020 Patsy Griffin <patsy@redhat.com> - 2.32.9000-5
Patsy Griffin 6cd5b06
- Auto-sync with upstream branch master,
Patsy Griffin 6cd5b06
  commit 86a912c8634f581ea42ec6973553dde7f058cfbf.
Patsy Griffin 6cd5b06
- Update i686 ulps.
Patsy Griffin 6cd5b06
- Use LFS readdir in generic POSIX getcwd [BZ# 22899]
Patsy Griffin 6cd5b06
- linux: Remove __ASSUME_ATFCTS
Patsy Griffin 6cd5b06
- Sync getcwd with gnulib
Patsy Griffin 6cd5b06
- x86-64: Fix FMA4 detection in ifunc [BZ #26534]
Patsy Griffin 6cd5b06
- y2038: nptl: Convert pthread_cond_{clock|timed}wait to support 64 bit time
Patsy Griffin 6cd5b06
- malloc: Fix mallinfo deprecation declaration
Patsy Griffin 6cd5b06
- x32: Add <fixup-asm-unistd.h> and regenerate arch-syscall.h
Patsy Griffin 6cd5b06
- Add mallinfo2 function that support sizes >= 4GB.
Patsy Griffin 6cd5b06
- Remove obsolete default/nss code
Patsy Griffin 6cd5b06
- AArch64: Improve backwards memmove performance
Patsy Griffin 6cd5b06
- Add RISC-V 32-bit target to build-many-glibcs.py
Patsy Griffin 6cd5b06
- Documentation for the RISC-V 32-bit port
Patsy Griffin 6cd5b06
- RISC-V: Build infrastructure for 32-bit port
Patsy Griffin 6cd5b06
- RISC-V: Add rv32 path to RTLDLIST in ldd
Patsy Griffin 6cd5b06
- riscv32: Specify the arch_minimum_kernel as 5.4
Patsy Griffin 6cd5b06
- RISC-V: Fix llrint and llround missing exceptions on RV32
Patsy Griffin 6cd5b06
- RISC-V: Add the RV32 libm-test-ulps
Patsy Griffin 6cd5b06
- RISC-V: Add 32-bit ABI lists
Patsy Griffin 6cd5b06
- RISC-V: Add hard float support for 32-bit CPUs
Patsy Griffin 6cd5b06
- RISC-V: Support the 32-bit ABI implementation
Patsy Griffin 6cd5b06
- RISC-V: Add arch-syscall.h for RV32
Patsy Griffin 6cd5b06
- RISC-V: Add path of library directories for the 32-bit
Patsy Griffin 6cd5b06
- RISC-V: Support dynamic loader for the 32-bit
Patsy Griffin 6cd5b06
- RISC-V: Add support for 32-bit vDSO calls
Patsy Griffin 6cd5b06
- RISC-V: Use 64-bit-time syscall numbers with the 32-bit port
Patsy Griffin 6cd5b06
- RISC-V: Cleanup some of the sysdep.h code
Patsy Griffin 6cd5b06
- RISC-V: Use 64-bit time_t and off_t for RV32 and RV64
Patsy Griffin 6cd5b06
- io/lockf: Include bits/types.h before __OFF_T_MATCHES_OFF64_T check
Patsy Griffin 6cd5b06
- elf/tst-libc_dlvsym: Add a TEST_COMPAT around some symbol tests
Patsy Griffin 6cd5b06
- hurd: define BSD 4.3 ioctls only under __USE_MISC
Patsy Griffin 6cd5b06
- string: test strncasecmp and strncpy near page boundaries
Patsy Griffin 6cd5b06
- linux: Simplify utimensat
Patsy Griffin 6cd5b06
- linux: Simplify timerfd_settime
Patsy Griffin 6cd5b06
- linux: Simplify timer_gettime
Patsy Griffin 6cd5b06
- linux: Simplify sched_rr_get_interval
Patsy Griffin 6cd5b06
- linux: Simplify ppoll
Patsy Griffin 6cd5b06
- linux: Simplify mq_timedsend
Patsy Griffin 6cd5b06
- linux: Simplify mq_timedreceive
Patsy Griffin 6cd5b06
- linux: Simplify clock_settime
Patsy Griffin 6cd5b06
- linux: Simplify clock_nanosleep
Patsy Griffin 6cd5b06
- linux: Simplify clock_gettime
Patsy Griffin 6cd5b06
- linux: Simplify clock_adjtime
Patsy Griffin 6cd5b06
- linux: Add helper function to optimize 64-bit time_t fallback support
Patsy Griffin 6cd5b06
- S390: Sync HWCAP names with kernel by adding aliases [BZ #25971]
Patsy Griffin 6cd5b06
- [vcstocl] Import ProjectQuirks from its own file
Patsy Griffin 6cd5b06
- build-many-glibcs.py: Add a s390x -O3 glibc variant.
Patsy Griffin 6cd5b06
- Fix namespace violation in stdio.h and sys/stat.h if build with optimization. [BZ #26376]
Patsy Griffin 6cd5b06
- Add C2x BOOL_MAX and BOOL_WIDTH to limits.h.
Patsy Griffin 6cd5b06
- Use MPC 1.2.0 in build-many-glibcs.py.
Patsy Griffin 6cd5b06
- Add new STATX_* constants from Linux 5.8 to bits/statx-generic.h.
Patsy Griffin 6cd5b06
- Correct locking and cancellation cleanup in syslog functions (bug 26100)
Patsy Griffin 6cd5b06
b8f476d
* Thu Aug 20 2020 Carlos O'Donell <carlos@redhat.com> - 2.32.9000-4
b8f476d
- Support building glibc in a mock chroot using older systemd-nspawn (#1869030).
b8f476d
b1869f9
* Tue Aug 18 2020 Carlos O'Donell <carlos@redhat.com> - 2.32.9000-3
b1869f9
- Suggest installing minimal localization e.g. C, POSIX, C.UTF-8.
b1869f9
7ec72a1
* Mon Aug 17 2020 DJ Delorie <dj@redhat.com> - 2.32.9000-2
7ec72a1
- Auto-sync with upstream branch master,
7ec72a1
  commit cb7e7a5ca1d6d25d59bc038bdc09630e507c41e5.
7ec72a1
- nptl: Handle NULL abstime [BZ #26394]
7ec72a1
- Update build-many-glibcs.py for binutils ia64 obsoletion.
7ec72a1
- Update kernel version to 5.8 in tst-mman-consts.py.
7ec72a1
- y2038: nptl: Convert pthread_{clock|timed}join_np to support 64 bit time
7ec72a1
- aarch64: update ulps.
7ec72a1
Patsy Griffin 58f285e
* Wed Aug 12 2020 Patsy Griffin <patsy@redhat.com> - 2.32.9000-1
Patsy Griffin 58f285e
- Auto-sync with upstream branch master,
Patsy Griffin 58f285e
  commit 0be0845b7a674dbfb996f66cd03d675f0f6028dc:
Patsy Griffin 58f285e
- S390: Regenerate ULPs.
Patsy Griffin 58f285e
- manual: Fix sigdescr_np and sigabbrev_np return type (BZ #26343)
Patsy Griffin 58f285e
- math: Update x86_64 ulps
Patsy Griffin 58f285e
- math: Regenerate auto-libm-test-out-j0
Patsy Griffin 58f285e
- manual: Put the istrerrorname_np and strerrordesc_np return type in braces
Patsy Griffin 58f285e
- Linux: Use faccessat2 to implement faccessat (bug 18683)
Patsy Griffin 58f285e
- manual: Fix strerrorname_np and strerrordesc_np return type (BZ #26343)
Patsy Griffin 58f285e
- math: Fix inaccuracy of j0f for x >= 2^127 when sin(x)+cos(x) is tiny
Patsy Griffin 58f285e
- Update syscall lists for Linux 5.8.
Patsy Griffin 58f285e
- Use Linux 5.8 in build-many-glibcs.py.
Patsy Griffin 58f285e
- htl: Enable tst-cancelx?[45]
Patsy Griffin 58f285e
- tst-cancel4: Make blocking on write more portable
Patsy Griffin 58f285e
- hurd: Add missing hidden def
Patsy Griffin 58f285e
- hurd: Rework sbrk
Patsy Griffin 58f285e
- hurd: Implement basic sched_get/setscheduler
Patsy Griffin 58f285e
- x86: Rename Intel CPU feature names
Patsy Griffin 58f285e
- manual: Fix some @code/@var formatting glitches chapter Date And Time
Patsy Griffin 58f285e
- Copy regex_internal.h from Gnulib
Patsy Griffin 58f285e
- Copy regex BITSET_WORD_BITS porting from Gnulib
Patsy Griffin 58f285e
- Sync regex.h from Gnulib
Patsy Griffin 58f285e
- Sync mktime.c from Gnulib
Patsy Griffin 58f285e
- Sync intprops.h from Gnulib
Patsy Griffin 58f285e
- Open master branch for glibc 2.33 development.
Patsy Griffin 58f285e
Arjun Shankar 2f73564
* Thu Aug 06 2020 Arjun Shankar <arjun@redhat.com> - 2.32-1
Arjun Shankar 2f73564
- Auto-sync with upstream branch release/2.32/master,
Arjun Shankar 2f73564
  commit 3de512be7ea6053255afed6154db9ee31d4e557a:
Arjun Shankar 2f73564
- Prepare for glibc 2.32 release.
Arjun Shankar 2f73564
- Regenerate configure scripts.
Arjun Shankar 2f73564
- Update NEWS with bugs.
Arjun Shankar 2f73564
- Update translations.
Arjun Shankar 2f73564
- Don't mix linker error messages into edited scripts
Arjun Shankar 2f73564
- benchtests/README update.
Arjun Shankar 2f73564
- RISC-V: Update lp64d libm-test-ulps according to HiFive Unleashed
Arjun Shankar 2f73564
- aarch64: update NEWS about branch protection
Arjun Shankar 2f73564
- Add NEWS entry for CVE-2016-10228 (bug 19519)
Arjun Shankar 2f73564
- powerpc: Fix incorrect cache line size load in memset (bug 26332)
Arjun Shankar 2f73564
- Update Nios II libm-test-ulps file.
Arjun Shankar 2f73564
Patsy Griffin df5430b
* Fri Jul 31 2020 Patsy Griffin <patsy@redhat.com> - 2.31.9000-24
Patsy Griffin df5430b
- Auto-sync with upstream branch master,
Patsy Griffin df5430b
  commit 7f1a08cff82255cd4252a2c75fd65b80a6a170bf.
Patsy Griffin df5430b
- Move NEWS entry for CVE-2020-1751 to the 2.31 section
Patsy Griffin df5430b
- NEWS: Deprecate weak libpthread symbols for single-threaded checks
Patsy Griffin df5430b
- NEWS: Deprecate nss_hesiod
Patsy Griffin df5430b
- nptl: Zero-extend arguments to SETXID syscalls [BZ #26248]
Patsy Griffin df5430b
- Use binutils 2.35 branch in build-many-glibcs.py.
Patsy Griffin df5430b
- aarch64: Use future HWCAP2_MTE in ifunc resolver
Patsy Griffin df5430b
- Update x86-64 libm-test-ulps
Patsy Griffin df5430b
- aarch64: Respect p_flags when protecting code with PROT_BTI
Patsy Griffin df5430b
- Disable warnings due to deprecated libselinux symbols used by nss and nscd
Patsy Griffin df5430b
- Regenerate INSTALL for ARC port updates.
Patsy Griffin df5430b
- Update libc.pot for 2.32 release.
Patsy Griffin df5430b
- powerpc: Fix POWER10 selection
Patsy Griffin df5430b
- powerpc64le: guarantee a .gnu.attributes section [BZ #26220]
Patsy Griffin df5430b
888bec1
* Wed Jul 29 2020 Florian Weimer <fweimer@redhat.com> - 2.31.9000-23
888bec1
- Inherit -mbranch-protection=standard from redhat-rpm-config (for aarch64)
888bec1
6f63f67
* Mon Jul 27 2020 Fedora Release Engineering <releng@fedoraproject.org>
6f63f67
- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
6f63f67
9bc189f
* Wed Jul 22 2020 Carlos O'Donell <carlos@redhat.com> - 2.31.9000-21
9bc189f
- Use make macros
9bc189f
- https://fedoraproject.org/wiki/Changes/UseMakeBuildInstallMacro
9bc189f
Arjun Shankar 3e8e5d3
* Tue Jul 21 2020 Arjun Shankar <arjun@redhat.com> - 2.31.9000-20
Arjun Shankar 3e8e5d3
- Add glibc-deprecated-selinux-makedb.patch and
Arjun Shankar 3e8e5d3
  glibc-deprecated-selinux-nscd.patch to work around libselinux API
Arjun Shankar 3e8e5d3
  deprecations.
299c3c2
- Drop glibc-rseq-disable.patch; rseq support removed upstream.  (#1855729)
Arjun Shankar 3e8e5d3
- Auto-sync with upstream branch master,
Arjun Shankar 3e8e5d3
  commit ec2f1fddf29053957d061dfe310f106388472a4f:
Arjun Shankar 3e8e5d3
- libio: Remove __libc_readline_unlocked
Arjun Shankar 3e8e5d3
- shadow: Implement fgetspent_r using __nss_fgetent_r
Arjun Shankar 3e8e5d3
- pwd: Implement fgetpwent_r using __nss_fgetent_r
Arjun Shankar 3e8e5d3
- gshadow: Implement fgetsgent_r using __nss_fgetent_r (bug 20338)
Arjun Shankar 3e8e5d3
- grp: Implement fgetgrent_r using __nss_fgetent_r
Arjun Shankar 3e8e5d3
- nss: Add __nss_fgetent_r
Arjun Shankar 3e8e5d3
- libio: Add fseterr_unlocked for internal use
Arjun Shankar 3e8e5d3
- nss_files: Use generic result pointer in parse_line
Arjun Shankar 3e8e5d3
- nss_files: Consolidate line parse declarations in <nss_files.h>
Arjun Shankar 3e8e5d3
- nss_compat: Do not use mmap to read database files (bug 26258)
Arjun Shankar 3e8e5d3
- nss_files: Consolidate file opening in __nss_files_fopen
Arjun Shankar 3e8e5d3
- Update powerpc-nofpu libm-test-ulps.
Arjun Shankar 3e8e5d3
- Use MPFR 4.1.0 in build-many-glibcs.py.
Arjun Shankar 3e8e5d3
- elf: Change TLS static surplus default back to 1664
Arjun Shankar 3e8e5d3
- hurd: Fix longjmp check for sigstate
Arjun Shankar 3e8e5d3
- hurd: Fix longjmp early in initialization
Arjun Shankar 3e8e5d3
- manual: New signal and errno string functions are AS-safe
Arjun Shankar 3e8e5d3
- AArch64: Improve strlen_asimd performance (bug 25824)
Arjun Shankar 3e8e5d3
- Move <rpc/netdb.h> from sunrpc to inet
Arjun Shankar 3e8e5d3
- en_US: Minimize changes to date_fmt (Bug 25923)
Arjun Shankar 3e8e5d3
- Linux: Remove rseq support
Arjun Shankar 3e8e5d3
- manual: Use Unicode instead HTML entities for characters (bug 19737)
Arjun Shankar 3e8e5d3
- Add NEWS entry for CVE-2020-6096 (bug 25620)
Arjun Shankar 3e8e5d3
- arm: remove string/tst-memmove-overflow XFAIL
Arjun Shankar 3e8e5d3
- AArch64: Rename IS_ARES to IS_NEOVERSE_N1
Arjun Shankar 3e8e5d3
- AArch64: Add optimized Q-register memcpy
Arjun Shankar 3e8e5d3
- AArch64: Align ENTRY to a cacheline
Arjun Shankar 3e8e5d3
- Correct timespec implementation [BZ #26232]
Arjun Shankar 3e8e5d3
- Remove --enable-obsolete-rpc configure flag
Arjun Shankar 3e8e5d3
- hurd: Fix build-many-glibcs.py
Arjun Shankar 3e8e5d3
- x86: Support usable check for all CPU features
Arjun Shankar 3e8e5d3
- string: Make tst-strerror/tst-strsignal unsupported if msgfmt is not installed
Arjun Shankar 3e8e5d3
- malloc: Deprecate more hook-related functionality
Arjun Shankar 3e8e5d3
- elf: Support at least 32-byte alignment in static dlopen
Arjun Shankar 3e8e5d3
- x86: Remove __ASSEMBLER__ check in init-arch.h
Arjun Shankar 3e8e5d3
- x86: Remove the unused __x86_prefetchw
Arjun Shankar 3e8e5d3
- Documentation for ARC port
Arjun Shankar 3e8e5d3
- build-many-glibcs.py: Enable ARC builds
Arjun Shankar 3e8e5d3
- ARC: Build Infrastructure
Arjun Shankar 3e8e5d3
- ARC: ABI lists
Arjun Shankar 3e8e5d3
- ARC: Linux Startup and Dynamic Loading
Arjun Shankar 3e8e5d3
- ARC: Linux ABI
Arjun Shankar 3e8e5d3
- ARC: Linux Syscall Interface
Arjun Shankar 3e8e5d3
- ARC: hardware floating point support
Arjun Shankar 3e8e5d3
- ARC: math soft float support
Arjun Shankar 3e8e5d3
- ARC: Atomics and Locking primitives
Arjun Shankar 3e8e5d3
- ARC: Thread Local Storage support
Arjun Shankar 3e8e5d3
- ARC: startup and dynamic linking code
Arjun Shankar 3e8e5d3
- ARC: ABI Implementation
Arjun Shankar 3e8e5d3
- Fix time/tst-cpuclock1 intermitent failures
Arjun Shankar 3e8e5d3
- powerpc64: Fix calls when r2 is not used [BZ #26173]
Arjun Shankar 3e8e5d3
- Add NEWS entry for Update to Unicode 13.0.0 [BZ #25819]
Arjun Shankar 3e8e5d3
- Update i686 libm-test-ulps
Arjun Shankar 3e8e5d3
- Fix memory leak in __printf_fp_l (bug 26215).
Arjun Shankar 3e8e5d3
- Fix double free in __printf_fp_l (bug 26214).
Arjun Shankar 3e8e5d3
- linux: Fix syscall list generation instructions
Arjun Shankar 3e8e5d3
- sysv: linux: Add 64-bit time_t variant for shmctl
Arjun Shankar 3e8e5d3
- sysvipc: Remove the linux shm-pad.h file
Arjun Shankar 3e8e5d3
- sysvipc: Split out linux struct shmid_ds
Arjun Shankar 3e8e5d3
- sysv: linux: Add 64-bit time_t variant for msgctl
Arjun Shankar 3e8e5d3
- sysvipc: Remove the linux msq-pad.h file
Arjun Shankar 3e8e5d3
- sysvipc: Split out linux struct semid_ds
Arjun Shankar 3e8e5d3
- sysv: linux: Add 64-bit time_t variant for semctl
Arjun Shankar 3e8e5d3
b633c42
* Fri Jul 10 2020 Florian Weimer <fweimer@redhat.com> - 2.31.9000-19
b633c42
- Disable rseq registration by default to help Firefox (#1855729)
b633c42
0aab7eb
* Thu Jul 09 2020 Florian Weimer <fweimer@redhat.com> - 2.31.9000-18
0aab7eb
- Auto-sync with upstream branch master,
0aab7eb
  commit ffb17e7ba3a5ba9632cee97330b325072fbe41dd:
0aab7eb
- rtld: Avoid using up static TLS surplus for optimizations [BZ #25051]
0aab7eb
- rtld: Account static TLS surplus for audit modules
0aab7eb
- rtld: Add rtld.nns tunable for the number of supported namespaces
0aab7eb
- Remove --enable-obsolete-nsl configure flag
0aab7eb
- Move non-deprecated RPC-related functions from sunrpc to inet
0aab7eb
- aarch64: add NEWS entry about branch protection support
0aab7eb
- aarch64: redefine RETURN_ADDRESS to strip PAC
0aab7eb
- aarch64: fix pac-ret support in _mcount
0aab7eb
- aarch64: Add pac-ret support to assembly files
0aab7eb
- aarch64: configure check for pac-ret code generation
0aab7eb
- aarch64: ensure objects are BTI compatible
0aab7eb
- aarch64: enable BTI at runtime
0aab7eb
- aarch64: fix RTLD_START for BTI
0aab7eb
- aarch64: fix swapcontext for BTI
0aab7eb
- aarch64: Add BTI support to assembly files
0aab7eb
- aarch64: Rename place holder .S files to .c
0aab7eb
- aarch64: configure test for BTI support
0aab7eb
- Rewrite abi-note.S in C.
0aab7eb
- rtld: Clean up PT_NOTE and add PT_GNU_PROPERTY handling
0aab7eb
- string: Move tst-strsignal tst-strerror to tests-container
0aab7eb
- string: Fix prototype mismatch in sigabbrev_np, __sigdescr_np
0aab7eb
- arm: CVE-2020-6096: Fix multiarch memcpy for negative length (#1820332)
0aab7eb
- arm: CVE-2020-6096: fix memcpy and memmove for negative length (#1820332)
0aab7eb
- sunrpc: Remove hidden aliases for global data symbols (bug 26210)
0aab7eb
- hurd: Fix strerror not setting errno
0aab7eb
- tst-strsignal: fix checking for RT signals support
0aab7eb
- hurd: Evaluate fd before entering the critical section
0aab7eb
- CVE-2016-10228: Rewrite iconv option parsing (#1428292)
0aab7eb
- nss: Remove cryptographic key support from nss_files, nss_nis, nss_nisplus
0aab7eb
- sunrpc: Do not export getrpcport by default
0aab7eb
- sunrpc: Do not export key handling hooks by default
0aab7eb
- sunrpc: Turn clnt_sperrno into a libc_hidden_nolink_sunrpc symbol
0aab7eb
- string: Add strerrorname_np and strerrordesc_np
0aab7eb
- string: Add sigabbrev_np and sigdescr_np
0aab7eb
- string: Add strerror_l on test-strerror-errno
0aab7eb
- string: Add strerror, strerror_r, and strerror_l test
0aab7eb
- string: Add strsignal test
0aab7eb
- string: Simplify strerror_r
0aab7eb
- string: Use tls-internal on strerror_l
0aab7eb
- string: Implement strerror in terms of strerror_l
0aab7eb
- string: Remove old TLS usage on strsignal
0aab7eb
- linux: Fix __NSIG_WORDS and add __NSIG_BYTES
0aab7eb
- signal: Move sys_errlist to a compat symbol
0aab7eb
- signal: Move sys_siglist to a compat symbol
0aab7eb
- signal: Add signum-{generic,arch}.h
0aab7eb
- Remove most vfprintf width/precision-dependent allocations (bug 14231, bug 26211).
0aab7eb
- elf: Do not signal LA_ACT_CONSISTENT for an empty namespace [BZ #26076]
0aab7eb
- Fix stringop-overflow errors from gcc 10 in iconv.
0aab7eb
- x86: Add thresholds for "rep movsb/stosb" to tunables
0aab7eb
- Use C2x return value from getpayload of non-NaN (bug 26073).
0aab7eb
- x86: Detect Extended Feature Disable (XFD)
0aab7eb
- x86: Correct bit_cpu_CLFSH [BZ #26208]
0aab7eb
- manual: Document __libc_single_threaded
0aab7eb
- Add the __libc_single_threaded variable
0aab7eb
- Linux: rseq registration tests
0aab7eb
- Linux: Use rseq in sched_getcpu if available
0aab7eb
- Linux: Perform rseq registration at C startup and thread creation
0aab7eb
- tst-cancel4: deal with ENOSYS errors
0aab7eb
- manual: Show copyright information not just in the printed manual
0aab7eb
0aab7eb
94cfd27
* Thu Jul 02 2020 Carlos O'Donell <carlos@redhat.com> - 2.31.9000-17
94cfd27
- Auto-sync with upstream branch master,
94cfd27
  commit c6aac3bf3663709cdefde5f5d5e9e875d607be5e.
94cfd27
- Fix typo in comment in bug 26137 fix.
94cfd27
- Fix strtod multiple-precision division bug (bug 26137).
94cfd27
- Linux: Fix UTC offset setting in settimeofday for __TIMESIZE != 64
94cfd27
- random: range is not portably RAND_MAX [BZ #7003]
94cfd27
- Update kernel version to 5.7 in tst-mman-consts.py.
94cfd27
- powerpc: Add support for POWER10
94cfd27
- hurd: Simplify usleep timeout computation
94cfd27
- htl: Enable cancel*16 an cancel*20 tests
94cfd27
- hurd: Add remaining cancelation points
94cfd27
- hurd: fix usleep(ULONG_MAX)
94cfd27
- hurd: Make fcntl(F_SETLKW*) cancellation points
94cfd27
- hurd: make wait4 a cancellation point