[OpenAFS] Building on AIX

Benjamin Kaduk kaduk@mit.edu
Fri, 12 Aug 2022 09:55:32 -0700


Hi Ben,

On Fri, Aug 12, 2022 at 04:41:04PM +0000, Ben Huntsman wrote:
> Hi guys!
>=20
> Has anyone built this on AIX recently?  I see in the code that there is s=
upport for AIX 6.1, and 7.2.  I was hoping to get it working on 7.1 so I fi=
gured I'd start with a build on AIX 6.1 to make sure it was in working orde=
r before attempting to port it to 7.1.  I'm using XLC 13.1.3 and my AIX lev=
el is 6100-09-12-1846.

It looks like we lost our regular AIX buildbot worker in early 2017, so any
builds since then have been ad hoc/infrequent.
That said, I think we're happy to help work through any issues that have
arisen since then and get things back into a usable state on AIX.

> I checked out the code from git and am using the master branch.  I am usi=
ng the following config options:
>=20
> CC=3Dxlc_r ./configure --prefix=3D/opt/openafs --enable-tivoli-tsm --enab=
le-kauth --disable-fuse-client --with-gssapi=3D/opt/freeware --with-krb5=3D=
/opt/freeware

[obligatory note that kauth is woefully insecure and should only be used if
you have compatibility requirements with legacy systems that cannot be
upgraded]

> Are those appropriate/reasonable under AIX?  Currently, I'm getting the f=
ollowing error:
>=20
>           cc -I. -I.. -I../nfs  -I/project/openafs/src/crypto/hcrypto/ker=
nel  -I/project/openafs/src  -I/project/openafs/src/afs  -I/project/openafs=
/src/afs/AIX  -I/project/openafs/src/config  -I/project/openafs/src/rx/AIX =
 -I/project/openafs/src/external/heimdal  -I/project/openafs/src  -I/projec=
t/openafs/src/afs  -I/project/openafs/src/afs/AIX  -I/project/openafs/src/c=
onfig  -I/project/openafs/src/fsint  -I/project/openafs/src/vlserver  -I/pr=
oject/openafs/src/auth  -I/project/openafs/include  -I/project/openafs/incl=
ude/afs   -I. -I.. -I/project/openafs/src/config  -U_IBMR2 -D_POWER -D_AIX =
-DNLS -D_NLS -DMSG -D__STR31__ -Daiws  -D_POWER_RS -D_POWER_PC -D_POWER_RS1=
 -D_POWER_RS2 -D_POWER_RSC  -D_POWER_601 -D_POWER_603 -D_POWER_604 -D_THREA=
DS -M  -D_KERNEL  -D_POWER_MP -UKOFF -DAFSDEBUG -DVICE -DNFS -DUFS -DINET -=
DQUOTA  -DGETMOUNT -H8 -DAFS -DAFS_COMMON -D_VOPS -D_SUN -DKERNEL -q64 -DAF=
S_64BIT_KERNEL -D__64BIT_KERNEL -g -I/project/openafs/src/rxkad -I/project/=
openafs/src/rxkad -o rxkad_common.o -c /project/openafs/src/rxkad/rxkad_com=
mon.c
> "/project/openafs/src/afs/AIX/osi_machdep.h", line 90.12: 1506-007 (S) "s=
truct timestruc_t" is undefined.
> "../sys/time.h", line 587.17: 1506-343 (S) Redeclaration of curtime diffe=
rs from previous declaration on line 91 of "/project/openafs/src/afs/AIX/os=
i_machdep.h".
> "../sys/time.h", line 587.17: 1506-050 (I) Return type "void" in redeclar=
ation is not compatible with the previous return type "int".
> make: 1254-004 The error code from the last command is 1.
>=20
>=20
> Has anyone seen this?  Certainly that struct is defined in /usr/include/s=
ys/time.h, but this seems like it's probably something obvious and I'm will=
ing to bet it's on my end and not a problem with the code.

That looks like some fallout from https://gerrit.openafs.org/#/c/14238/ and
given the lack of any remark about testing on AIX in the review notes, I'm
more inclined to think it's an issue with the OpenAFS code than your setup.

What does curtime() look like on your system?
We just need a way to get the current time in seconds+microseconds
precision (converting from, e.g., nanoseconds if needed).  We may have just
typo'd something in the src/afs/AIX/osi_machdep.h chunk, for all I know.

Thanks,

Ben

P.S. If you think you might be able to contribute some resources to have a
regular AIX buildbot worker again, we'd be delighted to talk about that!