Coda File System

Re: configure --srcdir and --prefix

From: Jan Harkes <jaharkes_at_cs.cmu.edu>
Date: Fri, 22 Sep 2000 11:42:27 -0400
On Fri, Sep 22, 2000 at 06:22:06PM +0900, Stephen J. Turnbull wrote:
> I realized a couple of days ago when I decided to finally update to
> coda 5.3.8 that I've actually become somewhat dependent on Coda
> working.  So I decided to make a couple of changes in the way I've
> been building coda.
> 
> First, I decided to use the --srcdir option to configure and build in
> a separate directory.  This seems to be working, except for some
> messages from configure about missing Makefile.ins; does anybody know
> a reason why it might not?

I normally build outside of the tree as follows,

    tar -xvzf coda-5.3.8.tgz
    mkdir obj-5.3.8
    cd obj-5.3.8
    `pwd`/../coda-5.3.8/configure
    make

This works like a charm for me.

> Second, rather than install Coda directly into /usr/local (overwriting
> the current, working, version), I decided that first I would test the
> installation by configuring with --prefix=/usr/local/coda-test.  This
> does not work correctly.  The problem is that the build picks up the
> includes and the libraries in /usr/local/{include,lib} for some
> reason, while those in /usr/local/coda-test/{include,lib} are ignored.

The compiler likes to pick things out of the default path. So librpc2
and librvm are probably linked against the wrong liblwp as well.

I've been pretty consistent in bumping the version numbers of the
libraries so that a make install in lwp/rpc2/rvm will _not_ clobber
previously installed libraries when the API has changed.

This is my /usr/lib:
    /usr/lib/liblwp.so.1.0.0	<--- First release, I can delete this.
    /usr/lib/liblwp.so.1.0.1	<--- compatible API, only fixes.
    /usr/lib/liblwp.so.2.0.0	<--- new API, probably also has fixes.
    /usr/lib/liblwp.so.1 -> liblwp.so.1.0.1 <- API v1
    /usr/lib/liblwp.so.2 -> liblwp.so.2.0.0 <- API v2
    /usr/lib/liblwp.so -> liblwp.so.2	    <- link against API v2

So any new programs will be linked against liblwp.so.2, but old binaries
linked against liblwp.so.1 will still work.

> Fortunately, this generated a compile error because of a change in a
> header, so it was obvious.  CFLAGS=-I/usr/local/coda-test/include and
> LDFLAGS=/usr/local/coda-test/lib in the configuration environment
> seems to helps the compile error but the link still seems to be wrong.
> Using ldd on (say) the new venus shows it finding
> /usr/local/lib/liblwp.so.1 but not /usr/local/coda-test/lib/liblwp.so.2.

rpc2 and rvm are probably linked against lwp.so.1. The shared library
search path (/etc/ld.so.conf) doesn't list /usr/local/coda-test/lib.
I saw from your followup mail that you found LD_LIBRARY_PATH.

There should also be commandline options to configure (for coda, rpc2
and rvm),

    --with-lwp=/usr/local/coda-test
    --with-rvm=/usr/local/coda-test
    --with-rpc2=/usr/local/coda-test

Although they all do the same thing, CFLAGS=-I${prefix}/include,
CXXFLAGS=-I${prefix}/include, LDFLAGS=-L${prefix}/libs.

Jan
Received on 2000-09-22 12:03:31