diff options
-rwxr-xr-x | others/generic/generic.SlackBuild | 74 |
1 files changed, 44 insertions, 30 deletions
diff --git a/others/generic/generic.SlackBuild b/others/generic/generic.SlackBuild index 79882a3b..17389148 100755 --- a/others/generic/generic.SlackBuild +++ b/others/generic/generic.SlackBuild @@ -1,7 +1,7 @@ ################################################ ## Generic template for SlackBuilds ## -## Version 0.2.3 - Luis +## Version 0.3 - Luis ## ################################################ #!/bin/bash @@ -32,10 +32,10 @@ TMP=${TMP:=/tmp} PKG=${PKG:=$TMP/package-$PKG_NAME} REPOS=${REPOS:=$TMP} PREFIX=${PREFIX:=/usr} -PKG_SRC=$SRC_NAME-$VERSION +PKG_SRC="$SRC_DIR/$SRC_NAME-$VERSION" # Set system libraries' path and optmization flags based on $ARCH -LIBDIR=$PREFIX/lib +LIBDIR="$PREFIX/lib" if [ "$ARCH" = "i386" ]; then SLKCFLAGS="-O2 -march=i386 -mcpu=i686" @@ -57,13 +57,13 @@ ERROR_TAR=37; ERROR_MKPKG=38; ERROR_GPG=39 ERROR_PATCH=40; ERROR_VCS=41; ERROR_MKDIR=42 # Clean up any leftovers of previous builds -rm -rf $PKG_SRC 2> /dev/null -rm -rf $PKG 2> /dev/null +rm -rf "$PKG_SRC" 2> /dev/null +rm -rf "$PKG" 2> /dev/null # Create directories, if necessary -mkdir -p $SRC_DIR || exit $ERROR_MKDIR -mkdir -p $PKG || exit $ERROR_MKDIR -mkdir -p $REPOS || exit $ERROR_MKDIR +mkdir -p "$SRC_DIR" || exit $ERROR_MKDIR +mkdir -p "$PKG" || exit $ERROR_MKDIR +mkdir -p "$REPOS" || exit $ERROR_MKDIR # Import (minimized) signing key from # [[SIGNING KEY URL]] @@ -72,7 +72,7 @@ gpg --import << EOKEY || exit $ERROR_GPG EOKEY # Dowload source and its signature, if necessary -SRC="$PKG_SRC.tar.[[SOURCE EXTENSION]]" +SRC="$SRC_NAME-$VERSION.tar.[[SOURCE EXTENSION]]" URL="[[DOWNLOAD FOLDER URL]]/$SRC" if [ ! -f "$SRC_DIR/$SRC" ]; then @@ -83,30 +83,30 @@ if [ ! -f "$SRC_DIR/$SRC.sig" ]; then fi # Check source's signature -gpg --verify $SRC_DIR/$SRC.sig $SRC_DIR/$SRC || exit $ERROR_GPG +gpg --verify "$SRC_DIR/$SRC.sig" "$SRC_DIR/$SRC" || exit $ERROR_GPG # Untar, patch, configure, compile and install -tar --no-same-owner --no-same-permissions -xvf $SRC_DIR/$SRC -C $SRC_DIR || exit $ERROR_TAR -cd $SRC_DIR/$PKG_SRC +tar --no-same-owner --no-same-permissions -xvf "$SRC_DIR/$SRC" -C "$SRC_DIR" || exit $ERROR_TAR +cd "$PKG_SRC" patch -Np[[NUMBER OF PREFIX SLASHES TO STRIP]] < $CWD/[[PATCH FILE]] CFLAGS="$SLKCFLAGS" \ CXXFLAGS="$SLKCFLAGS" \ ./configure \ - --prefix=$PREFIX --libdir=$LIBDIR [[OTHER CONFIGURE ARGS]] || exit $ERROR_CONF + --prefix="$PREFIX" --libdir="$LIBDIR" [[OTHER CONFIGURE ARGS]] || exit $ERROR_CONF make || exit $ERROR_MAKE -make install DESTDIR=$PKG || exit $ERROR_INSTALL +make install DESTDIR="$PKG" || exit $ERROR_INSTALL # Strip binaries -( cd $PKG +( cd "$PKG" find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | \ xargs strip --strip-unneeded 2> /dev/null find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | \ xargs strip --strip-unneeded 2> /dev/null ) -# Compress and link manpages, if any -if [ -d $PKG/$PREFIX/man ]; then - ( cd $PKG/$PREFIX/man +# Compress and link manpages +if [ -d "$PKG/$PREFIX/man" ]; then + ( cd "$PKG/$PREFIX/man" for manpagedir in $(find . -type d -name "man*") ; do ( cd $manpagedir for eachpage in $( find . -type l -maxdepth 1) ; do @@ -119,9 +119,9 @@ if [ -d $PKG/$PREFIX/man ]; then ) fi -# Compress info files, if any -if [ -d $PKG/$PREFIX/info ]; then - ( cd $PKG/$PREFIX/info +# Compress info files +if [ -d "$PKG/$PREFIX/info" ]; then + ( cd "$PKG/$PREFIX/info" rm -f dir gzip -9 * ) @@ -129,12 +129,12 @@ fi # Install documentation DOCS="[[DOCUMENTATION FILES]]" -mkdir -p $PKG/$PREFIX/doc/$PKG_NAME-$VERSION || exit $ERROR_MKDIR -cp -a $DOCS $PKG/$PREFIX/doc/$PKG_NAME-$VERSION +mkdir -p "$PKG/$PREFIX/doc/$PKG_NAME-$VERSION" || exit $ERROR_MKDIR +cp -a $DOCS "$PKG/$PREFIX/doc/$PKG_NAME-$VERSION" # Add package description (slack-desc) -mkdir -p $PKG/install || exit $ERROR_MKDIR -cat << EODESC > $PKG/install/slack-desc +mkdir -p "$PKG/install" || exit $ERROR_MKDIR +cat << EODESC > "$PKG/install/slack-desc" # HOW TO EDIT THIS FILE: # The "handy ruler" below makes it easier to edit a package description. Line # up the first '|' above the ':' following the base package name, and the '|' @@ -146,15 +146,29 @@ cat << EODESC > $PKG/install/slack-desc EODESC # Add a post-installation script (doinst.sh) -cat << EOSCRIPT > $PKG/install/doinst.sh -[[DOINST.SH]] +cat << EOSCRIPT > "$PKG/install/doinst.sh" +config() { + NEW="\$1" + OLD="\$(dirname \$NEW)/\$(basename \$NEW .new)" + # If there's no config file by that name, mv it over: + if [ ! -r \$OLD ]; then + mv \$NEW \$OLD + elif [ "\$(cat \$OLD | md5sum)" = "\$(cat \$NEW | md5sum)" ]; then + # toss the redundant copy + rm \$NEW + fi + # Otherwise, we leave the .new copy for the admin to consider... +} + +config path/to/config_file.new +[[REST OF DOINST.SH]] EOSCRIPT # Build the package -cd $PKG -makepkg -l y -c n $REPOS/$PKG_NAME-$VERSION-$ARCH-$BUILD.tgz || exit $ERROR_MKPKG +cd "$PKG" +makepkg -l y -c n "$REPOS/$PKG_NAME-$VERSION-$ARCH-$BUILD.tgz" || exit $ERROR_MKPKG # Delete source and build directories, if requested if [ "$CLEANUP" == "yes" ]; then - rm -rf $SRC_DIR/$PKG_SRC $PKG + rm -rf "$PKG_SRC" "$PKG" fi |