sono degli slackbuild (sì lo so, su debian non ci sono
), questo è un file di esempio
Codice: Seleziona tutto
#!/bin/sh
#
# Slackware build script for Abook (http://abook.sf.net)
#
# Copyright 2008-2010 Corrado Franco (http://conraid.net)
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
# permitted provided that the following conditions are met:
#
# 1. Redistributions of this script must retain the above copyright
# notice, this list of conditions and the following disclaimer.
#
# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ''AS IS'' AND ANY EXPRESS OR IMPLIED
# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
# Exit on most errors
set -e
# Set variables:
CWD=$(pwd)
PRGNAME=${PRGNAME:-abook}
VERSION=${VERSION:-0.6.0pre2}
ARCH=${ARCH:-i686}
BUILD=${BUILD:-4}
TAG=${TAG:-cf}
TMP=${TMP:-/tmp/tgz} # If you use /tmp here, don't use --cleanup options
JOBS=${JOBS:-2}
SOURCE=http://abook.sourceforge.net/devel/abook-0.6.0pre2.tar.gz
PATCH=http://abook.sourceforge.net/patches/abook_vcard_import.patch
PKG=$TMP/package-$PRGNAME
DOCS="$PKG/usr/doc/$PRGNAME-$VERSION"
# Insert document files in this variable
DOCFILES="ABOUT-NLS ANNOUNCE AUTHORS BUGS COPYING ChangeLog FAQ NEWS README RELEASE_NOTES THANKS TODO"
# Set compiling FLAGS
case "$ARCH" in
i486)
SLKCFLAGS="-O2 -march=i486 -mtune=i686"; CHOST="i486"
SLKLDFLAGS=""; LIBDIRSUFFIX=""
;;
i686)
SLKCFLAGS="-O2 -march=i686 -pipe -fomit-frame-pointer"; CHOST="i486"
SLKLDFLAGS=""; LIBDIRSUFFIX=""
;;
x86_64)
SLKCFLAGS="-O2 -fPIC -pipe -fomit-frame-pointer"; CHOST="x86_64"
SLKLDFLAGS="-L/lib64 -L/usr/lib64"; LIBDIRSUFFIX="64"
;;
esac
# Download source, if not exist
if ! [ -e $(basename $SOURCE) ]; then
wget $SOURCE
fi
# Download source, if not exist
if ! [ -e $(basename $PATCH) ]; then
wget $PATCH
fi
# Extract source and prepare:
rm -rf $PKG
mkdir -p $TMP $PKG
cd $TMP
rm -rf $PRGNAME-$VERSION
tar xzvf $CWD/$PRGNAME-$VERSION.tar.gz
cd $PRGNAME-$VERSION
cat $CWD/$(basename $PATCH) | patch -p1 --verbose --backup --suffix=.orig
# Make sure ownerships and permissions are sane:
chown -R root:root .
chmod -R u+w,go+r-w,a-s .
# Configure
LDFLAGS="$SLKLDFLAGS" \
CFLAGS="$SLKCFLAGS" \
CXXFLAGS="$SLKCFLAGS" \
./configure \
--prefix=/usr \
--libdir=/usr/lib${LIBDIRSUFFIX} \
--sysconfdir=/etc \
--localstatedir=/var \
--mandir=/usr/man \
--infodir=/usr/info \
--host=$CHOST-slackware-linux \
--build=$CHOST-slackware-linux
# Build and install:
make -j $JOBS
make DESTDIR=$PKG install
# Strip binaries:
( cd $PKG
find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
find . | xargs file | grep "current ar archive" | cut -f 1 -d : | xargs strip -g 2> /dev/null || true
)
# Add a documentation directory:
mkdir -p ${DOCS}
for i in ${DOCFILES}; do
if [ -e ${i} ]; then
if ! [ -L ${i} ]; then
cp -a ${i} ${DOCS}
else
cp -LRp ${i} ${DOCS}
fi
fi;
done
# Compress and link manpages, if any:
if [ -d $PKG/usr/man ]; then
( cd $PKG/usr/man
find . -type f -exec gzip -9 {} \;
for i in $( find . -type l ) ; do ln -s $( readlink $i ).gz $i.gz ; rm $i ; done
)
fi
# Add a slackbuild script:
cat $CWD/$PRGNAME.SlackBuild > $DOCS/$PRGNAME.SlackBuild
# Add slack-desc
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
# Create package:
cd $PKG
/sbin/makepkg -l y -c n $CWD/$PRGNAME-$VERSION-$ARCH-${BUILD}${TAG}.txz
purtroppo nei vecchi slackbuild, al posto del CASE ho usato una serie di IF, ma questi li tratterò in modo diverso
Per adesso, chiedo perdono per l'orrore, ho tirato fuori una cosa così
Codice: Seleziona tutto
#!/bin/sh
sed -i '/^# Set compiling FLAGS/,/esac/ d' $1
sed -i '/# Download source, if not exist/ i\#-#-#-#-#' $1
sed -i '/#-#-#-#-#/ r file_che_contiene_il_nuovo_codice' $1
sed -i 's/#-#-#-#-#//' $1
usando append before line sarebbe meglio, ma qualche carattere fa caos, e non riesco a capire (a parte l'apostrofo), con "r" va ma dopo una stringa (non ho trovato come includere un file prima), quindi ho aggiunto e tolto una riga temporanea
ora provo con il tuo esempio