Subject: Re: Make install failure in -current (several places)
To: Olaf Seibert <rhialto@polder.ubc.kun.nl>
From: Bill Studenmund <wrstuden@nas.nasa.gov>
List: current-users
Date: 03/01/2000 12:18:25
On Wed, 1 Mar 2000, Olaf Seibert wrote: 

> For now, I am rerunning a make build (without removing the old results),
> since the make install finished now, and never made or installed
> $DESTDIR/usr/libexec/cc1 (and who knows what else).
> 
> # From http://www.netbsd.org/developers/releng/build-release.html
> 
> export MACHINE_ARCH=`uname -m`
> # # The location of your source tree.
> export BSDSRCDIR=/vol1/rhialto/sup/root/src
> # # The location of the object files produced by the build.
> export BSDSOBJIR=/vol1/rhialto/obj
> # # For the initial build, which doesn't include those crypto
> # # files which may not be exported from the US and Canada.
> # EXPORTABLE_SYSTEM=1
> # # These two aren't really necessary; they just make life
> # # easier if/when you rebuild later.
> export BUILD=1
> export UPDATE=1
> #
> # # The following variables must be set in the environment;
> # # /etc/mk.conf will not do!
> #
> # # Where the installed files go.
> if [ "$DESTDIR" = "" ]
> then
>     export DESTDIR=/vol1/rhialto/destdir.${MACHINE_ARCH}
> fi
> # # Where the release goes (in release(7) format, of course).
> # RELEASEDIR=/usr/home/cjs/netbsd/release
> export RELEASEDIR=/vol1/rhialto/release.${MACHINE_ARCH}
> 
> make=/usr/bin/make
> if [ -x $DESTDIR/$make ]; then
>     make=$DESTDIR/$make
>     echo "Using make=$make"
> fi
> if [ -x $DESTDIR/usr/bin/cc ]; then
>     export CC=${DESTDIR}/usr/bin/cc
>     export CXX=${DESTDIR}/usr/bin/c++
>     echo "Using cc=$CC"
> fi

I really don't think you want this. If you want to go to -current, you
need to upgrade your tools. i.e. just rebuild make and gcc by themselves,
and install them. The problem with what you do above is that you will be
trying to run binaries which are linked against the new libraries. Yes,
you can change LD_LIBRARY_PATH, but that's still a hack. It means you are
running programs which expect a newer kernel than you have installed
(assuming that since you're not updating these tools, you're also not
updating the kernel).

> # gcc will simply not use this if it's not there:
> # (and it will strip a trailing slash for some weird
> # reason - as you can see by running gcc -v -print-search-dirs c.c
> export GCC_EXEC_PREFIX=${DESTDIR}/usr/libexec//

As above, you should really just upgrade gcc.

> #export CFLAGS="$CFLAGS -B$GCC_EXEC_PREFIX"
> #export CXXFLAGS="$CXXFLAGS -B$GCC_EXEC_PREFIX"
> # Use newly built system libraries:
> export LD_LIBRARY_PATH="${DESTDIR}/usr/lib:${LD_LIBRARY_PATH}"
> # Use newly built system programs: ??
> # export PATH="${DESTDIR}/bin:${DESTDIR}/sbin:${DESTDIR}/usr/bin:${DESTDIR}/usr/sbin:${PATH}"

As above, you really shoudn't be using the new binaries yet. Compiles of
the new code built against your old libraries are fine, but not ones built
against the new libraries.

Take care,

Bill