6199fe8ce7
- Random assortion of bugfixes, some #defines for new kernels - Retired patches: - glibc-2.11.3-bnc658509.diff - glibc-2.11.3-bso12397.diff - glibc-sparc64-fxstat.diff - Remove the NSS hack of opening modules using RTLD_DEEPBIND. This was useful for nss_ldap, since some applications used a different LDAP library with clashing symbol names. However, it also created many headaches, especially with the NSS modules not respecting malloc() overrides. Now, sssd is used by default for LDAP resolutions and we can therefore safely get rid of the hack. [bnc#477061] - Remove the currently disabled AMD string function overrides. Benchmarking did not unearth any differences that would make convincing case for keeping the functions with all the associated maintenance headaches; AMD does not recommend keeping their custom versions of the functions either. OBS-URL: https://build.opensuse.org/package/show/Base:System/glibc?expand=0&rev=47
1026 lines
28 KiB
RPMSpec
1026 lines
28 KiB
RPMSpec
#
|
|
# spec file for package glibc
|
|
#
|
|
# Copyright (c) 2011 SUSE LINUX Products GmbH, Nuernberg, Germany.
|
|
#
|
|
# All modifications and additions to the file contributed by third parties
|
|
# remain the property of their copyright owners, unless otherwise agreed
|
|
# upon. The license for this file, and modifications and additions to the
|
|
# file, is the same license as for the pristine package itself (unless the
|
|
# license for the pristine package is not an Open Source License, in which
|
|
# case the license is the MIT License). An "Open Source License" is a
|
|
# license that conforms to the Open Source Definition (Version 1.9)
|
|
# published by the Open Source Initiative.
|
|
|
|
# Please submit bugfixes or comments via http://bugs.opensuse.org/
|
|
#
|
|
|
|
# norootforbuild
|
|
|
|
|
|
Name: glibc
|
|
BuildRequires: gcc-c++ libstdc++-devel
|
|
BuildRequires: libselinux-devel
|
|
%define _filter_GLIBC_PRIVATE 1
|
|
%define build_locales 1
|
|
%define run_testsuite 0
|
|
%define disable_assert 0
|
|
%define enable_stackguard_randomization 1
|
|
%ifarch ppc ppc64
|
|
%define optimize_power 1
|
|
%ifarch ppc
|
|
%define powerpc_optimize_base power3
|
|
%define powerpc_optimize_tune power3
|
|
%define powerpc_optimize_cpu_power4 1
|
|
%else
|
|
%define powerpc_optimize_base power4
|
|
%define powerpc_optimize_tune power5
|
|
%define powerpc_optimize_cpu_power4 0
|
|
%endif
|
|
# We are not building Power CPU specific optimizations for openSUSE.
|
|
%define powerpc_optimize_cpu_power6 0
|
|
%define powerpc_optimize_cpu_power7 0
|
|
%define powerpc_optimize_cpu_cell 0
|
|
%else
|
|
%define optimize_power 0
|
|
%define powerpc_optimize_base 0
|
|
%define powerpc_optimize_cpu_power4 0
|
|
%define powerpc_optimize_cpu_power6 0
|
|
%define powerpc_optimize_cpu_power7 0
|
|
%define powerpc_optimize_cpu_cell 0
|
|
%endif # ppc, ppc64
|
|
License: GPLv2+
|
|
Summary: Standard Shared Libraries (from the GNU C Library)
|
|
Group: System/Libraries
|
|
Obsoletes: ngpt <= 2.2.2 ngpt-devel <= 2.2.2
|
|
Provides: ntpt = 2.2.2 ngpt-devel = 2.2.2
|
|
# bug437293
|
|
%ifarch ppc64
|
|
Obsoletes: glibc-64bit
|
|
%endif
|
|
%ifarch ppc
|
|
Obsoletes: glibc-32bit
|
|
%endif
|
|
Provides: rtld(GNU_HASH)
|
|
AutoReqProv: on
|
|
Version: 2.11.3
|
|
Release: 3
|
|
Url: http://www.gnu.org/software/libc/libc.html
|
|
PreReq: filesystem
|
|
BuildRoot: %{_tmppath}/%{name}-%{version}-build
|
|
Source: glibc-%{version}-b72646ad0c41.tar.bz2
|
|
Source2: glibc-ports-2.10.1-2b2b217196.tar.bz2
|
|
Source3: noversion.tar.bz2
|
|
Source4: manpages.tar.bz2
|
|
Source5: usr.sbin.nscd
|
|
Source8: nsswitch.conf
|
|
Source9: nscd.init
|
|
Source10: bindresvport.blacklist
|
|
Source11: ctype_b.c
|
|
Source12: glibc_post_upgrade.c
|
|
Source15: glibc.rpmlintrc
|
|
Source16: baselibs.conf
|
|
%if %_target_cpu == "i686"
|
|
# We need to avoid to have only the src rpm from i686 on the media,
|
|
# since it does not work on other architectures.
|
|
NoSource: 0
|
|
%endif
|
|
#
|
|
Patch0: glibc-2.3-SuSE.diff
|
|
Patch1: glibc-2.3.90-noversion.diff
|
|
Patch2: glibc-fnmatch-multibyte.diff
|
|
Patch3: glibc-resolv-reload.diff
|
|
Patch4: glibc-2.3.locales.diff.bz2
|
|
Patch5: crypt_blowfish-1.0-suse.diff
|
|
Patch7: glibc-version.diff
|
|
Patch8: glibc-2.4.90-revert-only-euro.diff
|
|
Patch9: glibc-2.3-regcomp.diff
|
|
Patch10: glibc-2.3.2-revert_tcsetattr.diff
|
|
Patch11: glibc-2.3.1.localedef.diff
|
|
Patch12: glibc-2.3.2.no_archive.diff
|
|
Patch14: libm-x86-64.diff.bz2
|
|
Patch15: glibc-2.3.90-bindresvport.blacklist.diff
|
|
Patch16: glibc-suse-note.diff
|
|
Patch17: glibc-2.4.90-no_NO.diff
|
|
Patch18: glibc-2.3.90-ld.so-madvise.diff
|
|
Patch19: glibc-2.3.3-amd64-s_ceil.diff
|
|
Patch20: glibc-2.3.3-execstack.diff
|
|
Patch21: glibc-2.4-china.diff
|
|
Patch22: glibc-2.3.4-gb18030-big5hkscs.diff.bz2
|
|
Patch23: glibc-2.4.90-nscd.diff
|
|
Patch24: glibc-2.3.3-nscd-db-path.diff
|
|
Patch25: glibc-2.3.5-nscd-zeronegtimeout.diff
|
|
Patch26: glibc-2.3.90-langpackdir.diff
|
|
Patch27: glibc-nptl-2.4-nofixsyscallnr.diff
|
|
Patch30: glibc-2.6-configure.diff
|
|
Patch31: glibc-2.2-sunrpc.diff
|
|
Patch32: glibc-2.8-getconf.diff
|
|
Patch33: getaddrinfo-ipv6-sanity.diff
|
|
Patch35: ppc-atomic.diff
|
|
Patch36: glibc-2.8-clone.diff
|
|
Patch39: glibc-compiled-binaries.diff
|
|
Patch40: glibc-selinux.diff
|
|
Patch41: glibc-check-native-missing-include.diff
|
|
Patch42: glibc-no-unwind-tables.diff
|
|
Patch43: glibc-2.10-nscd-nostack.diff
|
|
Patch44: glibc-cpusetsize.diff
|
|
Patch46: glibc-2.10.99-ia64-include.diff
|
|
Patch47: libm-x86-64-exceptions.diff
|
|
Patch48: glibc-uio-cell.diff
|
|
Patch54: glibc-statfs64-ia64.diff
|
|
Patch60: ld-prelink-unique.diff
|
|
Patch61: glibc-ppc64-vdso-time.diff
|
|
Patch64: glibc-gai-private4.diff
|
|
Patch65: glibc-resolv-mdnshint.diff
|
|
Patch69: glibc-nscd-hconf.diff
|
|
Patch500: ARM_glibc-2.10.1-local-eabi-wchar.diff
|
|
Patch501: ARM_glibc-2.10.1-local-hwcap-updates.diff
|
|
Patch502: ARM_glibc-2.10.1-local-lowlevellock.diff
|
|
Patch503: ARM_glibc-2.10.1-local-no-hwcap.diff
|
|
|
|
%description
|
|
The GNU C Library provides the most important standard libraries used
|
|
by nearly all programs: the standard C library, the standard math
|
|
library, and the POSIX thread library. A system is not functional
|
|
without these libraries.
|
|
|
|
|
|
|
|
%package info
|
|
License: GPLv2+
|
|
Summary: Info Files for the GNU C Library
|
|
Group: Documentation/Other
|
|
PreReq: %{install_info_prereq}
|
|
AutoReqProv: on
|
|
|
|
%description info
|
|
This package contains the documentation for the GNU C library stored as
|
|
info files. Due to a lack of resources, this documentation is not
|
|
complete and is partially out of date.
|
|
|
|
|
|
|
|
%package html
|
|
License: GPLv2+ ; LGPLv2.1+
|
|
Summary: HTML Documentation for the GNU C Library
|
|
Group: Documentation/HTML
|
|
AutoReqProv: on
|
|
|
|
%description html
|
|
This package contains the HTML documentation for the GNU C library. Due
|
|
to a lack of resources, this documentation is not complete and is
|
|
partially out of date.
|
|
|
|
|
|
|
|
%package i18ndata
|
|
License: LGPLv2.1+
|
|
Summary: Database Sources for 'locale'
|
|
Group: System/Libraries
|
|
AutoReqProv: on
|
|
|
|
%description i18ndata
|
|
This package contains the data needed to build the locale data files to
|
|
use the internationalization features of the GNU libc. It is normally
|
|
not necessary to install this packages, the data files are already
|
|
created.
|
|
|
|
|
|
|
|
%package locale
|
|
License: GPLv2+ ; LGPLv2.1+
|
|
Summary: Locale Data for Localized Programs
|
|
Group: System/Libraries
|
|
Requires: glibc = %{version}
|
|
PreReq: /bin/cat
|
|
AutoReqProv: on
|
|
# bug437293
|
|
%ifarch ppc64
|
|
Obsoletes: glibc-locale-64bit
|
|
%endif
|
|
%ifarch ppc
|
|
Obsoletes: glibc-locale-32bit
|
|
%endif
|
|
|
|
%description locale
|
|
Locale data for the internationalisation features of the GNU C library.
|
|
|
|
|
|
|
|
%package -n nscd
|
|
License: LGPLv2.1+
|
|
Summary: Name Service Caching Daemon
|
|
Group: System/Daemons
|
|
Provides: glibc:/usr/sbin/nscd aaa_base:/etc/init.d/nscd
|
|
PreReq: %insserv_prereq
|
|
|
|
%description -n nscd
|
|
Nscd caches name service lookups and can dramatically improve
|
|
performance with NIS, NIS+, and LDAP.
|
|
|
|
|
|
|
|
%package profile
|
|
License: LGPLv2.1+
|
|
Summary: Libc Profiling and Debugging Versions
|
|
Group: Development/Libraries/C and C++
|
|
Requires: glibc = %{version}
|
|
# bug437293
|
|
%ifarch ppc64
|
|
Obsoletes: glibc-profile-64bit
|
|
%endif
|
|
%ifarch ppc
|
|
Obsoletes: glibc-profile-32bit
|
|
%endif
|
|
AutoReqProv: on
|
|
|
|
%description profile
|
|
This package contains special versions of the GNU C library which are
|
|
necessary for profiling and debugging.
|
|
|
|
|
|
|
|
%package devel
|
|
License: BSD3c(or similar) ; GPLv2+ ; LGPLv2.1+
|
|
Summary: Include Files and Libraries Mandatory for Development
|
|
Group: Development/Libraries/C and C++
|
|
Obsoletes: epoll = 1.0
|
|
Provides: epoll <= 1.0
|
|
# bug437293
|
|
%ifarch ppc64
|
|
Obsoletes: glibc-devel-64bit
|
|
%endif
|
|
%ifarch ppc
|
|
Obsoletes: glibc-devel-32bit
|
|
%endif
|
|
PreReq: /bin/rm
|
|
Requires: glibc = %{version}, linux-kernel-headers
|
|
AutoReqProv: on
|
|
|
|
%description devel
|
|
These libraries are needed to develop programs which use the standard C
|
|
library.
|
|
|
|
|
|
|
|
%package obsolete
|
|
License: BSD3c(or similar) ; GPLv2+ ; LGPLv2.1+
|
|
Summary: Obsolete Shared Libraries from the GNU C Library
|
|
Group: System/Libraries
|
|
Requires: glibc = %{version}
|
|
AutoReqProv: on
|
|
|
|
%description obsolete
|
|
This package provides some old libraries from the GNU C Library which
|
|
are no longer supported. Additional it provides a compatibility library
|
|
for old binaries linked against glibc 2.0.
|
|
|
|
Install this package if you need one of this libraries to get old
|
|
binaries working, but since this libraries are not supported and there
|
|
is no gurantee that they work for you, you should try to get newer
|
|
versions of your software.
|
|
|
|
|
|
|
|
%prep
|
|
%ifarch %arm armv5tel armv7l
|
|
# add glibc-ports for arm
|
|
# this is CURRENTLY BROKEN; ARM-interested contributors need to provide
|
|
# new tested glibc-ports source
|
|
%setup -n glibc-%{version} -q -a 2 -a 3 -a 4
|
|
%else
|
|
# any other leave out ports
|
|
%setup -n glibc-%{version} -q -a 3 -a 4
|
|
%endif
|
|
%patch0
|
|
# libNoVersion part is only active on ix86
|
|
%patch1
|
|
%patch2 -p1
|
|
%patch3
|
|
%patch4
|
|
%patch5
|
|
%patch7
|
|
%patch8
|
|
%patch9
|
|
%patch10
|
|
%patch11
|
|
%patch12
|
|
%patch14 -E
|
|
# We have s_sincos.c in patch14, remove duplicate
|
|
rm sysdeps/x86_64/fpu/s_sincos.S
|
|
%patch15
|
|
%patch16
|
|
%patch17
|
|
%patch18
|
|
%patch19
|
|
%patch20
|
|
%patch21
|
|
%patch22
|
|
# avoid changing nscd_stat.c mtime to avoid code generation
|
|
# differences on each rebuild
|
|
touch -r nscd/nscd_stat.c nscd/s-stamp
|
|
%patch23
|
|
%patch24
|
|
%patch25
|
|
touch -r nscd/s-stamp nscd/nscd_stat.c
|
|
rm nscd/s-stamp
|
|
%patch26
|
|
%patch27
|
|
%patch30
|
|
%patch31
|
|
%patch32
|
|
%patch33
|
|
%patch35
|
|
%patch36
|
|
%patch39
|
|
%patch40
|
|
%patch41
|
|
%patch42
|
|
%patch43
|
|
%patch44
|
|
%patch46
|
|
%patch47
|
|
%patch48 -p1
|
|
%patch54
|
|
%patch60 -p1
|
|
%patch61 -p1
|
|
%patch64
|
|
%patch65 -p1
|
|
%patch69 -p1
|
|
%ifarch %arm armv5tel armv7l
|
|
%patch500
|
|
%patch501
|
|
%patch502
|
|
%patch503
|
|
%endif
|
|
#
|
|
# Inconsistency detected by ld.so: dl-close.c: 719: _dl_close: Assertion `map->l_init_called' failed!
|
|
#
|
|
# Glibc 2.8 introduced the HP_TIMING element to the rtld_global_ro struct # definition.
|
|
# If the base is built without power4 the loader won't have this element in
|
|
# the struct whereas the power4/5/6/... libc will, so there will be a disconnect
|
|
# between the size of the rtld_global_ro struct between the two and dl_close
|
|
# ends up getting called incorrectly when it's actually attempting to call a
|
|
# resolver function. This is because the GLRO() macro simply attempts to
|
|
# compute an offset and gets the wrong one.
|
|
# Building the base glibc with --with-cpu=power4 solves this problem.
|
|
# But: ppc32 can not default to -mcpu=power4 because it would emit instructions
|
|
# which are not available on G3, G4 etc.
|
|
#
|
|
# We simply remove the power4 files, and build the base glibc for a generic powerpc cpu
|
|
# Additional cputuned libs can now be used on powerpc32
|
|
#
|
|
rm -fv sysdeps/powerpc/powerpc32/power4/hp-timing.c sysdeps/powerpc/powerpc32/power4/hp-timing.h
|
|
find . -name configure | xargs touch
|
|
|
|
#######################################################################
|
|
###
|
|
### BUILD
|
|
###
|
|
#######################################################################
|
|
|
|
%build
|
|
if [ -x /bin/uname.bin ]; then
|
|
/bin/uname.bin -a
|
|
else
|
|
uname -a
|
|
fi
|
|
uptime || :
|
|
ulimit -a
|
|
nice
|
|
# Adjust glibc version.h
|
|
echo "#define CONFHOST \"%{_target_cpu}-suse-linux\"" >> version.h
|
|
echo "#define CVSDATE \"`date -r ChangeLog +%Y%m%d`\"" >> version.h
|
|
#
|
|
# Default CFLAGS and Compiler
|
|
#
|
|
BuildFlags="$RPM_OPT_FLAGS -U_FORTIFY_SOURCE -fno-strict-aliasing"
|
|
BuildFlags="$(echo $BuildFlags | sed -e 's#-fstack-protector##' -e 's#-ffortify=[0-9]*##')"
|
|
BuildCC="gcc"
|
|
BuildCCplus="g++"
|
|
add_ons=",libidn"
|
|
PARALLEL="%{?_smp_mflags}"
|
|
#
|
|
#now overwrite for some architectures
|
|
#
|
|
%ifarch sparc64
|
|
BuildFlags="-O2 -mcpu=ultrasparc -mvis -fcall-used-g6"
|
|
BuildCC="gcc -m64"
|
|
BuildCCplus="$BuildCCplus -m64"
|
|
%endif
|
|
%ifarch sparc
|
|
BuildFlags="$BuildFlags -fcall-used-g6"
|
|
BuildCC="gcc -m32"
|
|
BuildCCplus="$BuildCCplus -m32"
|
|
%endif
|
|
%ifarch sparcv9
|
|
BuildFlags="$BuildFlags -mcpu=ultrasparc -fcall-used-g6"
|
|
BuildCC="gcc -m32"
|
|
BuildCCplus="$BuildCCplus -m32"
|
|
%endif
|
|
%ifarch alphaev6
|
|
BuildFlags="-mcpu=ev6"
|
|
%endif
|
|
%ifarch ppc ppc64
|
|
BuildFlags="$(echo $BuildFlags | sed 's#-mminimal-toc##')"
|
|
%endif
|
|
%ifarch ppc64
|
|
BuildCC="$BuildCC -m64"
|
|
BuildCCplus="$BuildCCplus -m64"
|
|
%endif
|
|
%ifarch hppa
|
|
BuildFlags="$BuildFlags -mpa-risc-1-1 -fstrict-aliasing"
|
|
%endif
|
|
%ifarch %ix86 x86_64
|
|
BuildFlags="$BuildFlags -mno-tls-direct-seg-refs"
|
|
%endif
|
|
# Add flags for all plattforms except AXP
|
|
%ifnarch alpha
|
|
BuildFlags="$BuildFlags -g"
|
|
%endif
|
|
%if %{disable_assert}
|
|
BuildFlags="$BuildFlags -DNDEBUG=1"
|
|
%endif
|
|
%ifarch %ix86
|
|
add_ons=$add_ons,noversion
|
|
%endif
|
|
%ifarch %arm armv5tel armv7l
|
|
add_ons=$add_ons,ports
|
|
BuildFlags="-march=armv5te -O2 -Wall"
|
|
# fails to build otherwise - need to recheck and fix
|
|
%define enable_stackguard_randomization 0
|
|
%endif
|
|
|
|
configure_and_build_glibc() {
|
|
local dirname="$1"; shift
|
|
local cflags="$1"; shift
|
|
local addons="$1"; shift
|
|
mkdir "cc-$dirname"
|
|
cd "cc-$dirname"
|
|
CFLAGS="$cflags" CC="$BuildCC" CXX="$BuildCCplus" ../configure \
|
|
--prefix=%{_prefix} \
|
|
--libexecdir=%{_libdir} --infodir=%{_infodir} \
|
|
--enable-add-ons=nptl$addons --without-cvs --enable-profile \
|
|
"$@" \
|
|
%if %{enable_stackguard_randomization}
|
|
--enable-stackguard-randomization \
|
|
%endif
|
|
%ifarch %arm armv5tel armv7l
|
|
--build=%{_target_cpu}-suse-linux-gnueabi \
|
|
%else
|
|
--build=%{_target_cpu}-suse-linux \
|
|
%endif
|
|
%ifarch ppc ppc64 %{ix86} x86_64
|
|
--enable-multi-arch \
|
|
%endif
|
|
--with-tls --with-__thread --enable-kernel=2.6.4
|
|
make $PARALLEL
|
|
cd ..
|
|
}
|
|
|
|
%if !%{optimize_power}
|
|
#
|
|
# Build base glibc
|
|
#
|
|
configure_and_build_glibc base "$BuildFlags" "$add_ons"
|
|
%else
|
|
#
|
|
# Build POWER-optimized glibc
|
|
#
|
|
# First, base build:
|
|
pBuildFlags="$BuildFlags -mcpu=%{powerpc_optimize_base} -mtune=%{powerpc_optimize_tune}"
|
|
%if %{powerpc_optimize_base} != "power3"
|
|
configure_and_build_glibc base "$pBuildFlags" "$add_ons" --with-cpu=%{powerpc_optimize_base}
|
|
%else
|
|
# Use no default CPU
|
|
configure_and_build_glibc base "$pBuildFlags" "$add_ons"
|
|
%endif
|
|
# Then other power variants:
|
|
for pcpu in \
|
|
%if %{powerpc_optimize_cpu_power4}
|
|
power4 \
|
|
%endif
|
|
%if %{powerpc_optimize_cpu_power6}
|
|
power6 \
|
|
%endif
|
|
%if %{powerpc_optimize_cpu_power7}
|
|
power7 \
|
|
%endif
|
|
; do
|
|
configure_and_build_glibc $pcpu "$BuildFlags -mcpu=$pcpu" "$add_ons" \
|
|
--with-cpu=$pcpu --disable-runbinaries
|
|
done
|
|
# Eventually, special Cell variant:
|
|
%if %{powerpc_optimize_cpu_cell}
|
|
configure_and_build_glibc ppc-cell-be "$BuildFlags -mcpu=cell" "$add_ons" --disable-runbinaries
|
|
%endif
|
|
%endif # optimize_power
|
|
|
|
#
|
|
# Build html documentation
|
|
#
|
|
make -C cc-base html
|
|
|
|
#
|
|
# Build glibc_post_upgrade binary
|
|
#
|
|
$BuildCC -static -Os -g $RPM_SOURCE_DIR/glibc_post_upgrade.c -o glibc_post_upgrade \
|
|
-Lcc-base -Bcc-base/csu \
|
|
'-DREMOVE_TLS_DIRS' '-DREMOVE_PPC_OPTIMIZE_POWER5' \
|
|
%ifarch ppc ppc64
|
|
%if !%{powerpc_optimize_cpu_power4}
|
|
'-DREMOVE_PPC_OPTIMIZE_POWER4' \
|
|
%endif
|
|
%if !%{powerpc_optimize_cpu_power6}
|
|
'-DREMOVE_PPC_OPTIMIZE_POWER6' \
|
|
%endif
|
|
%if !%{powerpc_optimize_cpu_power7}
|
|
'-DREMOVE_PPC_OPTIMIZE_POWER7' \
|
|
%endif
|
|
%if !%{powerpc_optimize_cpu_cell}
|
|
'-DREMOVE_PPC_OPTIMIZE_CELL' \
|
|
%endif
|
|
%endif
|
|
'-DLIBDIR="/%{_lib}"' '-DGCONV_MODULES_DIR="%{_prefix}/%{_lib}/gconv"'
|
|
|
|
#######################################################################
|
|
###
|
|
### CHECK
|
|
###
|
|
#######################################################################
|
|
|
|
%check
|
|
%if %{run_testsuite}
|
|
# Increase timeout
|
|
export TIMEOUTFACTOR=16
|
|
%ifarch alpha %ix86 ppc ppc64 ia64 s390 s390x x86_64
|
|
# ix86: tst-cputimer? fails
|
|
# ia64: tst-timer4 fails
|
|
# ppc64: tst-pselect, ftwtest fails
|
|
# s390,s390x: tst-timer* fails
|
|
make -C cc-base -k check || echo make check failed
|
|
%else
|
|
make -C cc-base check
|
|
%endif
|
|
%endif
|
|
make -C cc-base check-abi || echo check-abi failed
|
|
|
|
#######################################################################
|
|
###
|
|
### INSTALL
|
|
###
|
|
#######################################################################
|
|
|
|
%install
|
|
# We don't want to strip the .symtab from our libraries in find-debuginfo.sh,
|
|
# certainly not from libpthread.so.* because it is used by libthread_db to find
|
|
# some non-exported symbols in order to detect if threading support
|
|
# should be enabled. These symbols are _not_ exported, and we can't easily
|
|
# export them retroactively without changing the ABI. So we have to
|
|
# continue to "export" them via .symtab, instead of .dynsym :-(
|
|
# But we also want to keep .symtab and .strtab of other libraries since some
|
|
# debugging tools currently require these sections directly inside the main
|
|
# files - specifically valgrind and PurifyPlus.
|
|
export STRIP_KEEP_SYMTAB=*.so*
|
|
|
|
# Make sure we will create the gconv-modules.cache
|
|
mkdir -p $RPM_BUILD_ROOT%{_libdir}/gconv
|
|
touch $RPM_BUILD_ROOT%{_libdir}/gconv/gconv-modules.cache
|
|
|
|
# Install base glibc
|
|
# Do not install in parallel, timezone Makefile will fail
|
|
make install_root=$RPM_BUILD_ROOT install -C cc-base
|
|
|
|
# Install power-optimized glibc
|
|
%if %{optimize_power}
|
|
# run ldconfig to create the library symlinks
|
|
# do not use the new ldconfig from the build directory because
|
|
# it may contain instructions not suitable for the cpu on the builhost
|
|
my_ldconfig=/sbin/ldconfig
|
|
for pcpu in \
|
|
%if %{powerpc_optimize_cpu_power4}
|
|
power4 \
|
|
%endif
|
|
%if %{powerpc_optimize_cpu_power6}
|
|
power6 \
|
|
%endif
|
|
%if %{powerpc_optimize_cpu_power7}
|
|
power7 \
|
|
%endif
|
|
%if %{powerpc_optimize_cpu_cell}
|
|
ppc-cell-be \
|
|
%endif
|
|
; do
|
|
make install_root=${RPM_BUILD_ROOT}/$pcpu install -C cc-$pcpu
|
|
mkdir -p $RPM_BUILD_ROOT/%{_lib}/$pcpu
|
|
for i in libc-%{version} libm-%{version} libpthread-%{version} libthread_db-1.0 librt-%{version}; do
|
|
mv $RPM_BUILD_ROOT/$pcpu/%{_lib}/$i.so $RPM_BUILD_ROOT/%{_lib}/$pcpu
|
|
done
|
|
$my_ldconfig -n $RPM_BUILD_ROOT/%{_lib}/$pcpu/
|
|
rm -rf $RPM_BUILD_ROOT/$pcpu
|
|
done
|
|
%if %{powerpc_optimize_cpu_power6}
|
|
# power6 is compatible with power6x
|
|
# doing a symlink doesnt work, ldconfig follows them and accepts only the first real dir
|
|
if test -d $RPM_BUILD_ROOT/%{_lib}/power6; then
|
|
mkdir -p $RPM_BUILD_ROOT/%{_lib}/power6x
|
|
for i in $RPM_BUILD_ROOT/%{_lib}/power6/*.so; do
|
|
b=`basename $i`
|
|
ln -vs ../power6/$b $RPM_BUILD_ROOT/%{_lib}/power6x/$b
|
|
done
|
|
$my_ldconfig -n $RPM_BUILD_ROOT/%{_lib}/power6x/
|
|
fi
|
|
%endif
|
|
%endif # optimize_power
|
|
|
|
# Install locales
|
|
%if %{build_locales}
|
|
# Do not install locales in parallel!
|
|
cd cc-base
|
|
make install_root=$RPM_BUILD_ROOT install-locales -C ../localedata objdir=`pwd`
|
|
cd ..
|
|
%endif
|
|
# Create file list for glibc-locale package
|
|
%{find_lang} libc
|
|
|
|
# Prepare obsolete/, used only on some architectures:
|
|
export RPM_BUILD_ROOT
|
|
mkdir -p $RPM_BUILD_ROOT/%{_lib}/obsolete
|
|
|
|
# NPTL <bits/stdio-lock.h> is not usable outside of glibc, so include
|
|
# the generic one (RH#162634)
|
|
cp -av bits/stdio-lock.h $RPM_BUILD_ROOT%{_prefix}/include/bits/stdio-lock.h
|
|
|
|
%ifarch s390x
|
|
# s390x is different ...
|
|
mkdir $RPM_BUILD_ROOT/lib
|
|
ln -sf ../%{_lib}/ld-%{version}.so $RPM_BUILD_ROOT/lib/ld64.so.1
|
|
%endif
|
|
|
|
# Miscelanna:
|
|
|
|
install -m 0700 glibc_post_upgrade $RPM_BUILD_ROOT%{_sbindir}
|
|
|
|
install -m 644 $RPM_SOURCE_DIR/bindresvport.blacklist $RPM_BUILD_ROOT/etc
|
|
install -m 644 $RPM_SOURCE_DIR/nsswitch.conf $RPM_BUILD_ROOT/etc
|
|
install -m 644 posix/gai.conf $RPM_BUILD_ROOT/etc
|
|
|
|
mkdir -p $RPM_BUILD_ROOT/etc/default
|
|
install -m 644 nis/nss $RPM_BUILD_ROOT/etc/default/
|
|
|
|
mkdir -p $RPM_BUILD_ROOT/usr/include/resolv
|
|
install -m 0644 resolv/mapv4v6addr.h $RPM_BUILD_ROOT/usr/include/resolv/
|
|
install -m 0644 resolv/mapv4v6hostent.h $RPM_BUILD_ROOT/usr/include/resolv/
|
|
|
|
mkdir -p $RPM_BUILD_ROOT/usr/share/doc/glibc
|
|
cp -p manual/libc/*.html $RPM_BUILD_ROOT/usr/share/doc/glibc
|
|
|
|
cd manpages; make install_root=$RPM_BUILD_ROOT install; cd ..
|
|
|
|
# nscd tools:
|
|
|
|
cp nscd/nscd.conf $RPM_BUILD_ROOT/etc
|
|
mkdir -p $RPM_BUILD_ROOT/etc/apparmor.d
|
|
cp $RPM_SOURCE_DIR/usr.sbin.nscd $RPM_BUILD_ROOT/etc/apparmor.d
|
|
mkdir -p $RPM_BUILD_ROOT/etc/init.d
|
|
install -m 755 $RPM_SOURCE_DIR/nscd.init $RPM_BUILD_ROOT/etc/init.d/nscd
|
|
ln -sf /etc/init.d/nscd $RPM_BUILD_ROOT/usr/sbin/rcnscd
|
|
mkdir -p $RPM_BUILD_ROOT/var/run/nscd
|
|
touch $RPM_BUILD_ROOT/var/run/nscd/{passwd,group,hosts}
|
|
touch $RPM_BUILD_ROOT/var/run/nscd/{socket,nscd.pid}
|
|
|
|
#
|
|
# Create ld.so.conf
|
|
#
|
|
cat > $RPM_BUILD_ROOT/etc/ld.so.conf <<EOF
|
|
%ifarch s390x sparc64 x86_64 ppc64 ppc
|
|
/usr/X11R6/lib64/Xaw3d
|
|
/usr/X11R6/lib64
|
|
/usr/lib64/Xaw3d
|
|
%endif
|
|
/usr/X11R6/lib/Xaw3d
|
|
/usr/X11R6/lib
|
|
/usr/lib/Xaw3d
|
|
%ifarch %x86
|
|
/usr/i586-suse-linux/lib
|
|
%else
|
|
%ifarch ppc ppc64
|
|
/usr/powerpc-suse-linux/lib
|
|
/usr/powerpc64-suse-linux/lib
|
|
%else
|
|
/usr/$RPM_ARCH-suse-linux/lib
|
|
%endif
|
|
%endif
|
|
/usr/local/lib
|
|
/opt/kde3/lib
|
|
%ifarch s390x sparc64 x86_64 ppc64 ppc
|
|
/lib64
|
|
/lib
|
|
/usr/lib64
|
|
/usr/lib
|
|
/usr/local/lib64
|
|
/opt/kde3/lib64
|
|
%endif
|
|
include /etc/ld.so.conf.d/*.conf
|
|
EOF
|
|
# Add ldconfig cache directory for directory ownership
|
|
mkdir -p $RPM_BUILD_ROOT/var/cache/ldconfig
|
|
# Empty the ld.so.cache:
|
|
rm -f $RPM_BUILD_ROOT/etc/ld.so.cache
|
|
touch $RPM_BUILD_ROOT/etc/ld.so.cache
|
|
|
|
# libNoVersion belongs only to glibc-obsolete:
|
|
%ifarch %ix86
|
|
rm -f $RPM_BUILD_ROOT%{_libdir}/libNoVersion*
|
|
mkdir -p $RPM_BUILD_ROOT/%{_lib}/obsolete/noversion
|
|
mv -v $RPM_BUILD_ROOT/%{_lib}/libNoVersion* $RPM_BUILD_ROOT/%{_lib}/obsolete/noversion/
|
|
%endif
|
|
|
|
# Don't look at ldd! We don't wish a /bin/sh requires
|
|
chmod 644 $RPM_BUILD_ROOT/usr/bin/ldd
|
|
|
|
# Remove timezone data, now coming in standalone package:
|
|
for i in sbin/sln usr/bin/tzselect usr/sbin/zic usr/sbin/zdump etc/localtime; do
|
|
rm -f $RPM_BUILD_ROOT/$i
|
|
done
|
|
rm -rf $RPM_BUILD_ROOT/usr/share/zoneinfo
|
|
|
|
# Remove the buildflags tracking section and the build-id
|
|
for o in $RPM_BUILD_ROOT/%{_libdir}/crt[1in].o $RPM_BUILD_ROOT/%{_libdir}/lib*_nonshared.a; do
|
|
objcopy -R ".comment.SUSE.OPTs" -R ".note.gnu.build-id" $o
|
|
done
|
|
|
|
#######################################################################
|
|
###
|
|
### ...
|
|
###
|
|
#######################################################################
|
|
|
|
%clean
|
|
rm -rf $RPM_BUILD_ROOT
|
|
|
|
%post -p %{_sbindir}/glibc_post_upgrade
|
|
|
|
%postun -p /sbin/ldconfig
|
|
|
|
%post locale
|
|
for l in /usr/share/locale/locale.alias %{_libdir}/gconv/gconv-modules; do
|
|
[ -d "$l.d" ] || continue
|
|
echo "###X# The following is autogenerated from extra files in the .d directory:" >>"$l"
|
|
cat "$l.d"/* >>"$l"
|
|
done
|
|
|
|
%post info
|
|
%install_info --info-dir=%{_infodir} %{_infodir}/libc.info.gz
|
|
|
|
%postun info
|
|
%install_info_delete --info-dir=%{_infodir} %{_infodir}/libc.info.gz
|
|
|
|
%preun -n nscd
|
|
%stop_on_removal nscd
|
|
|
|
%post -n nscd
|
|
%{insserv_force_if_yast nscd}
|
|
|
|
%postun -n nscd
|
|
%restart_on_update nscd
|
|
%insserv_cleanup
|
|
exit 0
|
|
|
|
#######################################################################
|
|
###
|
|
### FILES
|
|
###
|
|
#######################################################################
|
|
|
|
# glibc
|
|
|
|
%files
|
|
%defattr(-,root,root)
|
|
%doc LICENSES
|
|
%config(noreplace) /etc/bindresvport.blacklist
|
|
%config /etc/ld.so.conf
|
|
%attr(0644,root,root) %verify(not md5 size mtime) %ghost %config(missingok,noreplace) /etc/ld.so.cache
|
|
%config(noreplace) /etc/rpc
|
|
%verify(not md5 size mtime) %config(noreplace) /etc/nsswitch.conf
|
|
%verify(not md5 size mtime) %config(noreplace) /etc/gai.conf
|
|
%config(noreplace) /etc/default/nss
|
|
%doc %{_mandir}/man1/getconf.1.gz
|
|
%doc %{_mandir}/man1/getent.1.gz
|
|
%doc %{_mandir}/man1/localedef.1.gz
|
|
%doc %{_mandir}/man5/*
|
|
%doc %{_mandir}/man8/rpcinfo.8.gz
|
|
/%{_lib}/ld-%{version}.so
|
|
%ifarch ppc s390 mips hppa
|
|
/%{_lib}/ld.so.1
|
|
%else
|
|
%ifarch ia64
|
|
/%{_lib}/ld-linux-ia64.so.2
|
|
%else
|
|
%ifarch s390x ppc64
|
|
/%{_lib}/ld64.so.1
|
|
%ifarch s390x
|
|
/lib/ld64.so.1
|
|
%endif
|
|
%else
|
|
%ifarch x86_64
|
|
/%{_lib}/ld-linux-x86-64.so.2
|
|
%else
|
|
%ifarch %arm armv5tel armv7l
|
|
/%{_lib}/ld-linux.so.3
|
|
%else
|
|
/%{_lib}/ld-linux.so.2
|
|
%endif
|
|
%endif
|
|
%endif
|
|
%endif
|
|
%endif
|
|
/%{_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}/libcidn-%{version}.so
|
|
/%{_lib}/libcidn.so.1
|
|
/%{_lib}/libcrypt-%{version}.so
|
|
/%{_lib}/libcrypt.so.1
|
|
/%{_lib}/libdl-%{version}.so
|
|
/%{_lib}/libdl.so.2*
|
|
/%{_lib}/libm-%{version}.so
|
|
/%{_lib}/libm.so.6*
|
|
/%{_lib}/libmemusage.so
|
|
/%{_lib}/libnsl-%{version}.so
|
|
/%{_lib}/libnsl.so.1
|
|
/%{_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}/libnss_hesiod-%{version}.so
|
|
/%{_lib}/libnss_hesiod.so.2
|
|
/%{_lib}/libnss_nis-%{version}.so
|
|
/%{_lib}/libnss_nis.so.2
|
|
/%{_lib}/libnss_nisplus-%{version}.so
|
|
/%{_lib}/libnss_nisplus.so.2
|
|
/%{_lib}/libpcprofile.so
|
|
/%{_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
|
|
%if %{optimize_power}
|
|
%define optimized_libs() \
|
|
%dir %attr(0755,root,root) /%{_lib}/%1\
|
|
/%{_lib}/%1/libc-%{version}.so\
|
|
/%{_lib}/%1/libc.so.6*\
|
|
/%{_lib}/%1/libm-%{version}.so\
|
|
/%{_lib}/%1/libm.so.6*\
|
|
/%{_lib}/%1/libpthread-%{version}.so\
|
|
/%{_lib}/%1/libpthread.so.0\
|
|
/%{_lib}/%1/librt-%{version}.so\
|
|
/%{_lib}/%1/librt.so.1\
|
|
/%{_lib}/%1/libthread_db-1.0.so\
|
|
/%{_lib}/%1/libthread_db.so.1
|
|
%if %{powerpc_optimize_cpu_power4}
|
|
%{optimized_libs power4}
|
|
%endif
|
|
%if %{powerpc_optimize_cpu_power6}
|
|
%{optimized_libs power6}
|
|
%{optimized_libs power6x}
|
|
%endif
|
|
%if %{powerpc_optimize_cpu_power7}
|
|
%{optimized_libs power7}
|
|
%endif
|
|
%if %{powerpc_optimize_cpu_cell}
|
|
%{optimized_libs ppc-cell-be}
|
|
%endif
|
|
%endif # optimize_power
|
|
%dir %attr(0700,root,root) /var/cache/ldconfig
|
|
/sbin/ldconfig
|
|
/usr/bin/gencat
|
|
/usr/bin/getconf
|
|
/usr/bin/getent
|
|
/usr/bin/iconv
|
|
%attr(755,root,root) /usr/bin/ldd
|
|
%ifarch %ix86 sparc sparcv9
|
|
/usr/bin/lddlibc4
|
|
%endif
|
|
/usr/bin/locale
|
|
/usr/bin/localedef
|
|
%attr(4755,root,root) %{_libdir}/pt_chown
|
|
%dir %attr(0755,root,root) %{_libdir}/getconf
|
|
%{_libdir}/getconf/*
|
|
%{_sbindir}/glibc_post_upgrade
|
|
%{_sbindir}/rpcinfo
|
|
/usr/sbin/iconvconfig
|
|
|
|
%files obsolete
|
|
%defattr (755,root,root,755)
|
|
%dir /%{_lib}/obsolete/
|
|
%ifarch %ix86
|
|
%dir /%{_lib}/obsolete/noversion
|
|
/%{_lib}/obsolete/noversion/libNoVersion-%{version}.so
|
|
/%{_lib}/obsolete/noversion/libNoVersion.so.1
|
|
%endif
|
|
|
|
%files locale -f libc.lang
|
|
%defattr(-,root,root)
|
|
/usr/share/locale/locale.alias
|
|
%if %{build_locales}
|
|
/usr/lib/locale
|
|
%endif
|
|
%{_libdir}/gconv
|
|
|
|
%files devel
|
|
%defattr(-,root,root)
|
|
%doc COPYING COPYING.LIB FAQ INSTALL NEWS NOTES README BUGS CONFORMANCE $RPM_SOURCE_DIR/ctype_b.c
|
|
%doc %{_mandir}/man1/catchsegv.1.gz
|
|
%doc %{_mandir}/man1/rpcgen.1.gz
|
|
%doc %{_mandir}/man1/sprof.1.gz
|
|
%doc %{_mandir}/man3/*
|
|
/usr/bin/catchsegv
|
|
/usr/bin/mtrace
|
|
/usr/bin/pcprofiledump
|
|
/usr/bin/rpcgen
|
|
/usr/bin/sprof
|
|
/usr/bin/xtrace
|
|
%{_prefix}/include/*
|
|
%{_libdir}/*.o
|
|
%{_libdir}/*.so
|
|
%{_libdir}/libBrokenLocale.a
|
|
%{_libdir}/libanl.a
|
|
%{_libdir}/libbsd-compat.a
|
|
%{_libdir}/libc.a
|
|
%{_libdir}/libc_nonshared.a
|
|
%{_libdir}/libcrypt.a
|
|
%{_libdir}/libdl.a
|
|
%{_libdir}/libg.a
|
|
%{_libdir}/libieee.a
|
|
%ifarch ppc ppc64 s390 s390x sparc sparcv8 sparcv9 sparcv9v
|
|
# This is not built on sparc64.
|
|
%{_libdir}/libnldbl_nonshared.a
|
|
%endif
|
|
%{_libdir}/libm.a
|
|
%{_libdir}/libmcheck.a
|
|
%{_libdir}/libnsl.a
|
|
%{_libdir}/libpthread.a
|
|
%{_libdir}/libpthread_nonshared.a
|
|
%{_libdir}/libresolv.a
|
|
%{_libdir}/librpcsvc.a
|
|
%{_libdir}/librt.a
|
|
%{_libdir}/libutil.a
|
|
|
|
%files info
|
|
%defattr(-,root,root)
|
|
%doc %{_infodir}/libc.info.gz
|
|
%doc %{_infodir}/libc.info-?.gz
|
|
%doc %{_infodir}/libc.info-??.gz
|
|
|
|
%files html
|
|
%defattr(-,root,root)
|
|
%doc %{_prefix}/share/doc/glibc
|
|
|
|
%files i18ndata
|
|
%defattr(-,root,root)
|
|
%{_prefix}/share/i18n
|
|
|
|
%files -n nscd
|
|
%defattr(-,root,root)
|
|
%config(noreplace) /etc/nscd.conf
|
|
%dir /etc/apparmor.d
|
|
%config /etc/apparmor.d/usr.sbin.nscd
|
|
%config /etc/init.d/nscd
|
|
/usr/sbin/nscd
|
|
/usr/sbin/rcnscd
|
|
%dir %attr(0755,root,root) %ghost /var/run/nscd
|
|
%attr(0644,root,root) %verify(not md5 size mtime) %ghost %config(missingok,noreplace) /var/run/nscd/nscd.pid
|
|
%attr(0666,root,root) %verify(not md5 size mtime) %ghost %config(missingok,noreplace) /var/run/nscd/socket
|
|
%attr(0600,root,root) %verify(not md5 size mtime) %ghost %config(missingok,noreplace) /var/run/nscd/passwd
|
|
%attr(0600,root,root) %verify(not md5 size mtime) %ghost %config(missingok,noreplace) /var/run/nscd/group
|
|
%attr(0600,root,root) %verify(not md5 size mtime) %ghost %config(missingok,noreplace) /var/run/nscd/hosts
|
|
|
|
%files profile
|
|
%defattr(-,root,root)
|
|
%{_libdir}/libc_p.a
|
|
%{_libdir}/libBrokenLocale_p.a
|
|
%{_libdir}/libanl_p.a
|
|
%{_libdir}/libm_p.a
|
|
%{_libdir}/libcrypt_p.a
|
|
%{_libdir}/libpthread_p.a
|
|
%{_libdir}/libresolv_p.a
|
|
%{_libdir}/libnsl_p.a
|
|
%{_libdir}/librt_p.a
|
|
%{_libdir}/librpcsvc_p.a
|
|
%{_libdir}/libutil_p.a
|
|
%{_libdir}/libdl_p.a
|
|
|
|
%changelog
|