Add extensive comments.
This commit is contained in:
parent
7e232bd35c
commit
9abcefa0aa
338
glibc.spec
338
glibc.spec
@ -1,8 +1,19 @@
|
|||||||
%define glibcsrcdir glibc-2.17-906-g8ab0740
|
%define glibcsrcdir glibc-2.17-906-g8ab0740
|
||||||
%define glibcversion 2.17.90
|
%define glibcversion 2.17.90
|
||||||
### glibc.spec.in follows:
|
##############################################################################
|
||||||
|
# If run_glibc_tests is zero then tests are not run for the build.
|
||||||
|
# You must always set run_glibc_tests to one for production builds.
|
||||||
%define run_glibc_tests 1
|
%define run_glibc_tests 1
|
||||||
|
##############################################################################
|
||||||
|
# Auxiliary arches are those arches that can be built in addition
|
||||||
|
# to the core supported arches. You either install an auxarch or
|
||||||
|
# you install the base arch, not both. You would do this in order
|
||||||
|
# to provide a more optimized version of the package for your arch.
|
||||||
%define auxarches athlon alphaev6
|
%define auxarches athlon alphaev6
|
||||||
|
##############################################################################
|
||||||
|
# We build a special package for Xen that includes TLS support with
|
||||||
|
# no negative segment offsets for use with Xen guests. This is
|
||||||
|
# purely an optimization for increased performance on those arches.
|
||||||
%define xenarches i686 athlon
|
%define xenarches i686 athlon
|
||||||
%ifarch %{xenarches}
|
%ifarch %{xenarches}
|
||||||
%define buildxen 1
|
%define buildxen 1
|
||||||
@ -11,19 +22,50 @@
|
|||||||
%define buildxen 0
|
%define buildxen 0
|
||||||
%define xenpackage 0
|
%define xenpackage 0
|
||||||
%endif
|
%endif
|
||||||
|
##############################################################################
|
||||||
|
# For Power we actually support alternate runtimes in the same base package.
|
||||||
|
# If we build for Power or Power64 we additionally build a power6 runtime that
|
||||||
|
# is enabled by AT_HWCAPS selection and an alternate runtime directory.
|
||||||
%ifarch ppc ppc64
|
%ifarch ppc ppc64
|
||||||
%define buildpower6 1
|
%define buildpower6 1
|
||||||
%else
|
%else
|
||||||
%define buildpower6 0
|
%define buildpower6 0
|
||||||
%endif
|
%endif
|
||||||
|
##############################################################################
|
||||||
|
# We build librtkaio for all rtkaioarches. The library is installed into
|
||||||
|
# a distinct subdirectory in the lib dir. This define enables the rtkaio
|
||||||
|
# add-on during the build. Upstream does not have rtkaio and it is provided
|
||||||
|
# strictly as part of our builds.
|
||||||
%define rtkaioarches %{ix86} x86_64 ppc %{power64} s390 s390x
|
%define rtkaioarches %{ix86} x86_64 ppc %{power64} s390 s390x
|
||||||
|
##############################################################################
|
||||||
|
# Any architecture/kernel combination that supports running 32-bit and 64-bit
|
||||||
|
# code in userspace is considered a biarch arch.
|
||||||
%define biarcharches %{ix86} x86_64 ppc %{power64} s390 s390x
|
%define biarcharches %{ix86} x86_64 ppc %{power64} s390 s390x
|
||||||
|
##############################################################################
|
||||||
|
# If the debug information is split into two packages, the core debuginfo
|
||||||
|
# pacakge and the common debuginfo package then the arch should be listed
|
||||||
|
# here. If the arch is not listed here then a single core debuginfo package
|
||||||
|
# will be created for the architecture.
|
||||||
%define debuginfocommonarches %{biarcharches} alpha alphaev6
|
%define debuginfocommonarches %{biarcharches} alpha alphaev6
|
||||||
|
##############################################################################
|
||||||
|
# If the architecture has multiarch support in glibc then it should be listed
|
||||||
|
# here to enable support in the build. Multiarch support is a single library
|
||||||
|
# with implementations of certain functions for multiple architectures. The
|
||||||
|
# most optimal function is selected at runtime based on the hardware that is
|
||||||
|
# detected by glibc. The underlying support for function selection and
|
||||||
|
# execution is provided by STT_GNU_IFUNC.
|
||||||
%define multiarcharches ppc %{power64} %{ix86} x86_64 %{sparc}
|
%define multiarcharches ppc %{power64} %{ix86} x86_64 %{sparc}
|
||||||
|
##############################################################################
|
||||||
|
# If the architecture has SDT probe point support then we build glibc with
|
||||||
|
# --enable-systemtap and include all SDT probe points in the library. It is
|
||||||
|
# the eventual goal that all supported arches should be on this list.
|
||||||
%define systemtaparches %{ix86} x86_64
|
%define systemtaparches %{ix86} x86_64
|
||||||
|
##############################################################################
|
||||||
# Add -s for a less verbose build output.
|
# Add -s for a less verbose build output.
|
||||||
%define silentrules PARALLELMFLAGS=
|
%define silentrules PARALLELMFLAGS=
|
||||||
|
##############################################################################
|
||||||
|
# %%package glibc - The GNU C Library (glibc) core package.
|
||||||
|
##############################################################################
|
||||||
Summary: The GNU libc libraries
|
Summary: The GNU libc libraries
|
||||||
Name: glibc
|
Name: glibc
|
||||||
Version: %{glibcversion}
|
Version: %{glibcversion}
|
||||||
@ -36,9 +78,22 @@ Release: 5%{?dist}
|
|||||||
License: LGPLv2+ and LGPLv2+ with exceptions and GPLv2+
|
License: LGPLv2+ and LGPLv2+ with exceptions and GPLv2+
|
||||||
Group: System Environment/Libraries
|
Group: System Environment/Libraries
|
||||||
URL: http://www.gnu.org/software/glibc/
|
URL: http://www.gnu.org/software/glibc/
|
||||||
|
# We do not use usptream source tarballs as the start place for our package.
|
||||||
|
# We should use upstream source tarballs for official releases though and
|
||||||
|
# it will look like this:
|
||||||
|
# Source0: http://ftp.gnu.org/gnu/glibc/%{glibcsrcdir}.tar.gz
|
||||||
|
# Source1: %{glibcsrcdir}-releng.tar.gz
|
||||||
|
# TODO:
|
||||||
|
# The Source1 URL will never reference an upstream URL. In fact the plan
|
||||||
|
# should be to merge the entire release engineering tarball into upstream
|
||||||
|
# instead of keeping it around as a large dump of files. Distro specific
|
||||||
|
# changes should then be a very very small patch set.
|
||||||
Source0: %{?glibc_release_url}%{glibcsrcdir}.tar.gz
|
Source0: %{?glibc_release_url}%{glibcsrcdir}.tar.gz
|
||||||
Source1: %{glibcsrcdir}-releng.tar.gz
|
Source1: %{glibcsrcdir}-releng.tar.gz
|
||||||
|
|
||||||
|
##############################################################################
|
||||||
|
# Start of glibc patches
|
||||||
|
##############################################################################
|
||||||
# 0000-0999 for patches which are unlikely to ever go upstream or which
|
# 0000-0999 for patches which are unlikely to ever go upstream or which
|
||||||
# have not been analyzed to see if they ought to go upstream yet.
|
# have not been analyzed to see if they ought to go upstream yet.
|
||||||
#
|
#
|
||||||
@ -139,11 +194,18 @@ Patch2026: %{name}-rh841787.patch
|
|||||||
|
|
||||||
# Upstream BZ 14185
|
# Upstream BZ 14185
|
||||||
Patch2027: %{name}-rh819430.patch
|
Patch2027: %{name}-rh819430.patch
|
||||||
|
##############################################################################
|
||||||
|
# End of glibc patches.
|
||||||
|
##############################################################################
|
||||||
|
|
||||||
|
##############################################################################
|
||||||
|
# Continued list of core "glibc" package information:
|
||||||
|
##############################################################################
|
||||||
Buildroot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
|
Buildroot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
|
||||||
Obsoletes: glibc-profile < 2.4
|
Obsoletes: glibc-profile < 2.4
|
||||||
Obsoletes: nss_db
|
Obsoletes: nss_db
|
||||||
Provides: ldconfig
|
Provides: ldconfig
|
||||||
|
|
||||||
# The dynamic linker supports DT_GNU_HASH
|
# The dynamic linker supports DT_GNU_HASH
|
||||||
Provides: rtld(GNU_HASH)
|
Provides: rtld(GNU_HASH)
|
||||||
|
|
||||||
@ -155,8 +217,10 @@ Provides: ld-linux.so.3(GLIBC_2.4)
|
|||||||
%endif
|
%endif
|
||||||
|
|
||||||
Requires: glibc-common = %{version}-%{release}
|
Requires: glibc-common = %{version}-%{release}
|
||||||
|
|
||||||
# Require libgcc in case some program calls pthread_cancel in its %%post
|
# Require libgcc in case some program calls pthread_cancel in its %%post
|
||||||
Requires(pre): basesystem, libgcc
|
Requires(pre): basesystem, libgcc
|
||||||
|
|
||||||
# This is for building auxiliary programs like memusage, nscd
|
# This is for building auxiliary programs like memusage, nscd
|
||||||
# For initial glibc bootstraps it can be commented out
|
# For initial glibc bootstraps it can be commented out
|
||||||
BuildRequires: gd-devel libpng-devel zlib-devel texinfo, libselinux-devel >= 1.33.4-3
|
BuildRequires: gd-devel libpng-devel zlib-devel texinfo, libselinux-devel >= 1.33.4-3
|
||||||
@ -165,6 +229,7 @@ BuildRequires: /bin/ps, /bin/kill, /bin/awk
|
|||||||
%ifarch %{systemtaparches}
|
%ifarch %{systemtaparches}
|
||||||
BuildRequires: systemtap-sdt-devel
|
BuildRequires: systemtap-sdt-devel
|
||||||
%endif
|
%endif
|
||||||
|
|
||||||
# This is to ensure that __frame_state_for is exported by glibc
|
# This is to ensure that __frame_state_for is exported by glibc
|
||||||
# will be compatible with egcs 1.x.y
|
# will be compatible with egcs 1.x.y
|
||||||
BuildRequires: gcc >= 3.2
|
BuildRequires: gcc >= 3.2
|
||||||
@ -177,6 +242,7 @@ Conflicts: kernel < %{enablekernel}
|
|||||||
%ifarch %{power64}
|
%ifarch %{power64}
|
||||||
%define target ppc64-redhat-linux
|
%define target ppc64-redhat-linux
|
||||||
%endif
|
%endif
|
||||||
|
|
||||||
%ifarch %{multiarcharches}
|
%ifarch %{multiarcharches}
|
||||||
# Need STT_IFUNC support
|
# Need STT_IFUNC support
|
||||||
%ifarch ppc %{power64}
|
%ifarch ppc %{power64}
|
||||||
@ -193,6 +259,7 @@ Conflicts: prelink < 0.4.2
|
|||||||
# Need --hash-style=* support
|
# Need --hash-style=* support
|
||||||
BuildRequires: binutils >= 2.17.50.0.2-5
|
BuildRequires: binutils >= 2.17.50.0.2-5
|
||||||
%endif
|
%endif
|
||||||
|
|
||||||
BuildRequires: gcc >= 3.2.1-5
|
BuildRequires: gcc >= 3.2.1-5
|
||||||
%ifarch ppc s390 s390x
|
%ifarch ppc s390 s390x
|
||||||
BuildRequires: gcc >= 4.1.0-0.17
|
BuildRequires: gcc >= 4.1.0-0.17
|
||||||
@ -201,6 +268,9 @@ BuildRequires: gcc >= 4.1.0-0.17
|
|||||||
BuildRequires: elfutils >= 0.72
|
BuildRequires: elfutils >= 0.72
|
||||||
BuildRequires: rpm >= 4.2-0.56
|
BuildRequires: rpm >= 4.2-0.56
|
||||||
%endif
|
%endif
|
||||||
|
|
||||||
|
# Filter out all GLIBC_PRIVATE symbols since they are internal to
|
||||||
|
# the package and should be examined by any other tool.
|
||||||
%global __filter_GLIBC_PRIVATE 1
|
%global __filter_GLIBC_PRIVATE 1
|
||||||
|
|
||||||
%description
|
%description
|
||||||
@ -212,6 +282,9 @@ contains the most important sets of shared libraries: the standard C
|
|||||||
library and the standard math library. Without these two libraries, a
|
library and the standard math library. Without these two libraries, a
|
||||||
Linux system will not function.
|
Linux system will not function.
|
||||||
|
|
||||||
|
##############################################################################
|
||||||
|
# glibc "xen" sub-package
|
||||||
|
##############################################################################
|
||||||
%if %{xenpackage}
|
%if %{xenpackage}
|
||||||
%package xen
|
%package xen
|
||||||
Summary: The GNU libc libraries (optimized for running under Xen)
|
Summary: The GNU libc libraries (optimized for running under Xen)
|
||||||
@ -226,6 +299,9 @@ library binaries that will be selected instead when running under Xen.
|
|||||||
Install glibc-xen if you might run your system under the Xen hypervisor.
|
Install glibc-xen if you might run your system under the Xen hypervisor.
|
||||||
%endif
|
%endif
|
||||||
|
|
||||||
|
##############################################################################
|
||||||
|
# glibc "devel" sub-package
|
||||||
|
##############################################################################
|
||||||
%package devel
|
%package devel
|
||||||
Summary: Object files for development using standard C libraries.
|
Summary: Object files for development using standard C libraries.
|
||||||
Group: Development/Libraries
|
Group: Development/Libraries
|
||||||
@ -245,6 +321,9 @@ executables.
|
|||||||
Install glibc-devel if you are going to develop programs which will
|
Install glibc-devel if you are going to develop programs which will
|
||||||
use the standard C libraries.
|
use the standard C libraries.
|
||||||
|
|
||||||
|
##############################################################################
|
||||||
|
# glibc "static" sub-package
|
||||||
|
##############################################################################
|
||||||
%package static
|
%package static
|
||||||
Summary: C library static libraries for -static linking.
|
Summary: C library static libraries for -static linking.
|
||||||
Group: Development/Libraries
|
Group: Development/Libraries
|
||||||
@ -255,6 +334,9 @@ The glibc-static package contains the C library static libraries
|
|||||||
for -static linking. You don't need these, unless you link statically,
|
for -static linking. You don't need these, unless you link statically,
|
||||||
which is highly discouraged.
|
which is highly discouraged.
|
||||||
|
|
||||||
|
##############################################################################
|
||||||
|
# glibc "headers" sub-package
|
||||||
|
##############################################################################
|
||||||
%package headers
|
%package headers
|
||||||
Summary: Header files for development using standard C libraries.
|
Summary: Header files for development using standard C libraries.
|
||||||
Group: Development/Libraries
|
Group: Development/Libraries
|
||||||
@ -280,6 +362,9 @@ executables.
|
|||||||
Install glibc-headers if you are going to develop programs which will
|
Install glibc-headers if you are going to develop programs which will
|
||||||
use the standard C libraries.
|
use the standard C libraries.
|
||||||
|
|
||||||
|
##############################################################################
|
||||||
|
# glibc "common" sub-package
|
||||||
|
##############################################################################
|
||||||
%package common
|
%package common
|
||||||
Summary: Common binaries and locale data for glibc
|
Summary: Common binaries and locale data for glibc
|
||||||
Requires: %{name} = %{version}-%{release}
|
Requires: %{name} = %{version}-%{release}
|
||||||
@ -290,6 +375,9 @@ Group: System Environment/Base
|
|||||||
The glibc-common package includes common binaries for the GNU libc
|
The glibc-common package includes common binaries for the GNU libc
|
||||||
libraries, as well as national language (locale) support.
|
libraries, as well as national language (locale) support.
|
||||||
|
|
||||||
|
##############################################################################
|
||||||
|
# glibc "nscd" sub-package
|
||||||
|
##############################################################################
|
||||||
%package -n nscd
|
%package -n nscd
|
||||||
Summary: A Name Service Caching Daemon (nscd).
|
Summary: A Name Service Caching Daemon (nscd).
|
||||||
Group: System Environment/Daemons
|
Group: System Environment/Daemons
|
||||||
@ -304,6 +392,9 @@ Requires(postun): systemd, /usr/sbin/userdel
|
|||||||
Nscd caches name service lookups and can dramatically improve
|
Nscd caches name service lookups and can dramatically improve
|
||||||
performance with NIS+, and may help with DNS as well.
|
performance with NIS+, and may help with DNS as well.
|
||||||
|
|
||||||
|
##############################################################################
|
||||||
|
# glibc "utils" sub-package
|
||||||
|
##############################################################################
|
||||||
%package utils
|
%package utils
|
||||||
Summary: Development utilities from GNU C library
|
Summary: Development utilities from GNU C library
|
||||||
Group: Development/Tools
|
Group: Development/Tools
|
||||||
@ -321,6 +412,9 @@ If unsure if you need this, don't install this package.
|
|||||||
%define __debug_install_post %{nil}
|
%define __debug_install_post %{nil}
|
||||||
%global __debug_package 1
|
%global __debug_package 1
|
||||||
|
|
||||||
|
##############################################################################
|
||||||
|
# glibc core "debuginfo" sub-package
|
||||||
|
##############################################################################
|
||||||
%package debuginfo
|
%package debuginfo
|
||||||
Summary: Debug information for package %{name}
|
Summary: Debug information for package %{name}
|
||||||
Group: Development/Debug
|
Group: Development/Debug
|
||||||
@ -345,6 +439,9 @@ one or more of the standard C libraries.
|
|||||||
To use this debugging information, you need to link binaries
|
To use this debugging information, you need to link binaries
|
||||||
with -static -L%{_prefix}/lib/debug%{_prefix}/%{_lib} compiler options.
|
with -static -L%{_prefix}/lib/debug%{_prefix}/%{_lib} compiler options.
|
||||||
|
|
||||||
|
##############################################################################
|
||||||
|
# glibc common "debuginfo-common" sub-package
|
||||||
|
##############################################################################
|
||||||
%ifarch %{debuginfocommonarches}
|
%ifarch %{debuginfocommonarches}
|
||||||
|
|
||||||
%package debuginfo-common
|
%package debuginfo-common
|
||||||
@ -357,12 +454,17 @@ This package provides debug information for package %{name}.
|
|||||||
Debug information is useful when developing applications that use this
|
Debug information is useful when developing applications that use this
|
||||||
package or when debugging this package.
|
package or when debugging this package.
|
||||||
|
|
||||||
%endif
|
%endif # %{debuginfocommonarches}
|
||||||
%endif
|
%endif # 0%{?_enable_debug_packages}
|
||||||
|
|
||||||
|
##############################################################################
|
||||||
|
# Prepare for the build.
|
||||||
|
##############################################################################
|
||||||
%prep
|
%prep
|
||||||
%setup -q -n %{glibcsrcdir} -b1
|
%setup -q -n %{glibcsrcdir} -b1
|
||||||
|
|
||||||
|
# Patch order is important as some patches depend on other patches and
|
||||||
|
# therefore the order must not be changed.
|
||||||
%patch0001 -p1
|
%patch0001 -p1
|
||||||
%patch0003 -p1
|
%patch0003 -p1
|
||||||
%patch0004 -p1
|
%patch0004 -p1
|
||||||
@ -399,20 +501,46 @@ package or when debugging this package.
|
|||||||
%patch0035 -p1
|
%patch0035 -p1
|
||||||
%patch0037 -p1
|
%patch0037 -p1
|
||||||
|
|
||||||
|
##############################################################################
|
||||||
|
# %%prep - Additional prep required...
|
||||||
|
##############################################################################
|
||||||
|
|
||||||
|
# XXX: This sounds entirely out of date, particularly in light of the fact
|
||||||
|
# that we want to be building newer Power support. We should review this
|
||||||
|
# and potentially remove this workaround. However it will require
|
||||||
|
# determining which arches we support building for on our distributions.
|
||||||
|
# ~~~
|
||||||
# On powerpc32, hp timing is only available in power4/power6
|
# On powerpc32, hp timing is only available in power4/power6
|
||||||
# libs, not in base, so pre-power4 dynamic linker is incompatible
|
# libs, not in base, so pre-power4 dynamic linker is incompatible
|
||||||
# with power6 libs.
|
# with power6 libs.
|
||||||
|
# ~~~
|
||||||
%if %{buildpower6}
|
%if %{buildpower6}
|
||||||
rm -f sysdeps/powerpc/powerpc32/power4/hp-timing.[ch]
|
rm -f sysdeps/powerpc/powerpc32/power4/hp-timing.[ch]
|
||||||
%endif
|
%endif
|
||||||
|
|
||||||
|
# Remove all files generated from patching.
|
||||||
find . -type f -size 0 -o -name "*.orig" -exec rm -f {} \;
|
find . -type f -size 0 -o -name "*.orig" -exec rm -f {} \;
|
||||||
|
|
||||||
|
# Ensure timestamps on configure files are current to prevent
|
||||||
|
# regenerating them.
|
||||||
touch `find . -name configure`
|
touch `find . -name configure`
|
||||||
|
|
||||||
|
# Ensure *-kw.h files are current to prevent regenerating them.
|
||||||
touch locale/programs/*-kw.h
|
touch locale/programs/*-kw.h
|
||||||
|
|
||||||
|
##############################################################################
|
||||||
|
# Build glibc...
|
||||||
|
##############################################################################
|
||||||
%build
|
%build
|
||||||
|
|
||||||
|
# We built using the native system compilers.
|
||||||
GCC=gcc
|
GCC=gcc
|
||||||
GXX=g++
|
GXX=g++
|
||||||
|
|
||||||
|
##############################################################################
|
||||||
|
# %%build - x86 options.
|
||||||
|
##############################################################################
|
||||||
|
# On x86 we build for the specific target cpu rpm is using.
|
||||||
%ifarch %{ix86}
|
%ifarch %{ix86}
|
||||||
BuildFlags="-march=%{_target_cpu} -mtune=generic"
|
BuildFlags="-march=%{_target_cpu} -mtune=generic"
|
||||||
%endif
|
%endif
|
||||||
@ -429,6 +557,10 @@ BuildFlags="$BuildFlags -mno-tls-direct-seg-refs"
|
|||||||
%ifarch x86_64
|
%ifarch x86_64
|
||||||
BuildFlags="-mtune=generic"
|
BuildFlags="-mtune=generic"
|
||||||
%endif
|
%endif
|
||||||
|
|
||||||
|
##############################################################################
|
||||||
|
# %%build - SPARC options.
|
||||||
|
##############################################################################
|
||||||
%ifarch sparc
|
%ifarch sparc
|
||||||
BuildFlags="-fcall-used-g6"
|
BuildFlags="-fcall-used-g6"
|
||||||
GCC="gcc -m32"
|
GCC="gcc -m32"
|
||||||
@ -460,6 +592,9 @@ GCC="gcc -m64"
|
|||||||
GXX="g++ -m64"
|
GXX="g++ -m64"
|
||||||
%endif
|
%endif
|
||||||
|
|
||||||
|
##############################################################################
|
||||||
|
# %%build - Generic options.
|
||||||
|
##############################################################################
|
||||||
BuildFlags="$BuildFlags -fasynchronous-unwind-tables"
|
BuildFlags="$BuildFlags -fasynchronous-unwind-tables"
|
||||||
# Add -DNDEBUG unless using a prerelease
|
# Add -DNDEBUG unless using a prerelease
|
||||||
case %{version} in
|
case %{version} in
|
||||||
@ -469,12 +604,21 @@ case %{version} in
|
|||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
EnableKernel="--enable-kernel=%{enablekernel}"
|
EnableKernel="--enable-kernel=%{enablekernel}"
|
||||||
|
# Save the used compiler and options into the file "Gcc" for use later
|
||||||
|
# by %%install.
|
||||||
echo "$GCC" > Gcc
|
echo "$GCC" > Gcc
|
||||||
AddOns=`echo */configure | sed -e 's!/configure!!g;s!\(linuxthreads\|nptl\|rtkaio\|powerpc-cpu\)\( \|$\)!!g;s! \+$!!;s! !,!g;s!^!,!;/^,\*$/d'`
|
AddOns=`echo */configure | sed -e 's!/configure!!g;s!\(linuxthreads\|nptl\|rtkaio\|powerpc-cpu\)\( \|$\)!!g;s! \+$!!;s! !,!g;s!^!,!;/^,\*$/d'`
|
||||||
%ifarch %{rtkaioarches}
|
%ifarch %{rtkaioarches}
|
||||||
AddOns=,rtkaio$AddOns
|
AddOns=,rtkaio$AddOns
|
||||||
%endif
|
%endif
|
||||||
|
|
||||||
|
##############################################################################
|
||||||
|
# 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, add-ons, kernel
|
||||||
|
# version, multiarch support, system tap support, etc.
|
||||||
|
##############################################################################
|
||||||
build()
|
build()
|
||||||
{
|
{
|
||||||
builddir=build-%{target}${1:+-$1}
|
builddir=build-%{target}${1:+-$1}
|
||||||
@ -509,12 +653,25 @@ make %{?_smp_mflags} -r CFLAGS="$build_CFLAGS" %{silentrules}
|
|||||||
popd
|
popd
|
||||||
}
|
}
|
||||||
|
|
||||||
|
##############################################################################
|
||||||
|
# Build glibc for the default set of options.
|
||||||
|
##############################################################################
|
||||||
build
|
build
|
||||||
|
|
||||||
|
##############################################################################
|
||||||
|
# Build glibc for xen:
|
||||||
|
# If we support xen build glibc again for xen support.
|
||||||
|
##############################################################################
|
||||||
%if %{buildxen}
|
%if %{buildxen}
|
||||||
build nosegneg -mno-tls-direct-seg-refs
|
build nosegneg -mno-tls-direct-seg-refs
|
||||||
%endif
|
%endif
|
||||||
|
|
||||||
|
##############################################################################
|
||||||
|
# Build glibc for power6:
|
||||||
|
# If we support building a power6 alternate runtime then built glibc again for
|
||||||
|
# power6.
|
||||||
|
# XXX: We build in a sub-shell for no apparent reason.
|
||||||
|
##############################################################################
|
||||||
%if %{buildpower6}
|
%if %{buildpower6}
|
||||||
(
|
(
|
||||||
platform=`LD_SHOW_AUXV=1 /bin/true | sed -n 's/^AT_PLATFORM:[[:blank:]]*//p'`
|
platform=`LD_SHOW_AUXV=1 /bin/true | sed -n 's/^AT_PLATFORM:[[:blank:]]*//p'`
|
||||||
@ -536,6 +693,12 @@ build power6
|
|||||||
)
|
)
|
||||||
%endif
|
%endif
|
||||||
|
|
||||||
|
##############################################################################
|
||||||
|
# Build the glibc post-upgrade program:
|
||||||
|
# We only build one of these with the default set of options. This program
|
||||||
|
# must be able to run on all hardware for the lowest common denomintor since
|
||||||
|
# we only build it once.
|
||||||
|
##############################################################################
|
||||||
pushd build-%{target}
|
pushd build-%{target}
|
||||||
$GCC -static -L. -Os -g ../releng/glibc_post_upgrade.c -o glibc_post_upgrade.%{_target_cpu} \
|
$GCC -static -L. -Os -g ../releng/glibc_post_upgrade.c -o glibc_post_upgrade.%{_target_cpu} \
|
||||||
'-DLIBTLS="/%{_lib}/tls/"' \
|
'-DLIBTLS="/%{_lib}/tls/"' \
|
||||||
@ -544,13 +707,20 @@ $GCC -static -L. -Os -g ../releng/glibc_post_upgrade.c -o glibc_post_upgrade.%{_
|
|||||||
'-DICONVCONFIG="%{_sbindir}/iconvconfig.%{_target_cpu}"'
|
'-DICONVCONFIG="%{_sbindir}/iconvconfig.%{_target_cpu}"'
|
||||||
popd
|
popd
|
||||||
|
|
||||||
|
##############################################################################
|
||||||
|
# Install glibc...
|
||||||
|
##############################################################################
|
||||||
%install
|
%install
|
||||||
|
# Reload compiler and build options that were used during %%build.
|
||||||
GCC=`cat Gcc`
|
GCC=`cat Gcc`
|
||||||
|
|
||||||
|
# Cleanup any previous installs...
|
||||||
rm -rf $RPM_BUILD_ROOT
|
rm -rf $RPM_BUILD_ROOT
|
||||||
mkdir -p $RPM_BUILD_ROOT
|
mkdir -p $RPM_BUILD_ROOT
|
||||||
make -j1 install_root=$RPM_BUILD_ROOT install -C build-%{target} %{silentrules}
|
make -j1 install_root=$RPM_BUILD_ROOT install -C build-%{target} %{silentrules}
|
||||||
chmod +x $RPM_BUILD_ROOT%{_prefix}/libexec/pt_chown
|
chmod +x $RPM_BUILD_ROOT%{_prefix}/libexec/pt_chown
|
||||||
|
# If we are not building an auxiliary arch then install all of the supported
|
||||||
|
# locales.
|
||||||
%ifnarch %{auxarches}
|
%ifnarch %{auxarches}
|
||||||
pushd build-%{target}
|
pushd build-%{target}
|
||||||
make %{?_smp_mflags} install_root=$RPM_BUILD_ROOT install-locales -C ../localedata objdir=`pwd`
|
make %{?_smp_mflags} install_root=$RPM_BUILD_ROOT install-locales -C ../localedata objdir=`pwd`
|
||||||
@ -559,6 +729,9 @@ popd
|
|||||||
|
|
||||||
librtso=`basename $RPM_BUILD_ROOT/%{_lib}/librt.so.*`
|
librtso=`basename $RPM_BUILD_ROOT/%{_lib}/librt.so.*`
|
||||||
|
|
||||||
|
##############################################################################
|
||||||
|
# Install rtkaio libraries.
|
||||||
|
##############################################################################
|
||||||
%ifarch %{rtkaioarches}
|
%ifarch %{rtkaioarches}
|
||||||
rm -f $RPM_BUILD_ROOT{,%{_prefix}}/%{_lib}/librtkaio.*
|
rm -f $RPM_BUILD_ROOT{,%{_prefix}}/%{_lib}/librtkaio.*
|
||||||
rm -f $RPM_BUILD_ROOT%{_prefix}/%{_lib}/librt.so.*
|
rm -f $RPM_BUILD_ROOT%{_prefix}/%{_lib}/librt.so.*
|
||||||
@ -569,6 +742,9 @@ ln -sf `basename $RPM_BUILD_ROOT/%{_lib}/librt-*.so` $RPM_BUILD_ROOT/%{_lib}/$li
|
|||||||
ln -sf `basename $RPM_BUILD_ROOT/%{_lib}/rtkaio/librtkaio-*.so` $RPM_BUILD_ROOT/%{_lib}/rtkaio/$librtso
|
ln -sf `basename $RPM_BUILD_ROOT/%{_lib}/rtkaio/librtkaio-*.so` $RPM_BUILD_ROOT/%{_lib}/rtkaio/$librtso
|
||||||
%endif
|
%endif
|
||||||
|
|
||||||
|
##############################################################################
|
||||||
|
# Install the xen build files.
|
||||||
|
##############################################################################
|
||||||
%if %{buildxen}
|
%if %{buildxen}
|
||||||
%define nosegneg_subdir_base i686
|
%define nosegneg_subdir_base i686
|
||||||
%define nosegneg_subdir i686/nosegneg
|
%define nosegneg_subdir i686/nosegneg
|
||||||
@ -602,6 +778,9 @@ ln -sf $librtkaioso $destdir/$librtso
|
|||||||
popd
|
popd
|
||||||
%endif
|
%endif
|
||||||
|
|
||||||
|
##############################################################################
|
||||||
|
# Install the power6 build files.
|
||||||
|
##############################################################################
|
||||||
%if %{buildpower6}
|
%if %{buildpower6}
|
||||||
pushd build-%{target}-power6
|
pushd build-%{target}-power6
|
||||||
destdir=$RPM_BUILD_ROOT/%{_lib}/power6
|
destdir=$RPM_BUILD_ROOT/%{_lib}/power6
|
||||||
@ -633,7 +812,13 @@ popd
|
|||||||
popd
|
popd
|
||||||
%endif
|
%endif
|
||||||
|
|
||||||
|
##############################################################################
|
||||||
# Remove the files we don't want to distribute
|
# Remove the files we don't want to distribute
|
||||||
|
##############################################################################
|
||||||
|
|
||||||
|
# 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 $RPM_BUILD_ROOT%{_prefix}/%{_lib}/libNoVersion*
|
rm -f $RPM_BUILD_ROOT%{_prefix}/%{_lib}/libNoVersion*
|
||||||
rm -f $RPM_BUILD_ROOT/%{_lib}/libNoVersion*
|
rm -f $RPM_BUILD_ROOT/%{_lib}/libNoVersion*
|
||||||
|
|
||||||
@ -643,16 +828,23 @@ cp -a bits/stdio-lock.h $RPM_BUILD_ROOT%{_prefix}/include/bits/stdio-lock.h
|
|||||||
# And <bits/libc-lock.h> needs sanitizing as well.
|
# And <bits/libc-lock.h> needs sanitizing as well.
|
||||||
cp -a releng/libc-lock.h $RPM_BUILD_ROOT%{_prefix}/include/bits/libc-lock.h
|
cp -a releng/libc-lock.h $RPM_BUILD_ROOT%{_prefix}/include/bits/libc-lock.h
|
||||||
|
|
||||||
|
# Move the info files if glibc installed them into the wrong location.
|
||||||
if [ -d $RPM_BUILD_ROOT%{_prefix}/info -a "%{_infodir}" != "%{_prefix}/info" ]; then
|
if [ -d $RPM_BUILD_ROOT%{_prefix}/info -a "%{_infodir}" != "%{_prefix}/info" ]; then
|
||||||
mkdir -p $RPM_BUILD_ROOT%{_infodir}
|
mkdir -p $RPM_BUILD_ROOT%{_infodir}
|
||||||
mv -f $RPM_BUILD_ROOT%{_prefix}/info/* $RPM_BUILD_ROOT%{_infodir}
|
mv -f $RPM_BUILD_ROOT%{_prefix}/info/* $RPM_BUILD_ROOT%{_infodir}
|
||||||
rm -rf $RPM_BUILD_ROOT%{_prefix}/info
|
rm -rf $RPM_BUILD_ROOT%{_prefix}/info
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# Compress all of the info files.
|
||||||
gzip -9nvf $RPM_BUILD_ROOT%{_infodir}/libc*
|
gzip -9nvf $RPM_BUILD_ROOT%{_infodir}/libc*
|
||||||
|
|
||||||
|
# XXX: What is this for?
|
||||||
ln -sf libbsd-compat.a $RPM_BUILD_ROOT%{_prefix}/%{_lib}/libbsd.a
|
ln -sf libbsd-compat.a $RPM_BUILD_ROOT%{_prefix}/%{_lib}/libbsd.a
|
||||||
|
|
||||||
|
##############################################################################
|
||||||
|
# Install configuration files for services
|
||||||
|
##############################################################################
|
||||||
|
|
||||||
install -p -m 644 releng/nsswitch.conf $RPM_BUILD_ROOT/etc/nsswitch.conf
|
install -p -m 644 releng/nsswitch.conf $RPM_BUILD_ROOT/etc/nsswitch.conf
|
||||||
|
|
||||||
%ifnarch %{auxarches}
|
%ifnarch %{auxarches}
|
||||||
@ -688,6 +880,12 @@ install -m 700 build-%{target}/glibc_post_upgrade.%{_target_cpu} \
|
|||||||
|
|
||||||
strip -g $RPM_BUILD_ROOT%{_prefix}/%{_lib}/*.o
|
strip -g $RPM_BUILD_ROOT%{_prefix}/%{_lib}/*.o
|
||||||
|
|
||||||
|
##############################################################################
|
||||||
|
# Install debug copies of unstripped static libraries
|
||||||
|
##############################################################################
|
||||||
|
|
||||||
|
# If we are building a debug package then copy all of the static archives
|
||||||
|
# into the debug directory to keep them as unstripped copies.
|
||||||
%if 0%{?_enable_debug_packages}
|
%if 0%{?_enable_debug_packages}
|
||||||
mkdir -p $RPM_BUILD_ROOT%{_prefix}/lib/debug%{_prefix}/%{_lib}
|
mkdir -p $RPM_BUILD_ROOT%{_prefix}/lib/debug%{_prefix}/%{_lib}
|
||||||
cp -a $RPM_BUILD_ROOT%{_prefix}/%{_lib}/*.a \
|
cp -a $RPM_BUILD_ROOT%{_prefix}/%{_lib}/*.a \
|
||||||
@ -698,6 +896,10 @@ rm -f $RPM_BUILD_ROOT%{_prefix}/lib/debug%{_prefix}/%{_lib}/*_p.a
|
|||||||
# rquota.x and rquota.h are now provided by quota
|
# rquota.x and rquota.h are now provided by quota
|
||||||
rm -f $RPM_BUILD_ROOT%{_prefix}/include/rpcsvc/rquota.[hx]
|
rm -f $RPM_BUILD_ROOT%{_prefix}/include/rpcsvc/rquota.[hx]
|
||||||
|
|
||||||
|
##############################################################################
|
||||||
|
# Install locale files
|
||||||
|
##############################################################################
|
||||||
|
|
||||||
# Create archive of locale files
|
# Create archive of locale files
|
||||||
%ifnarch %{auxarches}
|
%ifnarch %{auxarches}
|
||||||
olddir=`pwd`
|
olddir=`pwd`
|
||||||
@ -715,6 +917,7 @@ mv locale-archive{,.tmpl}
|
|||||||
popd
|
popd
|
||||||
%endif
|
%endif
|
||||||
|
|
||||||
|
# Remove the old nss modules.
|
||||||
rm -f ${RPM_BUILD_ROOT}/%{_lib}/libnss1-*
|
rm -f ${RPM_BUILD_ROOT}/%{_lib}/libnss1-*
|
||||||
rm -f ${RPM_BUILD_ROOT}/%{_lib}/libnss-*.so.1
|
rm -f ${RPM_BUILD_ROOT}/%{_lib}/libnss-*.so.1
|
||||||
|
|
||||||
@ -724,6 +927,37 @@ ln -f ${RPM_BUILD_ROOT}%{_sbindir}/iconvconfig{,.%{_target_cpu}}
|
|||||||
# In F7+ this is provided by rpcbind rpm
|
# In F7+ this is provided by rpcbind rpm
|
||||||
rm -f $RPM_BUILD_ROOT%{_sbindir}/rpcinfo
|
rm -f $RPM_BUILD_ROOT%{_sbindir}/rpcinfo
|
||||||
|
|
||||||
|
##############################################################################
|
||||||
|
# Build the file lists used for describing the package and subpackages.
|
||||||
|
##############################################################################
|
||||||
|
# There are 11 file lists:
|
||||||
|
# * rpm.fileslist
|
||||||
|
# - Master file list. Eventually, after removing files from this list
|
||||||
|
# we are left with the list of files for the glibc package.
|
||||||
|
# * workaround.filelist
|
||||||
|
# - This list contains files that are not shipped but for which we
|
||||||
|
# may wish to include debug information. I don't see why we would
|
||||||
|
# want to do that. The only file on this list right now is pt_chown.
|
||||||
|
# * common.filelist
|
||||||
|
# - Contains the list of flies for the common subpackage.
|
||||||
|
# * utils.filelist
|
||||||
|
# - Contains the list of files for the utils subpackage.
|
||||||
|
# * nscd.filelist
|
||||||
|
# - Contains the list of files for the nscd subpackage.
|
||||||
|
# * devel.filelist
|
||||||
|
# - Contains the list of files for the devel subpackage.
|
||||||
|
# * headers.filelist
|
||||||
|
# - Contains the list of files for the headers subpackage.
|
||||||
|
# * static.filelist
|
||||||
|
# - Contains the list of files for the static subpackage.
|
||||||
|
# * nosegneg.filelist
|
||||||
|
# - Contains the list of files for the xen subpackage.
|
||||||
|
# * debuginfo.filelist
|
||||||
|
# - Contains the list of files for the glibc debuginfo package.
|
||||||
|
# * debuginfocommon.filelist
|
||||||
|
# - Contains the list of files for the glibc common debuginfo package.
|
||||||
|
#
|
||||||
|
|
||||||
# BUILD THE FILE LIST
|
# BUILD THE FILE LIST
|
||||||
{
|
{
|
||||||
find $RPM_BUILD_ROOT \( -type f -o -type l \) \
|
find $RPM_BUILD_ROOT \( -type f -o -type l \) \
|
||||||
@ -755,6 +989,10 @@ rm -f $RPM_BUILD_ROOT%{_sbindir}/rpcinfo
|
|||||||
|
|
||||||
mkdir -p $RPM_BUILD_ROOT%{_prefix}/%{_lib}
|
mkdir -p $RPM_BUILD_ROOT%{_prefix}/%{_lib}
|
||||||
mv -f $RPM_BUILD_ROOT/%{_lib}/lib{pcprofile,memusage}.so $RPM_BUILD_ROOT%{_prefix}/%{_lib}
|
mv -f $RPM_BUILD_ROOT/%{_lib}/lib{pcprofile,memusage}.so $RPM_BUILD_ROOT%{_prefix}/%{_lib}
|
||||||
|
|
||||||
|
# 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 $RPM_BUILD_ROOT%{_prefix}/bin/{xtrace,memusage}; do
|
for i in $RPM_BUILD_ROOT%{_prefix}/bin/{xtrace,memusage}; do
|
||||||
sed -e 's~=/%{_lib}/libpcprofile.so~=%{_prefix}/%{_lib}/libpcprofile.so~' \
|
sed -e 's~=/%{_lib}/libpcprofile.so~=%{_prefix}/%{_lib}/libpcprofile.so~' \
|
||||||
-e 's~=/%{_lib}/libmemusage.so~=%{_prefix}/%{_lib}/libmemusage.so~' \
|
-e 's~=/%{_lib}/libmemusage.so~=%{_prefix}/%{_lib}/libmemusage.so~' \
|
||||||
@ -763,57 +1001,96 @@ for i in $RPM_BUILD_ROOT%{_prefix}/bin/{xtrace,memusage}; do
|
|||||||
-i $i
|
-i $i
|
||||||
done
|
done
|
||||||
|
|
||||||
|
# Put the info files into the devel file list.
|
||||||
grep '%{_infodir}' < rpm.filelist | grep -v '%{_infodir}/dir' > devel.filelist
|
grep '%{_infodir}' < rpm.filelist | grep -v '%{_infodir}/dir' > devel.filelist
|
||||||
|
|
||||||
|
# Put the stub headers into the devel file list.
|
||||||
grep '%{_prefix}/include/gnu/stubs-[32164]\+\.h' < rpm.filelist >> devel.filelist || :
|
grep '%{_prefix}/include/gnu/stubs-[32164]\+\.h' < rpm.filelist >> devel.filelist || :
|
||||||
|
|
||||||
|
# Put the include files into headers file list.
|
||||||
grep '%{_prefix}/include' < rpm.filelist |
|
grep '%{_prefix}/include' < rpm.filelist |
|
||||||
egrep -v '%{_prefix}/include/(linuxthreads|gnu/stubs-[32164]+\.h)' \
|
egrep -v '%{_prefix}/include/(linuxthreads|gnu/stubs-[32164]+\.h)' \
|
||||||
> headers.filelist
|
> headers.filelist
|
||||||
|
|
||||||
|
# Remove partial (lib*_p.a) static libraries, include files, and info files from
|
||||||
|
# the core glibc package.
|
||||||
sed -i -e '\|%{_prefix}/%{_lib}/lib.*_p.a|d' \
|
sed -i -e '\|%{_prefix}/%{_lib}/lib.*_p.a|d' \
|
||||||
-e '\|%{_prefix}/include|d' \
|
-e '\|%{_prefix}/include|d' \
|
||||||
-e '\|%{_infodir}|d' rpm.filelist
|
-e '\|%{_infodir}|d' rpm.filelist
|
||||||
|
|
||||||
|
# Put some static files into the devel package.
|
||||||
grep '%{_prefix}/%{_lib}/lib.*\.a' < rpm.filelist \
|
grep '%{_prefix}/%{_lib}/lib.*\.a' < rpm.filelist \
|
||||||
| grep '/lib\(\(c\|pthread\|nldbl\)_nonshared\|bsd\(\|-compat\)\|g\|ieee\|mcheck\|rpcsvc\)\.a$' \
|
| grep '/lib\(\(c\|pthread\|nldbl\)_nonshared\|bsd\(\|-compat\)\|g\|ieee\|mcheck\|rpcsvc\)\.a$' \
|
||||||
>> devel.filelist
|
>> devel.filelist
|
||||||
|
|
||||||
|
# Put the rest of the static files into the static package.
|
||||||
grep '%{_prefix}/%{_lib}/lib.*\.a' < rpm.filelist \
|
grep '%{_prefix}/%{_lib}/lib.*\.a' < rpm.filelist \
|
||||||
| grep -v '/lib\(\(c\|pthread\|nldbl\)_nonshared\|bsd\(\|-compat\)\|g\|ieee\|mcheck\|rpcsvc\)\.a$' \
|
| grep -v '/lib\(\(c\|pthread\|nldbl\)_nonshared\|bsd\(\|-compat\)\|g\|ieee\|mcheck\|rpcsvc\)\.a$' \
|
||||||
> static.filelist
|
> static.filelist
|
||||||
|
|
||||||
|
# Put all of the object files and *.so (not the versioned ones) into the
|
||||||
|
# devel package.
|
||||||
grep '%{_prefix}/%{_lib}/.*\.o' < rpm.filelist >> devel.filelist
|
grep '%{_prefix}/%{_lib}/.*\.o' < rpm.filelist >> devel.filelist
|
||||||
grep '%{_prefix}/%{_lib}/lib.*\.so' < rpm.filelist >> devel.filelist
|
grep '%{_prefix}/%{_lib}/lib.*\.so' < rpm.filelist >> devel.filelist
|
||||||
|
|
||||||
|
# Remove all of the static, object, unversioned DSOs, old linuxthreads stuff,
|
||||||
|
# and nscd from the core glibc package.
|
||||||
sed -i -e '\|%{_prefix}/%{_lib}/lib.*\.a|d' \
|
sed -i -e '\|%{_prefix}/%{_lib}/lib.*\.a|d' \
|
||||||
-e '\|%{_prefix}/%{_lib}/.*\.o|d' \
|
-e '\|%{_prefix}/%{_lib}/.*\.o|d' \
|
||||||
-e '\|%{_prefix}/%{_lib}/lib.*\.so|d' \
|
-e '\|%{_prefix}/%{_lib}/lib.*\.so|d' \
|
||||||
-e '\|%{_prefix}/%{_lib}/linuxthreads|d' \
|
-e '\|%{_prefix}/%{_lib}/linuxthreads|d' \
|
||||||
-e '\|nscd|d' rpm.filelist
|
-e '\|nscd|d' rpm.filelist
|
||||||
|
|
||||||
|
# All of the bin and certain sbin files go into the common package.
|
||||||
|
# We explicitly exclude certain sbin files that need to go into
|
||||||
|
# the core glibc package for use during upgrades.
|
||||||
grep '%{_prefix}/bin' < rpm.filelist >> common.filelist
|
grep '%{_prefix}/bin' < rpm.filelist >> common.filelist
|
||||||
grep '%{_prefix}/sbin/[^gi]' < rpm.filelist >> common.filelist
|
grep '%{_prefix}/sbin/[^gi]' < rpm.filelist >> common.filelist
|
||||||
|
# All of the files under share go into the common package since
|
||||||
|
# they should be multilib-independent.
|
||||||
grep '%{_prefix}/share' < rpm.filelist | \
|
grep '%{_prefix}/share' < rpm.filelist | \
|
||||||
grep -v -e '%{_prefix}/share/zoneinfo' -e '%%dir %{prefix}/share' \
|
grep -v -e '%{_prefix}/share/zoneinfo' -e '%%dir %{prefix}/share' \
|
||||||
>> common.filelist
|
>> common.filelist
|
||||||
|
|
||||||
|
# Remove the bin, locale, pt_chown, some sbin, and share from the
|
||||||
|
# core glibc package. We cheat a bit and use the slightly dangerous
|
||||||
|
# /usr/sbin/[^gi] to match the inverse of the search that put the
|
||||||
|
# files into common.filelist. It's dangerous in that additional files
|
||||||
|
# that start with g, or i would get put into common.filelist and
|
||||||
|
# rpm.filelist.
|
||||||
sed -i -e '\|%{_prefix}/bin|d' \
|
sed -i -e '\|%{_prefix}/bin|d' \
|
||||||
-e '\|%{_prefix}/lib/locale|d' \
|
-e '\|%{_prefix}/lib/locale|d' \
|
||||||
-e '\|%{_prefix}/libexec/pt_chown|d' \
|
-e '\|%{_prefix}/libexec/pt_chown|d' \
|
||||||
-e '\|%{_prefix}/sbin/[^gi]|d' \
|
-e '\|%{_prefix}/sbin/[^gi]|d' \
|
||||||
-e '\|%{_prefix}/share|d' rpm.filelist
|
-e '\|%{_prefix}/share|d' rpm.filelist
|
||||||
|
|
||||||
|
##############################################################################
|
||||||
|
# Build the xen package file list (nosegneg.filelist)
|
||||||
|
##############################################################################
|
||||||
> nosegneg.filelist
|
> nosegneg.filelist
|
||||||
%if %{xenpackage}
|
%if %{xenpackage}
|
||||||
grep '/%{_lib}/%{nosegneg_subdir}' < rpm.filelist >> nosegneg.filelist
|
grep '/%{_lib}/%{nosegneg_subdir}' < rpm.filelist >> nosegneg.filelist
|
||||||
sed -i -e '\|/%{_lib}/%{nosegneg_subdir}|d' rpm.filelist
|
sed -i -e '\|/%{_lib}/%{nosegneg_subdir}|d' rpm.filelist
|
||||||
|
# TODO: There are files in the nosegneg list which should be in the devel
|
||||||
|
# pacakge, but we leave them instead in the xen subpackage. We may
|
||||||
|
# wish to clean that up at some point.
|
||||||
%endif
|
%endif
|
||||||
|
|
||||||
|
# Add the binary to build localse to the common subpackage.
|
||||||
echo '%{_prefix}/sbin/build-locale-archive' >> common.filelist
|
echo '%{_prefix}/sbin/build-locale-archive' >> common.filelist
|
||||||
|
|
||||||
|
# The nscd binary must go into the nscd subpackage.
|
||||||
echo '%{_prefix}/sbin/nscd' > nscd.filelist
|
echo '%{_prefix}/sbin/nscd' > nscd.filelist
|
||||||
|
|
||||||
|
# The memusage and pcprofile libraries are put back into the core
|
||||||
|
# glibc package even though they are only used by utils package
|
||||||
|
# scripts..
|
||||||
cat >> rpm.filelist <<EOF
|
cat >> rpm.filelist <<EOF
|
||||||
%{_prefix}/%{_lib}/libmemusage.so
|
%{_prefix}/%{_lib}/libmemusage.so
|
||||||
%{_prefix}/%{_lib}/libpcprofile.so
|
%{_prefix}/%{_lib}/libpcprofile.so
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
|
# Add the utils scripts and programs to the utils subpackage.
|
||||||
cat > utils.filelist <<EOF
|
cat > utils.filelist <<EOF
|
||||||
%{_prefix}/bin/memusage
|
%{_prefix}/bin/memusage
|
||||||
%{_prefix}/bin/memusagestat
|
%{_prefix}/bin/memusagestat
|
||||||
@ -822,6 +1099,9 @@ cat > utils.filelist <<EOF
|
|||||||
%{_prefix}/bin/xtrace
|
%{_prefix}/bin/xtrace
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
|
# Remove the zoneinfo files
|
||||||
|
# XXX: Why isn't this don't earlier when we are removing files?
|
||||||
|
# Won't this impact what is shipped?
|
||||||
rm -rf $RPM_BUILD_ROOT%{_prefix}/share/zoneinfo
|
rm -rf $RPM_BUILD_ROOT%{_prefix}/share/zoneinfo
|
||||||
|
|
||||||
# Make sure %config files have the same timestamp
|
# Make sure %config files have the same timestamp
|
||||||
@ -843,7 +1123,7 @@ $GCC -Os -g -o build-locale-archive build-locale-archive.c \
|
|||||||
install -m 700 build-locale-archive $RPM_BUILD_ROOT/usr/sbin/build-locale-archive
|
install -m 700 build-locale-archive $RPM_BUILD_ROOT/usr/sbin/build-locale-archive
|
||||||
popd
|
popd
|
||||||
|
|
||||||
# the last bit: more documentation
|
# Lastly copy some additional documentation for the packages.
|
||||||
rm -rf documentation
|
rm -rf documentation
|
||||||
mkdir documentation
|
mkdir documentation
|
||||||
cp crypt/README.ufc-crypt documentation/README.ufc-crypt
|
cp crypt/README.ufc-crypt documentation/README.ufc-crypt
|
||||||
@ -864,12 +1144,17 @@ ln -sf /%{_lib}/ld64.so.1 $RPM_BUILD_ROOT/lib/ld64.so.1
|
|||||||
ln -sf /lib/ld-linux-armhf.so.3 $RPM_BUILD_ROOT/lib/ld-linux.so.3
|
ln -sf /lib/ld-linux-armhf.so.3 $RPM_BUILD_ROOT/lib/ld-linux.so.3
|
||||||
%endif
|
%endif
|
||||||
|
|
||||||
|
##############################################################################
|
||||||
|
# Run the glibc testsuite
|
||||||
|
##############################################################################
|
||||||
%if %{run_glibc_tests}
|
%if %{run_glibc_tests}
|
||||||
|
|
||||||
# Increase timeouts
|
# Increase timeouts
|
||||||
export TIMEOUTFACTOR=16
|
export TIMEOUTFACTOR=16
|
||||||
parent=$$
|
parent=$$
|
||||||
echo ====================TESTING=========================
|
echo ====================TESTING=========================
|
||||||
|
##############################################################################
|
||||||
|
# - Test the default runtime.
|
||||||
|
##############################################################################
|
||||||
pushd build-%{target}
|
pushd build-%{target}
|
||||||
( make %{?_smp_mflags} -k check %{silentrules} 2>&1
|
( make %{?_smp_mflags} -k check %{silentrules} 2>&1
|
||||||
sleep 10s
|
sleep 10s
|
||||||
@ -879,6 +1164,9 @@ pushd build-%{target}
|
|||||||
popd
|
popd
|
||||||
%if %{buildxen}
|
%if %{buildxen}
|
||||||
echo ====================TESTING -mno-tls-direct-seg-refs=============
|
echo ====================TESTING -mno-tls-direct-seg-refs=============
|
||||||
|
##############################################################################
|
||||||
|
# - Test the xen runtimes (nosegneg).
|
||||||
|
##############################################################################
|
||||||
pushd build-%{target}-nosegneg
|
pushd build-%{target}-nosegneg
|
||||||
( make %{?_smp_mflags} -k check %{silentrules} 2>&1
|
( make %{?_smp_mflags} -k check %{silentrules} 2>&1
|
||||||
sleep 10s
|
sleep 10s
|
||||||
@ -889,6 +1177,9 @@ popd
|
|||||||
%endif
|
%endif
|
||||||
%if %{buildpower6}
|
%if %{buildpower6}
|
||||||
echo ====================TESTING -mcpu=power6=============
|
echo ====================TESTING -mcpu=power6=============
|
||||||
|
##############################################################################
|
||||||
|
# - Test the power6 runtimes.
|
||||||
|
##############################################################################
|
||||||
pushd build-%{target}-power6
|
pushd build-%{target}-power6
|
||||||
( if [ -d ../power6emul ]; then
|
( if [ -d ../power6emul ]; then
|
||||||
export LD_PRELOAD=`cd ../power6emul; pwd`/\$LIB/power6emul.so
|
export LD_PRELOAD=`cd ../power6emul; pwd`/\$LIB/power6emul.so
|
||||||
@ -914,14 +1205,24 @@ echo ====================PLT RELOCS LIBC.SO==============
|
|||||||
readelf -Wr $RPM_BUILD_ROOT/%{_lib}/libc-*.so | sed -n -e "$PLTCMD"
|
readelf -Wr $RPM_BUILD_ROOT/%{_lib}/libc-*.so | sed -n -e "$PLTCMD"
|
||||||
echo ====================PLT RELOCS END==================
|
echo ====================PLT RELOCS END==================
|
||||||
|
|
||||||
%endif
|
%endif # %{run_glibc_tests}
|
||||||
|
|
||||||
|
###############################################################################
|
||||||
|
# Rebuild libpthread.a using --whole-archive to ensure all of libpthread
|
||||||
|
# is included in a static link. This prevents any problems when linking
|
||||||
|
# statically, using parts of libpthread, and other necessary parts not
|
||||||
|
# being included. Upstream has decided that this is the wrong approach to
|
||||||
|
# this problem and that the full set of dependencies should be resolved
|
||||||
|
# such that static linking works and produces the most minimally sized
|
||||||
|
# static application possible.
|
||||||
|
###############################################################################
|
||||||
pushd $RPM_BUILD_ROOT/usr/%{_lib}/
|
pushd $RPM_BUILD_ROOT/usr/%{_lib}/
|
||||||
$GCC -r -nostdlib -o libpthread.o -Wl,--whole-archive ./libpthread.a
|
$GCC -r -nostdlib -o libpthread.o -Wl,--whole-archive ./libpthread.a
|
||||||
rm libpthread.a
|
rm libpthread.a
|
||||||
ar rcs libpthread.a libpthread.o
|
ar rcs libpthread.a libpthread.o
|
||||||
rm libpthread.o
|
rm libpthread.o
|
||||||
popd
|
popd
|
||||||
|
###############################################################################
|
||||||
|
|
||||||
%if 0%{?_enable_debug_packages}
|
%if 0%{?_enable_debug_packages}
|
||||||
|
|
||||||
@ -930,6 +1231,9 @@ popd
|
|||||||
(cd locale; ln -s programs/*.gperf .)
|
(cd locale; ln -s programs/*.gperf .)
|
||||||
(cd iconv; ln -s ../locale/programs/charmap-kw.gperf .)
|
(cd iconv; ln -s ../locale/programs/charmap-kw.gperf .)
|
||||||
|
|
||||||
|
# Print some diagnostic information in the builds about the
|
||||||
|
# getconf binaries.
|
||||||
|
# XXX: Why do we do this?
|
||||||
ls -l $RPM_BUILD_ROOT/usr/bin/getconf
|
ls -l $RPM_BUILD_ROOT/usr/bin/getconf
|
||||||
ls -l $RPM_BUILD_ROOT/usr/libexec/getconf
|
ls -l $RPM_BUILD_ROOT/usr/libexec/getconf
|
||||||
eu-readelf -hS $RPM_BUILD_ROOT/usr/bin/getconf $RPM_BUILD_ROOT/usr/libexec/getconf/*
|
eu-readelf -hS $RPM_BUILD_ROOT/usr/bin/getconf $RPM_BUILD_ROOT/usr/libexec/getconf/*
|
||||||
@ -946,6 +1250,7 @@ find_debuginfo_args="$find_debuginfo_args \
|
|||||||
%endif
|
%endif
|
||||||
eval /usr/lib/rpm/find-debuginfo.sh "$find_debuginfo_args" -o debuginfo.filelist
|
eval /usr/lib/rpm/find-debuginfo.sh "$find_debuginfo_args" -o debuginfo.filelist
|
||||||
|
|
||||||
|
# List all of the *.a archives in the debug directory.
|
||||||
list_debug_archives()
|
list_debug_archives()
|
||||||
{
|
{
|
||||||
local dir=%{_prefix}/lib/debug%{_prefix}/%{_lib}
|
local dir=%{_prefix}/lib/debug%{_prefix}/%{_lib}
|
||||||
@ -954,13 +1259,17 @@ list_debug_archives()
|
|||||||
|
|
||||||
%ifarch %{debuginfocommonarches}
|
%ifarch %{debuginfocommonarches}
|
||||||
|
|
||||||
|
# Remove the source files from the common package debuginfo.
|
||||||
sed -i '\#^%{_prefix}/src/debug/#d' debuginfocommon.filelist
|
sed -i '\#^%{_prefix}/src/debug/#d' debuginfocommon.filelist
|
||||||
|
|
||||||
|
# Create a list of all of the source files we copied to the debug directory.
|
||||||
find $RPM_BUILD_ROOT%{_prefix}/src/debug \
|
find $RPM_BUILD_ROOT%{_prefix}/src/debug \
|
||||||
\( -type d -printf '%%%%dir ' \) , \
|
\( -type d -printf '%%%%dir ' \) , \
|
||||||
-printf '%{_prefix}/src/debug/%%P\n' > debuginfocommon.sources
|
-printf '%{_prefix}/src/debug/%%P\n' > debuginfocommon.sources
|
||||||
|
|
||||||
%ifarch %{biarcharches}
|
%ifarch %{biarcharches}
|
||||||
|
|
||||||
|
# Add the source files to the core debuginfo package.
|
||||||
cat debuginfocommon.sources >> debuginfo.filelist
|
cat debuginfocommon.sources >> debuginfo.filelist
|
||||||
|
|
||||||
%else
|
%else
|
||||||
@ -972,33 +1281,42 @@ cat debuginfocommon.sources >> debuginfo.filelist
|
|||||||
%define basearch sparc
|
%define basearch sparc
|
||||||
%endif
|
%endif
|
||||||
|
|
||||||
# auxarches get only these few source files
|
# The auxarches get only these few source files.
|
||||||
auxarches_debugsources=\
|
auxarches_debugsources=\
|
||||||
'/(generic|linux|%{basearch}|nptl(_db)?)/|/%{glibcsrcdir}/build|/dl-osinfo\.h'
|
'/(generic|linux|%{basearch}|nptl(_db)?)/|/%{glibcsrcdir}/build|/dl-osinfo\.h'
|
||||||
|
|
||||||
|
# Place the source files into the core debuginfo pakcage.
|
||||||
egrep "$auxarches_debugsources" debuginfocommon.sources >> debuginfo.filelist
|
egrep "$auxarches_debugsources" debuginfocommon.sources >> debuginfo.filelist
|
||||||
|
|
||||||
|
# Remove the source files from the common debuginfo package.
|
||||||
egrep -v "$auxarches_debugsources" \
|
egrep -v "$auxarches_debugsources" \
|
||||||
debuginfocommon.sources >> debuginfocommon.filelist
|
debuginfocommon.sources >> debuginfocommon.filelist
|
||||||
|
|
||||||
%endif
|
%endif
|
||||||
|
|
||||||
|
# Add the list of *.a archives in the debug directory to
|
||||||
|
# the common debuginfo package.
|
||||||
list_debug_archives >> debuginfocommon.filelist
|
list_debug_archives >> debuginfocommon.filelist
|
||||||
|
|
||||||
%endif
|
%endif # %{debuginfocommonarches}
|
||||||
|
|
||||||
%endif
|
%endif # 0%{?_enable_debug_packages}
|
||||||
|
|
||||||
|
# Remove the `dir' info-heirarchy file which will be maintained
|
||||||
|
# by the system as it adds info files to the install.
|
||||||
rm -f $RPM_BUILD_ROOT%{_infodir}/dir
|
rm -f $RPM_BUILD_ROOT%{_infodir}/dir
|
||||||
|
|
||||||
%ifarch %{auxarches}
|
%ifarch %{auxarches}
|
||||||
|
|
||||||
|
# Delete files that we do not intended to ship with the auxarch.
|
||||||
echo Cutting down the list of unpackaged files
|
echo Cutting down the list of unpackaged files
|
||||||
>> debuginfocommon.filelist
|
>> debuginfocommon.filelist
|
||||||
sed -e '/%%dir/d;/%%config/d;/%%verify/d;s/%%lang([^)]*) //;s#^/*##' \
|
sed -e '/%%dir/d;/%%config/d;/%%verify/d;s/%%lang([^)]*) //;s#^/*##' \
|
||||||
common.filelist devel.filelist static.filelist headers.filelist \
|
common.filelist devel.filelist static.filelist headers.filelist \
|
||||||
utils.filelist nscd.filelist debuginfocommon.filelist |
|
utils.filelist nscd.filelist debuginfocommon.filelist |
|
||||||
(cd $RPM_BUILD_ROOT; xargs --no-run-if-empty rm -f 2> /dev/null || :)
|
(cd $RPM_BUILD_ROOT; xargs --no-run-if-empty rm -f 2> /dev/null || :)
|
||||||
|
|
||||||
|
# The auxarch doesn't install pt_chown.
|
||||||
rm -f $RPM_BUILD_ROOT%{_prefix}/libexec/pt_chown
|
rm -f $RPM_BUILD_ROOT%{_prefix}/libexec/pt_chown
|
||||||
|
|
||||||
%else
|
%else
|
||||||
|
Loading…
Reference in New Issue
Block a user