Rework filelist construction

Eliminate most pattern matching and list files explicitly.  Three
common exceptions are modeled explicitly: libmvec (additional shared
object and static library), libnldbl (additional shared object),
and installation of ld.so under a /lib path on 64-bit architectures.

To implement glibc-headers and glibc-gconv-extra, pattern
matching is still used, but with helper shell functions that
allow splitting the matching and non-matching files into
separate list files.

The remaining differences are bug fixes for directory ownership.

/usr/libexec/glibc-benchtests is now owned by glibc-benchtests.
/lib64/glibc-hwcaps is now owned by glibc.ppc64le.

Differences can be checked with this script:

mkdir -p filelist
for x in "$@" ; do
    target="$(rpm -qp --qf 'filelist/%{name}.%{arch}.txt' "$x")"
    rpm -qp --qf '[%{filenames} %{filemodes:perms} (%{fileflags:fflags})(%{fileverifyflags:hex}) \{%{filecaps}\} %{fileusername} %{filegroupname}\n]' "$x" > "$target"
done

Note: Delete the *.src.rpm files because %{arch} has unexpected
results for them.

Related: RHEL-63048
This commit is contained in:
Florian Weimer 2024-10-23 23:27:54 +02:00
parent 5111f98bd4
commit bd128a5369

View File

@ -176,6 +176,70 @@ rpm.define("__find_debuginfo " .. wrapper .. " " .. sysroot .. " " .. original)
%define _no_recompute_build_ids 1
%undefine _unique_build_ids
# glibc_ldso: ABI-specific program interpreter name. Used for debuginfo
# extraction (wrap-find-debuginfo.sh) and smoke testing ($run_ldso below).
# glibc_has_libnldbl: libnldbl_nonshared.a is built and installed.
# glibc_has_libmvec: libmvec is built and installed.
%ifarch %{ix86}
%global glibc_ldso /lib/ld-linux.so.2
%global glibc_has_libnldbl 0
%global glibc_has_libmvec 0
%endif
%ifarch aarch64
%global glibc_ldso /lib/ld-linux-aarch64.so.1
%global glibc_has_libnldbl 0
%global glibc_has_libmvec 0
%endif
%ifarch ppc
%global glibc_ldso /lib/ld.so.1
%global glibc_has_libnldbl 1
%global glibc_has_libmvec 0
%endif
%ifarch ppc64
%global glibc_ldso /lib64/ld64.so.1
%global glibc_has_libnldbl 1
%global glibc_has_libmvec 0
%endif
%ifarch ppc64le
%global glibc_ldso /lib64/ld64.so.2
%global glibc_has_libnldbl 1
%global glibc_has_libmvec 0
%endif
%ifarch riscv64
%global glibc_ldso /lib/ld-linux-riscv64-lp64d.so.1
%global glibc_has_libnldbl 0
%global glibc_has_libmvec 0
%endif
%ifarch s390
%global glibc_ldso /lib/ld.so.1
%global glibc_has_libnldbl 0
%global glibc_has_libmvec 0
%endif
%ifarch s390x
%global glibc_ldso /lib/ld64.so.1
%global glibc_has_libnldbl 1
%global glibc_has_libmvec 0
%endif
%ifarch x86_64 x86_64_v2 x86_64_v3 x86_64_v4
%global glibc_ldso /lib64/ld-linux-x86-64.so.2
%global glibc_has_libnldbl 0
%global glibc_has_libmvec 1
%endif
# This is necessary to enable source RPM building under noarch, as
# used by some build environments.
%ifarch noarch
%global glibc_ldso /lib/ld.so
%global glibc_has_libnldbl 0
%global glibc_has_libmvec 0
%endif
# If the architecture places the official ld.so name under /lib,
# but we use /lib64, we need to install both files.
%if "%{_lib}" == "lib64" && "%{dirname:%{glibc_ldso}}" == "/lib"
%global glibc_ldso_alternate /%{_lib}/%{basename:%{glibc_ldso}}
%endif
##############################################################################
# Patches:
# - See each individual patch file for origin and upstream status.
@ -1892,9 +1956,6 @@ build
# distribution that supports multiple installed glibc versions.
%define glibc_sysroot $RPM_BUILD_ROOT
# Remove existing file lists.
find . -type f -name '*.filelist' -exec rm -rf {} \;
# Ensure the permissions of errlist.c do not change. When the file is
# regenerated the Makefile sets the permissions to 444. We set it to 644
# to match what comes out of git. The tarball of the git archive won't have
@ -2260,344 +2321,75 @@ ar cr %{glibc_sysroot}%{_prefix}/%{_lib}/libpthread_nonshared.a
# installed files.
##############################################################################
##############################################################################
# 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.
# * common.filelist
# - Flies for the common subpackage.
# * utils.filelist
# - Files for the utils subpackage.
# * nscd.filelist
# - Files for the nscd subpackage.
# * devel.filelist
# - Files for the devel subpackage.
# * doc.filelist
# - Files for the documentation subpackage.
# * headers.filelist
# - Files for the headers subpackage.
# * 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.
# Placement of files in subpackages is mostly controlled by the
# %%files section below. There are some exceptions where a subset of
# files are put in one package and need to be elided from another
# package, and it's not possible to do this easily using explicit file
# lists or directory matching. For these exceptions. .filelist file
# are created.
# 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
touch gconv.filelist
touch nscd.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
# Make the sorting below more consistent.
export LC_ALL=C
###############################################################################
# Master file list, excluding a few things.
###############################################################################
{
# 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 \) \
\( \
-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) " \
, \
! -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
-path "*%{_prefix}/include/*" \
\) -printf "%%%%dir /%%P\n" \)
} | {
# 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
# `make_sysroot_filelist PATH FIND-ARGS LIST` writes %%files section
# lines for files and directories in the sysroot under PATH to the
# file LIST, with FIND-ARGS passed to the find command. The output is
# passed through sort.
make_sysroot_filelist () {
(
find "%{glibc_sysroot}$1" \( -type f -o -type l \) $2 \
-printf "$1/%%P\n" || true
find "%{glibc_sysroot}$1" -type d $2 -printf "%%%%dir $1/%%P\n" || true
) | sort > "$3"
}
# 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.
# `remove_from_filelist FILE1 FILE2` removes the lines from FILE1
# which are also in FILE2. The lines must not contain tabs, and the
# file is sorted as a side effect. The input files must be sorted
# according to the sort command.
remove_from_filelist () {
comm -23 "$1" "$2" > "$1.tmp"
mv "$1.tmp" "$1"
}
# Make the master file list read-only after this point to avoid accidental
# modification.
chmod 0444 master.filelist
# `split_sysroot_file_list DIR FIND-ARGS REGEXP MAIN-LIST EXCEPTIONS-LIST`
# creates a list of files in the sysroot subdirectory # DIR.
# Files and directories are enumerated with the find command,
# passing FIND-ARGS as an extra argument. Those output paths that
# match REGEXP (an POSIX extended regular expression; all whitespace
# in it is removed before matching) are put into EXCEPTIONS-LIST. The
# remaining files are put into MAIN-LIST.
split_sysroot_file_list () {
make_sysroot_filelist "$1" "$2" "$4"
grep -E -e "$(printf %%s "$3" | tr -d '[:space:]')" < "$4" > "$5"
remove_from_filelist "$4" "$5"
}
###############################################################################
# glibc
###############################################################################
# glibc-devel historically contains a subset of the files in
# /usr/include/gnu. The remaining headers are in glibc-headers.
# The -regex clause skips /usr/include, which is owned by the
# filesystem package.
split_sysroot_file_list \
%{_includedir} '( ! -regex .*%{_includedir}$ )' \
'%{_includedir}/gnu/(stubs|lib-names)-.*\.h$' \
headers.filelist devel.filelist
# 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, unversioned DSOs, and nscd.
# - The bin, locale, some sbin, and share.
# - 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.
# - The build-locale-archive binary since it's in the all-langpacks package.
# - 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' \
-e '%{_libdir}/gconv/.*\.so$' \
-e '%{_libdir}/gconv/gconv-modules.d/gconv-modules-extra\.conf$' \
-e 'nscd' \
-e '%{_prefix}/bin' \
-e '%{_prefix}/lib/locale' \
-e '%{_prefix}/sbin/[^i]' \
-e '%{_prefix}/share' \
-e '/var/db/Makefile' \
-e '/libnss_.*\.so[0-9.]*$' \
-e '/libnsl' \
-e 'glibc-benchtests' \
-e 'aux-cache' \
-e 'build-locale-archive' \
> 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
###############################################################################
# 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
###############################################################################
# Put some static files into the devel package.
grep '%{_libdir}/lib.*\.a' master.filelist \
| grep '/lib\(\(c\|pthread\|nldbl\|mvec\)_nonshared\|g\|ieee\|mcheck\)\.a$' \
> 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
###############################################################################
# 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
###############################################################################
# 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 the development packages.
grep '%{_prefix}/include/gnu/stubs-.*\.h$' < master.filelist >> devel.filelist || :
grep '%{_prefix}/include/gnu/lib-names-.*\.h$' < master.filelist >> devel.filelist || :
# Put the include files into headers file list.
grep '%{_prefix}/include' < master.filelist \
| egrep -v '%{_prefix}/include/gnu/stubs-.*\.h$' \
| egrep -v '%{_prefix}/include/gnu/lib-names-.*\.h$' \
> headers.filelist
###############################################################################
# glibc-static
###############################################################################
# Put the rest of the static files into the static package.
grep '%{_libdir}/lib.*\.a' < master.filelist \
| grep -v '/lib\(\(c\|pthread\|nldbl\|mvec\)_nonshared\|g\|ieee\|mcheck\)\.a$' \
> static.filelist
###############################################################################
# glibc-common
###############################################################################
# All of the bin and certain sbin files go into the common package except
# iconvconfig which needs to go in glibc, and build-locale-archive which
# needs to go into glibc-all-langpacks. Likewise nscd is excluded because
# it goes in nscd. 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.
grep '%{_prefix}/bin' master.filelist >> common.filelist
grep '%{_prefix}/sbin' master.filelist \
| grep -v '%{_prefix}/sbin/iconvconfig' \
| grep -v '%{_prefix}/sbin/build-locale-archive' \
| grep -v 'nscd' >> 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
###############################################################################
# nscd
###############################################################################
# The nscd binary must go into the nscd subpackage.
echo '%{_prefix}/sbin/nscd' > nscd.filelist
###############################################################################
# glibc-utils
###############################################################################
# Add the utils scripts and programs to the utils subpackage.
cat > utils.filelist <<EOF
%if %{without bootstrap}
%{_prefix}/bin/memusage
%{_prefix}/bin/memusagestat
%{_prefix}/bin/mtrace
%endif
%{_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.]+|-[0-9.]+\.so)$" \
master.filelist > nss_$module.filelist
done
###############################################################################
# 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 '/libnsl-[0-9.]*.so$' 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 %{SOURCE9} %{SOURCE10}; 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
# The primary gconv converters are in the glibc package, the rest goes
# into glibc-gconv-extra. The Z9 and Z900 subpatterns are for
# s390x-specific converters. The -name clause skips over files
# that are not loadable gconv modules.
split_sysroot_file_list \
%{_libdir}/gconv '-name *.so' \
'gconv/
(ANSI_X3\.110
|CP1252
|ISO8859-15?
|UNICODE
|UTF-[0-9]+
|ISO-8859-1_CP037_Z900
|UTF(8|16)_UTF(16|32)_Z9
)\.so$' \
gconv-extra.filelist glibc.filelist
##############################################################################
# Run the glibc testsuite
@ -2886,20 +2678,60 @@ fi
%systemd_postun_with_restart nscd.service
%files -f glibc.filelist
%dir %{_prefix}/%{_lib}/audit
%if %{buildpower9}
%dir /%{_lib}/glibc-hwcaps/power9
/sbin/ldconfig
%{_sbindir}/iconvconfig
%{_libexecdir}/getconf
%{glibc_ldso}
%{?glibc_ldso_alternate}
/%{_lib}/ld-%{version}.so
/%{_lib}/libBrokenLocale-%{version}.so
/%{_lib}/libBrokenLocale.so.1
/%{_lib}/libSegFault.so
/%{_lib}/libanl-%{version}.so
/%{_lib}/libanl.so.1
/%{_lib}/libc-%{version}.so
/%{_lib}/libc.so.6
/%{_lib}/libdl-%{version}.so
/%{_lib}/libdl.so.2
/%{_lib}/libm-%{version}.so
/%{_lib}/libm.so.6
/%{_lib}/libnss_compat-%{version}.so
/%{_lib}/libnss_compat.so.2
/%{_lib}/libnss_dns-%{version}.so
/%{_lib}/libnss_dns.so.2
/%{_lib}/libnss_files-%{version}.so
/%{_lib}/libnss_files.so.2
/%{_lib}/libpthread-%{version}.so
/%{_lib}/libpthread.so.0
/%{_lib}/libresolv-%{version}.so
/%{_lib}/libresolv.so.2
/%{_lib}/librt-%{version}.so
/%{_lib}/librt.so.1
/%{_lib}/libthread_db-1.0.so
/%{_lib}/libthread_db.so.1
/%{_lib}/libutil-%{version}.so
/%{_lib}/libutil.so.1
%{_libdir}/libmemusage.so
%{_libdir}/libpcprofile.so
%{_libdir}/audit
%if %{glibc_has_libmvec}
/%{_lib}/libmvec-%{version}.so
/%{_lib}/libmvec.so.1
%endif
%ifarch s390x
/lib/ld64.so.1
%if %{buildpower9}
/%{_lib}/glibc-hwcaps
%endif
%verify(not md5 size mtime link) %config(noreplace) /etc/nsswitch.conf
%verify(not md5 size mtime) %config(noreplace) /etc/ld.so.conf
%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
%verify(not md5 size mtime) %config(noreplace) %{_libdir}/gconv/gconv-modules
%verify(not md5 size mtime) %{_libdir}/gconv/gconv-modules.cache
%ifarch s390x
%verify(not md5 size mtime) %config(noreplace) %{_libdir}/gconv/gconv-modules.d/gconv-modules-s390.conf
%endif
%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
@ -2908,10 +2740,32 @@ fi
%{!?_licensedir:%global license %%doc}
%license COPYING COPYING.LIB LICENSES
%files -f common.filelist common
%files common
%{_bindir}/catchsegv
%{_bindir}/gencat
%{_bindir}/getconf
%{_bindir}/getent
%{_bindir}/iconv
%{_bindir}/ld.so
%{_bindir}/ldd
%{_bindir}/locale
%{_bindir}/localedef
%{_bindir}/makedb
%{_bindir}/pldd
%{_bindir}/sotruss
%{_bindir}/sprof
%{_bindir}/tzselect
%{_sbindir}/zdump
%{_sbindir}/zic
%dir %{_datarootdir}/i18n
%dir %{_datarootdir}/i18n/locales
%dir %{_datarootdir}/i18n/charmaps
%dir %{_prefix}/lib/locale
%dir %{_prefix}/lib/locale/C.utf8
%{_prefix}/lib/locale/C.utf8/*
%{_datarootdir}/locale/locale.alias
%{_prefix}/lib/locale/C.utf8
%ifarch %{ix86}
%{_bindir}/lddlibc4
%endif
%files all-langpacks
%attr(0644,root,root) %verify(not md5 size mtime) %{_prefix}/lib/locale/locale-archive.tmpl
@ -2920,26 +2774,68 @@ fi
%attr(0700,root,root) %{_prefix}/sbin/build-locale-archive
%files locale-source
%dir %{_prefix}/share/i18n/locales
%{_prefix}/share/i18n/locales/*
%dir %{_prefix}/share/i18n/charmaps
%{_prefix}/share/i18n/charmaps/*
%{_datarootdir}/i18n/locales
%{_datarootdir}/i18n/charmaps
%files -f devel.filelist devel
%if %{with docs}
%files -f doc.filelist doc
%{_libdir}/*.o
%{_libdir}/libBrokenLocale.so
%{_libdir}/libanl.so
%{_libdir}/libc.so
%{_libdir}/libc_nonshared.a
%{_libdir}/libdl.so
%{_libdir}/libg.a
%{_libdir}/libm.so
%{_libdir}/libmcheck.a
%{_libdir}/libpthread.so
%{_libdir}/libpthread_nonshared.a
%{_libdir}/libresolv.so
%{_libdir}/librt.so
%{_libdir}/libthread_db.so
%{_libdir}/libutil.so
%if %{glibc_has_libnldbl}
%{_libdir}/libnldbl_nonshared.a
%endif
%if %{glibc_has_libmvec}
%{_libdir}/libmvec.so
%{_libdir}/libmvec_nonshared.a
%endif
%files -f static.filelist static
%if %{with docs}
%files doc
%{_datarootdir}/doc
%{_infodir}/*.info*
%endif
%files static
%{_libdir}/libBrokenLocale.a
%{_libdir}/libanl.a
%{_libdir}/libc.a
%{_libdir}/libdl.a
%{_libdir}/libm.a
%{_libdir}/libpthread.a
%{_libdir}/libresolv.a
%{_libdir}/librt.a
%{_libdir}/libutil.a
%if %{glibc_has_libmvec}
%{_libdir}/libm-%{version}.a
%{_libdir}/libmvec.a
%endif
%files -f headers.filelist headers
%files -f utils.filelist utils
%files utils
%{_bindir}/memusage
%{_bindir}/memusagestat
%{_bindir}/mtrace
%{_bindir}/pcprofiledump
%{_bindir}/xtrace
%files -f gconv.filelist gconv-extra
%files -f gconv-extra.filelist gconv-extra
%verify(not md5 size mtime) %config(noreplace) %{_libdir}/gconv/gconv-modules.d/gconv-modules-extra.conf
%files -f nscd.filelist -n nscd
%files -n nscd
%{_sbindir}/nscd
%config(noreplace) /etc/nscd.conf
%dir %attr(0755,root,root) /var/run/nscd
%dir %attr(0755,root,root) /var/db/nscd
@ -2958,20 +2854,32 @@ fi
%attr(0600,root,root) %verify(not md5 size mtime) %ghost %config(missingok,noreplace) /var/db/nscd/services
%ghost %config(missingok,noreplace) /etc/sysconfig/nscd
%files -f nss_db.filelist -n nss_db
%files -n nss_db
/%{_lib}/libnss_db-%{version}.so
/%{_lib}/libnss_db.so.2
/var/db/Makefile
%files -f nss_hesiod.filelist -n nss_hesiod
%files -n nss_hesiod
/%{_lib}/libnss_hesiod-%{version}.so
/%{_lib}/libnss_hesiod.so.2
%doc hesiod/README.hesiod
%files -f nss-devel.filelist nss-devel
%files nss-devel
%{_libdir}/libnss_compat.so
%{_libdir}/libnss_db.so
%{_libdir}/libnss_dns.so
%{_libdir}/libnss_files.so
%{_libdir}/libnss_hesiod.so
%files -f libnsl.filelist -n libnsl
%files -n libnsl
/%{_lib}/libnsl-%{version}.so
/%{_lib}/libnsl.so.1
%if %{with benchtests}
%files benchtests -f benchtests.filelist
%files benchtests
%{_libexecdir}/glibc-benchtests
%endif
%files -f compat-libpthread-nonshared.filelist -n compat-libpthread-nonshared
%files -n compat-libpthread-nonshared
%{_libdir}/libpthread_nonshared.a
%changelog
* Tue Sep 17 2024 Patsy Griffin <patsy@redhat.com> - 2.28-251.6