diff --git a/.gitignore b/.gitignore index 82d969f..2bb434a 100644 --- a/.gitignore +++ b/.gitignore @@ -39,3 +39,5 @@ /cfe-7.0.0rc1.src.tar.xz /test-suite-7.0.0rc1.src.tar.xz /clang-tools-extra-7.0.0rc1.src.tar.xz +/test-suite-7.0.0rc1.src.fedora.tar.gz +/test-suite-7.0.0rc1.src.fedora.tar.xz diff --git a/0001-ABI-Testsuite-Force-the-old-c-11-ABI-in-mangling-tes.patch b/0001-ABI-Testsuite-Force-the-old-c-11-ABI-in-mangling-tes.patch new file mode 100644 index 0000000..9a9fc1c --- /dev/null +++ b/0001-ABI-Testsuite-Force-the-old-c-11-ABI-in-mangling-tes.patch @@ -0,0 +1,25 @@ +From 2ebadefad7d5b8d6770fc135f1ad48059a5ac3b5 Mon Sep 17 00:00:00 2001 +From: Tom Stellard +Date: Fri, 17 Aug 2018 20:12:53 -0700 +Subject: [PATCH] ABI-Testsuite: Force the old c++11 ABI in mangling/test.xpp + +The check lines for this test assume the old c++11 ABI. +--- + ABI-Testsuite/test/mangling/test.xpp | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/ABI-Testsuite/test/mangling/test.xpp b/ABI-Testsuite/test/mangling/test.xpp +index e7f4e00..b39e284 100755 +--- a/ABI-Testsuite/test/mangling/test.xpp ++++ b/ABI-Testsuite/test/mangling/test.xpp +@@ -1,6 +1,6 @@ + // This file is distributed under the University of Illinois Open Source License. + // See LICENSE.TXT for details. +-// RUN: cxx_compiler cxx_11 -c %s -o %t.o ++// RUN: cxx_compiler cxx_11 -D_GLIBCXX_USE_CXX11_ABI=0 -c %s -o %t.o + // RUN: bindump %t.o | FileCheck -allow-deprecated-dag-overlap prefixes %s + + #include +-- +1.8.3.1 + diff --git a/0001-Fix-CLAMR-build-with-newer-libstdc.patch b/0001-Fix-CLAMR-build-with-newer-libstdc.patch new file mode 100644 index 0000000..72bafc4 --- /dev/null +++ b/0001-Fix-CLAMR-build-with-newer-libstdc.patch @@ -0,0 +1,28 @@ +From b997a61df6094d258db94393d378282e039ebe13 Mon Sep 17 00:00:00 2001 +From: Tom Stellard +Date: Fri, 17 Aug 2018 16:00:52 -0700 +Subject: [PATCH] Fix CLAMR build with newer libstdc++ + +--- + MultiSource/Benchmarks/DOE-ProxyApps-C++/CLAMR/MallocPlus.h | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/MultiSource/Benchmarks/DOE-ProxyApps-C++/CLAMR/MallocPlus.h b/MultiSource/Benchmarks/DOE-ProxyApps-C++/CLAMR/MallocPlus.h +index 138704f..9db368d 100644 +--- a/MultiSource/Benchmarks/DOE-ProxyApps-C++/CLAMR/MallocPlus.h ++++ b/MultiSource/Benchmarks/DOE-ProxyApps-C++/CLAMR/MallocPlus.h +@@ -99,9 +99,9 @@ struct malloc_plus_memory_entry { + + struct cmp_str + { +- bool operator()(char const *a, char const *b) ++ bool operator()(const string &a, const string &b) + { +- return strcmp(a, b) < 0; ++ return a.compare(b) < 0; + } + }; + +-- +1.8.3.1 + diff --git a/clang.spec b/clang.spec index 52a5538..bd5b9fb 100644 --- a/clang.spec +++ b/clang.spec @@ -55,11 +55,11 @@ %global clang_srcdir cfe-%{version}%{?rc_ver:rc%{rc_ver}}.src %global clang_tools_srcdir clang-tools-extra-%{version}%{?rc_ver:rc%{rc_ver}}.src -%global test_suite_srcdir test-suite-%{version}%{?rc_ver:rc%{rc_ver}}.src +%global test_suite_srcdir test-suite-%{version}%{?rc_ver:rc%{rc_ver}}.src.fedora Name: %pkg_name Version: %{maj_ver}.%{min_ver}.%{patch_ver} -Release: 0.3.rc%{rc_ver}%{?dist} +Release: 0.4.rc%{rc_ver}%{?dist} Summary: A C language family front-end for LLVM License: NCSA @@ -67,7 +67,14 @@ URL: http://llvm.org Source0: http://%{?rc_ver:pre}releases.llvm.org/%{version}/%{?rc_ver:rc%{rc_ver}}/%{clang_srcdir}.tar.xz %if !0%{?compat_build} Source1: http://llvm.org/releases/%{version}/%{clang_tools_srcdir}.tar.xz -Source2: http://llvm.org/releases/%{version}/%{test_suite_srcdir}.tar.xz + +# The LLVM Test Suite contains progrms with "BAD" or unknown licenses which should +# be removed. Some of the unknown licenses may be OK, but until they are reviewed, +# we will remove them. +# Use the pkg_test_suite.sh script to generate the test-suite tarball: +# wget http://llvm.org/releases/%%{version}/%%{test_suite_srcdir}.tar.xz +# ./pkg_test_suite.sh %%{test_suite_srcdir}.tar.xz +Source2: %{test_suite_srcdir}.tar.xz %endif Source100: clang-config.h @@ -78,6 +85,10 @@ Patch2: 0001-Driver-Prefer-vendor-supplied-gcc-toolchain.patch # This was merged into the release_70 branch after 7.0.0-rc1 Patch3: 0001-Merging-r338627.patch +# Test suite Patches +Patch100: 0001-Fix-CLAMR-build-with-newer-libstdc.patch +Patch101: 0001-ABI-Testsuite-Force-the-old-c-11-ABI-in-mangling-tes.patch + BuildRequires: gcc BuildRequires: gcc-c++ BuildRequires: cmake @@ -108,11 +119,7 @@ BuildRequires: python3-lit # /usr/bin/python2, so we must have the python2 version of lit. # FIXME: We should find a way to not depend on python2-lit. BuildRequires: python2-lit - -BuildRequires: zlib-devel -BuildRequires: tcl -BuildRequires: python2-virtualenv -BuildRequires: libstdc++-static +BuildRequires: python2-rpm-macros BuildRequires: python3-sphinx BuildRequires: libatomic @@ -198,6 +205,22 @@ Requires: %{name}-libs%{?_isa} = %{version}-%{release} Requires: python2 %description -n python2-clang %{summary}. + +%package -n llvm-test-suite +Summary: C/C++ Compiler Test Suite +License: NCSA, MIT, GPL, Python +Requires: cmake +Requires: libstdc++-static +Requires: python3-lit = 0.7.0 +# ABI-Testsuite requires python2-lit +Requires: python2-lit = 0.7.0 +Requires: llvm +Requires: tcl + +%description -n llvm-test-suite +C/C++ Compiler Test Suite that is mantained as an LLVM sub-project. This test +suite can be run with any compiler, not just clang. + %endif @@ -208,6 +231,8 @@ Requires: python2 %setup -T -q -b 1 -n %{clang_tools_srcdir} %setup -T -q -b 2 -n %{test_suite_srcdir} +%patch100 -p1 -b .build-fix +%patch101 -p1 -b .old-abi-fix %setup -q -n %{clang_srcdir} %patch0 -p1 -b .lit-search-path @@ -319,6 +344,10 @@ rm -vf %{buildroot}%{_datadir}/clang/bash-autocomplete.sh # Add clang++-{version} sylink ln -s %{_bindir}/clang++ %{buildroot}%{_bindir}/clang++-%{maj_ver} +# Install test suite +mkdir -p %{buildroot}%{_datadir}/llvm-test-suite/ +cp -R %{_builddir}/%{test_suite_srcdir}/* %{buildroot}%{_datadir}/llvm-test-suite + %endif %check @@ -333,14 +362,6 @@ PATH=%{_libdir}/llvm:$PATH make check-clang || \ false %endif -mkdir -p %{_builddir}/%{test_suite_srcdir}/_build -cd %{_builddir}/%{test_suite_srcdir}/_build - -# FIXME: Using the cmake macro adds -Werror=format-security to the C/CXX flags, -# which causes the test suite to fail to build. -cmake .. -DCMAKE_C_COMPILER=%{buildroot}/usr/bin/clang \ - -DCMAKE_CXX_COMPILER=%{buildroot}/usr/bin/clang++ -make %{?_smp_mflags} check || : %endif @@ -407,8 +428,14 @@ make %{?_smp_mflags} check || : %files -n python2-clang %{python2_sitelib}/clang/ +%files -n llvm-test-suite +%{_datadir}/llvm-test-suite/ + %endif %changelog +* Fri Aug 17 2018 Tom Stellard - 7.0.0-0.4.rc1 +- Move llvm-test-suite into a sub-package + * Fri Aug 17 2018 Tom Stellard - 7.0.0-0.3.rc1 - Recommend the same version of compiler-rt diff --git a/pkg_test_suite.sh b/pkg_test_suite.sh new file mode 100644 index 0000000..e60c27b --- /dev/null +++ b/pkg_test_suite.sh @@ -0,0 +1,44 @@ + +set -ex +tmpdir=`mktemp -d` +currentdir=`pwd` + +tar -C $tmpdir -xJf $1 + +test_suite_src=`echo $1 | cut -d . -f 1-4` +pushd $tmpdir +test -d $test_suite_src + + +UNKNOWN="\ + MultiSource/Benchmarks/mediabench/ \ + MultiSource/Applications/JM/" + +#MallocBench/{espresso,cfrac} might be OK +BAD="\ + MultiSource/Benchmarks/MallocBench/ \ + MultiSource/Benchmarks/7zip/" + +POSSIBLY_BAD="\ + MultiSource/Benchmarks/Olden/ \ + MultiSource/Benchmarks/Fhourstones/ \ + MultiSource/Benchmarks/ASCI_Purple/SMG2000/ \ + MultiSource/Benchmarks/Fhourstones-3.1/ \ + MultiSource/Benchmarks/McCat/ \ + MultiSource/Applications/spiff/" + + +for f in $UNKNOWN $BAD $POSSIBLY_BAD; do + test -d $test_suite_src/$f + rm -Rf $test_suite_src/$f + basedir=`dirname $f` + dir=`basename $f` + cmake_file=$test_suite_src/$basedir/CMakeLists.txt + test -f $cmake_file + sed -i s/add_subdirectory\($dir\)//g $cmake_file + +done + +tar --transform=s/$test_suite_src/$test_suite_src.fedora/ --show-transformed-names -cJf $currentdir/$test_suite_src.fedora.tar.xz $test_suite_src +pushd +rm -Rf $tmpdir diff --git a/sources b/sources index d6bcc69..50d79c3 100644 --- a/sources +++ b/sources @@ -1,3 +1,3 @@ SHA512 (cfe-7.0.0rc1.src.tar.xz) = 97d8775c36c0883861d6b0732451c3d431d30dbe39d405b2755d87a4d8d217fafea7becd31765dca8d5b7ae0dc33785ada10c6f60331a70d5294b22f00242cd0 -SHA512 (test-suite-7.0.0rc1.src.tar.xz) = fbfeefdd27ff9e8e323214a77fd34bc661f7869b62188d8fe86308396ca2dedb757dd3b8f00d4c3978f727ba35b64797832dcfadff9882a7418b2aa74616aca8 +SHA512 (test-suite-7.0.0rc1.src.fedora.tar.xz) = ed31281b7119d4f9b6b3c65a6c872a7987fe18a589a485485a5b715620ffef4b116a6f72fac039c6638ea2e981b348cad9d6908d111661db3df8bfe96f64e795 SHA512 (clang-tools-extra-7.0.0rc1.src.tar.xz) = a7d467b714731f54ed08019b698f7e301060ca84f0fcb23494c374a0d3b6e9d4d3f3bfd62ed83888574a29aff3fb5a718b5af85f59abd49a2683dbb543c7e033 diff --git a/tests/tests.yml b/tests/tests.yml index 6be2660..4131868 100644 --- a/tests/tests.yml +++ b/tests/tests.yml @@ -5,8 +5,17 @@ - classic required_packages: - clang + - llvm-test-suite + - ninja-build - gcc-x86_64-linux-gnu + - which tests: - rhbz#482491: dir: ./ run: echo "int main(){}" | clang -x c - + - llvm-test-suite: + dir: ./ + run: cd $(mktemp -d) && cmake -G Ninja /usr/share/llvm-test-suite/ -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_C_COMPILER=clang && ninja check + - llvm-abi-test-suite: + dir: ./ + run: cd /usr/share/llvm-test-suite/ABI-Testsuite/ && python2 linux-x86.py clang test -v --path /usr/lib64/llvm/