From b10e9555adec77d5bb17e65e19b3e10b2a69231042980c0c9abb275972ecbb6a Mon Sep 17 00:00:00 2001 From: Andreas Jaeger Date: Mon, 16 Apr 2012 20:11:08 +0000 Subject: [PATCH] Accepting request 113956 from home:a_jaeger:my-factory-packages Fix for ARM dynamic linker OBS-URL: https://build.opensuse.org/request/show/113956 OBS-URL: https://build.opensuse.org/package/show/Base:System/glibc?expand=0&rev=165 --- armhf-ld-so.patch | 10 +++++ glibc.changes | 8 ++++ glibc.rpmlintrc | 2 + glibc.spec | 99 ++++++++++++++++++++++++++++++++++------------- 4 files changed, 93 insertions(+), 26 deletions(-) create mode 100644 armhf-ld-so.patch diff --git a/armhf-ld-so.patch b/armhf-ld-so.patch new file mode 100644 index 0000000..541a9ec --- /dev/null +++ b/armhf-ld-so.patch @@ -0,0 +1,10 @@ +diff --git a/sysdeps/arm/shlib-versions b/sysdeps/arm/shlib-versions +index 491dd0a..5464959 100644 +--- a/glibc-ports-2.15/sysdeps/arm/shlib-versions ++++ b/glibc-ports-2.15/sysdeps/arm/shlib-versions +@@ -1,4 +1,4 @@ + arm.*-.*-linux-gnueabi.* DEFAULT GLIBC_2.4 + +-arm.*-.*-linux-gnueabi.* ld=ld-linux.so.3 ++arm.*-.*-linux-gnueabi.* ld=ld-linux-armhf.so.3 + arm.*-.*-linux.* ld=ld-linux.so.2 diff --git a/glibc.changes b/glibc.changes index 5082eef..a6dfede 100644 --- a/glibc.changes +++ b/glibc.changes @@ -1,3 +1,11 @@ +------------------------------------------------------------------- +Mon Apr 16 14:31:38 UTC 2012 - aj@suse.de + +- The dynamic linker for armv7 hardware float is called + /lib/ld-linux-armhf.so.3. Provide compatibility symlink. +- Do not build locales and profile for i686 since we only ship + the base and glibc-devel packages. + ------------------------------------------------------------------- Fri Apr 13 09:35:49 UTC 2012 - aj@suse.de diff --git a/glibc.rpmlintrc b/glibc.rpmlintrc index 6ddd33d..42302a2 100644 --- a/glibc.rpmlintrc +++ b/glibc.rpmlintrc @@ -14,3 +14,5 @@ addFilter(".*permissions-missing-postin missing %set_permissions /usr/.*pt_chown addFilter("glibc\..*: permissions-missing-requires") # We will not rename glibc to follow the shlib policy addFilter("shlib-policy-missing-suffix") +# The dynamic linker and libnsl call exit - this is fine +addFilter(".*shared-lib-calls-exit.*") \ No newline at end of file diff --git a/glibc.spec b/glibc.spec index aec226b..3e25917 100644 --- a/glibc.spec +++ b/glibc.spec @@ -27,8 +27,19 @@ Group: System/Libraries BuildRequires: gcc-c++ BuildRequires: libselinux-devel BuildRequires: libstdc++-devel + %define _filter_GLIBC_PRIVATE 1 +%if %_target_cpu == "i686" +# For i686 we ship only glibc and glibc-devel, so +# let's not build everything +%define build_profile 0 +%define build_locales 0 +%define build_html 0 +%else +%define build_profile 1 %define build_locales 1 +%define build_html 1 +%endif # Enable testsuite runs for local builds %if %{with glibc_run_testsuite} %define run_testsuite 1 @@ -233,6 +244,8 @@ Patch100: glibc-sw13618-2.patch Patch101: glibc-2.16-fix-check-abi.patch # PATCH-FIX-UPSTREAM Fix check-localelfplt - aj@suse.de Patch102: glibc-2.16-fix-check-localplt.patch +# PATCH-FIX-OPENSUSE Use new common path for ARMv7 hardware float linker - aj@suse.de +Patch103: armhf-ld-so.patch %description The GNU C Library provides the most important standard libraries used @@ -253,6 +266,7 @@ This package contains the documentation for the GNU C library stored as info files. Due to a lack of resources, this documentation is not complete and is partially out of date. +%if %{build_html} %package html Summary: HTML Documentation for the GNU C Library License: GFDL-1.1 @@ -263,6 +277,7 @@ BuildArch: noarch This package contains the HTML documentation for the GNU C library. Due to a lack of resources, this documentation is not complete and is partially out of date. +%endif %package i18ndata Summary: Database Sources for 'locale' @@ -308,6 +323,7 @@ Requires(postun): %insserv_prereq Nscd caches name service lookups and can dramatically improve performance with NIS, NIS+, and LDAP. +%if %{build_profile} %package profile Summary: Libc Profiling and Debugging Versions License: LGPL-2.1+ and SUSE-LGPL-2.1+-with-GCC-exception and GPL-2.0+ @@ -324,6 +340,7 @@ Obsoletes: glibc-profile-32bit %description profile This package contains special versions of the GNU C library which are necessary for profiling and debugging. +%endif %package devel Summary: Include Files and Libraries Mandatory for Development @@ -482,6 +499,9 @@ rm nscd/s-stamp %patch100 -p1 %patch101 -p1 %patch102 -p1 +%ifarch armv7l +%patch103 -p1 +%endif # # Inconsistency detected by ld.so: dl-close.c: 719: _dl_close: Assertion `map->l_init_called' failed! @@ -615,7 +635,10 @@ configure_and_build_glibc() { CFLAGS="$conf_cflags" CC="$BuildCC" CXX="$BuildCCplus" ../configure \ --prefix=%{_prefix} \ --libexecdir=%{_libdir} --infodir=%{_infodir} \ - --enable-add-ons=nptl$addons --enable-profile \ + --enable-add-ons=nptl$addons \ +%if %{build_profile} + --enable-profile \ +%endif "$@" \ %if %{enable_stackguard_randomization} --enable-stackguard-randomization \ @@ -679,7 +702,9 @@ configure_and_build_glibc() { # # Build html documentation # +%if %{build_html} make -C cc-base html +%endif # # Build glibc_post_upgrade binary @@ -732,9 +757,13 @@ export SUSE_ASNEEDED=0 %endif # File was not created as empty file by patch 101 touch abilist/libnss_dns.abilist abilist/libnss_db.abilist -# XXX This has to pass -#make -C cc-base check-abi || echo check-abi failed +# This has to pass. Exceptions: +# ARM: There's no check-abi data for arm +%ifnarch %arm make -C cc-base check-abi +#%else +#make -C cc-base check-abi || echo check-abi failed +%endif ####################################################################### ### @@ -864,8 +893,10 @@ mkdir -p %{buildroot}%{_includedir}/resolv install -m 0644 resolv/mapv4v6addr.h %{buildroot}%{_includedir}/resolv/ install -m 0644 resolv/mapv4v6hostent.h %{buildroot}%{_includedir}/resolv/ +%if %{build_html} mkdir -p %{buildroot}%{_datadir}/doc/glibc cp -p manual/libc/*.html %{buildroot}%{_datadir}/doc/glibc +%endif cd manpages; make install_root=%{buildroot} install; cd .. @@ -931,6 +962,11 @@ mkdir -p %{buildroot}/lib/systemd/system install -m 644 %{SOURCE21} %{buildroot}/lib/systemd/system install -m 644 %{SOURCE22} %{buildroot}/lib/systemd/system +%ifarch armv7l +# Provide compatibility link +ln -s ld-%{version}.so %{buildroot}/lib/ld-linux.so.3 +%endif + ####################################################################### ### ### ... @@ -1003,30 +1039,37 @@ exit 0 %doc %{_mandir}/man1/localedef.1.gz %doc %{_mandir}/man5/* /%{_lib}/ld-%{version}.so -%ifarch ppc s390 mips hppa - /%{_lib}/ld.so.1 -%else - %ifarch ia64 - /%{_lib}/ld-linux-ia64.so.2 - %else - %ifarch s390x ppc64 - /%{_lib}/ld64.so.1 - %ifarch s390x - /lib/ld64.so.1 - %endif - %else - %ifarch x86_64 - /%{_lib}/ld-linux-x86-64.so.2 - %else - %ifarch %arm - /%{_lib}/ld-linux.so.3 - %else - /%{_lib}/ld-linux.so.2 - %endif - %endif - %endif - %endif + +# Each architecture has a different name for the dynamic linker: +%ifarch %arm +%ifarch armv7l +/%{_lib}/ld-linux-armhf.so.3 +# Keep compatibility link +/%{_lib}/ld-linux.so.3 %endif +%else +/%{_lib}/ld-linux.so.2 +%endif +%ifarch ia64 +/%{_lib}/ld-linux-ia64.so.2 +%endif +%ifarch ppc s390 mips hppa +/%{_lib}/ld.so.1 +%endif +%ifarch ppc64 +/%{_lib}/ld64.so.1 +%endif +%ifarch s390x +/lib/ld64.so.1 +/%{_lib}/ld64.so.1 +%endif +%ifarch x86_64 +/%{_lib}/ld-linux-x86-64.so.2 +%endif +%ifarch %ix86 +/%{_lib}/ld-linux.so.2 +%endif + /%{_lib}/libBrokenLocale-%{version}.so /%{_lib}/libBrokenLocale.so.1 /%{_lib}/libSegFault.so @@ -1183,9 +1226,11 @@ exit 0 %doc %{_infodir}/libc.info-?.gz %doc %{_infodir}/libc.info-??.gz +%if %{build_html} %files html %defattr(-,root,root) %doc %{_prefix}/share/doc/glibc +%endif %files i18ndata %defattr(-,root,root) @@ -1208,6 +1253,7 @@ exit 0 %attr(0600,root,root) %verify(not md5 size mtime) %ghost %config(missingok,noreplace) /var/run/nscd/group %attr(0600,root,root) %verify(not md5 size mtime) %ghost %config(missingok,noreplace) /var/run/nscd/hosts +%if %{build_profile} %files profile %defattr(-,root,root) %{_libdir}/libc_p.a @@ -1222,6 +1268,7 @@ exit 0 %{_libdir}/librpcsvc_p.a %{_libdir}/libutil_p.a %{_libdir}/libdl_p.a +%endif %files utils %defattr(-,root,root)