%global target arm-linux-gnu %global _binaries_in_noarch_packages_terminate_build 0 Name: glibc-%{target} Version: 2.23 Release: 4%{?dist} Summary: Cross Compiled GNU C Library targeted at %{target} Group: Development/Languages # If we have kernel-cross-headers, then this package is just glibc. # Otherwise, we need to bundle the headers in here, which adds GPLv2. %if 0%{?fedora} >= 24 License: LGPLv2+ and BSD and MIT %else License: LGPLv2+ and BSD and MIT and GPLv2 %endif URL: http://www.gnu.org/software/libc/ Source0: ftp://ftp.gnu.org/gnu/glibc/glibc-%{version}.tar.xz # https://sourceware.org/git/?p=glibc.git;a=commit;h=df1cf48777fe4cd81ad7fb09ecbe5b31432b7c1c Patch0: glibc-fix-gcc-6.1.patch # taken from kernel-4.3.5-300 # unpack the kernel-headers package for arm, then copy everything from /usr/include into arm-kernel-headers/ # Then tarball this up. We only use this for targets without kernel-cross-headers Source1: arm-kernel-headers-4.3.5-300.tar.xz BuildRequires: gcc-%{target} # The kernel-cross-headers package only exists on Fedora 24+. %if 0%{?fedora} >= 24 BuildRequires: kernel-cross-headers %endif # Noarch is what we have to tell it so it doesn't mind the cross-bits as much BuildArch: noarch %description This is a Cross Compiled version of the GNU C Library, which can be used to compile and link binaries for the %{target} platform, instead of for the native platform. %package devel Requires: %{name} = %{version}-%{release} %if 0%{?fedora} >= 24 Requires: kernel-cross-headers %endif Summary: Development files for the %{target} GNU C Library %description devel Development files for the %{target} GNU C Library. %prep %setup -q -c %patch0 -p1 -b .gcc61 %if 0%{?fedora} < 24 pushd glibc-%{version} tar -xf %{SOURCE1} popd %global headerspath %{_topdir}/BUILD/%{name}-%{version}/glibc-%{version}/arm-kernel-headers/usr/include %else %global headerspath %{_prefix}/%{target}/include %endif # Convert files to utf8 for i in glibc-%{version}/ChangeLog.*; do iconv -f iso8859-1 -t utf8 $i -o $i.utf8 touch -r $i $i.utf8 mv $i.utf8 $i done %build mkdir -p build-%{target}-glibc pushd build-%{target}-glibc # CFLAGS not used, maybe we should ? ../glibc-%{version}/configure --prefix=%{_prefix}/%{target} \ --build=`uname -m` --host=%{target} --with-headers=%{headerspath} --enable-kernel=2.6.32 \ --without-fp --disable-profile --without-selinux make %{?_smp_mflags} # generate stubs.h for i in io math misc posix stdlib streams; do make -C ../glibc-%{version}/$i objdir=`pwd` stubs cat $i/stubs >> subdir-stubs.h done sed '/^@/d' < ../glibc-%{version}/include/stubs-prologue.h > stubs.h sort subdir-stubs.h >> stubs.h popd %install pushd build-%{target}-glibc make %{?_smp_mflags} install_root=%{buildroot} install popd %if 0%{?fedora} < 24 pushd glibc-%{version}/arm-kernel-headers/usr/include cp -a * %{buildroot}%{_prefix}/%{target}/include/ popd %endif # These binaries are not useful rm -rf %{buildroot}%{_prefix}/%{target}/bin %{buildroot}%{_prefix}/%{target}/sbin %{buildroot}%{_prefix}/%{target}/libexec # despite us being noarch redhat-rpm-config insists on stripping our files # and on running find-debuginfo.sh on our files %global __debug_install_post %{nil} %global __os_install_post /usr/lib/rpm/brp-compress # stop rpm from claiming we provide and need native glibc symbols %global _use_internal_dependency_generator 0 %global __find_requires %{nil} %global __find_provides %{nil} %files %doc glibc-%{version}/BUGS glibc-%{version}/CONFORMANCE %doc glibc-%{version}/README %license glibc-%{version}/COPYING* %license glibc-%{version}/LICENSES %{_prefix}/%{target}/etc %{_prefix}/%{target}/lib %dir %{_prefix}/%{target} %dir %{_prefix}/%{target}/share %dir %{_prefix}/%{target}/share/locale %{_prefix}/%{target}/share/locale/locale.alias %{_prefix}/%{target}/share/i18n/ %{_prefix}/%{target}/var %exclude %{_prefix}/%{target}/include/ %exclude %{_prefix}/%{target}/lib/libanl.a %exclude %{_prefix}/%{target}/lib/libanl.so %exclude %{_prefix}/%{target}/lib/libBrokenLocale.a %exclude %{_prefix}/%{target}/lib/libBrokenLocale.so %exclude %{_prefix}/%{target}/lib/libc.a %exclude %{_prefix}/%{target}/lib/libcidn.so %exclude %{_prefix}/%{target}/lib/libc_nonshared.a %exclude %{_prefix}/%{target}/lib/libcrypt.a %exclude %{_prefix}/%{target}/lib/libcrypt.so %exclude %{_prefix}/%{target}/lib/libdl.a %exclude %{_prefix}/%{target}/lib/libdl.so %exclude %{_prefix}/%{target}/lib/libg.a %exclude %{_prefix}/%{target}/lib/libieee.a %exclude %{_prefix}/%{target}/lib/libm.a %exclude %{_prefix}/%{target}/lib/libmcheck.a %exclude %{_prefix}/%{target}/lib/libm.so %exclude %{_prefix}/%{target}/lib/libnsl.a %exclude %{_prefix}/%{target}/lib/libnsl.so %exclude %{_prefix}/%{target}/lib/libnss_compat.so %exclude %{_prefix}/%{target}/lib/libnss_db.so %exclude %{_prefix}/%{target}/lib/libnss_dns.so %exclude %{_prefix}/%{target}/lib/libnss_files.so %exclude %{_prefix}/%{target}/lib/libnss_hesiod.so %exclude %{_prefix}/%{target}/lib/libnss_nisplus.so %exclude %{_prefix}/%{target}/lib/libnss_nis.so %exclude %{_prefix}/%{target}/lib/libpthread.a %exclude %{_prefix}/%{target}/lib/libpthread_nonshared.a %exclude %{_prefix}/%{target}/lib/libresolv.a %exclude %{_prefix}/%{target}/lib/libresolv.so %exclude %{_prefix}/%{target}/lib/librpcsvc.a %exclude %{_prefix}/%{target}/lib/librt.a %exclude %{_prefix}/%{target}/lib/librt.so %exclude %{_prefix}/%{target}/lib/libthread_db.so %exclude %{_prefix}/%{target}/lib/libutil.a %exclude %{_prefix}/%{target}/lib/libutil.so %files devel %{_prefix}/%{target}/include/ %{_prefix}/%{target}/lib/libanl.a %{_prefix}/%{target}/lib/libanl.so %{_prefix}/%{target}/lib/libBrokenLocale.a %{_prefix}/%{target}/lib/libBrokenLocale.so %{_prefix}/%{target}/lib/libc.a %{_prefix}/%{target}/lib/libcidn.so %{_prefix}/%{target}/lib/libc_nonshared.a %{_prefix}/%{target}/lib/libcrypt.a %{_prefix}/%{target}/lib/libcrypt.so %{_prefix}/%{target}/lib/libdl.a %{_prefix}/%{target}/lib/libdl.so %{_prefix}/%{target}/lib/libg.a %{_prefix}/%{target}/lib/libieee.a %{_prefix}/%{target}/lib/libm.a %{_prefix}/%{target}/lib/libmcheck.a %{_prefix}/%{target}/lib/libm.so %{_prefix}/%{target}/lib/libnsl.a %{_prefix}/%{target}/lib/libnsl.so %{_prefix}/%{target}/lib/libnss_compat.so %{_prefix}/%{target}/lib/libnss_db.so %{_prefix}/%{target}/lib/libnss_dns.so %{_prefix}/%{target}/lib/libnss_files.so %{_prefix}/%{target}/lib/libnss_hesiod.so %{_prefix}/%{target}/lib/libnss_nisplus.so %{_prefix}/%{target}/lib/libnss_nis.so %{_prefix}/%{target}/lib/libpthread.a %{_prefix}/%{target}/lib/libpthread_nonshared.a %{_prefix}/%{target}/lib/libresolv.a %{_prefix}/%{target}/lib/libresolv.so %{_prefix}/%{target}/lib/librpcsvc.a %{_prefix}/%{target}/lib/librt.a %{_prefix}/%{target}/lib/librt.so %{_prefix}/%{target}/lib/libthread_db.so %{_prefix}/%{target}/lib/libutil.a %{_prefix}/%{target}/lib/libutil.so %changelog * Mon Jun 6 2016 Tom Callaway - 2.23-4 - drop Changelogs (not useful in a cross-compile package) - own COPYING as license - own /usr/arm-linux-gnu - document how to make arm-kernel-headers tarball (f23 and older) - fix license tag to be pedantic correct vs inherited correct * Thu May 19 2016 Tom Callaway - 2.23-3 - fix compile with gcc 6.1 (thanks to Yvan Roux and Dominik 'Rathann' Mierzejewski) * Tue Apr 26 2016 Tom Callaway - 2.23-2 - no locales - no infodir (if we want this later, add BuildRequires: texinfo) * Fri Feb 26 2016 Tom Callaway - 2.23-1 - modernize spec file - update to 2.23 * Mon Feb 8 2016 Tom Callaway - 2.22-2 - package kernel headers in this too (for now) * Wed Feb 3 2016 Tom Callaway - 2.22-1 - HELP ME I AM IN HELL