Add KF6 frameworks, kdesu6 (new) (#10535)

This commit is contained in:
Schrijvers Luc
2024-05-29 15:56:17 +02:00
committed by GitHub
parent e396589728
commit aae979afdb
2 changed files with 215 additions and 0 deletions

View File

@@ -0,0 +1,91 @@
SUMMARY="User interface for running shell commands with root privileges"
DESCRIPTION="KDESU provides functionality for building GUI front ends for (password asking) \
console mode programs. For example, kdesu and kdessh use it to interface with su and ssh \
respectively."
HOMEPAGE="https://invent.kde.org/frameworks/kdesu"
COPYRIGHT="2010-2024 KDE Organisation"
LICENSE="GNU LGPL v2"
REVISION="1"
SOURCE_URI="https://download.kde.org/stable/frameworks/${portVersion%.*}/kdesu-$portVersion.tar.xz"
CHECKSUM_SHA256="7c612fea489d9e3e3d3c90cab0d314d98486bdc06014a60f609fdff21505822f"
SOURCE_DIR="kdesu-$portVersion"
PATCHES="kdesu-$portVersion.patchset"
ARCHITECTURES="all !x86_gcc2"
SECONDARY_ARCHITECTURES="x86"
libVersion="$portVersion"
libVersionCompat="$libVersion compat >= ${libVersion%%.*}"
PROVIDES="
kdesu6$secondaryArchSuffix = $portVersion
lib:libKF6Su$secondaryArchSuffix = $libVersionCompat
"
REQUIRES="
haiku$secondaryArchSuffix
lib:libKF6ConfigCore$secondaryArchSuffix
lib:libKF6CoreAddons$secondaryArchSuffix
lib:libKF6I18n$secondaryArchSuffix
lib:libKF6Pty$secondaryArchSuffix
lib:libQt6Core$secondaryArchSuffix
"
PROVIDES_devel="
kdesu6${secondaryArchSuffix}_devel = $portVersion
devel:libKF6Su$secondaryArchSuffix = $libVersionCompat
"
REQUIRES_devel="
kdesu6$secondaryArchSuffix == $portVersion base
"
BUILD_REQUIRES="
haiku${secondaryArchSuffix}_devel
extra_cmake_modules$secondaryArchSuffix >= $portVersion
qt6_tools${secondaryArchSuffix}_devel
devel:libKF6ConfigCore$secondaryArchSuffix == $portVersion
devel:libKF6CoreAddons$secondaryArchSuffix == $portVersion
devel:libKF6I18n$secondaryArchSuffix == $portVersion
devel:libKF6Pty$secondaryArchSuffix == $portVersion
devel:libQt6Core$secondaryArchSuffix
devel:libQt6Qml$secondaryArchSuffix
"
BUILD_PREREQUIRES="
cmd:cmake
cmd:dot
cmd:doxygen >= 1.9
cmd:g++$secondaryArchSuffix
cmd:make
cmd:msgfmt
cmd:msgmerge
cmd:pkg_config$secondaryArchSuffix
"
BUILD()
{
cmake -Bbuild -S. $cmakeDirArgs \
-DCMAKE_BUILD_TYPE=Release \
-DECM_DIR=/system/data/cmake/Modules/ECM/cmake \
-DKDESU_USE_SUDO_DEFAULT=OFF \
-DBUILD_QCH=ON \
-DBUILD_TESTING=OFF
make -C build $jobArgs
}
INSTALL()
{
make -C build install
prepareInstalledDevelLib \
libKF6Su
packageEntries devel \
$libDir/cmake \
$dataDir/doc \
$developDir
}
TEST()
{
export LIBRARY_PATH="$sourceDir/build/bin${LIBRARY_PATH:+:$LIBRARY_PATH}"
make -C build test
}

View File

@@ -0,0 +1,124 @@
From c07596c3d925cffab961d35e828dfb101abec396 Mon Sep 17 00:00:00 2001
From: Schrijvers Luc <begasus@gmail.com>
Date: Thu, 7 Mar 2024 17:55:01 +0100
Subject: Build fixes
diff --git a/src/client.cpp b/src/client.cpp
index 79563f3..b101db6 100644
--- a/src/client.cpp
+++ b/src/client.cpp
@@ -38,7 +38,7 @@ public:
QByteArray sock;
};
-#ifndef SUN_LEN
+#if !defined(SUN_LEN) && !defined(Q_OS_HAIKU)
#define SUN_LEN(ptr) ((QT_SOCKLEN_T)(((struct sockaddr_un *)0)->sun_path) + strlen((ptr)->sun_path))
#endif
@@ -94,7 +94,7 @@ int Client::connect()
addr.sun_family = AF_UNIX;
strcpy(addr.sun_path, d->sock.constData());
- if (QT_SOCKET_CONNECT(d->sockfd, (struct sockaddr *)&addr, SUN_LEN(&addr)) < 0) {
+ if (QT_SOCKET_CONNECT(d->sockfd, (struct sockaddr *)&addr, sizeof(&addr)) < 0) {
qCWarning(KSU_LOG) << "[" << __FILE__ << ":" << __LINE__ << "] "
<< "connect():" << strerror(errno);
close(d->sockfd);
diff --git a/src/kdesud/kdesud.cpp b/src/kdesud/kdesud.cpp
index 0d8598d..4b33595 100644
--- a/src/kdesud/kdesud.cpp
+++ b/src/kdesud/kdesud.cpp
@@ -60,7 +60,7 @@
#include <dirent.h>
-#if !HAVE_CLOSE_RANGE
+#if !HAVE_CLOSE_RANGE && !defined(Q_OS_HAIKU)
#include <sys/syscall.h> // close_range syscall
#endif
@@ -258,11 +258,13 @@ int create_socket()
}
}
+#ifndef Q_OS_HAIKU
sockfd = socket(PF_UNIX, SOCK_STREAM | SOCK_CLOEXEC, 0);
if (sockfd < 0) {
qCCritical(KSUD_LOG) << "socket(): " << ERR << "\n";
return -1;
}
+#endif
// Ensure socket closed on error
struct fd_ScopeGuard {
@@ -378,9 +380,11 @@ int main(int argc, char *argv[])
exit(1);
}
+#ifndef Q_OS_HAIKU
if (sockfd != 3) {
sockfd = dup3(sockfd, 3, O_CLOEXEC);
}
+#endif
if (sockfd < 0) {
qCCritical(KSUD_LOG) << "Failed to set sockfd to fd 3" << ERR << "\n";
kdesud_cleanup();
@@ -415,7 +419,9 @@ int main(int argc, char *argv[])
repo = new Repository;
QList<ConnectionHandler *> handler;
+#ifndef Q_OS_HAIKU
pipe2(pipeOfDeath, O_CLOEXEC);
+#endif
maxfd = qMax(maxfd, pipeOfDeath[0]);
// Signal handlers
--
2.43.2
From a3302d6e4584d390a5d813a96f25e9fbf7350c6f Mon Sep 17 00:00:00 2001
From: Schrijvers Luc <begasus@gmail.com>
Date: Fri, 17 May 2024 15:57:31 +0200
Subject: Link with libnetwork
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index d941c83..da02af1 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -72,6 +72,12 @@ target_link_libraries(KF6Su
KF6::ConfigCore # KConfigGroup
)
+if(HAIKU)
+target_link_libraries(KF6Su
+ PRIVATE
+ network
+)
+endif()
ecm_generate_headers(KDESu_CamelCase_HEADERS
HEADER_NAMES
diff --git a/src/kdesud/CMakeLists.txt b/src/kdesud/CMakeLists.txt
index e80a772..395b0c3 100644
--- a/src/kdesud/CMakeLists.txt
+++ b/src/kdesud/CMakeLists.txt
@@ -25,7 +25,11 @@ ecm_qt_declare_logging_category(kdesud
EXPORT KSU
)
-target_link_libraries(kdesud KF6::Su KF6::I18n ${X11_LIBRARIES})
+if(HAIKU)
+ target_link_libraries(kdesud KF6::Su KF6::I18n network)
+else()
+ target_link_libraries(kdesud KF6::Su KF6::I18n ${X11_LIBRARIES})
+endif()
if(HAVE_X11)
target_include_directories(kdesud PRIVATE ${X11_X11_INCLUDE_PATH})
endif()
--
2.43.2