[OpenAFS] pam-afs-session-2.5 and solaris 11 make problem
Russ Allbery
rra@stanford.edu
Fri, 01 Jun 2012 17:19:47 -0700
Renata Maria Dart <renata@slac.stanford.edu> writes:
> Hi, I have been trying to compile pam-afs-session-2.5 on solaris 11. I
> have generated krb5 1.6.2, and heimdal 1.5.2 so that I have libkafs.a
> and libkafs.la, and I have OpenAFS 1.6.1 running on the system. I am
> using the following configure:
> ./configure --prefix=/opt/pam --with-krb5=/afs/slac.stanford.edu/package/krb5/1.6.2/sunx86_511 --with-libkafs=/afs/slac.stanford.edu/package/heimdal/sunx86_511/sunx86_511
The configure script was unable to find any libkafs library at that path
and is falling back on the internal implementation.
> The make fails:
> In file included from kafs/kafs.c:75:0:
> ./kafs/sys-solaris.c: In function 'k_syscall':
> ./kafs/sys-solaris.c:80:25: error: storage size of 'syscall_data' isn't known
> ./kafs/sys-solaris.c:89:15: error: invalid application of 'sizeof' to incomplete type 'struct afssysargs32'
> ./kafs/sys-solaris.c:80:25: warning: unused variable 'syscall_data'
> ./kafs/sys-solaris.c:77:13: warning: unused variable 'code'
> *** Error code 1
> make: Fatal error: Command failed for target `kafs/kafs.lo'
The structure namings turned out to neither match the structures defined
in that file or the names used by OpenAFS. The perils of writing code for
a platform that I can't test. The following patch should fix it:
diff --git a/kafs/sys-solaris.c b/kafs/sys-solaris.c
index 27dbc46..cb3421f 100644
--- a/kafs/sys-solaris.c
+++ b/kafs/sys-solaris.c
@@ -77,7 +77,7 @@ k_syscall(long call, long param1, long param2, long param3, long param4,
int fd, code, oerrno, callnum;
#ifdef _ILP32
- struct afssysargs32 syscall_data;
+ struct afssysargs syscall_data;
syscall_data.syscall = call;
syscall_data.param1 = param1;
@@ -86,9 +86,9 @@ k_syscall(long call, long param1, long param2, long param3, long param4,
syscall_data.param4 = param4;
syscall_data.param5 = 0;
syscall_data.param6 = 0;
- callnum = _IOW('C', 2, struct afssysargs32);
+ callnum = _IOW('C', 2, struct afssysargs);
#else
- struct afssysargs syscall_data;
+ struct afssysargs64 syscall_data;
syscall_data.syscall = call;
syscall_data.param1 = param1;
@@ -97,7 +97,7 @@ k_syscall(long call, long param1, long param2, long param3, long param4,
syscall_data.param4 = param4;
syscall_data.param5 = 0;
syscall_data.param6 = 0;
- callnum = _IOW('C', 1, struct afssysargs);
+ callnum = _IOW('C', 1, struct afssysargs64);
#endif
fd = open("/dev/afs", O_RDWR);
--
Russ Allbery (rra@stanford.edu) <http://www.eyrie.org/~eagle/>