[OpenAFS] Perl AFS module with OpenAFS 1.4.7

Russ Allbery rra@stanford.edu
Mon, 06 Oct 2008 15:52:04 -0700


I vaguely recall there was a mailing list message reporting problems with
the AFS Perl module with current versions of OpenAFS, but I can't find it
again now.  I was refreshing my x86 Debian packages and had to make a few
minor fixes for the com_err renaming, but nothing seems horribly broken.
With the below patch applied (and the KAS test disabled, since we have no
kaserver), the module passes all of its tests.  I haven't used it to do
anything beyond that, though.

For some reason, the XS version checking was failing miserably with Perl
5.10 (complaining about undefined variables), so I had to disable it.  I'm
not sure what's up with that; I haven't investigated further.

A better fix than this one is probably to rename all of the com_err calls
to use the afs_* names, but this was expedient and I wasn't sure if any of
the other symbols were used.

diff -ru AFS-2.4.0/src/AFS.xs AFS-2.4.0-new/src/AFS.xs
--- AFS-2.4.0/src/AFS.xs	2006-02-16 05:13:16.000000000 -0800
+++ AFS-2.4.0-new/src/AFS.xs	2008-10-06 15:33:15.000000000 -0700
@@ -43,6 +43,8 @@
 #include "ppport.h"
 
 #include <afs/param.h>
+#define AFS_OLD_COM_ERR 1
+#include <afs/com_err.h>
 /* tired of seeing messages about TRUE/FALSE being redefined in rx/xdr.h */
 #undef TRUE
 #undef FALSE
@@ -122,7 +124,9 @@
 typedef struct ubik_client *AFS__VOS;
 typedef struct rx_connection *AFS__BOS;
 
+#ifndef __AFS_COM_ERR_H
 extern char *error_message();
+#endif
 extern struct ubik_client *cstruct;
 extern int UV_SetSecurity();
 #ifdef OpenAFS
@@ -10998,6 +11002,8 @@
 
 MODULE = AFS    PACKAGE = AFS   PREFIX = afs_
 
+VERSIONCHECK: DISABLE
+
 BOOT:
     initialize_bz_error_table();
     initialize_vols_error_table();

-- 
Russ Allbery (rra@stanford.edu)             <http://www.eyrie.org/~eagle/>