[OpenAFS-devel] problems compiling JAVA_API

Jeffrey Hutzelman jhutz@cmu.edu
Tue, 13 Sep 2005 12:26:48 -0400


On Monday, September 12, 2005 21:50:20 -0700 Pucky Loucks 
<ploucks@h2st.com> wrote:


> -TOP_JLIBDIR=@TOP_JLIBDIR@
> +TOP_JLIBDIR=/home/pucky/openafs-1.3.87/jlib

This is an OK workaround, but really you want this to be set by configure, 
rather than editing the file by hand.  The simplest thing to do is to edit 
acinclude.m4, find all the references to TOP_LIBDIR, and do exactly the 
same things for TOP_JLIBDIR (except using jlib instead of lib).

> -JAVA_HOME=@JAVA_HOME@
> +JAVA_HOME=/usr/java/current

Again, an OK stopgap, but eventually you want this to be set by configure, 
presumably on the basis of a --with-java-home or the like.  Again, the 
right place to do this is in acinclude.m4.


> -JNI_INC=@JNI_INC@
> +JNI_INC=/home/pucky/openafs-1.3.87/include/afs

This is not so good.  JNI_INC is supposed to take the form of switches to 
be passed to the compiler; that is, it should be -I<something>, not just a 
directory.  Also, this is not intended to point at somewhere within the 
OpenAFS tree; if you look at where this is referenced, you'll see that 
there is already a reference to ${TOP_INCDIR}/afs/.  I'm pretty sure that 
what you want is a reference to whatever directory contains the headers 
needed to build JNI procedures for your java implementation.  Again, this 
should eventually be set by configure.  It's possible that this can/should 
be derived from JAVA_HOME, above, possibly by running some program found 
there to obtain the right list of include flags.

In each case, after you modify acinclude.m4, you need to run regen.sh, 
which will update aclocal.m4 and the configure script.





> -include ../../config/Makefile.${SYS_NAME}
> +include ../../config/Makefile.i386_djgpp

No, that's wrong, and you certainly should not expect it to work even a 
little.  Your platform is i386_linux24, which is nothing like i386_djgpp.
The real problem here is that the java code hasn't been maintained at all 
since early versions of OpenAFS 1.2, and the build system has changed quite 
a lot in the meantime.

If you look at the Makefile.in's in some of the other directories, you'll 
see that today, you want to remove that line and everything before it 
(except the settings of JAVA_HOME and JNI_INC, which are specific to this 
directory), and add the following two lines instead:

srcdir=@srcdir@
include @TOP_OBJDIR@/src/config/Makefile.config



> make[1]: Entering directory `/home/pucky/openafs-1.3.87/src/JAVA/ libjafs'
> mkdir -p /home/pucky/openafs-1.3.87/jlib
> rm -f VersionInfo.o; perl buildinfo.pl VersionInfo.h -i; \
>          export INCREMENT_BUILD=false;
> Can't open perl script "buildinfo.pl": No such file or directory

Well, that's going to be a problem, since it means you can't build a 
VersionInfo.h.  The buildinfo.pl script doesn't seem to actually be in the 
openafs distribution, but the Java stuff was originally distributed by 
someone else as patches to OpenAFS.  Perhaps if you search the web, or look 
in RT for the ticket where this stuff was submitted, you'll find the 
original patch and can extract the file from there.  Here's a hint: if you 
go to CVSWeb (http://cvs.openafs.org/) and look at the logs for the files 
in the JAVA directory, you'll probably find the name(s) of the delta(s) in 
which the changes were applied, and you may also find a ticket number.

-- Jeffrey T. Hutzelman (N3NHS) <jhutz+@cmu.edu>
   Sr. Research Systems Programmer
   School of Computer Science - Research Computing Facility
   Carnegie Mellon University - Pittsburgh, PA