Script pkgPrepare.sh
Jump to navigation
Jump to search
#!/bin/bash
##### info
#
echo
echo " Script che prepara pacchetti per la slackware,";
echo " specificare come primo argomento";
echo " il path ASSOLUTO dove installare il pacchetto";
echo " comunemente viene usato /usr/local/";
echo " OGNI ALTRO ARGOMENTO VERRA' PASSATO AL ./configure !";
echo
echo " Lo script eseguira lo script ./configure e il comando make install --";
echo " settando il parametro prefix secondo l'argomento dato";
echo " ma installera' il tutto in una directory temporanea,";
echo " per consentire a makepkg di preparare il pacchetto";
echo " diversamente dalla prima versione, che usava make install prefix=/x/y/z"
echo " ora verra' usato make -n install > _script.sh"
echo " per vedere dove il Makefile vorrebbe installare il pacchetto"
echo " se ad esempio la cartella di destinazione e' /usr/local"
echo " verranno cambiate nello _script.sh tutte le stringhe"
echo " /usr/local in ./_PackageTmp/usr/local e verra' eseguito"
echo " il tutto da utente comune (QUINDI NON E' POSSIBILE CHE FACCIA DANNI!)"
echo " dopodiche' bisognera' loggarsi come superuser"
echo " per chiamare makepkg dalla cartella _PackageTmp e creare il pacchetto"
echo " verranno visualizzati i path dei file nel pacchetto creato"
echo " al fine di permettere all'utente di verificare la loro corretta posizione"
echo
echo
echo
#--- funzioni ---#
function quit {
echo
echo -e "\tT1t0_pkgPrepare v1.1.1";
exit $1;
}
##### var
#
# i parametri successivi a $PARlast
# vengono passati al ./configure
PARlast=1;
PARarray=($@);
OPTconfig="";
while [ "$#" -gt "$PARlast" ]; do
OPTconfig="$OPTconfig ${PARarray[$PARlast]}";
PARlast=$((PARlast+1));
done;
if [ -z "$CFLAGS" ]; then
CFLAGS="-mcpu=i686 -O3 -Wall -pipe";
fi;
# uso un file temporaneo per lo script di installazione
SCRIPT=",,,make_script.sh";
# stabilisco un nome per il pacchetto (manca un sistema per decidere la piattaforma da scegliere, si usa per ora i686)
NOMEpkg="$(basename $(pwd))-i686-my1.tgz";
DIR="$1";
# elimino l'ultima / (se c'e', es /usr/local/ ) dal percorso scelto
DIRend=`echo $DIR | awk 'BEGIN { FS="/" } { print $(NF) }'`;
if [ -z $DIRend ]; then # se $? è vuota "$1" finisce con /, quindi e' meglio toglierlo:
DIR=`echo $DIR | awk 'BEGIN { FS="/" } { print(substr($0,0,length($0)-1)) }'`;
fi;
DIRtmp="_PackageTmp";
DIRmake="`pwd`/$DIRtmp$DIR";
COMM_CONF="./configure -q --prefix=$DIR $OPTconfig"
#COMM_MAKE="make -s -j 2";
COMM_MAKE="make -s";
COMM_INST="make install -s prefix=$DIRmake";
echo " Opzioni usate per la compilazione:"
echo
echo " NOMEpkg= $NOMEpkg"
echo " DIR= $DIR"
echo " DIRmake= $DIRmake"
echo " OPTconfig= $OPTconfig"
echo " CFLAGS= $CFLAGS"
echo
echo " $COMM_CONF";
echo " $COMM_MAKE";
echo " $COMM_INST";
echo
##### check
#
if `test -z "$1"`; then # se non e' stato specificato un path, esci
echo "Usage: $0 <pathToInstall>"
echo "Examp: $0 /usr/local"
echo
quit -1;
fi;
if [ $(echo $1 | cut -b 1) != "/" ]; then # se il path specificato non e' assoluto, esci
echo "Usage: $0 <pathMustBeAbsolute>"
echo "Examp: $0 /$1"
echo
quit -1;
fi;
##### pause
#
if `test -x ./configure`; then
echo
echo ---------------------------------------------------------------------------
echo STO ESEGUENDO IL CONFIGURE
echo ---------------------------------------------------------------------------
echo
sleep 1;
##### configure
#
$COMM_CONF;
if [ "$?" != "0" ]; then
echo
echo " Errore durante l'esecuzione di"
echo " $COMM_CONF"
echo " sorry"
echo
quit -1;
fi;
fi;
##### pause
#
echo
echo ---------------------------------------------------------------------------
echo STO ESEGUENDO IL MAKE
echo ---------------------------------------------------------------------------
echo
sleep 1;
##### make
#
$COMM_MAKE;
if [ "$?" != "0" ]; then
echo
echo " Errore durante la compilazione mediante"
echo " $COMM_MAKE"
echo " sorry"
echo
quit -1;
fi;
##### pause
#
echo
echo ---------------------------------------------------------------------------
echo STO ESEGUENDO IL MAKE INSTALL
echo ---------------------------------------------------------------------------
echo
sleep 1;
##### make install
#
rm -Rf $DIRtmp;
mkdir -p $DIRmake;
$COMM_INST;
if [ $? -ne 0 ]; then
echo
echo " Errore durante l'esecuzione di"
echo " $COMM_INST"
echo " sorry"
echo
quit -1;
fi;
##### makepkg
#
cd $DIRtmp;
makepkg --linkadd y --chown y $NOMEpkg;
cd ..;
if [ "$?" != "0" ]; then
echo
echo " Errore durante la creazione del pacchetto mediante"
echo " makepkg --linkadd y --chown y $NOMEpkg"
echo " sorry"
echo
quit -1;
fi;
##### quit
#
ls --color -hl "$DIRtmp/$NOMEpkg"
quit 0;
# End