代码拉取完成,页面将自动刷新
%define anolis_release 2
%bcond_without testsuite
%bcond_without benchtests
%bcond_with bootstrap
%bcond_without werror
%bcond_without docs
%ifarch x86_64 aarch64
%bcond_without valgrind
%else
%bcond_with valgrind
%endif
%global __filter_GLIBC_PRIVATE 1
%global __provides_exclude ^libc_malloc_debug\\.so.*$
%global locale_rx eo syr *_*
%if %{with bootstrap}
%undefine with_benchtests
%undefine with_werror
%undefine with_docs
%undefine with_valgrind
%endif
%undefine _auto_set_build_flags
%undefine _unique_build_ids
%undefine __brp_ldconfig
%define _no_recompute_build_ids 1
%define enablekernel 3.2
%define target %{_target_cpu}-anolis-linux
%define glibc_make_flags_as ASFLAGS="-g -Wa,--generate-missing-build-notes=yes"
%define glibc_make_flags %{glibc_make_flags_as}
%define glibc_post_funcs() \
function post_exec (program, ...) \
local pid = posix.fork () \
if pid == 0 then \
posix.exec (program, ...) \
assert (nil) \
elseif pid > 0 then \
posix.wait (pid) \
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 \
post_exec ("%{_prefix}/sbin/iconvconfig", \
"-o", iconv_cache, \
"--nostdlib", \
iconv_dir) \
else \
io.stdout:write ("Error: Missing " .. iconv_cache .. " file.\n") \
end \
end \
end \
%{nil}
Summary: The GNU libc libraries
Name: glibc
Version: 2.38
Release: %{anolis_release}%{?dist}
License: LGPLv2+ and LGPLv2+ with exceptions and GPLv2+ and GPLv2+ with exceptions and BSD and Inner-Net and ISC and Public Domain and GFDL
URL: http://www.gnu.org/software/glibc/
Source0: https://ftp.gnu.org/gnu/glibc/%{name}-%{version}.tar.xz
Source1: bench.mk
Source2: glibc-bench-compare
Source10: wrap-find-debuginfo.sh
Source20: langpacklist
%{lua:
local wrapper = rpm.expand("%{SOURCE10}")
local sysroot = rpm.expand("%{buildroot}")
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)
}
Patch1: glibc-no-archive-for-localedef.patch
Patch2: glibc-place-info-into-Libraries-category.patch
Patch3: glibc-nscd-add-syslog-target-dependency.patch
Patch4: glibc-fix-newlocale-error-return.patch
Patch5: glibc-cs-path.patch
Patch6: glibc-python3.patch
Patch7: glibc-deprecated-selinux-makedb.patch
# https://sourceware.org/bugzilla/show_bug.cgi?id=30243
Patch8: glibc-gb18030-2022-bug30243.patch
Patch0183: 0083-CVE-2023-4527.patch
Patch0184: 0084-CVE-2023-4806.patch
Patch0185: 0085-CVE-2023-5156.patch
Patch0186: 1086-CVE-2023-4911.patch
Patch0187: 0087-CVE-2023-6246.patch
Patch0188: 0088-CVE-2023-6779.patch
Patch0189: 0089-CVE-2023-6780.patch
# Part 3000 ~ 4999
Patch3000: LoongArch-Redefine-macro-LEAF-ENTRY.patch
Patch3001: LoongArch-Add-minuimum-binutils-required-version.patch
Patch3002: Loongarch-Add-ifunc-support-and-add-different-versio.patch
Patch3003: elf-Add-new-LoongArch-reloc-types-101-to-108-into-el.patch
Patch3004: LoongArch-elf-Add-new-LoongArch-reloc-types-109-into.patch
Patch3005: Loongarch-Add-ifunc-support-for-strchr-aligned-lsx-l.patch
Patch3006: Loongarch-Add-ifunc-support-for-memcpy-aligned-unali.patch
Patch3007: LoongArch-Add-ifunc-support-for-strnlen-aligned-lsx-.patch
Patch3008: LoongArch-Add-ifunc-support-for-strcmp-aligned-lsx.patch
Patch3009: LoongArch-Add-ifunc-support-for-strncmp-aligned-lsx.patch
Patch3010: LoongArch-Remove-support-code-for-old-linker-in-star.patch
Patch3011: LoongArch-Micro-optimize-LD_PCREL.patch
Patch3012: LoongArch-Add-ifunc-support-for-rawmemchr-aligned-ls.patch
Patch3013: LoongArch-Add-ifunc-support-for-memchr-aligned-lsx-l.patch
Patch3014: LoongArch-Add-ifunc-support-for-memrchr-lsx-lasx.patch
Patch3015: LoongArch-Add-ifunc-support-for-memset-aligned-unali.patch
Patch3016: LoongArch-Add-ifunc-support-for-memcmp-aligned-lsx-l.patch
Patch3017: LoongArch-Change-loongarch-to-LoongArch-in-comments.patch
Patch3018: LoongArch-Add-lasx-lsx-support-for-_dl_runtime_profi.patch
Patch3019: LoongArch-Replace-deprecated-v0-with-a0-to-eliminate.patch
Patch3020: LoongArch-Add-ifunc-support-for-strcpy-stpcpy-aligne.patch
Patch3021: LoongArch-Add-ifunc-support-for-strrchr-aligned-lsx-.patch
Patch3022: LoongArch-Change-to-put-magic-number-to-.rodata-sect.patch
Patch3023: LoongArch-Add-glibc.cpu.hwcap-support.patch
Patch3024: Revert-LoongArch-Add-glibc.cpu.hwcap-support.patch
Patch3025: LoongArch-Unify-Register-Names.patch
Patch3026: LoongArch-Update-hwcap.h-to-sync-with-LoongArch-kern.patch
Patch3027: linux-Sync-Linux-6.6-elf.h.patch
Patch3028: Decrease-value-of-arch_minimum_kernel-with-LoongArch.patch
BuildRequires: audit-libs-devel >= 1.1.3 libcap-devel systemtap-sdt-devel
BuildRequires: procps-ng util-linux gawk sed >= 3.95 gettext
BuildRequires: python3 python3-devel
BuildRequires: gcc >= 7.2.1
BuildRequires: make >= 4.0 bison >= 2.7 binutils >= 2.30
%if %{with valgrind}
BuildRequires: valgrind
%endif
%if %{without bootstrap}
BuildRequires: gd-devel libpng-devel zlib-devel libselinux-devel >= 1.33.4
%if %{with testsuite}
BuildRequires: gcc-c++ libstdc++-static glibc-static libidn2 perl-interpreter
%endif
%endif
Provides: ldconfig rtld(GNU_HASH) bundled(gnulib)
Requires: glibc-common = %{EVR}
Requires: basesystem libgcc
Requires: glibc-langpack = %{EVR}
Requires: (glibc-gconv-extra = %{EVR} if system-rpm-config)
Requires(pre): basesystem
Suggests: glibc-minimal-langpack = %{EVR}
Recommends: glibc-gconv-extra = %{EVR}
Obsoletes: glibc-profile < 2.4
Obsoletes: nscd < 2.35
Conflicts: kernel < %{enablekernel}
Conflicts: prelink < 0.4.2
%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.
%ifnarch loongarch64
%package -n libnsl
Summary: Legacy support library for NIS
Requires: %{name} = %{EVR}
%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.
%endif
%package devel
Summary: Object files for development using standard C libraries.
BuildRequires: kernel-headers >= 3.2
Requires: %{name} = %{EVR}
Requires: libxcrypt-devel >= 4.0.0 kernel-headers >= 3.2
Provides: glibc-headers = %{EVR}
Provides: glibc-headers(%{_target_cpu})
Obsoletes: glibc-headers < %{EVR}
%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.
%package static
Summary: C library static libraries for -static linking.
Requires: %{name}-devel = %{EVR}
Requires: libxcrypt-static >= 4.0.0
%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.
%package common
Summary: Common binaries and locale data for glibc
Requires: %{name} = %{EVR}
Requires: tzdata >= 2003a
%description common
The glibc-common package includes common binaries for the GNU libc
libraries, as well as national language (locale) support.
%transfiletriggerin common -P 2000000 -- /lib /usr/lib /lib64 /usr/lib64
/sbin/ldconfig
%end
%transfiletriggerpostun common -P 2000000 -- /lib /usr/lib /lib64 /usr/lib64
/sbin/ldconfig
%end
%package locale-source
Summary: The sources for the locales
Requires: %{name} = %{EVR}
Requires: %{name}-common = %{EVR}
%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.
%package all-langpacks
Summary: All language packs for glibc.
Provides: glibc-langpack = %{EVR}
Requires: %{name} = %{EVR}
Requires: %{name}-common = %{EVR}
%{lua:
-- List the langpacks provided by all-langpacks
lang_provides = {}
for line in io.lines(rpm.expand("%{SOURCE20}")) do
print(rpm.expand([[
Provides: %{name}-langpack-]]..line..[[ = %{EVR}
Obsoletes: %{name}-langpack-]]..line..[[ <= %{EVR}
]]))
end
}
%description all-langpacks
This package includes all the basic infomation required
to support all language. Exclude en and zh langpack.
%package langpack-en
Summary: Locale data for English
Provides: glibc-langpack = %{EVR}
Requires: %{name} = %{EVR}
Requires: %{name}-common = %{EVR}
%description langpack-en
The glibc-langpack-en package includes the basic information
required to support the English language in your applications.
%package langpack-zh
Summary: Locale data for Chinese
Provides: glibc-langpack = %{EVR}
Requires: %{name} = %{EVR}
Requires: %{name}-common = %{EVR}
Obsoletes: %{name}-langpack-cmn < %{EVR}
Provides: %{name}-langpack-cmn = %{EVR}
%description langpack-zh
The glibc-langpack-zh package includes the basic information required
to support the Chinese language in your applications.
%package minimal-langpack
Summary: Minimal language packs for glibc.
Provides: glibc-langpack = %{EVR}
Requires: %{name} = %{EVR}
Requires: %{name}-common = %{EVR}
%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.
%package gconv-extra
Summary: All iconv converter modules for glibc.
Requires: %{name} = %{EVR}
Requires: %{name}-common = %{EVR}
%description gconv-extra
This package contains all iconv converter modules built in glibc.
%package -n nss_db
Summary: Name Service Switch (NSS) module using hash-indexed files
Requires: %{name} = %{EVR}
%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} = %{EVR}
%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} = %{EVR}
Requires: nss_db = %{EVR}
Requires: nss_hesiod = %{EVR}
%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.
%package utils
Summary: Development utilities from GNU C library
Requires: %{name} = %{EVR}
%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 glibc
%description benchtests
This package provides built benchmark binaries and scripts to run
microbenchmark tests on the system.
%endif
%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.
%if %{with docs}
%package doc
Summary: Documentation for GNU libc
BuildArch: noarch
BuildRequires: texinfo >= 5.0
Requires: %{name} = %{EVR}
%description doc
The glibc-doc package contains The GNU C Library Reference Manual
in info format. Additional package documentation is also provided.
%endif
%prep
%autosetup -p1
chmod +x benchtests/scripts/*.py scripts/pylint
find . -type f -size 0 -o -name "*.orig" -exec rm -f {} \;
touch `find . -name configure`
touch locale/programs/*-kw.h
# Ignore kernel version check errors.
%ifarch loongarch64
sed -i "s@5.19.0@4.15.0@g" sysdeps/unix/sysv/linux/loongarch/configure{,.ac}
%endif
%build
uname -a
LD_SHOW_AUXV=1 /bin/true
cat /proc/cpuinfo
cat /proc/sysinfo 2>/dev/null || true
cat /proc/meminfo
df
GCC=gcc
GXX=g++
rpm_append_flag ()
{
BuildFlags="$BuildFlags $*"
}
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
}
rpm_inherit_flags \
"-Wp,-D_GLIBCXX_ASSERTIONS" \
"-fasynchronous-unwind-tables" \
"-fstack-clash-protection" \
"-funwind-tables" \
"-m31" \
"-m32" \
"-m64" \
"-march=armv8-a+lse" \
"-march=armv8.1-a" \
"-march=armv9-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" \
"-msse2" \
"-mstackrealign" \
"-mtune=generic" \
"-mtune=power10" \
"-mtune=power8" \
"-mtune=power9" \
"-mtune=z13" \
"-mtune=z14" \
"-mtune=z15" \
"-mtune=zEC12" \
"-specs=/usr/lib/rpm/anolis/anolis-annobin-cc1" \
%if 0%{?_annotated_build} > 0
BuildFlagsNonshared="-fplugin=annobin -fplugin-arg-annobin-disable -Wa,--generate-missing-build-notes=yes"
%endif
echo "$GCC" > Gcc
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} \
--build=%{target} \
--with-headers=%{_prefix}/include \
--enable-kernel=%{enablekernel} \
--with-nonshared-cflags="$BuildFlagsNonshared" \
--enable-bind-now \
--enable-stack-protector=strong \
--enable-tunables \
--enable-systemtap \
${core_with_options} \
%ifarch x86_64
--enable-cet \
%endif
%if %{without werror}
--disable-werror \
%endif
%if %{with bootstrap}
--without-selinux \
%endif
%ifarch aarch64
--enable-memory-tagging \
%endif
--disable-profile \
--disable-crypt \
--disable-build-nscd \
--disable-nscd ||
{ cat config.log; false; }
%make_build -r %{glibc_make_flags}
popd
}
build
%install
GCC=`cat Gcc`
%ifarch riscv64
for d in %{buildroot}%{_libdir} %{buildroot}/%{_lib}; do
mkdir -p $d
(cd $d && ln -sf . lp64d)
done
%endif
pushd build-%{target}
%make_build install_root=%{buildroot} install
%make_build install_root=%{buildroot} install-locales -C ../localedata objdir=`pwd`
popd
hardlink %{buildroot}/usr/lib/locale
rm -f %{buildroot}/%{_libdir}/libNoVersion*
rm -f %{buildroot}/%{_lib}/libNoVersion*
rm -f %{buildroot}/%{_lib}/libnss1-*
rm -f %{buildroot}/%{_lib}/libnss-*.so.1
rm -f %{buildroot}/{usr/,}sbin/sln
mkdir -p %{buildroot}/var/cache/ldconfig
truncate -s 0 %{buildroot}/var/cache/ldconfig/aux-cache
%{buildroot}/sbin/ldconfig -N -r %{buildroot}
%if %{with docs}
if [ -d %{buildroot}%{_prefix}/info -a "%{_infodir}" != "%{_prefix}/info" ]; then
mkdir -p %{buildroot}%{_infodir}
mv -f %{buildroot}%{_prefix}/info/* %{buildroot}%{_infodir}
rm -rf %{buildroot}%{_prefix}/info
fi
gzip -9nvf %{buildroot}%{_infodir}/libc*
mkdir -p %{buildroot}%{_docdir}/glibc
cp elf/rtld-debugger-interface.txt %{buildroot}%{_docdir}/glibc
%else
rm -f %{buildroot}%{_infodir}/dir
rm -f %{buildroot}%{_infodir}/libc.info*
%endif
olddir=`pwd`
pushd %{buildroot}%{_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 %{buildroot} --add-to-archive \
%locale_rx
ln locale-archive locale-archive.real
popd
echo 'include ld.so.conf.d/*.conf' > %{buildroot}/etc/ld.so.conf
truncate -s 0 %{buildroot}/etc/ld.so.cache
chmod 644 %{buildroot}/etc/ld.so.conf
mkdir -p %{buildroot}/etc/ld.so.conf.d
truncate -s 0 %{buildroot}/etc/gai.conf
truncate -s 0 %{buildroot}%{_libdir}/gconv/gconv-modules.cache
chmod 644 %{buildroot}%{_libdir}/gconv/gconv-modules.cache
rm -rf %{buildroot}%{_prefix}/share/zoneinfo
touch -r %{SOURCE0} %{buildroot}/etc/ld.so.conf
touch -r inet/etc.rpc %{buildroot}/etc/rpc
%if %{with benchtests}
pushd build-%{target}
make BENCH_DURATION=1 bench-build
popd
mkdir -p %{buildroot}%{_prefix}/libexec/glibc-benchtests
cp $(find build-%{target}/benchtests -type f -executable) %{buildroot}%{_prefix}/libexec/glibc-benchtests/
for b in %{SOURCE1} %{SOURCE2}; do
cp $b %{buildroot}%{_prefix}/libexec/glibc-benchtests/
done
cp benchtests/scripts/benchout.schema.json %{buildroot}%{_prefix}/libexec/glibc-benchtests/
cp benchtests/scripts/compare_bench.py %{buildroot}%{_prefix}/libexec/glibc-benchtests/
cp benchtests/scripts/import_bench.py %{buildroot}%{_prefix}/libexec/glibc-benchtests/
cp benchtests/scripts/validate_benchout.py %{buildroot}%{_prefix}/libexec/glibc-benchtests/
%endif
pushd locale
ln -s programs/*.gperf .
popd
pushd iconv
ln -s ../locale/programs/charmap-kw.gperf .
popd
%if %{with docs}
rm -f %{buildroot}%{_infodir}/dir
%endif
mkdir -p %{buildroot}%{_libdir}
mv -f %{buildroot}/%{_lib}/lib{pcprofile,memusage}.so %{buildroot}%{_libdir}
rm %{buildroot}%{_libdir}/libc_malloc_debug.so
strip -g %{buildroot}%{_libdir}/*.o
for i in %{buildroot}%{_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
ar cr %{buildroot}%{_prefix}/%{_lib}/libpthread_nonshared.a
%check
%if %{with testsuite}
run_tests () {
%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
echo "* System call consistency checks:" >&2
cat misc/tst-syscall-list.out >&2
set -x
}
export TIMEOUTFACTOR=16
parent=$$
echo ====================TESTING=========================
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 %{buildroot}/%{_lib}/ld-*.so | sed -n -e "$PLTCMD"
echo ====================PLT RELOCS LIBC.SO==============
readelf -Wr %{buildroot}/%{_lib}/libc-*.so | sed -n -e "$PLTCMD"
echo ====================PLT RELOCS END==================
ldso_path="$(find %{buildroot}/ -regextype posix-extended \
-regex '.*/ld(-.*|64|)\.so\.[0-9]+$' -type f | LC_ALL=C sort | head -n1)"
run_ldso="$ldso_path --library-path %{buildroot}/%{_lib}"
LD_SHOW_AUXV=1 $run_ldso /bin/true
%if 0%{?_enable_debug_packages}
%if %{with valgrind}
$run_ldso /usr/bin/valgrind --error-exitcode=1 $run_ldso /usr/bin/true
$run_ldso /usr/bin/valgrind --error-exitcode=1 $run_ldso /usr/bin/true --help >/dev/null
%endif
%endif
%endif
%pre -p <lua>
required = '%{enablekernel}'
rel = posix.uname("%r")
if rpm.vercmp(rel, required) < 0 then
error("FATAL: kernel too old", 0)
end
%post -p <lua>
%glibc_post_funcs
-- (1) Remove multilib libraries from previous installs.
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" }
remove_regexps = {}
for i = 1, #install_libs do
remove_regexps[#remove_regexps + 1] = ("lib" .. install_libs[i]
.. "%%-[2-9]%%.[0-9]+%%.so$")
remove_regexps[#remove_regexps + 1] = ("lib" .. install_libs[i]
.. "%%.so%%.[0-9]+$")
end
remove_regexps[#install_libs + 1] = "libthread_db%%-1%%.0%%.so"
remove_regexps[#install_libs + 2] = "libSegFault%%.so"
local remove_dirs = { "%{_libdir}/i686",
"%{_libdir}/i686/nosegneg",
"%{_libdir}/power6",
"%{_libdir}/power7",
"%{_libdir}/power8",
"%{_libdir}/power9",
}
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
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
local ldsoconf = "/etc/ld.so.conf"
local ldsoconf_tmp = "/etc/glibc_post_upgrade.ld.so.conf"
if posix.access (ldsoconf) then
local have_include = false
for line in io.lines (ldsoconf) do
if string.match (line, "^include ld.so.conf.d/%%*%%.conf$") ~= nil then
have_include = true
end
end
if not have_include then
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.
post_exec ("%{_prefix}/sbin/ldconfig")
-- (4) Update gconv modules cache.
update_gconv_modules_cache()
-- (5) On upgrades, restart systemd if installed.
if tonumber(arg[2]) >= 2
and posix.access("%{_prefix}/bin/systemctl", "x")
then
local pid = posix.fork()
if pid == 0 then
posix.redirect2null(2)
assert(posix.exec("%{_prefix}/bin/systemctl", "daemon-reexec"))
elseif pid > 0 then
posix.wait(pid)
end
end
%posttrans all-langpacks -e -p <lua>
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 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 stat_archive == nil then
posix.link(real_path, archive_path)
end
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 ()
%files
%ifarch x86_64
/lib64/ld-linux-x86-64.so.2
%endif
%ifarch aarch64
/lib/ld-linux-aarch64.so.1
%endif
%ifarch loongarch64
/lib64/ld-linux-loongarch-lp64d.so.1
%endif
/lib64/libBrokenLocale.so.1
%ifnarch loongarch64
/lib64/libmvec.so.1
/lib64/libanl.so.1
/lib64/libutil.so.1
%endif
/lib64/libc.so.6
/lib64/libc_malloc_debug.so.0
/lib64/libdl.so.2
/lib64/libm.so.6
/lib64/libpthread.so.0
/lib64/libresolv.so.2
/lib64/librt.so.1
/lib64/libthread_db.so.1
/lib64/libnss_compat.so.2
/lib64/libnss_files.so.2
/lib64/libnss_dns.so.2
/usr/lib64/libmemusage.so
/usr/lib64/libpcprofile.so
/usr/lib64/gconv/ANSI_X3.110.so
/usr/lib64/gconv/CP1252.so
/usr/lib64/gconv/ISO8859-1.so
/usr/lib64/gconv/ISO8859-15.so
/usr/lib64/gconv/UNICODE.so
/usr/lib64/gconv/UTF-16.so
/usr/lib64/gconv/UTF-32.so
/usr/lib64/gconv/UTF-7.so
/usr/lib64/audit/sotruss-lib.so
/sbin/ldconfig
/usr/sbin/iconvconfig
%dir %{_prefix}/libexec/getconf
%{_prefix}/libexec/getconf/POSIX_V6_LP64_OFF64
%{_prefix}/libexec/getconf/POSIX_V7_LP64_OFF64
%{_prefix}/libexec/getconf/XBS5_LP64_OFF64
%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
%attr(0644,root,root) %verify(not md5 size mtime) %ghost %config(missingok,noreplace) /etc/ld.so.cache
%attr(0644,root,root) %verify(not md5 size mtime) %ghost %config(missingok,noreplace) /etc/gai.conf
%dir %{_libdir}/gconv
%dir %{_libdir}/gconv/gconv-modules.d
%verify(not md5 size mtime) %config(noreplace) /usr/lib64/gconv/gconv-modules
%verify(not md5 size mtime) /usr/lib64/gconv/gconv-modules.cache
%dir %{_prefix}/%{_lib}/audit
%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
%license COPYING COPYING.LIB LICENSES
%files common
%{_bindir}/gencat
%{_bindir}/getconf
%{_bindir}/getent
%{_bindir}/iconv
%{_bindir}/ld.so
%{_bindir}/ldd
%{_bindir}/locale
%{_bindir}/localedef
%{_bindir}/pldd
%{_bindir}/sotruss
%{_bindir}/sprof
%{_bindir}/tzselect
%{_bindir}/zdump
%{_sbindir}/zic
%dir /usr/share/i18n
%dir /usr/share/i18n/charmaps
%dir /usr/share/i18n/locales
/usr/share/locale/locale.alias
%dir %{_prefix}/lib/locale
%dir %{_prefix}/lib/locale/C.utf8
%{_prefix}/lib/locale/C.utf8/*
%files all-langpacks
%{_prefix}/lib/locale
%{_prefix}/lib/locale/locale-archive
%{_prefix}/lib/locale/locale-archive.real
%{_prefix}/share/locale/*/LC_MESSAGES/libc.mo
%exclude %{_prefix}/lib/locale/C.utf8
%exclude %{_prefix}/lib/locale/zh*
%exclude %{_prefix}/lib/locale/en*
%exclude %{_prefix}/share/locale/zh*
%exclude %{_prefix}/share/locale/en*
%files minimal-langpack
%files langpack-en
%dir %{_prefix}/lib/locale
%{_prefix}/lib/locale/en*
%{_prefix}/share/locale/en_*/LC_MESSAGES/libc.mo
%files langpack-zh
%dir %{_prefix}/lib/locale
%{_prefix}/lib/locale/zh*
%{_prefix}/share/locale/zh_*/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 devel
%ifnarch loongarch64
/usr/lib64/libanl.a
%endif
/usr/lib64/libc_nonshared.a
/usr/lib64/libdl.a
/usr/lib64/libg.a
/usr/lib64/libmcheck.a
/usr/lib64/libpthread.a
/usr/lib64/librt.a
/usr/lib64/libutil.a
/usr/lib64/Mcrt1.o
/usr/lib64/Scrt1.o
/usr/lib64/crt1.o
/usr/lib64/crti.o
/usr/lib64/crtn.o
/usr/lib64/gcrt1.o
/usr/lib64/grcrt1.o
/usr/lib64/rcrt1.o
/usr/lib64/libBrokenLocale.so
%ifnarch loongarch64
/usr/lib64/libmvec.so
/usr/lib64/libanl.so
%endif
/usr/lib64/libc.so
/usr/lib64/libm.so
/usr/lib64/libresolv.so
/usr/lib64/libthread_db.so
/usr/include/*.h
%dir /usr/include/arpa
/usr/include/arpa/*.h
%dir /usr/include/bits
/usr/include/bits/*.h
/usr/include/bits/stab.def
%dir /usr/include/bits/types
/usr/include/bits/types/*.h
%dir /usr/include/finclude
/usr/include/finclude/math-vector-fortran.h
%dir /usr/include/gnu
/usr/include/gnu/*.h
%dir /usr/include/net
/usr/include/net/*.h
%dir /usr/include/netash
/usr/include/netash/ash.h
%dir /usr/include/netatalk
/usr/include/netatalk/at.h
%dir /usr/include/netax25
/usr/include/netax25/ax25.h
%dir /usr/include/neteconet
/usr/include/neteconet/ec.h
%dir /usr/include/netinet
/usr/include/netinet/*.h
%dir /usr/include/netipx
/usr/include/netipx/ipx.h
%dir /usr/include/netiucv
/usr/include/netiucv/iucv.h
%dir /usr/include/netpacket
/usr/include/netpacket/packet.h
%dir /usr/include/netrom
/usr/include/netrom/netrom.h
%dir /usr/include/netrose
/usr/include/netrose/rose.h
%dir /usr/include/nfs
/usr/include/nfs/nfs.h
%dir /usr/include/protocols
/usr/include/protocols/routed.h
/usr/include/protocols/rwhod.h
/usr/include/protocols/talkd.h
/usr/include/protocols/timed.h
%dir /usr/include/rpc
/usr/include/rpc/netdb.h
%dir /usr/include/scsi
/usr/include/scsi/scsi.h
/usr/include/scsi/scsi_ioctl.h
/usr/include/scsi/sg.h
%dir /usr/include/sys
/usr/include/sys/*.h
%ifarch x86_64
%dir /usr/include/sys/platform
/usr/include/sys/platform/*.h
%dir /usr/include/bits/platform
/usr/include/bits/platform/*.h
%endif
%if %{with docs}
%files doc
/usr/share/info/libc.info-*
/usr/share/info/libc.info.*
%dir /usr/share/doc
%dir /usr/share/doc/glibc
/usr/share/doc/glibc/rtld-debugger-interface.txt
%endif
%files static
%{_libdir}/libBrokenLocale.a
%{_libdir}/libc.a
%{_libdir}/libm.a
%{_libdir}/libresolv.a
%ifnarch loongarch64
%{_libdir}/libm-%{version}.a
%{_libdir}/libmvec.a
%endif
%files utils
%if %{without bootstrap}
%{_bindir}/memusage
%{_bindir}/memusagestat
%endif
%{_bindir}/mtrace
%{_bindir}/pcprofiledump
%{_bindir}/xtrace
%files gconv-extra
%verify(not md5 size mtime) %config(noreplace) /usr/lib64/gconv/gconv-modules.d/gconv-modules-extra.conf
/usr/lib64/gconv/*.so
%exclude /usr/lib64/gconv/{ANSI_X3.110,CP1252,ISO8859-1,ISO8859-15,UNICODE,UTF-16,UTF-32,UTF-7}.so
%files -n nss_db
/var/db/Makefile
/lib64/libnss_db.so.2
%{_bindir}/makedb
%files -n nss_hesiod
/lib64/libnss_hesiod.so.2
%doc hesiod/README.hesiod
%files nss-devel
%{_libdir}/libnss_compat.so
%{_libdir}/libnss_db.so
%{_libdir}/libnss_hesiod.so
%ifnarch loongarch64
%files -n libnsl
/lib64/libnsl.so.1
%endif
%if %{with benchtests}
%files benchtests
/usr/libexec/glibc-benchtests/*
%endif
%files -n compat-libpthread-nonshared
%{_libdir}/libpthread_nonshared.a
%changelog
* Sat Mar 16 2024 Peng Fan <fanpeng@loongson.cn> - 2.38-2
- LoongArch: sync patch from glibc upstream
- Reduced kernel version requirements
* Tue Mar 05 2024 mgb01105731 <mgb01105731@alibaba-inc.com> - 2.38-1
- update to 2.38
* Thu Feb 01 2024 Funda Wang <fundawang@yeah.net> - 2.36-13
- fix CVE-2023-6246, CVE-2023-6779, and CVE-2023-6780.
* Tue Oct 24 2023 Peng Fan <fanpeng@loongson.cn> - 2.36-12
- LoongArch: Not provided libanl, libnsl and libutil by LoongArch.
* Wed Oct 11 2023 Peng Fan <fanpeng@loongson.cn> - 2.36-11
- LoongArch: Ignore kernel version checks.
- Temporarily not pack libanl.so and libutil.so in LoongArch.
* Wed Oct 04 2023 Funda Wang <fundawang@yeah.net> - 2.36-10
- fix CVE-2023-4527, CVE-2023-4806, CVE-2023-5156, CVE-2023-4911
* Tue Aug 15 2023 Funda Wang <fundawang@yeah.net> - 2.36-9
- Add patch for gb18030-2022 from upstream bug#30243
- Correctly move langpack-cmn into langpack-zh
* Tue Aug 8 2023 Peng Fan <fanpeng@loongson.cn> - 2.36-8
- LoongArch: backport from upstream.
- upstream commit: eaa5b1cce87d34c945955360b1e519c6994308a1
* Fri Apr 14 2023 Chunmei Xu <xuchunmei@linux.alibaba.com> - 2.36-7
- optimise spec file
* Tue Mar 28 2023 mgb01105731 <mgb01105731@alibaba-inc.com> - 2.36-6
- Del Specific Fields
* Wed Feb 22 2023 Chunmei Xu <xuchunmei@linux.alibaba.com> - 2.36-5
- recover to provide glibc-minimal-langpack
* Wed Feb 22 2023 Chunmei Xu <xuchunmei@linux.alibaba.com> - 2.36-4
- remove glibc-minimal-langpack
- add glibc-langpack-en/zh as suggests for glibc
* Thu Jan 5 2023 Chunmei Xu <xuchunmei@linux.alibaba.com> - 2.36-3
- sync patches from 2.36 release branch, upstream commit 4f4d7a13edfd2fdc57c9d76e1fd6d017fb47550c
- move glibc-langpack-xxx subpackage to glibc-all-langpacks except glibc-langpack-en/zh
* Thu Sep 1 2022 Chunmei Xu <xuchunmei@linux.alibaba.com> - 2.36-2
- sync patches from 2.36 release branch
- upstream commit: b3736d1a3c60a3ec9959bf3b38794958546bf6a2
* Thu Aug 04 2022 Chunmei Xu <xuchunmei@linux.alibaba.com> - 2.36-1
- rebase to 2.36
* Mon Jul 11 2022 Weisson <wenshu.hx@alibaba-inc.com> - 2.35-2
- Add support for 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.
* Tue Feb 22 2022 Chunmei Xu <xuchunmei@linux.alibaba.com> - 2.35-1
- upstream 2.35 release tarball and add patches from release/2.35/master
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。