commit:     10d7a5b482f6282eaefdb28ceda51f2ec99056f8
Author:     Andreas Sturmlechner <asturm <AT> gentoo <DOT> org>
AuthorDate: Sat May  1 20:18:02 2021 +0000
Commit:     Andreas Sturmlechner <asturm <AT> gentoo <DOT> org>
CommitDate: Sat May  1 21:21:56 2021 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=10d7a5b4

dev-util/clazy: Fix build with LLVM-12/13

Closes: https://bugs.gentoo.org/786525
Package-Manager: Portage-3.0.18, Repoman-3.0.3
Signed-off-by: Andreas Sturmlechner <asturm <AT> gentoo.org>

 dev-util/clazy/clazy-1.9.ebuild             |  2 +
 dev-util/clazy/files/clazy-1.9-llvm12.patch | 88 +++++++++++++++++++++++++++++
 dev-util/clazy/files/clazy-1.9-llvm13.patch | 31 ++++++++++
 3 files changed, 121 insertions(+)

diff --git a/dev-util/clazy/clazy-1.9.ebuild b/dev-util/clazy/clazy-1.9.ebuild
index 9062383103c..781b5104055 100644
--- a/dev-util/clazy/clazy-1.9.ebuild
+++ b/dev-util/clazy/clazy-1.9.ebuild
@@ -20,6 +20,8 @@ RDEPEND="
 "
 DEPEND="${RDEPEND}"
 
+PATCHES=( "${FILESDIR}"/${P}-llvm{12,13}.patch ) # bug 786525
+
 src_prepare() {
        cmake_src_prepare
 

diff --git a/dev-util/clazy/files/clazy-1.9-llvm12.patch 
b/dev-util/clazy/files/clazy-1.9-llvm12.patch
new file mode 100644
index 00000000000..3862f40ad98
--- /dev/null
+++ b/dev-util/clazy/files/clazy-1.9-llvm12.patch
@@ -0,0 +1,88 @@
+From 2592a6e3393ebc75e16c91e606ad2015a16295c3 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Christian=20Sch=C3=A4rf?= <[email protected]>
+Date: Sat, 23 Jan 2021 15:34:10 +0100
+Subject: [PATCH] Fix build with Clang 12
+
+Required due to Clang changes 
https://github.com/llvm/llvm-project/commit/b3eff6b7bb31e7ef059a3d238de138849839fbbd
 and 
https://github.com/llvm/llvm-project/commit/d758f79e5d381bd4f5122193a9538d89c907c812
+---
+ src/SourceCompatibilityHelpers.h | 26 ++++++++++++++++++++++++++
+ src/SuppressionManager.cpp       |  5 ++---
+ 2 files changed, 28 insertions(+), 3 deletions(-)
+
+diff --git a/src/SourceCompatibilityHelpers.h 
b/src/SourceCompatibilityHelpers.h
+index 4db141ab..1737d5a5 100644
+--- a/src/SourceCompatibilityHelpers.h
++++ b/src/SourceCompatibilityHelpers.h
+@@ -29,6 +29,7 @@
+ #include <clang/Basic/SourceLocation.h>
+ #include <clang/Basic/SourceManager.h>
+ #include <clang/Frontend/FrontendDiagnostic.h>
++#include <clang/Lex/Lexer.h>
+ #include <clang/Tooling/Core/Diagnostic.h>
+ 
+ #if defined(CLAZY_USES_BOOST_REGEX)
+@@ -103,6 +104,31 @@ inline clang::tooling::Replacements& 
DiagnosticFix(clang::tooling::Diagnostic &d
+ #endif
+ }
+ 
++inline auto getBuffer(const clang::SourceManager &sm, clang::FileID id, bool 
*invalid)
++{
++#if LLVM_VERSION_MAJOR >= 12
++    auto buffer = sm.getBufferOrNone(id);
++    *invalid = !buffer.hasValue();
++    return buffer;
++#else
++    return sm.getBuffer(id, invalid);
++#endif
++}
++
++#if LLVM_VERSION_MAJOR >= 12
++inline clang::Lexer getLexer(clang::FileID id, 
llvm::Optional<llvm::MemoryBufferRef> inputFile,
++                             const clang::SourceManager &sm, const 
clang::LangOptions &lo)
++{
++    return clang::Lexer(id, inputFile.getValue(), sm, lo);
++}
++#else
++inline clang::Lexer getLexer(clang::FileID id, const llvm::MemoryBuffer 
*inputFile,
++                             const clang::SourceManager &sm, const 
clang::LangOptions &lo)
++{
++    return clang::Lexer(id, inputFile, sm, lo);
++}
++#endif
++
+ }
+ 
+ #endif
+diff --git a/src/SuppressionManager.cpp b/src/SuppressionManager.cpp
+index 9d774ea6..9881388d 100644
+--- a/src/SuppressionManager.cpp
++++ b/src/SuppressionManager.cpp
+@@ -24,7 +24,6 @@
+ #include "clazy_stl.h"
+ 
+ #include <clang/Basic/SourceManager.h>
+-#include <clang/Lex/Lexer.h>
+ #include <clang/Basic/SourceLocation.h>
+ #include <clang/Basic/TokenKinds.h>
+ #include <clang/Lex/Token.h>
+@@ -84,7 +83,7 @@ void SuppressionManager::parseFile(FileID id, const 
SourceManager &sm, const cla
+     Suppressions &suppressions = (*it).second;
+ 
+     bool invalid = false;
+-    auto buffer = sm.getBuffer(id, &invalid);
++    auto buffer = clazy::getBuffer(sm, id, &invalid);
+     if (invalid) {
+         llvm::errs() << "SuppressionManager::parseFile: Invalid buffer ";
+         if (buffer)
+@@ -92,7 +91,7 @@ void SuppressionManager::parseFile(FileID id, const 
SourceManager &sm, const cla
+         return;
+     }
+ 
+-    Lexer lexer(id, buffer, sm, lo);
++    auto lexer = clazy::getLexer(id, buffer, sm, lo);
+     lexer.SetCommentRetentionState(true);
+ 
+     Token token;
+-- 
+GitLab
+

diff --git a/dev-util/clazy/files/clazy-1.9-llvm13.patch 
b/dev-util/clazy/files/clazy-1.9-llvm13.patch
new file mode 100644
index 00000000000..9bbac8f7624
--- /dev/null
+++ b/dev-util/clazy/files/clazy-1.9-llvm13.patch
@@ -0,0 +1,31 @@
+From 0bf4e428c76270f4534a0a8df3cf6912157f22ab Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Bj=C3=B6rn=20Sch=C3=A4pers?= <[email protected]>
+Date: Sat, 17 Apr 2021 20:57:10 +0200
+Subject: [PATCH] Fix build with LLVM 13
+
+---
+ src/ClazyStandaloneMain.cpp | 8 +++++++-
+ 1 file changed, 7 insertions(+), 1 deletion(-)
+
+diff --git a/src/ClazyStandaloneMain.cpp b/src/ClazyStandaloneMain.cpp
+index 41c4fcf9..7b4cf5d3 100644
+--- a/src/ClazyStandaloneMain.cpp
++++ b/src/ClazyStandaloneMain.cpp
+@@ -158,7 +158,13 @@ llvm::IntrusiveRefCntPtr<vfs::FileSystem> 
getVfsFromFile(const std::string &over
+ 
+ int main(int argc, const char **argv)
+ {
+-    CommonOptionsParser optionsParser(argc, argv, s_clazyCategory, 
cl::ZeroOrMore);
++    auto expectedParser = CommonOptionsParser::create(argc, argv, 
s_clazyCategory, cl::ZeroOrMore);
++    if (!expectedParser) {
++       llvm::errs() << expectedParser.takeError();
++       return 1;
++    }
++
++    auto &optionsParser = expectedParser.get();
+     // llvm::errs() << optionsParser.getSourcePathList().size() << "\n";
+ 
+     if (s_supportedChecks.getValue()) {
+-- 
+GitLab
+

Reply via email to