shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: RE: [shell-script] script envia erro e não acho ele!


From: Jorge Robert
Subject: Re: RE: [shell-script] script envia erro e não acho ele!
Date: Wed, 31 Dec 2003 21:58:28 -0200

Caros Rodolfo e Andre

Segui as indicações dos dois !

Nada deu certo. Com um pouco mais de paciente comezei a "depurar" linha a linha.
Se observam o shell, na sua logica, a primeira coisa que ele faz é chamar a 
função abaixo:

init_cecho() {
    X=`echo "Hi\c" ; echo "Hi\c"`
    X1=`echo $X | grep '\\c'`
    if [ ! -z "$X1" ]
    then
        CECHOE=""
        CECHOS="-n "
    else
        CECHOE="\c"
        CECHOS=""
    fi
}

Muito bem, eu coloquei echos "olaN" em cada linha:

init_cecho() {
echo "ola1"
    X=`echo "Hi\c" ; echo "Hi\c"`
    X1=`echo $X | grep '\\c'`
    if [ ! -z "$X1" ]
    then
echo "ola2"
        CECHOE=""
        CECHOS="-n "
    else
echo "ola3"
        CECHOE="\c"
        CECHOS=""
    fi
}

Ao excutar a saida é a seguinte ( antes de dar erro no "do^M"):
ola1

Não mostra nem "ola2" nem "ola3", ou seja, ele não passou nem pelo if nem pelo 
else. Como isto é possíl ?
Também coloquei echos antes da chamada a esta função, não aparecem.
Meu deus ! O que estou fazendo errado !

Obrigado pela ajuda !


----------------
#!/bin/sh

##############################################################################
#                                                                            #
#                             Shell functions                                #
#                        (main script begins below)                          #
##############################################################################

init_cecho() {
    X=`echo "Hi\c" ; echo "Hi\c"`
    X1=`echo $X | grep '\\c'`
    if [ ! -z "$X1" ]
    then
        CECHOE=""
        CECHOS="-n "
    else
        CECHOE="\c"
        CECHOS=""
    fi
}

cecho() {
    echo ${CECHOS}${*}${CECHOE}
}

do_warn() {
    echo
    echo "*** NOTE ***"
    echo $LINE_ONE
    echo $LINE_TWO
    echo "************"
    echo
}

ifx_defaults() {
    FGL_FLAGS="$FGL_FLAGS -I"
    FM_FLAGS="-I"
}

usr_or_group_chk() {
  touch $TESTFILE
  if $1 $2 $TESTFILE 2> /dev/null
  then
    rv=0;
  else
    rv=1;
  fi
  rm -f $TESTFILE
  return $rv;
}

# Check passed list of users for valid username, return the first valid user.
usr_chk() {
  USER_RET=
  for i in $*
  do
    if usr_or_group_chk $CHOWN $i
    then
      USER_RET=$i
      return 0
    fi
  done
  return 1
}

# Check passed list of groups for valid name, return the first valid user.
group_chk() {
  USER_RET=
  for i in $*
  do
    if usr_or_group_chk $CHGRP $i
    then
      USER_RET=$i
      return 0
    fi
  done
  return 1
}

# Search the list of programs provided for a valid program either in the current
# path, or as a full path.
prog_chk() {
  USER_RET=
  cecho "Checking for program: `basename $1` ... "
  
  for j in $*
  do
    if [ -x $j ]
    then
      USER_RET=$j
      echo $USER_RET
      return 0
    fi
    for i in `echo $PATH | sed 's/:/ /g'`
    do
      if [ -x $i/$j ]
      then
        USER_RET=$i/$j
        echo $USER_RET
        return 0
      fi
    done
  done
  echo "Not found"
  return 1
}

file_chk() {
  for i in $*
  do
    USER_RET=$i
    cecho "Checking for file: `basename $i` ... "
    if [ -f $i ]
    then
      echo $i
    else
      echo "Not found"
      return 1
    fi
  done
  return 0
}

env_chk() {
  cecho "Checking for $1 ... "
  X=`eval echo \\$$1`
  if [ -z "$X" ]
  then
    echo " Not found"
    return 1
  else
    echo " $X"
    return 0
  fi
}

dotic() {
    cecho "Compiling the terminal information database.  This may take some 
time ... "
    if [ ! -d lib/terminfo ]
    then
        mkdir lib/terminfo
    fi

    QUERIXDIR=$QXDIR
    TERMINFO=$QXDIR/lib/terminfo
    export QUERIXDIR TERMINFO
    bin/tic etc/terminfo.src 2>/dev/null
    recurse chmod 755 lib/terminfo
    recurse $CHOWN $QUERIXUSR lib/terminfo
    recurse $CHGRP $QUERIXGRP lib/terminfo
    echo " OK"
}

recurse() {
  find $3 -print | xargs $1 $2
}

doroot() {
  XID=`$ID | cut -f2 -d"=" | cut -f1 -d"("`
  cecho "Checking user id ..."
  if [ "$XID" -ne 0 ]
  then
    echo "Please log in as the Superuser to install Querix\n"
    exit 1
  fi
  echo $MESS
}

build_qfgl() {
#  cecho "Building compilation utility $2 ... "
  cecho "Building compilation utility q4gl ..." 
  ( 
  . ./environ
  cd $QXDIR/lib
#  4make $1 $2 >/dev/null 2>&1
  4make q4gl >/dev/null 2>&1
#  mv $2 ../bin
  mv q4gl ../bin
  )
  echo "done"
}
    
dopermissions() {
# setting permissions
# hack until list_of_files is sorted out.
#if [ $NO_SETOWNER -eq 0 ]
DUMB_VAR=0
if [ $DUMB_VAR -eq 1 ]
then
    XMESS=$MESS
    cecho "Setting permissions, owner and group ..."
    while read line
    do
        if [ ! -z "$line" ]
        then
            set $line
            if [ -f $1 ]
            then
                chmod $2 $1 2>/dev/null
                if [ "$?" -ne 0 ]
                then
                    if [ "$XMESS" = "$MESS" ]; then echo; fi
                    echo "WARNING: Cannot change perms to $1, it should be $2\n"
                    XMESS="Could not process all files correctly"
                fi
                $CHOWN $QUERIXUSR $1 2>/dev/null
                if [ "$?" -ne 0 ]
                then
                    if [ "$XMESS" = "$MESS" ]; then echo; fi
                    echo "WARNING: Cannot change owner to $1, it should be 
$QUERIXUSR"
                    XMESS="Could not process all files correctly"
                fi
                $CHGRP $QUERIXGRP $1 2>/dev/null
                if [ "$?" -ne 0 ]
                then
                    if [ "$XMESS" = "$MESS" ]; then echo; fi
                    echo "WARNING: Cannot change group to $1, it should be 
$QUERIXGRP"
                    XMESS="Could not process all files correctly"
                fi
            fi
        fi
    done < list_of_files
    echo "$XMESS"
fi
}

set_default_comp_flags() {
    if [ "$INFORMIXCOMPAT" = "Y" ]
    then
        FGL_FLAGS="-I -Ig"
        FM_FLAGS="-I"
    fi
}

default_driver() {
    # Work out LD_LIBRARY_PATH additions
    if [ ! -z "$DB2DIR" ]
    then
        DEFAULTDRV=db2
        LDLIB_EXT=$LDLIB_EXT:$DB2DIR/lib
    fi
    
    if [ ! -z "$ORACLE_HOME" ]
    then
        DEFAULTDRV=oracle
        LDLIB_EXT=$LDLIB_EXT:$ORALIBDIR
    fi
    
    if [ ! -z "$INFORMIXDIR" ]
    then
      if [ -r lib/${LIB_PREFIX}informix.$SHLIBEXT ]
      then
        DEFAULTDRV=informix
      else
        DEFAULTDRV=informixqx
      fi
      LDLIB_EXT=$LDLIB_EXT:$INFORMIXDIR/lib:$INFORMIXDIR/lib/esql
    fi
}

check_driver() {
    if [ ! -f ${QXDIR}/lib/${LIB_PREFIX}$1.${SHLIBEXT} ]
    then
        echo "No such database driver. "
        return 1
    else
        return 0 
    fi
}

installshlibs() {
(
    cecho "Installing Shared libraries ... "

    if [ -z "$SHAREDLIB" ]
    then
        echo "Not required"
    else
        cd lib
# Portable library copy!
        tar cf - lib*.$SHLIBEXT* | (cd $SHAREDLIB; tar xf -)
        echo "Done"
    fi
)
}

getval() {
    cecho "$1 [${2:-"Cancel"}]: "
    read RETVAL

    if [ -z "$RETVAL" ]
    then
        RETVAL=$2
    fi
}

getyn() {
    LOOPVAL2=0
    while [ $LOOPVAL2 -eq 0 ]
    do
        if [ ! -z "$3" ]
        then
            echo $3
        fi
        getval "$1" "$2"

        case $RETVAL in
        y*|Y*)
            RETVAL=Y
            LOOPVAL2=1
            ;;
        n*|N*)
            RETVAL=N
            LOOPVAL2=1
            ;;
        *)
            LOOPVAL2=0
            ;;
        esac
    done
}

splash_screen() {
    clear
    echo "Welcome to QueriX v4.0 installer"
    echo
    echo "Please read through the next page, and respond to the eula"
    echo "question to proceed with installation"
    echo
    cecho "Press <return> to continue"

    read RETVAL
}

show_eula() {
# warn that the eula is coming...
  clear
  more ${QXDIR}/etc/eula.txt 2>&1
# Fix me: doesn't show full eula (subsequent echo trashes the pipe)

  echo ""
  getyn "Do you accept the terms and conditions of the Eula? (Y/N)" "No"
  case "$RETVAL" in
    n*|N*)
      echo "Installation has terminated at user request"
      exit 1
      ;;
  esac
}

install_listener() {
if [ "$INSTALLLISTENER" = "Y" ]
then
    . $QUERIXDIR/environ
    $QUERIXDIR/bin/install.listener
fi
}

genabstract() {
    ABSTRACT=
    case $1 in 
        ss)
        ABSTRACT="Sql-Server"
        ;;
        db2)
        ABSTRACT="IBM-db2"
        ;;
        informixqx)
        ABSTRACT="Informix Querix v2/3 compatibility"
        ;;
        informix)
        ABSTRACT="Native Informix"
        ;;
        oracle)
        ABSTRACT="Oracle"
        ;;
    esac
}

do_licensing() {
clear
    echo "Step: ${STEP_NO}               PRODUCT LICENSING"
    echo ""
    echo "You may choose to license the QueriX product now, or defer licensing 
until"
    echo "a later stage."
    echo ""
    
    getval "Do you wish to license now (Yes), or defer (No)?" "Defer"

    case $RETVAL in
        N*|n*|D*|d*)
            NO_LICENSE=1
            ;;
        Y*|y*)
            NO_LICENSE=0
            ;;
    esac

    if [ $NO_LICENSE -eq 0 -a -x bin/licensegen ]
    then
        if [ -f ../license.dat ]
        then
            bin/licensegen ../license.dat
        else
            chmod 555 bin/lic_script.sh
            QUERIXDIR=$QXDIR bin/lic_script.sh
        fi
    fi
}
        
choose_db_driver() {
    LOOPVAL=0

    while [ $LOOPVAL -eq 0 ]
    do

        clear
        echo "Step: ${STEP_NO}               SELECT THE DEFAULT DATABASE 
DRIVER" 
        echo ""
        echo "The current default is set as \"${DEFAULTDRV:-"unspecified"}\"."
        echo ""
        
        cecho ${AWK_DATABASES} | ${AWK} 'BEGIN {RS=":"; FS="/"; } { printf("%d) 
%s\n",NR,$1); }'
        echo ""
        echo "C) continue"
        echo
        getval "Enter number to select driver as default" "${DEFAULTDRV}"
        
        case $RETVAL in
        [0-9])
            X=`echo ${RETVAL}:${AVAIL_DRIVERS} | ${AWK} 'BEGIN { RS=":"; 
FS="/"; d_rec=0 } { if(int(NR)==1) { d_rec=$1 } else if(int(NR)==int(d_rec+1)) 
{ print $1 } }'`
            if [ ! -z "${X}" ]
            then
                # check against numeric code
                if check_driver ${X}
                then
                    DEFAULTDRV=${X}
                    LOOPVAL=1
                fi
            fi
            ;;
        C|c)
            LOOPVAL=1
            ;;
        *)
            if check_driver $RETVAL
            then
                DEFAULTDRV=$RETVAL
                LOOPVAL=1
            fi
            # lookup against known drivers
            ;;
        esac

    done
}

get_default_driver() {
    AVAIL_DRIVERS=
    AWK_DATABASES=

    # build list of available drivers:
    for i in `ls $QXDIR/lib/${LIB_PREFIX}*.${SHLIBEXT} | grep -v 
'd\.${SHLIBEXT}'`
    do
      X=`basename ${i} .${SHLIBEXT} | sed 's/moddb//g'`
      if [ ${X} != "default" ]
      then
        ABSTRACT=
        genabstract ${X}
        if [ -z "${ABSTRACT}" ]
        then
            continue
        fi
        AVAIL_DRIVERS="${X}:${AVAIL_DRIVERS:+"${AVAIL_DRIVERS}"}"
        AWK_DATABASES="${ABSTRACT}:${AWK_DATABASES:+"${AWK_DATABASES}"}"
      fi
    done

    choose_db_driver
}

getdir() {
    LOOPVAL2=0
    
    while [ $LOOPVAL2 -eq 0 ]
    do
        getval "$1" "Default"
        LOOPVAL2=0

        if [ -z "$RETVAL" ]
        then
# in-ideal condition, but I'll call this 'drop-out'
            return $FALSE
        fi
        
        if [ $RETVAL = "Default" ]
        then
            RETVAL=
            return $FALSE
        fi

        if [ -d "$RETVAL" ]
        then
            LOOPVAL2=1
        else
            echo "Directory ${RETVAL} doesn't exist"
        fi
    done

    return $TRUE
}

get_shared_lib_dir() {
    clear
    echo "Step: ${STEP_NO}               SHARED LIBRARY LOCATION"
    echo
    echo "Querix v4.x compilers utilise dynamic libraries as runtime 
dependencies"
    echo "for compiled applications. These libraries may be stored in a system"
    echo "directory. If you wish to specify the location in which to install 
these"
    echo "libraries, then please specify the directory here."
    echo ""
    echo "If you are unsure about this option, then it is recommended that you 
continue"
    echo "with the default location"

    echo ""
    echo "The default directory is currently set as:"
    echo "Location: \"${SHAREDLIB:-"${QXDIR}/lib"}\"."
    echo ""

    if getdir "Enter location for shared libraries"
    then
        SHAREDLIB=$RETVAL
    fi
}

get_install_type() {
    if [ "$NO_ROOT" -eq 0 ]
    then
        GUI_YN="Y"
    else
        GUI_YN="N"
    fi
    DEV_YN="Y"
    DOCS_YN="Y"
    LOOPVAL=0

    while [ $LOOPVAL -eq 0 ]
    do
        clear
        echo "Step: ${STEP_NO}               INSTALL TYPE"
        echo ""
        echo "Select the installation type required:"
        echo ""
        echo "1) Development           (installs full compiler)   ${DEV_YN}"
        echo "2) Gui Server                                       ${GUI_YN}"
        echo ""
        echo "*) Product Documentation (always installed)         ${DOCS_YN}"
        echo "*) Runtime components    (always installed)         Y"
        echo ""
        echo "C) Continue installation"
        echo ""

        getval "Enter the code for the required options" "Continue"

        case $RETVAL in
        "1")
            if [ "$DEV_YN" = "Y" ]
            then
                DEV_YN=N
            else
                DEV_YN=Y
            fi
            # dev install on/off
            ;;
        "2")
            if [ "$NO_ROOT" -eq 0 ]
            then
                if [ "$GUI_YN" = "Y" ]
                then
                    GUI_YN=N
                else
                    GUI_YN=Y
                fi
            # GUI server on/off
            fi
            ;;
            
        c*|C*)
            # continue
            LOOPVAL=1
            ;;
        esac
        
        # update installer vars.
    done
    if [ "$GUI_YN" = "Y" ]
    then
        INSTALLLISTENER=Y
    fi
    if [ "$DOCS_YN" = "Y" ]
    then
        INSTALLDOCS=Y
    fi
    if [ "$DEV_YN" = "Y" ]
    then
        # dev/runtime
        RUNTIME=0
    else
        RUNTIME=1
    fi
}

usr_group_ok() {
    if [ -z "$QUERIXGRP" ]
    then
        return $TRUE
    fi
    if [ -z "$QUERIXUSR" ]
    then
        return $TRUE
    fi

    return $FALSE
}

environ_prompt() {
    if [ $NO_ROOT -eq 0 ]
    then
        clear

        echo "Key environment settings have been written to the file:"
        echo "${QXDIR}/environ"
        echo ""
        echo "The installer can now include this script in your system profile"
        echo ""
        
        getyn "Would you like to add these settings to the system profile?" "No"
        
# this is wrong. Some systems will not note any 'path' settings in the 
# system profile. Fix me.

        if [ "$RETVAL" = "Y" ]
        then
            echo ". ${QXDIR}/environ" >> /etc/profile
        fi
    fi
}

get_user() {
if [ $NO_USER -eq 0 ]
then
    if [ $NO_SETOWNER -eq 0 ]
    then
        LOOPVAL=0

        while [ $LOOPVAL -eq 0 ]
        do
            if usr_chk $QUERIXUSR querix informix oracle
            then
                QUERIXUSR=$USER_RET
            else
                QUERIXUSR=
            fi
        
            if group_chk $QUERIXGRP querix informix oracle
            then
                QUERIXGRP=$USER_RET
            else
                QUERIXGRP=
            fi


            clear
            echo "Step: ${STEP_NO}                  Software Owner/Group"
            echo ""
            echo "The Querix Hydra compiler requires a user/group as an owner 
of the product."
            echo "The user/group is currently set as:"
            echo ""
            echo "1) Change User:   ${QUERIXUSR:-unset}"
            echo "2) Change Group:  ${QUERIXGRP:-unset}"
            echo ""

            if usr_group_ok 
            then
                echo "C) Continue"
                DEFAULT="Continue"
            else
                DEFAULT=${QUERIXUSR:-1}
                if [ "$DEFAULT" != "1" ]
                then
                    DEFAULT="2"
                fi
            fi
            echo ""
            
            getval "Select option" "$DEFAULT"

            case "$RETVAL" in       
                1)
                    getval "Please enter new user" "${QUERIXUSR:-none}"
                    QUERIXUSR=$RETVAL
                    ;;
                2)
                    getval "Please enter new group" "${QUERIXGRP:-none}"
                    QUERIXGRP=$RETVAL
                    ;;
                C*|c*)
                    if usr_group_ok
                    then
                        LOOPVAL=1
                    fi
                    ;;
            esac
        done
    fi
fi
}
    
show_settings() {
    clear
    echo "Step: ${STEP_NO}               CONFIRM INSTALLATION"
    echo ""
    echo "You have chosen to install with the following settings:"
    echo ""
    echo "Default database driver: ${DEFAULTDRV}"
    echo "Shared lib directory:    ${SHAREDLIB:-"${QXDIR}/lib"}"
    echo "Install GUI listener:    ${GUI_YN}"
    echo "Install Documentation:   ${DOCS_YN}"
    echo ""
    if [ $DEV_YN = "Y" ]
    then
        INSTALL_TYPE="Development"
    else
        INSTALL_TYPE="Runtime"
    fi
    echo "Install type:            ${INSTALL_TYPE}"
    echo ""
    echo "You can abort installation now by pressing 'A' <return>"

    getval "Proceed with installation? (Y/A)" "Continue"
    
    case $RETVAL in
        a*|A*|n*|N*)
            echo "Terminating installation"
            exit 0
            ;;
    esac
}

end_screen() {
    clear
    echo "Step: ${STEP_NO}               INSTALLATION COMPLETE"
    echo ""
    echo "The QueriX product has been installed successfully."
}

TESTFILE=/tmp/qxinst.$$
USER_RET=
MESS=" OK"
NO_LICENSE=0
NO_ROOT=0
NO_USER=0
NO_SETOWNER=0
NO_TIC=0
NO_ENVIRON=0
ONLINE=0
ORACLE_SHARED=1
ORA_LIBDIR=lib
SHARED=0
RUNTIME=0
SHLIBEXT=so
FGL_FLAGS=
FM_FLAGS=
UNAME_FLG=-a
DEFAULTDRV=
SHAREDLIB=
LDLIB_EXT=
INFORMIXCOMPAT=Y
INSTALLDOCS=Y
INSTALLLISTENER=N
TESTCONN=N
USE_NCURSES=
ID=id
CHOWN=chown
CHGRP=chgrp
DYNAMIC_FLAG=
LIBLTDL_FLAG=


# Initialize cecho command
init_cecho

if prog_chk $AWK gawk nawk awk
then
  AWK=$USER_RET
else
  echo "I can't locate the program AWK on your system.  This standard system 
utility"
  echo "is used by a number of standard QueriX programs.  If AWK is installed 
on"
  echo "an unusual place on your system define the environment variable AWK to"
  echo "point to it: "
  echo "AWK=<path-to-awk-program> $0"
  exit 1
fi

# Work out the platform

SHLIBVAR=LD_LIBRARY_PATH
LIB_PREFIX=moddb
ORALIBDIR=$ORACLE_HOME/lib

## LIBPATHEXTRA should contan system dependant path location where essensial 
shared lib are located
case `uname -s` in
    *AIX*)
        BUILD_TYPE=build
        SHLIBEXT=so
        SHLIBVAR=LIBPATH
        LIBPATHEXTRA=/usr/lib:/usr/local/lib
        if [ -d $ORACLE_HOME/lib32 ]
        then
          ORALIBDIR=$ORACLE_HOME/lib32
        fi
        ;;
    *SunOS*) # s64/s86/sun
        BUILD_TYPE=build
        USE_NCURSES=1
        X=`grep S64LIBS lib/Makedef`
        if [ ! -z "${X}" ]
        then
            SHLIBEXT=a
        else
          if [ -d $ORACLE_HOME/lib32 ]
          then
            ORALIBDIR=$ORACLE_HOME/lib32
          fi
        fi
        ;;
    *Linux*)
        BUILD_TYPE=build
        ;;
    *HP-UX*)
        USE_NCURSES=1
        BUILD_TYPE=build
        SHLIBEXT=sl
        SHLIBVAR=SHLIB_PATH
        if [ -d $ORACLE_HOME/lib32 ]
        then
          ORALIBDIR=$ORACLE_HOME/lib32
        fi
        ;;
    *OSF1*) # DEC Alpha
        USE_NCURSES=1
        BUILD_TYPE=build
        ;;
    *IRIX*)
        BUILD_TYPE=build_static
        ;;
    *dgux*)
        BUILD_TYPE=build_static
        ;;
    *UNIX_SV*) # NCR
        BUILD_TYPE=build_static
        ;;
    *SCO_SV*) # OpenServer
        DYNAMIC_FLAG=-Bdynamic
        ID=/usr/bin/id
        CHGRP=/bin/chgrp
        CHOWN=/bin/chown
        USE_NCURSES=1
        BUILD_TYPE=build_static
        UNAME_FLG=-X
        ;;
    *UnixWare*)
        if [ -z "$QXMAKE" ]
        then
          QXMAKE=$QUERIXDIR/bin/gmake
        fi
        BUILD_TYPE=build_static
        SHLIBEXT=so
        LIBLTDL_FLAG=-lltdl
        USE_NCURSES=1
        ;;
    *) # unknown - default
        BUILD_TYPE=build
        ;;
esac

# Get default driver this may be overriden by input args
default_driver

# Process the input args
#
set_db=0

for i in $*
do
  if [ $set_db -eq 1 ]
  then
    if check_driver $DEFAULTDRV
    then
        DEFAULTDRV=$i
    fi
    set_db=0
  else
  case $i in
    --default-driver | -dd)
        set_db=1;
        ;;
    --no-user | -nu)
        NO_USER=1
        ;;
    --no-root | -nr)
        NO_ROOT=1
        ;;
    --no-license | -nl)
        NO_LICENSE=1
        ;;
    --relink | -relink)
        NO_ROOT=1
        NO_USER=1
        NO_LICENSE=1
        NO_SETOWNER=1
        NO_TIC=1
        NO_ENVIRON=1
        ;;
    --no-setowner | -no)
        NO_SETOWNER=1
        ;;
    --no-tic | --nt)
        NO_TIC=1;
        ;;
    --no-environ | -ne)
        NO_ENVIRON=1
        ;;
    --oracle_shared | -os)
        ORACLE_SHARED=2
        ;;
    --no_oracle_shared | -nos)
        ORACLE_SHARED=0
        ;;
    --shared | -s)
        SHARED=1
        ;;
    --runtime | -rt)
        RUNTIME=1
        NO_LICENSE=1
        ;;
    *=*)
        echo $i | $AWK -F= '{printf "%s set to %s\n",$1,$2}'
        eval `echo $i | $AWK -F= '{printf "export %s",$1}'`
        ;;
  esac
  fi
done

# Work out the full path to this distribution and CD to it.
if echo $0 | grep '^/' > /dev/null
then
  QXDIR=`dirname $0`
else
  QXDIR=`pwd`/`dirname $0`
fi
cd $QXDIR

# check root id
if [ $NO_ROOT -eq 0 ]
then
    doroot
fi

if [ $NO_ROOT -eq 1 ]
then
  A=`id | sed 's/[^(]*(\([^)]*\))[^(]*(\([^)]*\)).*/\1 \2/'`
  if [ -z "$QUERIXUSR" ]
  then
    QUERIXUSR=`echo $A | awk '{print $1}'`
  fi
  if [ -z "$QUERIXGRP" ]
  then
    QUERIXGRP=`echo $A | awk '{print $2}'`
  fi

  export QUERIXUSR QUERIXGRP
fi


check_compiler() {
    if [ $NO_ENVIRON -eq 0 ]
    then
        if prog_chk $CC "cc" "gcc" "c89"
        then
            QXCC=$USER_RET
        else
            LINE_ONE="The install script cannot find a 'C' compiler anywhere in 
your PATH."
            LINE_TWO="A 'C' compiler is required to work with the QueriX 
product."  

            do_warn

            LOOP_VAL=0
            QXCC=/usr/bin/cc
        
            while [ $LOOP_VAL -eq 0 ]
            do
                cecho "Please enter the location of your C compiler[exit]:"
                read QXCC
                if [ -z "$QXCC" ] 
                then
                    exit 1
                fi
                if prog_chk $QXCC
                then
                    LOOP_VAL=1
                else
                    LOOP_VAL=0 
                fi
            done
        fi
    fi

    if [ $NO_ENVIRON -eq 0 ] 
    then
        if prog_chk $MAKE "gmake" "make"
        then
            QXMAKE=$USER_RET
        else
            LINE_ONE="The install script cannot find a make program anywhere in 
your PATH."
            LINE_TWO="A make program is required to work with the QueriX 
product."  

            do_warn
        fi
    fi
}

do_install() {
    if [ "$RUNTIME" -eq 0 ]
    then        
        check_compiler
    fi

    (cd lib; 
            rm -f ${LIB_PREFIX}default.$SHLIBEXT
            rm -f ${LIB_PREFIX}defaultd.$SHLIBEXT
        ln -sf ${LIB_PREFIX}${DEFAULTDRV}.${SHLIBEXT} 
${LIB_PREFIX}default.$SHLIBEXT
        ln -sf ${LIB_PREFIX}${DEFAULTDRV}d.${SHLIBEXT} 
${LIB_PREFIX}defaultd.$SHLIBEXT
    )

    installshlibs

    if [ $NO_ENVIRON -eq 0 ]
    then
        cecho "Updating the Environment Script... "
        
        set_default_comp_flags

# Update the environ script
        exports="QUERIXDIR PATH MSGPATH QXCC QXAWK QXMAKE ${SHLIBVAR} FMFLAGS 
FGLFLAGS"
        echo QUERIXDIR=$QXDIR > environ.tmp
        echo PATH=\$PATH:\$QUERIXDIR/bin >> environ.tmp
        echo MSGPATH=\$QUERIXDIR/msg >> environ.tmp
        echo QXCC=$QXCC >> environ.tmp
        echo QXAWK=$AWK >> environ.tmp
        echo QXMAKE=$QXMAKE >> environ.tmp
        if [ ! -z "$SQLENGINE" ]
        then
            echo SQLEXEC=$SQLENGINE >> environ.tmp
            echo SQLENGINE=\$SQLEXEC >> environ.tmp
            exports="$exports SQLEXEC SQLENGINE"
        fi
        echo FGLFLAGS=\"$FGL_FLAGS\" >> environ.tmp
        echo FMFLAGS=\"$FM_FLAGS\" >> environ.tmp
        echo ${SHLIBVAR}="\$${SHLIBVAR}:\$QUERIXDIR/lib$LDLIB_EXT" >> 
environ.tmp
        echo ${SHLIBVAR}="\$${SHLIBVAR}:$LIBPATHEXTRA" >> environ.tmp   
        echo export $exports >> environ.tmp
        mv -f environ.tmp environ

    # Create cenviron from environ
        $AWK '{ if(split($0,a,"=")==2) { if(a[1]=="PATH") { split(a[2],b,":")
    ; printf "set path=($path %s)\n",b[2]; } else printf "setenv %s 
%s\n",a[1],a[2]; }} ' environ > cenviron

        echo $MESS

        clear
    fi

    build_qfgl

#Create shell script to run QxDev2
    devexports="QUERIXDIR PATH LD_LIBRARY_PATH"
    echo #!/bin/sh > qxdev2.tmp
    echo "QUERIXDIR=$QXDIR" >> qxdev2.tmp
    echo "DISPLAY=\${DISPLAY:-\`uname -n\`:0} ; export DISPLAY" >> qxdev2.tmp
    echo "PATH=\$PATH:\$QUERIXDIR/bin:\$QUERIXDIR/dstudio" >> qxdev2.tmp
    echo 
"${SHLIBVAR}=\"\$${SHLIBVAR}:\$QUERIXDIR/dstudio:\$QUERIXDIR/lib$LDLIB_EXT:/usr/local/lib:/usr/lib\""
 >> qxdev2.tmp
    if [ ! -z "$ORACLE_HOME" ]
    then    
        echo ORACLE_HOME="$ORACLE_HOME" >> qxdev2.tmp
        devexports="$devexports ORACLE_HOME"
    fi
    if [ ! -z "$DB2DIR" ]
    then
        echo DB2DIR="$DB2DIR" >> qxdev2.tmp
        devexports="$devexports DB2DIR"
    fi    
    if [ ! -z "$INFORMIXDIR" ]
    then    
        echo INFORMIXDIR="$INFORMIXDIR" >> qxdev2.tmp
        devexports="$devexports INFORMIXDIR"
    fi    
    echo export $devexports >> qxdev2.tmp
    echo "$QXDIR/dstudio/qxdev2 &" >> qxdev2.tmp
    chmod 755 qxdev2.tmp
    mv qxdev2.tmp $QXDIR/bin/dstudio

# set dynamic markers in .env files
  ( cd dstudio
    for i in *.base 
    do 
      echo "QUERIXDIR=${QXDIR}" > `basename $i .base`.env
      cat $i >> `basename $i .base`.env
    done
    cd ..
  )

#Create the unix.env file for QxDev2
#    echo QUERIXDIR=$QXDIR > unixenv.tmp
#    echo "MSGC=\"\$(QUERIXDIR)/bin/msgc\"" >> unixenv.tmp
#    echo "FGLC=\"\$(QUERIXDIR)/bin/fglc\"" >> unixenv.tmp
#    echo "FMPC=\"\$(QUERIXDIR)/bin/fmpc\"" >> unixenv.tmp
#    echo "CC=cc" >> unixenv.tmp
#    echo "LD=ld" >> unixenv.tmp
#    echo "DFLAG=-D" >> unixenv.tmp
#    echo "INCLUDES=-I\"\$(QUERIXDIR)/incl\"" >> unixenv.tmp
#    echo "CFLAGS=${DYNAMIC_FLAG} -DUSE_STMT_CACHE -DBINDQUANTUM=128 -DCOMPRESS 
-DRUNTIMELIC -O \$(INCLUDES)" >> unixenv.tmp
#    echo "BASE_LIBS=\$(LINK_OPTS)" >> unixenv.tmp
#    echo "FGL_LIBS=\"-L\$(QUERIXDIR)/lib\" \"-lfgl\"" >> unixenv.tmp
#    echo "DEBUG_FGL_LIBS=\"-L\$(QUERIXDIR)/lib\" \"-lfgld\"" >> unixenv.tmp
#    echo "SQL_LIB=\"-L\$(QUERIXDIR)/lib\" \"-lsqlc\"" >> unixenv.tmp
#    echo "DEBUG_SQL_LIB=\"-L\$(QUERIXDIR)/lib\" \"-lsqlcd\"" >> unixenv.tmp
#    echo "QX_LIBS=${DYNAMIC_FLAG} \$(FGL_LIBS) \$(SQL_LIB) ${LIBLTDL_FLAG} "  
>> unixenv.tmp
#    echo "QX_LIBS_DEBUG=${DYNAMIC_FLAG} \$(DEBUG_FGL_LIBS) \$(DEBUG_SQL_LIB) 
${LIBLTDL_FLAG} " >> unixenv.tmp
#    mv unixenv.tmp $QXDIR/dstudio/unix.env

#Create the demo qx2/df2 files...
DEMODIR=${QXDIR}/demo/football
    cat > ${DEMODIR}/football.qx2 <<EOF
Project Name:Simple Demo
Project Dir:${DEMODIR}
Editor:
Fglc Options:
Fmpc Options:
Link Options:
Oracle Dir:
Querix Dir:${QXDIR}
NAME:demo.df2
EOF

    cat > ${DEMODIR}/demo.df2 <<EOF
TARGET="demo"
SOURCES="globals.4gl" "main.4gl" "team.4gl" "cfuncs.c"
FORMS="table_form.per" "f_fixtures.per"
EOF

DEMODIR=${QXDIR}/demo/login
    cat > ${DEMODIR}/login.qx2 <<EOF
Project Name:Simple Login Demo
Project Dir:${DEMODIR}
Editor:
Fglc Options:
Fmpc Options:
Link Options:
Oracle Dir:
Querix Dir:${QXDIR}
NAME:login.df2
EOF

    cat > ${DEMODIR}/login.df2 <<EOF
TARGET="login"
SOURCES="login.4gl" "login1.c"
FORMS="login.per"
EOF

    # Terminfo
    if [ ! -z "$USE_NCURSES" ]
    then
        dotic
    fi

    dopermissions

    RESPONSE=N
    echo

    QUERIXDIR=$QXDIR
    export QUERIXDIR

    if [ "$TESTCONN" = "Y" ]
    then
        . $QUERIXDIR/environ
        $QUERIXDIR/bin/testdb.sh
    fi

    echo "You can test database connectivity at a later stage, by running the 
script: "
    echo "$QUERIXDIR/bin/testdb.sh"
}



#evaluate install type...
#oh - we are in $QXDIR
IFX_INSTALL=0
ORA_INSTALL=0

#if [ -r lib/libsqli.a ]
#then
#    IFX_INSTALL=1
#fi
#if [ -r lib/libsqlo.a ]
#then
#    ORA_INSTALL=1
#fi

LOOPVAL=0
INSTALLLISTENER=Y

splash_screen
show_eula
STEP_NO=2
get_user
STEP_NO=3
get_shared_lib_dir
STEP_NO=4
get_default_driver
STEP_NO=5
get_install_type
STEP_NO=6
show_settings
STEP_NO=7
do_install
STEP_NO=8
environ_prompt
STEP_NO=9

if [ "$INSTALLLISTENER" = "Y" ]
then
    install_listener
    STEP_NO=10
fi

do_licensing
STEP_NO=11
end_screen

exit 0



Atenciosamente

Jorge Robert
 
____________________________________________________________
Obtenha seu Serviço de Correio eletrônico Baseado na  Web Service em 
http://www.zzn.com


reply via email to

[Prev in Thread] Current Thread [Next in Thread]