Repository 32bit  Forum
Repository 64bit  Wiki

Opkg

Da Slacky.eu.
Versione delle 11:51, 12 set 2006, autore: L1q1d (Discussione | contributi)

(diff) ← Versione meno recente | Versione attuale (diff) | Versione più recente → (diff)

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
Strumenti personali
Namespace

Varianti