glibc/glibc.spec

2248 lines
83 KiB
RPMSpec
Raw Normal View History

Auto-sync with upstream branch master Upstream commit: 453b88efe6fa79f5c7c6fccc3a520c75fdd43074 - arm: Remove nested functionf rom relocate_pc24 - linux: Fix sys/mount.h usage with kernel headers - linux: Use compile_c_snippet to check linux/mount.h availability - linux: Mimic kernel defition for BLOCK_SIZE - linux: Use compile_c_snippet to check linux/pidfd.h availability - glibcextract.py: Add compile_c_snippet - LoongArch: Add pointer mangling support. - AArch64: Fix typo in sve configure check (BZ# 29394) - libio: Improve performance of IO locks - tst-process_madvise: Check process_madvise-syscall support. - elf.h: Add ELFCOMPRESS_ZSTD - inet: Turn __ivaliduser into a compatibility symbol - x86: Fix `#define STRCPY` guard in strcpy-sse2.S - elf: Replace `strcpy` call with `memcpy` [BZ #29454] - soft-fp: Add fixhf[uns][di|si] and float[uns][di|si]hf - i386: Use cmpl instead of cmp - i386: Use fldt instead of fld on e_logl.S - i386: Replace movzx with movzbl - dlfcn: Pass caller pointer to static dlopen implementation (bug 29446) - malloc: Correct the documentation of the top_pad default - i386: Remove RELA support - arm: Remove RELA support - Remove ldd libc4 support - Assume only FLAG_ELF_LIBC6 suport - Remove left over LD_LIBRARY_VERSION usages - Linux: Remove exit system call from _exit - LoongArch: Add vdso support for gettimeofday. - Update kernel version to 5.19 in header constant tests - assert: Do not use stderr in libc-internal assert - nptl: Remove uses of assert_perror - stdio: Clean up __libc_message after unconditional abort - Update syscall lists for Linux 5.19 - Use Linux 5.19 in build-many-glibcs.py - socket: Check lengths before advancing pointer in CMSG_NXTHDR - Don't use unsupported format string in ld.so (bug 29427) - htl: Let pthread_self and cancellability called early - stdlib: Simplify arc4random_uniform - malloc: Use __getrandom_nocancel during tcache initiailization - Remove spurious references to _dl_open_hook - Open master branch for glibc 2.37 development
2022-08-15 05:24:29 +00:00
%global glibcsrcdir glibc-2.36.9000-41-g453b88efe6
%global glibcversion 2.36.9000
2013-08-16 13:56:44 +00:00
# Pre-release tarballs are pulled in from git using a command that is
# effectively:
#
# git archive HEAD --format=tar --prefix=$(git describe --match 'glibc-*')/ \
# > $(git describe --match 'glibc-*').tar
# gzip -9 $(git describe --match 'glibc-*').tar
#
# glibc_release_url is only defined when we have a release tarball.
# Conversly, glibc_autorequires is set for development snapshots, where
# dependencies based on symbol versions are inaccurate.
%{lua: if string.match(rpm.expand("%glibcsrcdir"), "^glibc%-[0-9.]+$") then
rpm.define("glibc_release_url https://ftp.gnu.org/gnu/glibc/")
end
local major, minor = string.match(rpm.expand("%glibcversion"),
"^([0-9]+)%.([0-9]+)%.9000$")
if major and minor then
rpm.define("glibc_autorequires 1")
-- The minor version in a .9000 development version lags the actual
-- symbol version by one.
local symver = "GLIBC_" .. major .. "." .. (minor + 1)
rpm.define("glibc_autorequires_symver " .. symver)
else
rpm.define("glibc_autorequires 0")
end}
2013-07-24 11:58:38 +00:00
##############################################################################
# We support the following options:
# --with/--without,
# * testsuite - Running the testsuite.
# * benchtests - Running and building benchmark subpackage.
# * bootstrap - Bootstrapping the package.
# * werror - Build with -Werror
# * docs - Build with documentation and the required dependencies.
# * valgrind - Run smoke tests with valgrind to verify dynamic loader.
#
# You must always run the testsuite for production builds.
# Default: Always run the testsuite.
%bcond_without testsuite
# Default: Always build the benchtests.
%bcond_without benchtests
# Default: Not bootstrapping.
%bcond_with bootstrap
# Default: Enable using -Werror
%bcond_without werror
# Default: Always build documentation.
%bcond_without docs
2018-08-02 14:24:00 +00:00
# Default: Always run valgrind tests if there is architecture support.
%ifarch %{valgrind_arches}
%bcond_without valgrind
%else
%bcond_with valgrind
%endif
# Restrict %%{valgrind_arches} further in case there are problems with
# the smoke test.
%if %{with valgrind}
2018-08-02 14:24:00 +00:00
%ifarch ppc64 ppc64p7
# The valgrind smoke test does not work on ppc64, ppc64p7 (bug 1273103).
%undefine with_valgrind
%endif
%endif
2018-08-02 14:24:00 +00:00
%if %{with bootstrap}
# Disable benchtests, -Werror, docs, and valgrind if we're bootstrapping
%undefine with_benchtests
%undefine with_werror
%undefine with_docs
%undefine with_valgrind
%endif
# The annobin annotations cause binutils to produce broken ARM EABI
# unwinding information. Symptom is a hang/test failure for
# malloc/tst-malloc-stats-cancellation. See
# <https://bugzilla.redhat.com/show_bug.cgi?id=1951492>.
%ifarch armv7hl
%undefine _annotated_build
%endif
Auto-sync with upstream branch master Temporary patches to work around gcc 12 vs glibc warning and ppc64le long double conflicts. Upstream commit: 5b8e7980c5dabd9aaefeba4f0208baa8cf7653ee - Linux: Detect user namespace support in io/tst-getcwd-smallbuff - Fix handling of unterminated bracket expressions in fnmatch (bug 28792) - realpath: Avoid overwriting preexisting error (CVE-2021-3998) - elf: Add a test for PT_LOAD segments with invalid p_align [BZ #28688] - elf: Add a test for PT_LOAD segments with p_align == 1 [BZ #28688] - elf: Add a test for PT_LOAD segments with mixed p_align [BZ #28676] - Add and use link-test-modules-rpath-link [BZ #28455] - tst-realpath-toolong: Fix hurd build - getcwd: Set errno to ERANGE for size == 1 (CVE-2021-3999) - Add valgrind smoke test - htl: Fix cleaning the reply port - elf: Properly align all PT_LOAD segments [BZ #28676] - realpath: Set errno to ENAMETOOLONG for result larger than PATH_MAX [BZ #28770] - support: Add helpers to create paths longer than PATH_MAX - nptl: Effectively skip CAS in spinlock loop - mips: Move DT_MIPS into <ldsodefs.h> - x86_64: Document libmvec vector functions accuracy [BZ #28766] - x86: Black list more Intel CPUs for TSX [BZ #27398] - elf: Fix tst-align3 - elf: Move _dl_setup_hash to its own file - htl: Fix build error in annexc - elf: Reinstate tst-audit17 - x86: use default cache size if it cannot be determined [BZ #28784] - rt/tst-mqueue*: Return UNSUPPORTED when mq_open fails with ENOSYS - Linux: Add epoll_pwait2 (BZ #27359) - Properly handle --disable-default-pie [BZ #28780] - elf: Fix 64 time_t support for installed statically binaries - Revert "elf: Fix 64 time_t support for installed statically binaries" - CVE-2022-23218: Buffer overflow in sunrpc svcunix_create (bug 28768) - sunrpc: Test case for clnt_create "unix" buffer overflow (bug 22542) - CVE-2022-23219: Buffer overflow in sunrpc clnt_create for "unix" (bug 22542) - socket: Add the __sockaddr_un_set function - elf/tst-dl_find_object: Disable subtests for non-contiguous maps (bug 28732) - elf: Set l_contiguous to 1 for the main map in more cases - elf: Introduce rtld_setup_main_map - hurd: Make RPC input array parameters const - hurd: optimize exec cleanup - hurd: Add __rtld_execve - hurd: Fix exec() leak on proc_task2proc failure - htl: Hide __pthread_attr's __schedparam type [BZ #23088] - htl: Clear kernel_thread field before releasing the thread structure - hurd: drop SA_SIGINFO availability xfail - hurd: Fix timer/clock_getres crash on NULL res parameter - hurd: Fix pthread_kill on exiting/ted thread - [hurd] Drop spurious #ifdef SHARED - [hurd] Call _dl_sort_maps_init in _dl_sysdep_start - elf tst-dl_find_object: Fix typo - s390x: Use <gcc-macros.h> in early HWCAP check - x86: Add x86-64-vN check to early startup - powerpc64le: Use <gcc-macros.h> in early HWCAP check - Add --with-rtld-early-cflags configure option - elf: Split dl-printf.c from dl-misc.c - elf/Makefile: Reflow and sort most variable assignments - Generate gcc-macros.h - x86: HAVE_X86_LAHF_SAHF, HAVE_X86_MOVBE and -march=x86-64-vN (bug 28782) - math: Add more inputs to atan2 accuracy tests [BZ #28765] - Disable debuginfod in printer tests [BZ #28757] - Update syscall lists for Linux 5.16 - i386: Remove broken CAN_USE_REGISTER_ASM_EBP (bug 28771) - stdlib: Fix formatting of tests list in Makefile - stdlib: Sort tests in Makefile - x86_64: Fix SSE4.2 libmvec atan2 function accuracy [BZ #28765] - debug: Synchronize feature guards in fortified functions [BZ #28746] - debug: Autogenerate _FORTIFY_SOURCE tests - Do not build libresolv module with 64 bit time_t flags - Revert "linux: Fix ancillary 64-bit time timestamp conversion (BZ #28349, BZ #28350)" - Revert "support: Add support_socket_so_timestamp_time64" - timezone: Fix tst-bz28707 Makefile rule - linux: Fix ancillary 64-bit time timestamp conversion (BZ #28349, BZ #28350) - support: Add support_socket_so_timestamp_time64 - elf: Fix 64 time_t support for installed statically binaries - Enable _FORTIFY_SOURCE=3 for gcc 12 and above - manual: Drop obsolete @refill - aarch64: Add HWCAP2_ECV from Linux 5.16 - Use Linux 5.16 in build-many-glibcs.py - x86: Fix __wcsncmp_evex in strcmp-evex.S [BZ# 28755] - x86: Fix __wcsncmp_avx2 in strcmp-avx2.S [BZ# 28755] - math: Fix float conversion regressions with gcc-12 [BZ #28713] - elf: Simplify software TM implementation in _dl_find_object - Restore ENTRY_POINT definition on hppa, ia64 (bug 28749) - elf: Fix fences in _dl_find_object_update (bug 28745) - ttydefaults.h: Fix CSTATUS to control-t - AArch64: Check for SVE in ifuncs [BZ #28744] - debug: Remove catchsegv and libSegfault (BZ #14913) - Documentation for OpenRISC port - build-many-glibcs.py: add OpenRISC support - or1k: Build Infrastructure - or1k: ABI lists - or1k: Linux ABI - or1k: Linux Syscall Interface - or1k: math soft float support - or1k: Atomics and Locking primitives - or1k: Thread Local Storage support - or1k: startup and dynamic linking code - or1k: ABI Implementation - linux/syscalls: Add or1k_atomic syscall for OpenRISC - elf: Add reloc for OpenRISC - elf: Add a comment after trailing backslashes - elf: Also try DT_RUNPATH for LD_AUDIT dlopen [BZ #28455] - elf: Fix tst-linkall-static link when pthread is not in libc
2022-01-24 21:39:19 +00:00
# We do our own build flags management. In particular, see
# rpm_inherit_flags below.
%undefine _auto_set_build_flags
2013-07-24 11:58:38 +00:00
##############################################################################
# Any architecture/kernel combination that supports running 32-bit and 64-bit
# code in userspace is considered a biarch arch.
%global biarcharches %{ix86} x86_64 s390 s390x
# Avoid generating a glibc-headers package on architectures which are
# not biarch.
%ifarch %{biarcharches}
%global need_headers_package 1
%if 0%{?rhel} > 0
%global headers_package_name glibc-headers
%else
%ifarch %{ix86} x86_64
%global headers_package_name glibc-headers-x86
%endif
%ifarch s390 s390x
%global headers_package_name glibc-headers-s390
%endif
%dnl !rhel
%endif
%else
%global need_headers_package 0
%dnl !biarcharches
%endif
##############################################################################
# Utility functions for pre/post scripts. Stick them at the beginning of
# any lua %pre, %post, %postun, etc. sections to have them expand into
# those scripts. It only works in lua sections and not anywhere else.
%global glibc_post_funcs %{expand:
-- We use lua because there may be no shell that we can run during
-- glibc upgrade. We used to implement much of %%post as a C program,
-- but from an overall maintenance perspective the lua in the spec
-- file was simpler and safer given the operations required.
-- All lua code will be ignored by rpm-ostree; see:
-- https://github.com/projectatomic/rpm-ostree/pull/1869
-- If we add new lua actions to the %%post code we should coordinate
-- with rpm-ostree and ensure that their glibc install is functional.
--
-- Note: We use _prefix because Fedora's UsrMove says so.
function call_ldconfig ()
if not rpm.execute("%{_prefix}/sbin/ldconfig") then
io.stdout:write ("Error: call to %{_prefix}/sbin/ldconfig failed.\n")
end
end
function update_gconv_modules_cache ()
local iconv_dir = "%{_libdir}/gconv"
local iconv_cache = iconv_dir .. "/gconv-modules.cache"
local iconv_modules = iconv_dir .. "/gconv-modules"
if posix.utime(iconv_modules) == 0 then
if posix.utime (iconv_cache) == 0 then
if not rpm.execute("%{_prefix}/sbin/iconvconfig",
"-o", iconv_cache,
"--nostdlib",
iconv_dir)
then
io.stdout:write ("Error: call to %{_prefix}/sbin/iconvconfig failed.\n")
end
else
io.stdout:write ("Error: Missing " .. iconv_cache .. " file.\n")
end
end
end}
2013-07-24 11:58:38 +00:00
##############################################################################
# %%package glibc - The GNU C Library (glibc) core package.
##############################################################################
2008-03-05 10:32:39 +00:00
Summary: The GNU libc libraries
Name: glibc
2009-06-26 15:46:27 +00:00
Version: %{glibcversion}
# We'll use baserelease here for two reasons:
# - It is known to rpmdev-bumpspec, so it will be properly handled for mass-
# rebuilds
# - It allows using the Release number without the %%dist tag in the dependency
# generator to make the generated requires interchangeable between Rawhide
# and ELN (.elnYY < .fcXX).
%global baserelease 1
Release: %{baserelease}%{?dist}
2018-07-04 11:02:15 +00:00
# In general, GPLv2+ is used by programs, LGPLv2+ is used for
# libraries.
#
# LGPLv2+ with exceptions is used for things that are linked directly
# into dynamically linked programs and shared libraries (e.g. crt
# files, lib*_nonshared.a). Historically, this exception also applies
# to parts of libio.
#
# GPLv2+ with exceptions is used for parts of the Arm unwinder.
#
# GFDL is used for the documentation.
#
# Some other licenses are used in various places (BSD, Inner-Net,
# ISC, Public Domain).
#
# HSRL and FSFAP are only used in test cases, which currently do not
# ship in binary RPMs, so they are not listed here. MIT is used for
# scripts/install-sh, which does not ship, either.
#
# GPLv3+ is used by manual/texinfo.tex, which we do not use.
#
# LGPLv3+ is used by some Hurd code, which we do not build.
#
# LGPLv2 is used in one place (time/timespec_get.c, by mistake), but
# it is not actually compiled, so it does not matter for libraries.
License: LGPLv2+ and LGPLv2+ with exceptions and GPLv2+ and GPLv2+ with exceptions and BSD and Inner-Net and ISC and Public Domain and GFDL
2010-07-12 11:40:50 +00:00
URL: http://www.gnu.org/software/glibc/
Source0: %{?glibc_release_url}%{glibcsrcdir}.tar.xz
Source1: bench.mk
Source2: glibc-bench-compare
Source3: glibc.req.in
Source4: glibc.attr
Source10: wrap-find-debuginfo.sh
Source11: parse-SUPPORTED.py
# Include in the source RPM for reference.
Source12: ChangeLog.old
######################################################################
# Activate the wrapper script for debuginfo generation, by rewriting
# the definition of __debug_install_post.
%{lua:
local wrapper = rpm.expand("%{SOURCE10}")
local sysroot = rpm.expand("%{glibc_sysroot}")
local original = rpm.expand("%{macrobody:__debug_install_post}")
-- Strip leading newline. It confuses the macro redefinition.
-- Avoid embedded newlines that confuse the macro definition.
original = original:match("^%s*(.-)%s*$"):gsub("\\\n", "")
rpm.define("__debug_install_post bash " .. wrapper
.. " " .. sysroot .. " " .. original)
}
# The wrapper script relies on the fact that debugedit does not change
# build IDs.
%global _no_recompute_build_ids 1
%undefine _unique_build_ids
2013-07-24 11:58:38 +00:00
##############################################################################
# Patches:
# - See each individual patch file for origin and upstream status.
# - For new patches follow template.patch format.
##############################################################################
Patch4: glibc-fedora-linux-tcsetattr.patch
Patch8: glibc-fedora-manual-dircategory.patch
Patch9: glibc-rh827510.patch
Patch13: glibc-fedora-localedata-rh61908.patch
Patch17: glibc-cs-path.patch
Patch23: glibc-python3.patch
Work around libselinux API deprecations & auto-sync with upstream branch master - Add glibc-deprecated-selinux-makedb.patch and glibc-deprecated-selinux-nscd.patch to work around libselinux API deprecations. - Drop glibc-rseq-disable.patch; rseq support removed upstream. Upstream commit: ec2f1fddf29053957d061dfe310f106388472a4f - libio: Remove __libc_readline_unlocked - shadow: Implement fgetspent_r using __nss_fgetent_r - pwd: Implement fgetpwent_r using __nss_fgetent_r - gshadow: Implement fgetsgent_r using __nss_fgetent_r (bug 20338) - grp: Implement fgetgrent_r using __nss_fgetent_r - nss: Add __nss_fgetent_r - libio: Add fseterr_unlocked for internal use - nss_files: Use generic result pointer in parse_line - nss_files: Consolidate line parse declarations in <nss_files.h> - nss_compat: Do not use mmap to read database files (bug 26258) - nss_files: Consolidate file opening in __nss_files_fopen - Update powerpc-nofpu libm-test-ulps. - Use MPFR 4.1.0 in build-many-glibcs.py. - elf: Change TLS static surplus default back to 1664 - hurd: Fix longjmp check for sigstate - hurd: Fix longjmp early in initialization - manual: New signal and errno string functions are AS-safe - AArch64: Improve strlen_asimd performance (bug 25824) - Move <rpc/netdb.h> from sunrpc to inet - en_US: Minimize changes to date_fmt (Bug 25923) - Linux: Remove rseq support - manual: Use Unicode instead HTML entities for characters (bug 19737) - Add NEWS entry for CVE-2020-6096 (bug 25620) - arm: remove string/tst-memmove-overflow XFAIL - AArch64: Rename IS_ARES to IS_NEOVERSE_N1 - AArch64: Add optimized Q-register memcpy - AArch64: Align ENTRY to a cacheline - Correct timespec implementation [BZ #26232] - Remove --enable-obsolete-rpc configure flag - hurd: Fix build-many-glibcs.py - x86: Support usable check for all CPU features - string: Make tst-strerror/tst-strsignal unsupported if msgfmt is not installed - malloc: Deprecate more hook-related functionality - elf: Support at least 32-byte alignment in static dlopen - x86: Remove __ASSEMBLER__ check in init-arch.h - x86: Remove the unused __x86_prefetchw - Documentation for ARC port - build-many-glibcs.py: Enable ARC builds - ARC: Build Infrastructure - ARC: ABI lists - ARC: Linux Startup and Dynamic Loading - ARC: Linux ABI - ARC: Linux Syscall Interface - ARC: hardware floating point support - ARC: math soft float support - ARC: Atomics and Locking primitives - ARC: Thread Local Storage support - ARC: startup and dynamic linking code - ARC: ABI Implementation - Fix time/tst-cpuclock1 intermitent failures - powerpc64: Fix calls when r2 is not used [BZ #26173] - Add NEWS entry for Update to Unicode 13.0.0 [BZ #25819] - Update i686 libm-test-ulps - Fix memory leak in __printf_fp_l (bug 26215). - Fix double free in __printf_fp_l (bug 26214). - linux: Fix syscall list generation instructions - sysv: linux: Add 64-bit time_t variant for shmctl - sysvipc: Remove the linux shm-pad.h file - sysvipc: Split out linux struct shmid_ds - sysv: linux: Add 64-bit time_t variant for msgctl - sysvipc: Remove the linux msq-pad.h file - sysvipc: Split out linux struct semid_ds - sysv: linux: Add 64-bit time_t variant for semctl
2020-07-21 13:09:22 +00:00
Patch30: glibc-deprecated-selinux-makedb.patch
Auto-sync with upstream branch master Temporary patches to work around gcc 12 vs glibc warning and ppc64le long double conflicts. Upstream commit: 5b8e7980c5dabd9aaefeba4f0208baa8cf7653ee - Linux: Detect user namespace support in io/tst-getcwd-smallbuff - Fix handling of unterminated bracket expressions in fnmatch (bug 28792) - realpath: Avoid overwriting preexisting error (CVE-2021-3998) - elf: Add a test for PT_LOAD segments with invalid p_align [BZ #28688] - elf: Add a test for PT_LOAD segments with p_align == 1 [BZ #28688] - elf: Add a test for PT_LOAD segments with mixed p_align [BZ #28676] - Add and use link-test-modules-rpath-link [BZ #28455] - tst-realpath-toolong: Fix hurd build - getcwd: Set errno to ERANGE for size == 1 (CVE-2021-3999) - Add valgrind smoke test - htl: Fix cleaning the reply port - elf: Properly align all PT_LOAD segments [BZ #28676] - realpath: Set errno to ENAMETOOLONG for result larger than PATH_MAX [BZ #28770] - support: Add helpers to create paths longer than PATH_MAX - nptl: Effectively skip CAS in spinlock loop - mips: Move DT_MIPS into <ldsodefs.h> - x86_64: Document libmvec vector functions accuracy [BZ #28766] - x86: Black list more Intel CPUs for TSX [BZ #27398] - elf: Fix tst-align3 - elf: Move _dl_setup_hash to its own file - htl: Fix build error in annexc - elf: Reinstate tst-audit17 - x86: use default cache size if it cannot be determined [BZ #28784] - rt/tst-mqueue*: Return UNSUPPORTED when mq_open fails with ENOSYS - Linux: Add epoll_pwait2 (BZ #27359) - Properly handle --disable-default-pie [BZ #28780] - elf: Fix 64 time_t support for installed statically binaries - Revert "elf: Fix 64 time_t support for installed statically binaries" - CVE-2022-23218: Buffer overflow in sunrpc svcunix_create (bug 28768) - sunrpc: Test case for clnt_create "unix" buffer overflow (bug 22542) - CVE-2022-23219: Buffer overflow in sunrpc clnt_create for "unix" (bug 22542) - socket: Add the __sockaddr_un_set function - elf/tst-dl_find_object: Disable subtests for non-contiguous maps (bug 28732) - elf: Set l_contiguous to 1 for the main map in more cases - elf: Introduce rtld_setup_main_map - hurd: Make RPC input array parameters const - hurd: optimize exec cleanup - hurd: Add __rtld_execve - hurd: Fix exec() leak on proc_task2proc failure - htl: Hide __pthread_attr's __schedparam type [BZ #23088] - htl: Clear kernel_thread field before releasing the thread structure - hurd: drop SA_SIGINFO availability xfail - hurd: Fix timer/clock_getres crash on NULL res parameter - hurd: Fix pthread_kill on exiting/ted thread - [hurd] Drop spurious #ifdef SHARED - [hurd] Call _dl_sort_maps_init in _dl_sysdep_start - elf tst-dl_find_object: Fix typo - s390x: Use <gcc-macros.h> in early HWCAP check - x86: Add x86-64-vN check to early startup - powerpc64le: Use <gcc-macros.h> in early HWCAP check - Add --with-rtld-early-cflags configure option - elf: Split dl-printf.c from dl-misc.c - elf/Makefile: Reflow and sort most variable assignments - Generate gcc-macros.h - x86: HAVE_X86_LAHF_SAHF, HAVE_X86_MOVBE and -march=x86-64-vN (bug 28782) - math: Add more inputs to atan2 accuracy tests [BZ #28765] - Disable debuginfod in printer tests [BZ #28757] - Update syscall lists for Linux 5.16 - i386: Remove broken CAN_USE_REGISTER_ASM_EBP (bug 28771) - stdlib: Fix formatting of tests list in Makefile - stdlib: Sort tests in Makefile - x86_64: Fix SSE4.2 libmvec atan2 function accuracy [BZ #28765] - debug: Synchronize feature guards in fortified functions [BZ #28746] - debug: Autogenerate _FORTIFY_SOURCE tests - Do not build libresolv module with 64 bit time_t flags - Revert "linux: Fix ancillary 64-bit time timestamp conversion (BZ #28349, BZ #28350)" - Revert "support: Add support_socket_so_timestamp_time64" - timezone: Fix tst-bz28707 Makefile rule - linux: Fix ancillary 64-bit time timestamp conversion (BZ #28349, BZ #28350) - support: Add support_socket_so_timestamp_time64 - elf: Fix 64 time_t support for installed statically binaries - Enable _FORTIFY_SOURCE=3 for gcc 12 and above - manual: Drop obsolete @refill - aarch64: Add HWCAP2_ECV from Linux 5.16 - Use Linux 5.16 in build-many-glibcs.py - x86: Fix __wcsncmp_evex in strcmp-evex.S [BZ# 28755] - x86: Fix __wcsncmp_avx2 in strcmp-avx2.S [BZ# 28755] - math: Fix float conversion regressions with gcc-12 [BZ #28713] - elf: Simplify software TM implementation in _dl_find_object - Restore ENTRY_POINT definition on hppa, ia64 (bug 28749) - elf: Fix fences in _dl_find_object_update (bug 28745) - ttydefaults.h: Fix CSTATUS to control-t - AArch64: Check for SVE in ifuncs [BZ #28744] - debug: Remove catchsegv and libSegfault (BZ #14913) - Documentation for OpenRISC port - build-many-glibcs.py: add OpenRISC support - or1k: Build Infrastructure - or1k: ABI lists - or1k: Linux ABI - or1k: Linux Syscall Interface - or1k: math soft float support - or1k: Atomics and Locking primitives - or1k: Thread Local Storage support - or1k: startup and dynamic linking code - or1k: ABI Implementation - linux/syscalls: Add or1k_atomic syscall for OpenRISC - elf: Add reloc for OpenRISC - elf: Add a comment after trailing backslashes - elf: Also try DT_RUNPATH for LD_AUDIT dlopen [BZ #28455] - elf: Fix tst-linkall-static link when pthread is not in libc
2022-01-24 21:39:19 +00:00
2013-07-24 11:58:38 +00:00
##############################################################################
# Continued list of core "glibc" package information:
##############################################################################
2008-03-05 10:32:39 +00:00
Obsoletes: glibc-profile < 2.4
Obsoletes: nscd < 2.35
Provides: ldconfig
2013-07-24 11:58:38 +00:00
2006-07-11 15:23:42 +00:00
# The dynamic linker supports DT_GNU_HASH
Provides: rtld(GNU_HASH)
# We need libgcc for cancellation support in POSIX threads.
Requires: libgcc%{_isa}
Requires: glibc-common = %{version}-%{release}
2013-07-24 11:58:38 +00:00
2018-07-23 12:23:36 +00:00
# Various components (regex, glob) have been imported from gnulib.
Provides: bundled(gnulib)
Requires(pre): basesystem
Requires: basesystem
2013-07-24 11:58:38 +00:00
%ifarch %{ix86}
# Automatically install the 32-bit variant if the 64-bit variant has
# been installed. This covers the case when glibc.i686 is installed
# after nss_*.x86_64. (See below for the other ordering.)
Recommends: (nss_db(x86-32) if nss_db(x86-64))
Recommends: (nss_hesiod(x86-32) if nss_hesiod(x86-64))
%endif
# This is for building auxiliary programs like memusage
# For initial glibc bootstraps it can be commented out
%if %{without bootstrap}
BuildRequires: gd-devel libpng-devel zlib-devel
%endif
%if %{with docs}
%endif
%if %{without bootstrap}
BuildRequires: libselinux-devel >= 1.33.4-3
%endif
BuildRequires: audit-libs-devel >= 1.1.3, sed >= 3.95, libcap-devel, gettext
# We need procps-ng (/bin/ps), util-linux (/bin/kill), and gawk (/bin/awk),
# but it is more flexible to require the actual programs and let rpm infer
# the packages. However, until bug 1259054 is widely fixed we avoid the
# following:
# BuildRequires: /bin/ps, /bin/kill, /bin/awk
# And use instead (which should be reverted some time in the future):
BuildRequires: procps-ng, util-linux, gawk
2011-04-07 11:22:58 +00:00
BuildRequires: systemtap-sdt-devel
2013-07-24 11:58:38 +00:00
%if %{with valgrind}
# Require valgrind for smoke testing the dynamic loader to make sure we
# have not broken valgrind.
BuildRequires: valgrind
%endif
# We use python for the microbenchmarks and locale data regeneration
# from unicode sources (carried out manually). We choose python3
# explicitly because it supports both use cases. On some
# distributions, python3 does not actually install /usr/bin/python3,
# so we also depend on python3-devel.
BuildRequires: python3 python3-devel
# This GCC version is needed for -fstack-clash-protection support.
BuildRequires: gcc >= 7.2.1-6
%global enablekernel 3.2
2010-08-02 12:18:20 +00:00
Conflicts: kernel < %{enablekernel}
%global target %{_target_cpu}-redhat-linux
2011-07-20 11:54:13 +00:00
%ifarch %{arm}
%global target %{_target_cpu}-redhat-linuxeabi
%endif
2014-05-14 07:21:29 +00:00
%ifarch ppc64le
%global target ppc64le-redhat-linux
2014-05-14 07:21:29 +00:00
%endif
2013-07-24 11:58:38 +00:00
# GNU make 4.0 introduced the -O option.
BuildRequires: make >= 4.0
# The intl subsystem generates a parser using bison.
BuildRequires: bison >= 2.7
# binutils 2.30-17 is needed for --generate-missing-build-notes.
BuildRequires: binutils >= 2.30-17
2009-08-24 09:22:26 +00:00
# Earlier releases have broken support for IRELATIVE relocations
Conflicts: prelink < 0.4.2
2013-07-24 11:58:38 +00:00
%if %{without bootstrap}
%if %{with testsuite}
# The testsuite builds static C++ binaries that require a C++ compiler,
# static C++ runtime from libstdc++-static, and lastly static glibc.
BuildRequires: gcc-c++
BuildRequires: libstdc++-static
# A configure check tests for the ability to create static C++ binaries
# before glibc is built and therefore we need a glibc-static for that
# check to pass even if we aren't going to use any of those objects to
# build the tests.
BuildRequires: glibc-static
# libidn2 (but not libidn2-devel) is needed for testing AI_IDN/NI_IDN.
BuildRequires: libidn2
# The testsuite runs mtrace, which is a perl script
BuildRequires: perl-interpreter
%endif
%endif
2013-07-24 11:58:38 +00:00
# Filter out all GLIBC_PRIVATE symbols since they are internal to
2013-07-25 02:45:11 +00:00
# the package and should not be examined by any other tool.
2011-08-15 09:29:40 +00:00
%global __filter_GLIBC_PRIVATE 1
%global __provides_exclude ^libc_malloc_debug\\.so.*$
# For language packs we have glibc require a virtual dependency
# "glibc-langpack" wich gives us at least one installed langpack.
# If no langpack providing 'glibc-langpack' was installed you'd
# get language-neutral support e.g. C, POSIX, and C.UTF-8 locales.
# In the past we used to install the glibc-all-langpacks by default
# but we no longer do this to minimize container and VM sizes.
# Today you must actively use the language packs infrastructure to
# install language support.
Requires: glibc-langpack = %{version}-%{release}
Suggests: glibc-minimal-langpack = %{version}-%{release}
# Suggest extra gconv modules so that they are installed by default but can be
# removed if needed to build a minimal OS image.
Recommends: glibc-gconv-extra%{_isa} = %{version}-%{release}
# Use redhat-rpm-config as a marker for a buildroot configuration, and
# unconditionally pull in glibc-gconv-extra in that case.
Requires: (glibc-gconv-extra%{_isa} = %{version}-%{release} if redhat-rpm-config)
Auto-sync and build new glibc-gconv-extra package Auto-sync Upstream commit: ebae2f5a6f971a8f0b6c99e00f9c45ef7433924a Changes in addition to the sync: Add a downstream patch[1] to reinstate gconv-modules file and apply glibc-rh697421.patch after it. Also update spec file to create a new package glibc-gconv-extra with iconv converter modules that are not commonly used so that they can be removed in minimal or hardened installations. [1] https://sourceware.org/pipermail/libc-alpha/2021-June/127497.html Auto-sync commits: - Add build option to disable usage of scv on powerpc - io: Fix sporadic test failures in io/tst-stat - nptl: Avoid async cancellation to wrongly update __nptl_nthreads (BZ #19366) - nptl: Use pthread_kill on pthread_cancel - nptl: Implement raise in terms of pthread_kill - nptl: Move cancel type out of cancelhandling - nptl: Move cancel state out of cancelhandling - nptl: Remove CANCELING_BITMASK - nptl: Install cancellation handler on pthread_cancel - nptl: Deallocate the thread stack on setup failure (BZ #19511) - Remove stale references to libdl.a - Fix elf/tst-tls9-static after libdl cleanups. - iconvdata: Split out non-essential gconv module configuration - iconvdata: Move gconv-modules configuration to gconv-modules.conf - gconv_conf: Read configuration files in gconv-modules.d - iconvconfig: Read configuration from gconv-modules.d subdirectory - iconvconfig: Make file handling more general purpose - AArch64: Add support for roundeven[f] - configure: Replaced obsolete AC_TRY_COMPILE - libio: Assume _IO_lock_inexpensive - nptl: Remove exit-thread.h - Improve test coverage of strnlen function
2021-06-14 05:45:03 +00:00
%description
The glibc package contains standard libraries which are used by
multiple programs on the system. In order to save disk space and
memory, as well as to make upgrading easier, common system code is
kept in one place and shared between programs. This particular package
contains the most important sets of shared libraries: the standard C
library and the standard math library. Without these two libraries, a
Linux system will not function.
######################################################################
# libnsl subpackage
######################################################################
%package -n libnsl
Summary: Legacy support library for NIS
Requires: %{name}%{_isa} = %{version}-%{release}
%description -n libnsl
This package provides the legacy version of libnsl library, for
accessing NIS services.
This library is provided for backwards compatibility only;
applications should use libnsl2 instead to gain IPv6 support.
2013-07-24 11:58:38 +00:00
##############################################################################
# glibc "devel" sub-package
##############################################################################
%package devel
Summary: Object files for development using standard C libraries.
2008-03-05 10:32:39 +00:00
Requires: %{name} = %{version}-%{release}
Requires: libxcrypt-devel%{_isa} >= 4.0.0
Requires: kernel-headers >= 3.2
BuildRequires: kernel-headers >= 3.2
%if %{need_headers_package}
Requires: %{headers_package_name} = %{version}-%{release}
%endif
%if !(0%{?rhel} > 0 && %{need_headers_package})
# For backwards compatibility, when the glibc-headers package existed.
Provides: glibc-headers = %{version}-%{release}
Provides: glibc-headers(%{_target_cpu})
Obsoletes: glibc-headers < %{version}-%{release}
%endif
%description devel
The glibc-devel package contains the object files necessary
for developing programs which use the standard C libraries (which are
used by nearly all programs). If you are developing programs which
will use the standard C libraries, your system needs to have these
standard object files available in order to create the
executables.
Install glibc-devel if you are going to develop programs which will
use the standard C libraries.
##############################################################################
# glibc "doc" sub-package
##############################################################################
%if %{with docs}
%package doc
Summary: Documentation for GNU libc
BuildArch: noarch
Requires: %{name} = %{version}-%{release}
# Removing texinfo will cause check-safety.sh test to fail because it seems to
# trigger documentation generation based on dependencies. We need to fix this
# upstream in some way that doesn't depend on generating docs to validate the
# texinfo. I expect it's simply the wrong dependency for that target.
BuildRequires: texinfo >= 5.0
%description doc
The glibc-doc package contains The GNU C Library Reference Manual in info
format. Additional package documentation is also provided.
%endif
2013-07-24 11:58:38 +00:00
##############################################################################
# glibc "static" sub-package
##############################################################################
2009-02-18 20:47:04 +00:00
%package static
Summary: C library static libraries for -static linking.
Requires: %{name}-devel = %{version}-%{release}
Requires: libxcrypt-static%{?_isa} >= 4.0.0
2009-02-18 20:47:04 +00:00
%description static
The glibc-static package contains the C library static libraries
for -static linking. You don't need these, unless you link statically,
which is highly discouraged.
2013-07-24 11:58:38 +00:00
##############################################################################
# glibc "headers" sub-package
# - The headers package includes all common headers that are shared amongst
# the multilib builds. It avoids file conflicts between the architecture-
# specific glibc-devel variants.
# Files like gnu/stubs.h which have gnu/stubs-32.h (i686) and gnu/stubs-64.h
# are included in glibc-headers, but the -32 and -64 files are in their
# respective i686 and x86_64 devel packages.
2013-07-24 11:58:38 +00:00
##############################################################################
%if %{need_headers_package}
%package -n %{headers_package_name}
Summary: Additional internal header files for glibc-devel.
Requires: %{name} = %{version}-%{release}
%if 0%{?rhel} > 0
Provides: %{name}-headers(%{_target_cpu})
Obsoletes: glibc-headers-x86 < %{version}-%{release}
Obsoletes: glibc-headers-s390 < %{version}-%{release}
%else
BuildArch: noarch
%endif
%description -n %{headers_package_name}
The %{headers_package_name} package contains the architecture-specific
header files which cannot be included in glibc-devel package.
%endif
2013-07-24 11:58:38 +00:00
##############################################################################
# glibc "common" sub-package
##############################################################################
%package common
Summary: Common binaries and locale data for glibc
2008-03-26 12:29:52 +00:00
Requires: %{name} = %{version}-%{release}
Requires: tzdata >= 2003a
%description common
The glibc-common package includes common binaries for the GNU libc
libraries, as well as national language (locale) support.
######################################################################
# File triggers to do ldconfig calls automatically (see rhbz#1380878)
######################################################################
# File triggers for when libraries are added or removed in standard
# paths.
Rewrite scriptlets to call /sbin/ldconfig in lua The scriptlet in glibc adds a dependency on bash to glibc-common, which is required by glibc, so effectively the whole world depends on bash. By rewriting the script in lua we drop this dependency, and also to avoid a (bogus?) warning from rpm about a dependency loop. If the call fails, an error is printed but the transaction is not failed. (The original script didn't have "|| :", so the return value from /sbin/ldconfig would be the return value from the script, causing the transaction to fail.) Quoting https://bugzilla.redhat.com/show_bug.cgi?id=2018913#c34: warning: SCC #1: 5 members (5 external dependencies) warning: glibc-2.35-2.fc37.x86_64 warning: -> glibc-minimal-langpack-2.35-2.fc37.x86_64 warning: -> glibc-common-2.35-2.fc37.x86_64 warning: ncurses-libs-6.2-9.20210508.fc36.x86_64 warning: -> glibc-2.35-2.fc37.x86_64 warning: bash-5.1.16-2.fc36.x86_64 warning: -> ncurses-libs-6.2-9.20210508.fc36.x86_64 warning: -> glibc-2.35-2.fc37.x86_64 warning: glibc-common-2.35-2.fc37.x86_64 warning: -> glibc-2.35-2.fc37.x86_64 warning: -> bash-5.1.16-2.fc36.x86_64 warning: glibc-minimal-langpack-2.35-2.fc37.x86_64 warning: -> glibc-common-2.35-2.fc37.x86_64 warning: -> glibc-2.35-2.fc37.x86_64 If we look into SCC #1, bash obviously requires glibc because it links to it. The loop is created by glibc → glibc-common → bash, because glibc-common has %transfiletriggerin and %transfiletriggerpostun using bash to call /sbin/ldconfig. https://github.com/coreos/rpm-ostree/pull/3453 provides a workaround so that rpm-ostree doesn't choke on this.
2022-02-22 15:43:17 +00:00
%transfiletriggerin common -P 2000000 -p <lua> -- /lib /usr/lib /lib64 /usr/lib64
%glibc_post_funcs
call_ldconfig()
%end
Rewrite scriptlets to call /sbin/ldconfig in lua The scriptlet in glibc adds a dependency on bash to glibc-common, which is required by glibc, so effectively the whole world depends on bash. By rewriting the script in lua we drop this dependency, and also to avoid a (bogus?) warning from rpm about a dependency loop. If the call fails, an error is printed but the transaction is not failed. (The original script didn't have "|| :", so the return value from /sbin/ldconfig would be the return value from the script, causing the transaction to fail.) Quoting https://bugzilla.redhat.com/show_bug.cgi?id=2018913#c34: warning: SCC #1: 5 members (5 external dependencies) warning: glibc-2.35-2.fc37.x86_64 warning: -> glibc-minimal-langpack-2.35-2.fc37.x86_64 warning: -> glibc-common-2.35-2.fc37.x86_64 warning: ncurses-libs-6.2-9.20210508.fc36.x86_64 warning: -> glibc-2.35-2.fc37.x86_64 warning: bash-5.1.16-2.fc36.x86_64 warning: -> ncurses-libs-6.2-9.20210508.fc36.x86_64 warning: -> glibc-2.35-2.fc37.x86_64 warning: glibc-common-2.35-2.fc37.x86_64 warning: -> glibc-2.35-2.fc37.x86_64 warning: -> bash-5.1.16-2.fc36.x86_64 warning: glibc-minimal-langpack-2.35-2.fc37.x86_64 warning: -> glibc-common-2.35-2.fc37.x86_64 warning: -> glibc-2.35-2.fc37.x86_64 If we look into SCC #1, bash obviously requires glibc because it links to it. The loop is created by glibc → glibc-common → bash, because glibc-common has %transfiletriggerin and %transfiletriggerpostun using bash to call /sbin/ldconfig. https://github.com/coreos/rpm-ostree/pull/3453 provides a workaround so that rpm-ostree doesn't choke on this.
2022-02-22 15:43:17 +00:00
%transfiletriggerpostun common -P 2000000 -p <lua> -- /lib /usr/lib /lib64 /usr/lib64
%glibc_post_funcs
call_ldconfig()
%end
2019-05-17 01:43:50 +00:00
# We need to run ldconfig manually because __brp_ldconfig assumes that
# glibc itself is always installed in $RPM_BUILD_ROOT, but with sysroots
# we may be installed into a subdirectory of that path. Therefore we
# unset __brp_ldconfig and run ldconfig by hand with the sysroots path
# passed to -r.
%undefine __brp_ldconfig
######################################################################
%package locale-source
Summary: The sources for the locales
Requires: %{name} = %{version}-%{release}
Requires: %{name}-common = %{version}-%{release}
%description locale-source
The sources for all locales provided in the language packs.
If you are building custom locales you will most likely use
these sources as the basis for your new locale.
# We define a global regular expression to capture all of the locale
# sources. We use it later when constructing the various packages.
%global locale_rx eo syr *_*
%{lua:
-- To make lua-mode happy: '
-- List of supported locales. This is used to generate the langpack
-- subpackages below. This table needs adjustments if the set of
-- glibc locales changes. "code" is the glibc code for the language
-- (before the "_". "name" is the English translation of the language
-- name (for use in subpackage descriptions). "regions" is a table of
-- variant specifiers (after the "_", excluding "@" and "."
-- variants/charset specifiers). The table must be sorted by the code
-- field, and the regions table must be sorted as well.
--
-- English translations of language names can be obtained using (for
-- the "aa" language in this example):
--
-- python3 -c 'import langtable; print(langtable.language_name("aa", languageIdQuery="en"))'
local locales = {
{ code="aa", name="Afar", regions={ "DJ", "ER", "ET" } },
{ code="af", name="Afrikaans", regions={ "ZA" } },
{ code="agr", name="Aguaruna", regions={ "PE" } },
{ code="ak", name="Akan", regions={ "GH" } },
{ code="am", name="Amharic", regions={ "ET" } },
{ code="an", name="Aragonese", regions={ "ES" } },
{ code="anp", name="Angika", regions={ "IN" } },
{
code="ar",
name="Arabic",
regions={
"AE",
"BH",
"DZ",
"EG",
"IN",
"IQ",
"JO",
"KW",
"LB",
"LY",
"MA",
"OM",
"QA",
"SA",
"SD",
"SS",
"SY",
"TN",
"YE"
}
},
{ code="as", name="Assamese", regions={ "IN" } },
{ code="ast", name="Asturian", regions={ "ES" } },
{ code="ayc", name="Southern Aymara", regions={ "PE" } },
{ code="az", name="Azerbaijani", regions={ "AZ", "IR" } },
{ code="be", name="Belarusian", regions={ "BY" } },
{ code="bem", name="Bemba", regions={ "ZM" } },
{ code="ber", name="Berber", regions={ "DZ", "MA" } },
{ code="bg", name="Bulgarian", regions={ "BG" } },
{ code="bhb", name="Bhili", regions={ "IN" } },
{ code="bho", name="Bhojpuri", regions={ "IN", "NP" } },
{ code="bi", name="Bislama", regions={ "VU" } },
{ code="bn", name="Bangla", regions={ "BD", "IN" } },
{ code="bo", name="Tibetan", regions={ "CN", "IN" } },
{ code="br", name="Breton", regions={ "FR" } },
{ code="brx", name="Bodo", regions={ "IN" } },
{ code="bs", name="Bosnian", regions={ "BA" } },
{ code="byn", name="Blin", regions={ "ER" } },
{ code="ca", name="Catalan", regions={ "AD", "ES", "FR", "IT" } },
{ code="ce", name="Chechen", regions={ "RU" } },
{ code="chr", name="Cherokee", regions={ "US" } },
{ code="ckb", name="Central Kurdish", regions={ "IQ" } },
{ code="cmn", name="Mandarin Chinese", regions={ "TW" } },
{ code="crh", name="Crimean Turkish", regions={ "UA" } },
{ code="cs", name="Czech", regions={ "CZ" } },
{ code="csb", name="Kashubian", regions={ "PL" } },
{ code="cv", name="Chuvash", regions={ "RU" } },
{ code="cy", name="Welsh", regions={ "GB" } },
{ code="da", name="Danish", regions={ "DK" } },
{
code="de",
name="German",
regions={ "AT", "BE", "CH", "DE", "IT", "LI", "LU" }
},
{ code="doi", name="Dogri", regions={ "IN" } },
{ code="dsb", name="Lower Sorbian", regions={ "DE" } },
{ code="dv", name="Divehi", regions={ "MV" } },
{ code="dz", name="Dzongkha", regions={ "BT" } },
{ code="el", name="Greek", regions={ "CY", "GR" } },
{
code="en",
name="English",
regions={
"AG",
"AU",
"BW",
"CA",
"DK",
"GB",
"HK",
"IE",
"IL",
"IN",
"NG",
"NZ",
"PH",
"SC",
"SG",
"US",
"ZA",
"ZM",
"ZW"
}
},
{ code="eo", name="Esperanto", regions={} },
{
code="es",
name="Spanish",
regions={
"AR",
"BO",
"CL",
"CO",
"CR",
"CU",
"DO",
"EC",
"ES",
"GT",
"HN",
"MX",
"NI",
"PA",
"PE",
"PR",
"PY",
"SV",
"US",
"UY",
"VE"
}
},
{ code="et", name="Estonian", regions={ "EE" } },
{ code="eu", name="Basque", regions={ "ES" } },
{ code="fa", name="Persian", regions={ "IR" } },
{ code="ff", name="Fulah", regions={ "SN" } },
{ code="fi", name="Finnish", regions={ "FI" } },
{ code="fil", name="Filipino", regions={ "PH" } },
{ code="fo", name="Faroese", regions={ "FO" } },
{ code="fr", name="French", regions={ "BE", "CA", "CH", "FR", "LU" } },
{ code="fur", name="Friulian", regions={ "IT" } },
{ code="fy", name="Western Frisian", regions={ "DE", "NL" } },
{ code="ga", name="Irish", regions={ "IE" } },
{ code="gd", name="Scottish Gaelic", regions={ "GB" } },
{ code="gez", name="Geez", regions={ "ER", "ET" } },
{ code="gl", name="Galician", regions={ "ES" } },
{ code="gu", name="Gujarati", regions={ "IN" } },
{ code="gv", name="Manx", regions={ "GB" } },
{ code="ha", name="Hausa", regions={ "NG" } },
{ code="hak", name="Hakka Chinese", regions={ "TW" } },
{ code="he", name="Hebrew", regions={ "IL" } },
{ code="hi", name="Hindi", regions={ "IN" } },
{ code="hif", name="Fiji Hindi", regions={ "FJ" } },
{ code="hne", name="Chhattisgarhi", regions={ "IN" } },
{ code="hr", name="Croatian", regions={ "HR" } },
{ code="hsb", name="Upper Sorbian", regions={ "DE" } },
{ code="ht", name="Haitian Creole", regions={ "HT" } },
{ code="hu", name="Hungarian", regions={ "HU" } },
{ code="hy", name="Armenian", regions={ "AM" } },
{ code="ia", name="Interlingua", regions={ "FR" } },
{ code="id", name="Indonesian", regions={ "ID" } },
{ code="ig", name="Igbo", regions={ "NG" } },
{ code="ik", name="Inupiaq", regions={ "CA" } },
{ code="is", name="Icelandic", regions={ "IS" } },
{ code="it", name="Italian", regions={ "CH", "IT" } },
{ code="iu", name="Inuktitut", regions={ "CA" } },
{ code="ja", name="Japanese", regions={ "JP" } },
{ code="ka", name="Georgian", regions={ "GE" } },
{ code="kab", name="Kabyle", regions={ "DZ" } },
{ code="kk", name="Kazakh", regions={ "KZ" } },
{ code="kl", name="Kalaallisut", regions={ "GL" } },
{ code="km", name="Khmer", regions={ "KH" } },
{ code="kn", name="Kannada", regions={ "IN" } },
{ code="ko", name="Korean", regions={ "KR" } },
{ code="kok", name="Konkani", regions={ "IN" } },
{ code="ks", name="Kashmiri", regions={ "IN" } },
{ code="ku", name="Kurdish", regions={ "TR" } },
{ code="kw", name="Cornish", regions={ "GB" } },
{ code="ky", name="Kyrgyz", regions={ "KG" } },
{ code="lb", name="Luxembourgish", regions={ "LU" } },
{ code="lg", name="Ganda", regions={ "UG" } },
{ code="li", name="Limburgish", regions={ "BE", "NL" } },
{ code="lij", name="Ligurian", regions={ "IT" } },
{ code="ln", name="Lingala", regions={ "CD" } },
{ code="lo", name="Lao", regions={ "LA" } },
{ code="lt", name="Lithuanian", regions={ "LT" } },
{ code="lv", name="Latvian", regions={ "LV" } },
{ code="lzh", name="Literary Chinese", regions={ "TW" } },
{ code="mag", name="Magahi", regions={ "IN" } },
{ code="mai", name="Maithili", regions={ "IN", "NP" } },
{ code="mfe", name="Morisyen", regions={ "MU" } },
{ code="mg", name="Malagasy", regions={ "MG" } },
{ code="mhr", name="Meadow Mari", regions={ "RU" } },
{ code="mi", name="Maori", regions={ "NZ" } },
{ code="miq", name="Miskito", regions={ "NI" } },
{ code="mjw", name="Karbi", regions={ "IN" } },
{ code="mk", name="Macedonian", regions={ "MK" } },
{ code="ml", name="Malayalam", regions={ "IN" } },
{ code="mn", name="Mongolian", regions={ "MN" } },
{ code="mni", name="Manipuri", regions={ "IN" } },
{ code="mnw", name="Mon", regions={ "MM" } },
{ code="mr", name="Marathi", regions={ "IN" } },
{ code="ms", name="Malay", regions={ "MY" } },
{ code="mt", name="Maltese", regions={ "MT" } },
{ code="my", name="Burmese", regions={ "MM" } },
{ code="nan", name="Min Nan Chinese", regions={ "TW" } },
{ code="nb", name="Norwegian Bokmål", regions={ "NO" } },
{ code="nds", name="Low German", regions={ "DE", "NL" } },
{ code="ne", name="Nepali", regions={ "NP" } },
{ code="nhn", name="Tlaxcala-Puebla Nahuatl", regions={ "MX" } },
{ code="niu", name="Niuean", regions={ "NU", "NZ" } },
{ code="nl", name="Dutch", regions={ "AW", "BE", "NL" } },
{ code="nn", name="Norwegian Nynorsk", regions={ "NO" } },
{ code="nr", name="South Ndebele", regions={ "ZA" } },
{ code="nso", name="Northern Sotho", regions={ "ZA" } },
{ code="oc", name="Occitan", regions={ "FR" } },
{ code="om", name="Oromo", regions={ "ET", "KE" } },
{ code="or", name="Odia", regions={ "IN" } },
{ code="os", name="Ossetic", regions={ "RU" } },
{ code="pa", name="Punjabi", regions={ "IN", "PK" } },
{ code="pap", name="Papiamento", regions={ "AW", "CW" } },
{ code="pl", name="Polish", regions={ "PL" } },
{ code="ps", name="Pashto", regions={ "AF" } },
{ code="pt", name="Portuguese", regions={ "BR", "PT" } },
{ code="quz", name="Cusco Quechua", regions={ "PE" } },
{ code="raj", name="Rajasthani", regions={ "IN" } },
{ code="rif", name="Tarifit", regions={ "MA" } },
{ code="ro", name="Romanian", regions={ "RO" } },
{ code="ru", name="Russian", regions={ "RU", "UA" } },
{ code="rw", name="Kinyarwanda", regions={ "RW" } },
{ code="sa", name="Sanskrit", regions={ "IN" } },
{ code="sah", name="Sakha", regions={ "RU" } },
{ code="sat", name="Santali", regions={ "IN" } },
{ code="sc", name="Sardinian", regions={ "IT" } },
{ code="sd", name="Sindhi", regions={ "IN" } },
{ code="se", name="Northern Sami", regions={ "NO" } },
{ code="sgs", name="Samogitian", regions={ "LT" } },
{ code="shn", name="Shan", regions={ "MM" } },
{ code="shs", name="Shuswap", regions={ "CA" } },
{ code="si", name="Sinhala", regions={ "LK" } },
{ code="sid", name="Sidamo", regions={ "ET" } },
{ code="sk", name="Slovak", regions={ "SK" } },
{ code="sl", name="Slovenian", regions={ "SI" } },
{ code="sm", name="Samoan", regions={ "WS" } },
{ code="so", name="Somali", regions={ "DJ", "ET", "KE", "SO" } },
{ code="sq", name="Albanian", regions={ "AL", "MK" } },
{ code="sr", name="Serbian", regions={ "ME", "RS" } },
{ code="ss", name="Swati", regions={ "ZA" } },
{ code="st", name="Southern Sotho", regions={ "ZA" } },
{ code="sv", name="Swedish", regions={ "FI", "SE" } },
{ code="sw", name="Swahili", regions={ "KE", "TZ" } },
{ code="syr", name="Syriac", regions={} },
{ code="szl", name="Silesian", regions={ "PL" } },
{ code="ta", name="Tamil", regions={ "IN", "LK" } },
{ code="tcy", name="Tulu", regions={ "IN" } },
{ code="te", name="Telugu", regions={ "IN" } },
{ code="tg", name="Tajik", regions={ "TJ" } },
{ code="th", name="Thai", regions={ "TH" } },
{ code="the", name="Chitwania Tharu", regions={ "NP" } },
{ code="ti", name="Tigrinya", regions={ "ER", "ET" } },
{ code="tig", name="Tigre", regions={ "ER" } },
{ code="tk", name="Turkmen", regions={ "TM" } },
{ code="tl", name="Tagalog", regions={ "PH" } },
{ code="tn", name="Tswana", regions={ "ZA" } },
{ code="to", name="Tongan", regions={ "TO" } },
{ code="tpi", name="Tok Pisin", regions={ "PG" } },
{ code="tr", name="Turkish", regions={ "CY", "TR" } },
{ code="ts", name="Tsonga", regions={ "ZA" } },
{ code="tt", name="Tatar", regions={ "RU" } },
{ code="ug", name="Uyghur", regions={ "CN" } },
{ code="uk", name="Ukrainian", regions={ "UA" } },
{ code="unm", name="Unami language", regions={ "US" } },
{ code="ur", name="Urdu", regions={ "IN", "PK" } },
{ code="uz", name="Uzbek", regions={ "UZ" } },
{ code="ve", name="Venda", regions={ "ZA" } },
{ code="vi", name="Vietnamese", regions={ "VN" } },
{ code="wa", name="Walloon", regions={ "BE" } },
{ code="wae", name="Walser", regions={ "CH" } },
{ code="wal", name="Wolaytta", regions={ "ET" } },
{ code="wo", name="Wolof", regions={ "SN" } },
{ code="xh", name="Xhosa", regions={ "ZA" } },
{ code="yi", name="Yiddish", regions={ "US" } },
{ code="yo", name="Yoruba", regions={ "NG" } },
{ code="yue", name="Cantonese", regions={ "HK" } },
{ code="yuw", name="Yau", regions={ "PG" } },
{ code="zh", name="Mandarin Chinese", regions={ "CN", "HK", "SG", "TW" } },
{ code="zu", name="Zulu", regions={ "ZA" } }
}
-- Prints a list of LANGUAGE "_" REGION pairs. The output is expected
-- to be identical to parse-SUPPORTED.py. Called from the %%prep section.
function print_locale_pairs()
for i = 1, #locales do
local locale = locales[i]
if #locale.regions == 0 then
print(locale.code .. "\n")
else
for j = 1, #locale.regions do
print(locale.code .. "_" .. locale.regions[j] .. "\n")
end
end
end
end
local function compute_supplements(locale)
local lang = locale.code
local regions = locale.regions
result = "langpacks-core-" .. lang
for i = 1, #regions do
result = result .. " or langpacks-core-" .. lang .. "_" .. regions[i]
end
return result
end
-- Emit the definition of a language pack package.
local function lang_package(locale)
local lang = locale.code
local langname = locale.name
local suppl = compute_supplements(locale)
print(rpm.expand([[
%package langpack-]]..lang..[[
Summary: Locale data for ]]..langname..[[
Provides: glibc-langpack = %{version}-%{release}
Requires: %{name} = %{version}-%{release}
Requires: %{name}-common = %{version}-%{release}
Supplements: (glibc and (]]..suppl..[[))
%description langpack-]]..lang..[[
The glibc-langpack-]]..lang..[[ package includes the basic information required
to support the ]]..langname..[[ language in your applications.
%files -f langpack-]]..lang..[[.filelist langpack-]]..lang..[[
]]))
end
for i = 1, #locales do
lang_package(locales[i])
end
}
# The glibc-all-langpacks provides the virtual glibc-langpack,
# and thus satisfies glibc's requirement for installed locales.
# Users can add one more other langauge packs and then eventually
# uninstall all-langpacks to save space.
%package all-langpacks
Summary: All language packs for %{name}.
Requires: %{name} = %{version}-%{release}
Requires: %{name}-common = %{version}-%{release}
Provides: %{name}-langpack = %{version}-%{release}
%description all-langpacks
2020-04-03 12:17:51 +00:00
# No %files, this is an empty package. The C/POSIX and
# C.UTF-8 files are already installed by glibc. We create
# minimal-langpack because the virtual provide of
# glibc-langpack needs at least one package installed
# to satisfy it. Given that no-locales installed is a valid
# use case we support it here with this package.
%package minimal-langpack
Summary: Minimal language packs for %{name}.
Provides: glibc-langpack = %{version}-%{release}
Requires: %{name} = %{version}-%{release}
Requires: %{name}-common = %{version}-%{release}
%description minimal-langpack
This is a Meta package that is used to install minimal language packs.
This package ensures you can use C, POSIX, or C.UTF-8 locales, but
nothing else. It is designed for assembling a minimal system.
%files minimal-langpack
Auto-sync and build new glibc-gconv-extra package Auto-sync Upstream commit: ebae2f5a6f971a8f0b6c99e00f9c45ef7433924a Changes in addition to the sync: Add a downstream patch[1] to reinstate gconv-modules file and apply glibc-rh697421.patch after it. Also update spec file to create a new package glibc-gconv-extra with iconv converter modules that are not commonly used so that they can be removed in minimal or hardened installations. [1] https://sourceware.org/pipermail/libc-alpha/2021-June/127497.html Auto-sync commits: - Add build option to disable usage of scv on powerpc - io: Fix sporadic test failures in io/tst-stat - nptl: Avoid async cancellation to wrongly update __nptl_nthreads (BZ #19366) - nptl: Use pthread_kill on pthread_cancel - nptl: Implement raise in terms of pthread_kill - nptl: Move cancel type out of cancelhandling - nptl: Move cancel state out of cancelhandling - nptl: Remove CANCELING_BITMASK - nptl: Install cancellation handler on pthread_cancel - nptl: Deallocate the thread stack on setup failure (BZ #19511) - Remove stale references to libdl.a - Fix elf/tst-tls9-static after libdl cleanups. - iconvdata: Split out non-essential gconv module configuration - iconvdata: Move gconv-modules configuration to gconv-modules.conf - gconv_conf: Read configuration files in gconv-modules.d - iconvconfig: Read configuration from gconv-modules.d subdirectory - iconvconfig: Make file handling more general purpose - AArch64: Add support for roundeven[f] - configure: Replaced obsolete AC_TRY_COMPILE - libio: Assume _IO_lock_inexpensive - nptl: Remove exit-thread.h - Improve test coverage of strnlen function
2021-06-14 05:45:03 +00:00
# Infrequently used iconv converter modules.
%package gconv-extra
Summary: All iconv converter modules for %{name}.
Requires: %{name}%{_isa} = %{version}-%{release}
Auto-sync and build new glibc-gconv-extra package Auto-sync Upstream commit: ebae2f5a6f971a8f0b6c99e00f9c45ef7433924a Changes in addition to the sync: Add a downstream patch[1] to reinstate gconv-modules file and apply glibc-rh697421.patch after it. Also update spec file to create a new package glibc-gconv-extra with iconv converter modules that are not commonly used so that they can be removed in minimal or hardened installations. [1] https://sourceware.org/pipermail/libc-alpha/2021-June/127497.html Auto-sync commits: - Add build option to disable usage of scv on powerpc - io: Fix sporadic test failures in io/tst-stat - nptl: Avoid async cancellation to wrongly update __nptl_nthreads (BZ #19366) - nptl: Use pthread_kill on pthread_cancel - nptl: Implement raise in terms of pthread_kill - nptl: Move cancel type out of cancelhandling - nptl: Move cancel state out of cancelhandling - nptl: Remove CANCELING_BITMASK - nptl: Install cancellation handler on pthread_cancel - nptl: Deallocate the thread stack on setup failure (BZ #19511) - Remove stale references to libdl.a - Fix elf/tst-tls9-static after libdl cleanups. - iconvdata: Split out non-essential gconv module configuration - iconvdata: Move gconv-modules configuration to gconv-modules.conf - gconv_conf: Read configuration files in gconv-modules.d - iconvconfig: Read configuration from gconv-modules.d subdirectory - iconvconfig: Make file handling more general purpose - AArch64: Add support for roundeven[f] - configure: Replaced obsolete AC_TRY_COMPILE - libio: Assume _IO_lock_inexpensive - nptl: Remove exit-thread.h - Improve test coverage of strnlen function
2021-06-14 05:45:03 +00:00
Requires: %{name}-common = %{version}-%{release}
Auto-sync and build new glibc-gconv-extra package Auto-sync Upstream commit: ebae2f5a6f971a8f0b6c99e00f9c45ef7433924a Changes in addition to the sync: Add a downstream patch[1] to reinstate gconv-modules file and apply glibc-rh697421.patch after it. Also update spec file to create a new package glibc-gconv-extra with iconv converter modules that are not commonly used so that they can be removed in minimal or hardened installations. [1] https://sourceware.org/pipermail/libc-alpha/2021-June/127497.html Auto-sync commits: - Add build option to disable usage of scv on powerpc - io: Fix sporadic test failures in io/tst-stat - nptl: Avoid async cancellation to wrongly update __nptl_nthreads (BZ #19366) - nptl: Use pthread_kill on pthread_cancel - nptl: Implement raise in terms of pthread_kill - nptl: Move cancel type out of cancelhandling - nptl: Move cancel state out of cancelhandling - nptl: Remove CANCELING_BITMASK - nptl: Install cancellation handler on pthread_cancel - nptl: Deallocate the thread stack on setup failure (BZ #19511) - Remove stale references to libdl.a - Fix elf/tst-tls9-static after libdl cleanups. - iconvdata: Split out non-essential gconv module configuration - iconvdata: Move gconv-modules configuration to gconv-modules.conf - gconv_conf: Read configuration files in gconv-modules.d - iconvconfig: Read configuration from gconv-modules.d subdirectory - iconvconfig: Make file handling more general purpose - AArch64: Add support for roundeven[f] - configure: Replaced obsolete AC_TRY_COMPILE - libio: Assume _IO_lock_inexpensive - nptl: Remove exit-thread.h - Improve test coverage of strnlen function
2021-06-14 05:45:03 +00:00
%description gconv-extra
This package contains all iconv converter modules built in %{name}.
##############################################################################
# Subpackages for NSS modules except nss_files, nss_compat, nss_dns
##############################################################################
# This should remain it's own subpackage or "Provides: nss_db" to allow easy
# migration from old systems that previously had the old nss_db package
# installed. Note that this doesn't make the migration that smooth, the
# databases still need rebuilding because the formats were different.
# The nss_db package was deprecated in F16 and onwards:
# https://lists.fedoraproject.org/pipermail/devel/2011-July/153665.html
# The different database format does cause some issues for users:
# https://lists.fedoraproject.org/pipermail/devel/2011-December/160497.html
%package -n nss_db
Summary: Name Service Switch (NSS) module using hash-indexed files
Requires: %{name}%{_isa} = %{version}-%{release}
%ifarch x86_64
# Automatically install the 32-bit variant if the 64-bit variant has
# been installed. This covers the case when glibc.i686 is installed
# before nss_db.x86_64. (See above for the other ordering.)
Recommends: (nss_db(x86-32) if glibc(x86-32))
%endif
%description -n nss_db
The nss_db Name Service Switch module uses hash-indexed files in /var/db
to speed up user, group, service, host name, and other NSS-based lookups.
%package -n nss_hesiod
Summary: Name Service Switch (NSS) module using Hesiod
Requires: %{name}%{_isa} = %{version}-%{release}
%ifarch x86_64
# Automatically install the 32-bit variant if the 64-bit variant has
# been installed. This covers the case when glibc.i686 is installed
# before nss_hesiod.x86_64. (See above for the other ordering.)
Recommends: (nss_hesiod(x86-32) if glibc(x86-32))
%endif
%description -n nss_hesiod
The nss_hesiod Name Service Switch module uses the Domain Name System
(DNS) as a source for user, group, and service information, following
the Hesiod convention of Project Athena.
%package nss-devel
Summary: Development files for directly linking NSS service modules
Requires: %{name}%{_isa} = %{version}-%{release}
Requires: nss_db%{_isa} = %{version}-%{release}
Requires: nss_hesiod%{_isa} = %{version}-%{release}
%description nss-devel
The glibc-nss-devel package contains the object files necessary to
compile applications and libraries which directly link against NSS
modules supplied by glibc.
This is a rare and special use case; regular development has to use
the glibc-devel package instead.
2013-07-24 11:58:38 +00:00
##############################################################################
# glibc "utils" sub-package
##############################################################################
%package utils
Summary: Development utilities from GNU C library
2008-03-05 10:32:39 +00:00
Requires: %{name} = %{version}-%{release}
%description utils
The glibc-utils package contains memusage, a memory usage profiler,
mtrace, a memory leak tracer and xtrace, a function call tracer
which can be helpful during program debugging.
If unsure if you need this, don't install this package.
%if %{with benchtests}
%package benchtests
Summary: Benchmarking binaries and scripts for %{name}
%description benchtests
This package provides built benchmark binaries and scripts to run
microbenchmark tests on the system.
%endif
##############################################################################
# compat-libpthread-nonshared
# See: https://sourceware.org/bugzilla/show_bug.cgi?id=23500
##############################################################################
%package -n compat-libpthread-nonshared
Summary: Compatibility support for linking against libpthread_nonshared.a.
%description -n compat-libpthread-nonshared
This package provides compatibility support for applications that expect
libpthread_nonshared.a to exist. The support provided is in the form of
an empty libpthread_nonshared.a that allows dynamic links to succeed.
Such applications should be adjusted to avoid linking against
libpthread_nonshared.a which is no longer used. The static library
libpthread_nonshared.a is an internal implementation detail of the C
runtime and should not be expected to exist.
2013-07-24 11:58:38 +00:00
##############################################################################
# Prepare for the build.
##############################################################################
%prep
2018-04-19 11:49:39 +00:00
%autosetup -n %{glibcsrcdir} -p1
2013-07-24 11:58:38 +00:00
##############################################################################
# %%prep - Additional prep required...
##############################################################################
# Make benchmark scripts executable
chmod +x benchtests/scripts/*.py scripts/pylint
2013-07-24 11:58:38 +00:00
# Remove all files generated from patching.
find . -type f -size 0 -o -name "*.orig" -exec rm -f {} \;
2013-07-24 11:58:38 +00:00
# Ensure timestamps on configure files are current to prevent
# regenerating them.
touch `find . -name configure`
2013-07-24 11:58:38 +00:00
# Ensure *-kw.h files are current to prevent regenerating them.
2005-12-19 18:04:52 +00:00
touch locale/programs/*-kw.h
# Verify that our locales table is compatible with the locales table
# in the spec file.
set +x
echo '%{lua: print_locale_pairs()}' > localedata/SUPPORTED.spec
set -x
python3 %{SOURCE11} localedata/SUPPORTED > localedata/SUPPORTED.glibc
diff -u \
--label "spec file" localedata/SUPPORTED.spec \
--label "glibc localedata/SUPPORTED" localedata/SUPPORTED.glibc
rm localedata/SUPPORTED.spec localedata/SUPPORTED.glibc
2013-07-24 11:58:38 +00:00
##############################################################################
# Build glibc...
##############################################################################
%build
# Log osystem information
uname -a
2017-06-22 12:48:21 +00:00
LD_SHOW_AUXV=1 /bin/true
cat /proc/cpuinfo
cat /proc/sysinfo 2>/dev/null || true
cat /proc/meminfo
df
2013-07-24 11:58:38 +00:00
2013-07-25 02:45:11 +00:00
# We build using the native system compilers.
GCC=gcc
GXX=g++
2013-07-24 11:58:38 +00:00
# Part of rpm_inherit_flags. Is overridden below.
rpm_append_flag ()
{
BuildFlags="$BuildFlags $*"
}
# Propagates the listed flags to rpm_append_flag if supplied by
# redhat-rpm-config.
BuildFlags="-O2 -g"
rpm_inherit_flags ()
{
local reference=" $* "
local flag
for flag in $RPM_OPT_FLAGS $RPM_LD_FLAGS ; do
if echo "$reference" | grep -q -F " $flag " ; then
rpm_append_flag "$flag"
fi
done
}
# Propgate select compiler flags from redhat-rpm-config. These flags
# are target-dependent, so we use only those which are specified in
# redhat-rpm-config. We keep the -m32/-m32/-m64 flags to support
# multilib builds.
2018-07-11 13:54:24 +00:00
#
# Note: For building alternative run-times, care is required to avoid
# overriding the architecture flags which go into CC/CXX. The flags
# below are passed in CFLAGS.
rpm_inherit_flags \
2018-07-04 08:48:07 +00:00
"-Wp,-D_GLIBCXX_ASSERTIONS" \
"-fasynchronous-unwind-tables" \
"-fstack-clash-protection" \
"-fno-omit-frame-pointer" \
"-funwind-tables" \
"-m31" \
"-m32" \
"-m64" \
"-march=armv8-a+lse" \
"-march=armv8.1-a" \
"-march=haswell" \
"-march=i686" \
"-march=x86-64" \
"-march=x86-64-v2" \
"-march=x86-64-v3" \
"-march=x86-64-v4" \
"-march=z13" \
"-march=z14" \
"-march=z15" \
"-march=zEC12" \
"-mbranch-protection=standard" \
"-mcpu=power10" \
"-mcpu=power8" \
"-mcpu=power9" \
"-mfpmath=sse" \
"-mno-omit-leaf-frame-pointer" \
"-msse2" \
"-mstackrealign" \
"-mtune=generic" \
"-mtune=power10" \
"-mtune=power8" \
"-mtune=power9" \
"-mtune=z13" \
"-mtune=z14" \
"-mtune=z15" \
"-mtune=zEC12" \
2018-03-06 13:37:32 +00:00
"-specs=/usr/lib/rpm/redhat/redhat-annobin-cc1" \
%if 0%{?_annotated_build} > 0
# libc_nonshared.a cannot be built with the default hardening flags
# because the glibc build system is incompatible with
# -D_FORTIFY_SOURCE. The object files need to be marked as to be
# skipped in annobin annotations. (The -specs= variant of activating
# annobin does not work here because of flag ordering issues.)
# See <https://bugzilla.redhat.com/show_bug.cgi?id=1668822>.
BuildFlagsNonshared="-fplugin=annobin -fplugin-arg-annobin-disable -Wa,--generate-missing-build-notes=yes"
%endif
# Special flag to enable annobin annotations for statically linked
# assembler code. Needs to be passed to make; not preserved by
# configure.
%global glibc_make_flags_as ASFLAGS="-g -Wa,--generate-missing-build-notes=yes"
%global glibc_make_flags %{glibc_make_flags_as}
2013-07-24 11:58:38 +00:00
##############################################################################
# %%build - Generic options.
##############################################################################
EnableKernel="--enable-kernel=%{enablekernel}"
2013-07-24 11:58:38 +00:00
# Save the used compiler and options into the file "Gcc" for use later
# by %%install.
2005-07-08 10:21:35 +00:00
echo "$GCC" > Gcc
auto-import changelog data from glibc-2.3.3-27.src.rpm Tue May 11 2004 Jakub Jelinek <jakub@redhat.com> 2.3.3-27 - remove /lib64/tls/librtkaio-2.3.[23].so in glibc_post_upgrade on x86-64, s390x and ppc64 instead of /lib/tls/librtkaio-2.3.[23].so - build mq_{send,receive} with -fexceptions Fri May 07 2004 Jakub Jelinek <jakub@redhat.com> 2.3.3-26 - update from CVS - fix <tgmath.h> - fix memory leaks in nis, getifaddrs, etc. caused by incorrect use of realloc - remove /lib/{tls,i686}/librtkaio-2.3.[23].so in glibc_post_upgrade and rerun ldconfig if needed, otherwise after glibc upgrade librt.so.1 might be a stale symlink Wed May 05 2004 Jakub Jelinek <jakub@redhat.com> 2.3.3-25 - update from CVS - disable FUTEX_REQUEUE (work around #115349) - mq for sparc/sparc64/ia64 Tue May 04 2004 Jakub Jelinek <jakub@redhat.com> 2.3.3-24 - update from CVS - define S_ISSOCK in -D_XOPEN_SOURCE=600 and S_I[FS]SOCK plus F_[SG]ETOWN also in -D_XOPEN_SOURCE=500 (both included already in XNS5) - reorder dlopen checks, so that dlopening ET_REL objects complains about != ET_DYN != ET_EXEC, not about phentsize (#121606) - fix strpbrk macro for GCC 3.4+ (BZ #130) - fix <sys/sysctl.h> (BZ #140) - sched_[gs]etaffinity documentation fix (BZ #131) - fix sparc64 build (BZ #139) - change linuxthreads back to use non-cancellable writes to manager pipes etc. - fix sem_timedwait return value in linuxthreads (BZ #133) - ia64 unnecessary PLT relocs removal Thu Apr 22 2004 Jakub Jelinek <jakub@redhat.com> 2.3.3-23 - update from CVS - fix *scanf - fix shm_unlink, sem_unlink and mq_unlink errno values - avoid memory leaks in error - execstack fixes on s390 Mon Apr 19 2004 Jakub Jelinek <jakub@redhat.com> 2.3.3-22 - update from CVS - mq and timer fixes - rebuilt with binutils >= 2.15.90.0.3-2 to fix IA-64 statically linked binaries - fix linuxthreads librt.so on s390{,x}, so it is no longer DT_TEXTREL Sat Apr 17 2004 Jakub Jelinek <jakub@redhat.com> 2.3.3-21 - disable rtkaio - update from CVS - POSIX message passing support - fixed SIGEV_THREAD support for POSIX timers - fix free on non-malloced memory in syslog - fix ffsl on some 64-bit arches - fix sched_setaffinity on x86-64, ia64 - fix ppc64 umount - NETID_AUTHORITATIVE, SERVICES_AUTHORITATIVE support - various NIS speedups - fix fwrite with > 2GB sizes on 64-bit arches - fix pthread_getattr_np guardsize reporting in NPTL - report PLT relocations in ld.so and libc.so during the build Thu Mar 25 2004 Jakub Jelinek <jakub@redhat.com> 2.3.3-20 - update from CVS - change NPTL PTHREAD_MUTEX_ADAPTIVE_NP mutexes to spin on SMP - strtol speed optimization - don't try to use certainly unimplemented syscalls on ppc64 - kill -debug subpackage, move the libs to glibc-debuginfo{,-common} into /usr/lib/debug/usr/lib64/ directory - fix c_stubs with gcc 3.4 - move all the up to 3 builds into %build scriptlet and leave only installation in the %install scriptlet Mon Mar 22 2004 Jakub Jelinek <jakub@redhat.com> 2.3.3-19 - update from CVS - affinity API changes
2004-09-09 05:48:43 +00:00
2013-07-24 11:58:38 +00:00
##############################################################################
# build()
# Build glibc in `build-%{target}$1', passing the rest of the arguments
# as CFLAGS to the build (not the same as configure CFLAGS). Several
# global values are used to determine build flags, kernel version,
# system tap support, etc.
2013-07-24 11:58:38 +00:00
##############################################################################
2011-07-20 11:54:13 +00:00
build()
{
local builddir=build-%{target}${1:+-$1}
${1+shift}
rm -rf $builddir
mkdir $builddir
pushd $builddir
../configure CC="$GCC" CXX="$GXX" CFLAGS="$BuildFlags $*" \
--prefix=%{_prefix} \
--with-headers=%{_prefix}/include $EnableKernel \
--with-nonshared-cflags="$BuildFlagsNonshared" \
--enable-bind-now \
--build=%{target} \
--enable-stack-protector=strong \
--enable-tunables \
--enable-systemtap \
${core_with_options} \
%ifarch x86_64 %{ix86}
--enable-cet \
%endif
%ifarch %{ix86}
--disable-multi-arch \
%endif
%if %{without werror}
--disable-werror \
%endif
--disable-profile \
%if %{with bootstrap}
--without-selinux \
%endif
%ifarch aarch64
--enable-memory-tagging \
2009-06-26 15:46:27 +00:00
%endif
--disable-crypt \
--disable-build-nscd \
--disable-nscd ||
{ cat config.log; false; }
2009-09-01 11:03:11 +00:00
%make_build -r %{glibc_make_flags}
popd
}
2018-07-11 19:32:56 +00:00
# Default set of compiler options.
2011-07-20 11:54:13 +00:00
build
2013-07-24 11:58:38 +00:00
##############################################################################
# Install glibc...
##############################################################################
%install
# The built glibc is installed into a subdirectory of $RPM_BUILD_ROOT.
# For a system glibc that subdirectory is "/" (the root of the filesystem).
# This is called a sysroot (system root) and can be changed if we have a
# distribution that supports multiple installed glibc versions.
%global glibc_sysroot $RPM_BUILD_ROOT
# Remove existing file lists.
find . -type f -name '*.filelist' -exec rm -rf {} \;
2013-07-24 11:58:38 +00:00
# Reload compiler and build options that were used during %%build.
GCC=`cat Gcc`
%ifarch riscv64
# RISC-V ABI wants to install everything in /lib64/lp64d or /usr/lib64/lp64d.
# Make these be symlinks to /lib64 or /usr/lib64 respectively. See:
# https://lists.fedoraproject.org/archives/list/devel@lists.fedoraproject.org/thread/DRHT5YTPK4WWVGL3GIN5BF2IKX2ODHZ3/
for d in %{glibc_sysroot}%{_libdir} %{glibc_sysroot}/%{_lib}; do
mkdir -p $d
(cd $d && ln -sf . lp64d)
done
%endif
# Build and install:
2013-07-24 05:27:35 +00:00
pushd build-%{target}
%make_build install_root=%{glibc_sysroot} install
%make_build install_root=%{glibc_sysroot} \
install-locale-files -C ../localedata objdir=`pwd`
2013-07-24 05:27:35 +00:00
popd
# Locale creation via install-locale-files does not group identical files
# via hardlinks, so we must group them ourselves.
hardlink -c %{glibc_sysroot}/usr/lib/locale
# install_different:
# Install all core libraries into DESTDIR/SUBDIR. Either the file is
# installed as a copy or a symlink to the default install (if it is the
# same). The path SUBDIR_UP is the prefix used to go from
# DESTDIR/SUBDIR to the default installed libraries e.g.
# ln -s SUBDIR_UP/foo.so DESTDIR/SUBDIR/foo.so.
# When you call this function it is expected that you are in the root
# of the build directory, and that the default build directory is:
# "../build-%{target}" (relatively).
# The primary use of this function is to install alternate runtimes
# into the build directory and avoid duplicating this code for each
# runtime.
install_different()
{
local lib libbase libbaseso dlib
local destdir="$1"
local subdir="$2"
local subdir_up="$3"
local libdestdir="$destdir/$subdir"
# All three arguments must be non-zero paths.
if ! [ "$destdir" \
-a "$subdir" \
-a "$subdir_up" ]; then
echo "One of the arguments to install_different was emtpy."
exit 1
fi
# Create the destination directory and the multilib directory.
mkdir -p "$destdir"
mkdir -p "$libdestdir"
# Walk all of the libraries we installed...
for lib in libc math/libm nptl/libpthread rt/librt nptl_db/libthread_db
do
libbase=${lib#*/}
# Take care that `libbaseso' has a * that needs expanding so
# take care with quoting.
libbaseso=$(basename %{glibc_sysroot}/%{_lib}/${libbase}-*.so)
# Only install if different from default build library.
if cmp -s ${lib}.so ../build-%{target}/${lib}.so; then
ln -sf "$subdir_up"/$libbaseso $libdestdir/$libbaseso
else
cp -a ${lib}.so $libdestdir/$libbaseso
fi
dlib=$libdestdir/$(basename %{glibc_sysroot}/%{_lib}/${libbase}.so.*)
ln -sf $libbaseso $dlib
done
}
2013-07-24 11:58:38 +00:00
##############################################################################
# Remove the files we don't want to distribute
2013-07-24 11:58:38 +00:00
##############################################################################
# Remove the libNoVersion files.
# XXX: This looks like a bug in glibc that accidentally installed these
# wrong files. We probably don't need this today.
rm -f %{glibc_sysroot}/%{_libdir}/libNoVersion*
rm -f %{glibc_sysroot}/%{_lib}/libNoVersion*
# Remove the old nss modules.
rm -f %{glibc_sysroot}/%{_lib}/libnss1-*
rm -f %{glibc_sysroot}/%{_lib}/libnss-*.so.1
# This statically linked binary is no longer necessary in a world where
# the default Fedora install uses an initramfs, and further we have rpm-ostree
# which captures the whole userspace FS tree.
# Further, see https://github.com/projectatomic/rpm-ostree/pull/1173#issuecomment-355014583
rm -f %{glibc_sysroot}/{usr/,}sbin/sln
######################################################################
# Run ldconfig to create all the symbolic links we need
######################################################################
# Note: This has to happen before creating /etc/ld.so.conf.
mkdir -p %{glibc_sysroot}/var/cache/ldconfig
truncate -s 0 %{glibc_sysroot}/var/cache/ldconfig/aux-cache
# ldconfig is statically linked, so we can use the new version.
%{glibc_sysroot}/sbin/ldconfig -N -r %{glibc_sysroot}
2013-07-25 02:45:11 +00:00
##############################################################################
# Install info files
2013-07-25 02:45:11 +00:00
##############################################################################
%if %{with docs}
2013-07-24 11:58:38 +00:00
# Move the info files if glibc installed them into the wrong location.
if [ -d %{glibc_sysroot}%{_prefix}/info -a "%{_infodir}" != "%{_prefix}/info" ]; then
mkdir -p %{glibc_sysroot}%{_infodir}
mv -f %{glibc_sysroot}%{_prefix}/info/* %{glibc_sysroot}%{_infodir}
rm -rf %{glibc_sysroot}%{_prefix}/info
fi
2013-07-24 11:58:38 +00:00
# Compress all of the info files.
gzip -9nvf %{glibc_sysroot}%{_infodir}/libc*
# Copy the debugger interface documentation over to the right location
mkdir -p %{glibc_sysroot}%{_docdir}/glibc
cp elf/rtld-debugger-interface.txt %{glibc_sysroot}%{_docdir}/glibc
%else
rm -f %{glibc_sysroot}%{_infodir}/dir
rm -f %{glibc_sysroot}%{_infodir}/libc.info*
%endif
##############################################################################
# Create locale sub-package file lists
##############################################################################
olddir=`pwd`
pushd %{glibc_sysroot}%{_prefix}/lib/locale
rm -f locale-archive
$olddir/build-%{target}/elf/ld.so \
--library-path $olddir/build-%{target}/ \
$olddir/build-%{target}/locale/localedef \
--alias-file=$olddir/intl/locale.alias \
--prefix %{glibc_sysroot} --add-to-archive \
%locale_rx
# Historically, glibc-all-langpacks deleted the file on updates (sic),
# so we need to restore it in the posttrans scriptlet (like the old
# glibc-all-langpacks versions)
ln locale-archive locale-archive.real
# Almost half the LC_CTYPE files in langpacks are identical to the C.utf8
# variant which is installed by default. When we keep them as hardlinks,
# each langpack ends up retaining a copy. If we convert these to symbolic
# links instead, we save ~350K each when they get installed that way.
#
# LC_MEASUREMENT and LC_PAPER also have several duplicates but we don't
# bother with these because they are only ~30 bytes each.
pushd %{glibc_sysroot}/usr/lib/locale
for f in $(find %locale_rx -samefile C.utf8/LC_CTYPE); do
rm $f && ln -s '../C.utf8/LC_CTYPE' $f
done
popd
# Create the file lists for the language specific sub-packages:
for i in %locale_rx
do
lang=${i%%_*}
if [ ! -e langpack-${lang}.filelist ]; then
echo "%dir %{_prefix}/lib/locale" >> langpack-${lang}.filelist
fi
echo "%dir %{_prefix}/lib/locale/$i" >> langpack-${lang}.filelist
echo "%{_prefix}/lib/locale/$i/*" >> langpack-${lang}.filelist
done
popd
pushd %{glibc_sysroot}%{_prefix}/share/locale
for i in */LC_MESSAGES/libc.mo
do
locale=${i%%%%/*}
lang=${locale%%%%_*}
echo "%lang($lang) %{_prefix}/share/locale/${i}" \
>> %{glibc_sysroot}%{_prefix}/lib/locale/langpack-${lang}.filelist
done
popd
mv %{glibc_sysroot}%{_prefix}/lib/locale/*.filelist .
2013-07-24 11:58:38 +00:00
##############################################################################
# Install configuration files for services
##############################################################################
# Include ld.so.conf
echo 'include ld.so.conf.d/*.conf' > %{glibc_sysroot}/etc/ld.so.conf
truncate -s 0 %{glibc_sysroot}/etc/ld.so.cache
chmod 644 %{glibc_sysroot}/etc/ld.so.conf
mkdir -p %{glibc_sysroot}/etc/ld.so.conf.d
truncate -s 0 %{glibc_sysroot}/etc/gai.conf
# Include %{_libdir}/gconv/gconv-modules.cache
truncate -s 0 %{glibc_sysroot}%{_libdir}/gconv/gconv-modules.cache
chmod 644 %{glibc_sysroot}%{_libdir}/gconv/gconv-modules.cache
# Remove any zoneinfo files; they are maintained by tzdata.
rm -rf %{glibc_sysroot}%{_prefix}/share/zoneinfo
# Make sure %config files have the same timestamp across multilib packages.
#
# XXX: Ideally ld.so.conf should have the timestamp of the spec file, but there
# doesn't seem to be any macro to give us that. So we do the next best thing,
2019-05-17 01:43:50 +00:00
# which is to at least keep the timestamp consistent. The choice of using
# SOURCE0 is arbitrary.
touch -r %{SOURCE0} %{glibc_sysroot}/etc/ld.so.conf
Auto-sync with upstream branch master, Upstream commit: ffb17e7ba3a5ba9632cee97330b325072fbe41dd - rtld: Avoid using up static TLS surplus for optimizations [BZ #25051] - rtld: Account static TLS surplus for audit modules - rtld: Add rtld.nns tunable for the number of supported namespaces - Remove --enable-obsolete-nsl configure flag - Move non-deprecated RPC-related functions from sunrpc to inet - aarch64: add NEWS entry about branch protection support - aarch64: redefine RETURN_ADDRESS to strip PAC - aarch64: fix pac-ret support in _mcount - aarch64: Add pac-ret support to assembly files - aarch64: configure check for pac-ret code generation - aarch64: ensure objects are BTI compatible - aarch64: enable BTI at runtime - aarch64: fix RTLD_START for BTI - aarch64: fix swapcontext for BTI - aarch64: Add BTI support to assembly files - aarch64: Rename place holder .S files to .c - aarch64: configure test for BTI support - Rewrite abi-note.S in C. - rtld: Clean up PT_NOTE and add PT_GNU_PROPERTY handling - string: Move tst-strsignal tst-strerror to tests-container - string: Fix prototype mismatch in sigabbrev_np, __sigdescr_np - arm: CVE-2020-6096: Fix multiarch memcpy for negative length (#1820332) - arm: CVE-2020-6096: fix memcpy and memmove for negative length (#1820332) - sunrpc: Remove hidden aliases for global data symbols (bug 26210) - hurd: Fix strerror not setting errno - tst-strsignal: fix checking for RT signals support - hurd: Evaluate fd before entering the critical section - CVE-2016-10228: Rewrite iconv option parsing (#1428292) - nss: Remove cryptographic key support from nss_files, nss_nis, nss_nisplus - sunrpc: Do not export getrpcport by default - sunrpc: Do not export key handling hooks by default - sunrpc: Turn clnt_sperrno into a libc_hidden_nolink_sunrpc symbol - string: Add strerrorname_np and strerrordesc_np - string: Add sigabbrev_np and sigdescr_np - string: Add strerror_l on test-strerror-errno - string: Add strerror, strerror_r, and strerror_l test - string: Add strsignal test - string: Simplify strerror_r - string: Use tls-internal on strerror_l - string: Implement strerror in terms of strerror_l - string: Remove old TLS usage on strsignal - linux: Fix __NSIG_WORDS and add __NSIG_BYTES - signal: Move sys_errlist to a compat symbol - signal: Move sys_siglist to a compat symbol - signal: Add signum-{generic,arch}.h - Remove most vfprintf width/precision-dependent allocations (bug 14231, bug 26211). - elf: Do not signal LA_ACT_CONSISTENT for an empty namespace [BZ #26076] - Fix stringop-overflow errors from gcc 10 in iconv. - x86: Add thresholds for "rep movsb/stosb" to tunables - Use C2x return value from getpayload of non-NaN (bug 26073). - x86: Detect Extended Feature Disable (XFD) - x86: Correct bit_cpu_CLFSH [BZ #26208] - manual: Document __libc_single_threaded - Add the __libc_single_threaded variable - Linux: rseq registration tests - Linux: Use rseq in sched_getcpu if available - Linux: Perform rseq registration at C startup and thread creation - tst-cancel4: deal with ENOSYS errors - manual: Show copyright information not just in the printed manual
2020-07-10 10:56:47 +00:00
touch -r inet/etc.rpc %{glibc_sysroot}/etc/rpc
%if %{with benchtests}
# Build benchmark binaries. Ignore the output of the benchmark runs.
pushd build-%{target}
make BENCH_DURATION=1 bench-build
popd
# Copy over benchmark binaries.
mkdir -p %{glibc_sysroot}%{_prefix}/libexec/glibc-benchtests
cp $(find build-%{target}/benchtests -type f -executable) %{glibc_sysroot}%{_prefix}/libexec/glibc-benchtests/
# ... and the makefile.
for b in %{SOURCE1} %{SOURCE2}; do
cp $b %{glibc_sysroot}%{_prefix}/libexec/glibc-benchtests/
done
# .. and finally, the comparison scripts.
cp benchtests/scripts/benchout.schema.json %{glibc_sysroot}%{_prefix}/libexec/glibc-benchtests/
cp benchtests/scripts/compare_bench.py %{glibc_sysroot}%{_prefix}/libexec/glibc-benchtests/
cp benchtests/scripts/import_bench.py %{glibc_sysroot}%{_prefix}/libexec/glibc-benchtests/
cp benchtests/scripts/validate_benchout.py %{glibc_sysroot}%{_prefix}/libexec/glibc-benchtests/
%endif
# The #line directives gperf generates do not give the proper
# file name relative to the build directory.
pushd locale
ln -s programs/*.gperf .
popd
pushd iconv
ln -s ../locale/programs/charmap-kw.gperf .
popd
%if %{with docs}
# Remove the `dir' info-heirarchy file which will be maintained
# by the system as it adds info files to the install.
rm -f %{glibc_sysroot}%{_infodir}/dir
%endif
# Move libpcprofile.so and libmemusage.so into the proper library directory.
# They can be moved without any real consequences because users would not use
# them directly.
mkdir -p %{glibc_sysroot}%{_libdir}
mv -f %{glibc_sysroot}/%{_lib}/lib{pcprofile,memusage}.so \
%{glibc_sysroot}%{_libdir}
# Disallow linking against libc_malloc_debug.
rm %{glibc_sysroot}%{_libdir}/libc_malloc_debug.so
# Strip all of the installed object files.
strip -g %{glibc_sysroot}%{_libdir}/*.o
# The xtrace and memusage scripts have hard-coded paths that need to be
# translated to a correct set of paths using the $LIB token which is
# dynamically translated by ld.so as the default lib directory.
for i in %{glibc_sysroot}%{_prefix}/bin/{xtrace,memusage}; do
%if %{with bootstrap}
test -w $i || continue
%endif
sed -e 's~=/%{_lib}/libpcprofile.so~=%{_libdir}/libpcprofile.so~' \
-e 's~=/%{_lib}/libmemusage.so~=%{_libdir}/libmemusage.so~' \
-e 's~='\''/\\\$LIB/libpcprofile.so~='\''%{_prefix}/\\$LIB/libpcprofile.so~' \
-e 's~='\''/\\\$LIB/libmemusage.so~='\''%{_prefix}/\\$LIB/libmemusage.so~' \
-i $i
done
##############################################################################
# Build an empty libpthread_nonshared.a for compatiliby with applications
# that have old linker scripts that reference this file. We ship this only
# in compat-libpthread-nonshared sub-package.
##############################################################################
ar cr %{glibc_sysroot}%{_prefix}/%{_lib}/libpthread_nonshared.a
##############################################################################
# Beyond this point in the install process we no longer modify the set of
# installed files.
##############################################################################
2013-07-24 11:58:38 +00:00
##############################################################################
# Build the file lists used for describing the package and subpackages.
##############################################################################
# There are several main file lists (and many more for
# the langpack sub-packages (langpack-${lang}.filelist)):
# * master.filelist
# - Master file list from which all other lists are built.
# * glibc.filelist
# - Files for the glibc packages.
2013-07-24 11:58:38 +00:00
# * common.filelist
# - Flies for the common subpackage.
2013-07-24 11:58:38 +00:00
# * utils.filelist
# - Files for the utils subpackage.
2013-07-24 11:58:38 +00:00
# * devel.filelist
# - Files for the devel subpackage.
# * doc.filelist
# - Files for the documentation subpackage.
2013-07-24 11:58:38 +00:00
# * headers.filelist
# - Files for the headers subpackage.
2013-07-24 11:58:38 +00:00
# * static.filelist
# - Files for the static subpackage.
# * libnsl.filelist
# - Files for the libnsl subpackage
# * nss_db.filelist
# * nss_hesiod.filelist
# - File lists for nss_* NSS module subpackages.
# * nss-devel.filelist
# - File list with the .so symbolic links for NSS packages.
# * compat-libpthread-nonshared.filelist.
# - File list for compat-libpthread-nonshared subpackage.
2013-07-24 11:58:38 +00:00
# Create the main file lists. This way we can append to any one of them later
# wihtout having to create it. Note these are removed at the start of the
# install phase.
touch master.filelist
touch glibc.filelist
touch common.filelist
touch utils.filelist
Auto-sync and build new glibc-gconv-extra package Auto-sync Upstream commit: ebae2f5a6f971a8f0b6c99e00f9c45ef7433924a Changes in addition to the sync: Add a downstream patch[1] to reinstate gconv-modules file and apply glibc-rh697421.patch after it. Also update spec file to create a new package glibc-gconv-extra with iconv converter modules that are not commonly used so that they can be removed in minimal or hardened installations. [1] https://sourceware.org/pipermail/libc-alpha/2021-June/127497.html Auto-sync commits: - Add build option to disable usage of scv on powerpc - io: Fix sporadic test failures in io/tst-stat - nptl: Avoid async cancellation to wrongly update __nptl_nthreads (BZ #19366) - nptl: Use pthread_kill on pthread_cancel - nptl: Implement raise in terms of pthread_kill - nptl: Move cancel type out of cancelhandling - nptl: Move cancel state out of cancelhandling - nptl: Remove CANCELING_BITMASK - nptl: Install cancellation handler on pthread_cancel - nptl: Deallocate the thread stack on setup failure (BZ #19511) - Remove stale references to libdl.a - Fix elf/tst-tls9-static after libdl cleanups. - iconvdata: Split out non-essential gconv module configuration - iconvdata: Move gconv-modules configuration to gconv-modules.conf - gconv_conf: Read configuration files in gconv-modules.d - iconvconfig: Read configuration from gconv-modules.d subdirectory - iconvconfig: Make file handling more general purpose - AArch64: Add support for roundeven[f] - configure: Replaced obsolete AC_TRY_COMPILE - libio: Assume _IO_lock_inexpensive - nptl: Remove exit-thread.h - Improve test coverage of strnlen function
2021-06-14 05:45:03 +00:00
touch gconv.filelist
touch devel.filelist
touch doc.filelist
touch headers.filelist
touch static.filelist
touch libnsl.filelist
touch nss_db.filelist
touch nss_hesiod.filelist
touch nss-devel.filelist
touch compat-libpthread-nonshared.filelist
###############################################################################
# Master file list, excluding a few things.
###############################################################################
2009-06-26 15:46:27 +00:00
{
# List all files or links that we have created during install.
# Files with 'etc' are configuration files, likewise 'gconv-modules'
# and 'gconv-modules.cache' are caches, and we exclude them.
find %{glibc_sysroot} \( -type f -o -type l \) \
2009-06-26 15:46:27 +00:00
\( \
-name etc -printf "%%%%config " -o \
-name gconv-modules.cache \
-printf "%%%%verify(not md5 size mtime) " -o \
-name gconv-modules* \
-printf "%%%%verify(not md5 size mtime) %%%%config(noreplace) " \
2009-06-26 15:46:27 +00:00
, \
2009-07-30 13:39:12 +00:00
! -path "*/lib/debug/*" -printf "/%%P\n" \)
# List all directories with a %%dir prefix. We omit the info directory and
# all directories in (and including) /usr/share/locale.
find %{glibc_sysroot} -type d \
\( -path '*%{_prefix}/share/locale' -prune -o \
\( -path '*%{_prefix}/share/*' \
%if %{with docs}
! -path '*%{_infodir}' -o \
%endif
2010-05-19 12:00:46 +00:00
-path "*%{_prefix}/include/*" \
\) -printf "%%%%dir /%%P\n" \)
2009-06-26 15:46:27 +00:00
} | {
# Also remove the *.mo entries. We will add them to the
# language specific sub-packages.
# libnss_ files go into subpackages related to NSS modules.
# and .*/share/i18n/charmaps/.*), they go into the sub-package
# "locale-source":
sed -e '\,.*/share/locale/\([^/_]\+\).*/LC_MESSAGES/.*\.mo,d' \
-e '\,.*/share/i18n/locales/.*,d' \
-e '\,.*/share/i18n/charmaps/.*,d' \
-e '\,.*/etc/\(localtime\|nsswitch.conf\|ld\.so\.conf\|ld\.so\.cache\|default\|rpc\|gai\.conf\),d' \
-e '\,.*/%{_libdir}/lib\(pcprofile\|memusage\)\.so,d' \
-e '\,.*/bin/\(memusage\|mtrace\|xtrace\|pcprofiledump\),d'
} | sort > master.filelist
# The master file list is now used by each subpackage to list their own
# files. We go through each package and subpackage now and create their lists.
# Each subpackage picks the files from the master list that they need.
# The order of the subpackage list generation does not matter.
# Make the master file list read-only after this point to avoid accidental
# modification.
chmod 0444 master.filelist
###############################################################################
# glibc
###############################################################################
# Add all files with the following exceptions:
# - The info files '%{_infodir}/dir'
# - The partial (lib*_p.a) static libraries, include files.
# - The static files, objects, and unversioned DSOs.
# - The bin, locale, some sbin, and share.
2019-05-17 01:43:50 +00:00
# - We want iconvconfig in the main package and we do this by using
# a double negation of -v and [^i] so it removes all files in
# sbin *but* iconvconfig.
# - All the libnss files (we add back the ones we want later).
# - All bench test binaries.
# - The aux-cache, since it's handled specially in the files section.
Auto-sync and build new glibc-gconv-extra package Auto-sync Upstream commit: ebae2f5a6f971a8f0b6c99e00f9c45ef7433924a Changes in addition to the sync: Add a downstream patch[1] to reinstate gconv-modules file and apply glibc-rh697421.patch after it. Also update spec file to create a new package glibc-gconv-extra with iconv converter modules that are not commonly used so that they can be removed in minimal or hardened installations. [1] https://sourceware.org/pipermail/libc-alpha/2021-June/127497.html Auto-sync commits: - Add build option to disable usage of scv on powerpc - io: Fix sporadic test failures in io/tst-stat - nptl: Avoid async cancellation to wrongly update __nptl_nthreads (BZ #19366) - nptl: Use pthread_kill on pthread_cancel - nptl: Implement raise in terms of pthread_kill - nptl: Move cancel type out of cancelhandling - nptl: Move cancel state out of cancelhandling - nptl: Remove CANCELING_BITMASK - nptl: Install cancellation handler on pthread_cancel - nptl: Deallocate the thread stack on setup failure (BZ #19511) - Remove stale references to libdl.a - Fix elf/tst-tls9-static after libdl cleanups. - iconvdata: Split out non-essential gconv module configuration - iconvdata: Move gconv-modules configuration to gconv-modules.conf - gconv_conf: Read configuration files in gconv-modules.d - iconvconfig: Read configuration from gconv-modules.d subdirectory - iconvconfig: Make file handling more general purpose - AArch64: Add support for roundeven[f] - configure: Replaced obsolete AC_TRY_COMPILE - libio: Assume _IO_lock_inexpensive - nptl: Remove exit-thread.h - Improve test coverage of strnlen function
2021-06-14 05:45:03 +00:00
# - Extra gconv modules. We add the required modules later.
cat master.filelist \
| grep -v \
-e '%{_infodir}' \
-e '%{_libdir}/lib.*_p.a' \
-e '%{_prefix}/include' \
-e '%{_libdir}/lib.*\.a' \
-e '%{_libdir}/.*\.o' \
-e '%{_libdir}/lib.*\.so' \
Auto-sync and build new glibc-gconv-extra package Auto-sync Upstream commit: ebae2f5a6f971a8f0b6c99e00f9c45ef7433924a Changes in addition to the sync: Add a downstream patch[1] to reinstate gconv-modules file and apply glibc-rh697421.patch after it. Also update spec file to create a new package glibc-gconv-extra with iconv converter modules that are not commonly used so that they can be removed in minimal or hardened installations. [1] https://sourceware.org/pipermail/libc-alpha/2021-June/127497.html Auto-sync commits: - Add build option to disable usage of scv on powerpc - io: Fix sporadic test failures in io/tst-stat - nptl: Avoid async cancellation to wrongly update __nptl_nthreads (BZ #19366) - nptl: Use pthread_kill on pthread_cancel - nptl: Implement raise in terms of pthread_kill - nptl: Move cancel type out of cancelhandling - nptl: Move cancel state out of cancelhandling - nptl: Remove CANCELING_BITMASK - nptl: Install cancellation handler on pthread_cancel - nptl: Deallocate the thread stack on setup failure (BZ #19511) - Remove stale references to libdl.a - Fix elf/tst-tls9-static after libdl cleanups. - iconvdata: Split out non-essential gconv module configuration - iconvdata: Move gconv-modules configuration to gconv-modules.conf - gconv_conf: Read configuration files in gconv-modules.d - iconvconfig: Read configuration from gconv-modules.d subdirectory - iconvconfig: Make file handling more general purpose - AArch64: Add support for roundeven[f] - configure: Replaced obsolete AC_TRY_COMPILE - libio: Assume _IO_lock_inexpensive - nptl: Remove exit-thread.h - Improve test coverage of strnlen function
2021-06-14 05:45:03 +00:00
-e '%{_libdir}/gconv/.*\.so$' \
-e '%{_libdir}/gconv/gconv-modules.d/gconv-modules-extra\.conf$' \
-e '%{_prefix}/bin' \
-e '%{_prefix}/lib/locale' \
2019-05-17 01:43:50 +00:00
-e '%{_prefix}/sbin/[^i]' \
-e '%{_prefix}/share' \
-e '/var/db/Makefile' \
-e '/libnss_.*\.so[0-9.]*$' \
-e '/libnsl' \
-e 'glibc-benchtests' \
-e 'aux-cache' \
> glibc.filelist
# Add specific files:
# - The nss_files, nss_compat, and nss_db files.
# - The libmemusage.so and libpcprofile.so used by utils.
for module in compat files dns; do
cat master.filelist \
| grep -E \
-e "/libnss_$module(\.so\.[0-9.]+|-[0-9.]+\.so)$" \
>> glibc.filelist
done
grep -e "libmemusage.so" -e "libpcprofile.so" master.filelist >> glibc.filelist
Auto-sync and build new glibc-gconv-extra package Auto-sync Upstream commit: ebae2f5a6f971a8f0b6c99e00f9c45ef7433924a Changes in addition to the sync: Add a downstream patch[1] to reinstate gconv-modules file and apply glibc-rh697421.patch after it. Also update spec file to create a new package glibc-gconv-extra with iconv converter modules that are not commonly used so that they can be removed in minimal or hardened installations. [1] https://sourceware.org/pipermail/libc-alpha/2021-June/127497.html Auto-sync commits: - Add build option to disable usage of scv on powerpc - io: Fix sporadic test failures in io/tst-stat - nptl: Avoid async cancellation to wrongly update __nptl_nthreads (BZ #19366) - nptl: Use pthread_kill on pthread_cancel - nptl: Implement raise in terms of pthread_kill - nptl: Move cancel type out of cancelhandling - nptl: Move cancel state out of cancelhandling - nptl: Remove CANCELING_BITMASK - nptl: Install cancellation handler on pthread_cancel - nptl: Deallocate the thread stack on setup failure (BZ #19511) - Remove stale references to libdl.a - Fix elf/tst-tls9-static after libdl cleanups. - iconvdata: Split out non-essential gconv module configuration - iconvdata: Move gconv-modules configuration to gconv-modules.conf - gconv_conf: Read configuration files in gconv-modules.d - iconvconfig: Read configuration from gconv-modules.d subdirectory - iconvconfig: Make file handling more general purpose - AArch64: Add support for roundeven[f] - configure: Replaced obsolete AC_TRY_COMPILE - libio: Assume _IO_lock_inexpensive - nptl: Remove exit-thread.h - Improve test coverage of strnlen function
2021-06-14 05:45:03 +00:00
###############################################################################
# glibc-gconv-extra
###############################################################################
grep -e "gconv-modules-extra.conf" master.filelist > gconv.filelist
# Put the essential gconv modules into the main package.
GconvBaseModules="ANSI_X3.110 ISO8859-15 ISO8859-1 CP1252"
GconvBaseModules="$GconvBaseModules UNICODE UTF-16 UTF-32 UTF-7"
%ifarch s390 s390x
GconvBaseModules="$GconvBaseModules ISO-8859-1_CP037_Z900 UTF8_UTF16_Z9"
GconvBaseModules="$GconvBaseModules UTF16_UTF32_Z9 UTF8_UTF32_Z9"
%endif
GconvAllModules=$(cat master.filelist |
sed -n 's|%{_libdir}/gconv/\(.*\)\.so|\1|p')
# Put the base modules into glibc and the rest into glibc-gconv-extra
for conv in $GconvAllModules; do
if echo $GconvBaseModules | grep -q $conv; then
grep -E -e "%{_libdir}/gconv/$conv.so$" \
master.filelist >> glibc.filelist
else
grep -E -e "%{_libdir}/gconv/$conv.so$" \
master.filelist >> gconv.filelist
fi
done
###############################################################################
# glibc-devel
###############################################################################
# Static libraries that land in glibc-devel, not glibc-static.
devel_static_library_pattern='/lib\(\(c\|nldbl\|mvec\)_nonshared\|g\|ieee\|mcheck\|pthread\|dl\|rt\|util\|anl\)\.a$'
# Static libraries neither in glibc-devel nor in glibc-static.
other_static_library_pattern='/libpthread_nonshared\.a'
grep '%{_libdir}/lib.*\.a' master.filelist \
| grep "$devel_static_library_pattern" \
| grep -v "$other_static_library_pattern" \
> devel.filelist
# Put all of the object files and *.so (not the versioned ones) into the
# devel package.
grep '%{_libdir}/.*\.o' < master.filelist >> devel.filelist
grep '%{_libdir}/lib.*\.so' < master.filelist >> devel.filelist
# The exceptions are:
# - libmemusage.so and libpcprofile.so in glibc used by utils.
# - libnss_*.so which are in nss-devel.
sed -i -e '\,libmemusage.so,d' \
-e '\,libpcprofile.so,d' \
-e '\,/libnss_[a-z]*\.so$,d' \
devel.filelist
%if %{glibc_autorequires}
mkdir -p %{glibc_sysroot}/%{_rpmconfigdir} %{glibc_sysroot}/%{_fileattrsdir}
sed < %{SOURCE3} \
-e s/@VERSION@/%{version}/ \
-e s/@RELEASE@/%{baserelease}/ \
-e s/@SYMVER@/%{glibc_autorequires_symver}/ \
> %{glibc_sysroot}/%{_rpmconfigdir}/glibc.req
cp %{SOURCE4} %{glibc_sysroot}/%{_fileattrsdir}/glibc.attr
%endif
###############################################################################
# glibc-doc
###############################################################################
%if %{with docs}
# Put the info files into the doc file list, but exclude the generated dir.
grep '%{_infodir}' master.filelist | grep -v '%{_infodir}/dir' > doc.filelist
grep '%{_docdir}' master.filelist >> doc.filelist
%endif
###############################################################################
# glibc-headers
###############################################################################
%if %{need_headers_package}
# The glibc-headers package includes only common files which are identical
# across all multilib packages. We must keep gnu/stubs.h and gnu/lib-names.h
# in the glibc-headers package, but the -32, -64, -64-v1, and -64-v2 versions
# go into glibc-devel.
grep '%{_prefix}/include/gnu/stubs-.*\.h$' < master.filelist >> devel.filelist || :
grep '%{_prefix}/include/gnu/lib-names-.*\.h$' < master.filelist >> devel.filelist || :
2013-07-24 11:58:38 +00:00
# Put the include files into headers file list.
grep '%{_prefix}/include' < master.filelist \
| grep -E -v '%{_prefix}/include/gnu/stubs-.*\.h$' \
| grep -E -v '%{_prefix}/include/gnu/lib-names-.*\.h$' \
> headers.filelist
%else
# If there is no glibc-headers package, all header files go into the
# glibc-devel package.
grep '%{_prefix}/include' < master.filelist >> devel.filelist
%endif
###############################################################################
# glibc-static
###############################################################################
2013-07-24 11:58:38 +00:00
# Put the rest of the static files into the static package.
grep '%{_libdir}/lib.*\.a' < master.filelist \
| grep -v "$devel_static_library_pattern" \
| grep -v "$other_static_library_pattern" \
2009-02-18 20:47:04 +00:00
> static.filelist
2013-07-24 11:58:38 +00:00
###############################################################################
# glibc-common
###############################################################################
# All of the bin and certain sbin files go into the common package except
# iconvconfig which needs to go in glibc. The iconvconfig binary is kept in
# the main glibc package because we use it in the post-install scriptlet to
# rebuild the gconv-modules.cache. The makedb binary is in nss_db.
grep '%{_prefix}/bin' master.filelist \
| grep -v '%{_prefix}/bin/makedb' \
>> common.filelist
2019-05-17 01:43:50 +00:00
grep '%{_prefix}/sbin' master.filelist \
| grep -v '%{_prefix}/sbin/iconvconfig' >> common.filelist
# All of the files under share go into the common package since they should be
# multilib-independent.
# Exceptions:
# - The actual share directory, not owned by us.
# - The info files which go into doc, and the info directory.
# - All documentation files, which go into doc.
grep '%{_prefix}/share' master.filelist \
| grep -v \
-e '%{_prefix}/share/info/libc.info.*' \
-e '%%dir %{prefix}/share/info' \
-e '%%dir %{prefix}/share' \
-e '%{_docdir}' \
>> common.filelist
###############################################################################
# glibc-utils
###############################################################################
2013-07-24 11:58:38 +00:00
# Add the utils scripts and programs to the utils subpackage.
2011-09-16 12:17:45 +00:00
cat > utils.filelist <<EOF
%if %{without bootstrap}
%{_prefix}/bin/memusage
%{_prefix}/bin/memusagestat
%endif
2019-02-19 08:00:34 +00:00
%{_prefix}/bin/mtrace
%{_prefix}/bin/pcprofiledump
%{_prefix}/bin/xtrace
EOF
###############################################################################
# nss_db, nss_hesiod
###############################################################################
# Move the NSS-related files to the NSS subpackages. Be careful not
# to pick up .debug files, and the -devel symbolic links.
for module in db hesiod; do
grep -E "/libnss_$module\\.so\\.[0-9.]+\$" \
master.filelist > nss_$module.filelist
done
grep -E "%{_prefix}/bin/makedb$" master.filelist >> nss_db.filelist
###############################################################################
# nss-devel
###############################################################################
# Symlinks go into the nss-devel package (instead of the main devel
# package).
grep '/libnss_[a-z]*\.so$' master.filelist > nss-devel.filelist
###############################################################################
# libnsl
###############################################################################
# Prepare the libnsl-related file lists.
grep -E '/libnsl\.so\.[0-9]+$' master.filelist > libnsl.filelist
test $(wc -l < libnsl.filelist) -eq 1
%if %{with benchtests}
###############################################################################
# glibc-benchtests
###############################################################################
# List of benchmarks.
find build-%{target}/benchtests -type f -executable | while read b; do
echo "%{_prefix}/libexec/glibc-benchtests/$(basename $b)"
done >> benchtests.filelist
# ... and the makefile.
for b in %{SOURCE1} %{SOURCE2}; do
echo "%{_prefix}/libexec/glibc-benchtests/$(basename $b)" >> benchtests.filelist
done
# ... and finally, the comparison scripts.
echo "%{_prefix}/libexec/glibc-benchtests/benchout.schema.json" >> benchtests.filelist
echo "%{_prefix}/libexec/glibc-benchtests/compare_bench.py*" >> benchtests.filelist
echo "%{_prefix}/libexec/glibc-benchtests/import_bench.py*" >> benchtests.filelist
echo "%{_prefix}/libexec/glibc-benchtests/validate_benchout.py*" >> benchtests.filelist
%endif
###############################################################################
# compat-libpthread-nonshared
###############################################################################
echo "%{_libdir}/libpthread_nonshared.a" >> compat-libpthread-nonshared.filelist
##############################################################################
# Run the glibc testsuite
##############################################################################
%check
%if %{with testsuite}
# Run the glibc tests. If any tests fail to build we exit %check with
# an error, otherwise we print the test failure list and the failed
# test output and continue. Write to standard error to avoid
# synchronization issues with make and shell tracing output if
# standard output and standard error are different pipes.
run_tests () {
# This hides a test suite build failure, which should be fatal. We
# check "Summary of test results:" below to verify that all tests
# were built and run.
%make_build check |& tee rpmbuild.check.log >&2
test -n tests.sum
if ! grep -q '^Summary of test results:$' rpmbuild.check.log ; then
echo "FAIL: test suite build of target: $(basename "$(pwd)")" >& 2
exit 1
fi
set +x
grep -v ^PASS: tests.sum > rpmbuild.tests.sum.not-passing || true
if test -n rpmbuild.tests.sum.not-passing ; then
echo ===================FAILED TESTS===================== >&2
echo "Target: $(basename "$(pwd)")" >& 2
cat rpmbuild.tests.sum.not-passing >&2
while read failed_code failed_test ; do
for suffix in out test-result ; do
if test -e "$failed_test.$suffix"; then
echo >&2
echo "=====$failed_code $failed_test.$suffix=====" >&2
cat -- "$failed_test.$suffix" >&2
echo >&2
fi
done
done <rpmbuild.tests.sum.not-passing
fi
# Unconditonally dump differences in the system call list.
echo "* System call consistency checks:" >&2
cat misc/tst-syscall-list.out >&2
set -x
}
# Increase timeouts
export TIMEOUTFACTOR=16
parent=$$
echo ====================TESTING=========================
2018-07-11 13:54:24 +00:00
# Default libraries.
pushd build-%{target}
run_tests
popd
echo ====================TESTING END=====================
PLTCMD='/^Relocation section .*\(\.rela\?\.plt\|\.rela\.IA_64\.pltoff\)/,/^$/p'
echo ====================PLT RELOCS LD.SO================
readelf -Wr %{glibc_sysroot}/%{_lib}/ld-*.so | sed -n -e "$PLTCMD"
echo ====================PLT RELOCS LIBC.SO==============
readelf -Wr %{glibc_sysroot}/%{_lib}/libc-*.so | sed -n -e "$PLTCMD"
echo ====================PLT RELOCS END==================
# Obtain a way to run the dynamic loader. Avoid matching the symbolic
# link and then pick the first loader (although there should be only
# one). See wrap-find-debuginfo.sh.
ldso_path="$(find %{glibc_sysroot}/ -regextype posix-extended \
-regex '.*/ld(-.*|64|)\.so\.[0-9]+$' -type f | LC_ALL=C sort | head -n1)"
run_ldso="$ldso_path --library-path %{glibc_sysroot}/%{_lib}"
2017-06-22 12:48:21 +00:00
# Show the auxiliary vector as seen by the new library
# (even if we do not perform the valgrind test).
LD_SHOW_AUXV=1 $run_ldso /bin/true
2017-06-22 12:48:21 +00:00
%if 0%{?_enable_debug_packages}
# Finally, check if valgrind runs with the new glibc.
# We want to fail building if valgrind is not able to run with this glibc so
# that we can then coordinate with valgrind to get it fixed before we update
# glibc.
2017-06-22 12:48:21 +00:00
%if %{with valgrind}
$run_ldso /usr/bin/valgrind --error-exitcode=1 \
$run_ldso /usr/bin/true
# true --help performs some memory allocations.
$run_ldso /usr/bin/valgrind --error-exitcode=1 \
$run_ldso /usr/bin/true --help >/dev/null
%endif
%endif
%endif
2010-11-12 12:29:24 +00:00
%pre -p <lua>
-- Check that the running kernel is new enough
required = '%{enablekernel}'
2010-12-13 16:58:18 +00:00
rel = posix.uname("%r")
if rpm.vercmp(rel, required) < 0 then
error("FATAL: kernel too old", 0)
2010-11-12 12:29:24 +00:00
end
2019-05-17 01:43:50 +00:00
%post -p <lua>
%glibc_post_funcs
2019-05-17 01:43:50 +00:00
-- (1) Remove multilib libraries from previous installs.
-- In order to support in-place upgrades, we must immediately remove
-- obsolete platform directories after installing a new glibc
-- version. RPM only deletes files removed by updates near the end
-- of the transaction. If we did not remove the obsolete platform
-- directories here, they may be preferred by the dynamic linker
-- during the execution of subsequent RPM scriptlets, likely
-- resulting in process startup failures.
-- Full set of libraries glibc may install.
install_libs = { "anl", "BrokenLocale", "c", "dl", "m", "mvec",
"nss_compat", "nss_db", "nss_dns", "nss_files",
"nss_hesiod", "pthread", "resolv", "rt", "SegFault",
"thread_db", "util" }
-- We are going to remove these libraries. Generally speaking we remove
-- all core libraries in the multilib directory.
-- For the versioned install names, the version are [2.0,9.9*], so we
2019-05-17 01:43:50 +00:00
-- match "libc-2.0.so" and so on up to "libc-9.9*".
-- For the unversioned install names, we match the library plus ".so."
-- followed by digests.
2019-05-17 01:43:50 +00:00
remove_regexps = {}
for i = 1, #install_libs do
-- Versioned install name.
remove_regexps[#remove_regexps + 1] = ("lib" .. install_libs[i]
.. "%%-[2-9]%%.[0-9]+%%.so$")
-- Unversioned install name.
remove_regexps[#remove_regexps + 1] = ("lib" .. install_libs[i]
.. "%%.so%%.[0-9]+$")
2019-05-17 01:43:50 +00:00
end
-- Two exceptions:
remove_regexps[#install_libs + 1] = "libthread_db%%-1%%.0%%.so"
remove_regexps[#install_libs + 2] = "libSegFault%%.so"
-- We are going to search these directories.
local remove_dirs = { "%{_libdir}/i686",
"%{_libdir}/i686/nosegneg",
"%{_libdir}/power6",
"%{_libdir}/power7",
"%{_libdir}/power8",
"%{_libdir}/power9",
}
2019-05-17 01:43:50 +00:00
-- Add all the subdirectories of the glibc-hwcaps subdirectory.
repeat
local iter = posix.files("%{_libdir}/glibc-hwcaps")
if iter ~= nil then
for entry in iter do
if entry ~= "." and entry ~= ".." then
local path = "%{_libdir}/glibc-hwcaps/" .. entry
if posix.access(path .. "/.", "x") then
remove_dirs[#remove_dirs + 1] = path
end
end
end
end
until true
2019-05-17 01:43:50 +00:00
-- Walk all the directories with files we need to remove...
for _, rdir in ipairs (remove_dirs) do
if posix.access (rdir) then
-- If the directory exists we look at all the files...
local remove_files = posix.files (rdir)
for rfile in remove_files do
for _, rregexp in ipairs (remove_regexps) do
-- Does it match the regexp?
local dso = string.match (rfile, rregexp)
if (dso ~= nil) then
-- Removing file...
os.remove (rdir .. '/' .. rfile)
end
end
end
end
end
-- (2) Update /etc/ld.so.conf
-- Next we update /etc/ld.so.conf to ensure that it starts with
-- a literal "include ld.so.conf.d/*.conf".
local ldsoconf = "/etc/ld.so.conf"
local ldsoconf_tmp = "/etc/glibc_post_upgrade.ld.so.conf"
if posix.access (ldsoconf) then
-- We must have a "include ld.so.conf.d/*.conf" line.
local have_include = false
for line in io.lines (ldsoconf) do
-- This must match, and we don't ignore whitespace.
if string.match (line, "^include ld.so.conf.d/%%*%%.conf$") ~= nil then
have_include = true
end
end
if not have_include then
-- Insert "include ld.so.conf.d/*.conf" line at the start of the
-- file. We only support one of these post upgrades running at
-- a time (temporary file name is fixed).
local tmp_fd = io.open (ldsoconf_tmp, "w")
if tmp_fd ~= nil then
tmp_fd:write ("include ld.so.conf.d/*.conf\n")
for line in io.lines (ldsoconf) do
tmp_fd:write (line .. "\n")
end
tmp_fd:close ()
local res = os.rename (ldsoconf_tmp, ldsoconf)
if res == nil then
io.stdout:write ("Error: Unable to update configuration file (rename).\n")
end
else
io.stdout:write ("Error: Unable to update configuration file (open).\n")
end
end
end
-- (3) Rebuild ld.so.cache early.
-- If the format of the cache changes then we need to rebuild
-- the cache early to avoid any problems running binaries with
-- the new glibc.
call_ldconfig()
2019-05-17 01:43:50 +00:00
-- (4) Update gconv modules cache.
-- If the /usr/lib/gconv/gconv-modules.cache exists, then update it
-- with the latest set of modules that were just installed.
-- We assume that the cache is in _libdir/gconv and called
-- "gconv-modules.cache".
update_gconv_modules_cache()
2021-07-13 12:13:46 +00:00
-- (5) On upgrades, restart systemd if installed. "systemctl -q" does
-- not suppress the error message (which is common in chroots), so
-- open-code rpm.execute with standard error suppressed.
if tonumber(arg[2]) >= 2
and posix.access("%{_prefix}/bin/systemctl", "x")
then
2021-07-13 12:13:46 +00:00
local pid = posix.fork()
if pid == 0 then
posix.redirect2null(2)
posix.exec("%{_prefix}/bin/systemctl", "daemon-reexec")
2021-07-13 12:13:46 +00:00
elseif pid > 0 then
posix.wait(pid)
end
end
%posttrans all-langpacks -e -p <lua>
-- The old glibc-all-langpacks postun scriptlet deleted the locale-archive
-- file, so we may have to resurrect it on upgrades.
local archive_path = "%{_prefix}/lib/locale/locale-archive"
local real_path = "%{_prefix}/lib/locale/locale-archive.real"
local stat_archive = posix.stat(archive_path)
local stat_real = posix.stat(real_path)
-- If the hard link was removed, restore it.
if stat_archive ~= nil and stat_real ~= nil
and (stat_archive.ino ~= stat_real.ino
or stat_archive.dev ~= stat_real.dev) then
posix.unlink(archive_path)
stat_archive = nil
end
-- If the file is gone, restore it.
if stat_archive == nil then
posix.link(real_path, archive_path)
end
-- Remove .rpmsave file potentially created due to config file change.
local save_path = archive_path .. ".rpmsave"
if posix.access(save_path) then
posix.unlink(save_path)
end
%post gconv-extra -p <lua>
%glibc_post_funcs
update_gconv_modules_cache ()
%postun gconv-extra -p <lua>
%glibc_post_funcs
update_gconv_modules_cache ()
Auto-sync and build new glibc-gconv-extra package Auto-sync Upstream commit: ebae2f5a6f971a8f0b6c99e00f9c45ef7433924a Changes in addition to the sync: Add a downstream patch[1] to reinstate gconv-modules file and apply glibc-rh697421.patch after it. Also update spec file to create a new package glibc-gconv-extra with iconv converter modules that are not commonly used so that they can be removed in minimal or hardened installations. [1] https://sourceware.org/pipermail/libc-alpha/2021-June/127497.html Auto-sync commits: - Add build option to disable usage of scv on powerpc - io: Fix sporadic test failures in io/tst-stat - nptl: Avoid async cancellation to wrongly update __nptl_nthreads (BZ #19366) - nptl: Use pthread_kill on pthread_cancel - nptl: Implement raise in terms of pthread_kill - nptl: Move cancel type out of cancelhandling - nptl: Move cancel state out of cancelhandling - nptl: Remove CANCELING_BITMASK - nptl: Install cancellation handler on pthread_cancel - nptl: Deallocate the thread stack on setup failure (BZ #19511) - Remove stale references to libdl.a - Fix elf/tst-tls9-static after libdl cleanups. - iconvdata: Split out non-essential gconv module configuration - iconvdata: Move gconv-modules configuration to gconv-modules.conf - gconv_conf: Read configuration files in gconv-modules.d - iconvconfig: Read configuration from gconv-modules.d subdirectory - iconvconfig: Make file handling more general purpose - AArch64: Add support for roundeven[f] - configure: Replaced obsolete AC_TRY_COMPILE - libio: Assume _IO_lock_inexpensive - nptl: Remove exit-thread.h - Improve test coverage of strnlen function
2021-06-14 05:45:03 +00:00
%files -f glibc.filelist
%dir %{_prefix}/%{_lib}/audit
%verify(not md5 size mtime) %config(noreplace) /etc/ld.so.conf
2010-06-15 08:43:24 +00:00
%verify(not md5 size mtime) %config(noreplace) /etc/rpc
%dir /etc/ld.so.conf.d
%dir %{_prefix}/libexec/getconf
%dir %{_libdir}/gconv
%dir %{_libdir}/gconv/gconv-modules.d
2007-07-31 18:18:37 +00:00
%dir %attr(0700,root,root) /var/cache/ldconfig
%attr(0600,root,root) %verify(not md5 size mtime) %ghost %config(missingok,noreplace) /var/cache/ldconfig/aux-cache
%attr(0644,root,root) %verify(not md5 size mtime) %ghost %config(missingok,noreplace) /etc/ld.so.cache
2010-10-14 10:30:32 +00:00
%attr(0644,root,root) %verify(not md5 size mtime) %ghost %config(missingok,noreplace) /etc/gai.conf
# If rpm doesn't support %license, then use %doc instead.
2014-07-12 15:16:06 +00:00
%{!?_licensedir:%global license %%doc}
%license COPYING COPYING.LIB LICENSES
%files -f common.filelist common
2014-01-25 18:52:16 +00:00
%dir %{_prefix}/lib/locale
%dir %{_prefix}/lib/locale/C.utf8
%{_prefix}/lib/locale/C.utf8/*
%files all-langpacks
%{_prefix}/lib/locale/locale-archive
%{_prefix}/lib/locale/locale-archive.real
%{_prefix}/share/locale/*/LC_MESSAGES/libc.mo
%files locale-source
%dir %{_prefix}/share/i18n/locales
%{_prefix}/share/i18n/locales/*
%dir %{_prefix}/share/i18n/charmaps
%{_prefix}/share/i18n/charmaps/*
%files -f devel.filelist devel
%if %{glibc_autorequires}
%attr(0755,root,root) %{_rpmconfigdir}/glibc.req
%{_fileattrsdir}/glibc.attr
%endif
%if %{with docs}
%files -f doc.filelist doc
%endif
2009-02-18 20:47:04 +00:00
%files -f static.filelist static
%if %{need_headers_package}
%files -f headers.filelist -n %{headers_package_name}
%endif
%files -f utils.filelist utils
Auto-sync and build new glibc-gconv-extra package Auto-sync Upstream commit: ebae2f5a6f971a8f0b6c99e00f9c45ef7433924a Changes in addition to the sync: Add a downstream patch[1] to reinstate gconv-modules file and apply glibc-rh697421.patch after it. Also update spec file to create a new package glibc-gconv-extra with iconv converter modules that are not commonly used so that they can be removed in minimal or hardened installations. [1] https://sourceware.org/pipermail/libc-alpha/2021-June/127497.html Auto-sync commits: - Add build option to disable usage of scv on powerpc - io: Fix sporadic test failures in io/tst-stat - nptl: Avoid async cancellation to wrongly update __nptl_nthreads (BZ #19366) - nptl: Use pthread_kill on pthread_cancel - nptl: Implement raise in terms of pthread_kill - nptl: Move cancel type out of cancelhandling - nptl: Move cancel state out of cancelhandling - nptl: Remove CANCELING_BITMASK - nptl: Install cancellation handler on pthread_cancel - nptl: Deallocate the thread stack on setup failure (BZ #19511) - Remove stale references to libdl.a - Fix elf/tst-tls9-static after libdl cleanups. - iconvdata: Split out non-essential gconv module configuration - iconvdata: Move gconv-modules configuration to gconv-modules.conf - gconv_conf: Read configuration files in gconv-modules.d - iconvconfig: Read configuration from gconv-modules.d subdirectory - iconvconfig: Make file handling more general purpose - AArch64: Add support for roundeven[f] - configure: Replaced obsolete AC_TRY_COMPILE - libio: Assume _IO_lock_inexpensive - nptl: Remove exit-thread.h - Improve test coverage of strnlen function
2021-06-14 05:45:03 +00:00
%files -f gconv.filelist gconv-extra
%files -f nss_db.filelist -n nss_db
/var/db/Makefile
%files -f nss_hesiod.filelist -n nss_hesiod
%doc hesiod/README.hesiod
%files -f nss-devel.filelist nss-devel
%files -f libnsl.filelist -n libnsl
/%{_lib}/libnsl.so.1
%if %{with benchtests}
%files benchtests -f benchtests.filelist
%endif
%files -f compat-libpthread-nonshared.filelist -n compat-libpthread-nonshared
2021-02-12 14:25:31 +00:00
%changelog
Auto-sync with upstream branch master Upstream commit: 453b88efe6fa79f5c7c6fccc3a520c75fdd43074 - arm: Remove nested functionf rom relocate_pc24 - linux: Fix sys/mount.h usage with kernel headers - linux: Use compile_c_snippet to check linux/mount.h availability - linux: Mimic kernel defition for BLOCK_SIZE - linux: Use compile_c_snippet to check linux/pidfd.h availability - glibcextract.py: Add compile_c_snippet - LoongArch: Add pointer mangling support. - AArch64: Fix typo in sve configure check (BZ# 29394) - libio: Improve performance of IO locks - tst-process_madvise: Check process_madvise-syscall support. - elf.h: Add ELFCOMPRESS_ZSTD - inet: Turn __ivaliduser into a compatibility symbol - x86: Fix `#define STRCPY` guard in strcpy-sse2.S - elf: Replace `strcpy` call with `memcpy` [BZ #29454] - soft-fp: Add fixhf[uns][di|si] and float[uns][di|si]hf - i386: Use cmpl instead of cmp - i386: Use fldt instead of fld on e_logl.S - i386: Replace movzx with movzbl - dlfcn: Pass caller pointer to static dlopen implementation (bug 29446) - malloc: Correct the documentation of the top_pad default - i386: Remove RELA support - arm: Remove RELA support - Remove ldd libc4 support - Assume only FLAG_ELF_LIBC6 suport - Remove left over LD_LIBRARY_VERSION usages - Linux: Remove exit system call from _exit - LoongArch: Add vdso support for gettimeofday. - Update kernel version to 5.19 in header constant tests - assert: Do not use stderr in libc-internal assert - nptl: Remove uses of assert_perror - stdio: Clean up __libc_message after unconditional abort - Update syscall lists for Linux 5.19 - Use Linux 5.19 in build-many-glibcs.py - socket: Check lengths before advancing pointer in CMSG_NXTHDR - Don't use unsupported format string in ld.so (bug 29427) - htl: Let pthread_self and cancellability called early - stdlib: Simplify arc4random_uniform - malloc: Use __getrandom_nocancel during tcache initiailization - Remove spurious references to _dl_open_hook - Open master branch for glibc 2.37 development
2022-08-15 05:24:29 +00:00
* Mon Aug 15 2022 Florian Weimer <fweimer@redhat.com> - 2.36.9000-1
- Auto-sync with upstream branch master,
commit 453b88efe6fa79f5c7c6fccc3a520c75fdd43074:
- arm: Remove nested functionf rom relocate_pc24
- linux: Fix sys/mount.h usage with kernel headers
- linux: Use compile_c_snippet to check linux/mount.h availability
- linux: Mimic kernel defition for BLOCK_SIZE
- linux: Use compile_c_snippet to check linux/pidfd.h availability
- glibcextract.py: Add compile_c_snippet
- LoongArch: Add pointer mangling support.
- AArch64: Fix typo in sve configure check (BZ# 29394)
- libio: Improve performance of IO locks
- tst-process_madvise: Check process_madvise-syscall support.
- elf.h: Add ELFCOMPRESS_ZSTD
- inet: Turn __ivaliduser into a compatibility symbol
- x86: Fix `#define STRCPY` guard in strcpy-sse2.S
- elf: Replace `strcpy` call with `memcpy` [BZ #29454]
- soft-fp: Add fixhf[uns][di|si] and float[uns][di|si]hf
- i386: Use cmpl instead of cmp
- i386: Use fldt instead of fld on e_logl.S
- i386: Replace movzx with movzbl
- dlfcn: Pass caller pointer to static dlopen implementation (bug 29446)
- malloc: Correct the documentation of the top_pad default
- i386: Remove RELA support
- arm: Remove RELA support
- Remove ldd libc4 support
- Assume only FLAG_ELF_LIBC6 suport
- Remove left over LD_LIBRARY_VERSION usages
- Linux: Remove exit system call from _exit
- LoongArch: Add vdso support for gettimeofday.
- Update kernel version to 5.19 in header constant tests
- assert: Do not use stderr in libc-internal assert
- nptl: Remove uses of assert_perror
- stdio: Clean up __libc_message after unconditional abort
- Update syscall lists for Linux 5.19
- Use Linux 5.19 in build-many-glibcs.py
- socket: Check lengths before advancing pointer in CMSG_NXTHDR
- Don't use unsupported format string in ld.so (bug 29427)
- htl: Let pthread_self and cancellability called early
- stdlib: Simplify arc4random_uniform
- malloc: Use __getrandom_nocancel during tcache initiailization
- Remove spurious references to _dl_open_hook
- Open master branch for glibc 2.37 development
* Wed Aug 03 2022 Carlos O'Donell <carlos@redhat.com> - 2.36-1
- Auto-sync with upstream branch release/2.36/master,
commit 33f1b4c1452b33991e670f636ebe98b90a405e10:
- wcsmbs: Add missing test-c8rtomb/test-mbrtoc8 dependency
- stdlib: Suppress gcc diagnostic that char8_t is a keyword in C++20 in uchar.h.
- Create ChangeLog.old/ChangeLog.25. (tag: glibc-2.36)
- Prepare for glibc 2.36 release.
- Update install.texi, and regenerate INSTALL.
- Update NEWS bug list.
- Update libc.pot for 2.36 release.
- tst-pidfd.c: UNSUPPORTED if we get EPERM on valid pidfd_getfd call
- stdlib: Tuned down tst-arc4random-thread internal parameters
- LoongArch: Add greg_t and gregset_t.
- LoongArch: Fix VDSO_HASH and VDSO_NAME.
- riscv: Update rv64 libm test ulps
- riscv: Update nofpu libm test ulps