From 1903aa3536a887f693088b0404a8dd2214dfb6fc Mon Sep 17 00:00:00 2001 From: Anas Nashif Date: Tue, 29 Jan 2013 06:10:15 -0800 Subject: [PATCH] use alternatives for gold --- packaging/binutils.spec | 1 + packaging/cross-arm-binutils.spec | 73 ++++++++++++++---------------------- packaging/cross-i386-binutils.spec | 73 ++++++++++++++---------------------- packaging/cross-x86_64-binutils.spec | 73 ++++++++++++++---------------------- 4 files changed, 88 insertions(+), 132 deletions(-) diff --git a/packaging/binutils.spec b/packaging/binutils.spec index e6c12b1..04ac57d 100644 --- a/packaging/binutils.spec +++ b/packaging/binutils.spec @@ -8,6 +8,7 @@ BuildRequires: glibc-devel-static BuildRequires: bc BuildRequires: makeinfo BuildRequires: zlib-devel-static +Requires(pre): update-alternatives Version: 2.23.1 Release: 0 # diff --git a/packaging/cross-arm-binutils.spec b/packaging/cross-arm-binutils.spec index 396c8e8..8702b5f 100644 --- a/packaging/cross-arm-binutils.spec +++ b/packaging/cross-arm-binutils.spec @@ -51,19 +51,6 @@ Group: Development/Tools/Building Source: binutils-%{binutils_version}.tar.bz2 Source1: pre_checkin.sh Source3: baselibs.conf -# Patches auto-generated by git-buildpackage: -Patch0: 0001-skip-rpaths.patch -Patch1: 0002-x86-64-biarch.patch -Patch2: 0003-unit-at-a-time.patch -Patch3: 0004-ld-dtags.patch -Patch4: 0005-ld-relro.patch -Patch5: 0006-testsuite.patch -Patch6: 0007-enable-targets-gold.patch -Patch7: 0008-use-hashtype-both-by-default.patch -Patch8: 0009-build-as-needed.patch -Patch9: 0010-fixup-testcase-perturb.patch -Patch10: 0011-gold-depend-on-opcodes.patch -Patch11: 0012-bso12451.patch %description C compiler utilities: ar, as, gprof, ld, nm, objcopy, objdump, ranlib, @@ -110,30 +97,6 @@ binutils. %prep echo "make check will return with %{make_check_handling} in case of testsuite failures." %setup -q -n binutils-%{binutils_version} -# 0001-skip-rpaths.patch -%patch0 -p1 -# 0002-x86-64-biarch.patch -%patch1 -p1 -# 0003-unit-at-a-time.patch -%patch2 -p1 -# 0004-ld-dtags.patch -%patch3 -p1 -# 0005-ld-relro.patch -%patch4 -p1 -# 0006-testsuite.patch -%patch5 -p1 -# 0007-enable-targets-gold.patch -%patch6 -p1 -# 0008-use-hashtype-both-by-default.patch -%patch7 -p1 -# 0009-build-as-needed.patch -%patch8 -p1 -# 0010-fixup-testcase-perturb.patch -%patch9 -p1 -# 0011-gold-depend-on-opcodes.patch -%patch10 -p1 -# 0012-bso12451.patch -%patch11 -p1 sed -i -e '/BFD_VERSION_DATE/s/$/-%(echo %release | sed 's/\.[0-9]*$//')/' bfd/version.h %build @@ -272,14 +235,19 @@ ln -sf ld.gold $RPM_BUILD_ROOT%{_bindir}/gold make DESTDIR=$RPM_BUILD_ROOT install-info install make -C gas/doc DESTDIR=$RPM_BUILD_ROOT install-info-am install-am make DESTDIR=$RPM_BUILD_ROOT install-bfd install-opcodes -# we could eventually use alternatives for /usr/bin/ld -if test -f $RPM_BUILD_ROOT%{_bindir}/ld.bfd; then - rm $RPM_BUILD_ROOT%{_bindir}/ld - ln -sf ld.bfd $RPM_BUILD_ROOT%{_bindir}/ld; + +if [ ! -f "%buildroot/%_bindir/ld.bfd" ]; then + mv "%buildroot/%_bindir"/{ld,ld.bfd}; +else + rm -f "%buildroot/%_bindir/ld"; fi +mkdir -p "%buildroot/%_sysconfdir/alternatives"; +ln -s "%_bindir/ld" "%buildroot/%_sysconfdir/alternatives/ld"; +ln -s "%_sysconfdir/alternatives/ld" "%buildroot/%_bindir/ld"; rm -rf $RPM_BUILD_ROOT%{_prefix}/%{HOST}/bin mkdir -p $RPM_BUILD_ROOT%{_prefix}/%{HOST}/bin ln -sf ../../bin/{ar,as,ld,nm,ranlib,strip} $RPM_BUILD_ROOT%{_prefix}/%{HOST}/bin + #mv $RPM_BUILD_ROOT%{_prefix}/%{HOST}/lib/ldscripts $RPM_BUILD_ROOT%{_libdir} #ln -sf ../../%{_lib}/ldscripts $RPM_BUILD_ROOT%{_prefix}/%{HOST}/lib/ldscripts # Install header files @@ -330,11 +298,28 @@ rm -f $RPM_BUILD_ROOT%{_prefix}/bin/*-c++filt %endif cd $RPM_BUILD_DIR/binutils-%version -%clean -rm -rf $RPM_BUILD_ROOT %if 0%{!?cross:1} %docs_package +%post +"%_sbindir/update-alternatives" --install \ + "%_bindir/ld" ld "%_bindir/ld.bfd" 2 + +%post gold +"%_sbindir/update-alternatives" --install \ + "%_bindir/ld" ld "%_bindir/ld.gold" 1 + + +%preun +if [ "$1" = 0 ]; then + "%_sbindir/update-alternatives" --remove ld "%_bindir/ld.bfd"; +fi; + +%preun gold +if [ "$1" = 0 ]; then + "%_sbindir/update-alternatives" --remove ld "%_bindir/ld.gold"; +fi; + %endif %files @@ -343,6 +328,7 @@ rm -rf $RPM_BUILD_ROOT %{_docdir}/%{name} %{_prefix}/%{HOST}/bin/* %{_prefix}/%{HOST}/lib/ldscripts +%ghost %_sysconfdir/alternatives/ld #%{_libdir}/ldscripts %{_bindir}/* %ifarch %gold_archs @@ -359,7 +345,6 @@ rm -rf $RPM_BUILD_ROOT %ifarch %gold_archs %files gold %defattr(-,root,root) -%doc gold/NEWS gold/README %{_bindir}/gold %{_bindir}/ld.gold %endif diff --git a/packaging/cross-i386-binutils.spec b/packaging/cross-i386-binutils.spec index 6c142a0..cdc60c5 100644 --- a/packaging/cross-i386-binutils.spec +++ b/packaging/cross-i386-binutils.spec @@ -51,19 +51,6 @@ Group: Development/Tools/Building Source: binutils-%{binutils_version}.tar.bz2 Source1: pre_checkin.sh Source3: baselibs.conf -# Patches auto-generated by git-buildpackage: -Patch0: 0001-skip-rpaths.patch -Patch1: 0002-x86-64-biarch.patch -Patch2: 0003-unit-at-a-time.patch -Patch3: 0004-ld-dtags.patch -Patch4: 0005-ld-relro.patch -Patch5: 0006-testsuite.patch -Patch6: 0007-enable-targets-gold.patch -Patch7: 0008-use-hashtype-both-by-default.patch -Patch8: 0009-build-as-needed.patch -Patch9: 0010-fixup-testcase-perturb.patch -Patch10: 0011-gold-depend-on-opcodes.patch -Patch11: 0012-bso12451.patch %description C compiler utilities: ar, as, gprof, ld, nm, objcopy, objdump, ranlib, @@ -110,30 +97,6 @@ binutils. %prep echo "make check will return with %{make_check_handling} in case of testsuite failures." %setup -q -n binutils-%{binutils_version} -# 0001-skip-rpaths.patch -%patch0 -p1 -# 0002-x86-64-biarch.patch -%patch1 -p1 -# 0003-unit-at-a-time.patch -%patch2 -p1 -# 0004-ld-dtags.patch -%patch3 -p1 -# 0005-ld-relro.patch -%patch4 -p1 -# 0006-testsuite.patch -%patch5 -p1 -# 0007-enable-targets-gold.patch -%patch6 -p1 -# 0008-use-hashtype-both-by-default.patch -%patch7 -p1 -# 0009-build-as-needed.patch -%patch8 -p1 -# 0010-fixup-testcase-perturb.patch -%patch9 -p1 -# 0011-gold-depend-on-opcodes.patch -%patch10 -p1 -# 0012-bso12451.patch -%patch11 -p1 sed -i -e '/BFD_VERSION_DATE/s/$/-%(echo %release | sed 's/\.[0-9]*$//')/' bfd/version.h %build @@ -272,14 +235,19 @@ ln -sf ld.gold $RPM_BUILD_ROOT%{_bindir}/gold make DESTDIR=$RPM_BUILD_ROOT install-info install make -C gas/doc DESTDIR=$RPM_BUILD_ROOT install-info-am install-am make DESTDIR=$RPM_BUILD_ROOT install-bfd install-opcodes -# we could eventually use alternatives for /usr/bin/ld -if test -f $RPM_BUILD_ROOT%{_bindir}/ld.bfd; then - rm $RPM_BUILD_ROOT%{_bindir}/ld - ln -sf ld.bfd $RPM_BUILD_ROOT%{_bindir}/ld; + +if [ ! -f "%buildroot/%_bindir/ld.bfd" ]; then + mv "%buildroot/%_bindir"/{ld,ld.bfd}; +else + rm -f "%buildroot/%_bindir/ld"; fi +mkdir -p "%buildroot/%_sysconfdir/alternatives"; +ln -s "%_bindir/ld" "%buildroot/%_sysconfdir/alternatives/ld"; +ln -s "%_sysconfdir/alternatives/ld" "%buildroot/%_bindir/ld"; rm -rf $RPM_BUILD_ROOT%{_prefix}/%{HOST}/bin mkdir -p $RPM_BUILD_ROOT%{_prefix}/%{HOST}/bin ln -sf ../../bin/{ar,as,ld,nm,ranlib,strip} $RPM_BUILD_ROOT%{_prefix}/%{HOST}/bin + #mv $RPM_BUILD_ROOT%{_prefix}/%{HOST}/lib/ldscripts $RPM_BUILD_ROOT%{_libdir} #ln -sf ../../%{_lib}/ldscripts $RPM_BUILD_ROOT%{_prefix}/%{HOST}/lib/ldscripts # Install header files @@ -330,11 +298,28 @@ rm -f $RPM_BUILD_ROOT%{_prefix}/bin/*-c++filt %endif cd $RPM_BUILD_DIR/binutils-%version -%clean -rm -rf $RPM_BUILD_ROOT %if 0%{!?cross:1} %docs_package +%post +"%_sbindir/update-alternatives" --install \ + "%_bindir/ld" ld "%_bindir/ld.bfd" 2 + +%post gold +"%_sbindir/update-alternatives" --install \ + "%_bindir/ld" ld "%_bindir/ld.gold" 1 + + +%preun +if [ "$1" = 0 ]; then + "%_sbindir/update-alternatives" --remove ld "%_bindir/ld.bfd"; +fi; + +%preun gold +if [ "$1" = 0 ]; then + "%_sbindir/update-alternatives" --remove ld "%_bindir/ld.gold"; +fi; + %endif %files @@ -343,6 +328,7 @@ rm -rf $RPM_BUILD_ROOT %{_docdir}/%{name} %{_prefix}/%{HOST}/bin/* %{_prefix}/%{HOST}/lib/ldscripts +%ghost %_sysconfdir/alternatives/ld #%{_libdir}/ldscripts %{_bindir}/* %ifarch %gold_archs @@ -359,7 +345,6 @@ rm -rf $RPM_BUILD_ROOT %ifarch %gold_archs %files gold %defattr(-,root,root) -%doc gold/NEWS gold/README %{_bindir}/gold %{_bindir}/ld.gold %endif diff --git a/packaging/cross-x86_64-binutils.spec b/packaging/cross-x86_64-binutils.spec index d00b458..cf89b2e 100644 --- a/packaging/cross-x86_64-binutils.spec +++ b/packaging/cross-x86_64-binutils.spec @@ -51,19 +51,6 @@ Group: Development/Tools/Building Source: binutils-%{binutils_version}.tar.bz2 Source1: pre_checkin.sh Source3: baselibs.conf -# Patches auto-generated by git-buildpackage: -Patch0: 0001-skip-rpaths.patch -Patch1: 0002-x86-64-biarch.patch -Patch2: 0003-unit-at-a-time.patch -Patch3: 0004-ld-dtags.patch -Patch4: 0005-ld-relro.patch -Patch5: 0006-testsuite.patch -Patch6: 0007-enable-targets-gold.patch -Patch7: 0008-use-hashtype-both-by-default.patch -Patch8: 0009-build-as-needed.patch -Patch9: 0010-fixup-testcase-perturb.patch -Patch10: 0011-gold-depend-on-opcodes.patch -Patch11: 0012-bso12451.patch %description C compiler utilities: ar, as, gprof, ld, nm, objcopy, objdump, ranlib, @@ -110,30 +97,6 @@ binutils. %prep echo "make check will return with %{make_check_handling} in case of testsuite failures." %setup -q -n binutils-%{binutils_version} -# 0001-skip-rpaths.patch -%patch0 -p1 -# 0002-x86-64-biarch.patch -%patch1 -p1 -# 0003-unit-at-a-time.patch -%patch2 -p1 -# 0004-ld-dtags.patch -%patch3 -p1 -# 0005-ld-relro.patch -%patch4 -p1 -# 0006-testsuite.patch -%patch5 -p1 -# 0007-enable-targets-gold.patch -%patch6 -p1 -# 0008-use-hashtype-both-by-default.patch -%patch7 -p1 -# 0009-build-as-needed.patch -%patch8 -p1 -# 0010-fixup-testcase-perturb.patch -%patch9 -p1 -# 0011-gold-depend-on-opcodes.patch -%patch10 -p1 -# 0012-bso12451.patch -%patch11 -p1 sed -i -e '/BFD_VERSION_DATE/s/$/-%(echo %release | sed 's/\.[0-9]*$//')/' bfd/version.h %build @@ -272,14 +235,19 @@ ln -sf ld.gold $RPM_BUILD_ROOT%{_bindir}/gold make DESTDIR=$RPM_BUILD_ROOT install-info install make -C gas/doc DESTDIR=$RPM_BUILD_ROOT install-info-am install-am make DESTDIR=$RPM_BUILD_ROOT install-bfd install-opcodes -# we could eventually use alternatives for /usr/bin/ld -if test -f $RPM_BUILD_ROOT%{_bindir}/ld.bfd; then - rm $RPM_BUILD_ROOT%{_bindir}/ld - ln -sf ld.bfd $RPM_BUILD_ROOT%{_bindir}/ld; + +if [ ! -f "%buildroot/%_bindir/ld.bfd" ]; then + mv "%buildroot/%_bindir"/{ld,ld.bfd}; +else + rm -f "%buildroot/%_bindir/ld"; fi +mkdir -p "%buildroot/%_sysconfdir/alternatives"; +ln -s "%_bindir/ld" "%buildroot/%_sysconfdir/alternatives/ld"; +ln -s "%_sysconfdir/alternatives/ld" "%buildroot/%_bindir/ld"; rm -rf $RPM_BUILD_ROOT%{_prefix}/%{HOST}/bin mkdir -p $RPM_BUILD_ROOT%{_prefix}/%{HOST}/bin ln -sf ../../bin/{ar,as,ld,nm,ranlib,strip} $RPM_BUILD_ROOT%{_prefix}/%{HOST}/bin + #mv $RPM_BUILD_ROOT%{_prefix}/%{HOST}/lib/ldscripts $RPM_BUILD_ROOT%{_libdir} #ln -sf ../../%{_lib}/ldscripts $RPM_BUILD_ROOT%{_prefix}/%{HOST}/lib/ldscripts # Install header files @@ -330,11 +298,28 @@ rm -f $RPM_BUILD_ROOT%{_prefix}/bin/*-c++filt %endif cd $RPM_BUILD_DIR/binutils-%version -%clean -rm -rf $RPM_BUILD_ROOT %if 0%{!?cross:1} %docs_package +%post +"%_sbindir/update-alternatives" --install \ + "%_bindir/ld" ld "%_bindir/ld.bfd" 2 + +%post gold +"%_sbindir/update-alternatives" --install \ + "%_bindir/ld" ld "%_bindir/ld.gold" 1 + + +%preun +if [ "$1" = 0 ]; then + "%_sbindir/update-alternatives" --remove ld "%_bindir/ld.bfd"; +fi; + +%preun gold +if [ "$1" = 0 ]; then + "%_sbindir/update-alternatives" --remove ld "%_bindir/ld.gold"; +fi; + %endif %files @@ -343,6 +328,7 @@ rm -rf $RPM_BUILD_ROOT %{_docdir}/%{name} %{_prefix}/%{HOST}/bin/* %{_prefix}/%{HOST}/lib/ldscripts +%ghost %_sysconfdir/alternatives/ld #%{_libdir}/ldscripts %{_bindir}/* %ifarch %gold_archs @@ -359,7 +345,6 @@ rm -rf $RPM_BUILD_ROOT %ifarch %gold_archs %files gold %defattr(-,root,root) -%doc gold/NEWS gold/README %{_bindir}/gold %{_bindir}/ld.gold %endif -- 2.7.4