#!/bin/sh
# slackbuild_to_sbo.sh
# 2012-12-18
# by Gernot Walzl
# Converts a given SlackBuild to the
# submission guidelines defined by SlackBuilds.org
# http://slackbuilds.org/
SLACKBUILD=$1
TMP=${TMP:-/tmp}
CWD=$(pwd)
# exit on error
set -e
if [ -z "$SLACKBUILD" ]; then
echo "Usage: $0 anything.SlackBuild"
exit 1;
fi
if [ ! -f "$SLACKBUILD" ]; then
echo "ERROR: $SLACKBUILD does not exist."
exit 1;
fi
if [ "$(head -n 1 "$SLACKBUILD")" != "#!/bin/sh" ]; then
echo "ERROR: $SLACKBUILD is not a shell script."
exit 1;
fi
HAS_INFO=$(grep "# EOF info" "$SLACKBUILD" | wc -l)
if [ "$HAS_INFO" -eq 0 ]; then
echo "ERROR: $SLACKBUILD does not have an info section."
exit 1;
fi
# check syntax
ash -n $SLACKBUILD || exit 1
PRGNAM=$(basename "$SLACKBUILD" | cut -d. -f1)
if [ -z "$PRGNAM" ]; then
exit 1;
fi
mkdir -p $TMP/$PRGNAM
cd $TMP/$PRGNAM || exit 1
cp $CWD/$SLACKBUILD ./$PRGNAM.SlackBuild
OUTPUT="README.tmp"
while read LINE; do
case "$LINE" in
PRGNAM*) OUTPUT="$PRGNAM.info.tmp" ;;
"# EOF info") break ;;
esac
echo $LINE >> $TMP/$PRGNAM/$OUTPUT
done < "$PRGNAM.SlackBuild"
cat README.tmp \
| sed '/^#!\/.*/d' README.tmp \
| sed '/^\s*$/d' \
| sed 's/^#\s*\(.*\)$/\1/g' \
| sed '/./,$!d' \
> README
rm README.tmp
. ./$PRGNAM.info.tmp
if [ -z "$DESC" ]; then
echo "WARNING: $SLACKBUILD does not set DESC."
else
echo "$DESC" | sed 's/^/'$PRGNAM': /g' > slack-desc
fi
ARCH=x86_64
. ./$PRGNAM.info.tmp
DOWNLOAD_x86_64="$DOWNLOAD"
MD5SUM_x86_64="$MD5SUM"
DOWNLOAD=""
MD5SUM=""
for ARCH in i686 i586 i486 i386; do
. ./$PRGNAM.info.tmp
if [ ! -z "$DOWNLOAD" ]; then
break
fi
done
rm $PRGNAM.info.tmp
if [ "$DOWNLOAD" = "$DOWNLOAD_x86_64" ]; then
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
fi
if [ -z "$VERSION" ]; then
echo "WARNING: $SLACKBUILD does not set VERSION."
fi
if [ -z "$HOMEPAGE" ]; then
echo "WARNING: $SLACKBUILD does not set HOMEPAGE."
fi
if [ -z "$DOWNLOAD" ]; then
echo "WARNING: $SLACKBUILD does not set DOWNLOAD."
fi
if [ -z "$MD5SUM" ]; then
echo "WARNING: $SLACKBUILD does not set MD5SUM."
fi
if [ -z "$MAINTAINER" ]; then
echo "WARNING: $SLACKBUILD does not set MAINTAINER."
fi
if [ -z "$EMAIL" ]; then
echo "WARNING: $SLACKBUILD does not set EMAIL."
fi
echo "PRGNAM=\"$PRGNAM\"" > $PRGNAM.info
echo "VERSION=\"$VERSION\"" >> $PRGNAM.info
echo "HOMEPAGE=\"$HOMEPAGE\"" >> $PRGNAM.info
echo "DOWNLOAD=\"$DOWNLOAD\"" >> $PRGNAM.info
echo "MD5SUM=\"$MD5SUM\"" >> $PRGNAM.info
echo "DOWNLOAD_x86_64=\"$DOWNLOAD_x86_64\"" >> $PRGNAM.info
echo "MD5SUM_x86_64=\"$MD5SUM_x86_64\"" >> $PRGNAM.info
echo "REQUIRES=\"$REQUIRES\"" >> $PRGNAM.info
echo "MAINTAINER=\"$MAINTAINER\"" >> $PRGNAM.info
echo "EMAIL=\"$EMAIL\"" >> $PRGNAM.info
cd $TMP
tar czvf $PRGNAM.tar.gz $PRGNAM
rm -rf $PRGNAM
mv $PRGNAM.tar.gz $CWD