From d41bab9bdad8c6b1922e2a623eb93385a49bb68f Mon Sep 17 00:00:00 2001 From: liyunfei Date: Thu, 17 Aug 2023 15:59:38 +0800 Subject: [PATCH] [Backport]Add support for selecting a clang as a tool Reference: https://src.fedoraproject.org/rpms/redhat-rpm-config/c/7562b38ec5edac3da0e150fcbe57cabbcd7b7f9e?branch=rawhide Originally-by: Igor Raits --- ...port-for-selecting-a-clang-as-a-tool.patch | 129 ++++++++++++++++++ openEuler-rpm-config.spec | 6 +- 2 files changed, 134 insertions(+), 1 deletion(-) create mode 100644 Backport-Add-support-for-selecting-a-clang-as-a-tool.patch diff --git a/Backport-Add-support-for-selecting-a-clang-as-a-tool.patch b/Backport-Add-support-for-selecting-a-clang-as-a-tool.patch new file mode 100644 index 0000000..bf21c28 --- /dev/null +++ b/Backport-Add-support-for-selecting-a-clang-as-a-tool.patch @@ -0,0 +1,129 @@ +From f7e2d84e2b89285ebea5869cebd785c563a11f7b Mon Sep 17 00:00:00 2001 +From: liyunfei +Date: Wed, 16 Aug 2023 17:41:51 +0800 +Subject: [PATCH] [Backport]Add support for selecting a clang as a toolchain + +Reference: https://src.fedoraproject.org/rpms/redhat-rpm-config/c/7562b38ec5edac3da0e150fcbe57cabbcd7b7f9e?branch=rawhide + +Originally-by: Igor Raits +--- + generic-hardened-clang.cfg | 1 + + macros | 57 +++++++++++++++++++++++++++++++++++--- + rpmrc | 4 +-- + 3 files changed, 56 insertions(+), 6 deletions(-) + create mode 100644 generic-hardened-clang.cfg + +diff --git a/generic-hardened-clang.cfg b/generic-hardened-clang.cfg +new file mode 100644 +index 0000000..b570eb5 +--- /dev/null ++++ b/generic-hardened-clang.cfg +@@ -0,0 +1 @@ ++-fPIE +diff --git a/macros b/macros +index 65d1365..47a20f5 100755 +--- a/macros ++++ b/macros +@@ -23,6 +23,46 @@ + + %_build_id_links none + ++# GCC toolchain ++%__cc_gcc gcc ++%__cxx_gcc g++ ++%__cpp_gcc gcc -E ++ ++# Clang toolchain ++%__cc_clang clang ++%__cxx_clang clang++ ++%__cpp_clang clang-cpp ++ ++# Default to the GCC toolchain ++# ++# It is enough to override `toolchain` macro and all relevant macro for C/C++ ++# compilers will be switched. Either in the spec or in the command-line. ++# ++# %global toolchain clang ++# ++# or: ++# ++# rpmbuild -D "toolchain clang" … ++# ++# Inside a spec file it is also possible to determine which toolchain is in use ++# by testing the same macro. For example: ++# ++# %if "%{toolchain}" == "gcc" ++# BuildRequires: gcc ++# %endif ++# ++# or: ++# ++# %if "%{toolchain}" == "clang" ++# BuildRequires: clang compiler-rt ++# %endif ++# ++%toolchain gcc ++ ++%__cc %{expand:%%{__cc_%{toolchain}}} ++%__cxx %{expand:%%{__cxx_%{toolchain}}} ++%__cpp %{expand:%%{__cpp_%{toolchain}}} ++ + #============================================================================== + # ---- compiler flags. + +@@ -36,7 +76,10 @@ + CXXFLAGS="${CXXFLAGS:-%{build_cxxflags}}" ; export CXXFLAGS ; \ + FFLAGS="${FFLAGS:-%{build_fflags}}" ; export FFLAGS ; \ + FCFLAGS="${FCFLAGS:-%{build_fflags}}" ; export FCFLAGS ; \ +- LDFLAGS="${LDFLAGS:-%{build_ldflags}}" ; export LDFLAGS ++ LDFLAGS="${LDFLAGS:-%{build_ldflags}}" ; export LDFLAGS ; \ ++ CC=%{__cc}; export CC ; \ ++ CXX=%{__cxx}; export CXX ; \ ++ CCC="${CCC:-%{__cxx}}" ; export CCC + + #For backwards compatibility only. + %__global_cflags %{build_cflags} +@@ -162,8 +205,10 @@ + # secure options for rpmbuild + # + # #hardened options +-%_hardening_cflags -specs=/usr/lib/rpm/generic-hardened-cc1 +-%_hardening_ldflags -Wl,-z,now -specs=/usr/lib/rpm/generic-hardened-ld ++%_hardening_gcc_cflags -specs=/usr/lib/rpm/generic-hardened-cc1 ++%_hardening_clang_cflags --config /usr/lib/rpm/generic-hardened-clang.cfg ++%_hardening_cflags %{expand:%%{_hardening_%{toolchain}_cflags}} -fstack-protector-strong ++%_hardening_ldflags -Wl,-z,now %[ "%{toolchain}" == "gcc" ? "-specs=/usr/lib/rpm/generic-hardened-ld" : "" ] + # Use "%undefine _hardened_build" to disable. + %_hardened_build 1 + %_hardened_cflags %{?_hardened_build:%{_hardening_cflags}} +@@ -195,7 +240,11 @@ + #%_ld_as_needed 1 + %_ld_as_needed_flags %{?_ld_as_needed:-Wl,--as-needed} + +-%__global_compiler_flags -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fstack-protector-strong -grecord-gcc-switches %{_hardened_cflags} ++%_general_options -O2 -fexceptions -g -grecord-gcc-switches -pipe ++%_warning_options -Wall -Werror=format-security ++%_preprocessor_defines -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS ++ ++%__global_compiler_flags %{_general_options} %{_warning_options} %{_preprocessor_defines} %{_hardened_cflags} + + # Automatically trim changelog entries after 2 years + %_changelog_trimtime %{lua:print(os.time() - 2 * 365 * 86400)} +diff --git a/rpmrc b/rpmrc +index 8ba756d..f0859a6 100755 +--- a/rpmrc ++++ b/rpmrc +@@ -5,8 +5,8 @@ optflags: athlon %{__global_compiler_flags} -m32 -march=athlon -fasynchronous-un + optflags: ia64 %{__global_compiler_flags} + optflags: x86_64 %{__global_compiler_flags} -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection + +-optflags: aarch64 %{__global_compiler_flags} -fasynchronous-unwind-tables -fstack-clash-protection +-optflags: riscv64 %{__global_compiler_flags} -fasynchronous-unwind-tables -fstack-clash-protection ++optflags: aarch64 %{__global_compiler_flags} -fasynchronous-unwind-tables %[ "%{toolchain}" == "gcc" ? "-fstack-clash-protection" : "" ] ++optflags: riscv64 %{__global_compiler_flags} -fasynchronous-unwind-tables %[ "%{toolchain}" == "gcc" ? "-fstack-clash-protection" : "" ] + + buildarchtranslate: athlon: i686 + buildarchtranslate: geode: i686 +-- +2.27.0 + diff --git a/openEuler-rpm-config.spec b/openEuler-rpm-config.spec index 77a2a50..9faf6a1 100644 --- a/openEuler-rpm-config.spec +++ b/openEuler-rpm-config.spec @@ -3,7 +3,7 @@ Name: %{vendor}-rpm-config Version: 30 -Release: 40 +Release: 41 License: GPL+ Summary: specific rpm configuration files URL: https://gitee.com/openeuler/openEuler-rpm-config @@ -31,6 +31,7 @@ Patch17: Feature-support-EBS-sign-for-IMA-digest-list.patch Patch18: fix-brp-ldconfig-riscv-default-library-directory.patch Patch19: add-pyproject-macros.patch Patch20: add-pytest-and-tox-macros.patch +Patch21: Backport-Add-support-for-selecting-a-clang-as-a-tool.patch Provides: python-rpm-macros = %{?epoch:%{epoch}:}%{version}-%{release} Provides: python2-rpm-macros = %{?epoch:%{epoch}:}%{version}-%{release} @@ -142,6 +143,9 @@ sed -i "s/__vendor/%{vendor}/g" `grep "__vendor" -rl %{buildroot}%{_rpmconfigdir %{rpmvdir}/find-requires.ksyms %changelog +* Thu Aug 17 2023 liyunfei - 30-41 +- Backport Add support for selecting a clang as a tool + * Mon Jul 24 2023 Dongxing Wang - 30-40 - add pytest and tox macros