From a817547eb6b6e621c104877e8eefa7fc7345de8e Mon Sep 17 00:00:00 2001 From: Stefan Saraev Date: Sun, 2 Aug 2015 23:59:29 +0300 Subject: [PATCH] buildsys: use md5deep to check if package has changed --- scripts/build | 13 ++++++++++--- scripts/unpack | 32 ++++++++------------------------ 2 files changed, 18 insertions(+), 27 deletions(-) diff --git a/scripts/build b/scripts/build index 8c03b305c1..74212ea0a6 100755 --- a/scripts/build +++ b/scripts/build @@ -53,8 +53,14 @@ STAMP=$STAMPS/$PACKAGE_NAME/build_$TARGET $SCRIPTS/unpack $PACKAGE_NAME -if [ -f $STAMP -a $PKG_DIR/package.mk -nt $STAMP ]; then - rm -f $STAMP +STAMP_DEPENDS="$PKG_DIR $PKG_NEED_UNPACK $PROJECT_DIR/$PROJECT/patches/$PKG_NAME" + +if [ -f $STAMP ] ; then + . $STAMP + PKG_DEEPMD5=$(md5deep -r $STAMP_DEPENDS 2>/dev/null | sort | md5sum | cut -d" " -f1) + if [ ! "$PKG_DEEPMD5" = "$STAMP_PKG_DEEPMD5" ] ; then + rm -f $STAMP + fi fi if [ ! -f $STAMP ]; then @@ -358,7 +364,8 @@ if [ ! -f $STAMP ]; then $SED "s:\(['= ]\)/usr:\\1$SYSROOT_PREFIX/usr:g" $i; \ done - for i in `sed -n "s/^\([^#].*\)=\".*$/\1/p" $PROJECT_DIR/$PROJECT/options | grep -v "#"`; do + PKG_DEEPMD5=$(md5deep -r $STAMP_DEPENDS 2>/dev/null | sort | md5sum | cut -d" " -f1) + for i in PKG_NAME PKG_DEEPMD5; do eval val=\$$i echo "STAMP_$i=\"$val\"" >> $STAMP done diff --git a/scripts/unpack b/scripts/unpack index 553591ce7f..f75c973b7f 100755 --- a/scripts/unpack +++ b/scripts/unpack @@ -38,37 +38,20 @@ mkdir -p $BUILD [ ! -d "$SOURCES/$1" -a ! -d "$PKG_DIR/sources" ] && exit 0 +STAMP_DEPENDS="$PKG_DIR $PKG_NEED_UNPACK $PROJECT_DIR/$PROJECT/patches/$PKG_NAME" + for i in $BUILD/$1-*; do if [ -d $i -a -f "$i/.openelec-unpack" ] ; then . "$i/.openelec-unpack" if [ "$STAMP_PKG_NAME" = "$1" ]; then - # trigger unpack / full rebuild on any package.mk change - if [ $PKG_DIR/package.mk -nt "$i/.openelec-unpack" ]; then - CLEAN_SOURCE=yes - break + PKG_DEEPMD5=$(md5deep -r $STAMP_DEPENDS 2>/dev/null | sort | md5sum | cut -d" " -f1) + if [ ! "$PKG_DEEPMD5" = "$STAMP_PKG_DEEPMD5" ] ; then + $SCRIPTS/clean $1 fi - # handle $PKG_NEED_UNPACK - for file in $PKG_NEED_UNPACK; do - if [ -f "$file" -a "$file" -nt "$i/.openelec-unpack" ] ; then - CLEAN_SOURCE=yes - break - fi - done - # trigger unpack / full rebuild on any patch / script / etc.. change - for file in $PKG_DIR/{patches,scripts,config}/* $PKG_DIR/patches/$PKG_VERSION/*.patch $PROJECT_DIR/$PROJECT/patches/$PKG_NAME/*.patch; do - if [ -f "$file" -a "$file" -nt "$i/.openelec-unpack" ]; then - CLEAN_SOURCE=yes - break - fi - done fi fi done -if [ "$CLEAN_SOURCE" = "yes" ]; then - $SCRIPTS/clean $1 -fi - [ -f "$STAMP" ] && exit 0 printf "%${BUILD_INDENT}c ${boldcyan}UNPACK${endcolor} $1\n" ' '>&$SILENT_OUT @@ -165,7 +148,8 @@ done rm -f $STAMPS/$1/build_* -for i in PKG_NAME PKG_VERSION PKG_REV PKG_SHORTDESC PKG_LONGDESC PKG_SITE PKG_URL PKG_SECTION; do +PKG_DEEPMD5=$(md5deep -r $STAMP_DEPENDS 2>/dev/null | sort | md5sum | cut -d" " -f1) +for i in PKG_NAME PKG_DEEPMD5; do eval val=\$$i - echo "STAMP_$i=\"$val"\" >> $STAMP + echo "STAMP_$i=\"$val\"" >> $STAMP done