mirror of
https://github.com/gentoo-mirror/gentoo.git
synced 2026-08-06 00:48:18 -07:00
dev-util/clazy: Support python3_11, LLVM-15
Tests pass. Signed-off-by: Andreas Sturmlechner <asturm@gentoo.org>
This commit is contained in:
56
dev-util/clazy/clazy-1.11-r2.ebuild
Normal file
56
dev-util/clazy/clazy-1.11-r2.ebuild
Normal file
@@ -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
|
||||
}
|
||||
223
dev-util/clazy/files/clazy-1.11-fix-llvm-15.patch
Normal file
223
dev-util/clazy/files/clazy-1.11-fix-llvm-15.patch
Normal file
@@ -0,0 +1,223 @@
|
||||
From 20fca52da739ebefa47e35f6b338bb99a0da3cfe Mon Sep 17 00:00:00 2001
|
||||
From: Cristian Adam <cristian.adam@qt.io>
|
||||
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 ¯oNameTok, 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
|
||||
|
||||
25
dev-util/clazy/files/clazy-1.11-fix-regex-detect.patch
Normal file
25
dev-util/clazy/files/clazy-1.11-fix-regex-detect.patch
Normal file
@@ -0,0 +1,25 @@
|
||||
From 336b54f28250938cc2a8d7bb78e638e79b6467d5 Mon Sep 17 00:00:00 2001
|
||||
From: Hannah von Reth <vonreth@kde.org>
|
||||
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
|
||||
|
||||
Reference in New Issue
Block a user