packaging: Enable testing infrastructrure 59/223859/3 accepted/tizen/base/20200410.015354 submit/tizen_base/20200409.073836
authorSlava Barinov <v.barinov@samsung.com>
Mon, 3 Feb 2020 15:24:21 +0000 (18:24 +0300)
committerSlava Barinov <v.barinov@samsung.com>
Tue, 7 Apr 2020 12:49:59 +0000 (15:49 +0300)
Now Binutils can be tested just like GCC package, by defining run_tests to 1

Change-Id: I10a8667985ee3cd430ea8fbdbbd06653a4d72df8
Signed-off-by: Slava Barinov <v.barinov@samsung.com>
packaging/binutils-aarch64.spec
packaging/binutils-armv7hl.spec
packaging/binutils-armv7l.spec
packaging/binutils.spec

index fb2d63d..4987cb3 100644 (file)
 %define binutils_run_tests 1
 %endif
 
+# Enable this when testing on device to:
+# 1. Enable macro to turn on testsuite building ('binutils_run_tests 1')
+# 2. Keep 'build-dir/' folder in build stage as we do not want to rebuild all
+# binutils again on device after invoking rpmbuild --short-circuit -bc ...
+# 3. Skip configure and make commands and go directly to 'make check'
+%if 0%{?run_tests_on_device}
+%define binutils_run_tests 1
+%define binutils_keep_build_dir 1
+%define binutils_skip_configure 1
+%define binutils_skip_make 1
+%endif
+
+# Exit right after 'make ..' step to keep all object files produced by binutils build
+%if 0%{?exit_on_make_finish}
+%define binutils_exit_on_make_finish 1
+%endif
+
 Name:           binutils%{?cross:-%{cross}}
 BuildRequires:  makeinfo
 BuildRequires:  bison
@@ -39,7 +56,6 @@ BuildRequires:  zlib-devel
 BuildRequires:  gcc-c++
 %if 0%{?binutils_run_tests}
 BuildRequires:  dejagnu
-BuildRequires:  gdb
 BuildRequires:  glibc-devel-static
 %endif
 Version:        2.33.1
@@ -80,6 +96,14 @@ This package includes header files and static libraries necessary to
 build programs which use the GNU BFD library, which is part of
 binutils.
 
+%{?binutils_run_tests:
+%package testresults
+Summary:       Testsuite results
+License:       Public Domain
+Group:         Development/Building
+%description testresults
+Results from running the binutils tests.
+}
 
 %prep
 %setup -q -n binutils-%{version}
@@ -91,9 +115,16 @@ RPM_OPT_FLAGS="$RPM_OPT_FLAGS -Wno-error %{?cross:-DIGNORE_BROKEN_PLUGINS}"
 export CFLAGS="${RPM_OPT_FLAGS}"
 export CXXFLAGS="${RPM_OPT_FLAGS}"
 
-mkdir build-dir
+%{!?binutils_keep_build_dir:
+rm -rf build-dir
+}
+# Remove gdb and sim since they have separate gdb package
+rm -rf gdb sim
+
+mkdir -p build-dir
 cd build-dir
 
+%{!?binutils_skip_configure:
 ../configure \
        --prefix=%{_prefix} --libdir=%{_libdir} \
        --infodir=%{_infodir} --mandir=%{_mandir} \
@@ -118,12 +149,25 @@ cd build-dir
        --enable-shared \
        --enable-new-dtags \
        --enable-relro=no
+}
 
+%{!?binutils_skip_make:
 make %{?_smp_mflags}
+}
+
+%{?binutils_exit_on_make_finish:
+exit 1
+}
 
-%check
 %{?binutils_run_tests:
-    make %{?_smp_mflags} -C build-dir check -k
+echo "Run testsuite"
+# asan needs a whole shadow address space
+ulimit -v unlimited || true
+make -k check %{?_smp_mflags} || true
+mkdir ../testresults
+for tool in $(find -name '*.sum' -exec basename {} \; | sort -u | sed -e 's/.sum//'); do
+../contrib/dg-extract-results.sh -t $tool $(find -name '*.sum') | tee -a ../testresults/test_summary.txt
+done
 }
 
 %install
@@ -145,11 +189,15 @@ done
 install -m 644 libiberty/pic/libiberty.a %{buildroot}%{_prefix}/%{_lib}
 install -m 644 ../include/libiberty.h %{buildroot}%{_prefix}/include
 
+%{?binutils_run_tests:
+  find . \( -name "*.sum" -o -name "*.log" -a \! -name "config.log" \) -exec tar -rf testresults.tar {} \;
+  mkdir -p ../testresults && tar -xf testresults.tar -C ../testresults
+  find ../testresults/ -type f -exec chmod 644 {} \;
+}
+
 # Remove unwanted files to shut up rpm
 %{remove_docs}
 rm -rf %{buildroot}%{_bindir}/gcore
-rm -rf %{buildroot}%{_bindir}/gdb*
-rm -rf %{buildroot}%{_datadir}/gdb
 rm -rf %{buildroot}%{_libdir}/lib{bfd,opcodes,inproctrace}.{so,la}
 %{?cross:
 rm -rf %{buildroot}%{_prefix}/%{target_arch}/lib/ldscripts
@@ -174,7 +222,6 @@ rm -rf %{buildroot}%{_datadir}
 %manifest binutils.manifest
 %defattr(-,root,root)
 %{_includedir}/*.h
-%{_includedir}/gdb/*.h
 %{_libdir}/*.a
 
 %files gold
@@ -184,4 +231,11 @@ rm -rf %{buildroot}%{_datadir}
 %{_prefix}/%{target_arch}/bin/ld.gold
 }
 
+%{?binutils_run_tests:
+%files testresults
+%defattr(-,root,root)
+%doc testresults/test_summary.txt
+%doc testresults/*
+}
+
 %changelog
index f392294..bfbceaa 100644 (file)
 %define binutils_run_tests 1
 %endif
 
+# Enable this when testing on device to:
+# 1. Enable macro to turn on testsuite building ('binutils_run_tests 1')
+# 2. Keep 'build-dir/' folder in build stage as we do not want to rebuild all
+# binutils again on device after invoking rpmbuild --short-circuit -bc ...
+# 3. Skip configure and make commands and go directly to 'make check'
+%if 0%{?run_tests_on_device}
+%define binutils_run_tests 1
+%define binutils_keep_build_dir 1
+%define binutils_skip_configure 1
+%define binutils_skip_make 1
+%endif
+
+# Exit right after 'make ..' step to keep all object files produced by binutils build
+%if 0%{?exit_on_make_finish}
+%define binutils_exit_on_make_finish 1
+%endif
+
 Name:           binutils%{?cross:-%{cross}}
 BuildRequires:  makeinfo
 BuildRequires:  bison
@@ -39,7 +56,6 @@ BuildRequires:  zlib-devel
 BuildRequires:  gcc-c++
 %if 0%{?binutils_run_tests}
 BuildRequires:  dejagnu
-BuildRequires:  gdb
 BuildRequires:  glibc-devel-static
 %endif
 Version:        2.33.1
@@ -80,6 +96,14 @@ This package includes header files and static libraries necessary to
 build programs which use the GNU BFD library, which is part of
 binutils.
 
+%{?binutils_run_tests:
+%package testresults
+Summary:       Testsuite results
+License:       Public Domain
+Group:         Development/Building
+%description testresults
+Results from running the binutils tests.
+}
 
 %prep
 %setup -q -n binutils-%{version}
@@ -91,9 +115,16 @@ RPM_OPT_FLAGS="$RPM_OPT_FLAGS -Wno-error %{?cross:-DIGNORE_BROKEN_PLUGINS}"
 export CFLAGS="${RPM_OPT_FLAGS}"
 export CXXFLAGS="${RPM_OPT_FLAGS}"
 
-mkdir build-dir
+%{!?binutils_keep_build_dir:
+rm -rf build-dir
+}
+# Remove gdb and sim since they have separate gdb package
+rm -rf gdb sim
+
+mkdir -p build-dir
 cd build-dir
 
+%{!?binutils_skip_configure:
 ../configure \
        --prefix=%{_prefix} --libdir=%{_libdir} \
        --infodir=%{_infodir} --mandir=%{_mandir} \
@@ -118,12 +149,25 @@ cd build-dir
        --enable-shared \
        --enable-new-dtags \
        --enable-relro=no
+}
 
+%{!?binutils_skip_make:
 make %{?_smp_mflags}
+}
+
+%{?binutils_exit_on_make_finish:
+exit 1
+}
 
-%check
 %{?binutils_run_tests:
-    make %{?_smp_mflags} -C build-dir check -k
+echo "Run testsuite"
+# asan needs a whole shadow address space
+ulimit -v unlimited || true
+make -k check %{?_smp_mflags} || true
+mkdir ../testresults
+for tool in $(find -name '*.sum' -exec basename {} \; | sort -u | sed -e 's/.sum//'); do
+../contrib/dg-extract-results.sh -t $tool $(find -name '*.sum') | tee -a ../testresults/test_summary.txt
+done
 }
 
 %install
@@ -145,11 +189,15 @@ done
 install -m 644 libiberty/pic/libiberty.a %{buildroot}%{_prefix}/%{_lib}
 install -m 644 ../include/libiberty.h %{buildroot}%{_prefix}/include
 
+%{?binutils_run_tests:
+  find . \( -name "*.sum" -o -name "*.log" -a \! -name "config.log" \) -exec tar -rf testresults.tar {} \;
+  mkdir -p ../testresults && tar -xf testresults.tar -C ../testresults
+  find ../testresults/ -type f -exec chmod 644 {} \;
+}
+
 # Remove unwanted files to shut up rpm
 %{remove_docs}
 rm -rf %{buildroot}%{_bindir}/gcore
-rm -rf %{buildroot}%{_bindir}/gdb*
-rm -rf %{buildroot}%{_datadir}/gdb
 rm -rf %{buildroot}%{_libdir}/lib{bfd,opcodes,inproctrace}.{so,la}
 %{?cross:
 rm -rf %{buildroot}%{_prefix}/%{target_arch}/lib/ldscripts
@@ -174,7 +222,6 @@ rm -rf %{buildroot}%{_datadir}
 %manifest binutils.manifest
 %defattr(-,root,root)
 %{_includedir}/*.h
-%{_includedir}/gdb/*.h
 %{_libdir}/*.a
 
 %files gold
@@ -184,4 +231,11 @@ rm -rf %{buildroot}%{_datadir}
 %{_prefix}/%{target_arch}/bin/ld.gold
 }
 
+%{?binutils_run_tests:
+%files testresults
+%defattr(-,root,root)
+%doc testresults/test_summary.txt
+%doc testresults/*
+}
+
 %changelog
index 516f764..a3c6bad 100644 (file)
 %define binutils_run_tests 1
 %endif
 
+# Enable this when testing on device to:
+# 1. Enable macro to turn on testsuite building ('binutils_run_tests 1')
+# 2. Keep 'build-dir/' folder in build stage as we do not want to rebuild all
+# binutils again on device after invoking rpmbuild --short-circuit -bc ...
+# 3. Skip configure and make commands and go directly to 'make check'
+%if 0%{?run_tests_on_device}
+%define binutils_run_tests 1
+%define binutils_keep_build_dir 1
+%define binutils_skip_configure 1
+%define binutils_skip_make 1
+%endif
+
+# Exit right after 'make ..' step to keep all object files produced by binutils build
+%if 0%{?exit_on_make_finish}
+%define binutils_exit_on_make_finish 1
+%endif
+
 Name:           binutils%{?cross:-%{cross}}
 BuildRequires:  makeinfo
 BuildRequires:  bison
@@ -39,7 +56,6 @@ BuildRequires:  zlib-devel
 BuildRequires:  gcc-c++
 %if 0%{?binutils_run_tests}
 BuildRequires:  dejagnu
-BuildRequires:  gdb
 BuildRequires:  glibc-devel-static
 %endif
 Version:        2.33.1
@@ -80,6 +96,14 @@ This package includes header files and static libraries necessary to
 build programs which use the GNU BFD library, which is part of
 binutils.
 
+%{?binutils_run_tests:
+%package testresults
+Summary:       Testsuite results
+License:       Public Domain
+Group:         Development/Building
+%description testresults
+Results from running the binutils tests.
+}
 
 %prep
 %setup -q -n binutils-%{version}
@@ -91,9 +115,16 @@ RPM_OPT_FLAGS="$RPM_OPT_FLAGS -Wno-error %{?cross:-DIGNORE_BROKEN_PLUGINS}"
 export CFLAGS="${RPM_OPT_FLAGS}"
 export CXXFLAGS="${RPM_OPT_FLAGS}"
 
-mkdir build-dir
+%{!?binutils_keep_build_dir:
+rm -rf build-dir
+}
+# Remove gdb and sim since they have separate gdb package
+rm -rf gdb sim
+
+mkdir -p build-dir
 cd build-dir
 
+%{!?binutils_skip_configure:
 ../configure \
        --prefix=%{_prefix} --libdir=%{_libdir} \
        --infodir=%{_infodir} --mandir=%{_mandir} \
@@ -118,12 +149,25 @@ cd build-dir
        --enable-shared \
        --enable-new-dtags \
        --enable-relro=no
+}
 
+%{!?binutils_skip_make:
 make %{?_smp_mflags}
+}
+
+%{?binutils_exit_on_make_finish:
+exit 1
+}
 
-%check
 %{?binutils_run_tests:
-    make %{?_smp_mflags} -C build-dir check -k
+echo "Run testsuite"
+# asan needs a whole shadow address space
+ulimit -v unlimited || true
+make -k check %{?_smp_mflags} || true
+mkdir ../testresults
+for tool in $(find -name '*.sum' -exec basename {} \; | sort -u | sed -e 's/.sum//'); do
+../contrib/dg-extract-results.sh -t $tool $(find -name '*.sum') | tee -a ../testresults/test_summary.txt
+done
 }
 
 %install
@@ -145,11 +189,15 @@ done
 install -m 644 libiberty/pic/libiberty.a %{buildroot}%{_prefix}/%{_lib}
 install -m 644 ../include/libiberty.h %{buildroot}%{_prefix}/include
 
+%{?binutils_run_tests:
+  find . \( -name "*.sum" -o -name "*.log" -a \! -name "config.log" \) -exec tar -rf testresults.tar {} \;
+  mkdir -p ../testresults && tar -xf testresults.tar -C ../testresults
+  find ../testresults/ -type f -exec chmod 644 {} \;
+}
+
 # Remove unwanted files to shut up rpm
 %{remove_docs}
 rm -rf %{buildroot}%{_bindir}/gcore
-rm -rf %{buildroot}%{_bindir}/gdb*
-rm -rf %{buildroot}%{_datadir}/gdb
 rm -rf %{buildroot}%{_libdir}/lib{bfd,opcodes,inproctrace}.{so,la}
 %{?cross:
 rm -rf %{buildroot}%{_prefix}/%{target_arch}/lib/ldscripts
@@ -174,7 +222,6 @@ rm -rf %{buildroot}%{_datadir}
 %manifest binutils.manifest
 %defattr(-,root,root)
 %{_includedir}/*.h
-%{_includedir}/gdb/*.h
 %{_libdir}/*.a
 
 %files gold
@@ -184,4 +231,11 @@ rm -rf %{buildroot}%{_datadir}
 %{_prefix}/%{target_arch}/bin/ld.gold
 }
 
+%{?binutils_run_tests:
+%files testresults
+%defattr(-,root,root)
+%doc testresults/test_summary.txt
+%doc testresults/*
+}
+
 %changelog
index 6d09c92..27d93c4 100644 (file)
 %define binutils_run_tests 1
 %endif
 
+# Enable this when testing on device to:
+# 1. Enable macro to turn on testsuite building ('binutils_run_tests 1')
+# 2. Keep 'build-dir/' folder in build stage as we do not want to rebuild all
+# binutils again on device after invoking rpmbuild --short-circuit -bc ...
+# 3. Skip configure and make commands and go directly to 'make check'
+%if 0%{?run_tests_on_device}
+%define binutils_run_tests 1
+%define binutils_keep_build_dir 1
+%define binutils_skip_configure 1
+%define binutils_skip_make 1
+%endif
+
+# Exit right after 'make ..' step to keep all object files produced by binutils build
+%if 0%{?exit_on_make_finish}
+%define binutils_exit_on_make_finish 1
+%endif
+
 Name:           binutils%{?cross:-%{cross}}
 BuildRequires:  makeinfo
 BuildRequires:  bison
@@ -36,7 +53,6 @@ BuildRequires:  zlib-devel
 BuildRequires:  gcc-c++
 %if 0%{?binutils_run_tests}
 BuildRequires:  dejagnu
-BuildRequires:  gdb
 BuildRequires:  glibc-devel-static
 %endif
 Version:        2.33.1
@@ -77,6 +93,14 @@ This package includes header files and static libraries necessary to
 build programs which use the GNU BFD library, which is part of
 binutils.
 
+%{?binutils_run_tests:
+%package testresults
+Summary:       Testsuite results
+License:       Public Domain
+Group:         Development/Building
+%description testresults
+Results from running the binutils tests.
+}
 
 %prep
 %setup -q -n binutils-%{version}
@@ -88,9 +112,16 @@ RPM_OPT_FLAGS="$RPM_OPT_FLAGS -Wno-error %{?cross:-DIGNORE_BROKEN_PLUGINS}"
 export CFLAGS="${RPM_OPT_FLAGS}"
 export CXXFLAGS="${RPM_OPT_FLAGS}"
 
-mkdir build-dir
+%{!?binutils_keep_build_dir:
+rm -rf build-dir
+}
+# Remove gdb and sim since they have separate gdb package
+rm -rf gdb sim
+
+mkdir -p build-dir
 cd build-dir
 
+%{!?binutils_skip_configure:
 ../configure \
        --prefix=%{_prefix} --libdir=%{_libdir} \
        --infodir=%{_infodir} --mandir=%{_mandir} \
@@ -115,12 +146,25 @@ cd build-dir
        --enable-shared \
        --enable-new-dtags \
        --enable-relro=no
+}
 
+%{!?binutils_skip_make:
 make %{?_smp_mflags}
+}
+
+%{?binutils_exit_on_make_finish:
+exit 1
+}
 
-%check
 %{?binutils_run_tests:
-    make %{?_smp_mflags} -C build-dir check -k
+echo "Run testsuite"
+# asan needs a whole shadow address space
+ulimit -v unlimited || true
+make -k check %{?_smp_mflags} || true
+mkdir ../testresults
+for tool in $(find -name '*.sum' -exec basename {} \; | sort -u | sed -e 's/.sum//'); do
+../contrib/dg-extract-results.sh -t $tool $(find -name '*.sum') | tee -a ../testresults/test_summary.txt
+done
 }
 
 %install
@@ -142,11 +186,15 @@ done
 install -m 644 libiberty/pic/libiberty.a %{buildroot}%{_prefix}/%{_lib}
 install -m 644 ../include/libiberty.h %{buildroot}%{_prefix}/include
 
+%{?binutils_run_tests:
+  find . \( -name "*.sum" -o -name "*.log" -a \! -name "config.log" \) -exec tar -rf testresults.tar {} \;
+  mkdir -p ../testresults && tar -xf testresults.tar -C ../testresults
+  find ../testresults/ -type f -exec chmod 644 {} \;
+}
+
 # Remove unwanted files to shut up rpm
 %{remove_docs}
 rm -rf %{buildroot}%{_bindir}/gcore
-rm -rf %{buildroot}%{_bindir}/gdb*
-rm -rf %{buildroot}%{_datadir}/gdb
 rm -rf %{buildroot}%{_libdir}/lib{bfd,opcodes,inproctrace}.{so,la}
 %{?cross:
 rm -rf %{buildroot}%{_prefix}/%{target_arch}/lib/ldscripts
@@ -171,7 +219,6 @@ rm -rf %{buildroot}%{_datadir}
 %manifest binutils.manifest
 %defattr(-,root,root)
 %{_includedir}/*.h
-%{_includedir}/gdb/*.h
 %{_libdir}/*.a
 
 %files gold
@@ -181,4 +228,11 @@ rm -rf %{buildroot}%{_datadir}
 %{_prefix}/%{target_arch}/bin/ld.gold
 }
 
+%{?binutils_run_tests:
+%files testresults
+%defattr(-,root,root)
+%doc testresults/test_summary.txt
+%doc testresults/*
+}
+
 %changelog