diff --git a/package/base/mine/special-files.patch b/package/base/mine/special-files.patch new file mode 100644 index 000000000..2db8e0342 --- /dev/null +++ b/package/base/mine/special-files.patch @@ -0,0 +1,28 @@ +diff -dur mine-0.24/md5sum.c mine-0.24-p/md5sum.c +--- mine-0.24/md5sum.c 2005-08-09 12:57:29.000000000 +0200 ++++ mine-0.24-p/md5sum.c 2006-03-24 22:00:15.000000000 +0100 +@@ -20,6 +20,7 @@ + #include + #include + #include ++#include + #include + #include + +@@ -37,8 +38,14 @@ + struct stat statbuf; + + snprintf(realfilename, 1024, "%s/%s", root, filename); +- return (stat(realfilename, &statbuf) != 0 || S_ISFIFO(statbuf.st_mode)) +- ? "" : md5_file(realfilename); ++ if (stat(realfilename, &statbuf) != 0) ++ return ""; ++ else if ( S_ISCHR(statbuf.st_mode) || S_ISBLK(statbuf.st_mode) ++ || S_ISLNK(statbuf.st_mode) || S_ISSOCK(statbuf.st_mode) ++ || S_ISFIFO(statbuf.st_mode) ) ++ return "X"; ++ else ++ return md5_file(realfilename); + } + + /* Returns 1 if file is duplicate, 2 if file is modified. */ diff --git a/scripts/Build-Pkg b/scripts/Build-Pkg index 198f64d0d..9dc245ab3 100755 --- a/scripts/Build-Pkg +++ b/scripts/Build-Pkg @@ -706,7 +706,7 @@ if [ $update = 1 ] ; then echo_status "Creating backup of old package data (running in update mode)." ( cd $xroot/ - cat var/adm/md5sums/$xpkg var/adm/md5sums/$xpkg:* 2> /dev/null | + grep -v "^X" var/adm/md5sums/$xpkg var/adm/md5sums/$xpkg:* 2> /dev/null | md5sum --check - 2>&1 | grep ': FAILED$' | cut -f1 -d: ) > $builddir/backup_files.txt if [ -s $builddir/backup_files.txt ] ; then @@ -1074,13 +1074,16 @@ abort() { getfiles < var/adm/flists/$spkg > $builddir/files.lst if [ -s $builddir/files.lst ] ; then while read file ; do - [[ $file = var/adm/* ]] && continue + [[ "$file" = "var/adm/*" ]] && continue [ -z "${file//[ ]/}" ] && continue - if [ ${ROCKCFG_CREATE_CKSUM} -eq 1 ] ; then + if [ -b "$file" -o -c "$file" -o -p "$file" -o -L "$file" -o -S "$file" ] ; then + echo "X ${file}" >> var/adm/md5sums/$spkg + echo "X $( stat -c %s ${file} ) ${file}" >> var/adm/cksums/$spkg + elif [ ${ROCKCFG_CREATE_CKSUM} -eq 1 ] ; then md5sum "${file}" >> var/adm/md5sums/$spkg cksum "${file}" >> var/adm/cksums/$spkg else - echo "0 ${file}" >> var/adm/md5sums/$spkg + echo "0 ${file}" >> var/adm/md5sums/$spkg echo "0 $( stat -c %s ${file} ) ${file}" >> var/adm/cksums/$spkg fi done < $builddir/files.lst