diff --git a/clang-uml.spec b/clang-uml.spec
index 8df41059738..e9e5acc4b1d 100644
--- a/clang-uml.spec
+++ b/clang-uml.spec
@@ -1,6 +1,6 @@
-### RPM external clang-uml 0.4.1
+### RPM external clang-uml 0.5.2
-%define tag 429e1c47a9669438651076a719de29c00fd18f7b
+%define tag cd6dce2b0b34d55534d3de512ab088b9ad71bc76
%define branch master
%define github_user bkryza
diff --git a/llvm.spec b/llvm.spec
index 0aa8e47c3ea..c27303d4589 100644
--- a/llvm.spec
+++ b/llvm.spec
@@ -1,4 +1,4 @@
-### RPM external llvm 17.0.3
+### RPM external llvm 18.1.6
## INITENV +PATH LD_LIBRARY_PATH %{i}/lib64
## INITENV +PATH PYTHON3PATH %{i}/lib64/python%{cms_python3_major_minor_version}/site-packages
@@ -6,10 +6,10 @@ BuildRequires: cmake ninja
Requires: gcc zlib python3
Requires: cuda
-%define llvmCommit 83204dfcd4277154e46a5c6094aee389a7f260e8
-%define llvmBranch cms/release/17.x/afbe354
-%define iwyuCommit db886395c3884c4e7d948746b2a9e845b507c200
-%define iwyuBranch master
+%define llvmCommit 02c7568fc9f555b2c72fc169c8c68e2116d97382
+%define llvmBranch cms/release/18.x/1118c2e
+%define iwyuCommit 377eaef70cdda47368939f4d9beabfabe3f628f0
+%define iwyuBranch clang_18
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/py3-dxr-Markup.patch b/py3-dxr-Markup.patch
deleted file mode 100644
index 56bed1649d0..00000000000
--- a/py3-dxr-Markup.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-diff --git a/dxr/build.py b/dxr/build.py
-index 851a8c2..87c5a17 100644
---- a/dxr/build.py
-+++ b/dxr/build.py
-@@ -22,7 +22,7 @@ from sys import exc_info
- from traceback import format_exc
- from warnings import warn
-
--from jinja2 import Markup
-+from markupsafe import Markup
- from collections import OrderedDict
-
- from dxr.config import Config
-diff --git a/dxr/query.py b/dxr/query.py
-index 8575b31..493fd5b 100644
---- a/dxr/query.py
-+++ b/dxr/query.py
-@@ -4,7 +4,7 @@ import re
- import struct
- import time
-
--from jinja2 import Markup
-+from markupsafe import Markup
- from parsimonious import Grammar
- from parsimonious.nodes import NodeVisitor
-
diff --git a/py3-dxr.spec b/py3-dxr.spec
index c276e728ba4..fe57568ac3e 100644
--- a/py3-dxr.spec
+++ b/py3-dxr.spec
@@ -2,16 +2,14 @@
## INITENV +PATH PYTHON3PATH %i/${PYTHON3_LIB_SITE_PACKAGES}
Requires: zlib llvm sqlite
Requires: py3-Jinja2 py3-parsimonious py3-pysqlite3 py3-Pygments
-%define dxrCommit e79425eded8ca0ae882b4ccceaf27ae1aab446d3
-%define branch cms/6ea764102a/py3
+%define dxrCommit d3c6e5b745c93b6e7788c734f7cb0dc14d957d37
+%define branch cms/6ea764102a/clang18
Source0: git+https://github.com/cms-externals/dxr.git?obj=%{branch}/%{dxrCommit}&export=dxr-%{dxrCommit}&module=dxr-%dxrCommit&output=/dxr-%{dxrCommit}.tgz
-Patch0: py3-dxr-Markup
%define keep_archives true
%prep
%setup -n dxr-%dxrCommit
-%patch0 -p1
%build
export SQLITE_ROOT
diff --git a/scram-tools.file/tools/llvm/llvm-cxxcompiler.xml b/scram-tools.file/tools/llvm/llvm-cxxcompiler.xml
index 99148b216c7..ec33bdf505f 100644
--- a/scram-tools.file/tools/llvm/llvm-cxxcompiler.xml
+++ b/scram-tools.file/tools/llvm/llvm-cxxcompiler.xml
@@ -31,6 +31,7 @@
+