# 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 glibc_headers_dir %{_builddir}/%{name}-%{version}/linux-headers/include %define majver %(echo %version | cut -d. -f1-2) #%define minver %(echo %version | cut -d. -f3) %define enablekernel 2.6.16 %if "%{?build_doc}" == "" %define build_doc 1 %endif %if "%{?build_profile}" == "" %define build_profile 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_profile 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_profile 0 %define build_selinux 0 %endif %define target_cpu %(echo %{_target_platform} | cut -d- -f1) %if "%{multilib}" == "1" %define _host %{_build} %define _target_platform %{_build} %endif %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 %if "%{multilib}" != "1" %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} %else %define glibc_prefix /usr %define glibc_libdir /usr/lib %define glibc_datadir %{_datadir} %define glibc_libexecdir /usr/libexec %define glibc_includedir /usr/include %define slibdir /lib %define glibc_target_cpu %{_build_cpu} %endif %endif %define buildcc %{_target_platform}-gcc %define buildcxx %{_target_platform}-g++ %if "%{_target_platform}" != "%{_build}" %define build_doc 0 %define build_profile 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.28 Release: 3mamba Summary: The GNU libc libraries Group: System/Libraries Vendor: openmamba Distribution: openmamba Packager: Silvan Calarco URL: http://www.gnu.org/software/libc/ Source0: http://ftp.gnu.org/gnu/glibc/glibc-%{version}.tar.xz ## glibc-ports got from head (release/2.12/master) here: ## http://sourceware.org/git/?p=glibc-ports.git #Source1: http://ftp.gnu.org/gnu/glibc/glibc-ports-%{version}.tar.xz #Source0: ftp://sources.redhat.com/pub/glibc/snapshots/glibc-%{majver}-%{minver}.tar.bz2 #Source1: ftp://sources.redhat.com/pub/glibc/snapshots/glibc-%{majver}-ports-latest.tar.bz2 #Source1: ftp://sources.redhat.com/pub/glibc/snapshots/glibc-%{majver}-ports-%{minver}.tar.bz2 #Source3: http://ftp.gnu.org/gnu/glibc/glibc-libidn-%{version}.tar.bz2 #Source3: ftp://sources.redhat.com/pub/glibc/snapshots/glibc-%{majver}-libidn-%{minver}.tar.bz2 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: 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 %ifarch %{ix86} Provides: glibc-multilib.x86_64 Obsoletes: glibc-multilib.x86_64 %endif Requires: ldconfig = %{?epoch:%epoch:}%{version}-%{release} Requires: locales = %{?epoch:%epoch:}%{version}-%{release} Requires: glibc-utils = %{?epoch:%epoch:}%{version}-%{release} %systemd_requires Prefix: %{_prefix} 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. %if "%{multilib}" %package multilib Summary: The GNU libc libraries (multilib) Group: System/Libraries Requires(post):%{__install_info} %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 package also contains national language (locale) support. %endif %package %{?multilib:multilib-}devel Summary: Header and object files for development using standard C libraries. Group: Development/Libraries Requires: %{name}%{?multilib:-multilib} = %{?epoch:%epoch:}%{version}-%{release} Prereq: %{__install_info} %if "%{multilib}" == "1" # non-multilib glibc-devel required for /usr/include headers Requires: glibc-devel %endif %description %{?multilib:multilib-}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. %if "%{build_profile}" == "1" %package %{?multilib:multilib-}profile Summary: The GNU libc libraries, including support for gprof profiling Group: Development/Libraries Requires: %{name}%{?multilib:-multilib} = %{?epoch:%epoch:}%{version}-%{release} %description %{?multilib:multilib-}profile 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. If you are going to use the gprof program to profile a program, you'll need to install the glibc-profile program. %endif %if %{build_doc} %package %{?multilib:multilib-}apidocs Summary: GNU libc libraries API documentation Group: Documentation Requires: glibc-%{?multilib:multilib-}devel = %{?epoch:%epoch:}%{version}-%{release} %description %{?multilib:multilib-}apidocs GNU libc libraries API documentation. %endif %package %{?multilib:multilib-}i18ndata Summary: Database sources for 'locale' Group: System/Libraries Requires(pre): %{name}%{?multilib:-multilib} = %{?epoch:%epoch:}%{version}-%{release} %description %{?multilib:multilib-}i18ndata This package contains the data needed to build the locale data files to use the internationalization features of the GNU libc. %package %{?multilib:multilib-}utils Summary: Development utilities from GNU C library Group: Development/Tools Requires: %{name}%{?multilib:-multilib} = %{?epoch:%epoch:}%{version}-%{release} %description %{?multilib:multilib-}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%{?multilib:-multilib} 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%{?multilib:-multilib} 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%{?multilib:-multilib} Summary: Time zone descriptions Group: System/Internationalization Requires: %{name} = %{?epoch:%epoch:}%{version}-%{release} Requires(post):tzdata %description -n timezone%{?multilib:-multilib} These are configuration files that describe possible time zones. %package -n locales%{?multilib:-multilib} Summary: Base files for localization Group: System/Internationalization Requires: %{name} = %{?epoch:%epoch:}%{version}-%{release} %description -n locales%{?multilib:-multilib} 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%{?multilib:-multilib} Summary: Name service cache daemon Group: System/Servers Requires: logrotate >= 3.6.8 %description -n nscd%{?multilib:-multilib} 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}" %if "%{multilib}" != "1" %debug_package %endif %endif %prep %setup -q -n %{name}-%{version} #-D -T #:<< ___EOF %patch5 -p1 %patch17 -p1 %patch18 -p1 #cd glibc-ports-%{version} #%patch15 -p2 #cd .. #%patch16 -p1 ## FIX build with make 3.82 (see http://comments.gmane.org/gmane.linux.lfs.support/31227) #sed -i 's/ot \$/ot:\n\ttouch $@\n$/' manual/Makefile %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 %{_prefix}/lib/rpm/find-provides | grep -v GLIBC_PRIVATE 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 -O3" ;; ppc|powerpc) platform_includes=asm-powerpc buildflags="-g -O3" ;; arm) platform_includes=asm-arm #abi=%{_target_platform} #abi=`echo ${abi/*-}` #if [ "$abi" = "gnueabihf" ]; then # buildflags="-g -O3 -fgnu89-inline -mfloat-abi=hard" #else buildflags="-g -O3 -fgnu89-inline" #fi ;; x86_64) platform_includes=asm-x86_64 buildflags="-g -O3" ;; *) echo "Target CPU %{target_cpu} not supported. Aborting." exit 1 ;; esac # prepare kernel headers for platform mkdir -p %{glibc_headers_dir} if [ -e /usr/src/linux-%{KERNEL_VERSION}%{KERNEL_TARGET}/usr/include/linux/version.h ]; then cp -af /usr/src/linux-%{KERNEL_VERSION}%{KERNEL_TARGET}/usr/include/* %{glibc_headers_dir} elif [ -e /usr/src/linux-%{KERNEL_TARGET}/usr/include/linux/version.h ]; then cp -af /usr/src/linux-%{KERNEL_TARGET}/usr/include/* %{glibc_headers_dir} elif [ -e /usr/src/linux/usr/include/linux/version.h ]; then cp -af /usr/src/linux/usr/include/* %{glibc_headers_dir} else echo "ERROR: can't find suitable kernel headers; aborting." exit 1 fi function build_glibc() { local builddir="$1"; shift case %{target_cpu} in i*86|athlon*) %if "%{?bigendian}" == "1" echo "Error: bigendian build is not supported on i*86 architecture" exit 1 %endif %if "%{?softfloat}" == "1" echo "Error: softfloat build is not supported for i*86 architecture" exit 1 %endif CONFIG_OPTS="--enable-targets=x86_64-%{_target_vendor}-linux" ;; ppc|powerpc) %if "%{?bigendian}" == "1" echo "Error: bigendian build is not supported on ppc architecture" exit 1 %endif %if "%{?softfloat}" == "1" echo "Error: softfloat build is not supported on ppc architecture" exit 1 %endif CONFIG_OPTS="--enable-targets=powerpc64-%{_target_vendor}-linux" ;; arm) %if "%{?softfloat}" == "1" CONFIG_LIBDIR_ADD="/soft-float" CONFIG_ADD="--without-fp" CC_ADD="-msoft-float" %else CONFIG_OPTS="" %endif %if "%{?bigendian}" == "1" CONFIG_LIBDIR_ADD="/be${CONFIG_LIBDIR_ADD}" CC_ADD="-mbig-endian" AS_ADD="-mbig-endian" %endif # PRECONFIG_OPTS="CC=\"arm-%{_target_vendor}-linux-gnu-gcc $CC_ADD -finline-limit=10000\" # AS=\"arm-%{_target_vendor}-linux-gnu-as $AS_ADD\" # LD=\"arm-%{_target_vendor}-linux-gnu-ld -EB\"" # SLIBDIR=/usr/arm-%{_target_vendor}-linux-gnu/lib${CONFIG_LIBDIR_ADD} # CONFIG_OPTS="$CONFIG_ADD --libdir=$SLIBDIR" CONFIG_OPTS="" ;; x86_64) %if "%{?bigendian}" == "1" echo "Error: bigendian build is not supported on i*86 architecture" exit 1 %endif %if "%{?softfloat}" == "1" echo "Error: softfloat build is not supported for i*86 architecture" exit 1 %endif CONFIG_OPTS="--enable-targets=i586-%{_target_vendor}-linux" ;; *) echo "Target CPU %{target_cpu} not supported.Aborting." exit 1 ;; esac rm -rf ../$builddir mkdir ../$builddir ( cd ../$builddir # %if "%{?_target_platform}" != "%{_host}" # echo "libc_cv_forced_unwind=yes" > config.cache # echo "libc_cv_c_cleanup=yes" >> config.cache # %endif %if "%{?stage2}" == "1" # there is no --disable-ssp option echo "libc_cv_ssp=no" > config.cache %endif eval $PRECONFIG_OPTS ../%{name}-%{version}/configure \ --prefix=%{glibc_prefix} \ --infodir=%{_infodir} \ --libexecdir=%{glibc_libexecdir} \ --with-headers=%{glibc_headers_dir} $@\ --enable-kernel=%{enablekernel} \ --without-cvs \ --enable-bind-now \ --build=%{_build} \ %if "%{?stage1}" != "1" --host=%{_target_platform} \ %endif %if "%{?stage2}" --cache-file=config.cache \ %endif $CONFIG_OPTS \ CFLAGS=\"$buildflags\ -Wl,--build-id\" # --with-binutils=%{_prefix}/bin \ # CC=%{buildcc} \ # CXX=%{buildcxx} \ # %if "%{_target_platform}" != "%{_host}" # --cache-file=config.cache \ # %endif %if "%{?stage1}" != "1" make %{_smp_mflags} -r %PARALLELMFLAGS=-s slibdir=%{slibdir} \ %if "%{_target_platform}" != "%{_host}" %if "%{?stage2}" != "1" LDLIBS-resolv.so+="-lssp" LDFLAGS-nscd+="-lssp" %endif %endif #CFLAGS="$buildflags" %endif ) } %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 "%{build_profile}" == "1" build_glibc glibc-build-profile --enable-profile $opt_tls $opt_selinux %endif build_glibc glibc-build $opt_tls $opt_selinux # build documentation (pdf and html formats) %if %{build_doc} make pdf html -C ../glibc-build %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 "%{build_profile}" == "1" make install -C ../glibc-build-profile install_root=%{buildroot} %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 install -d %{buildroot}%{glibc_includedir} cp -avrf %{glibc_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 # work around to avoid stripping libthread_db-1.0.so for debugging %if "%{?stage1}" != "1" chmod -x %{buildroot}/%{slibdir}/libthread_db-1.0.so %endif %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 # work around to avoid stripping libthread_db-1.0.so for debugging %if "%{?stage1}" != "1" chmod -x %{buildroot}/%{glibc_libdir}/libthread_db-1.0.so %endif %endif %if "%{multilib}" == "1" cp %{buildroot}%{glibc_includedir}/gnu/stubs-32.h %{buildroot}/ rm -rf %{buildroot}%{glibc_includedir} install -d -m0755 %{buildroot}%{glibc_includedir}/gnu/ mv %{buildroot}/stubs-32.h %{buildroot}%{glibc_includedir}/gnu/stubs-32.h # multilib: remove unuseful files depending on other 32bit libraries rm -f %{buildroot}%{_bindir}/memusagestat rm -f %{buildroot}%{_bindir}/makedb rm -f %{buildroot}%{_sbindir}/nscd %endif # install rpc headers removed since glibc 2.14 but required by e.g. samba and libtirpc #install -d -m0755 %{buildroot}%{glibc_includedir}/rpc #cp -v ../glibc-%{version}/sunrpc/rpc/*.h %{buildroot}%{glibc_includedir}/rpc/ #install -d -m0755 %{buildroot}%{glibc_includedir}/rpcsvc #cp -v ../glibc-%{version}/sunrpc/rpcsvc/*.h %{buildroot}%{glibc_includedir}/rpcsvc/ #cp -v ../glibc-%{version}/nis/rpcsvc/*.h %{buildroot}%{glibc_includedir}/rpcsvc/ 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 %{?multilib:multilib} -p /sbin/ldconfig %postun %{?multilib:multilib} -p /sbin/ldconfig %pre %{?multilib:multilib-}devel [ -L %{_includedir}/asm ] && rm -f %{_includedir}/asm # Remove old directory asm- 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 %{?multilib:multilib-}devel %install_info libc.info : %postun %{?multilib:multilib-}devel %uninstall_info libc.info : %posttrans %{?multilib:multilib-}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%{?multilib:-multilib} 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%{?multilib:-multilib} %systemd_post nscd : %preun -n nscd%{?multilib:-multilib} %systemd_preun nscd if [ $1 -eq 0 ]; then /usr/sbin/userdel nscd fi : %postun -n nscd%{?multilib:-multilib} %systemd_postun_with_restart nscd : %if "%{_target_platform}" == "%{_host}" %files %{?multilib:multilib} %defattr(-,root,root) %config(noreplace) %{_sysconfdir}/rpc /%{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 %if "%{multilib}" != "1" %{glibc_libexecdir}/getconf/POSIX_V6_LP64_OFF64 %{glibc_libexecdir}/getconf/POSIX_V7_LP64_OFF64 %{glibc_libexecdir}/getconf/XBS5_LP64_OFF64 %else %{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 %endif %doc COPYING* LICENSES %if "%{build_profile}" == "1" %files %{?multilib:multilib-}profile %defattr(-,root,root) %{glibc_libdir}/lib*_p.a %endif %files %{?multilib:multilib-}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 ChangeLog %doc NEWS README* %if %{build_doc} %files %{?multilib:multilib-}apidocs %defattr(-,root,root) %dir %{_docdir}/libc/ %{_docdir}/libc/* %endif %files %{?multilib:multilib-}i18ndata %defattr(-,root,root) %dir %{glibc_datadir}/i18n %{glibc_datadir}/i18n/* %files %{?multilib:multilib-}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 %if "%{multilib}" == "1" %{_bindir}/lddlibc4 %endif %if "%{multilib}" != "1" %{_bindir}/memusagestat %{_bindir}/makedb %endif %endif %{glibc_libdir}/audit/sotruss-lib.so #%{glibc_libexecdir}/pt_chown %{slibdir}/libmemusage.so %{slibdir}/libpcprofile.so %files -n ldconfig%{?multilib:-multilib} %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%{?multilib:-multilib} -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%{?multilib:-multilib} %defattr(-,root,root) %config(noreplace) %{_sysconfdir}/logrotate.d/nscd %config(noreplace) %{_sysconfdir}/nscd.conf %{_unitdir}/nscd.service %if "%{multilib}" != "1" %{_sbindir}/nscd %endif %attr(0755,nscd,nscd) /var/log/nscd %files -n timezone%{?multilib:-multilib} %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 * Sun Sep 23 2018 Silvan Calarco 2.28-3mamba - glibc: require locales package * Fri Sep 21 2018 Silvan Calarco 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 2.28-1mamba - automatic version update by autodist * Fri Feb 09 2018 Automatic Build System 2.27-1mamba - automatic version update by autodist * Sat Dec 23 2017 Silvan Calarco 2.26-3mamba - added xlocale.h legacy symlink to locale.h - nscd: switch to systemd * Sat Sep 30 2017 Silvan Calarco 2.26-2mamba - rebuilt without --enable-obsolete-rpc * Sat Sep 09 2017 Automatic Build System 2.26-1mamba - automatic version update by autodist * Sun Jul 23 2017 Silvan Calarco 2.25-2mamba - patch to fix unexported function in libresolv breaking runtime and buildtime things * Fri Jul 21 2017 Automatic Build System 2.25-1mamba - automatic version update by autodist * Fri Aug 05 2016 Automatic Build System 2.24-1mamba - automatic version update by autodist * Fri Feb 19 2016 Automatic Build System 2.23-1mamba - automatic version update by autodist * Mon Aug 17 2015 Automatic Build System 2.22-1mamba - automatic version update by autodist * Sun Apr 12 2015 Silvan Calarco 2.21-3mamba - new cross target: arm-openmamba-linux-gnueabihf * Thu Mar 26 2015 Silvan Calarco 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 2.21-1mamba - automatic version update by autodist * Mon Sep 08 2014 Automatic Build System 2.20-1mamba - automatic version update by autodist * Sat Aug 23 2014 Silvan Calarco 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 2.19-3mamba - fix %pre old %{_includedir}/asm symlink stuff * Sun Apr 20 2014 Silvan Calarco 2.19-2mamba - rebuilt with enable-obsolete-rpc required by pwdutils * Sun Feb 09 2014 Automatic Build System 2.19-1mamba - automatic version update by autodist * Sat Aug 17 2013 Automatic Build System 2.18-1mamba - automatic version update by autodist * Tue Jan 15 2013 Automatic Build System 2.17-1mamba - update to 2.17 * Mon Oct 01 2012 Silvan Calarco 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 2.16.0-1mamba - automatic version update by autodist * Thu Jun 14 2012 Automatic Build System 2.15-1mamba - automatic version update by autodist * Mon Oct 10 2011 Automatic Build System 2.14.1-1mamba - automatic version update by autodist * Wed Aug 24 2011 Silvan Calarco 2.14-5mamba - complete rpc/nis patch by reexporting symbols * Tue Aug 23 2011 Silvan Calarco 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 2.14-3mamba - added patch to fix resolver crash in __libc_res_query * Thu Aug 11 2011 Silvan Calarco 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 2.14-1mamba - automatic update by autodist * Tue Apr 19 2011 Silvan Calarco 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 2.13-3mamba - timezone: modify to use zoneinfo from tzdata * Sat Feb 19 2011 Silvan Calarco 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 2.13-1mamba - update to 2.13 * Tue Dec 14 2010 Automatic Build System 2.12.2-1mamba - automatic update to 2.12.2 by autodist * Mon Dec 13 2010 Davide Madrisan 2.12.1-3mamba - provides rtld(GNU_HASH) for google-talkplugin and other closed-source packages * Wed Nov 24 2010 Silvan Calarco 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 2.12.1-1mamba - update to 2.12.1 * Fri May 28 2010 Automatic Build System 2.11.2-1mamba - automatic update to 2.11.2 by autodist * Sat Mar 13 2010 Silvan Calarco 2.11.1-2mamba - rebuilt with kernel 2.6.31 headers * Fri Nov 13 2009 Automatic Build System 2.11-1mamba - update to 2.11 * Tue Nov 03 2009 Silvan Calarco 2.10.1-5mamba - added es_ES* locale support * Thu Sep 24 2009 Silvan Calarco 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 2.10.1-3mamba - automatic rebuild by autodist - readded BSD-like strlcpy strlcat patch * Wed Aug 12 2009 Automatic Build System 2.10.1-2mamba - automatic rebuild by autodist * Thu May 28 2009 Automatic Build System 2.10.1-1mamba - update to 2.10.1 * Wed Apr 29 2009 Automatic Build System 2.9-3mamba - build with ports and libidn * Wed Apr 29 2009 Automatic Build System 2.9-2mamba - automatic rebuild by autodist * Wed Apr 15 2009 Silvan Calarco 2.9-1mamba - update to 2.9 * Wed Jan 28 2009 Davide Madrisan 2.7-6mamba - patch: x86-fnstsw.patch (fixes "suffix or operands invalid for `fnstsw'" in ftestexcept.c) * Tue Sep 16 2008 Silvan Calarco 2.7-5mamba - rebuilt with gcc 4.3.2 and 2.6.26.5 kernel headers * Tue Feb 05 2008 Silvan Calarco 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 2.7-3mamba - post script: update /etc/localtime file * Fri Dec 14 2007 Silvan Calarco 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 2.7-1mamba - update to 2.7 - added html documentation - added cross--glibc-stage2 provide to cross--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 2.5-4mamba - rebuilt with sanitized headers from clfs - added patch that adds strlcpy and strlcat functions * Sat Mar 24 2007 Silvan Calarco 2.5-3qilnx - rebuild for the openmamba platform - cross packages obsoletion of both stage1 and stage2 transient packages * Fri Mar 09 2007 Silvan Calarco 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 2.5-1qilnx - new version build * Sat Jun 24 2006 Silvan Calarco 2.4-2qilnx - rebuilt with cleaned headers from kernel 2.6.17 * Fri Jun 09 2006 Silvan Calarco 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 2.3.6-3qilnx - patched sys/kd.h header to make linux/agpgart.h usable from userspace * Fri Nov 04 2005 Silvan Calarco 2.3.6-2qilnx - added /usr/include/sound headers from kernel sources - removed the now obsolete linuxthreads stuff * Fri Nov 04 2005 Silvan Calarco 2.3.6-1qilnx - update to version 2.3.6 by autospec * Wed Sep 07 2005 Silvan Calarco 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 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 2.3.5-3qilnx - run make check - install man pages for linuxthread (devel package) * Mon Jun 06 2005 Davide Madrisan 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 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 2.3.4-3qilnx - removed pre scriptlet * Wed Feb 02 2005 Davide Madrisan 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 2.3.4-1qilnx - update to 2.3.4 * Mon Jan 12 2004 Davide Madrisan 2.3.2-9qilnx - fixed specfile summary * Mon Dec 15 2003 Davide Madrisan 2.3.2-8qilnx - disabled nscd hosts caching, specfile updates - kernel headers updated to version 2.4.22 * Tue Sep 30 2003 Silvan Calarco 2.3.2-7qilnx - added nscd package and automatic service configuration * Mon Jun 16 2003 Silvan Calarco 2.3.2-6qilnx - rebuilt against gcc 3.2.3 * Mon May 05 2003 Silvan Calarco 2.3.2-5qilnx - removed /etc/localtime link (will be in setup package) * Tue Apr 24 2003 Silvan Calarco 2.3.2-4qilnx - added linux kernel includes: /usr/include/linux, /usr/include/asm - addded _libdir files in devel package * Tue Apr 16 2003 Silvan Calarco 2.3.2-3qilnx - removed _libdir and _bindir * references not to include util package files * Tue Apr 16 2003 Silvan Calarco 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 2.3.2-1qilnx - first build for 2.3.2