Use conventional names for installation directories: - DESTDIR instead of BUILD_ROOT - PREFIX instead of SBCL_PREFIX and INSTALL_ROOT --- INSTALL.orig 2011-12-06 11:17:02.000000000 +0000 +++ INSTALL @@ -27,16 +27,16 @@ INSTALLING SBCL The following command installs SBCL and related documentation under the "/usr/local" directory (typically run as root): - # INSTALL_ROOT=/usr/local sh install.sh + # PREFIX=/usr/local sh install.sh You can also install SBCL as a user, under your home directory: - $ INSTALL_ROOT=/home/me sh install.sh + $ PREFIX=/home/me sh install.sh In other words, "install.sh" installs SBCL under the directory named - by the environment variable INSTALL_ROOT. + by the environment variable PREFIX. - If INSTALL_ROOT is not specified, SBCL is installed into location + If PREFIX is not specified, SBCL is installed into location configured at build-time: for official binary distributions under "/usr/local" directory. @@ -59,7 +59,7 @@ INSTALLING SBCL $ export SBCL_HOME=/foo/bar/lib/sbcl $ sbcl - If your "INSTALL_ROOT" was FOO, then your "SBCL_HOME" is + If your "PREFIX" was FOO, then your "SBCL_HOME" is "FOO/lib/sbcl". 3. By command line option: $NetBSD$ --- install.sh.orig 2011-12-06 11:17:02.000000000 +0000 +++ install.sh @@ -11,7 +11,8 @@ ensure_dirs () } . output/prefix.def -DEFAULT_INSTALL_ROOT=$SBCL_PREFIX + +PREFIX=${PREFIX-"${SBCL_PREFIX}"} if [ "$OSTYPE" = "cygwin" -o "$OSTYPE" = "msys" ] ; then RUNTIME=sbcl.exe @@ -20,16 +21,15 @@ else RUNTIME=sbcl OLD_RUNTIME=sbcl.old fi -INSTALL_ROOT=${INSTALL_ROOT-$DEFAULT_INSTALL_ROOT} -MAN_DIR=${MAN_DIR-"$INSTALL_ROOT"/share/man} -INFO_DIR=${INFO_DIR-"$INSTALL_ROOT"/share/info} -DOC_DIR=${DOC_DIR-"$INSTALL_ROOT"/share/doc/sbcl} +MAN_DIR=${MAN_DIR-"${PREFIX}"/share/man} +INFO_DIR=${INFO_DIR-"${PREFIX}"/share/info} +DOC_DIR=${DOC_DIR-"${PREFIX}"/share/doc/sbcl} # Does the environment look sane? -if [ -n "$SBCL_HOME" -a "$INSTALL_ROOT/lib/sbcl" != "$SBCL_HOME" ];then - echo SBCL_HOME environment variable is set, and conflicts with INSTALL_ROOT. +if [ -n "$SBCL_HOME" -a "${PREFIX}/lib/sbcl" != "$SBCL_HOME" ];then + echo SBCL_HOME environment variable is set, and conflicts with PREFIX. echo Aborting installation. Unset one or reset the other, then try again - echo INSTALL_ROOT="$INSTALL_ROOT" + echo PREFIX="${PREFIX}" echo SBCL_HOME="$SBCL_HOME" exit 1 fi @@ -47,26 +47,26 @@ else exit 1 fi -SBCL_HOME="$INSTALL_ROOT"/lib/sbcl -export SBCL_HOME INSTALL_ROOT -ensure_dirs "$BUILD_ROOT$INSTALL_ROOT" "$BUILD_ROOT$INSTALL_ROOT"/bin \ - "$BUILD_ROOT$INSTALL_ROOT"/lib \ - "$BUILD_ROOT$MAN_DIR" "$BUILD_ROOT$MAN_DIR"/man1 \ - "$BUILD_ROOT$INFO_DIR" "$BUILD_ROOT$DOC_DIR" \ - "$BUILD_ROOT$DOC_DIR"/html \ - "$BUILD_ROOT$SBCL_HOME" \ - "$BUILD_ROOT$SBCL_HOME"/site-systems +SBCL_HOME="${PREFIX}"/lib/sbcl +export SBCL_HOME PREFIX +ensure_dirs "${DESTDIR}${PREFIX}" "${DESTDIR}${PREFIX}"/bin \ + "${DESTDIR}${PREFIX}"/lib \ + "${DESTDIR}$MAN_DIR" "${DESTDIR}$MAN_DIR"/man1 \ + "${DESTDIR}$INFO_DIR" "${DESTDIR}$DOC_DIR" \ + "${DESTDIR}$DOC_DIR"/html \ + "${DESTDIR}$SBCL_HOME" \ + "${DESTDIR}$SBCL_HOME"/site-systems # move old versions out of the way. Safer than copying: don't want to # break any running instances that have these files mapped -test -f "$BUILD_ROOT$INSTALL_ROOT"/bin/$RUNTIME && \ - mv "$BUILD_ROOT$INSTALL_ROOT"/bin/$RUNTIME \ - "$BUILD_ROOT$INSTALL_ROOT"/bin/$OLD_RUNTIME -test -f "$BUILD_ROOT$SBCL_HOME"/sbcl.core && \ - mv "$BUILD_ROOT$SBCL_HOME"/sbcl.core "$BUILD_ROOT$SBCL_HOME"/sbcl.core.old +test -f "${DESTDIR}${PREFIX}"/bin/$RUNTIME && \ + mv "${DESTDIR}${PREFIX}"/bin/$RUNTIME \ + "${DESTDIR}${PREFIX}"/bin/$OLD_RUNTIME +test -f "${DESTDIR}$SBCL_HOME"/sbcl.core && \ + mv "${DESTDIR}$SBCL_HOME"/sbcl.core "${DESTDIR}$SBCL_HOME"/sbcl.core.old -cp src/runtime/$RUNTIME "$BUILD_ROOT$INSTALL_ROOT"/bin/ -cp output/sbcl.core "$BUILD_ROOT$SBCL_HOME"/sbcl.core +cp src/runtime/$RUNTIME "${DESTDIR}${PREFIX}"/bin/ +cp output/sbcl.core "${DESTDIR}$SBCL_HOME"/sbcl.core # installing contrib @@ -84,13 +84,13 @@ for i in contrib/*; do test -d $i && test -f $i/test-passed || continue; INSTALL_DIR="$SBCL_HOME"/`basename $i ` export INSTALL_DIR - ensure_dirs "$BUILD_ROOT$INSTALL_DIR" && $GNUMAKE -C $i install + ensure_dirs "${DESTDIR}$INSTALL_DIR" && $GNUMAKE -C $i install done echo echo "SBCL has been installed:" -echo " binary $BUILD_ROOT$INSTALL_ROOT/bin/$RUNTIME" -echo " core and contribs in $BUILD_ROOT$INSTALL_ROOT/lib/sbcl/" +echo " binary ${DESTDIR}${PREFIX}/bin/$RUNTIME" +echo " core and contribs in ${DESTDIR}${PREFIX}/lib/sbcl/" # Installing manual & misc bits of documentation # @@ -106,46 +106,46 @@ echo echo "Documentation:" # man -cp doc/sbcl.1 "$BUILD_ROOT$MAN_DIR"/man1/ && echo " man $BUILD_ROOT$MAN_DIR/man1/sbcl.1" +cp doc/sbcl.1 "${DESTDIR}$MAN_DIR"/man1/ && echo " man ${DESTDIR}$MAN_DIR/man1/sbcl.1" # info for info in doc/manual/*.info do - cp $info "$BUILD_ROOT$INFO_DIR"/ \ + cp $info "${DESTDIR}$INFO_DIR"/ \ && BN=`basename $info` \ - && DIRFAIL=`install-info --info-dir="$BUILD_ROOT$INFO_DIR" \ - "$BUILD_ROOT$INFO_DIR"/$BN > /dev/null 2>&1 \ + && DIRFAIL=`install-info --info-dir="${DESTDIR}$INFO_DIR" \ + "${DESTDIR}$INFO_DIR"/$BN > /dev/null 2>&1 \ || echo "(could not add to system catalog)"` \ - && echo " info $BUILD_ROOT$INFO_DIR/`basename $info` [$BUILD_ROOT$INFO_DIR/dir] $DIRFAIL" + && echo " info ${DESTDIR}$INFO_DIR/`basename $info` [${DESTDIR}$INFO_DIR/dir] $DIRFAIL" done for info in doc/manual/*.info-* do - cp $info "$BUILD_ROOT$INFO_DIR"/ \ - && echo " info $BUILD_ROOT$INFO_DIR/`basename $info`" + cp $info "${DESTDIR}$INFO_DIR"/ \ + && echo " info ${DESTDIR}$INFO_DIR/`basename $info`" done # pdf for pdf in doc/manual/*.pdf do - cp $pdf "$BUILD_ROOT$DOC_DIR"/ \ - && echo " pdf $BUILD_ROOT$DOC_DIR/`basename $pdf`" + cp $pdf "${DESTDIR}$DOC_DIR"/ \ + && echo " pdf ${DESTDIR}$DOC_DIR/`basename $pdf`" done # html for html in doc/manual/sbcl doc/manual/asdf do - test -d $html && cp -R -L $html "$BUILD_ROOT$DOC_DIR"/html \ - && echo " html $BUILD_ROOT$DOC_DIR/html/`basename $html`/index.html" + test -d $html && cp -R -L $html "${DESTDIR}$DOC_DIR"/html \ + && echo " html ${DESTDIR}$DOC_DIR/html/`basename $html`/index.html" done for html in doc/manual/sbcl.html doc/manual/asdf.html do - cp $html "$BUILD_ROOT$DOC_DIR"/ \ - && echo " html $BUILD_ROOT$DOC_DIR/`basename $html`" + cp $html "${DESTDIR}$DOC_DIR"/ \ + && echo " html ${DESTDIR}$DOC_DIR/`basename $html`" done for f in BUGS CREDITS COPYING NEWS do - cp $f "$BUILD_ROOT$DOC_DIR"/ + cp $f "${DESTDIR}$DOC_DIR"/ done $NetBSD$ --- contrib/asdf-module.mk.orig 2011-12-06 13:56:29.000000000 +0000 +++ contrib/asdf-module.mk @@ -37,5 +37,5 @@ test: all # KLUDGE: There seems to be no portable way to tell tar to not to # preserve owner, so chown after installing for the current user. install: $(EXTRA_INSTALL_TARGETS) - tar cf - . | ( cd "$(BUILD_ROOT)$(INSTALL_DIR)" && tar xpvf - ) - find "$(BUILD_ROOT)$(INSTALL_DIR)" -exec chown `id -u`:`id -g` {} \; + tar cf - . | ( cd "$(DESTDIR)$(INSTALL_DIR)" && tar xpvf - ) + find "$(DESTDIR)$(INSTALL_DIR)" -exec chown `id -u`:`id -g` {} \; $NetBSD$ --- contrib/vanilla-module.mk.orig 2011-12-06 11:17:02.000000000 +0000 +++ contrib/vanilla-module.mk @@ -5,4 +5,4 @@ $(MODULE).fasl: $(MODULE).lisp ../../out test:: $(MODULE).fasl install: - cp $(MODULE).fasl "$(BUILD_ROOT)$(INSTALL_DIR)" + cp $(MODULE).fasl "$(DESTDIR)$(INSTALL_DIR)" $NetBSD$ --- contrib/STANDARDS.orig 2011-12-06 11:17:02.000000000 +0000 +++ contrib/STANDARDS @@ -49,7 +49,7 @@ A contrib package must contain a Makefil all: # do whatever compilation is necessary test: # run the package tests -install: # copy all necessary files into $(BUILD_ROOT)$(INSTALL_DIR) +install: # copy all necessary files into $(DESTDIR)$(INSTALL_DIR) If the contrib package involves more than one file, you are encouraged to use ASDF to build it and load it. A version of asdf is bundled as @@ -58,7 +58,7 @@ files - your install target should creat to the installed location of the system file. Look in sb-bsd-sockets/Makefile for an example of an asdf-using contrib. -$(BUILD_ROOT)$(INSTALL_DIR) will have been created by the system +$(DESTDIR)$(INSTALL_DIR) will have been created by the system before your install target is called. You do not need to make it yourself.