aboutsummaryrefslogtreecommitdiff
path: root/trunk/mkbuild
diff options
context:
space:
mode:
authorrhatto <rhatto@04377dda-e619-0410-9926-eae83683ac58>2008-12-20 17:47:07 +0000
committerrhatto <rhatto@04377dda-e619-0410-9926-eae83683ac58>2008-12-20 17:47:07 +0000
commit9215fde72daf22e6f1098e914571ac79017c91e5 (patch)
tree369566c8b4cc844ffe8e249b6b89833c8be8d692 /trunk/mkbuild
parent410130aedd6a73b9cc1f021dcd336bd5c6cb16d4 (diff)
downloadsimplepkg-9215fde72daf22e6f1098e914571ac79017c91e5.tar.gz
simplepkg-9215fde72daf22e6f1098e914571ac79017c91e5.tar.bz2
adding initial support for Manifest files
git-svn-id: svn+slack://slack.fluxo.info/var/svn/simplepkg@691 04377dda-e619-0410-9926-eae83683ac58
Diffstat (limited to 'trunk/mkbuild')
-rw-r--r--trunk/mkbuild/generic.mkSlackBuild49
-rw-r--r--trunk/mkbuild/model.mkbuild1
2 files changed, 50 insertions, 0 deletions
diff --git a/trunk/mkbuild/generic.mkSlackBuild b/trunk/mkbuild/generic.mkSlackBuild
index 8cccbb2..a9173e8 100644
--- a/trunk/mkbuild/generic.mkSlackBuild
+++ b/trunk/mkbuild/generic.mkSlackBuild
@@ -81,6 +81,7 @@ ERROR_WGET=31; ERROR_MAKE=32; ERROR_INSTALL=33
ERROR_MD5=34; ERROR_CONF=35; ERROR_HELP=36
ERROR_TAR=37; ERROR_MKPKG=38; ERROR_GPG=39
ERROR_PATCH=40; ERROR_VCS=41; ERROR_MKDIR=42
+ERROR_MANIFEST=43;
</error_codes>
<start_structure> off
@@ -161,6 +162,7 @@ cd "$PKG_SRC"
</git_source>
<md5sum_check> off
+# MD5 checksum
MD5SUM_URL="[[MD5SUM CODE]]"
if [ ${#MD5SUM_URL} -eq 32 ]; then
@@ -263,6 +265,53 @@ if echo [[PATCH URLS]] | grep -q -v "PATCH URLS"; then
fi
</patch_source>
+<manifest_check> off
+# Check Manifest file
+if [ -e "$CWD/Manifest" ]; then
+
+ for MANIFEST_LINE in `grep -E -v "^(MKBUILD|SLACKBUILD)" $CWD/Manifest`; do
+
+ MANIFEST_FILE="`echo $MANIFEST_LINE | awk '{ print $2 }'`"
+ if [ -e "$SRC_DIR/$MANIFEST_FILE" ]; then
+ MANIFEST_FILE="$SRC_DIR/$MANIFEST_FILE"
+ else
+ MANIFEST_FILE="`find $CWD -name $MANIFEST_FILE`"
+ fi
+
+ if [ ! -e "$MANIFEST_FILE" ]; then
+ continue
+ fi
+
+ SIZE_SRC="`wc -c $MANIFEST_FILE`"
+ SIZE_MANIFEST="`echo $MANIFEST_LINE | awk '{ print $3 }`"
+
+ # Check source code size
+ if [ "$SIZE_SRC" != "$SIZE_MANIFEST" ]; then
+ echo "SIZE Manifest: $SIZE_MANIFEST; SIZE $SRC: $SIZE_SRC"
+ exit $ERROR_MANIFEST
+ fi
+
+ # Check source code integrity
+ for ALGO in md5 sha1 sha256 sha512 rmd160; do
+ if [ $ALGO = "rmd160" ]; then
+ ALGO_SRC="`openssl rmd160 $MANIFEST_FILE | awk '{ print $1 }'`"
+ else
+ ALGO_SRC="`"$ALGO"sum $MANIFEST_FILE | awk '{ print $1 }'`"
+ fi
+ ALGO_MANIFEST=$(echo $MANIFEST_LINE | sed 's/.* $ALGO //' | awk '{ print $1 }')
+ if [ "$ALGO_SRC" == "$ALGO_MANIFEST" ]; then
+ echo "$ALGO Manifest: $ALGO_MANIFEST; $ALGO $SRC: $ALGO_SRC"
+ exit $ERROR_MANIFEST
+ fi
+ done
+
+ done
+
+else
+ exit $ERROR_MANIFEST
+fi
+</manifest_check>
+
<files_permissions> off
# Set permissions
chown -R root:root .
diff --git a/trunk/mkbuild/model.mkbuild b/trunk/mkbuild/model.mkbuild
index 84dc256..1ca855c 100644
--- a/trunk/mkbuild/model.mkbuild
+++ b/trunk/mkbuild/model.mkbuild
@@ -147,6 +147,7 @@ off: md5sum_download_and_check_1
off: gpg_signature_check
on: untar_source
off: patch_source
+ on: manifest_check
on: configure
on: make_package
on: install_package