[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