This patch adds linux support via heimdal to revision 55 of:
 http://trac.macosforge.org/projects/collaboration/browser/PyKerberos/trunk/
A split out/cleanup up version is here:
 https://svn.macosforge.org/projects/calendarserver/ticket/37
and my gurrent git is here:
 git-clone http://honk.sigxcpu.org/git/pykerberos/.git

Index: src/kerberosbasic.c
===================================================================
--- src/kerberosbasic.c	(Revision 42)
+++ src/kerberosbasic.c	(Arbeitskopie)
@@ -20,8 +20,9 @@
 
 #include <stdio.h>
 #include <string.h>
+#include <stdlib.h>
 
-/*#define PRINTFS*/
+#undef PRINTFS
 
 static krb5_error_code verify_krb5_user(krb5_context context, krb5_principal principal, const char *password, krb5_principal server);
 
@@ -39,7 +40,7 @@
 	if (code)
 	{
 #ifdef PRINTFS
-		printf("Cannot initialize Kerberos5 context (%d)", code);
+		printf("Cannot initialize Kerberos5 context (%d)\n", code);
 #endif
 		return 0;
 	}
@@ -49,7 +50,7 @@
 	if (ret)
 	{
 #ifdef PRINTFS
-		printf("Error parsing server name (%s): %s", service, krb5_get_err_text(kcontext, ret));
+		printf("Error parsing server name (%s): %s\n", service, krb5_get_err_text(kcontext, ret));
 #endif
 		ret = 0;
 		goto end;
@@ -59,13 +60,13 @@
 	if (code)
 	{
 #ifdef PRINTFS
-		printf("krb5_unparse_name() failed: %s", krb5_get_err_text(kcontext, code));
+		printf("krb5_unparse_name() failed: %s\n", krb5_get_err_text(kcontext, code));
 #endif
 		ret = 0;
 		goto end;
 	}
 #ifdef PRINTFS
-	printf("Using %s as server principal for password verification", name);
+	printf("Using %s as server principal for password verification\n", name);
 #endif
 	free(name);
 	name = NULL;
@@ -85,7 +86,7 @@
 	if (code)
 	{
 #ifdef PRINTFS
-		printf("krb5_parse_name() failed: %s", krb5_get_err_text(kcontext, code));
+		printf("krb5_parse_name() failed: %s\n", krb5_get_err_text(kcontext, code));
 #endif
 		ret = 0;
 		goto end;
@@ -103,7 +104,7 @@
 	
 end:
 #ifdef PRINTFS
-	printf("kerb_authenticate_user_krb5pwd ret=%d user=%s authtype=%s", ret, user, "Basic");
+	printf("kerb_authenticate_user_krb5pwd ret=%d user=%s authtype=%s\n", ret, user, "Basic");
 #endif
 	if (name)
 		free(name);
@@ -130,7 +131,7 @@
 	if (ret == 0)
 	{
 #ifdef PRINTFS
-		printf("Trying to get TGT for user %s", name);
+		printf("Trying to get TGT for user %s\n", name);
 #endif
 		free(name);
 	}
@@ -139,7 +140,7 @@
 	if (ret)
 	{
 #ifdef PRINTFS
-		printf("krb5_get_init_creds_password() failed: %s",  krb5_get_err_text(context, ret));
+		printf("krb5_get_init_creds_password() failed: %s\n",  krb5_get_err_text(context, ret));
 #endif
 		goto end;
 	}
Index: src/kerberosgss.h
===================================================================
--- src/kerberosgss.h	(Revision 42)
+++ src/kerberosgss.h	(Arbeitskopie)
@@ -16,10 +16,8 @@
  * DRI: Cyrus Daboo, cdaboo@apple.com
  **/
 
-#include <Kerberos/gssapi.h>
-#include <Kerberos/gssapi_generic.h>
-#include <Kerberos/gssapi_krb5.h>
-#include <Kerberos/krb_err.h>
+#include <gssapi.h>
+#include <krb5.h>
 
 #define krb5_get_err_text(context,code) error_message(code)
 
Index: src/kerberosbasic.h
===================================================================
--- src/kerberosbasic.h	(Revision 42)
+++ src/kerberosbasic.h	(Arbeitskopie)
@@ -16,10 +16,8 @@
  * DRI: Cyrus Daboo, cdaboo@apple.com
  **/
 
-#include <Kerberos/gssapi.h>
-#include <Kerberos/gssapi_generic.h>
-#include <Kerberos/gssapi_krb5.h>
-#include <Kerberos/krb_err.h>
+#include <gssapi.h>
+#include <krb5.h>
 
 #define krb5_get_err_text(context,code) error_message(code)
 
Index: src/kerberosgss.c
===================================================================
--- src/kerberosgss.c	(Revision 42)
+++ src/kerberosgss.c	(Arbeitskopie)
@@ -23,9 +23,10 @@
 #include <stdio.h>
 #include <string.h>
 
-#include <Kerberos/KerberosLogin.h>
+#include <stdlib.h>
+#include <krb5.h>
 
-#define PRINTFS
+#undef PRINTFS
 
 static const char *get_gss_error(char *p, int psize, OM_uint32 err_maj, OM_uint32 err_min, char *prefix);
 
@@ -33,7 +34,9 @@
 {
 	OM_uint32 maj_stat;
 	OM_uint32 min_stat;
+#ifdef PRINTFS
 	char buf[1024];
+#endif
 	gss_buffer_desc name_token = GSS_C_EMPTY_BUFFER;
 	int ret = AUTH_GSS_COMPLETE;
 
@@ -44,9 +47,9 @@
 	
 	// Import server name first
 	name_token.length = strlen(service);
-    name_token.value = (char *)service;
+        name_token.value = (char *)service;
 	
-	maj_stat = gss_import_name(&min_stat, &name_token, gss_krb5_nt_service_name, &state->server_name);
+	maj_stat = gss_import_name(&min_stat, &name_token, GSS_KRB5_NT_PRINCIPAL_NAME, &state->server_name);
 	
 	if (GSS_ERROR(maj_stat))
 	{
@@ -89,7 +92,9 @@
 {
 	OM_uint32 maj_stat;
 	OM_uint32 min_stat;
+#ifdef PRINTFS
 	char buf[1024];
+#endif
 	gss_buffer_desc input_token = GSS_C_EMPTY_BUFFER;
 	gss_buffer_desc output_token = GSS_C_EMPTY_BUFFER;
 	int ret = AUTH_GSS_CONTINUE;
@@ -191,7 +196,9 @@
 {
 	OM_uint32 maj_stat;
 	OM_uint32 min_stat;
+#ifdef PRINTFS
 	char buf[1024];
+#endif
 	gss_buffer_desc name_token = GSS_C_EMPTY_BUFFER;
 	int ret = AUTH_GSS_COMPLETE;
 	
@@ -269,7 +276,9 @@
 {
 	OM_uint32 maj_stat;
 	OM_uint32 min_stat;
+#ifdef PRINTFS
 	char buf[1024];
+#endif
 	gss_buffer_desc input_token = GSS_C_EMPTY_BUFFER;
 	gss_buffer_desc output_token = GSS_C_EMPTY_BUFFER;
 	int ret = AUTH_GSS_CONTINUE;
Index: src/kerberos.c
===================================================================
--- src/kerberos.c	(Revision 42)
+++ src/kerberos.c	(Arbeitskopie)
@@ -16,7 +16,7 @@
  * DRI: Cyrus Daboo, cdaboo@apple.com
  **/
 
-#include <Python/Python.h>
+#include "Python.h"
 
 #include "kerberosbasic.h"
 #include "kerberosgss.h"
Index: setup.py
===================================================================
--- setup.py	(Revision 42)
+++ setup.py	(Arbeitskopie)
@@ -19,7 +19,7 @@
 from distutils.core import setup, Extension
 import sys
 
-if sys.platform in ["darwin", "macosx"]: 
+if sys.platform in [ "linux2" ]: 
 
     """
     On Mac OS X we build the actual Python module linking to the
@@ -28,7 +28,7 @@
 
     module1 = Extension(
         'kerberos',
-        extra_link_args = ['-framework', 'Kerberos'],
+	extra_link_args = ['-lgssapi' ],
         sources = [
             'src/kerberos.c',
             'src/kerberosbasic.c',

