[packaging] Create clang-gcc-replace package
authorSlava Barinov <v.barinov@samsung.com>
Thu, 9 Sep 2021 14:59:38 +0000 (17:59 +0300)
committerDongkyun Son <dongkyun.s@samsung.com>
Wed, 8 Mar 2023 00:20:46 +0000 (09:20 +0900)
The package provides symlinks %_bindir/gcc and %_bindir/g++ for clang and
clang++ respectively.

Can be used for compiler enforcement in environments which do not allow
compiler change.

Change-Id: I49660b9a705162cebe569a8b3df0714f472d86ad
Signed-off-by: Slava Barinov <v.barinov@samsung.com>
packaging/llvm.spec

index 77420e0..a782ed4 100644 (file)
@@ -106,6 +106,15 @@ Provides: libclang.so.%{version}
 %description -n clang
 A new front-end for the C family of languages is in development.
 
+%package -n clang-gcc-replace
+Summary: Clang %{version} symlinks as gcc/g++
+License: NCSA
+Requires: clang = %{version}-%{release}
+Conflicts: gcc
+
+%description -n clang-gcc-replace
+Symlinks to replace gcc and g++ for compilation
+
 %package -n clang-devel
 Summary: Clang %{version} Development Library
 Requires: clang = %{version}-%{release}
@@ -213,6 +222,10 @@ cd build
 %make_install
 ln -sf %{install_prefix}/bin/clang++ %{buildroot}%{install_prefix}/bin/clang++-%{llvm_version}
 
+# Compiler replacement hack
+ln -sf %{install_prefix}/bin/clang-%{llvm_version} %{buildroot}%{_bindir}/gcc
+ln -sf %{install_prefix}/bin/clang++-%{llvm_version} %{buildroot}%{_bindir}/g++
+
 mkdir -p %{buildroot}%{bindir}
 # copy lldb for sdk
 mkdir -p %{buildroot}%{sdk_bin_dir}
@@ -371,6 +384,12 @@ echo Cleaning %{buildroot}
 %{install_prefix}/libexec/c++-analyzer
 %{install_prefix}/libexec/ccc-analyzer
 
+%files -n clang-gcc-replace
+%manifest %{name}.manifest
+%defattr(-,root,root,-)
+%{_bindir}/gcc
+%{_bindir}/g++
+
 %files -n clang-devel
 %manifest %{name}.manifest
 %defattr(-,root,root,-)