#! /bin/bash # definiamo alcune variabili contenenti la directory corrente e quella temporanea di lavoro: function cambia_link() { DIR_PREC=`pwd` cd $1 LISTA_LINK=`find . -type l` for LINK in $LISTA_LINK do LINK_NAME=`ls -l $LINK | awk '1 { print $8}'` TARGET=`ls -l $LINK | awk '1 { print $10}'` if [ -f $TARGET.gz ]; then rm $LINK_NAME ln -s $TARGET.gz $LINK_NAME.gz fi done cd $DIR_PREC } CWD=`pwd` if ["$TMP" = ""]; then TMP=/tmp fi PKG=$TMP/strongswan PKGslash=$(echo $PKG | sed 's/\//\\\//g') # Settiamo qualche altra variabile per velocizzare il lavoro: NAME=strongswan VERSION=2.8.4 ARCH=i486 BUILD=1ld if [ ! -d $TMP ]; then mkdir -p $TMP # posizione dove creiamo il sorgente fi if [ ! -d $PKG ]; then mkdir -p $PKG # posizione dove creiamo il package fi echo "+------------------+" echo "| $NAME-$VERSION |" echo "+------------------+" cd $TMP # scompattiamo il sorgente tar jxf $CWD/$NAME-$VERSION.tar.bz2 # ci portiamo all'interno della directory appena scompattata cd $NAME-$VERSION # Imposto alcune variabili nel file Makefile.inc sed -i -e 's/^DESTDIR?=/DESTDIR?='"$PKGslash"'/g' Makefile.inc sed -i -e 's/^INC_USRLOCAL=\/usr\/local/INC_USRLOCAL=\/usr/g' Makefile.inc sed -i -e 's/^USE_IKEPING?=false/USE_IKEPING?=true/g' Makefile.inc sed -i -e 's/^USE_XAUTH_VID?=false/USE_XAUTH_VID?=true/g' Makefile.inc sed -i -e 's/^USE_NAT_TRAVERSAL_TRANSPORT_MODE?=false/USE_NAT_TRAVERSAL_TRANSPORT_MODE?=true/g' Makefile.inc sed -i -e 's/^USE_LIBCURL?=false/USE_LIBCURL?=true/g' Makefile.inc sed -i -e 's/^USE_LDAP?=false/USE_LDAP?=true/g' Makefile.inc # compiliamo make programs # passiamo a make , con il parametro DESTDIR la dir dove creiamo il package mkdir -p $PKG/etc/rc.d ## creo rc.d per non avere problemi nel make install make DESTDIR=$PKG install # strippiamo gli eseguibili e le librerie strip $PKG/usr/sbin/* #strip --strip-unneeded $PKG/usr/lib/*.so.* # rinominiamo e spostiamo la cartella doc standard, nel caso venga creata in un path non corretto mv -f $PKG/usr/share/doc $PKG/usr/ mv $PKG/usr/doc/strongswan $PKG/usr/doc/$NAME-$VERSION # copiamo i file con informazioni da conservare della dir doc cp -a -r CHANGES COPYING CREDITS INSTALL LICENSE README testing \ $PKG/usr/doc/$NAME-$VERSION # gzippiamo le man pages gzip $PKG/usr/man/man3/* gzip $PKG/usr/man/man5/* gzip $PKG/usr/man/man8/* # e rinominiamo i link cambia_link $PKG/usr/man/man3 cambia_link $PKG/usr/man/man5 cambia_link $PKG/usr/man/man8 # Rinomino i file di configurazione in .new mv $PKG/etc/ipsec.d/examples/oe.conf $PKG/etc/ipsec.d/examples/oe.conf.new mv $PKG/etc/ipsec.d/policies/block $PKG/etc/ipsec.d/policies/block.new mv $PKG/etc/ipsec.d/policies/clear $PKG/etc/ipsec.d/policies/clear.new mv $PKG/etc/ipsec.d/policies/clear-or-private $PKG/etc/ipsec.d/policies/clear-or-private.new mv $PKG/etc/ipsec.d/policies/private $PKG/etc/ipsec.d/policies/private.new mv $PKG/etc/ipsec.d/policies/private-or-clear $PKG/etc/ipsec.d/policies/private-or-clear.new mv $PKG/etc/rc.d/ipsec $PKG/etc/rc.d/rc.ipsec.new mv $PKG/etc/ipsec.conf $PKG/etc/ipsec.conf.new touch $PKG/etc/ipsec.secrets.new rmdir $PKG/usr/share mkdir -p $PKG/install # impostiamo i permessi chown -R root:root $PKG chmod -R 644 $PKG/usr/doc/$NAME-$VERSION/* chmod -R 644 $PKG/etc/* chmod -R 744 $PKG/etc/rc.d/* chmod 600 $PKG/etc/ipsec.secrets.new # permetto di accedere alle directory in doc PERM_DOC=`find $PKG/usr/doc/$NAME-$VERSION/ -type d` for dir in $PERM_DOC do chmod +x $dir done # copiamo slack-desc in install cat $CWD/slack-desc > $PKG/install/slack-desc cat $CWD/doinst.sh > $PKG/install/doinst.sh cat $CWD/slack-desc > $PKG/usr/doc/$NAME-$VERSION/slack-desc cat $CWD/$NAME.SlackBuild > $PKG/usr/doc/$NAME-$VERSION/$NAME.SlackBuild cd $PKG # Creiamo il pacchetto con makepkg requiredbuilder -v -y -s $CWD $PKG makepkg -l y -c n $CWD/$NAME-$VERSION-$ARCH-$BUILD.tgz # eliminiamo le dir di lavoro qualora avessimo eseguito lo SlackBuild con l'opzione --cleanup if [ "$1" = "--cleanup" ]; then rm -rf $TMP/$NAME-$VERSION rm -rf $PKG fi