commit:     6575b1a0d95279f9bbd058a4426cb7b3a396c4e2
Author:     Andreas Sturmlechner <asturm <AT> gentoo <DOT> org>
AuthorDate: Tue Oct 25 17:55:33 2022 +0000
Commit:     Andreas Sturmlechner <asturm <AT> gentoo <DOT> org>
CommitDate: Tue Oct 25 18:35:20 2022 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=6575b1a0

dev-util/clazy: Support python3_11, LLVM-15

Tests pass.

Signed-off-by: Andreas Sturmlechner <asturm <AT> gentoo.org>

 dev-util/clazy/clazy-1.11-r2.ebuild                |  56 ++++++
 dev-util/clazy/files/clazy-1.11-fix-llvm-15.patch  | 223 +++++++++++++++++++++
 .../clazy/files/clazy-1.11-fix-regex-detect.patch  |  25 +++
 3 files changed, 304 insertions(+)

diff --git a/dev-util/clazy/clazy-1.11-r2.ebuild 
b/dev-util/clazy/clazy-1.11-r2.ebuild
new file mode 100644
index 000000000000..331c221f4408
--- /dev/null
+++ b/dev-util/clazy/clazy-1.11-r2.ebuild
@@ -0,0 +1,56 @@
+# Copyright 1999-2022 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+LLVM_MAX_SLOT=15
+PYTHON_COMPAT=( python3_{8..11} )
+inherit cmake llvm python-any-r1
+
+DESCRIPTION="Compiler plugin which allows clang to understand Qt semantics"
+HOMEPAGE="https://apps.kde.org/clazy";
+SRC_URI="mirror://kde/stable/${PN}/${PV}/src/${P}.tar.xz"
+
+LICENSE="LGPL-2+"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64 ~x86"
+IUSE="test"
+RESTRICT="!test? ( test )"
+
+RDEPEND="<sys-devel/clang-$((${LLVM_MAX_SLOT} + 1)):="
+DEPEND="${RDEPEND}"
+BDEPEND="test? ( ${PYTHON_DEPS} )"
+
+PATCHES=(
+       "${FILESDIR}/${P}-fix-regex-detect.patch"
+       "${FILESDIR}/${P}-fix-llvm-15.patch"
+)
+
+llvm_check_deps() {
+       has_version "sys-devel/clang:${LLVM_SLOT}" && has_version 
"sys-devel/llvm:${LLVM_SLOT}"
+}
+
+pkg_setup() {
+       use test && python-any-r1_pkg_setup
+
+       llvm_pkg_setup
+}
+
+src_prepare() {
+       cmake_src_prepare
+
+       sed -e '/install(FILES README.md COPYING-LGPL2.txt checks.json 
DESTINATION/d' \
+               -i CMakeLists.txt || die
+}
+
+src_configure() {
+       export LLVM_ROOT="$(get_llvm_prefix -d ${LLVM_MAX_SLOT})"
+
+       cmake_src_configure
+}
+
+src_test() {
+       # Run tests against built copy, not installed
+       # bug #811723
+       PATH="${BUILD_DIR}/bin:${PATH}" LD_LIBRARY_PATH="${BUILD_DIR}/lib" 
cmake_src_test
+}

diff --git a/dev-util/clazy/files/clazy-1.11-fix-llvm-15.patch 
b/dev-util/clazy/files/clazy-1.11-fix-llvm-15.patch
new file mode 100644
index 000000000000..b98e4b1c2fee
--- /dev/null
+++ b/dev-util/clazy/files/clazy-1.11-fix-llvm-15.patch
@@ -0,0 +1,223 @@
+From 20fca52da739ebefa47e35f6b338bb99a0da3cfe Mon Sep 17 00:00:00 2001
+From: Cristian Adam <[email protected]>
+Date: Tue, 6 Sep 2022 16:30:02 +0200
+Subject: [PATCH] Build fixes for LLVM/Clang 15.0.0
+
+Change-Id: Icc39a0b1acffb5a6a4798b1259d8ad4e7dd47bc5
+---
+ CMakeLists.txt                              |  6 ++++++
+ src/PreProcessorVisitor.cpp                 |  2 +-
+ src/PreProcessorVisitor.h                   |  2 +-
+ src/SourceCompatibilityHelpers.h            | 15 +++++++++++++++
+ src/Utils.cpp                               |  3 ++-
+ src/checkbase.cpp                           |  4 ++--
+ src/checkbase.h                             |  4 ++--
+ src/checks/manuallevel/qt6-fwd-fixes.cpp    |  2 +-
+ src/checks/manuallevel/qt6-fwd-fixes.h      |  2 +-
+ src/checks/manuallevel/qt6-header-fixes.cpp |  2 +-
+ src/checks/manuallevel/qt6-header-fixes.h   |  2 +-
+ 11 files changed, 33 insertions(+), 11 deletions(-)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 3c780b0d..100135af 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -114,6 +114,10 @@ else()
+     set(clang_tooling_refactoring_lib clangToolingRefactor)
+ endif()
+ 
++if (${LLVM_VERSION} VERSION_GREATER_EQUAL "15.0.0")
++  set(clang_support_lib clangSupport)
++endif()
++
+ macro(link_to_llvm name is_standalone)
+   if (CLAZY_LINK_CLANG_DYLIB)
+     target_link_libraries(${name} clang-cpp)
+@@ -131,6 +135,7 @@ macro(link_to_llvm name is_standalone)
+ 
+       target_link_libraries(${name} ${clang_lib})
+     endforeach()
++    target_link_libraries(${name} ${clang_support_lib})
+     target_link_libraries(${name} clangTooling)
+     target_link_libraries(${name} clangToolingCore)
+     target_link_libraries(${name} ${clang_tooling_refactoring_lib})
+@@ -302,6 +307,7 @@ else()
+     clangFrontendTool
+     clangRewrite
+     clangSerialization
++    ${clang_support_lib}
+     clangTooling
+     clangStaticAnalyzerCheckers
+     clangStaticAnalyzerCore
+diff --git a/src/PreProcessorVisitor.cpp b/src/PreProcessorVisitor.cpp
+index 5e63a131..5fdfe5f3 100644
+--- a/src/PreProcessorVisitor.cpp
++++ b/src/PreProcessorVisitor.cpp
+@@ -185,7 +185,7 @@ void PreProcessorVisitor::MacroExpands(const Token 
&MacroNameTok, const MacroDef
+ 
+ void PreProcessorVisitor::InclusionDirective (clang::SourceLocation, const 
clang::Token &,
+                                               clang::StringRef FileName, bool 
IsAngled, clang::CharSourceRange FilenameRange,
+-                                              const clang::FileEntry *, 
clang::StringRef, clang::StringRef,
++                                              clazy::OptionalFileEntryRef, 
clang::StringRef, clang::StringRef,
+                                               const clang::Module *, 
clang::SrcMgr::CharacteristicKind)
+ {
+    if (m_ci.getPreprocessor().isInPrimaryFile() && 
!clazy::endsWith(FileName.str(), ".moc")) {
+diff --git a/src/PreProcessorVisitor.h b/src/PreProcessorVisitor.h
+index dc80ff36..1bb17a5e 100644
+--- a/src/PreProcessorVisitor.h
++++ b/src/PreProcessorVisitor.h
+@@ -71,7 +71,7 @@ protected:
+                       clang::SourceRange range, const clang::MacroArgs *) 
override;
+     void InclusionDirective (clang::SourceLocation HashLoc, const 
clang::Token &IncludeTok,
+                              clang::StringRef FileName, bool IsAngled, 
clang::CharSourceRange FilenameRange,
+-                             const clang::FileEntry *File, clang::StringRef 
SearchPath, clang::StringRef RelativePath,
++                             clazy::OptionalFileEntryRef File, 
clang::StringRef SearchPath, clang::StringRef RelativePath,
+                              const clang::Module *Imported, 
clang::SrcMgr::CharacteristicKind FileType) override;
+ private:
+     std::string getTokenSpelling(const clang::MacroDefinition &) const;
+diff --git a/src/SourceCompatibilityHelpers.h 
b/src/SourceCompatibilityHelpers.h
+index 4ea923a2..c1a23a4b 100644
+--- a/src/SourceCompatibilityHelpers.h
++++ b/src/SourceCompatibilityHelpers.h
+@@ -144,6 +144,21 @@ inline bool contains_lower(clang::StringRef haystack, 
clang::StringRef needle)
+ #endif
+ }
+ 
++#if LLVM_VERSION_MAJOR >= 15
++using OptionalFileEntryRef = clang::Optional<clang::FileEntryRef>;
++#else
++using OptionalFileEntryRef = const clang::FileEntry*;
++#endif
++
++inline bool isAscii(clang::StringLiteral *lt)
++{
++#if LLVM_VERSION_MAJOR >= 15
++    return lt->isOrdinary();
++#else
++    return lt->isAscii();
++#endif
++}
++
+ }
+ 
+ #endif
+diff --git a/src/Utils.cpp b/src/Utils.cpp
+index 3cdf7876..70e0577c 100644
+--- a/src/Utils.cpp
++++ b/src/Utils.cpp
+@@ -25,6 +25,7 @@
+ #include "Utils.h"
+ #include "StringUtils.h"
+ #include "HierarchyUtils.h"
++#include "SourceCompatibilityHelpers.h"
+ #include "StmtBodyRange.h"
+ #include "clazy_stl.h"
+ 
+@@ -670,7 +671,7 @@ const CXXRecordDecl 
*Utils::recordForMemberCall(CXXMemberCallExpr *call, string
+ bool Utils::isAscii(StringLiteral *lt)
+ {
+     // 'é' for some reason has isAscii() == true, so also call 
containsNonAsciiOrNull
+-    return lt && lt->isAscii() && !lt->containsNonAsciiOrNull();
++    return lt && clazy::isAscii(lt) && !lt->containsNonAsciiOrNull();
+ }
+ 
+ bool Utils::isInDerefExpression(Stmt *s, ParentMap *map)
+diff --git a/src/checkbase.cpp b/src/checkbase.cpp
+index f5936dfd..dcc7c999 100644
+--- a/src/checkbase.cpp
++++ b/src/checkbase.cpp
+@@ -105,7 +105,7 @@ void ClazyPreprocessorCallbacks::MacroDefined(const Token 
&macroNameTok, const M
+ }
+ 
+ void ClazyPreprocessorCallbacks::InclusionDirective(clang::SourceLocation 
HashLoc, const clang::Token &IncludeTok, clang::StringRef FileName, bool 
IsAngled,
+-                                                    clang::CharSourceRange 
FilenameRange, const clang::FileEntry *File, clang::StringRef SearchPath,
++                                                    clang::CharSourceRange 
FilenameRange, clazy::OptionalFileEntryRef File, clang::StringRef SearchPath,
+                                                     clang::StringRef 
RelativePath, const clang::Module *Imported, clang::SrcMgr::CharacteristicKind 
FileType)
+ {
+     check->VisitInclusionDirective(HashLoc, IncludeTok, FileName, IsAngled, 
FilenameRange, File, SearchPath, RelativePath, Imported, FileType);
+@@ -182,7 +182,7 @@ void CheckBase::VisitEndif(SourceLocation, SourceLocation)
+ }
+ 
+ void CheckBase::VisitInclusionDirective(clang::SourceLocation , const 
clang::Token &, clang::StringRef , bool ,
+-                        clang::CharSourceRange , const clang::FileEntry *, 
clang::StringRef ,
++                        clang::CharSourceRange , clazy::OptionalFileEntryRef, 
clang::StringRef ,
+                         clang::StringRef , const clang::Module *, 
clang::SrcMgr::CharacteristicKind )
+ {
+     // Overriden in derived classes
+diff --git a/src/checkbase.h b/src/checkbase.h
+index c5db2daf..02f6a6bf 100644
+--- a/src/checkbase.h
++++ b/src/checkbase.h
+@@ -91,7 +91,7 @@ public:
+     void Else(clang::SourceLocation loc, clang::SourceLocation ifLoc) 
override;
+     void Endif(clang::SourceLocation loc, clang::SourceLocation ifLoc) 
override;
+     void InclusionDirective(clang::SourceLocation HashLoc, const clang::Token 
&IncludeTok, clang::StringRef FileName, bool IsAngled,
+-                            clang::CharSourceRange FilenameRange, const 
clang::FileEntry *File, clang::StringRef SearchPath,
++                            clang::CharSourceRange FilenameRange, 
clazy::OptionalFileEntryRef File, clang::StringRef SearchPath,
+                             clang::StringRef RelativePath, const 
clang::Module *Imported, clang::SrcMgr::CharacteristicKind FileType) override;
+ private:
+     CheckBase *const check;
+@@ -151,7 +151,7 @@ protected:
+     virtual void VisitElse(clang::SourceLocation loc, clang::SourceLocation 
ifLoc);
+     virtual void VisitEndif(clang::SourceLocation loc, clang::SourceLocation 
ifLoc);
+     virtual void VisitInclusionDirective(clang::SourceLocation HashLoc, const 
clang::Token &IncludeTok, clang::StringRef FileName, bool IsAngled,
+-                            clang::CharSourceRange FilenameRange, const 
clang::FileEntry *File, clang::StringRef SearchPath,
++                            clang::CharSourceRange FilenameRange, 
clazy::OptionalFileEntryRef File, clang::StringRef SearchPath,
+                             clang::StringRef RelativePath, const 
clang::Module *Imported, clang::SrcMgr::CharacteristicKind FileType);
+ 
+     void enablePreProcessorCallbacks();
+diff --git a/src/checks/manuallevel/qt6-fwd-fixes.cpp 
b/src/checks/manuallevel/qt6-fwd-fixes.cpp
+index 83bf81ee..c87d9ca0 100644
+--- a/src/checks/manuallevel/qt6-fwd-fixes.cpp
++++ b/src/checks/manuallevel/qt6-fwd-fixes.cpp
+@@ -166,7 +166,7 @@ void Qt6FwdFixes::VisitDecl(clang::Decl *decl)
+ }
+ 
+ void Qt6FwdFixes::VisitInclusionDirective(clang::SourceLocation HashLoc, 
const clang::Token &IncludeTok, clang::StringRef FileName, bool IsAngled,
+-                        clang::CharSourceRange FilenameRange, const 
clang::FileEntry *File, clang::StringRef SearchPath,
++                        clang::CharSourceRange FilenameRange, 
clazy::OptionalFileEntryRef File, clang::StringRef SearchPath,
+                         clang::StringRef RelativePath, const clang::Module 
*Imported, clang::SrcMgr::CharacteristicKind FileType)
+ {
+     auto current_file = m_sm.getFilename(HashLoc);
+diff --git a/src/checks/manuallevel/qt6-fwd-fixes.h 
b/src/checks/manuallevel/qt6-fwd-fixes.h
+index 37b59d95..bb928ba6 100644
+--- a/src/checks/manuallevel/qt6-fwd-fixes.h
++++ b/src/checks/manuallevel/qt6-fwd-fixes.h
+@@ -47,7 +47,7 @@ public:
+     explicit Qt6FwdFixes(const std::string &name, ClazyContext *context);
+     void VisitDecl(clang::Decl *decl) override;
+     void VisitInclusionDirective(clang::SourceLocation HashLoc, const 
clang::Token &IncludeTok, clang::StringRef FileName, bool IsAngled,
+-                            clang::CharSourceRange FilenameRange, const 
clang::FileEntry *File, clang::StringRef SearchPath,
++                            clang::CharSourceRange FilenameRange, 
clazy::OptionalFileEntryRef File, clang::StringRef SearchPath,
+                             clang::StringRef RelativePath, const 
clang::Module *Imported, clang::SrcMgr::CharacteristicKind FileType) override;
+     bool m_including_qcontainerfwd = false;
+     std::set<clang::StringRef> m_qcontainerfwd_included_in_files;
+diff --git a/src/checks/manuallevel/qt6-header-fixes.cpp 
b/src/checks/manuallevel/qt6-header-fixes.cpp
+index d458b77c..aaa28093 100644
+--- a/src/checks/manuallevel/qt6-header-fixes.cpp
++++ b/src/checks/manuallevel/qt6-header-fixes.cpp
+@@ -270,7 +270,7 @@ Qt6HeaderFixes::Qt6HeaderFixes(const std::string &name, 
ClazyContext *context)
+ }
+ 
+ void Qt6HeaderFixes::VisitInclusionDirective(clang::SourceLocation HashLoc, 
const clang::Token &IncludeTok, clang::StringRef FileName, bool IsAngled,
+-                        clang::CharSourceRange FilenameRange, const 
clang::FileEntry *File, clang::StringRef SearchPath,
++                        clang::CharSourceRange FilenameRange, 
clazy::OptionalFileEntryRef File, clang::StringRef SearchPath,
+                         clang::StringRef RelativePath, const clang::Module 
*Imported, clang::SrcMgr::CharacteristicKind FileType)
+ {
+     if (shouldIgnoreFile(HashLoc))
+diff --git a/src/checks/manuallevel/qt6-header-fixes.h 
b/src/checks/manuallevel/qt6-header-fixes.h
+index ae09f7ad..8ffbb100 100644
+--- a/src/checks/manuallevel/qt6-header-fixes.h
++++ b/src/checks/manuallevel/qt6-header-fixes.h
+@@ -46,7 +46,7 @@ class Qt6HeaderFixes
+ public:
+     explicit Qt6HeaderFixes(const std::string &name, ClazyContext *context);
+     void VisitInclusionDirective(clang::SourceLocation HashLoc, const 
clang::Token &IncludeTok, clang::StringRef FileName, bool IsAngled,
+-                            clang::CharSourceRange FilenameRange, const 
clang::FileEntry *File, clang::StringRef SearchPath,
++                            clang::CharSourceRange FilenameRange, 
clazy::OptionalFileEntryRef File, clang::StringRef SearchPath,
+                             clang::StringRef RelativePath, const 
clang::Module *Imported, clang::SrcMgr::CharacteristicKind FileType) override;
+ 
+ };
+-- 
+GitLab
+

diff --git a/dev-util/clazy/files/clazy-1.11-fix-regex-detect.patch 
b/dev-util/clazy/files/clazy-1.11-fix-regex-detect.patch
new file mode 100644
index 000000000000..a60206365ea1
--- /dev/null
+++ b/dev-util/clazy/files/clazy-1.11-fix-regex-detect.patch
@@ -0,0 +1,25 @@
+From 336b54f28250938cc2a8d7bb78e638e79b6467d5 Mon Sep 17 00:00:00 2001
+From: Hannah von Reth <[email protected]>
+Date: Fri, 8 Jul 2022 11:19:22 +0000
+Subject: [PATCH] Fix regex detection
+
+---
+ CMakeLists.txt | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 434a57c9..3c780b0d 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -81,7 +81,7 @@ endif()
+ 
+ # Look for std::regex support
+ message("Looking for std::regex support...")
+-try_run(REGEX_RUN_RESULT COMPILE_RESULT ${CMAKE_BINARY_DIR} 
${CMAKE_CURRENT_LIST_DIR}/.cmake_has_regex_test.cpp)
++try_run(REGEX_RUN_RESULT COMPILE_RESULT ${CMAKE_BINARY_DIR} 
${CMAKE_CURRENT_LIST_DIR}/.cmake_has_regex_test.cpp CXX_STANDARD 17 
CXX_STANDARD_REQUIRED true)
+ 
+ if(NOT REGEX_RUN_RESULT EQUAL 0)
+   message("Using boost::regex instead of std::regex")
+-- 
+GitLab
+

Reply via email to