Script pkgPrepare.sh

From campisano.org
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