From 5951e7bab7958ced68b2f77b26524c7ff924eac5 Mon Sep 17 00:00:00 2001 From: Ting-Wei Lan Date: Tue, 28 Apr 2020 01:28:02 +0800 Subject: arm-linux-gnueabi-toolchain: Fix build on Fedora 33 RPM 4.16 no longer allows comparing strings with %if without quoting both sides of the operator. Fix it by adding all necessary quotes. RPM 4.16 adds a new script, brp-strip-lto, which calls %{__strip} on object files. This fails because the native strip command does not work with foreign object files. The reason that this problem did not happen before is that all %{__strip} were called on static archives, which are ignored by %{__ar_no_strip} script. Since %{__ar_no_strip} script never really works, just remove the script and don't strip anything. --- .../arm-linux-gnueabi-filesystem.spec | 17 +++--- .../10/arm-linux-gnueabi-gcc.spec | 61 +++++++++------------- .../arm-linux-gnueabi-glibc.spec | 39 ++++++-------- 3 files changed, 51 insertions(+), 66 deletions(-) diff --git a/arm-linux-gnueabi-toolchain/arm-linux-gnueabi-filesystem/arm-linux-gnueabi-filesystem.spec b/arm-linux-gnueabi-toolchain/arm-linux-gnueabi-filesystem/arm-linux-gnueabi-filesystem.spec index 73067f1..abf2fc0 100644 --- a/arm-linux-gnueabi-toolchain/arm-linux-gnueabi-filesystem/arm-linux-gnueabi-filesystem.spec +++ b/arm-linux-gnueabi-toolchain/arm-linux-gnueabi-filesystem/arm-linux-gnueabi-filesystem.spec @@ -2,10 +2,10 @@ %global cross_triplet arm-linux-gnueabi %global cross_sysroot %{_prefix}/%{cross_triplet}/sys-root -%if %{cross_arch} == "arm" +%if "%{cross_arch}" == "arm" %global lib_dir_name lib %else - %if %{cross_arch} == "arm64" + %if "%{cross_arch}" == "arm64" %global lib_dir_name lib64 %else %global lib_dir_name lib @@ -14,7 +14,7 @@ Name: %{cross_triplet}-filesystem Version: 3 -Release: 11%{?dist} +Release: 12%{?dist} Summary: Cross compilation toolchain filesystem layout (%{cross_triplet}) License: Public Domain @@ -37,7 +37,7 @@ mkdir %{buildroot}%{_prefix}/%{cross_triplet}/bin mkdir %{buildroot}%{_prefix}/%{cross_triplet}/lib mkdir -p %{buildroot}%{cross_sysroot} mkdir %{buildroot}%{cross_sysroot}/etc -%if %{cross_arch} == "arm64" +%if "%{cross_arch}" == "arm64" mkdir %{buildroot}%{cross_sysroot}/lib %endif mkdir %{buildroot}%{cross_sysroot}/%{lib_dir_name} @@ -45,7 +45,7 @@ mkdir %{buildroot}%{cross_sysroot}/sbin mkdir %{buildroot}%{cross_sysroot}/usr mkdir %{buildroot}%{cross_sysroot}/usr/bin mkdir %{buildroot}%{cross_sysroot}/usr/include -%if %{cross_arch} == "arm64" +%if "%{cross_arch}" == "arm64" mkdir %{buildroot}%{cross_sysroot}/usr/lib %endif mkdir %{buildroot}%{cross_sysroot}/usr/%{lib_dir_name} @@ -62,7 +62,7 @@ mkdir %{buildroot}%{cross_sysroot}/var/db %dir %{_prefix}/%{cross_triplet}/lib %dir %{cross_sysroot} %dir %{cross_sysroot}/etc -%if %{cross_arch} == "arm64" +%if "%{cross_arch}" == "arm64" %dir %{cross_sysroot}/lib %endif %dir %{cross_sysroot}/%{lib_dir_name} @@ -70,7 +70,7 @@ mkdir %{buildroot}%{cross_sysroot}/var/db %dir %{cross_sysroot}/usr %dir %{cross_sysroot}/usr/bin %dir %{cross_sysroot}/usr/include -%if %{cross_arch} == "arm64" +%if "%{cross_arch}" == "arm64" %dir %{cross_sysroot}/usr/lib %endif %dir %{cross_sysroot}/usr/%{lib_dir_name} @@ -83,6 +83,9 @@ mkdir %{buildroot}%{cross_sysroot}/var/db %changelog +* Sun Apr 26 2020 Ting-Wei Lan - 3-12 +- Quote strings in if conditionals for RPM 4.16 + * Sat Apr 25 2020 Ting-Wei Lan - 3-11 - Rebuilt for Fedora 32 and 33 diff --git a/arm-linux-gnueabi-toolchain/arm-linux-gnueabi-gcc/10/arm-linux-gnueabi-gcc.spec b/arm-linux-gnueabi-toolchain/arm-linux-gnueabi-gcc/10/arm-linux-gnueabi-gcc.spec index a616717..916fa69 100644 --- a/arm-linux-gnueabi-toolchain/arm-linux-gnueabi-gcc/10/arm-linux-gnueabi-gcc.spec +++ b/arm-linux-gnueabi-toolchain/arm-linux-gnueabi-gcc/10/arm-linux-gnueabi-gcc.spec @@ -10,16 +10,16 @@ %global cross_stage final %endif -%if %{cross_stage} != "final" +%if "%{cross_stage}" != "final" %global pkg_suffix -%{cross_stage} %else %global pkg_suffix %{nil} %endif -%if %{cross_arch} == "arm" +%if "%{cross_arch}" == "arm" %global lib_dir_name lib %else - %if %{cross_arch} == "arm64" + %if "%{cross_arch}" == "arm64" %global lib_dir_name lib64 %else %global lib_dir_name lib @@ -34,7 +34,7 @@ Name: %{cross_triplet}-gcc%{pkg_suffix} Version: 10.0.1 -Release: 1.%{date}git%{shortgitrev}%{?dist} +Release: 2.%{date}git%{shortgitrev}%{?dist} Summary: The GNU Compiler Collection (%{cross_triplet}) %global major_version %(echo %{version} | sed 's/\\..*$//') @@ -61,13 +61,13 @@ Requires: %{cross_triplet}-filesystem Requires: %{cross_triplet}-binutils Provides: %{cross_triplet}-gcc-stage1 = %{version} -%if %{cross_stage} == "pass2" +%if "%{cross_stage}" == "pass2" BuildRequires: %{cross_triplet}-glibc-stage1 Requires: %{cross_triplet}-glibc-stage1 Provides: %{cross_triplet}-gcc-stage2 = %{version} %endif -%if %{cross_stage} == "final" +%if "%{cross_stage}" == "final" BuildRequires: %{cross_triplet}-glibc BuildRequires: gcc-gnat, libstdc++-static Requires: %{cross_triplet}-glibc @@ -135,8 +135,8 @@ export WINDMC_FOR_TARGET=%{_bindir}/%{cross_triplet}-windmc --enable-linker-build-id \ --enable-gnu-unique-object \ --enable-gnu-indirect-function \ -%if %{cross_arch} == "arm" -%if %(echo %{cross_triplet} | sed 's/.*-\([a-z]*\)$/\1/') == "gnueabihf" +%if "%{cross_arch}" == "arm" +%if "%(echo %{cross_triplet} | sed 's/.*-\([a-z]*\)$/\1/')" == "gnueabihf" --with-tune=generic-armv7-a \ --with-arch=armv7-a \ --with-float=hard \ @@ -144,7 +144,7 @@ export WINDMC_FOR_TARGET=%{_bindir}/%{cross_triplet}-windmc --with-abi=aapcs-linux \ %endif %endif -%if %{cross_stage} == "pass1" +%if "%{cross_stage}" == "pass1" --with-newlib \ --enable-languages=c \ --disable-shared \ @@ -153,7 +153,7 @@ export WINDMC_FOR_TARGET=%{_bindir}/%{cross_triplet}-windmc %make_build all-gcc %endif -%if %{cross_stage} == "pass2" +%if "%{cross_stage}" == "pass2" --enable-languages=c \ --enable-shared \ --disable-libgomp \ @@ -161,7 +161,7 @@ export WINDMC_FOR_TARGET=%{_bindir}/%{cross_triplet}-windmc %make_build all-gcc all-target-libgcc %endif -%if %{cross_stage} == "final" +%if "%{cross_stage}" == "final" %if %{with ada} --enable-languages=c,c++,fortran,objc,obj-c++,go,d,ada \ %else @@ -188,17 +188,17 @@ export WINDMC_FOR_TARGET=%{_bindir}/%{cross_triplet}-windmc %install cd %{_builddir}/gcc-build -%if %{cross_stage} == "pass1" +%if "%{cross_stage}" == "pass1" %{__make} install-gcc DESTDIR=%{buildroot} %endif -%if %{cross_stage} == "pass2" +%if "%{cross_stage}" == "pass2" %{__make} install-gcc install-target-libgcc DESTDIR=%{buildroot} mkdir -p %{buildroot}%{cross_sysroot}/%{lib_dir_name} mv %{buildroot}%{_prefix}/%{cross_triplet}/%{lib_dir_name}/* \ %{buildroot}%{cross_sysroot}/%{lib_dir_name} rmdir %{buildroot}%{_prefix}/%{cross_triplet}/%{lib_dir_name} %endif -%if %{cross_stage} == "final" +%if "%{cross_stage}" == "final" %make_install mkdir -p %{buildroot}%{cross_sysroot}/%{lib_dir_name} mv %{buildroot}%{_prefix}/%{cross_triplet}/%{lib_dir_name}/* \ @@ -220,22 +220,9 @@ rm -f %{buildroot}%{_libexecdir}/gcc/%{cross_triplet}/%{major_version}/install-t rm -f %{buildroot}%{_libexecdir}/gcc/%{cross_triplet}/%{major_version}/install-tools/mkinstalldirs rmdir --ignore-fail-on-non-empty %{buildroot}%{_libexecdir}/gcc/%{cross_triplet}/%{major_version}/install-tools -# Don't strip libgcc.a and libgcov.a - based on Fedora Project cross-gcc.spec -%global __ar_no_strip $RPM_BUILD_DIR/gcc-%{version}-%{date}/ar-no-strip -cat > %{__ar_no_strip} << EOF -#!/bin/sh -f=\$2 -case \$(basename \$f) in - *.a) - ;; - *) - %{__strip} \$@ - ;; -esac -EOF -chmod +x %{__ar_no_strip} +# Don't strip anything - /usr/bin/strip does not work on other architectures %undefine __strip -%global __strip %{__ar_no_strip} +%global __strip /bin/true %files @@ -269,7 +256,7 @@ chmod +x %{__ar_no_strip} %{_prefix}/lib/gcc/%{cross_triplet}/%{major_version}/include/stdalign.h %{_prefix}/lib/gcc/%{cross_triplet}/%{major_version}/include/stdnoreturn.h %{_prefix}/lib/gcc/%{cross_triplet}/%{major_version}/include/stdatomic.h -%if %{cross_arch} == "arm" +%if "%{cross_arch}" == "arm" %{_prefix}/lib/gcc/%{cross_triplet}/%{major_version}/include/unwind-arm-common.h %{_prefix}/lib/gcc/%{cross_triplet}/%{major_version}/include/mmintrin.h %{_prefix}/lib/gcc/%{cross_triplet}/%{major_version}/include/arm_cmse.h @@ -277,10 +264,10 @@ chmod +x %{__ar_no_strip} %{_prefix}/lib/gcc/%{cross_triplet}/%{major_version}/include/arm_mve.h %{_prefix}/lib/gcc/%{cross_triplet}/%{major_version}/include/arm_mve_types.h %endif -%if %{cross_arch} == "arm64" +%if "%{cross_arch}" == "arm64" %{_prefix}/lib/gcc/%{cross_triplet}/%{major_version}/include/arm_sve.h %endif -%if %{cross_arch} == "arm" || %{cross_arch} == "arm64" +%if "%{cross_arch}" == "arm" || "%{cross_arch}" == "arm64" %{_prefix}/lib/gcc/%{cross_triplet}/%{major_version}/include/arm_neon.h %{_prefix}/lib/gcc/%{cross_triplet}/%{major_version}/include/arm_acle.h %{_prefix}/lib/gcc/%{cross_triplet}/%{major_version}/include/arm_fp16.h @@ -296,7 +283,7 @@ chmod +x %{__ar_no_strip} %{_libexecdir}/gcc/%{cross_triplet}/%{major_version}/liblto_plugin.so* %dir %{_libexecdir}/gcc/%{cross_triplet}/%{major_version}/plugin %{_libexecdir}/gcc/%{cross_triplet}/%{major_version}/plugin/gengtype -%if %{cross_stage} != "pass1" +%if "%{cross_stage}" != "pass1" %{_prefix}/lib/gcc/%{cross_triplet}/%{major_version}/include/gcov.h %{_prefix}/lib/gcc/%{cross_triplet}/%{major_version}/include/unwind.h %{_prefix}/lib/gcc/%{cross_triplet}/%{major_version}/crtbegin*.o @@ -308,7 +295,7 @@ chmod +x %{__ar_no_strip} %{cross_sysroot}/%{lib_dir_name}/libgcc_s.so %{cross_sysroot}/%{lib_dir_name}/libgcc_s.so.1 %endif -%if %{cross_stage} == "final" +%if "%{cross_stage}" == "final" %{_bindir}/%{cross_triplet}-c++ %{_bindir}/%{cross_triplet}-g++ %{_bindir}/%{cross_triplet}-gccgo @@ -374,7 +361,7 @@ chmod +x %{__ar_no_strip} %{cross_sysroot}/%{lib_dir_name}/libsupc++.a %{cross_sysroot}/%{lib_dir_name}/libubsan.a %{cross_sysroot}/%{lib_dir_name}/libubsan.so* -%if %{cross_arch} == "arm64" +%if "%{cross_arch}" == "arm64" %{cross_sysroot}/%{lib_dir_name}/liblsan.a %{cross_sysroot}/%{lib_dir_name}/liblsan_preinit.o %{cross_sysroot}/%{lib_dir_name}/liblsan.so* @@ -404,6 +391,10 @@ chmod +x %{__ar_no_strip} %changelog +* Tue Apr 28 2020 Ting-Wei Lan - 10.0.1-2.20200425git8fc8bf8 +- Quote strings in if conditionals for RPM 4.16 +- Remove __ar_no_strip and define __strip to a dummy command + * Sun Apr 26 2020 Ting-Wei Lan - 10.0.1-1.20200425git8fc8bf8 - Update to GCC 10 snapshot for Fedora 32 diff --git a/arm-linux-gnueabi-toolchain/arm-linux-gnueabi-glibc/arm-linux-gnueabi-glibc.spec b/arm-linux-gnueabi-toolchain/arm-linux-gnueabi-glibc/arm-linux-gnueabi-glibc.spec index a4767aa..50ec397 100644 --- a/arm-linux-gnueabi-toolchain/arm-linux-gnueabi-glibc/arm-linux-gnueabi-glibc.spec +++ b/arm-linux-gnueabi-toolchain/arm-linux-gnueabi-glibc/arm-linux-gnueabi-glibc.spec @@ -23,15 +23,15 @@ %global pkg_suffix %{nil} %endif -%if %{cross_arch} == "arm" +%if "%{cross_arch}" == "arm" %global arm_type %(echo %{cross_triplet} | sed 's/.*-\\([a-z]*\\)$/\\1/') - %if %{arm_type} == "gnueabi" + %if "%{arm_type}" == "gnueabi" %global loader_suffix %{nil} %global loader_version 3 %global gnu_hdr_suffix -soft %global lib_dir_name lib %else - %if %{arm_type} == "gnueabihf" + %if "%{arm_type}" == "gnueabihf" %global loader_suffix -armhf %global loader_version 3 %global gnu_hdr_suffix -hard @@ -41,7 +41,7 @@ %endif %endif %else - %if %{cross_arch} == "arm64" + %if "%{cross_arch}" == "arm64" %global loader_suffix -aarch64 %global loader_version 1 %global gnu_hdr_suffix -lp64 @@ -56,7 +56,7 @@ Name: %{cross_triplet}-glibc%{pkg_suffix} Version: 2.31 -Release: 2%{?dist} +Release: 3%{?dist} Summary: The GNU C Library (%{cross_triplet}) License: LGPLv2+ and LGPLv2+ with exceptions and GPLv2+ @@ -158,22 +158,9 @@ rm -rf %{buildroot}%{cross_sysroot}/usr/share/info rm -rf %{buildroot}%{cross_sysroot}/usr/share/locale %endif -# Don't any static archive - based on Fedora Project cross-gcc.spec -%global __ar_no_strip $RPM_BUILD_DIR/glibc-%{version}/ar-no-strip -cat > %{__ar_no_strip} << EOF -#!/bin/sh -f=\$2 -case \$(basename \$f) in - *.a) - ;; - *) - %{__strip} \$@ - ;; -esac -EOF -chmod +x %{__ar_no_strip} +# Don't strip anything - /usr/bin/strip does not work on other architectures %undefine __strip -%global __strip %{__ar_no_strip} +%global __strip /bin/true %files @@ -365,7 +352,7 @@ chmod +x %{__ar_no_strip} %{cross_sysroot}/usr/include/sys/fsuid.h %{cross_sysroot}/usr/include/sys/gmon.h %{cross_sysroot}/usr/include/sys/gmon_out.h -%if %{cross_arch} == "arm64" +%if "%{cross_arch}" == "arm64" %{cross_sysroot}/usr/include/sys/ifunc.h %endif %{cross_sysroot}/usr/include/sys/inotify.h @@ -459,7 +446,7 @@ chmod +x %{__ar_no_strip} %{cross_sysroot}/usr/%{lib_dir_name}/libc.so %if !%{headers_only} %{cross_sysroot}/etc/rpc -%if %{cross_arch} == "arm64" +%if "%{cross_arch}" == "arm64" %{cross_sysroot}/lib/ld-linux%{loader_suffix}.so.%{loader_version} %else %{cross_sysroot}/%{lib_dir_name}/ld-linux%{loader_suffix}.so.%{loader_version} @@ -574,7 +561,7 @@ chmod +x %{__ar_no_strip} %{cross_sysroot}/usr/%{lib_dir_name}/libutil.a %{cross_sysroot}/usr/%{lib_dir_name}/libutil.so %dir %{cross_sysroot}/usr/libexec/getconf -%if %{cross_arch} == "arm" +%if "%{cross_arch}" == "arm" %{cross_sysroot}/usr/libexec/getconf/POSIX_V6_ILP32_OFF32 %{cross_sysroot}/usr/libexec/getconf/POSIX_V6_ILP32_OFFBIG %{cross_sysroot}/usr/libexec/getconf/POSIX_V7_ILP32_OFF32 @@ -582,7 +569,7 @@ chmod +x %{__ar_no_strip} %{cross_sysroot}/usr/libexec/getconf/XBS5_ILP32_OFF32 %{cross_sysroot}/usr/libexec/getconf/XBS5_ILP32_OFFBIG %else -%if %{cross_arch} == "arm64" +%if "%{cross_arch}" == "arm64" %{cross_sysroot}/usr/libexec/getconf/POSIX_V6_LP64_OFF64 %{cross_sysroot}/usr/libexec/getconf/POSIX_V7_LP64_OFF64 %{cross_sysroot}/usr/libexec/getconf/XBS5_LP64_OFF64 @@ -600,6 +587,10 @@ chmod +x %{__ar_no_strip} %changelog +* Tue Apr 28 2020 Ting-Wei Lan - 2.31-3 +- Quote strings in if conditionals for RPM 4.16 +- Remove __ar_no_strip and define __strip to a dummy command + * Sat Apr 25 2020 Ting-Wei Lan - 2.31-2 - Rebuilt for Fedora 32 and 33 -- cgit v1.2.3