rpms/kdebase-workspace/devel kdebase-workspace-4.0.98-consolekit-kdm.patch, NONE, 1.1 kdebase-workspace.spec, 1.102, 1.103 kdebase-workspace-4.0.0-consolekit-kdm.patch, 1.1, NONE

Kevin Kofler (kkofler) fedora-extras-commits at redhat.com
Mon Jul 14 23:03:29 UTC 2008


Author: kkofler

Update of /cvs/pkgs/rpms/kdebase-workspace/devel
In directory cvs-int.fedora.redhat.com:/tmp/cvs-serv12361/devel

Modified Files:
	kdebase-workspace.spec 
Added Files:
	kdebase-workspace-4.0.98-consolekit-kdm.patch 
Removed Files:
	kdebase-workspace-4.0.0-consolekit-kdm.patch 
Log Message:
* Mon Jul 14 2008 Kevin Kofler <Kevin at tigcc.ticalc.org> 4.0.98-5
- new consolekit-kdm patch using libck-connector, BR ConsoleKit-devel (#430388)

kdebase-workspace-4.0.98-consolekit-kdm.patch:

--- NEW FILE kdebase-workspace-4.0.98-consolekit-kdm.patch ---
diff -Nur kdebase-workspace-4.0.98/cmake/modules/FindCkConnector.cmake kdebase-workspace-4.0.98-consolekit-kdm/cmake/modules/FindCkConnector.cmake
--- kdebase-workspace-4.0.98/cmake/modules/FindCkConnector.cmake	1970-01-01 01:00:00.000000000 +0100
+++ kdebase-workspace-4.0.98-consolekit-kdm/cmake/modules/FindCkConnector.cmake	2008-07-15 00:13:56.000000000 +0200
@@ -0,0 +1,57 @@
+# - Try to find the ConsoleKit connector library (libck-connector)
+# Once done this will define
+#
+#  CKCONNECTOR_FOUND - system has the CK Connector
+#  CKCONNECTOR_INCLUDE_DIR - the CK Connector include directory
+#  CKCONNECTOR_LIBRARIES - The libraries needed to use CK Connector
+
+# Copyright (c) 2008, Kevin Kofler, <kevin.kofler at chello.at>
+# modeled after FindLibArt.cmake:
+# Copyright (c) 2006, Alexander Neundorf, <neundorf at kde.org>
+#
+# Redistribution and use is allowed according to the terms of the BSD license.
+# For details see the accompanying COPYING-CMAKE-SCRIPTS file.
+
+
+if (CKCONNECTOR_INCLUDE_DIR AND CKCONNECTOR_LIBRARIES)
+
+  # in cache already
+  SET(CKCONNECTOR_FOUND TRUE)
+
+else (CKCONNECTOR_INCLUDE_DIR AND CKCONNECTOR_LIBRARIES)
+
+  IF (NOT WIN32)
+    INCLUDE(UsePkgConfig)
+    # use pkg-config to get the directories and then use these values
+    # in the FIND_PATH() and FIND_LIBRARY() calls
+    PKGCONFIG(ck-connector _ckConnectorIncDir _ckConnectorLinkDir _ckConnectorLinkFlags _ckConnectorCflags)
+  ENDIF (NOT WIN32)
+
+  FIND_PATH(CKCONNECTOR_INCLUDE_DIR ck-connector.h
+     ${_ckConnectorIncDir}
+  )
+
+  FIND_LIBRARY(CKCONNECTOR_LIBRARIES NAMES ck-connector
+     PATHS
+     ${_ckConnectorLinkDir}
+  )
+
+
+  if (CKCONNECTOR_INCLUDE_DIR AND CKCONNECTOR_LIBRARIES)
+     set(CKCONNECTOR_FOUND TRUE)
+  endif (CKCONNECTOR_INCLUDE_DIR AND CKCONNECTOR_LIBRARIES)
+
+
+  if (CKCONNECTOR_FOUND)
+     if (NOT CkConnector_FIND_QUIETLY)
+        message(STATUS "Found ck-connector: ${CKCONNECTOR_LIBRARIES}")
+     endif (NOT CkConnector_FIND_QUIETLY)
+  else (CKCONNECTOR_FOUND)
+     if (CkConnector_FIND_REQUIRED)
+        message(FATAL_ERROR "Could NOT find ck-connector")
+     endif (CkConnector_FIND_REQUIRED)
+  endif (CKCONNECTOR_FOUND)
+
+  MARK_AS_ADVANCED(CKCONNECTOR_INCLUDE_DIR CKCONNECTOR_LIBRARIES)
+
+endif (CKCONNECTOR_INCLUDE_DIR AND CKCONNECTOR_LIBRARIES)
diff -Nur kdebase-workspace-4.0.98/cmake/modules/FindDBus.cmake kdebase-workspace-4.0.98-consolekit-kdm/cmake/modules/FindDBus.cmake
--- kdebase-workspace-4.0.98/cmake/modules/FindDBus.cmake	1970-01-01 01:00:00.000000000 +0100
+++ kdebase-workspace-4.0.98-consolekit-kdm/cmake/modules/FindDBus.cmake	2008-07-14 23:56:36.000000000 +0200
@@ -0,0 +1,39 @@
+
+if(DBUS_INCLUDE_DIR AND DBUS_LIBRARY AND DBUS_ARCH_INCLUDE_DIR)
+	# Already in cache, be silent
+	set(DBUS_FIND_QUIETLY TRUE)	
+endif(DBUS_INCLUDE_DIR AND DBUS_LIBRARY AND DBUS_ARCH_INCLUDE_DIR)
+
+set(DBUS_LIBRARY)
+set(DBUS_INCLUDE_DIR)
+set(DBUS_ARCH_INCLUDE_DIR)
+
+FIND_PATH(DBUS_INCLUDE_DIR dbus/dbus.h
+	/usr/include
+	/usr/include/dbus-1.0
+	/usr/local/include
+)
+
+FIND_PATH(DBUS_ARCH_INCLUDE_DIR dbus/dbus-arch-deps.h
+	/usr/lib${LIB_SUFFIX}/include
+	/usr/lib${LIB_SUFFIX}/dbus-1.0/include
+	/usr/lib64/include
+	/usr/lib64/dbus-1.0/include
+	/usr/lib/include
+	/usr/lib/dbus-1.0/include
+)
+
+FIND_LIBRARY(DBUS_LIBRARY NAMES dbus-1 dbus
+	PATHS
+	/usr/lib
+	/usr/local/lib
+)
+
+if(DBUS_INCLUDE_DIR AND DBUS_LIBRARY AND DBUS_ARCH_INCLUDE_DIR)
+   MESSAGE( STATUS "dbus found: includes in ${DBUS_INCLUDE_DIR}, library in ${DBUS_LIBRARY}")
+   set(DBUS_FOUND TRUE)
+else(DBUS_INCLUDE_DIR AND DBUS_LIBRARY AND DBUS_ARCH_INCLUDE_DIR)
+   MESSAGE( STATUS "dbus not found")
+endif(DBUS_INCLUDE_DIR AND DBUS_LIBRARY AND DBUS_ARCH_INCLUDE_DIR)
+
+MARK_AS_ADVANCED(DBUS_INCLUDE_DIR DBUS_LIBRARY DBUS_ARCH_INCLUDE_DIR)
diff -Nur kdebase-workspace-4.0.98/kdm/backend/client.c kdebase-workspace-4.0.98-consolekit-kdm/kdm/backend/client.c
--- kdebase-workspace-4.0.98/kdm/backend/client.c	2008-05-07 11:05:26.000000000 +0200
+++ kdebase-workspace-4.0.98-consolekit-kdm/kdm/backend/client.c	2008-07-14 23:48:35.000000000 +0200
@@ -1180,7 +1180,11 @@
 */
 
 int
+#ifdef HAVE_CKCONNECTOR
+startClient( volatile int *pid, const char *ck_session_cookie )
+#else
 startClient( volatile int *pid )
+#endif
 {
 	const char *home, *sessargs, *desksess;
 	char **env, *xma;
@@ -1269,6 +1273,11 @@
 	if (krbtkfile[0] != '\0')
 		env = setEnv( env, "KRBTKFILE", krbtkfile );
 #endif
+#ifdef HAVE_CKCONNECTOR
+	if (ck_session_cookie != NULL) {
+		env = setEnv ( env, "XDG_SESSION_COOKIE", ck_session_cookie );
+	}
+#endif
 	userEnviron = inheritEnv( env, envvars );
 	env = systemEnv( 0, curuser );
 	systemEnviron = setEnv( env, "HOME", p->pw_dir );
diff -Nur kdebase-workspace-4.0.98/kdm/backend/CMakeLists.txt kdebase-workspace-4.0.98-consolekit-kdm/kdm/backend/CMakeLists.txt
--- kdebase-workspace-4.0.98/kdm/backend/CMakeLists.txt	2008-05-29 13:19:01.000000000 +0200
+++ kdebase-workspace-4.0.98-consolekit-kdm/kdm/backend/CMakeLists.txt	2008-07-15 00:32:29.000000000 +0200
@@ -60,6 +60,10 @@
 	${SOCKET_LIBRARIES}
 	${RESOLV_LIBRARIES}
 )
+if (CKCONNECTOR_FOUND)
+	include_directories(${CKCONNECTOR_INCLUDE_DIR} ${DBUS_INCLUDE_DIR} ${DBUS_ARCH_INCLUDE_DIR})
+	target_link_libraries( kdm ${CKCONNECTOR_LIBRARIES} ${DBUS_LIBRARY} )
+endif (CKCONNECTOR_FOUND)
 if(UTIL_LIBRARIES)
 	target_link_libraries( kdm ${UTIL_LIBRARIES} )
 endif(UTIL_LIBRARIES)
diff -Nur kdebase-workspace-4.0.98/kdm/backend/dm.h kdebase-workspace-4.0.98-consolekit-kdm/kdm/backend/dm.h
--- kdebase-workspace-4.0.98/kdm/backend/dm.h	2008-01-05 00:55:44.000000000 +0100
+++ kdebase-workspace-4.0.98-consolekit-kdm/kdm/backend/dm.h	2008-07-14 23:48:35.000000000 +0200
@@ -504,7 +504,11 @@
 #define GCONV_BINARY  5
 typedef char *(*GConvFunc)( int what, const char *prompt );
 int verify( GConvFunc gconv, int rootok );
+#ifdef HAVE_CKCONNECTOR
+int startClient( volatile int *pid, const char *ck_session_cookie );
+#else
 int startClient( volatile int *pid );
+#endif
 void clientExited( void );
 void sessionExit( int status ) ATTR_NORETURN;
 int readDmrc( void );
diff -Nur kdebase-workspace-4.0.98/kdm/backend/session.c kdebase-workspace-4.0.98-consolekit-kdm/kdm/backend/session.c
--- kdebase-workspace-4.0.98/kdm/backend/session.c	2008-01-05 00:55:44.000000000 +0100
+++ kdebase-workspace-4.0.98-consolekit-kdm/kdm/backend/session.c	2008-07-15 00:45:59.000000000 +0200
@@ -45,6 +45,14 @@
 #include <ctype.h>
 #include <signal.h>
 
+#ifdef HAVE_CKCONNECTOR
+#include <ck-connector.h>
+#include <dbus/dbus.h>
+/* for getpwnam */
+#include <sys/types.h>
+#include <pwd.h>
+#endif
+
 struct display *td;
 const char *td_setup = "auto";
 
@@ -553,6 +561,18 @@
 	volatile time_t tdiff = 0;
 	sigset_t ss;
 
+#ifdef HAVE_CKCONNECTOR
+	DBusError error;
+	CkConnector *connector;
+	char *ck_session_cookie;
+	struct passwd *pwent;
+	char device[20] = "";
+#ifdef XDMCP
+	char *empty_hostname = "";
+	char **remote_host_name;
+#endif
+#endif
+
 	td = d;
 	debug( "manageSession %s\n", d->name );
 	if ((ex = Setjmp( abortSession ))) {
@@ -627,8 +647,58 @@
 
 	if (td_setup)
 		setupDisplay( td_setup );
+#ifdef HAVE_VTS
+	if (d->serverVT > 0) {
+		/* FIXME: how does xorg construct this */
+		sprintf(device, "/dev/tty%d", d->serverVT);
+	}	
+#endif
 
+#ifdef HAVE_CKCONNECTOR
+	pwent = getpwnam(curuser);
+	if (pwent == NULL) {
+		debug ("NULL user\n");
+		ck_session_cookie = NULL;
+	} else {
+		connector = ck_connector_new ();
+#ifdef XDMCP
+		if ((d->displayType & d_location) != dLocal && d->remoteHost)
+			remote_host_name = &(d->remoteHost);
+		else
+			remote_host_name = &empty_hostname;
+#endif
+	
+		if (connector != NULL) {
+			dbus_error_init (&error);
+			if ( !(ck_connector_open_session_with_parameters (connector,
+				&error, "unix-user", &(pwent->pw_uid), 
+				"display-device", &device,
+				"x11-display", &(d->name),
+				"is-local", ((d->displayType & d_location) == dLocal),
+#ifdef XDMCP
+				"remote-host-name", remote_host_name,			
+#endif
+				NULL))) {
+				if (dbus_error_is_set (&error)) {
+					logError( "ConsoleKit open: %s\n", error.message);
+					dbus_error_free (&error);
+				} else {
+					logError("cannot open CK session: OOM, D-Bus system bus not available,\n"
+						"ConsoleKit not available or insufficient privileges.\n");
+				}
+				ck_connector_unref (connector);
+				sessionExit( EX_NORMAL );
+			}
+		} else {
+			debug ("OOM creating CkConnector\n");
+			sessionExit( EX_NORMAL );
+		}
+		ck_session_cookie = ck_connector_get_cookie (connector);
+	}
+	if (!startClient( &clientPid, ck_session_cookie )) {
+#else
 	if (!startClient( &clientPid )) {
+#endif
 		logError( "Client start failed\n" );
 		sessionExit( EX_NORMAL ); /* XXX maybe EX_REMANAGE_DPY? -- enable in dm.c! */
 	}
@@ -650,6 +720,23 @@
 				catchTerm( SIGTERM );
 		}
 	}
+
+/* close consolekit session */
+#ifdef HAVE_CKCONNECTOR
+	if (ck_session_cookie != NULL) {
+		dbus_error_init (&error);
+		if (! ck_connector_close_session (connector, &error)) {
+			if (dbus_error_is_set (&error)) {
+				logError ("ConsoleKit close: %s\n", error.message);
+				 dbus_error_free (&error);
+			} else {
+				logError ("Cannot close CK session: OOM, D-Bus system bus not available,\n"
+				"ConsoleKit not available or insufficient privileges.\n");
+			}
+		}
+		ck_connector_unref (connector);
+	}
+#endif
 	/*
 	 * Sometimes the Xsession somehow manages to exit before
 	 * a server crash is noticed - so we sleep a bit and wait
diff -Nur kdebase-workspace-4.0.98/kdm/backend/xdmcp.c kdebase-workspace-4.0.98-consolekit-kdm/kdm/backend/xdmcp.c
--- kdebase-workspace-4.0.98/kdm/backend/xdmcp.c	2008-01-05 00:55:44.000000000 +0100
+++ kdebase-workspace-4.0.98-consolekit-kdm/kdm/backend/xdmcp.c	2008-07-14 23:48:35.000000000 +0200
@@ -1016,6 +1016,8 @@
 			d->clientAddr = clientAddress;
 			d->clientPort = clientPort;
 			d->connectionType = connectionType;
+			d->remoteHost = networkAddressToHostname (pdpy->connectionType,
+				&pdpy->connectionAddress);
 			if (pdpy->fileAuthorization) {
 				d->authorizations = (Xauth **)Malloc( sizeof(Xauth *) );
 				if (!d->authorizations) {
diff -Nur kdebase-workspace-4.0.98/kdm/CMakeLists.txt kdebase-workspace-4.0.98-consolekit-kdm/kdm/CMakeLists.txt
--- kdebase-workspace-4.0.98/kdm/CMakeLists.txt	2008-02-07 14:19:51.000000000 +0100
+++ kdebase-workspace-4.0.98-consolekit-kdm/kdm/CMakeLists.txt	2008-07-15 00:28:16.000000000 +0200
@@ -4,6 +4,17 @@
 install_pam_service(KDM)
 
 include(ConfigureChecks.cmake)
+
+macro_optional_find_package(CkConnector)
+if(CKCONNECTOR_FOUND)
+  # when building with libck-connector, we also need the low-level D-Bus API
+  find_package(DBus REQUIRED)
+endif(CKCONNECTOR_FOUND)
+
+macro_log_feature(CKCONNECTOR_FOUND "ck-connector" "The ConsoleKit connector library" "http://freedesktop.org/wiki/Software/ConsoleKit" FALSE "" "Provides ConsoleKit integration in KDM")
+
+macro_bool_to_01(CKCONNECTOR_FOUND HAVE_CKCONNECTOR)
+
 configure_file(config-kdm.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/config-kdm.h)
 
 install( FILES README DESTINATION ${DATA_INSTALL_DIR}/doc/kdm )
diff -Nur kdebase-workspace-4.0.98/kdm/config-kdm.h.cmake kdebase-workspace-4.0.98-consolekit-kdm/kdm/config-kdm.h.cmake
--- kdebase-workspace-4.0.98/kdm/config-kdm.h.cmake	2008-01-05 00:55:45.000000000 +0100
+++ kdebase-workspace-4.0.98-consolekit-kdm/kdm/config-kdm.h.cmake	2008-07-14 23:48:35.000000000 +0200
@@ -123,6 +123,9 @@
 /* Define to 1 if you have the <termios.h> header file. */
 #cmakedefine HAVE_TERMIOS_H 1
 
+/* Define to 1 if the ck-connector library is found */
+#cmakedefine HAVE_CKCONNECTOR 1
+
 /* $PATH defaults set by KDM */
 #cmakedefine KDM_DEF_USER_PATH "${KDM_DEF_USER_PATH}"
 #cmakedefine KDM_DEF_SYSTEM_PATH "${KDM_DEF_SYSTEM_PATH}"


Index: kdebase-workspace.spec
===================================================================
RCS file: /cvs/pkgs/rpms/kdebase-workspace/devel/kdebase-workspace.spec,v
retrieving revision 1.102
retrieving revision 1.103
diff -u -r1.102 -r1.103
--- kdebase-workspace.spec	14 Jul 2008 14:42:55 -0000	1.102
+++ kdebase-workspace.spec	14 Jul 2008 23:02:40 -0000	1.103
@@ -4,7 +4,7 @@
 Name: kdebase-workspace
 Version: 4.0.98
 
-Release: 4%{?dist}
+Release: 5%{?dist}
 Source0: ftp://ftp.kde.org/pub/kde/unstable/%{version}/src/kdebase-workspace-%{version}.tar.bz2
 License: GPLv2
 Group: User Interface/Desktops
@@ -12,7 +12,7 @@
 BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
 
 Patch1: kdebase-workspace-4.0.3-redhat-startkde.patch
-Patch2: kdebase-workspace-4.0.0-consolekit-kdm.patch
+Patch2: kdebase-workspace-4.0.98-consolekit-kdm.patch
 Patch3: kdebase-workspace-4.0.72-plasma-konsole.patch
 Patch4: kdebase-workspace-4.0.72-show-systemsettings.patch
 Patch5: kdebase-workspace-4.0.72-ck-shutdown.patch
@@ -45,7 +45,7 @@
 
 BuildRequires: bluez-libs-devel
 BuildRequires: cmake
-BuildRequires: dbus-devel
+BuildRequires: ConsoleKit-devel
 BuildRequires: glib2-devel
 BuildRequires: kde-filesystem >= 4
 BuildRequires: kdelibs4-devel >= %{version}
@@ -127,7 +127,7 @@
 
 # RH/Fedora-specific startkde changes
 %patch1 -p1 -b .redhat-startkde
-# ConsoleKit support for KDM (#228111, kde#147790)
+# ConsoleKit support for KDM (#228111, #430388, kde#147790)
 %patch2 -p1 -b .consolekit
 %patch3 -p1 -b .plasma-konsole
 %patch4 -p1 -b .show-systemsettings
@@ -276,6 +276,9 @@
 
 
 %changelog
+* Mon Jul 14 2008 Kevin Kofler <Kevin at tigcc.ticalc.org> 4.0.98-5
+- new consolekit-kdm patch using libck-connector, BR ConsoleKit-devel (#430388)
+
 * Mon Jul 14 2008 Rex Dieter <rdieter at fedorproject.org> 4.0.98-4
 - install circles kdm theme
 


--- kdebase-workspace-4.0.0-consolekit-kdm.patch DELETED ---




More information about the fedora-extras-commits mailing list