diff --git a/llvm.spec b/llvm.spec
index 1769d0ad3de..7d89ae2fc97 100644
--- a/llvm.spec
+++ b/llvm.spec
@@ -1,4 +1,4 @@
-### RPM external llvm 12.0.1
+### RPM external llvm 14.0.6
## INITENV +PATH LD_LIBRARY_PATH %{i}/lib64
## INITENV +PATH PYTHON3PATH %{i}/lib64/python%{cms_python3_major_minor_version}/site-packages
@@ -7,10 +7,10 @@ Requires: gcc zlib python3
Requires: cuda
AutoReq: no
-%define llvmCommit 9f4ab770e61b68d2037cc7cda1f868a8ba52da85
-%define llvmBranch cms/release/12.x/fed4134
-%define iwyuCommit 5db414ac448004fe019871c977905cb7c2cff23f
-%define iwyuBranch clang_11
+%define llvmCommit d88fe2a1cafb6621210a7a0ae968c1e8e797d2bb
+%define llvmBranch cms/release/14.x/f28c006
+%define iwyuCommit d888efc52646dcf3e4e3a56af13aa23dd26abde0
+%define iwyuBranch master
Source0: git+https://github.com/cms-externals/llvm-project.git?obj=%{llvmBranch}/%{llvmCommit}&export=llvm-%{realversion}-%{llvmCommit}&module=llvm-%{realversion}-%{llvmCommit}&output=/llvm-%{realversion}-%{llvmCommit}.tgz
Source1: git+https://github.com/include-what-you-use/include-what-you-use.git?obj=%{iwyuBranch}/%{iwyuCommit}&export=iwyu-%{realversion}-%{iwyuCommit}&module=iwyu-%{realversion}-%{iwyuCommit}&output=/iwyu-%{realversion}-%{iwyuCommit}.tgz
diff --git a/pip/llvmlite.file b/pip/llvmlite.file
index 4491e0ac3b2..329a9d73e75 100644
--- a/pip/llvmlite.file
+++ b/pip/llvmlite.file
@@ -1,7 +1,4 @@
Requires: llvm
-Patch0: py3-llvmlite-fpic-flag
-Patch1: py3-llvmlite-version
-Patch3: py3-llvmlite-removeMethod
-%define source0 git+https://github.com/numba/llvmlite?obj=release0.35/v%{realversion}&export=llvmlite-%{realversion}&output=/source.tar.gz
+%define source0 git+https://github.com/numba/llvmlite?obj=main/%{realversion}&export=llvmlite-%{realversion}&output=/source.tar.gz
%define PipPreBuild export LLVM_CONFIG=${LLVM_ROOT}/bin/llvm-config
diff --git a/pip/requirements.txt b/pip/requirements.txt
index 007c6b4776c..b15ac993b71 100644
--- a/pip/requirements.txt
+++ b/pip/requirements.txt
@@ -151,7 +151,7 @@ kiwisolver==1.4.4
law==0.1.7
lazy-object-proxy==1.7.1
lizard==1.17.10
-llvmlite==0.38.1
+llvmlite==v0.41.0dev0
lockfile==0.12.2
luigi==3.1.1
lxml==4.9.1
diff --git a/py3-dxr.spec b/py3-dxr.spec
index b95a6edf1b7..c276e728ba4 100644
--- a/py3-dxr.spec
+++ b/py3-dxr.spec
@@ -2,7 +2,7 @@
## INITENV +PATH PYTHON3PATH %i/${PYTHON3_LIB_SITE_PACKAGES}
Requires: zlib llvm sqlite
Requires: py3-Jinja2 py3-parsimonious py3-pysqlite3 py3-Pygments
-%define dxrCommit de41946bc5601d100efb44780f11db71dafaeb1e
+%define dxrCommit e79425eded8ca0ae882b4ccceaf27ae1aab446d3
%define branch cms/6ea764102a/py3
Source0: git+https://github.com/cms-externals/dxr.git?obj=%{branch}/%{dxrCommit}&export=dxr-%{dxrCommit}&module=dxr-%dxrCommit&output=/dxr-%{dxrCommit}.tgz
diff --git a/py3-llvmlite-fpic-flag.patch b/py3-llvmlite-fpic-flag.patch
deleted file mode 100644
index 8c012689d41..00000000000
--- a/py3-llvmlite-fpic-flag.patch
+++ /dev/null
@@ -1,13 +0,0 @@
-diff --git a/ffi/Makefile.linux b/ffi/Makefile.linux
-index fcfda4e..2d875cf 100644
---- a/ffi/Makefile.linux
-+++ b/ffi/Makefile.linux
-@@ -5,7 +5,7 @@ CXX ?= g++
- CXX_FLTO_FLAGS ?= -flto
- LD_FLTO_FLAGS ?= -flto -Wl,--exclude-libs=ALL
-
--CXXFLAGS := $(CPPFLAGS) $(CXXFLAGS) $(LLVM_CXXFLAGS) $(CXX_FLTO_FLAGS)
-+CXXFLAGS := $(CPPFLAGS) $(CXXFLAGS) $(LLVM_CXXFLAGS) $(CXX_FLTO_FLAGS) -fPIC
- LDFLAGS := $(LDFLAGS) $(LLVM_LDFLAGS) $(LD_FLTO_FLAGS)
- LIBS = $(LLVM_LIBS)
- INCLUDE = core.h
diff --git a/py3-llvmlite-removeMethod.patch b/py3-llvmlite-removeMethod.patch
deleted file mode 100644
index 7cfffbbe359..00000000000
--- a/py3-llvmlite-removeMethod.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff --git a/ffi/targets.cpp b/ffi/targets.cpp
-index 3b5abf5..49cef60 100644
---- a/ffi/targets.cpp
-+++ b/ffi/targets.cpp
-@@ -204,7 +204,6 @@ LLVMPY_CreateTargetMachine(LLVMTargetRef T, const char *Triple, const char *CPU,
- rm = Reloc::DynamicNoPIC;
-
- TargetOptions opt;
-- opt.PrintMachineCode = PrintMC;
- opt.MCOptions.ABIName = ABIName;
-
- bool jit = JIT;
diff --git a/py3-llvmlite-version.patch b/py3-llvmlite-version.patch
deleted file mode 100644
index a3c369650f5..00000000000
--- a/py3-llvmlite-version.patch
+++ /dev/null
@@ -1,13 +0,0 @@
-diff --git a/ffi/build.py b/ffi/build.py
-index 6408bf5..22f3b3c 100755
---- a/ffi/build.py
-+++ b/ffi/build.py
-@@ -163,7 +163,7 @@ def main_posix(kind, library_ext):
- print(warning + '\n')
- else:
-
-- if not out.startswith('11'):
-+ if int(out.split(".")[0])<11:
- msg = ("Building llvmlite requires LLVM 11.x.x, got "
- "{!r}. Be sure to set LLVM_CONFIG to the right executable "
- "path.\nRead the documentation at "
diff --git a/rust-libstdc.patch b/rust-libstdc.patch
new file mode 100644
index 00000000000..f4e6540d224
--- /dev/null
+++ b/rust-libstdc.patch
@@ -0,0 +1,35 @@
+diff --git a/compiler/rustc_llvm/build.rs b/compiler/rustc_llvm/build.rs
+index ac758c1..11abfac 100644
+--- a/compiler/rustc_llvm/build.rs
++++ b/compiler/rustc_llvm/build.rs
+@@ -347,18 +347,18 @@ fn main() {
+
+ // C++ runtime library
+ if !target.contains("msvc") {
+- if let Some(s) = llvm_static_stdcpp {
+- assert!(!cxxflags.contains("stdlib=libc++"));
+- let path = PathBuf::from(s);
+- println!("cargo:rustc-link-search=native={}", path.parent().unwrap().display());
+- if target.contains("windows") {
+- println!("cargo:rustc-link-lib=static:-bundle={}", stdcppname);
+- } else {
+- println!("cargo:rustc-link-lib=static={}", stdcppname);
+- }
+- } else if cxxflags.contains("stdlib=libc++") {
+- println!("cargo:rustc-link-lib=c++");
+- } else {
++ if let Some(_s) = llvm_static_stdcpp {
++ // assert!(!cxxflags.contains("stdlib=libc++"));
++ // let path = PathBuf::from(s);
++ // println!("cargo:rustc-link-search=native={}", path.parent().unwrap().display());
++ // if target.contains("windows") {
++ // println!("cargo:rustc-link-lib=static:-bundle={}", stdcppname);
++ // } else {
++ // println!("cargo:rustc-link-lib=static={}", stdcppname);
++ // }
++ //} else if cxxflags.contains("stdlib=libc++") {
++ // println!("cargo:rustc-link-lib=c++");
++ //} else {
+ println!("cargo:rustc-link-lib={}", stdcppname);
+ }
+ }
diff --git a/rust.spec b/rust.spec
index 2ecd91ae389..ef2584bf4b7 100644
--- a/rust.spec
+++ b/rust.spec
@@ -1,4 +1,4 @@
-### RPM external rust 1.57.0
+### RPM external rust 1.61.0
%ifarch ppc64le
%define build_arch powerpc64le-unknown-linux-gnu
%else
@@ -8,11 +8,13 @@
%define branch master
%define tag %{realversion}
Source: git+https://github.com/%{github_user}/%{n}.git?obj=%{branch}/%{tag}&export=%{n}-%{realversion}&submodules=1&output=/%{n}-%{realversion}.tgz
+Patch0: rust-libstdc
BuildRequires: python3
Requires: llvm
%prep
%setup -n %{n}-%{realversion}
+%patch0 -p1
%build
cat << EOF > config.toml
diff --git a/scram-tools.file/tools/llvm/llvm-ccompiler.xml b/scram-tools.file/tools/llvm/llvm-ccompiler.xml
index 0ac59e88363..ebb0e43273c 100644
--- a/scram-tools.file/tools/llvm/llvm-ccompiler.xml
+++ b/scram-tools.file/tools/llvm/llvm-ccompiler.xml
@@ -4,4 +4,5 @@
+
diff --git a/scram-tools.file/tools/llvm/llvm-cxxcompiler.xml b/scram-tools.file/tools/llvm/llvm-cxxcompiler.xml
index 234a965f146..4bc2f37d016 100644
--- a/scram-tools.file/tools/llvm/llvm-cxxcompiler.xml
+++ b/scram-tools.file/tools/llvm/llvm-cxxcompiler.xml
@@ -30,6 +30,7 @@
+