1999-10-27 03:30:08 +08:00
|
|
|
#!/bin/sh
|
2005-10-22 23:35:28 +08:00
|
|
|
#
|
|
|
|
# Copyright by the Board of Trustees of the University of Illinois.
|
|
|
|
# All rights reserved.
|
|
|
|
#
|
|
|
|
# This file is part of HDF5. The full HDF5 copyright notice, including
|
|
|
|
# terms governing use, modification, and redistribution, is contained in
|
|
|
|
# the files COPYING and Copyright.html. COPYING can be found at the root
|
|
|
|
# of the source code distribution tree; Copyright.html can be found at the
|
|
|
|
# root level of an installed copy of the electronic HDF5 document set and
|
|
|
|
# is linked from the top-level documents page. It can also be found at
|
|
|
|
# http://hdf.ncsa.uiuc.edu/HDF5/doc/Copyright.html. If you do not have
|
|
|
|
# access to either file, you may request a copy from hdfhelp@ncsa.uiuc.edu.
|
|
|
|
#
|
1999-10-27 03:30:08 +08:00
|
|
|
|
|
|
|
# Check that all the files in MANIFEST exist and that (if this is a
|
2006-07-21 03:02:14 +08:00
|
|
|
# SVN checkout) that all the SVN-managed files appear in the
|
1999-10-27 03:30:08 +08:00
|
|
|
# MANIFEST.
|
|
|
|
|
|
|
|
verbose=yes
|
|
|
|
MANIFEST=/tmp/H5_MANIFEST.$$
|
|
|
|
|
2006-07-21 03:02:14 +08:00
|
|
|
# function definitions
|
|
|
|
|
2007-01-21 14:09:25 +08:00
|
|
|
GETSVNENTRIES_13 ()
|
|
|
|
# Purpose: Extract filenames from the svn v1.3.* entries file
|
2006-07-21 03:02:14 +08:00
|
|
|
# $1: directory name in which the svn entries is.
|
|
|
|
# steps:
|
|
|
|
# 1. remove all single line entries so that step 2 does not fail on them.
|
|
|
|
# 2. merge all multiple lines entries into single lines.
|
|
|
|
# 3. remove all non file entries.
|
|
|
|
# 4. insert a blank line because some entries files has no kind="file"
|
|
|
|
# entry and ed does not like to do g on an empty file.
|
|
|
|
# 5. remove everything except the file name.
|
|
|
|
# 6. remove all blank lines, including the inserted one.
|
|
|
|
{
|
|
|
|
SVNENTRY=/tmp/H5_SVNENTRY.$$
|
|
|
|
cp $1/entries $SVNENTRY
|
|
|
|
chmod u+w $SVNENTRY # entries file is not writable.
|
|
|
|
ed - $SVNENTRY <<EOF
|
|
|
|
g/^<.*>$/d
|
|
|
|
g/^</.,/>$/j
|
|
|
|
v/kind="file"/d
|
|
|
|
a
|
|
|
|
|
|
|
|
.
|
|
|
|
g/.*name="/s///
|
|
|
|
g/".*/s///
|
|
|
|
g/^$/d
|
|
|
|
w
|
|
|
|
q
|
|
|
|
EOF
|
|
|
|
cat $SVNENTRY
|
|
|
|
rm $SVNENTRY
|
|
|
|
}
|
|
|
|
|
2007-01-21 14:09:25 +08:00
|
|
|
GETSVNENTRIES_14 ()
|
|
|
|
# Purpose: Extract filenames from the svn v1.4.* entries file
|
|
|
|
# $1: directory name in which the svn entries is.
|
|
|
|
# steps:
|
|
|
|
# 1. all valid files are followed by a line containing "file" only.
|
|
|
|
# 2. find them by looking for "file" first, then mark its preceding line as
|
|
|
|
# wanted.
|
|
|
|
# 3. remove all non-marked line.
|
|
|
|
{
|
|
|
|
SVNENTRY=/tmp/H5_SVNENTRY.$$
|
|
|
|
cp $1/entries $SVNENTRY
|
|
|
|
chmod u+w $SVNENTRY # entries file is not writable.
|
|
|
|
ed - $SVNENTRY <<EOF
|
|
|
|
g/^file$/-s/^/%WANTED%/
|
|
|
|
v/%WANTED%/d
|
|
|
|
%s/%WANTED%//
|
|
|
|
w
|
|
|
|
q
|
|
|
|
EOF
|
|
|
|
cat $SVNENTRY
|
|
|
|
rm $SVNENTRY
|
|
|
|
}
|
|
|
|
|
2006-07-21 03:02:14 +08:00
|
|
|
|
|
|
|
# Main
|
|
|
|
test "$verbose" && echo " Checking MANIFEST..." 1>&2
|
2000-06-08 04:41:49 +08:00
|
|
|
# clean up $MANIFEST file when exits
|
|
|
|
trap "rm -f $MANIFEST" 0
|
|
|
|
|
2006-08-06 15:45:52 +08:00
|
|
|
# First make sure i am in the directory in which there is an MANIFEST file
|
|
|
|
# and then do the checking from there. Will try the following,
|
|
|
|
# current directory, parent directory, the directory this command resides.
|
|
|
|
if [ -f MANIFEST ]; then
|
|
|
|
continue
|
|
|
|
elif [ -f ../MANIFEST ]; then
|
|
|
|
cd ..
|
|
|
|
else
|
|
|
|
commanddir=`dirname $0`
|
|
|
|
if [ -d "$commanddir" -a -f $commanddir/MANIFEST ]; then
|
|
|
|
cd $commanddir
|
|
|
|
continue
|
|
|
|
else
|
|
|
|
echo MANIFEST file not found. Abort.
|
|
|
|
exit 1
|
|
|
|
fi
|
2006-07-21 03:02:14 +08:00
|
|
|
fi
|
|
|
|
|
1999-10-27 03:30:08 +08:00
|
|
|
# Copy the manifest file to get a list of file names.
|
|
|
|
grep '^\.' MANIFEST | expand | cut -f1 -d' ' >$MANIFEST
|
|
|
|
|
|
|
|
for file in `cat $MANIFEST`; do
|
|
|
|
if [ ! -f $file ]; then
|
|
|
|
echo "- $file"
|
|
|
|
fail=yes
|
|
|
|
fi
|
|
|
|
done
|
2006-07-21 03:02:14 +08:00
|
|
|
|
2007-01-21 14:09:25 +08:00
|
|
|
# According to svn version, figure out the right version of GETSVNENTRIES
|
|
|
|
# to use.
|
|
|
|
svnversion=`svn --version --quiet`
|
|
|
|
|
|
|
|
case "$svnversion" in
|
|
|
|
1.4.*)
|
|
|
|
getsvnentries=GETSVNENTRIES_14
|
|
|
|
;;
|
|
|
|
1.3.*)
|
|
|
|
getsvnentries=GETSVNENTRIES_13
|
|
|
|
;;
|
|
|
|
*) #default to 1.3
|
|
|
|
getsvnentries=GETSVNENTRIES_13
|
|
|
|
;;
|
|
|
|
esac
|
|
|
|
|
2006-07-21 03:02:14 +08:00
|
|
|
for svn in `find . -type d -name .svn -print`; do
|
|
|
|
path=`echo $svn |sed 's/\/.svn//'`
|
2007-01-21 14:09:25 +08:00
|
|
|
for file in `$getsvnentries $svn`; do
|
|
|
|
if (grep ^$path/$file$ $MANIFEST >/dev/null); then
|
1999-10-27 03:30:08 +08:00
|
|
|
:
|
|
|
|
else
|
|
|
|
echo "+ $path/$file"
|
|
|
|
fail=yes
|
|
|
|
fi
|
|
|
|
done
|
|
|
|
done
|
|
|
|
|
|
|
|
if [ "X$fail" = "Xyes" ]; then
|
|
|
|
cat 1>&2 <<EOF
|
|
|
|
The MANIFEST is out of date. Files marked with a minus sign (-) no
|
2006-07-21 03:02:14 +08:00
|
|
|
longer exist; files marked with a plus sign (+) are SVN-managed but do
|
1999-10-27 03:30:08 +08:00
|
|
|
not appear in the MANIFEST. Please remedy the situation and try again.
|
|
|
|
EOF
|
|
|
|
exit 1
|
|
|
|
fi
|
|
|
|
|
2000-01-08 07:23:57 +08:00
|
|
|
test "$verbose" && echo " The MANIFEST is up to date." 1>&2
|
1999-10-27 03:30:08 +08:00
|
|
|
exit 0
|