Boost logo

Boost Users :

From: Steven T. Hatton (hattons_at_[hidden])
Date: 2004-09-05 18:34:55


On Saturday 04 September 2004 22:56, Rene Rivera wrote:
> David Abrahams wrote:
> > "Steven T. Hatton" <hattons_at_[hidden]> writes:
...

> Installing to /usr/local/lib was the most requested location by users.
> The majority of users did *not* want to modify the standard search
> location variables or call ldconfig (or whatever the equivalent is for
> each platform).

usr/local/lib is not an uncommon default. I typically install virtually all
my (dozens of) development libraries in my own user space, and add them to my
user environment variables. My systems administrator - who has well over a
decade of solid experience - does not let me mess with the base OS
configuration unless absolutely necessary. I am, BTW, the systems
administrator.
  
> As for knowing about that choice, it is mentioned in the documentation,
> and in the inline help. Just as it is for "configure" style tools. You
> could have done a: bjam --help, and seen:

Yes, that is how this discussion got started. I had followed the example in
the documentation, and set my own directory for --prefix. The way it's
looking to me now, the whole /install/ action is spurious for my situation.
Installing Boost means extracting it to the installation location and
building it in place. Following that I need to set my environment variables
to reference the appropriate locations. In the case of Boost I believe the
best thing for me to do is:

#Assume BOOST_HOME to be my equivalent to BOOST_ROOT

test "$PWD" = "$BOOST_HOME" && ln -s stage/lib . && ln -s boost include

I will observe the $BOOST_HOME/bin directory does not seem to hold what I
expect to find in a <path to>/bin directory.

I did not refrence any documentation when writing the following, so it may be
subject ot refinement or correction.

My expectation of an installation is that it reflects the structure of a Unix
file system. In the following 'info' is not from standard Unix, but the
remainder of the directory names are. If you have BOOST_ROOT set 'correctly'
this will generate the directory structure I would expect to find in a
package installed on a Unix or Unix-like OS when --prefix=$BOOST_ROOT:

UP="lib bin include sbin man share libexec info";\
for d in $UP; do echo "$BOOST_ROOT/$d"; done

$BOOST_ROOT/lib # libraries for loading at runtime or linking at compile time
$BOOST_ROOT/bin # user executables such as bjam, etc
$BOOST_ROOT/include # header files intended for use by developers
$BOOST_ROOT/sbin # executables intended for systems administration
$BOOST_ROOT/man # Unix manual pages for Boost, if they exist
$BOOST_ROOT/share # platform independent resources: html docs, dtds, Jambase?
$BOOST_ROOT/libexec # executables that I don't use very often.
$BOOST_ROOT/info # GNU Info documentation for Boost, if it exists

Since properly conforming (to GNU standards) GNU packages are predictable, I
am able to do the following:

export GNU=$ORG/gnu

#test -z "$GNU_GCC" && export GNU_GCC=$GNU/gcc-3.4.0
#test -n "$GNU_GCC" || export GNU_GCC=$GNU/gcc-3.3.3
export GNU_MAKE=$GNU/make-3.80
export GNU_AUTOCONF=$GNU/autoconf-2.59
export GNU_AUTOGEN=$GNU/autogen-5.5.7
export GNU_AUTOMAKE=$GNU/automake-1.8.4
export GNU_GNOME=/opt/gnome
export GNU_LIBTOOL=$GNU/libtool-1.5.6
export GNU_TEXINFO=$GNU/texinfo-4.7
export GNU_EMACS=$GNU/emacs-cvs
#export GNU_DDD=$GNU/ddd-3.3.8
export GNU_GDB=$GNU/gdb-6.1
export GNU_DDD=$GNU/ddd-cvs
export GNU_LIB3DS=$GNU/lib3ds-1.2.0
export GNU_TOOLSMANUAL=$GNU//toolsmanual-0.1.5

export GNU_LIST="$GNU_TOOLSMANUAL\
 $GNU_LIB3DS\
 $GNU_DDD\
 $GNU_GDB\
 $GNU_EMACS\
 $GNU_TEXINFO\
 $GNU_LIBTOOL\
 $GNU_GNOME\
 $GNU_AUTOMAKE\
 $GNU_AUTOGEN\
 $GNU_AUTOCONF\
 $GNU_MAKE\
"
# $GNU_GCC\

GNU_MANPATH=""
GNU_PATH=""
GNU_INFOPATH=""
GNU_LIBRARY_PATH=""
GNU_INCLUDE_PATH=""

for g in $GNU_LIST;do
    GNU_MANPATH=$g/man:$GNU_MANPATH
    GNU_PATH=$g/bin:$GNU_PATH
    GNU_INFOPATH=$g/info:$GNU_INFOPATH
    GNU_LIBRARY_PATH=$g/lib:$GNU_LIBRARY_PATH
    GNU_INCLUDE_PATH=$g/include:$GNU_INCLUDE_PATH
done;

I then use the GNU_* variables to set the value of my standard environment
variables. It's not perfect, but it is effective. SuSE uses a somewhat
different approach to configuration. I believe what it amounts to is
choosing a different order of traversal over a multiply connected graph.

>
> >>Typically bootstraps are used in the gnu world as a means of
> >>building the gcc compiler, or Emacs which needs to be able to
> >>compile its own Lisp. They are not used after the first build, and
> >>do not become part of the installed package.
> >
> > Bootstrap has a more general meaning.
>
> Indeed it does... from Merriam-Webster:

Yes it can be used to describe the mechanism that sets a multivibrator built
with vacuum tubes into oscillation, or to start a computer by loading
instructions stored in firmware which cause the loading of instructions
stored on a harddrive or other resource, such as a shared network image of a
harddrive. I use the term to describe starting any process that needs some
crucial piece of information about itself. As I pointed out earlier, it's
not wrong to use words with different connotations in different situations,
but it can be confusing. I'm letting you know what was confusing to me when
I read the documentation. That does not necessarily mean the documentation
is at fault.

-- 
Regards,
Steven

Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net