#!/bin/sh # # Copyright by The HDF Group. # 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://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have # access to either file, you may request a copy from help@hdfgroup.org. # # Check that all the files in MANIFEST exist and that (if this is a # SVN checkout) that all the SVN-managed files appear in the # MANIFEST. verbose=yes MANIFEST=/tmp/HD_MANIFEST.$$ # Main test "$verbose" && echo " Checking MANIFEST..." 1>&2 # clean up $MANIFEST file when exits trap "rm -f $MANIFEST" 0 # Only split lines on newline, not whitespace set -f IFS=' ' # 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 fi # Check for duplicate entries. This can be done at any time, but it may as # well be sooner so that if something else fails the presence of duplicates # will already be known. errcode=0 DUPLICATES=`perl -ne 's/#.*//; next if /^\s*$/; if ($uniq{$_}++) { print $_; }' MANIFEST` if [ "$DUPLICATES" ]; then cat 1>&2 <$MANIFEST for file in `cat $MANIFEST`; do if [ ! -f $file ]; then echo "- $file" fail=yes fi done # Get the list of files under version control and check that they are # present. # # First get a list of all the pending files with svn stat and # check those. svn_stat=`svn stat -q` for file in $svn_stat; do # Newly added files are not listed by svn ls, which # we check later. # The line listing new files starts with 'A'. letter=`echo $file | head -c 1` if [ "$letter" = "A" ]; then # Convert the seven Subversion status columns to './' so it matches # the manifest file name. # # There is a space between the status columns and file name, hence # the '8' instead of '7'. path=`echo $file | sed 's/^.\{8\}/\.\//g'` # Ignore directories if [ ! -d $path ]; then if (grep ^$path$ $MANIFEST >/dev/null); then : else echo "- $path" fail=yes fi fi fi done # Next check svn ls, which gets a list of all files that are # checked in. svn_ls=`svn ls -R` for file in $svn_ls; do path="./${file}" # Ignore directories if [ ! -d $path ]; then if (grep ^$path$ $MANIFEST >/dev/null); then : else echo "+ $path" fail=yes fi fi done # Finish up if [ "X$fail" = "Xyes" ]; then cat 1>&2 <&2 exit 0