removido
(usa Nenhuma)
Enviado em 19/08/2010 - 21:57h
a muito tempo fiz um script que gera pacote do slackware a partir do fonte, mas estou com uns problemas
antes de tudo aki está o meu script
=======================================
#!/bin/bash
PWD=`pwd`
ARCH=`arch`
DGFBASETMP=/var/DGF/TMP
DGFBASE=/var/DGF/PKG
if [ -z $DGFBASE ]; then
mkdir $DGFBASE
fi
if [ -z $DGFBASETMP ]; then
mkdir $DGFBASETMP
fi
if [ "$ARCH" = "x86_64" ]; then
if [ -d /usr/lib64 ]; then
LIB=/usr/lib64
else
LIB=/usr/lib
fi
else
LIB=/usr/lib
fi
#########################################
# Inicio das Fun��es
#########################################
AVISO() {
echo -e "\e[1;01m############################################################\e[0m"
echo -e "\e[1;01m$1\e[0m"
echo -e "\e[1;01m############################################################\e[0m"
}
ERRO() {
echo "[ERRO!] O script foi interrompido no processo: $1"
exit 1
}
CONFIGURE() {
CONFIGURE2() {
if [ -e ./configure ]; then
./configure --help || ./configure -help
COMANDO="./configure --prefix=/usr --bindir=/usr/bin --sbindir=/usr/sbin --sysconfdir=/etc --libdir=$LIB "
echo -n "Acrescente os parametros que desejar: $COMANDO" ; read PARAMETROS
COMANDO="./configure --prefix=/usr --bindir=/usr/bin --sbindir=/usr/sbin --sysconfdir=/etc --libdir=$LIB $PARAMETROS" &&
AVISO "$COMANDO" &&
./configure --prefix=/usr --bindir=/usr/bin --sbindir=/usr/sbin --sysconfdir=/etc --libdir=$LIB $PARAMETROS ||
COMANDO="./configure --prefix=/usr --libdir=$LIB $PARAMETROS" &&
AVISO "$COMANDO" &&
./configure --prefix=/usr --libdir=$LIB ||
COMANDO="./configure --prefix=/usr" &&
AVISO "$COMANDO" &&
./configure --prefix=/usr || ERRO "$COMANDO"
fi
}
if [ -e $DGFBASETMP/$DIRETORIO/configure ]; then
cd $DGFBASETMP/$DIRETORIO
CONFIGURE2
elif [ -e $DGFBASETMP/$DIRETORIO/src/configure ]; then
cd $DGFBASETMP/$DIRETORIO/src
CONFIGURE2
fi
}
MAKE() {
MAKE2() {
echo -n "Acrescente os parametros que desejar no make: " ; read PARAMETROS_MAKE
COMANDO="make $PARAMETROS_MAKE"
AVISO "$COMANDO"
make $PARAMETROS_MAKE || ERRO $COMANDO
}
if [ -e $DIR/$DIRETORIO/Makefile ]; then
MAKE2
elif [ -e $DIR/$DIRETORIO/src/Makefile ]; then
cd $DIR/src
MAKE2
fi
}
MAKE_INSTALL() {
MAKE_INSTALL2() {
PARAMETRO_MAKE_INSTALL="INSTALL_TOP=$1 PREFIX=$1 DESTDIR=$1 INSTALL_ROOT=$1 PREFIX_ROOT=$1"
COMANDO="make install $PARAMETRO_MAKE_INSTALL"
AVISO "$COMANDO"
make install ""$PARAMETRO_MAKE_INSTALL"" || ERRO "$COMANDO"
}
cd $DGFBASETMP/$DIRETORIO
DIR2=`echo $DIRETORIO`-TMP
mkdir $DGFBASETMP/$DIR2
MAKE_INSTALL2 "$DGFBASETMP/$DIR2"
}
MAKEPKG(){
cd $DGFBASETMP/$DIR2
NUM=1
NOME_PKG=$DIRETORIO-$ARCH-$NUM.tgz
while [ -e $DGFBASE/$NOME_PKG ]; do
let NUM++
NOME_PKG=$DIRETORIO-$ARCH-$NUM.tgz
done
COMANDO="makepkg -l y -c n $DGFBASE/$NOME_PKG"
AVISO $COMANDO
makepkg -l y -c n $DGFBASE/$NOME_PKG || ERRO "$COMANDO"
if [ -e $DGFBASE/$NOME_PKG ]; then
RESPOSTA="errada"
while [ "$RESPOSTA" = "errada" ]; do
echo "Deseja instalar o pacote? $DGFBASE/$NOME_PKG [S/n] : " ; read -n 1 RESPOSTA
RESPOSTA=`echo $RESPOSTA | tr A-Z a-z`
if [ -z $RESPOSTA ]; then
RESPOSTA=s
fi
case $RESPOSTA in
[ys]) AVISO "installpkg $DGFBASE/$NOME_PKG" ; installpkg $DGFBASE/$NOME_PKG ;;
n) echo ;;
*) RESPOSTA="errada" ;;
esac
done
fi
}
LIMPA() {
RESPOSTA2="errada"
while [ "$RESPOSTA2" = "errada" ]; do
echo "Deseja excluir os restos? "\"$DGFBASETMP/$DIRETORIO\" \"$DGFBASETMP/$DIR2\"" [S/n]" ; read -n 1 RESPOSTA2
echo
RESPOSTA2=`echo $RESPOSTA2 | tr A-Z a-z`
if [ -z $RESPOSTA2 ]; then
RESPOSTA2=s
fi
case $RESPOSTA2 in
[ys]) rm -rv $DGFBASETMP/$DIRETORIO ; rm -rf $DGFBASETMP/$DIR2 ;;
n) echo ;;
*) RESPOSTA2="errada" ;;
esac
done
}
#########################################
# Fim das Fun��es
#########################################
case $1 in
-c) if [ -d $2 ]; then
cd $2
VAR=$2
if [ $VAR = './' ]; then
VAR=$PWD
fi
else
echo "Diretorio invalido!" ; exit 1
fi
DIR=`dirname $VAR`
PKG=`basename $VAR`
DIRETORIO=$PKG
CONFIGURE ; MAKE ; MAKE_INSTALL ; MAKEPKG ; LIMPA ;;
-m) if [ -d $2 ]; then
cd $2
VAR=$2
if [ $VAR = './' ]; then
VAR=$PWD
fi
else
echo "Diretorio invalido!" ; exit 1
fi
DIR=`dirname $VAR`
PKG=`basename $VAR`
DIRETORIO=$PKG
MAKE ; MAKE_INSTALL ; MAKEPKG ; LIMPA ;;
-mi)if [ -d $2 ]; then
cd $2
VAR=$2
if [ $VAR = './' ]; then
VAR=$PWD
fi
else
echo "Diretorio invalido!" ; exit 1
fi
DIR=`dirname $VAR`
PKG=`basename $VAR`
DIRETORIO=$PKG
MAKE_INSTALL ; MAKEPKG ; LIMPA ;;
-mp)if [ -d $2 ]; then
cd $2
VAR=$2
if [ $VAR = './' ]; then
VAR=$PWD
fi
else
echo "Diretorio invalido!" ; exit 1
fi
DIR=`dirname $VAR`
DIR2=`basename $VAR`
DIRETORIO=$PKG
MAKEPKG ; LIMPA ;;
-l) AVISO "rm -rf $DGFBASETMP/*" ; rm -rf $DGFBASETMP/*;;
-lp) AVISO "rm -rf $DGFBASE/*" ; rm -rf $DGFBASE/*;;
*)
DIR=`dirname $1`
PKG=`basename $1`
case $PKG in
*.tar.gz) tar -xzvf $DIR/$PKG -C $DGFBASETMP ; COMPACTACAO=.tar.gz ; DIRETORIO=`tar -tvf $DIR/$PKG | awk 'NR == 1{print $6}' | sed 's/\(.*\)\/\(.*\)/\1/'` ;;
*.tgz) tar -xzvf $DIR/$PKG -C $DGFBASETMP ; COMPACTACAO=.tar.gz ; DIRETORIO=`tar -tvf $DIR/$PKG | awk 'NR == 1{print $6}' | sed 's/\(.*\)\/\(.*\)/\1/'` ;;
*.tar.bz2) tar -xjvf $DIR/$PKG -C $DGFBASETMP ; COMPACTACAO=.tar.bz2 ; DIRETORIO=`tar -tvf $DIR/$PKG | awk 'NR == 1{print $6}' | sed 's/\(.*\)\/\(.*\)/\1/'` ;;
*.tar) tar -xvf $DIR/$PKG -C $DGFBASETMP ; COMPACTACAO=.tar ; DIRETORIO=`tar -tvf $DIR/$PKG | awk 'NR == 1{print $6}' | sed 's/\(.*\)\/\(.*\)/\1/'` ;;
*.bz2) bunzip $DIR/$PKG $DGFBASETMP || bunzip2 $pkg ; COMPACTACAO=.bz2 ; DIRETORIO=`echo $DIR/$PKG | sed -e 's/'$COMPACTACAO'//g'` ;;
*.rar) unrar x $DIR/$PKG $DGFBASETMP ; COMPACTACAO=.rar ;;
*.zip) gunzip $DIR/$PKG $DGFBASETMP ; COMPACTACAO=.zip ;;
esac
CONFIGURE
MAKE
MAKE_INSTALL
MAKEPKG
LIMPA
exit 1 ;;
esac
========================================================================
o problema está aki
------------------------
if [ -e ./configure ]; then
./configure --help || ./configure -help
COMANDO="./configure --prefix=/usr --bindir=/usr/bin --sbindir=/usr/sbin --sysconfdir=/etc --libdir=$LIB "
echo -n "Acrescente os parametros que desejar: $COMANDO" ; read PARAMETROS
COMANDO="./configure --prefix=/usr --bindir=/usr/bin --sbindir=/usr/sbin --sysconfdir=/etc --libdir=$LIB $PARAMETROS" &&
AVISO "$COMANDO" &&
./configure --prefix=/usr --bindir=/usr/bin --sbindir=/usr/sbin --sysconfdir=/etc --libdir=$LIB $PARAMETROS ||
COMANDO="./configure --prefix=/usr --libdir=$LIB $PARAMETROS" &&
AVISO "$COMANDO" &&
./configure --prefix=/usr --libdir=$LIB ||
COMANDO="./configure --prefix=/usr" &&
AVISO "$COMANDO" &&
./configure --prefix=/usr || ERRO "$COMANDO"
-----------------------
o que eu quero fazer é o seguinte, essa parte de script executa o configure do fonte com alguns parametros, porem nem todos os script aceita esses parametros, ai a ideia foi o seguinte
ele tenta isso
./configure --prefix=/usr --bindir=/usr/bin --sbindir=/usr/sbin --sysconfdir=/etc --libdir=$LIB $PARAMETROS
se der errado ele vai p proxima linha, e se der certo ele ignora o resto da linha
p imendar tudo eu coloquei \ no final e antes o || p executar a sequencia da linha caso de errado o 1° comando
o problema é que msm o 1° comando funcionando perfeitamente ele da sequencia nos outros ./configure
como resolver isso??