SHA256
1
0
forked from pool/kinit
Hrvoje Senjan 2014-07-27 01:11:09 +00:00 committed by Git OBS Bridge
parent 61392c13aa
commit 1248a1a47f
4 changed files with 62 additions and 33 deletions

16
fpie.patch Normal file
View File

@ -0,0 +1,16 @@
diff --git a/src/start_kdeinit/CMakeLists.txt b/src/start_kdeinit/CMakeLists.txt
index 56a91e3..1af14de 100644
--- a/src/start_kdeinit/CMakeLists.txt
+++ b/src/start_kdeinit/CMakeLists.txt
@@ -2,6 +2,11 @@ add_executable(start_kdeinit start_kdeinit.c)
if (Libcap_FOUND)
target_link_libraries(start_kdeinit ${Libcap_LIBRARIES})
endif()
+
+set_property(TARGET start_kdeinit APPEND_STRING PROPERTY COMPILE_FLAGS " -fPIE")
+
+set_property(TARGET start_kdeinit APPEND_STRING PROPERTY LINK_FLAGS " -pie")
+
add_executable(start_kdeinit_wrapper start_kdeinit_wrapper.c)
install(TARGETS start_kdeinit DESTINATION ${KF5_LIBEXEC_INSTALL_DIR})

View File

@ -1,3 +1,10 @@
-------------------------------------------------------------------
Sun Jul 27 01:07:34 UTC 2014 - hrvoje.senjan@gmail.com
- Added fpie.patch: add -(f)pie link flags to start_kdeinit target
- Added more_verbose.patch: add more usefull verbosity to kdeinit5
and klauncher
------------------------------------------------------------------- -------------------------------------------------------------------
Fri Jul 11 09:48:44 UTC 2014 - hrvoje.senjan@gmail.com Fri Jul 11 09:48:44 UTC 2014 - hrvoje.senjan@gmail.com

View File

@ -44,7 +44,10 @@ Group: System/GUI/KDE
Url: http://www.kde.org Url: http://www.kde.org
Source: http://download.kde.org/stable/frameworks/%{version}/%{name}-%{version}.tar.xz Source: http://download.kde.org/stable/frameworks/%{version}/%{name}-%{version}.tar.xz
Source1: baselibs.conf Source1: baselibs.conf
# PATCH-FIX-OPENSUSE more_verbose.patch -- add more usefull verbosity to kdeinit5 and klauncher
Patch0: more_verbose.patch Patch0: more_verbose.patch
# PATCH-FIX-OPENSUSE fpie.patch -- add -(f)pie link flags to start_kdeinit target
Patch1: fpie.patch
BuildRoot: %{_tmppath}/%{name}-%{version}-build BuildRoot: %{_tmppath}/%{name}-%{version}-build
%description %description
@ -65,6 +68,7 @@ booting UNIX. Development files.
%prep %prep
%setup -q %setup -q
%patch0 -p1 %patch0 -p1
%patch1 -p1
%build %build
%cmake_kf5 -d build -- -DCMAKE_CXX_FLAGS="%{optflags} -fpie" -DCMAKE_C_FLAGS="%{optflags} -fpie" -DCMAKE_SHARED_LINKER_FLAGS="-pie" -DCMAKE_EXE_LINKER_FLAGS="-pie" -DCMAKE_MODULE_LINKER_FLAGS="-pie" %cmake_kf5 -d build -- -DCMAKE_CXX_FLAGS="%{optflags} -fpie" -DCMAKE_C_FLAGS="%{optflags} -fpie" -DCMAKE_SHARED_LINKER_FLAGS="-pie" -DCMAKE_EXE_LINKER_FLAGS="-pie" -DCMAKE_MODULE_LINKER_FLAGS="-pie"

View File

@ -1,7 +1,8 @@
diff -Naur kinit-5.0.0/src/kdeinit/kinit.cpp kinit-5.0.0.new/src/kdeinit/kinit.cpp diff --git a/src/kdeinit/kinit.cpp b/src/kdeinit/kinit.cpp
--- kinit-5.0.0/src/kdeinit/kinit.cpp 2014-07-01 20:31:22.000000000 +0200 index 296ebfd..dedbc9c 100644
+++ kinit-5.0.0.new/src/kdeinit/kinit.cpp 2014-07-26 14:54:45.372904933 +0200 --- a/src/kdeinit/kinit.cpp
@@ -448,7 +448,7 @@ +++ b/src/kdeinit/kinit.cpp
@@ -448,7 +448,7 @@ static void reset_oom_protect()
if (write(oom_pipe, &pid, sizeof(pid_t)) > 0) { if (write(oom_pipe, &pid, sizeof(pid_t)) > 0) {
sigsuspend(&oldsigs); // wait for the signal to come sigsuspend(&oldsigs); // wait for the signal to come
} else { } else {
@ -10,7 +11,7 @@ diff -Naur kinit-5.0.0/src/kdeinit/kinit.cpp kinit-5.0.0.new/src/kdeinit/kinit.c
fprintf(stderr, "Failed to reset OOM protection: %d\n", pid); fprintf(stderr, "Failed to reset OOM protection: %d\n", pid);
#endif #endif
} }
@@ -512,7 +512,7 @@ @@ -512,7 +512,7 @@ static pid_t launch(int argc, const char *_name, const char *args,
} }
} }
} }
@ -19,7 +20,7 @@ diff -Naur kinit-5.0.0/src/kdeinit/kinit.cpp kinit-5.0.0.new/src/kdeinit/kinit.c
fprintf(stderr, "kdeinit5: preparing to launch '%s'\n", libpath.isEmpty() fprintf(stderr, "kdeinit5: preparing to launch '%s'\n", libpath.isEmpty()
? execpath.constData() : libpath.toUtf8().constData()); ? execpath.constData() : libpath.toUtf8().constData());
#endif #endif
@@ -742,7 +742,7 @@ @@ -742,7 +742,7 @@ static pid_t launch(int argc, const char *_name, const char *args,
d.n = read(d.fd[0], &d.result, 1); d.n = read(d.fd[0], &d.result, 1);
if (d.n == 1) { if (d.n == 1) {
if (d.result == 2) { if (d.result == 2) {
@ -28,7 +29,7 @@ diff -Naur kinit-5.0.0/src/kdeinit/kinit.cpp kinit-5.0.0.new/src/kdeinit/kinit.c
//fprintf(stderr, "kdeinit5: no kdeinit module, trying exec....\n"); //fprintf(stderr, "kdeinit5: no kdeinit module, trying exec....\n");
#endif #endif
exec = true; exec = true;
@@ -1020,7 +1020,7 @@ @@ -1020,7 +1020,7 @@ static void start_klauncher()
sprintf(args + 5, "%d", d.launcher[1]); sprintf(args + 5, "%d", d.launcher[1]);
d.launcher_pid = launch(2, "klauncher", args); d.launcher_pid = launch(2, "klauncher", args);
close(d.launcher[1]); close(d.launcher[1]);
@ -37,7 +38,7 @@ diff -Naur kinit-5.0.0/src/kdeinit/kinit.cpp kinit-5.0.0.new/src/kdeinit/kinit.c
fprintf(stderr, "kdeinit5: Launched KLauncher, pid = %ld, result = %d\n", fprintf(stderr, "kdeinit5: Launched KLauncher, pid = %ld, result = %d\n",
(long) d.launcher_pid, d.result); (long) d.launcher_pid, d.result);
#endif #endif
@@ -1036,7 +1036,7 @@ @@ -1036,7 +1036,7 @@ static void launcher_died()
} }
// KLauncher died... restart // KLauncher died... restart
@ -46,7 +47,7 @@ diff -Naur kinit-5.0.0/src/kdeinit/kinit.cpp kinit-5.0.0.new/src/kdeinit/kinit.c
fprintf(stderr, "kdeinit5: KLauncher died unexpectedly.\n"); fprintf(stderr, "kdeinit5: KLauncher died unexpectedly.\n");
#endif #endif
// Make sure it's really dead. // Make sure it's really dead.
@@ -1055,7 +1055,7 @@ @@ -1055,7 +1055,7 @@ static void launcher_died()
static bool handle_launcher_request(int sock, const char *who) static bool handle_launcher_request(int sock, const char *who)
{ {
@ -55,7 +56,7 @@ diff -Naur kinit-5.0.0/src/kdeinit/kinit.cpp kinit-5.0.0.new/src/kdeinit/kinit.c
klauncher_header request_header; klauncher_header request_header;
char *request_data = 0L; char *request_data = 0L;
@@ -1098,7 +1098,7 @@ @@ -1098,7 +1098,7 @@ static bool handle_launcher_request(int sock, const char *who)
int avoid_loops = 0; int avoid_loops = 0;
const char *startup_id_str = "0"; // krazy:exclude=doublequote_chars const char *startup_id_str = "0"; // krazy:exclude=doublequote_chars
@ -64,7 +65,7 @@ diff -Naur kinit-5.0.0/src/kdeinit/kinit.cpp kinit-5.0.0.new/src/kdeinit/kinit.c
fprintf(stderr, "kdeinit5: Got %s '%s' from %s.\n", fprintf(stderr, "kdeinit5: Got %s '%s' from %s.\n",
commandToString(request_header.cmd), commandToString(request_header.cmd),
name, who); name, who);
@@ -1148,7 +1148,7 @@ @@ -1148,7 +1148,7 @@ static bool handle_launcher_request(int sock, const char *who)
} }
if ((arg_n - request_data) != request_header.arg_length) { if ((arg_n - request_data) != request_header.arg_length) {
@ -73,7 +74,7 @@ diff -Naur kinit-5.0.0/src/kdeinit/kinit.cpp kinit-5.0.0.new/src/kdeinit/kinit.c
fprintf(stderr, "kdeinit5: EXEC request has invalid format.\n"); fprintf(stderr, "kdeinit5: EXEC request has invalid format.\n");
#endif #endif
free(request_data); free(request_data);
@@ -1208,13 +1208,13 @@ @@ -1208,13 +1208,13 @@ static bool handle_launcher_request(int sock, const char *who)
env_name = request_data; env_name = request_data;
env_value = env_name + strlen(env_name) + 1; env_value = env_name + strlen(env_name) + 1;
@ -89,7 +90,7 @@ diff -Naur kinit-5.0.0/src/kdeinit/kinit.cpp kinit-5.0.0.new/src/kdeinit/kinit.c
fprintf(stderr, "kdeinit5: SETENV request has invalid format.\n"); fprintf(stderr, "kdeinit5: SETENV request has invalid format.\n");
#endif #endif
free(request_data); free(request_data);
@@ -1222,14 +1222,14 @@ @@ -1222,14 +1222,14 @@ static bool handle_launcher_request(int sock, const char *who)
} }
qputenv(env_name, env_value); qputenv(env_name, env_value);
} else if (request_header.cmd == LAUNCHER_TERMINATE_KDE) { } else if (request_header.cmd == LAUNCHER_TERMINATE_KDE) {
@ -106,7 +107,7 @@ diff -Naur kinit-5.0.0/src/kdeinit/kinit.cpp kinit-5.0.0.new/src/kdeinit/kinit.c
fprintf(stderr, "kdeinit5: Got termination request (PID %ld).\n", (long) getpid()); fprintf(stderr, "kdeinit5: Got termination request (PID %ld).\n", (long) getpid());
#endif #endif
if (d.launcher_pid) { if (d.launcher_pid) {
@@ -1242,14 +1242,14 @@ @@ -1242,14 +1242,14 @@ static bool handle_launcher_request(int sock, const char *who)
if (children) { if (children) {
close(d.wrapper); close(d.wrapper);
d.wrapper = -1; d.wrapper = -1;
@ -123,7 +124,7 @@ diff -Naur kinit-5.0.0/src/kdeinit/kinit.cpp kinit-5.0.0.new/src/kdeinit/kinit.c
fprintf(stderr, "kdeinit5: Debug wait activated.\n"); fprintf(stderr, "kdeinit5: Debug wait activated.\n");
#endif #endif
d.debug_wait = true; d.debug_wait = true;
@@ -1293,7 +1293,7 @@ @@ -1293,7 +1293,7 @@ static void handle_requests(pid_t waitForPid)
do { do {
exit_pid = waitpid(-1, &exit_status, WNOHANG); exit_pid = waitpid(-1, &exit_status, WNOHANG);
if (exit_pid > 0) { if (exit_pid > 0) {
@ -132,7 +133,7 @@ diff -Naur kinit-5.0.0/src/kdeinit/kinit.cpp kinit-5.0.0.new/src/kdeinit/kinit.c
fprintf(stderr, "kdeinit5: PID %ld terminated.\n", (long) exit_pid); fprintf(stderr, "kdeinit5: PID %ld terminated.\n", (long) exit_pid);
#endif #endif
if (waitForPid && (exit_pid == waitForPid)) { if (waitForPid && (exit_pid == waitForPid)) {
@@ -1308,7 +1308,7 @@ @@ -1308,7 +1308,7 @@ static void handle_requests(pid_t waitForPid)
child_died(exit_pid, exit_status); child_died(exit_pid, exit_status);
if (d.wrapper < 0 && !children) { if (d.wrapper < 0 && !children) {
@ -141,7 +142,7 @@ diff -Naur kinit-5.0.0/src/kdeinit/kinit.cpp kinit-5.0.0.new/src/kdeinit/kinit.c
fprintf(stderr, "kdeinit5: Last child terminated, exiting (PID %ld).\n", fprintf(stderr, "kdeinit5: Last child terminated, exiting (PID %ld).\n",
(long) getpid()); (long) getpid());
#endif #endif
@@ -1463,7 +1463,7 @@ @@ -1463,7 +1463,7 @@ int kdeinit_xio_errhandler(Display *disp)
int kdeinit_x_errhandler(Display *dpy, XErrorEvent *err) int kdeinit_x_errhandler(Display *dpy, XErrorEvent *err)
{ {
@ -150,7 +151,7 @@ diff -Naur kinit-5.0.0/src/kdeinit/kinit.cpp kinit-5.0.0.new/src/kdeinit/kinit.c
char errstr[256]; char errstr[256];
// kdeinit almost doesn't use X, and therefore there shouldn't be any X error // kdeinit almost doesn't use X, and therefore there shouldn't be any X error
XGetErrorText(dpy, err->error_code, errstr, 256); XGetErrorText(dpy, err->error_code, errstr, 256);
@@ -1536,7 +1536,7 @@ @@ -1536,7 +1536,7 @@ static int initXconnection()
0, 0,
BlackPixelOfScreen(DefaultScreenOfDisplay(X11display)), BlackPixelOfScreen(DefaultScreenOfDisplay(X11display)),
BlackPixelOfScreen(DefaultScreenOfDisplay(X11display))); BlackPixelOfScreen(DefaultScreenOfDisplay(X11display)));
@ -159,7 +160,7 @@ diff -Naur kinit-5.0.0/src/kdeinit/kinit.cpp kinit-5.0.0.new/src/kdeinit/kinit.c
fprintf(stderr, "kdeinit5: opened connection to %s\n", DisplayString(X11display)); fprintf(stderr, "kdeinit5: opened connection to %s\n", DisplayString(X11display));
#endif #endif
int fd = XConnectionNumber(X11display); int fd = XConnectionNumber(X11display);
@@ -1595,7 +1595,7 @@ @@ -1595,7 +1595,7 @@ mac_fork_and_reexec_self()
switch (x_fork_result) { switch (x_fork_result) {
case -1: case -1:
@ -168,7 +169,7 @@ diff -Naur kinit-5.0.0/src/kdeinit/kinit.cpp kinit-5.0.0.new/src/kdeinit/kinit.c
fprintf(stderr, "Mac OS X workaround fork() failed!\n"); fprintf(stderr, "Mac OS X workaround fork() failed!\n");
#endif #endif
::_exit(255); ::_exit(255);
@@ -1766,7 +1766,7 @@ @@ -1766,7 +1766,7 @@ int main(int argc, char **argv)
l.setLoadHints(QLibrary::ExportExternalSymbolsHint); l.setLoadHints(QLibrary::ExportExternalSymbolsHint);
(void)l.load(); (void)l.load();
} }
@ -177,7 +178,7 @@ diff -Naur kinit-5.0.0/src/kdeinit/kinit.cpp kinit-5.0.0.new/src/kdeinit/kinit.c
else { else {
fprintf(stderr, "%s was not found.\n", extra_libs[i]); fprintf(stderr, "%s was not found.\n", extra_libs[i]);
} }
@@ -1799,7 +1799,7 @@ @@ -1799,7 +1799,7 @@ int main(int argc, char **argv)
qputenv("KDED_STARTED_BY_KDEINIT", "1"); qputenv("KDED_STARTED_BY_KDEINIT", "1");
pid = launch(1, KDED_EXENAME, 0); pid = launch(1, KDED_EXENAME, 0);
unsetenv("KDED_STARTED_BY_KDEINIT"); unsetenv("KDED_STARTED_BY_KDEINIT");
@ -186,7 +187,7 @@ diff -Naur kinit-5.0.0/src/kdeinit/kinit.cpp kinit-5.0.0.new/src/kdeinit/kinit.c
fprintf(stderr, "kdeinit5: Launched KDED, pid = %ld result = %d\n", (long) pid, d.result); fprintf(stderr, "kdeinit5: Launched KDED, pid = %ld result = %d\n", (long) pid, d.result);
#endif #endif
d.kded_pid = pid; d.kded_pid = pid;
@@ -1810,7 +1810,7 @@ @@ -1810,7 +1810,7 @@ int main(int argc, char **argv)
for (int i = 1; i < argc; i++) { for (int i = 1; i < argc; i++) {
if (safe_argv[i][0] == '+') { if (safe_argv[i][0] == '+') {
pid = launch(1, safe_argv[i] + 1, 0); pid = launch(1, safe_argv[i] + 1, 0);
@ -195,7 +196,7 @@ diff -Naur kinit-5.0.0/src/kdeinit/kinit.cpp kinit-5.0.0.new/src/kdeinit/kinit.c
fprintf(stderr, "kdeinit5: Launched '%s', pid = %ld result = %d\n", safe_argv[i] + 1, (long) pid, d.result); fprintf(stderr, "kdeinit5: Launched '%s', pid = %ld result = %d\n", safe_argv[i] + 1, (long) pid, d.result);
#endif #endif
handle_requests(pid); handle_requests(pid);
@@ -1822,7 +1822,7 @@ @@ -1822,7 +1822,7 @@ int main(int argc, char **argv)
// Ignore // Ignore
} else { } else {
pid = launch(1, safe_argv[i], 0); pid = launch(1, safe_argv[i], 0);
@ -204,9 +205,10 @@ diff -Naur kinit-5.0.0/src/kdeinit/kinit.cpp kinit-5.0.0.new/src/kdeinit/kinit.c
fprintf(stderr, "kdeinit5: Launched '%s', pid = %ld result = %d\n", safe_argv[i], (long) pid, d.result); fprintf(stderr, "kdeinit5: Launched '%s', pid = %ld result = %d\n", safe_argv[i], (long) pid, d.result);
#endif #endif
} }
diff -Naur kinit-5.0.0/src/klauncher/klauncher.cpp kinit-5.0.0.new/src/klauncher/klauncher.cpp diff --git a/src/klauncher/klauncher.cpp b/src/klauncher/klauncher.cpp
--- kinit-5.0.0/src/klauncher/klauncher.cpp 2014-07-01 20:31:22.000000000 +0200 index 31498e0..fbcb064 100644
+++ kinit-5.0.0.new/src/klauncher/klauncher.cpp 2014-07-26 15:02:27.770124173 +0200 --- a/src/klauncher/klauncher.cpp
+++ b/src/klauncher/klauncher.cpp
@@ -65,7 +65,7 @@ @@ -65,7 +65,7 @@
// Dispose slaves after being idle for SLAVE_MAX_IDLE seconds // Dispose slaves after being idle for SLAVE_MAX_IDLE seconds
#define SLAVE_MAX_IDLE 30 #define SLAVE_MAX_IDLE 30
@ -216,7 +218,7 @@ diff -Naur kinit-5.0.0/src/klauncher/klauncher.cpp kinit-5.0.0.new/src/klauncher
static const char *const s_DBusStartupTypeToString[] = static const char *const s_DBusStartupTypeToString[] =
{ "DBusNone", "DBusUnique", "DBusMulti", "ERROR" }; { "DBusNone", "DBusUnique", "DBusMulti", "ERROR" };
@@ -617,7 +617,7 @@ @@ -617,7 +617,7 @@ KLauncher::requestStart(KLaunchRequest *request)
request_header.arg_length = requestData.length(); request_header.arg_length = requestData.length();
#ifdef KLAUNCHER_VERBOSE_OUTPUT #ifdef KLAUNCHER_VERBOSE_OUTPUT
@ -225,7 +227,7 @@ diff -Naur kinit-5.0.0/src/klauncher/klauncher.cpp kinit-5.0.0.new/src/klauncher
<< "cmd=" << commandToString(request_header.cmd); << "cmd=" << commandToString(request_header.cmd);
#endif #endif
@@ -782,7 +782,7 @@ @@ -782,7 +782,7 @@ KLauncher::start_service(KService::Ptr service, const QStringList &_urls,
} }
#ifdef KLAUNCHER_VERBOSE_OUTPUT #ifdef KLAUNCHER_VERBOSE_OUTPUT
@ -234,7 +236,7 @@ diff -Naur kinit-5.0.0/src/klauncher/klauncher.cpp kinit-5.0.0.new/src/klauncher
<< "startup type=" << s_DBusStartupTypeToString[request->dbus_startup_type]; << "startup type=" << s_DBusStartupTypeToString[request->dbus_startup_type];
#endif #endif
@@ -957,7 +957,7 @@ @@ -957,7 +957,7 @@ KLauncher::slotDequeue()
if (request->status != KLaunchRequest::Launching) { if (request->status != KLaunchRequest::Launching) {
// Request handled. // Request handled.
#ifdef KLAUNCHER_VERBOSE_OUTPUT #ifdef KLAUNCHER_VERBOSE_OUTPUT
@ -243,7 +245,7 @@ diff -Naur kinit-5.0.0/src/klauncher/klauncher.cpp kinit-5.0.0.new/src/klauncher
#endif #endif
requestDone(request); requestDone(request);
continue; continue;
@@ -1063,8 +1063,8 @@ @@ -1063,8 +1063,8 @@ KLauncher::requestSlave(const QString &protocol,
QString name = slaveModulePath; QString name = slaveModulePath;
#endif #endif
@ -254,7 +256,7 @@ diff -Naur kinit-5.0.0/src/klauncher/klauncher.cpp kinit-5.0.0.new/src/klauncher
#ifdef Q_OS_UNIX #ifdef Q_OS_UNIX
#ifndef USE_KPROCESS_FOR_KIOSLAVES #ifndef USE_KPROCESS_FOR_KIOSLAVES
@@ -1104,7 +1104,7 @@ @@ -1104,7 +1104,7 @@ KLauncher::requestSlave(const QString &protocol,
requestStart(request); requestStart(request);
pid_t pid = request->pid; pid_t pid = request->pid;
@ -263,7 +265,7 @@ diff -Naur kinit-5.0.0/src/klauncher/klauncher.cpp kinit-5.0.0.new/src/klauncher
// We don't care about this request any longer.... // We don't care about this request any longer....
requestDone(request); requestDone(request);
@@ -1208,7 +1208,7 @@ @@ -1208,7 +1208,7 @@ KLauncher::slotGotOutput()
#ifdef USE_KPROCESS_FOR_KIOSLAVES #ifdef USE_KPROCESS_FOR_KIOSLAVES
QProcess *p = static_cast<QProcess *>(sender()); QProcess *p = static_cast<QProcess *>(sender());
QByteArray _stdout = p->readAllStandardOutput(); QByteArray _stdout = p->readAllStandardOutput();
@ -272,7 +274,7 @@ diff -Naur kinit-5.0.0/src/klauncher/klauncher.cpp kinit-5.0.0.new/src/klauncher
#endif #endif
} }
@@ -1217,12 +1217,12 @@ @@ -1217,12 +1217,12 @@ KLauncher::slotFinished(int exitCode, QProcess::ExitStatus exitStatus)
{ {
#ifdef USE_KPROCESS_FOR_KIOSLAVES #ifdef USE_KPROCESS_FOR_KIOSLAVES
QProcess *p = static_cast<QProcess *>(sender()); QProcess *p = static_cast<QProcess *>(sender());