Compare commits

..

No commits in common. "c8-stream-rhel8" and "c10s" have entirely different histories.

21 changed files with 1856 additions and 1039 deletions

View File

@ -1,4 +0,0 @@
581e929ba0d9fafc555081ab18d8c3fdf4478ac2 SOURCES/clang-18.1.8.src.tar.xz
b943c2de0e134d652018e819e855eff0213a20ac SOURCES/clang-18.1.8.src.tar.xz.sig
32923b812700526b76451384e4662ca45360d564 SOURCES/clang-tools-extra-18.1.8.src.tar.xz
1dc8e1c7e5b2ffc76a1010b50eb3fb47642b4e74 SOURCES/clang-tools-extra-18.1.8.src.tar.xz.sig

17
.copr/Makefile Normal file
View File

@ -0,0 +1,17 @@
# See https://docs.pagure.org/copr.copr/user_documentation.html#make-srpm
# See for the --setopt option in the enabling of copr repo see:
# https://pagure.io/copr/copr/issue/184
COPR_USERNAME=$(shell rpm --eval %copr_username)
COPR_PROJECT=$(shell rpm --eval %copr_projectname)
.PHONY: srpm
srpm:
dnf install -y dnf-plugins-core fedora-packager
dnf copr enable -y --setopt=reposdir=/tmp/yum.repos.d $(COPR_USERNAME)/$(COPR_PROJECT)
dnf install -y --setopt=reposdir=/tmp/yum.repos.d llvm-snapshot-builder
rpmbuild \
--define "_srcrpmdir $(outdir)" \
--define "_sourcedir $(shell pwd)" \
--define "_disable_source_fetch 0" \
-bs $(spec)

1
.fmf/version Normal file
View File

@ -0,0 +1 @@
1

9
.gitignore vendored
View File

@ -1,4 +1,5 @@
SOURCES/clang-18.1.8.src.tar.xz
SOURCES/clang-18.1.8.src.tar.xz.sig
SOURCES/clang-tools-extra-18.1.8.src.tar.xz
SOURCES/clang-tools-extra-18.1.8.src.tar.xz.sig
/*.src.rpm
/*.src.tar.xz
/*.src.tar.xz.sig
/cmake/
/results_clang/

View File

@ -0,0 +1,92 @@
From ba9cfbe8e1d034d823dabf1c76d270fce8085f1b Mon Sep 17 00:00:00 2001
From: Tom Stellard <tstellar@redhat.com>
Date: Thu, 9 Mar 2023 21:52:41 -0800
Subject: [PATCH] Restore -fopenmp-implicit-rpath, disabled by default
Used by redhat-rpm-config on older Fedora versions.
---
clang/include/clang/Driver/Options.td | 6 ++++++
clang/lib/Driver/ToolChains/CommonArgs.cpp | 19 +++++++++++++++++++
clang/lib/Driver/ToolChains/CommonArgs.h | 3 +++
clang/test/OpenMP/Inputs/libomp.a | 1 +
4 files changed, 29 insertions(+)
create mode 100644 clang/test/OpenMP/Inputs/libomp.a
diff --git a/clang/include/clang/Driver/Options.td b/clang/include/clang/Driver/Options.td
index 31ecf98b806b..46aa49e1d0d1 100644
--- a/clang/include/clang/Driver/Options.td
+++ b/clang/include/clang/Driver/Options.td
@@ -5194,6 +5194,12 @@ def offload_add_rpath: Flag<["--"], "offload-add-rpath">,
def no_offload_add_rpath: Flag<["--"], "no-offload-add-rpath">,
Flags<[NoArgumentUnused]>,
Alias<frtlib_add_rpath>;
+defm openmp_implicit_rpath: BoolFOption<"openmp-implicit-rpath",
+ LangOpts<"OpenMP">,
+ DefaultFalse,
+ PosFlag<SetTrue, [], [ClangOption], "Set rpath on OpenMP executables">,
+ NegFlag<SetFalse>,
+ BothFlags<[NoArgumentUnused]>>;
def r : Flag<["-"], "r">, Flags<[LinkerInput, NoArgumentUnused]>,
Group<Link_Group>;
def regcall4 : Flag<["-"], "regcall4">, Group<m_Group>,
diff --git a/clang/lib/Driver/ToolChains/CommonArgs.cpp b/clang/lib/Driver/ToolChains/CommonArgs.cpp
index 483ecd0ae592..55c673460a2f 100644
--- a/clang/lib/Driver/ToolChains/CommonArgs.cpp
+++ b/clang/lib/Driver/ToolChains/CommonArgs.cpp
@@ -889,6 +889,22 @@ static void addOpenMPDeviceLibC(const ToolChain &TC, const ArgList &Args,
}
}
+void tools::addOpenMPRuntimeSpecificRPath(const ToolChain &TC,
+ const ArgList &Args,
+ ArgStringList &CmdArgs) {
+
+ if (Args.hasFlag(options::OPT_fopenmp_implicit_rpath,
+ options::OPT_fno_openmp_implicit_rpath, false)) {
+ // Default to clang lib / lib64 folder, i.e. the same location as device
+ // runtime
+ SmallString<256> DefaultLibPath =
+ llvm::sys::path::parent_path(TC.getDriver().Dir);
+ llvm::sys::path::append(DefaultLibPath, CLANG_INSTALL_LIBDIR_BASENAME);
+ CmdArgs.push_back("-rpath");
+ CmdArgs.push_back(Args.MakeArgString(DefaultLibPath));
+ }
+}
+
void tools::addOpenMPRuntimeLibraryPath(const ToolChain &TC,
const ArgList &Args,
ArgStringList &CmdArgs) {
@@ -963,6 +979,9 @@ bool tools::addOpenMPRuntime(ArgStringList &CmdArgs, const ToolChain &TC,
addOpenMPDeviceLibC(TC, Args, CmdArgs);
addArchSpecificRPath(TC, Args, CmdArgs);
+
+ if (RTKind == Driver::OMPRT_OMP)
+ addOpenMPRuntimeSpecificRPath(TC, Args, CmdArgs);
addOpenMPRuntimeLibraryPath(TC, Args, CmdArgs);
return true;
diff --git a/clang/lib/Driver/ToolChains/CommonArgs.h b/clang/lib/Driver/ToolChains/CommonArgs.h
index 096152bfbdcf..7e8bf6b8830c 100644
--- a/clang/lib/Driver/ToolChains/CommonArgs.h
+++ b/clang/lib/Driver/ToolChains/CommonArgs.h
@@ -117,6 +117,9 @@ void AddAssemblerKPIC(const ToolChain &ToolChain,
const llvm::opt::ArgList &Args,
llvm::opt::ArgStringList &CmdArgs);
+void addOpenMPRuntimeSpecificRPath(const ToolChain &TC,
+ const llvm::opt::ArgList &Args,
+ llvm::opt::ArgStringList &CmdArgs);
void addArchSpecificRPath(const ToolChain &TC, const llvm::opt::ArgList &Args,
llvm::opt::ArgStringList &CmdArgs);
void addOpenMPRuntimeLibraryPath(const ToolChain &TC,
diff --git a/clang/test/OpenMP/Inputs/libomp.a b/clang/test/OpenMP/Inputs/libomp.a
new file mode 100644
index 000000000000..8b277f0dd5dc
--- /dev/null
+++ b/clang/test/OpenMP/Inputs/libomp.a
@@ -0,0 +1 @@
+!<arch>
--
2.41.0

View File

@ -0,0 +1,39 @@
From 3dc5722d5c7673a879f2b4680369d3ac8b6b64b6 Mon Sep 17 00:00:00 2001
From: Tom Stellard <tstellar@redhat.com>
Date: Wed, 4 Aug 2021 14:05:38 -0700
Subject: [PATCH] cmake: Allow shared libraries to customize the soname using
LLVM_ABI_REVISION
The LLVM_ABI_REVISION variable is intended to be used for release
candidates which introduce an ABI change to a shared library. This
variable can be specified per library, so there is not one global value
for all of LLVM.
For example, if we LLVM X.0.0-rc2 introduces an ABI change for a library
compared with LLVM X.0.0-rc1, then the LLVM_ABI_REVISION number for
library will be incremented by 1.
In the main branch, LLVM_ABI_REVISION should always be 0, it is only
meant to be used in the release branch.
Differential Revision: https://reviews.llvm.org/D105594
---
clang/tools/clang-shlib/CMakeLists.txt | 5 +++++
3 files changed, 19 insertions(+), 2 deletions(-)
diff --git a/clang/tools/clang-shlib/CMakeLists.txt b/clang/tools/clang-shlib/CMakeLists.txt
index 9c1f8ea452b3..4d785924e4bb 100644
--- a/clang/tools/clang-shlib/CMakeLists.txt
+++ b/clang/tools/clang-shlib/CMakeLists.txt
@@ -1,3 +1,8 @@
+# In the main branch, LLVM_ABI_REVISION should always be 0. In the release
+# branches, this should be incremented before each release candidate every
+# time the ABI of libclang-cpp.so changes.
+set(LLVM_ABI_REVISION 0)
+
# Building libclang-cpp.so fails if LLVM_ENABLE_PIC=Off
if (NOT LLVM_ENABLE_PIC)
return()
--
2.27.0

View File

@ -1,3 +0,0 @@
# Drop the following option after debugedit adds support to DWARF-5:
# https://sourceware.org/bugzilla/show_bug.cgi?id=28728
-gdwarf-4 -g0

File diff suppressed because it is too large Load Diff

6
clang.rpmlintrc Normal file
View File

@ -0,0 +1,6 @@
# clang needs libstdc++-devel installed in order to compile c++ programs.
addFilter("E: devel-dependency libstdc\+\+-devel")
addFilter("E: explicit-lib-dependency libstdc\+\+-devel")
# clang installs libear to /usr/lib on all arches, so we have to use
# a hard-coded /usr/lib path in order to move it to the python3 sitelib.
addFilter("E: hardcoded-library-path in %{_prefix}/lib/{libear")

1596
clang.spec Normal file

File diff suppressed because it is too large Load Diff

20
gating.yaml Normal file
View File

@ -0,0 +1,20 @@
--- !Policy
product_versions:
- fedora-*
decision_context: bodhi_update_push_testing
rules:
- !PassingTestCaseRule {test_case_name: fedora-ci.koji-build.tier0.functional}
--- !Policy
product_versions:
- fedora-*
decision_context: bodhi_update_push_stable
rules:
- !PassingTestCaseRule {test_case_name: fedora-ci.koji-build.tier0.functional}
--- !Policy
product_versions:
- rhel-10
decision_context: osci_compose_gate
rules:
- !PassingTestCaseRule {test_case_name: baseos-ci.brew-build.tier0-tmt-x86_64-aarch64.functional}
- !PassingTestCaseRule {test_case_name: baseos-ci.brew-build.tier0-tmt-s390x-ppc64le.functional}
- !PassingTestCaseRule {test_case_name: osci.brew-build.rebuild.validation}

4
sources Normal file
View File

@ -0,0 +1,4 @@
SHA512 (clang-18.1.8.src.tar.xz) = 4147ef5e3547e80fbea573a6e3964870b38e7a547e796deb8859ca670b039ddd1af289cd4feadcb4ab5e94211b2ab5e91dfa84f58f114fdcbc9e807c9de901ca
SHA512 (clang-18.1.8.src.tar.xz.sig) = ff8a12108d47a97c05d0a0cd4b4af278cc0f84601970a1560e4005f256b3304c6c5129bd67c8f5a387596b8bdd54ddda5066d9db7e9ecb4bcb0bfcd57d319c49
SHA512 (clang-tools-extra-18.1.8.src.tar.xz) = e6770875b1bfb3626de2e15133aa819669c889574134b7c22d30882717d0f400a73d2e0e881a2bd707e0b07bca5fcfd1d4a9e83b1101c7f15e4657782659b6fe
SHA512 (clang-tools-extra-18.1.8.src.tar.xz.sig) = 7730d2e34c1f65863cd1ba7d88c12e7997f645742be6c7271f5216876724837a450ff41d6225274266e4dace8c687c1af37d7115578829bf797c5724448bb174

6
tests/README.md Normal file
View File

@ -0,0 +1,6 @@
# Gating testplans for Clang
The tests for clang are in a separate repo: https://src.fedoraproject.org/tests/clang
This directory should contain only fmf plans (such as build-gating.fmf) which import
the tests from the tests repo. This can be done using the "url" parameter of the
plan's "discover" step. Reference: https://tmt.readthedocs.io/en/stable/spec/plans.html#fmf

70
tests/build-gating.fmf Normal file
View File

@ -0,0 +1,70 @@
#
# Build/PR gating tests for *LLVM 13*
#
# Compatible with various LLVM 13 distributions:
#
# * Fedora (ursine packages)
# * Centos 9 stream (ursine packages)
# * RHEL-9 (ursine packages)
# * RHEL-8 (Red Hat module)
# * RHEL-7 (software collection)
#
summary: Clang tests for build/PR gating
adjust:
- because: "Plan to be ran when either executed locally, or executed by CI system to gate a build or PR."
when: >-
trigger is defined
and trigger != commit
and trigger != build
enabled: false
- because: "When testing SCL-ized LLVM, the collection must be enabled first"
environment+:
WITH_SCL: "scl enable llvm-toolset-13.0"
when: "collection == llvm-toolset-13.0"
- because: "When testing SCL-ized LLVM, the collection must be enabled first"
environment+:
WITH_SCL: "scl enable llvm-toolset-14.0"
when: "collection == llvm-toolset-14.0"
# Unfortunately, TMT does not support more declarative approach, we need to run commands on our own.
- because: "On RHEL, CRB must be enabled to provide rarer packages"
prepare+:
- name: Enable CRB
how: shell
script: dnf config-manager --set-enabled rhel-CRB
when: >-
distro == rhel-9
or distro == rhel-8
# Unfortunately, TMT does not support more declarative approach, we need to run commands on our own.
- because: "On CentOS, CRB must be enabled to provide rarer packages"
prepare+:
- name: Enable CRB
how: shell
script: dnf config-manager --set-enabled crb
when: >-
distro == centos
discover:
- name: clang-tests
how: fmf
url: https://src.fedoraproject.org/tests/clang.git
ref: main
filter: "tag:-not-in-default"
- name: upstream-llvm-integration-testsuite
how: fmf
url: https://src.fedoraproject.org/tests/llvm.git
ref: main
test: integration-test-suite
- name: redhat-rpm-config
how: fmf
url: https://src.fedoraproject.org/rpms/redhat-rpm-config.git
ref: rawhide
test: brp-llvm-compile-lto-elf
execute:
how: tmt
provision:
hardware:
memory: ">= 4 GiB"