Files
haikuports/dev-util/kdevelop/kdevelop_kf6-25.08.0.recipe
2025-08-17 15:37:36 +00:00

311 lines
11 KiB
Bash

SUMMARY="A cross-platform IDE for C, C++, Python, QML/JavaScript and PHP"
DESCRIPTION="KDevelop is a free software integrated development environment \
(IDE) developed under the KDE Umbrella. KDevelop provides support for a wide \
variety of languages (such as C/C++, Python, PHP, Ruby, ...) via an extensible \
plugin framework."
HOMEPAGE="https://www.kdevelop.org/"
COPYRIGHT="2010-2025 KDE Organisation"
LICENSE="GNU GPL v3
GNU LGPL v3"
REVISION="2"
SOURCE_URI="https://download.kde.org/stable/release-service/$portVersion/src/kdevelop-$portVersion.tar.xz"
CHECKSUM_SHA256="8682c13bad865433cf93574275f3da8fe6ff7080ee6178541c5c46cb4560a0ad"
SOURCE_DIR="kdevelop-$portVersion"
PATCHES="kdevelop-$portVersion.patchset"
ADDITIONAL_FILES="kdevelop.rdef.in"
ARCHITECTURES="all !x86_gcc2"
SECONDARY_ARCHITECTURES="x86"
libVersion="6.2.${portVersion//./}0"
libVersionCompat="$libVersion compat >= ${libVersion%%.*}"
clangVer="20"
PROVIDES="
kdevelop_kf6$secondaryArchSuffix = $portVersion
# should be cmd:kdevelop! but haikuporter doesn't handle this
cmd:kdevelop = $portVersion
cmd:kdevplatform_shell_environment.sh = $portVersion
cmd:kdev_dbus_socket_transformer$secondaryArchSuffix = $portVersion
cmd:kdev_format_source$secondaryArchSuffix = $portVersion
cmd:kdev_includepathsconverter$secondaryArchSuffix = $portVersion
cmd:kdevelop$secondaryArchSuffix = $portVersion
lib:libKDevClangPrivate$secondaryArchSuffix
lib:libKDevCmakeCommon$secondaryArchSuffix
lib:libKDevCompileAnalyzerCommon$secondaryArchSuffix
lib:libKDevPlatformDebugger$secondaryArchSuffix = $libVersionCompat
lib:libKDevPlatformDocumentation$secondaryArchSuffix = $libVersionCompat
lib:libKDevPlatformInterfaces$secondaryArchSuffix = $libVersionCompat
lib:libKDevPlatformLanguage$secondaryArchSuffix = $libVersionCompat
lib:libKDevPlatformOutputView$secondaryArchSuffix = $libVersionCompat
lib:libKDevPlatformProject$secondaryArchSuffix = $libVersionCompat
lib:libKDevPlatformSerialization$secondaryArchSuffix = $libVersionCompat
lib:libKDevPlatformShell$secondaryArchSuffix = $libVersionCompat
lib:libKDevPlatformSublime$secondaryArchSuffix = $libVersionCompat
lib:libKDevPlatformTests$secondaryArchSuffix = $libVersionCompat
lib:libKDevPlatformUtil$secondaryArchSuffix = $libVersionCompat
lib:libKDevPlatformVcs$secondaryArchSuffix = $libVersionCompat
"
REQUIRES="
haiku$secondaryArchSuffix
# cmd:dbus_launch # needs the one from x86 on 32bit
# kde_cli_tools6$secondaryArchSuffix
cmd:clazy_standalone
cmd:kdev_pg_qt$secondaryArchSuffix
lib:libboost_system$secondaryArchSuffix
lib:libclang$secondaryArchSuffix
lib:libdbus_1$secondaryArchSuffix
lib:libGL$secondaryArchSuffix
lib:libkomparediff2$secondaryArchSuffix
lib:libLLVM$secondaryArchSuffix
lib:libsvn_client_1$secondaryArchSuffix
lib:libsvn_fs_1$secondaryArchSuffix
lib:libsvn_repos_1$secondaryArchSuffix
lib:libsvn_ra_1$secondaryArchSuffix
lib:libsvn_subr_1$secondaryArchSuffix
lib:libsvn_wc_1$secondaryArchSuffix
lib:libz$secondaryArchSuffix
# KF6
lib:libKF6Archive$secondaryArchSuffix
lib:libKF6Attica$secondaryArchSuffix
lib:libKF6AuthCore$secondaryArchSuffix
lib:libKF6Bookmarks$secondaryArchSuffix
lib:libKF6Codecs$secondaryArchSuffix
lib:libKF6ColorScheme$secondaryArchSuffix
lib:libKF6Completion$secondaryArchSuffix
lib:libKF6ConfigCore$secondaryArchSuffix
lib:libKF6ConfigGui$secondaryArchSuffix
lib:libKF6ConfigWidgets$secondaryArchSuffix
lib:libKF6CoreAddons$secondaryArchSuffix
lib:libKF6Crash$secondaryArchSuffix
lib:libKF6DBusAddons$secondaryArchSuffix
lib:libKF6FileMetadata$secondaryArchSuffix
lib:libKF6GuiAddons$secondaryArchSuffix
lib:libKF6I18n$secondaryArchSuffix
lib:libKF6IconThemes$secondaryArchSuffix
lib:libKF6ItemModels$secondaryArchSuffix
lib:libKF6ItemViews$secondaryArchSuffix
lib:libKF6JobWidgets$secondaryArchSuffix
lib:libKF6KCMUtils$secondaryArchSuffix
lib:libKF6KioCore$secondaryArchSuffix
lib:libKF6KIOCore$secondaryArchSuffix
lib:libKF6KIOWidgets$secondaryArchSuffix
lib:libKF6NewStuffCore$secondaryArchSuffix
lib:libKF6Notifications$secondaryArchSuffix
lib:libKF6NotifyConfig$secondaryArchSuffix
lib:libKF6Package$secondaryArchSuffix
lib:libKF6Parts$secondaryArchSuffix
lib:libKF6Service$secondaryArchSuffix
lib:libKF6Solid$secondaryArchSuffix
lib:libKF6SonnetUi$secondaryArchSuffix
lib:libKF6SyntaxHighlighting$secondaryArchSuffix
lib:libKF6TextEditor$secondaryArchSuffix
lib:libKF6TextTemplate$secondaryArchSuffix
lib:libKF6TextWidgets$secondaryArchSuffix
lib:libKF6ThreadWeaver$secondaryArchSuffix
lib:libKF6UnitConversion$secondaryArchSuffix
lib:libKF6WidgetsAddons$secondaryArchSuffix
lib:libKF6WindowSystem$secondaryArchSuffix
lib:libKF6XmlGui$secondaryArchSuffix
# Qt6
lib:libQt6Core$secondaryArchSuffix
lib:libQt6Core5Compat$secondaryArchSuffix
lib:libQt6Gui$secondaryArchSuffix
lib:libQt6Network$secondaryArchSuffix
lib:libQt6PrintSupport$secondaryArchSuffix
lib:libQt6Qml$secondaryArchSuffix
lib:libQt6Quick$secondaryArchSuffix
lib:libQt6Svg$secondaryArchSuffix
lib:libQt6Test$secondaryArchSuffix
# lib:libQt6WebKit$secondaryArchSuffix
# lib:libQt6WebKitWidgets$secondaryArchSuffix
lib:libQt6Widgets$secondaryArchSuffix
lib:libQt6Xml$secondaryArchSuffix
"
CONFLICTS="
kdevelop$secondaryArchSuffix
"
PROVIDES_devel="
kdevelop_kf6${secondaryArchSuffix}_devel = $portVersion
devel:libKDevPlatformDebugger$secondaryArchSuffix = $libVersionCompat
devel:libKDevPlatformDocumentation$secondaryArchSuffix = $libVersionCompat
devel:libKDevPlatformInterfaces$secondaryArchSuffix = $libVersionCompat
devel:libKDevPlatformLanguage$secondaryArchSuffix = $libVersionCompat
devel:libKDevPlatformOutputView$secondaryArchSuffix = $libVersionCompat
devel:libKDevPlatformProject$secondaryArchSuffix = $libVersionCompat
devel:libKDevPlatformSerialization$secondaryArchSuffix = $libVersionCompat
devel:libKDevPlatformShell$secondaryArchSuffix = $libVersionCompat
devel:libKDevPlatformSublime$secondaryArchSuffix = $libVersionCompat
devel:libKDevPlatformTests$secondaryArchSuffix = $libVersionCompat
devel:libKDevPlatformUtil$secondaryArchSuffix = $libVersionCompat
devel:libKDevPlatformVcs$secondaryArchSuffix = $libVersionCompat
"
REQUIRES_devel="
kdevelop_kf6$secondaryArchSuffix == $portVersion base
"
BUILD_REQUIRES="
haiku${secondaryArchSuffix}_devel
kdevelop_pg_qt6${secondaryArchSuffix}_devel
cmd:clazy_standalone
devel:libboost_system$secondaryArchSuffix >= 1.88.0
devel:libkomparediff2$secondaryArchSuffix >= 6
devel:libLLVM_$clangVer$secondaryArchSuffix
devel:libomp$secondaryArchSuffix
devel:libsvn_client_1$secondaryArchSuffix
devel:libsvn_fs_1$secondaryArchSuffix
devel:libsvn_repos_1$secondaryArchSuffix
devel:libsvn_ra_1$secondaryArchSuffix
devel:libsvn_subr_1$secondaryArchSuffix
devel:libsvn_wc_1$secondaryArchSuffix
devel:libz$secondaryArchSuffix
# KF6
extra_cmake_modules$secondaryArchSuffix
devel:libKF6Archive$secondaryArchSuffix
devel:libKF6ConfigCore$secondaryArchSuffix
devel:libKF6Crash$secondaryArchSuffix
devel:libKF6DocTools$secondaryArchSuffix
devel:libKF6GuiAddons$secondaryArchSuffix
devel:libKF6I18n$secondaryArchSuffix
devel:libKF6IconThemes$secondaryArchSuffix
devel:libKF6ItemModels$secondaryArchSuffix
devel:libKF6ItemViews$secondaryArchSuffix
devel:libKF6JobWidgets$secondaryArchSuffix
devel:libKF6KCMUtils$secondaryArchSuffix
devel:libKF6KIOCore$secondaryArchSuffix
devel:libKF6NewStuffCore$secondaryArchSuffix
devel:libKF6Notifications$secondaryArchSuffix
devel:libKF6NotifyConfig$secondaryArchSuffix
devel:libKF6Parts$secondaryArchSuffix
devel:libKF6Purpose$secondaryArchSuffix
devel:libKF6Service$secondaryArchSuffix
devel:libKF6SonnetUi$secondaryArchSuffix
devel:libKF6TextEditor$secondaryArchSuffix
devel:libKF6TextTemplate$secondaryArchSuffix
devel:libKF6TextWidgets$secondaryArchSuffix
devel:libKF6ThreadWeaver$secondaryArchSuffix
devel:libKF6WindowSystem$secondaryArchSuffix
devel:libKF6XmlGui$secondaryArchSuffix
# Qt6
qt6_tools${secondaryArchSuffix}_devel
devel:libQt6Core$secondaryArchSuffix
devel:libQt6Core5Compat$secondaryArchSuffix
devel:libQt6Quick$secondaryArchSuffix
# devel:libQt6WebKit$secondaryArchSuffix
# devel:libQt6WebKitWidgets$secondaryArchSuffix
"
BUILD_PREREQUIRES="
cmd:apr_1_config$secondaryArchSuffix
cmd:apu_1_config$secondaryArchSuffix
cmd:clang_$clangVer
cmd:clazy_standalone
cmd:cmake
cmd:cppcheck$secondaryArchSuffix
cmd:find
cmd:g++$secondaryArchSuffix
cmd:kdev_pg_qt$secondaryArchSuffix
cmd:llvm_config >= $clangVer
cmd:make
cmd:meson
cmd:msgfmt$secondaryArchSuffix
cmd:msgmerge$secondaryArchSuffix
cmd:pkg_config$secondaryArchSuffix
cmd:sed
cmd:update_mime_database$secondaryArchSuffix
"
TEST_REQUIRES="
qthaikuplugins$secondaryArchSuffix
"
PATCH()
{
# disable docs generation until libxml package is fixed
sed -e '/add_subdirectory(doc)/ s/^#*/#/' -i CMakeLists.txt
sed -e '/kdoctools_install(po)/ s/^#*/#/' -i CMakeLists.txt
# use Haiku's icon theme
sed -e 's,\ KIconTheme::initTheme();,\// KIconTheme::initTheme();,g' -i app/main.cpp
# disable searching for qtwebengine
sed -e '/find_dependency(Qt6WebEngineWidgets/ s/^#*/#/' -i kdevplatform/KDevPlatformConfig.cmake.in
}
# BUILD_TESTING needs to be enabled for libKDevPlatformTests
# required to build kdevelop_python ...
BUILD()
{
CLANG_VERSION="`clang --version | head -n 1 | cut -d " " -f3`"
BUILTIN_DIR="`finddir B_SYSTEM_LIB_DIRECTORY`/clang/$CLANG_VERSION/include"
cmake -B build -S . -DCMAKE_BUILD_TYPE=Release \
$cmakeDirArgs \
-DCMAKE_AUTOGEN_PARALLEL=1 \
-DKDE_INSTALL_QMLDIR=$dataDir/Qt6/qml \
-DKDE_INSTALL_PLUGINDIR=$addOnsDir/Qt6 \
-DKDE_INSTALL_QTPLUGINDIR=$addOnsDir/Qt6 \
-DECM_DIR=/system/data/cmake/Modules/ECM/cmake \
-DCLANG_BUILTIN_DIR="$BUILTIN_DIR" \
-DBUILD_DOC_VIEWER=OFF \
-DBUILD_TESTING=ON \
-Wno-dev
make -C build $jobArgs
}
INSTALL()
{
make -C build install
# cleanup
rm -rf $dataDir/{applications,icons,metainfo}
# don't mess with shared_mime_info files
rm $dataDir/mime/{version,types,treemagic,subclasses,magic,mime.cache}
rm $dataDir/mime/{icons,globs,globs2,generic-icons,aliases,XMLnamespaces}
local APP_SIGNATURE="application/x-vnd.Qt6-kdevelop"
local MAJOR="`echo "$portVersion" | cut -d. -f1`"
local MIDDLE="`echo "$portVersion" | cut -d. -f2`"
local MINOR="`echo "$portVersion" | cut -d. -f3`"
local LONG_INFO="$SUMMARY"
sed \
-e "s|@APP_SIGNATURE@|$APP_SIGNATURE|" \
-e "s|@MAJOR@|$MAJOR|" \
-e "s|@MIDDLE@|$MIDDLE|" \
-e "s|@MINOR@|$MINOR|" \
-e "s|@LONG_INFO@|$LONG_INFO|" \
$portDir/additional-files/kdevelop.rdef.in > kdevelop.rdef
addResourcesToBinaries kdevelop.rdef $binDir/kdevelop
addAppDeskbarSymlink $binDir/kdevelop KDevelop
prepareInstalledDevelLibs \
libKDevPlatformDebugger \
libKDevPlatformDocumentation \
libKDevPlatformInterfaces \
libKDevPlatformLanguage \
libKDevPlatformOutputView \
libKDevPlatformProject \
libKDevPlatformSerialization \
libKDevPlatformShell \
libKDevPlatformSublime \
libKDevPlatformTests \
libKDevPlatformUtil \
libKDevPlatformVcs
packageEntries devel \
$developDir \
$libDir/cmake
}
TEST()
{
# 39% tests passed, 82 tests failed out of 135
# Error window pops up witht: Could not find any plugins during startup.
# Please make sure QT_PLUGIN_PATH is set correctly
export LIBRARY_PATH="$sourceDir/build/bin${LIBRARY_PATH:+:$LIBRARY_PATH}"
ctest --test-dir build --output-on-failure
}