Posts Tagged ‘Bash’

Synology DSM: How to package SPK files?

Saturday, December 22nd, 2012

Some people say that coders would be lazy …

#!/bin/bash
# SPK Package Script
# Written in 2012 by Martin Zeitler
# usage: ./package.sh APP VERSION ARCH
TAR="$(which tar)"
APP=$1
VERSION=$2
ARCH=$3

if [ $# -ne 3 ]; then
	echo "Usage: ./`basename $0` {APP VERSION ARCH}"
	exit 65
fi

cd packages/$APP/
WD="$(pwd)"
RELEASE="../../releases/$APP-$ARCH-$VERSION.spk"
PACKAGE="$WD/install/package.tgz"

chmod -R 755 package/
cd $WD/package && $TAR -zcvf $PACKAGE * && cd ..

chmod 755 "$PACKAGE"
cd $WD/install/
PACKAGE_MD5=`md5sum package.tgz | awk '{ print $1 }'`
cd $WD/install && $TAR -cvf $WD/release.tar * && cd ..
rm $WD/install/package.tgz
mv $WD/release.tar $RELEASE

SIZE=$(stat -c%s "$RELEASE")
echo "-----------------------------------------"
echo "Package: $APP v$VERSION ($ARCH)"
echo "    MD5: $PACKAGE_MD5"
echo "   Size: $SIZE bytes"
echo "-----------------------------------------"

It can be conveniently called by a second script, which passes predefined parameters:

#!/bin/bash
APP="SomeApplication"
VERSION="101"
ARCH="noarch"

BASE_DIR=`dirname $0`
echo "-----------------------------------------"
echo "Now Packaging: $APP $VERSION ($ARCH)"
echo "-----------------------------------------"
$BASE_DIR/package.sh $APP $VERSION $ARCH

Related Links: