diff --git a/fpie.patch b/fpie.patch new file mode 100644 index 0000000..7ab4c5e --- /dev/null +++ b/fpie.patch @@ -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}) diff --git a/kinit.changes b/kinit.changes index 5262d48..900a285 100644 --- a/kinit.changes +++ b/kinit.changes @@ -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 diff --git a/kinit.spec b/kinit.spec index 8f7080d..4f4f521 100644 --- a/kinit.spec +++ b/kinit.spec @@ -44,7 +44,10 @@ Group: System/GUI/KDE Url: http://www.kde.org Source: http://download.kde.org/stable/frameworks/%{version}/%{name}-%{version}.tar.xz Source1: baselibs.conf +# PATCH-FIX-OPENSUSE more_verbose.patch -- add more usefull verbosity to kdeinit5 and klauncher 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 %description @@ -65,6 +68,7 @@ booting UNIX. Development files. %prep %setup -q %patch0 -p1 +%patch1 -p1 %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" diff --git a/more_verbose.patch b/more_verbose.patch index ad094d5..f6beec1 100644 --- a/more_verbose.patch +++ b/more_verbose.patch @@ -1,7 +1,8 @@ -diff -Naur kinit-5.0.0/src/kdeinit/kinit.cpp kinit-5.0.0.new/src/kdeinit/kinit.cpp ---- kinit-5.0.0/src/kdeinit/kinit.cpp 2014-07-01 20:31:22.000000000 +0200 -+++ kinit-5.0.0.new/src/kdeinit/kinit.cpp 2014-07-26 14:54:45.372904933 +0200 -@@ -448,7 +448,7 @@ +diff --git a/src/kdeinit/kinit.cpp b/src/kdeinit/kinit.cpp +index 296ebfd..dedbc9c 100644 +--- a/src/kdeinit/kinit.cpp ++++ b/src/kdeinit/kinit.cpp +@@ -448,7 +448,7 @@ static void reset_oom_protect() if (write(oom_pipe, &pid, sizeof(pid_t)) > 0) { sigsuspend(&oldsigs); // wait for the signal to come } 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); #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() ? execpath.constData() : libpath.toUtf8().constData()); #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); if (d.n == 1) { 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"); #endif exec = true; -@@ -1020,7 +1020,7 @@ +@@ -1020,7 +1020,7 @@ static void start_klauncher() sprintf(args + 5, "%d", d.launcher[1]); d.launcher_pid = launch(2, "klauncher", args); 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", (long) d.launcher_pid, d.result); #endif -@@ -1036,7 +1036,7 @@ +@@ -1036,7 +1036,7 @@ static void launcher_died() } // 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"); #endif // 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) { @@ -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; 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; 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", commandToString(request_header.cmd), 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) { @@ -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"); #endif 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_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"); #endif 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); } 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()); #endif if (d.launcher_pid) { -@@ -1242,14 +1242,14 @@ +@@ -1242,14 +1242,14 @@ static bool handle_launcher_request(int sock, const char *who) if (children) { close(d.wrapper); 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"); #endif d.debug_wait = true; -@@ -1293,7 +1293,7 @@ +@@ -1293,7 +1293,7 @@ static void handle_requests(pid_t waitForPid) do { exit_pid = waitpid(-1, &exit_status, WNOHANG); 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); #endif 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); 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", (long) getpid()); #endif -@@ -1463,7 +1463,7 @@ +@@ -1463,7 +1463,7 @@ int kdeinit_xio_errhandler(Display *disp) 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]; // kdeinit almost doesn't use X, and therefore there shouldn't be any X error XGetErrorText(dpy, err->error_code, errstr, 256); -@@ -1536,7 +1536,7 @@ +@@ -1536,7 +1536,7 @@ static int initXconnection() 0, 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)); #endif int fd = XConnectionNumber(X11display); -@@ -1595,7 +1595,7 @@ +@@ -1595,7 +1595,7 @@ mac_fork_and_reexec_self() switch (x_fork_result) { 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"); #endif ::_exit(255); -@@ -1766,7 +1766,7 @@ +@@ -1766,7 +1766,7 @@ int main(int argc, char **argv) l.setLoadHints(QLibrary::ExportExternalSymbolsHint); (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 { 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"); pid = launch(1, KDED_EXENAME, 0); 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); #endif 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++) { if (safe_argv[i][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); #endif handle_requests(pid); -@@ -1822,7 +1822,7 @@ +@@ -1822,7 +1822,7 @@ int main(int argc, char **argv) // Ignore } else { 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); #endif } -diff -Naur kinit-5.0.0/src/klauncher/klauncher.cpp kinit-5.0.0.new/src/klauncher/klauncher.cpp ---- kinit-5.0.0/src/klauncher/klauncher.cpp 2014-07-01 20:31:22.000000000 +0200 -+++ kinit-5.0.0.new/src/klauncher/klauncher.cpp 2014-07-26 15:02:27.770124173 +0200 +diff --git a/src/klauncher/klauncher.cpp b/src/klauncher/klauncher.cpp +index 31498e0..fbcb064 100644 +--- a/src/klauncher/klauncher.cpp ++++ b/src/klauncher/klauncher.cpp @@ -65,7 +65,7 @@ // Dispose slaves after being idle for SLAVE_MAX_IDLE seconds #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[] = { "DBusNone", "DBusUnique", "DBusMulti", "ERROR" }; -@@ -617,7 +617,7 @@ +@@ -617,7 +617,7 @@ KLauncher::requestStart(KLaunchRequest *request) request_header.arg_length = requestData.length(); #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); #endif -@@ -782,7 +782,7 @@ +@@ -782,7 +782,7 @@ KLauncher::start_service(KService::Ptr service, const QStringList &_urls, } #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]; #endif -@@ -957,7 +957,7 @@ +@@ -957,7 +957,7 @@ KLauncher::slotDequeue() if (request->status != KLaunchRequest::Launching) { // Request handled. #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 requestDone(request); continue; -@@ -1063,8 +1063,8 @@ +@@ -1063,8 +1063,8 @@ KLauncher::requestSlave(const QString &protocol, QString name = slaveModulePath; #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 #ifndef USE_KPROCESS_FOR_KIOSLAVES -@@ -1104,7 +1104,7 @@ +@@ -1104,7 +1104,7 @@ KLauncher::requestSlave(const QString &protocol, requestStart(request); 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.... requestDone(request); -@@ -1208,7 +1208,7 @@ +@@ -1208,7 +1208,7 @@ KLauncher::slotGotOutput() #ifdef USE_KPROCESS_FOR_KIOSLAVES QProcess *p = static_cast(sender()); 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 } -@@ -1217,12 +1217,12 @@ +@@ -1217,12 +1217,12 @@ KLauncher::slotFinished(int exitCode, QProcess::ExitStatus exitStatus) { #ifdef USE_KPROCESS_FOR_KIOSLAVES QProcess *p = static_cast(sender());