[PATCH] Make symlink-mesa.sh Bourne compatible

Dan Nicholson dbn.lists at gmail.com
Sat Mar 8 10:15:08 PST 2008


Alan, does the patch below make symlink-mesa.sh work with Solaris'
/bin/sh? It's pretty easy to test. Checkout xserver and mesa then cd
to the xserver directory.

$ ./GL/symlink-mesa.sh /path/to/mesa GL/

--
Dan

On Sat, Mar 8, 2008 at 8:56 AM, Dan Nicholson <dbn.lists at gmail.com> wrote:
> Fixed a few problems for the Heirloom Bourne shell[1] which should make
>  symlink-mesa.sh more portable:
>   - No -e operator for simply checking existence. Instead, the test uses
>    the -r operator since we need the files and directories readable.
>   - Quoting of potentially empty arguments to test. [ -z $foo ] when $foo
>    is empty causes a lot of Bourne shells problems. Best to quote it.
>   - Lack of `echo -n'. Copied the feature test from Autoconf to find if
>    the shell respects -n or to otherwise add \c at the end of line.
>   - `VAR=newval command' does not seem to work. Instead, the variable is
>    just changed in the environment prior to the command.
>
>  1. http://heirloom.sourceforge.net/sh.html
>  ---
>   GL/symlink-mesa.sh |   34 +++++++++++++++++++++++-----------
>   1 files changed, 23 insertions(+), 11 deletions(-)
>
>  diff --git a/GL/symlink-mesa.sh b/GL/symlink-mesa.sh
>  index af9adbd..d9e02eb 100755
>  --- a/GL/symlink-mesa.sh
>  +++ b/GL/symlink-mesa.sh
>  @@ -28,7 +28,7 @@ check_destinations () {
>   check_exist() {
>      # Check whether $1 exists
>
>  -    if [ ! -e $1 ] ; then
>  +    if [ ! -r "$1" ] ; then
>         error "$1 not found"
>      fi
>   }
>  @@ -42,7 +42,7 @@ delete_existing() {
>   link_files() {
>      # Link $1 to $2
>
>  -    if [ ! -e $2 ] ; then
>  +    if [ ! -r "$2" ] ; then
>         ln -s $1 $2
>      fi
>   }
>  @@ -252,7 +252,7 @@ symlink_glx() {
>
>   error() {
>         echo
>  -       echo \ \ \ error:\ \ \ $1
>  +       echo "   error:   $1"
>         exit 1
>   }
>
>  @@ -260,7 +260,7 @@ error() {
>   run_module() {
>      # $1 module
>      # $2 explanation
>  -    echo -n $EXPLANATION for $1 module ...\
>  +    echo $ECHO_N "$EXPLANATION for $1 module ... $ECHO_C"
>      symlink_$1
>      echo DONE
>   }
>  @@ -269,8 +269,9 @@ run() {
>      # $1 what to do
>      # $2 explanation
>
>  -    ACTION=$1 EXPLANATION=$2 run_module mesa
>  -    ACTION=$1 EXPLANATION=$2 run_module glx
>  +    ACTION=$1 EXPLANATION=$2
>  +    run_module mesa
>  +    run_module glx
>   }
>
>   src_dir() {
>  @@ -288,7 +289,7 @@ dst_dir() {
>   }
>
>   action() {
>  -    if [ -z $2 ] ; then
>  +    if [ -z "$2" ] ; then
>         $ACTION $REAL_SRC_DIR/$1        $REAL_DST_DIR/$1
>      else
>         $ACTION $REAL_SRC_DIR/$1        $REAL_DST_DIR/$2
>  @@ -303,13 +304,13 @@ usage() {
>
>   # Check commandline args
>   check_args() {
>  -    if [ -z $1 ] ; then
>  +    if [ -z "$1" ] ; then
>         echo Missing source dir
>         usage
>         exit 1
>      fi
>
>  -    if [ -z $2 ] ; then
>  +    if [ -z "$2" ] ; then
>         echo Missing destination dir
>         usage
>         exit 1
>  @@ -337,8 +338,19 @@ check_args() {
>      B=`basename "$relpath"`
>      abspath="`cd \"$D\" 2>/dev/null && pwd || echo \"$D\"`/$B"
>
>  -    SRC_DIR=`( cd $1 ; pwd )`
>  -    DST_DIR=`(cd $2 ; pwd )`
>  +    SRC_DIR=`cd $1 ; pwd`
>  +    DST_DIR=`cd $2 ; pwd`
>   }
>
>  +# echo -n feature test, this is borrowed from Autoconf
>  +ECHO_C= ECHO_N=
>  +case `echo -n x` in
>  +-n*)
>  +  case `echo 'x\c'` in
>  +  *)   ECHO_C='\c';;
>  +  esac;;
>  +*)
>  +  ECHO_N='-n';;
>  +esac
>  +
>   main $1 $2
>  --
>  1.5.3.2
>
>  _______________________________________________
>  xorg mailing list
>  xorg at lists.freedesktop.org
>  http://lists.freedesktop.org/mailman/listinfo/xorg
>



More information about the xorg mailing list