buildsys: use md5deep to check if package has changed

This commit is contained in:
Stefan Saraev 2015-08-02 23:59:29 +03:00
parent 5f6b9e46e8
commit a817547eb6
2 changed files with 18 additions and 27 deletions

View File

@ -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

View File

@ -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