glibc/glibc.spec

1182 lines
40 KiB
RPMSpec

# if you want to build glibc on this build platform for target ppc, building
# for ppc:
#rpmbuild -ba -target ppc-openmamba-linux-gnu glibc.spec
# example: build a ppc cross-platform glibc package:
#rpmbuild -ba --define='cross_target_cpu ppc' glibc.spec
# example: build a arm cross-platform glibc package with soft floating point support:
#rpmbuild -ba --define='cross_target_cpu arm' --define='softfloat 1' glibc.spec
%define majver %(echo %version | cut -d. -f1-2)
#%define minver %(echo %version | cut -d. -f3)
%if "%{?build_doc}" == ""
%define build_doc 1
%endif
%if "%{?build_selinux}" == ""
%define build_selinux 1
%endif
# build a soft floating point targeted library (currently only for ARM)
%if "%{?bigendian}"
%define bigendian_append -bigendian
%endif
# build a soft floating point targeted library (currently only for ARM)
%if "%{?softfloat}"
%define softfloat_append -softfloat
%endif
# stage1: build only headers package
%if "%{stage1}" == "1"
%define bootstrap_append -stage1
%define build_doc 0
%define build_selinux 0
%endif
# stage2: build what you can without requirements may not be present yet (doc,profile,selinux)
%if "%{stage2}" == "1"
%define bootstrap_append -stage2
%define build_doc 0
%define build_selinux 0
%endif
%define target_cpu %(echo %{_target_platform} | cut -d- -f1)
%if "%{_target_platform}" != "%{_host}"
%define _as %{_target_platform}-as
%define _ld %{_target_platform}-ld
%define glibc_prefix %{_prefix}/%{_target_platform}
%define glibc_libdir %{_prefix}/%{_target_platform}/lib
%define glibc_datadir %{_prefix}/%{_target_platform}/share
%define glibc_libexecdir %{_prefix}/%{_target_platform}/libexec
%define glibc_includedir %{_prefix}/%{_target_platform}/include
%define glibc_target_cpu %{_target_cpu}
%define slibdir %{_prefix}/%{_target_platform}/%{_lib}
%else
%define _as as
%define _ld ld
%define glibc_prefix %{_prefix}
%define glibc_libdir %{_libdir}
%define glibc_datadir %{_datadir}
%define glibc_libexecdir %{_libexecdir}
%define glibc_includedir %{_includedir}
%define glibc_target_cpu %{_target_cpu}
%define slibdir /%{_lib}
%endif
%define buildcc %{_target_platform}-gcc
%define buildcxx %{_target_platform}-g++
%if "%{_target_platform}" != "%{_build}"
%define build_doc 0
%define build_selinux 0
%endif
#% if "%{?KERNEL_VER}" == ""
# % define KERNEL_VER %(uname -r | sed "s|\\([0-9.]*\\).*|\\1|" )
#% endif
%if "%{?KERNEL_TARGET}" == ""
%define KERNEL_TARGET %(uname -r | sed "s|[0-9.]*\\(.*\\)|\\1|" )
%endif
Name: glibc
Version: 2.31
Release: 1mamba
Summary: The GNU libc libraries
Group: System/Libraries
Vendor: openmamba
Distribution: openmamba
Packager: Silvan Calarco <silvan.calarco@mambasoft.it>
URL: http://www.gnu.org/software/libc/
Source0: http://ftp.gnu.org/gnu/glibc/glibc-%{version}.tar.xz
Source4: nscd-logrotate
Source5: nscd-conf
Source6: nscd-initscript
Patch0: %{name}-2.4-manual-syntax-fix.patch
Patch1: %{name}-2.6.1-strlcpy_strlcat-1.patch
Patch2: %{name}-2.7-memcpy_chk_S.patch
Patch3: %{name}-2.9-arm_local_args6.patch
Patch4: %{name}-2.7-lowlevellock.patch
Patch5: %{name}-2.16.0-localedata_openmamba.patch
Patch6: %{name}-2.7-only-lookup-ipv6-if-it-makes-sense.patch
Patch7: %{name}-2.7-gcc-4.3.patch
Patch8: %{name}-2.7-x86-fnstsw.patch
Patch9: %{name}-2.10.1-binutils-2.20.patch
Patch10: %{name}-2.11.2-gcc-4.5.0.patch
Patch11: %{name}-2.13-fix_prelink_ld_so.patch
Patch12: %{name}-2.14.1-fix-segfault-at-dl-lookup.patch
Patch13: %{name}-2.14-fix-resolver-crash-typo.patch
Patch14: %{name}-2.14-rpc_nis_headers_restore.patch
Patch15: glibc-ports-2.15-arm-libmemusage-libc_nonshared.patch
Patch16: glibc-2.16.0-tetex-3.0.patch
Patch17: glibc-2.21-prevent-ehaustion-of-tls-slots.patch
Patch18: glibc-2.25-resolv-no-compat.patch
License: LGPL
## AUTOBUILDREQ-BEGIN
BuildRequires: libaudit-devel
BuildRequires: libcap-devel
BuildRequires: libgd-devel
BuildRequires: libpng-devel
BuildRequires: libselinux-devel
BuildRequires: libz-devel
## AUTOBUILDREQ-END
BuildRequires: libidn-devel
BuildRequires: binutils >= 2.13
%if "%{_host}" == "%{_build}"
BuildRequires: coreutils >= 5.2.1
BuildRequires: perl >= 5.8.0
%endif
BuildRequires: gettext-devel >= 0.14.0
BuildRequires: gawk
BuildRequires: bison
BuildRequires: texinfo >= 4.8
%if "%{?build_doc}" != "0"
BuildRequires: tetex
BuildRequires: tetex-latex
Requires(post):%{__install_info}
%endif
%if "%{?build_selinux}" != "0"
BuildRequires: libselinux-devel >= 1.22
BuildRequires: libcap-devel
%endif
BuildRequires: kernelsanitisedheaders
Requires: ldconfig = %{?epoch:%epoch:}%{version}-%{release}
Requires: locales = %{?epoch:%epoch:}%{version}-%{release}
Requires: glibc-utils = %{?epoch:%epoch:}%{version}-%{release}
%systemd_requires
BuildRoot: %{_tmppath}/%{name}-%{version}-root
# FIXME :
# $> localedef -v -c -i da_DK -f UTF-8 /tmp/da_DK.UTF-8
# character map file `UTF-8' not found: No such file or directory
# cannot read character map directory `/usr/share/i18n/charmaps': No such file or directory
%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.
The glibc package also contains national language (locale) support.
%package devel
Summary: Header and object files for development using standard C libraries.
Group: Development/Libraries
Requires: %{name} = %{?epoch:%epoch:}%{version}-%{release}
Requires(pre): %{__install_info}
%description devel
The glibc-devel package contains the header and 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 header and object files available in order to create the executables.
This package also includes the C header files for the Linux kernel.
The header files define structures and constants that are needed for building most standard programs.
The header files are also needed for rebuilding the kernel.
Install glibc-devel if you are going to develop programs which will use the standard C libraries.
%package multilib
Summary: GNU libc multilib (lib32) libraries
Group: System/Libraries
Provides: glibc-multilib-i18ndata
Obsoletes: glibc-multilib-i18ndata
Provides: glibc-multilib-utils
Obsoletes: glibc-multilib-utils
%description multilib
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.
The glibc-multilib package provides lib32 libraries for 32-bit build support on x86_64 arch.
%package multilib-devel
Summary: GNU libc multilib (lib32) libraries and files for development
Group: Development/Libraries
Requires: glibc-multilib = %{?epoch:%epoch:}%{version}-%{release}
Provides: glibc-multilib-apidocs
Obsoletes: glibc-multilib-apidocs
%description multilib-devel
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.
The glibc-multilib-devel package provides lib32 libbraries and other files for development for 32-bit build support on x86_64 arch.
%if %{build_doc}
%package apidocs
Summary: GNU libc libraries API documentation
Group: Documentation
Requires: glibc-devel = %{?epoch:%epoch:}%{version}-%{release}
%description apidocs
GNU libc libraries API documentation.
%endif
%package i18ndata
Summary: Database sources for 'locale'
Group: System/Libraries
Requires(pre): %{name} = %{?epoch:%epoch:}%{version}-%{release}
%description i18ndata
This package contains the data needed to build the locale data files to use the internationalization features of the GNU libc.
%package utils
Summary: Development utilities from GNU C library
Group: Development/Tools
Requires: %{name} = %{?epoch:%epoch:}%{version}-%{release}
%description utils
The glibc-utils package contains memusage, a memory usage profiler, mtrace, a memory leak tracer and, a function call tracer which can be helpful during program debugging.
%package -n ldconfig
Summary: Configure dynamic linker run time bindings
Group: System/Tools
# The dynamic linker supports DT_GNU_HASH
Provides: rtld(GNU_HASH)
Provides: rtld(GNU_UNIQUE)
%description -n ldconfig
ldconfig creates the necessary links and cache to the most recent shared libraries found in the directories specified on the command line, in the file /etc/ld.so.conf, and in the trusted directories (/lib and /usr/lib).
The cache is used by the run-time linker, ld.so or ld-linux.so.
ldconfig checks the header and file names of the libraries it encounters when determining which versions should have their links updated.
%package -n timezone
Summary: Time zone descriptions
Group: System/Internationalization
Requires: %{name} = %{?epoch:%epoch:}%{version}-%{release}
Requires(post):tzdata
%description -n timezone
These are configuration files that describe possible time zones.
%package -n locales
Summary: Base files for localization
Group: System/Internationalization
Requires: %{name} = %{?epoch:%epoch:}%{version}-%{release}
%description -n locales
These are the base files for language localization.
You also need to install the specific locales-?? for the language(s) you want.
Then the user need to set the LANG variable to their preferred language in their ~/.profile configuration file.
%package -n nscd
Summary: Name service cache daemon
Group: System/Servers
Requires: logrotate >= 3.6.8
%description -n nscd
Nscd is a daemon that provides a cache for the most common name service requests.
%package -n cross-%{_target_platform}-%{name}%{?bootstrap_append}%{?bigendian_append}%{?softfloat_append}
Summary: Cross Platform glibc for %{_target_platform}
Group: System/Libraries
AutoReqProv: no
%if "%{?stage2}"
Obsoletes: cross-%{_target_platform}-%{name}-stage1%{?bigendian_append}%{?softfloat_append}
%else
%if "%{?stage1}" == ""
Provides: cross-%{_target_platform}-%{name}-stage2%{?bigendian_append}%{?softfloat_append}
Obsoletes: cross-%{_target_platform}-%{name}-stage2%{?bigendian_append}%{?softfloat_append}
Obsoletes: cross-%{_target_platform}-%{name}-stage1%{?bigendian_append}%{?softfloat_append}
%endif
%endif
%description -n cross-%{_target_platform}-%{name}%{?bootstrap_append}%{?bigendian_append}%{?softfloat_append}
Cross Platform glibc for %{_target_platform}.
%if "%{_target_platform}" == "%{_host}"
%debug_package
%endif
%prep
%setup -q
#-D -T
#:<< ___EOF
%patch5 -p1
%patch17 -p1
#%patch18 -p1
%if "%{?stage2}"
# link glibc without libgcc_eh, not available in stage1 cross compiler
# this is the reason why also a glibc rebuild is needed later
sed -i "s|-lgcc_eh||" Makeconfig
%endif
%if %{build_selinux}
ln -sf %{_includedir}/selinux selinux
ln -sf %{_includedir}/sys/capability.h include/sys/capability.h
%endif
# do not try to explicitly provide GLIBC_PRIVATE versioned libraries
%define _use_internal_dependency_generator 0
%define __find_provides %{_builddir}/glibc-%{version}/find_provides.sh
%define __find_requires %{_builddir}/glibc-%{version}/find_requires.sh
# create find-provides and find-requires script in order to ignore GLIBC_PRIVATE errors
cat > find_provides.sh << _EOF
#! /bin/sh
%if "%{_target_platform}" == "%{_host}"
%if "%{?stage1}" != "1"
# set again +x on libraries for which strip has been disabled in %install
#chmod -x %{buildroot}/%{slibdir}/ld-*.so
#chmod -x %{buildroot}/%{slibdir}/libc-*.so
chmod +x %{buildroot}/%{slibdir}/libpthread-*.so
chmod +x %{buildroot}/%{slibdir}/libthread_db-*.so
%endif
%endif
%{_prefix}/lib/rpm/find-provides | grep -v GLIBC_PRIVATE
# work around to avoid stripping libthread_db-1.0.so for debugging
exit 0
_EOF
chmod +x find_provides.sh
cat > find_requires.sh << _EOF
#! /bin/sh
%{_prefix}/lib/rpm/find-requires %{buildroot} %{glibc_target_cpu} | grep -v GLIBC_PRIVATE
_EOF
chmod +x find_requires.sh
#___EOF
%build
#:<< ___EOF
case %{target_cpu} in
i*86|athlon*)
platform_includes=asm-x86
buildflags="-mtune=pentiumpro -g -O2"
CONFIG_OPTS="--enable-targets=i586-%{_target_vendor}-linux --enable-cet"
;;
ppc|powerpc)
platform_includes=asm-powerpc
buildflags="-g -O2"
CONFIG_OPTS="--enable-targets=powerpc64-%{_target_vendor}-linux"
;;
arm)
platform_includes=asm-arm
buildflags="-g -O2"
%if "%{?softfloat}" == "1"
CONFIG_LIBDIR_ADD="/soft-float"
CONFIG_ADD="--without-fp"
CC_ADD="-msoft-float"
%endif
%if "%{?bigendian}" == "1"
CONFIG_LIBDIR_ADD="/be${CONFIG_LIBDIR_ADD}"
CC_ADD="-mbig-endian"
AS_ADD="-mbig-endian"
%endif
CONFIG_OPTS=""
;;
x86_64)
platform_includes=asm-x86_64
buildflags="-g -O2"
CONFIG_OPTS="--enable-targets=x86_64-%{_target_vendor}-linux --enable-multi-arch --enable-static-pie --enable-cet"
;;
*)
echo "Target CPU %{target_cpu} not supported. Aborting."
exit 1
;;
esac
# set kernel headers for platform
if [ -e /usr/src/linux-%{KERNEL_VERSION}%{KERNEL_TARGET}/usr/include/linux/version.h ]; then
headers_dir=/usr/src/linux-%{KERNEL_VERSION}%{KERNEL_TARGET}/usr/include
elif [ -e /usr/src/linux-%{KERNEL_TARGET}/usr/include/linux/version.h ]; then
headers_dir=/usr/src/linux-%{KERNEL_TARGET}/usr/include
elif [ -e /usr/src/linux/usr/include/linux/version.h ]; then
headers_dir=/usr/src/linux/usr/include
else
echo "ERROR: can't find suitable kernel headers; aborting."
exit 1
fi
%if "%{?stage2}"
# hack, diable nptl for bootstrap gcc
opt_tls="--enable-add-ons --with-tls --disable-sanity-checks"
%else
opt_tls="--enable-add-ons --with-tls"
%endif
%if %{build_selinux}
opt_selinux="--with-selinux"
%else
opt_selinux="--without-selinux"
%endif
%if "%{?stage2}" == "1"
# there is no --disable-ssp option
echo "libc_cv_ssp=no" > config.cache
%endif
_configure_flags=(
--build=%{_build} \
%if "%{?stage1}" != "1"
--host=%{_target_platform} \
%endif
%if "%{?stage2}"
--cache-file=config.cache \
%endif
--prefix=%{glibc_prefix} \
--infodir=%{_infodir} \
--libexecdir=%{glibc_libexecdir} \
--with-headers=${headers_dir} \
--with-bugurl=https://bugs.openmamba.org/ \
${opt_tls} ${opt_selinux} \
--enable-lock-elision \
%if "%{_target_platform}" == "%{_host}"
--enable-stack-protector=strong \
--enable-stackguard-randomization \
%endif
--enable-bind-now \
--disable-profile \
--disable-werror \
PYTHON_PROG=%{__python3} \
$CONFIG_OPTS
)
#:<< __EOF
# Build
rm -rf ../glibc-build
mkdir ../glibc-build
cd ../glibc-build
export CFLAGS="$buildflags"
export CXXFLAGS="$buildflags"
../%{name}-%{version}/configure \
${_configure_flags[@]}
%if "%{?stage1}" != "1"
# build libraries with fortify disabled
echo "build-programs=no" >> configparms
make %{_smp_mflags} -r %PARALLELMFLAGS=-s -j1 slibdir=%{slibdir} \
%if "%{_target_platform}" != "%{_host}"
%if "%{?stage2}" != "1"
LDLIBS-resolv.so+="-lssp" LDFLAGS-nscd+="-lssp"
%else
CXX=
%endif
%endif
# re-enable fortify for programs
sed -i "/build-programs=/s#no#yes#" configparms
echo "CC += -D_FORTIFY_SOURCE=2" >> configparms
echo "CXX += -D_FORTIFY_SOURCE=2" >> configparms
make %{_smp_mflags} -r %PARALLELMFLAGS=-s slibdir=%{slibdir}
# build documentation (pdf and html formats)
%if %{build_doc}
make pdf html
%endif
%endif
#__EOF
%if "%{_target_platform}" == "%{_host}"
%ifarch x86_64
%if "%{?stage1}" != "1"
%if "%{?stage2}" != "1"
# Multilib
rm -rf ../glibc-multilib-build
mkdir ../glibc-multilib-build
cd ../glibc-multilib-build
export CC="gcc -m32 -mstackrealign"
export CXX="g++ -m32 -mstackrealign"
CFLAGS="-mtune=pentiumpro -g -O3 -Wl,--build-id"
../%{name}-%{version}/configure \
${_configure_flags[@]} \
--host=i586-openmamba-linux-gnu \
--libdir=/usr/lib32 \
--libexecdir=/usr/lib32 \
--without-selinux
# Disable building programs
echo "build-programs=no" >> configparms
echo "slibdir=/usr/lib32" >> configparms
echo "rtlddir=/usr/lib32" >> configparms
make %{_smp_mflags} -r %PARALLELMFLAGS=-s
%endif
%endif
%endif
%endif
#___EOF
%install
[ "%{buildroot}" != / ] && rm -rf %{buildroot}
%if "%{?stage1}" != "1"
# crelate ld.so.conf
install -d %{buildroot}%{_sysconfdir}/ld.so.conf.d
cat > %{buildroot}%{_sysconfdir}/ld.so.conf << _EOF
include %{_sysconfdir}/ld.so.conf.d/*.conf
_EOF
%if "%{_target_platform}" == "%{_host}"
# Multilib
%ifarch x86_64
make install -C ../glibc-multilib-build install_root=%{buildroot}
cat > %{buildroot}%{_sysconfdir}/ld.so.conf.d/lib32-glibc.conf << _EOF
/usr/lib32
_EOF
# Symlink /usr/lib32/locale to /usr/lib/locale
ln -s ../lib/locale %{buildroot}/usr/lib32/locale
%endif
%endif
make install -C ../glibc-build install_root=%{buildroot}
# install openmamba default supported locales
mv localedata/SUPPORTED localedata/SUPPORTED.orig
mv localedata/SUPPORTED.openmamba localedata/SUPPORTED
echo "%{_target_platform} == %{_host}"
%if "%{_target_platform}" == "%{_build}"
make localedata/install-locales -C ../glibc-build install_root=%{buildroot}
%else
# WORKAROUND: worked up to 2.21
mkdir -p %{buildroot}%{_prefix}/lib/locale
make LOCALEDEF="I18NPATH=. LC_ALL=C localedef" localedata/install-locales -C ../glibc-build install_root=%{buildroot}
mv %{buildroot}%{_prefix}/lib/locale/* %{buildroot}%{glibc_prefix}/lib/locale/
%endif
mv localedata/SUPPORTED localedata/SUPPORTED.openmamba
mv localedata/SUPPORTED.orig localedata/SUPPORTED
install -m0644 localedata/SUPPORTED %{buildroot}%{glibc_datadir}/i18n/locales/
[-e %{buildroot}%{glibc_libdir}/libbsd-compat.a ] && ln -sf libbsd-compat.a %{buildroot}%{glibc_libdir}/libbsd.a
%else
# stage 1
make -C ../glibc-build install-headers install_root=%{buildroot} cross-compiling=yes
# the following files are generated during the glibc build.
# Fortunately, it is sufficient to substitute empty files for a first stage gcc build
touch %{buildroot}%{glibc_includedir}/gnu/stubs.h
touch %{buildroot}%{glibc_includedir}/bits/stdio_lim.h
%endif
rm -f %{buildroot}%{_sysconfdir}/localtime
# install kernel headers
if [ -e /usr/src/linux-%{KERNEL_VERSION}%{KERNEL_TARGET}/usr/include/linux/version.h ]; then
headers_dir=/usr/src/linux-%{KERNEL_VERSION}%{KERNEL_TARGET}/usr/include
elif [ -e /usr/src/linux-%{KERNEL_TARGET}/usr/include/linux/version.h ]; then
headers_dir=/usr/src/linux-%{KERNEL_TARGET}/usr/include
elif [ -e /usr/src/linux/usr/include/linux/version.h ]; then
headers_dir=/usr/src/linux/usr/include
else
echo "ERROR: can't find suitable kernel headers; aborting."
exit 1
fi
cp -avrf ${headers_dir}/* %{buildroot}%{glibc_includedir}
%if "%{_target_platform}" == "%{_host}"
# install/create nscd service dirs and configuration files
install -d %{buildroot}/var/log/nscd
install -D -m644 %{SOURCE4} %{buildroot}%{_sysconfdir}/logrotate.d/nscd
install -D -m644 %{SOURCE5} %{buildroot}%{_sysconfdir}/nscd.conf
install -D -m644 nscd/nscd.service %{buildroot}%{_unitdir}/nscd.service
install -D -m644 nscd/nscd.tmpfiles %{buildroot}%{_tmpfilesdir}/nscd.conf
%else
rm -rf %{buildroot}%{_sysconfdir}
rm -rf %{buildroot}%{_infodir}
rm -rf %{buildroot}%{_mandir}
rm -f %{buildroot}%{_prefix}/%{_target_platform}/%{_sysconfdir}/localtime
rm -f %{buildroot}%{_localstatedir}/db/Makefile
rm -f %{buildroot}%{_prefix}/%{_target_platform}/%{_sysconfdir}/ld.so.cache
%endif
# work around to avoid stripping libthread_db-1.0.so for debugging
%if "%{_target_platform}" == "%{_host}"
%if "%{?stage1}" != "1"
#chmod -x %{buildroot}/%{slibdir}/ld-*.so
#chmod -x %{buildroot}/%{slibdir}/libc-*.so
chmod -x %{buildroot}/%{slibdir}/libpthread-*.so
chmod -x %{buildroot}/%{slibdir}/libthread_db-*.so
%endif
%endif
rm -f %{buildroot}%{_libdir}/libnsl.*
%if "%{_target_platform}" == "%{_host}"
# 2.26: workaround for header required by external libnss_nis
install -D -m0644 resolv/mapv4v6addr.h %{buildroot}%{_includedir}/resolv/mapv4v6addr.h
# legacy symlink
ln -s locale.h %{buildroot}%{_includedir}/xlocale.h
%endif
%if "%{?stage1}" != "1"
## strip debug symbols
#find %{buildroot}%{glibc_libdir} -maxdepth 1 -type f \
# -exec strip -g -R .comment {} 2>/dev/null \;
##strip -g -R .comment %{buildroot}%{_libexecdir}/pt_chown
%find_lang libc
#install api documentation
%if "%{_target_platform}" == "%{_host}"
%if %{build_doc}
install -d %{buildroot}%{_docdir}/libc/html
cp -a ../glibc-build/manual/libc/* %{buildroot}%{_docdir}/libc/html/
cp -a ../glibc-build/manual/libc.pdf %{buildroot}%{_docdir}/libc/
%endif
%endif
%endif
rm -f %{buildroot}%{_sysconfdir}/ld.so.cache
# updated zoneinfo provided by tzdata
rm -rf %{buildroot}%{glibc_datadir}/zoneinfo
%clean
[ "%{buildroot}" != / ] && rm -rf %{buildroot}
# this script does not permit the clean installation of glibc packages
# during the setup: i.e. do NOT use pre script here!
#%pre
#if [ -d %{_bindir}/getconf ]; then
# rm -fr %{_bindir}/getconf
#fi
#exit 0
%post -p /sbin/ldconfig
%postun -p /sbin/ldconfig
%pre devel
[ -L %{_includedir}/asm ] && rm -f %{_includedir}/asm
# Remove old directory asm-<arch>
case %{target_cpu} in
i*86 | athlon*)
platform_includes=asm-i386
;;
ppc | powerpc)
platform_includes=asm-ppc
;;
arm)
platform_includes=asm-arm
;;
*)
platform_includes=asm-orphan
;;
esac
if [ "$platform_includes" -a -d %{_includedir}/$platform_includes ]; then
rm -f %{_includedir}/$platform_includes/*
rmdir %{_includedir}/$platform_includes
fi
exit 0
%post devel
%install_info libc.info
:
%postun devel
%uninstall_info libc.info
:
%posttrans i18ndata
# update locale-archive for current language settings
LOCALES=(`grep ${LANG:0:5} %{glibc_datadir}/i18n/locales/SUPPORTED | awk '{ print $1 }'`);
for l in ${LOCALES[*]}; do
charset=`echo $l | sed -e 's,.*/,,'`
locale=`echo $l | sed -e 's,/[^/]*,,'`
input=`echo $locale | sed 's/\([^.]*\)[^@]*\(.*\)/\1\2/'`
localedef -i $input -c -f $charset $locale
done
:
%pre -n nscd
if [ $1 -ge 1 ]; then
/usr/sbin/groupadd -g 65001 nscd &>/dev/null || true
/usr/sbin/useradd -u 65001 -g nscd -d /dev/null nscd -s /bin/false &>/dev/null || true
fi
%systemd_pre nscd
:
%post -n nscd
if [ $1 -ge 1 ]; then
%tmpfiles_create nscd.conf
fi
%systemd_post nscd
:
%preun -n nscd
%systemd_preun nscd
if [ $1 -eq 0 ]; then
/usr/sbin/userdel nscd
fi
:
%postun -n nscd
%systemd_postun_with_restart nscd
:
%if "%{_target_platform}" == "%{_host}"
%files
%defattr(-,root,root)
%config(noreplace) %{_sysconfdir}/rpc
%attr(0755,-,-) /%{slibdir}/*
%exclude %{slibdir}/libmemusage.so
%exclude %{slibdir}/libpcprofile.so
%dir %{glibc_libdir}/gconv
%{glibc_libdir}/gconv/*
%dir %{glibc_libexecdir}/getconf
%ifnarch x86_64
%{glibc_libexecdir}/getconf/POSIX_V6_ILP32_OFF32
%{glibc_libexecdir}/getconf/POSIX_V6_ILP32_OFFBIG
%{glibc_libexecdir}/getconf/POSIX_V7_ILP32_OFF32
%{glibc_libexecdir}/getconf/POSIX_V7_ILP32_OFFBIG
%{glibc_libexecdir}/getconf/XBS5_ILP32_OFF32
%{glibc_libexecdir}/getconf/XBS5_ILP32_OFFBIG
%endif
%ifarch x86_64
%{glibc_libexecdir}/getconf/POSIX_V6_LP64_OFF64
%{glibc_libexecdir}/getconf/POSIX_V7_LP64_OFF64
%{glibc_libexecdir}/getconf/XBS5_LP64_OFF64
%endif
%doc COPYING* LICENSES
%files devel
%defattr(-,root,root)
%{glibc_includedir}/*
%{glibc_libdir}/*.o
%{glibc_libdir}/*.so
%{glibc_libdir}/*.a
%if "%{build_profile}" == "1"
%exclude %{glibc_libdir}/lib*_p.a
%endif
%{_infodir}/*
%{_localstatedir}/db/Makefile
%doc NEWS README*
%ifarch x86_64
%files multilib
%defattr(-,root,root)
%{_sysconfdir}/ld.so.conf.d/lib32-glibc.conf
%{_prefix}/lib32/lib*-%{version}.so
%{_prefix}/lib32/lib*.so.*
%dir %{_prefix}/lib32/audit
%{_prefix}/lib32/audit/sotruss-lib.so
%{_prefix}/lib32/ld-%{version}.so
%{_prefix}/lib32/ld-linux.so.*
%dir %{_prefix}/lib32/gconv
%{_prefix}/lib32/gconv/*
%{_prefix}/lib32/locale
%files multilib-devel
%defattr(-,root,root)
%{_prefix}/lib32/*.o
%{_prefix}/lib32/lib*.a
%{_prefix}/lib32/lib*.so
%exclude %{_prefix}/lib32/lib*-%{version}.so
%endif
%if %{build_doc}
%files apidocs
%defattr(-,root,root)
%dir %{_docdir}/libc/
%{_docdir}/libc/*
%endif
%files i18ndata
%defattr(-,root,root)
%dir %{glibc_datadir}/i18n
%{glibc_datadir}/i18n/*
%files utils
%defattr(-,root,root)
%{_sbindir}/iconvconfig
%{_bindir}/catchsegv
%{_bindir}/gencat
%{_bindir}/getconf
%{_bindir}/getent
%{_bindir}/iconv
%{_bindir}/ldd
%ifarch %{ix86}
%{_bindir}/lddlibc4
%endif
%{_bindir}/locale
%{_bindir}/localedef
%{_bindir}/pldd
#%{_bindir}/rpcgen
%{_bindir}/sprof
%{_bindir}/tzselect
/sbin/sln
%{_bindir}/mtrace
%{_bindir}/pcprofiledump
%{_bindir}/sotruss
%{_bindir}/xtrace
%if "%{glibc_target_cpu}" == "%{_build_cpu}"
%{_bindir}/memusage
%{_bindir}/memusagestat
%{_bindir}/makedb
%endif
%{glibc_libdir}/audit/sotruss-lib.so
#%{glibc_libexecdir}/pt_chown
%{slibdir}/libmemusage.so
%{slibdir}/libpcprofile.so
%files -n ldconfig
%defattr(-,root,root)
/sbin/ldconfig
%config(noreplace) %{_sysconfdir}/ld.so.conf
%dir %{_sysconfdir}/ld.so.conf.d
#%if "%{_target_cpu}" == "%{_build_cpu}"
#%config(noreplace) %{_sysconfdir}/ld.so.cache
#%endif
%files -n locales -f libc.lang
%defattr(-,root,root)
%{glibc_datadir}/locale/locale.alias
%ifnarch x86_64
%dir %{glibc_libdir}/locale
%{glibc_libdir}/locale/locale-archive
%else
%{_prefix}/lib/locale/locale-archive
%endif
%files -n nscd
%defattr(-,root,root)
%config(noreplace) %{_sysconfdir}/logrotate.d/nscd
%config(noreplace) %{_sysconfdir}/nscd.conf
%{_unitdir}/nscd.service
%{_tmpfilesdir}/nscd.conf
%{_sbindir}/nscd
%attr(0755,nscd,nscd) /var/log/nscd
%files -n timezone
%defattr(-,root,root)
%{_sbindir}/zdump
%{_sbindir}/zic
%else
%files -n cross-%{_target_platform}-%{name}%{?bootstrap_append}%{?bigendian_append}%{?softfloat_append}
%defattr(-,root,root)
%if "%{?stage1}" != "1"
%{glibc_prefix}/etc/rpc
%{glibc_libexecdir}/*
%{glibc_prefix}/bin/*
%{glibc_prefix}/sbin/*
%{glibc_libdir}/*
%{glibc_prefix}/share/*
%{glibc_prefix}/%{_localstatedir}/db/Makefile
%endif
%{glibc_includedir}/*
%endif
%changelog
* Tue Mar 03 2020 Automatic Build System <autodist@mambasoft.it> 2.31-1mamba
- automatic version update by autodist
* Thu Dec 26 2019 Silvan Calarco <silvan.calarco@mambasoft.it> 2.30-7mamba
- restore passing buildflags and don't strip libpthread-* and libthread_db-* for debugging
- x86_64: restore glibc-multilib and glibc-multilib-devel subpackages since conflicts with glibc.i586 are resolved by using /usr/lib32
* Tue Dec 10 2019 Silvan Calarco <silvan.calarco@mambasoft.it> 2.30-6mamba
- install tmpfiles.d/nscd.conf
* Thu Dec 05 2019 Silvan Calarco <silvan.calarco@mambasoft.it> 2.30-5mamba
- x86: rebuilt with gcc with cet support to fix 'ld-linux.so.2: corrupt GNU_PROPERTY_TYPE (5) size: 0'
* Sat Nov 23 2019 Silvan Calarco <silvan.calarco@mambasoft.it> 2.30-4mamba
- x86_64: build 32 bit multilib library in unique build
* Fri Nov 22 2019 Silvan Calarco <silvan.calarco@mambasoft.it> 2.30-3mamba
- specfile simplification
- removed profile static target support
- added --enable-cet --enable-lock-elision --enable-stack-protector=strong --enable-stackguard-randomization
* Sat Oct 26 2019 Silvan Calarco <silvan.calarco@mambasoft.it> 2.30-2mamba
- remove workaround to not strip libthread_db.so to fix provides (check later if debugging works)
* Fri Aug 16 2019 Automatic Build System <autodist@mambasoft.it> 2.30-1mamba
- automatic version update by autodist
* Thu Feb 28 2019 Automatic Build System <autodist@mambasoft.it> 2.29-1mamba
- automatic version update by autodist
* Sun Sep 23 2018 Silvan Calarco <silvan.calarco@mambasoft.it> 2.28-3mamba
- glibc: require locales package
* Fri Sep 21 2018 Silvan Calarco <silvan.calarco@mambasoft.it> 2.28-2mamba
- multiarch: move tools from glibc to glibc-utils and require it; ix86: obsolete glibc-multilib
* Wed Aug 01 2018 Automatic Build System <autodist@mambasoft.it> 2.28-1mamba
- automatic version update by autodist
* Fri Feb 09 2018 Automatic Build System <autodist@mambasoft.it> 2.27-1mamba
- automatic version update by autodist
* Sat Dec 23 2017 Silvan Calarco <silvan.calarco@mambasoft.it> 2.26-3mamba
- added xlocale.h legacy symlink to locale.h
- nscd: switch to systemd
* Sat Sep 30 2017 Silvan Calarco <silvan.calarco@mambasoft.it> 2.26-2mamba
- rebuilt without --enable-obsolete-rpc
* Sat Sep 09 2017 Automatic Build System <autodist@mambasoft.it> 2.26-1mamba
- automatic version update by autodist
* Sun Jul 23 2017 Silvan Calarco <silvan.calarco@mambasoft.it> 2.25-2mamba
- patch to fix unexported function in libresolv breaking runtime and buildtime things
* Fri Jul 21 2017 Automatic Build System <autodist@mambasoft.it> 2.25-1mamba
- automatic version update by autodist
* Fri Aug 05 2016 Automatic Build System <autodist@mambasoft.it> 2.24-1mamba
- automatic version update by autodist
* Fri Feb 19 2016 Automatic Build System <autodist@mambasoft.it> 2.23-1mamba
- automatic version update by autodist
* Mon Aug 17 2015 Automatic Build System <autodist@mambasoft.it> 2.22-1mamba
- automatic version update by autodist
* Sun Apr 12 2015 Silvan Calarco <silvan.calarco@mambasoft.it> 2.21-3mamba
- new cross target: arm-openmamba-linux-gnueabihf
* Thu Mar 26 2015 Silvan Calarco <silvan.calarco@mambasoft.it> 2.21-2mamba
- patch to prevent exhaustion of tls slots (vlc), see https://bugzilla.redhat.com/show_bug.cgi?id=1124987
* Mon Feb 09 2015 Automatic Build System <autodist@mambasoft.it> 2.21-1mamba
- automatic version update by autodist
* Mon Sep 08 2014 Automatic Build System <autodist@mambasoft.it> 2.20-1mamba
- automatic version update by autodist
* Sat Aug 23 2014 Silvan Calarco <silvan.calarco@mambasoft.it> 2.19-4mamba
- timezone: remove post script to avoid messing /etc/localtime and /etc/timezone
- x86_64: remove nscd and memusagestat to hopefully silent multiling warning about missing 32bit libs
* Wed Jun 11 2014 Silvan Calarco <silvan.calarco@mambasoft.it> 2.19-3mamba
- fix %pre old %{_includedir}/asm symlink stuff
* Sun Apr 20 2014 Silvan Calarco <silvan.calarco@mambasoft.it> 2.19-2mamba
- rebuilt with enable-obsolete-rpc required by pwdutils
* Sun Feb 09 2014 Automatic Build System <autodist@mambasoft.it> 2.19-1mamba
- automatic version update by autodist
* Sat Aug 17 2013 Automatic Build System <autodist@mambasoft.it> 2.18-1mamba
- automatic version update by autodist
* Tue Jan 15 2013 Automatic Build System <autodist@mambasoft.it> 2.17-1mamba
- update to 2.17
* Mon Oct 01 2012 Silvan Calarco <silvan.calarco@mambasoft.it> 2.16.0-2mamba
- restore installing rpcnis headers needed by samba
- source edit: install de_AT locale because required by perl-libintl
* Fri Sep 28 2012 Automatic Build System <autodist@mambasoft.it> 2.16.0-1mamba
- automatic version update by autodist
* Thu Jun 14 2012 Automatic Build System <autodist@mambasoft.it> 2.15-1mamba
- automatic version update by autodist
* Mon Oct 10 2011 Automatic Build System <autodist@mambasoft.it> 2.14.1-1mamba
- automatic version update by autodist
* Wed Aug 24 2011 Silvan Calarco <silvan.calarco@mambasoft.it> 2.14-5mamba
- complete rpc/nis patch by reexporting symbols
* Tue Aug 23 2011 Silvan Calarco <silvan.calarco@mambasoft.it> 2.14-4mamba
- rebuilt with 2.6.38 kernel headers for x86 and x86_64 targets (for arm still use 2.6.35)
- added a patch to restore rpc/nis headers (http://permalink.gmane.org/gmane.linux.pld.devel.english/7397)
* Sat Aug 13 2011 Silvan Calarco <silvan.calarco@mambasoft.it> 2.14-3mamba
- added patch to fix resolver crash in __libc_res_query
* Thu Aug 11 2011 Silvan Calarco <silvan.calarco@mambasoft.it> 2.14-2mamba
- added patch to fix several crashes in dl_lookup (eg. libSDL). See http://sourceware.org/bugzilla/show_bug.cgi?id=12871
* Thu Jul 07 2011 Automatic Build System <autodist@mambasoft.it> 2.14-1mamba
- automatic update by autodist
* Tue Apr 19 2011 Silvan Calarco <silvan.calarco@mambasoft.it> 2.13-4mamba
- don't build debug package for cross-platform targets to avoid overwriting native glibc-debug package
* Fri Apr 01 2011 Silvan Calarco <silvan.calarco@mambasoft.it> 2.13-3mamba
- timezone: modify to use zoneinfo from tzdata
* Sat Feb 19 2011 Silvan Calarco <silvan.calarco@mambasoft.it> 2.13-2mamba
- add patch to fix a prelink segmentation fault in ld.so causing whole system crash
* Sat Feb 12 2011 Automatic Build System <autodist@mambasoft.it> 2.13-1mamba
- update to 2.13
* Tue Dec 14 2010 Automatic Build System <autodist@mambasoft.it> 2.12.2-1mamba
- automatic update to 2.12.2 by autodist
* Mon Dec 13 2010 Davide Madrisan <davide.madrisan@gmail.com> 2.12.1-3mamba
- provides rtld(GNU_HASH) for google-talkplugin and other closed-source packages
* Wed Nov 24 2010 Silvan Calarco <silvan.calarco@mambasoft.it> 2.12.1-2mamba
- rebuilt with debug package
- don't strip libthread_db.so.1 to allow multithreaded debugging
* Tue Aug 17 2010 Automatic Build System <autodist@mambasoft.it> 2.12.1-1mamba
- update to 2.12.1
* Fri May 28 2010 Automatic Build System <autodist@mambasoft.it> 2.11.2-1mamba
- automatic update to 2.11.2 by autodist
* Sat Mar 13 2010 Silvan Calarco <silvan.calarco@mambasoft.it> 2.11.1-2mamba
- rebuilt with kernel 2.6.31 headers
* Fri Nov 13 2009 Automatic Build System <autodist@mambasoft.it> 2.11-1mamba
- update to 2.11
* Tue Nov 03 2009 Silvan Calarco <silvan.calarco@mambasoft.it> 2.10.1-5mamba
- added es_ES* locale support
* Thu Sep 24 2009 Silvan Calarco <silvan.calarco@mambasoft.it> 2.10.1-4mamba
- revert back previous patch because kde and maybe other software need to be rebuilt without internal str* functions
* Fri Sep 11 2009 Automatic Build System <autodist@mambasoft.it> 2.10.1-3mamba
- automatic rebuild by autodist
- readded BSD-like strlcpy strlcat patch
* Wed Aug 12 2009 Automatic Build System <autodist@mambasoft.it> 2.10.1-2mamba
- automatic rebuild by autodist
* Thu May 28 2009 Automatic Build System <autodist@mambasoft.it> 2.10.1-1mamba
- update to 2.10.1
* Wed Apr 29 2009 Automatic Build System <autodist@mambasoft.it> 2.9-3mamba
- build with ports and libidn
* Wed Apr 29 2009 Automatic Build System <autodist@mambasoft.it> 2.9-2mamba
- automatic rebuild by autodist
* Wed Apr 15 2009 Silvan Calarco <silvan.calarco@mambasoft.it> 2.9-1mamba
- update to 2.9
* Wed Jan 28 2009 Davide Madrisan <davide.madrisan@gmail.com> 2.7-6mamba
- patch: x86-fnstsw.patch (fixes "suffix or operands invalid for `fnstsw'" in ftestexcept.c)
* Tue Sep 16 2008 Silvan Calarco <silvan.calarco@mambasoft.it> 2.7-5mamba
- rebuilt with gcc 4.3.2 and 2.6.26.5 kernel headers
* Tue Feb 05 2008 Silvan Calarco <silvan.calarco@mambasoft.it> 2.7-4mamba
- patch: only-lookup-ipv6-if-it-makes-sense (should fix ipv6 dns requests resolved to 1.0.0.0)
- patch: arm_lowlevellock fixed and renamed to lowlevellock
* Tue Dec 18 2007 Silvan Calarco <silvan.calarco@mambasoft.it> 2.7-3mamba
- post script: update /etc/localtime file
* Fri Dec 14 2007 Silvan Calarco <silvan.calarco@mambasoft.it> 2.7-2mamba
- move i18ndata script to posttrans to avoid missing prereqs errors
- added stricter version requirements for glibc-profile and others
- fixed a couple of errors in i18ndata postrans script
* Wed Nov 28 2007 Silvan Calarco <silvan.calarco@mambasoft.it> 2.7-1mamba
- update to 2.7
- added html documentation
- added cross-<platform>-glibc-stage2 provide to cross-<platform>-glibc
- added support for a limited set of default locales
- i18ndata: update locale-archive according to current LANG setting
* Fri Mar 30 2007 Silvan Calarco <silvan.calarco@mambasoft.it> 2.5-4mamba
- rebuilt with sanitized headers from clfs
- added patch that adds strlcpy and strlcat functions
* Sat Mar 24 2007 Silvan Calarco <silvan.calarco@mambasoft.it> 2.5-3qilnx
- rebuild for the openmamba platform
- cross packages obsoletion of both stage1 and stage2 transient packages
* Fri Mar 09 2007 Silvan Calarco <silvan.calarco@mambasoft.it> 2.5-2qilnx
- kernel headers update to 2.6.20
- sln moved from tools to main package for LSB compliance
- ld.so.conf: add support for includes directory ld.so.conf.d
* Fri Nov 24 2006 Silvan Calarco <silvan.calarco@mambasoft.it> 2.5-1qilnx
- new version build
* Sat Jun 24 2006 Silvan Calarco <silvan.calarco@mambasoft.it> 2.4-2qilnx
- rebuilt with cleaned headers from kernel 2.6.17
* Fri Jun 09 2006 Silvan Calarco <silvan.calarco@mambasoft.it> 2.4-1qilnx
- new version build
- added arm support
- added stage1 (only headers) and stage2 (only c cross compiler) build support
* Wed Jan 25 2006 Davide Madrisan <davide.madrisan@qilinux.it> 2.3.6-3qilnx
- patched sys/kd.h header to make linux/agpgart.h usable from userspace
* Fri Nov 04 2005 Silvan Calarco <silvan.calarco@mambasoft.it> 2.3.6-2qilnx
- added /usr/include/sound headers from kernel sources
- removed the now obsolete linuxthreads stuff
* Fri Nov 04 2005 Silvan Calarco <silvan.calarco@mambasoft.it> 2.3.6-1qilnx
- update to version 2.3.6 by autospec
* Wed Sep 07 2005 Silvan Calarco <silvan.calarco@mambasoft.it> 2.3.5-5qilnx
- add qilinux headers installation (currently for sisfb.h)
- add cross-platform (cross-glibc) build target
* Thu Aug 25 2005 Silvan Calarco <silvan.calarco@mambasoft.it> 2.3.5-4qilnx
- add specfile code for cross-platform builds
- add maintained sanitized kernel headers
- /sbin/sln moved to glibc-utils package
* Mon Jun 06 2005 Davide Madrisan <davide.madrisan@qilinux.it> 2.3.5-3qilnx
- run make check
- install man pages for linuxthread (devel package)
* Mon Jun 06 2005 Davide Madrisan <davide.madrisan@qilinux.it> 2.3.5-2qilnx
- updated kernel headers to release 2.6.11
- added package 'glibc-profile' (support for gprof profiling)
- enabled selinux support
* Thu Apr 07 2005 Davide Madrisan <davide.madrisan@qilinux.it> 2.3.5-1qilnx
- update to version 2.3.5 by autospec
- updated kernel headers to release 2.4.30
* Fri Feb 11 2005 Davide Madrisan <davide.madrisan@qilinux.it> 2.3.4-3qilnx
- removed pre scriptlet
* Wed Feb 02 2005 Davide Madrisan <davide.madrisan@qilinux.it> 2.3.4-2qilnx
- moved `ld.so.conf' and `ld.so.cache' to package ldconfig
- removed configure option `--libexecdir=${_bindir}'
* Fri Jan 28 2005 Davide Madrisan <davide.madrisan@qilinux.it> 2.3.4-1qilnx
- update to 2.3.4
* Mon Jan 12 2004 Davide Madrisan <davide.madrisan@qilinux.it> 2.3.2-9qilnx
- fixed specfile summary
* Mon Dec 15 2003 Davide Madrisan <davide.madrisan@qilinux.it> 2.3.2-8qilnx
- disabled nscd hosts caching, specfile updates
- kernel headers updated to version 2.4.22
* Tue Sep 30 2003 Silvan Calarco <silvan.calarco@mambasoft.it> 2.3.2-7qilnx
- added nscd package and automatic service configuration
* Mon Jun 16 2003 Silvan Calarco <silvan.calarco@qinet.it> 2.3.2-6qilnx
- rebuilt against gcc 3.2.3
* Mon May 05 2003 Silvan Calarco <silvan.calarco@qinet.it> 2.3.2-5qilnx
- removed /etc/localtime link (will be in setup package)
* Thu Apr 24 2003 Silvan Calarco <silvan.calarco@qinet.it> 2.3.2-4qilnx
- added linux kernel includes: /usr/include/linux, /usr/include/asm
- addded _libdir files in devel package
* Wed Apr 16 2003 Silvan Calarco <silvan.calarco@qinet.it> 2.3.2-3qilnx
- removed _libdir and _bindir * references not to include util package files
* Wed Apr 16 2003 Silvan Calarco <silvan.calarco@qinet.it> 2.3.2-2qilnx
- fixed find_requires and find_provides scripts: ignore GLIBC_PRIVATE references
- added util package, so glibc doesn't need perl as a dependancy
* Tue Apr 08 2003 Silvan Calarco <silvan.calarco@qinet.it> 2.3.2-1qilnx
- first build for 2.3.2