Opkg
Da Slacky.eu.
Versione delle 11:51, 12 set 2006, autore: L1q1d (Discussione | contributi)
Descrizione:
Nuova versione di Opkg che sostituisce il precedente Oinstaller con una versione perfezionata. Riesce, grazie alle flags del gcc, a compilare un sorgente in maniera personalizzata, strippare i suoi binari e volendo le librerie, gzippare i man e utilizzare un vostro slack-desc personalizzato.
Script
#!/bin/sh
# Opkg-0.3
#
# Programma di creazione pkg personalizzati per slackware
# Grazie a coloro che mi hanno aiutato in passato ;-)
# Settate i parametri prima di iniziare
VEL=-O2 # settare la velocità della -O
echoz="echo -e"
tmp=/tmp/pkg # directory temporale di installazione sorgenti
USERHOME=`echo $HOME`
function config() {
CFLAGS="$velocità -march=$marca -pipe -fomit-frame-pointer -mtune=`uname -m`"
CXXFLAGS=${CFLAGS}
$echoz "\nHai intenzione di aggiungere altre opzioni di configurazione?[s/n]"
read app
if [ "$app" = s ]; then
$echoz "\nInserisci l'opzione da passare al configure"
read appz
./configure --prefix=$prefix CFLAGS="$CFLAGS" CXXFLAGS="${CFLAGS}" $appz
else
./configure --prefix=$prefix CFLAGS="$CFLAGS" CXXFLAGS="${CFLAGS}"
fi
if [ "$?" = 1 ]; then
$echoz "\nATTENZIONE: Si è verificato un problema di configurazione\n"
exit 0
fi
}
function slcdsc() {
echo "$name: $name-$vers
$name:
$name:
$name: $name-$vers-$marca-1oi.tgz è stato creato con Opkg-0.3
$name:
$name: questo pkg È stato realizzato per un processore tipo $marca
$name: su di un computer con processore tipo `uname -m`
$name:
$name:
$name: ENJOY!
$name:" > $tmp/install/slack-desc
}
function super() {
su -c "cd $tmp && makepkg -l y -c y \
$name-$vers-$marca-1oi.tgz && rm -rf install && \
mv $name-$vers-$marca-1oi.tgz $USERHOME && rm -rf $tmp"
}
if [ "$UID" = 0 ]; then
$echoz "\nBisogna essere user per avviare questo script"
$echoz "La configurazione da root di un sorgente non è"
$echoz "indicata sia per una installazione da sorgenti"
$echoz "che da una creazione di un package!\n"
exit 0
fi
if [ ! -e configure ]; then
$echoz "\nIl configure non è presente nella directory\n"
exit 0
elif [ ! -x configure ]; then
$echoz "\nIl configure non è eseguibile, rendetelo con il comando \"chmod +x configure\"\n"
exit 0
elif [ -e configure -a -x configure ]; then
velocità=$VEL
$echoz "\nBenvenuti nel Opkg-0.3 :D"
$echoz "Per qualsiasi chiarimento o suggerimento ohiohiohi_ahiahiahi@katamail.com"
$echoz "\nInserisci ora il nome del programma che vuoi pacchettizzare"
read name
$echoz "\nInserisci ora la versione del programma da pacchettizzare"
read vers
$echoz "Seleziona il tipo di configurazione:"
$echoz "\n\"pers\" per una configurazione dei sorgenti in base al tipo di macchina"
$echoz "\"simple\" per una semplice configurazione con ./configure"
$echoz "\nATTENZIONE: L'opzione \"simple\" viene usata nel caso i sorgenti non"
$echoz "supportino le CFLAGS o parametri da passare al configure"
read source
until [ "$source" = simple -o "$source" = pers ]; do
$echoz "\"$source\" non è una opzione valida[simple/pers]"
read source
done
$echoz "\nInserisci la PATH per il --prefix"
read pathprefix
until [ -e "$pathprefix" ]; do
$echoz "\nNon ho ancora imparato a creare directory da solo!!"
$echoz "Inseriscine una che esista per favore :D"
read pathprefix
done
if [ "$source" = simple ]; then
marca=noarch
./configure --prefix=$pathprefix
if [ "$1" = 1 ]; then
$echoz "\nATTENZIONE: Si è verificato un errore di compilazione\n"
exit 0
fi
elif [ "$source" = pers ]; then
prefix=$pathprefix
$echoz "\nÈ necessario inserire ora la architettura per la quale bisogna"
$echoz "preparare il pacchetto. Questo è utilizzato per proforma"
$echoz "nel caso si volesse crearlo per altre architetture."
$echoz "Scrivi \"my\" nel caso tu voglia creare un pkg con la tua"
$echoz "architettura, per inserirne una a scelta scrivi \"ath\"."
read marca1
until [ "$marca1" = my -o "$marca1" = ath ]; do
$echoz "\"$marca1\" non è una opzione valida[my/ath]"
read marca1
done
if [ "$marca1" = my ]; then
marca=`uname -m`
true
elif [ "$marca1" = ath ]; then
$echoz "Scrivi il tipo di processore(es. i486)"
read marca
true
fi
config
fi
if [ -e Makefile ]; then
$echoz "\nIl Makefile è presente o è stato creato."
$echoz "Avvio lo script per la creazione del pkg"
sleep 5
make
make install DESTDIR=$tmp
mkdir $tmp/install
$echoz "\nATTENZIONE: Se hai intenzione di usare il tuo slack-desc ricorda"
$echoz "di metterlo nella HOME, chiamarlo \"slack-desc\""
$echoz "\nSe vuoi usare il tuo slackdesk digita \"s\", per default \"n\""
read slackdesc
if [ "$slackdesc" = s ]; then
if [ -e ~/slack-desc ]; then
mv ~/slack-desc $tmp/install/slack-desc
true
else
$echoz "File non trovato o nominato male, procederò con il slack-desc di default"
slcdsc
fi
else
slcdsc
fi
findbin=`find $tmp -name bin -print`
if [ "$findbin" != '' ]; then
$echoz "\nHai intenzione di strippare i binari per occupare meno spazio?"
$echoz "(Questa opzione può causare alcuni problemi nell'utilizzo di"
$echoz "alcuni programmi in versione ancora non-stable). [s/n]"
read bin
if [ "$bin" = s ]; then
find $tmp | xargs file | grep "executable" | grep ELF | \
cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
else
true
fi
else
true
fi
findlib=`find $tmp -name lib -print`
if [ "$findlib" != '' ]; then
$echoz "\nAvete necessità di strippare anche le librerie? [s/n]"
$echoz "ATTENZIONE: Questa opzione non è molto consigliata"
read lib
if [ "$lib" = s ]; then
find $tmp | xargs file | grep "shared object" | grep ELF | \
cut -f1 -d : | xargs strip --strip-unneeded 2> /dev/null
else
true
fi
else
true
fi
findman=`find $tmp -name man -print`
if [ "$findman" != '' ]; then
find $tmp | xargs file | grep -i troff | grep man | \
cut -d : -f1 | xargs gzip -9
else
true
fi
$echoz "\nInserite ora la password di root per avviare la creazione del package\n"
super
until [ "$?" = 0 ]; do
$echoz "\nNeanche la password di root mi sai azzeccare?"
super
done
$echoz "\nCOMPLIMENTI!! hai creato il package $name-$vers-$marca-1oi.tgz"
$echoz "Lo troverete nella vostra HOME\n"
cd ~
fi
fi
- Data: 03 Jun 2006
- Autore: OhiAhiOhi
- Versione: 0.3