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