openbsd-ports/license-check

125 lines
2.5 KiB
Plaintext
Raw Normal View History

#! /bin/sh
#
1998-04-13 01:16:02 -04:00
# $OpenBSD: license-check,v 1.2 1998/04/13 05:16:02 marc Exp $
#
# This script verifies that all files in a given directory are
# mentioned in the ports LICENSE file as Distribution allowed.
# Output is three lists:
#
# Missing files: files that should be in the directory (if the
# intent is to obtain all files that can be
# re-distributed) but are not.
#
# Bad files: files that must NOT be in a distribution
# directory. These are listed in the form
# of a shell `rm -f xxx' command so they can
# be fed to the shell after manual verification.
#
# Extra files: Files that are in the given directory that are
# not mentioned in the ports LICENSE file.
#
# The ports base directory. Note: this may be supplied from the environment
# using the standard bsd.port.mkl name of PORTSDIR
#
LICENCE=${PORTSDIR:-/usr/ports}/LICENSE
# Our name and a function to spit out the usage. Exit.
#
prog=`basename $0`
usage () {
if [ ! -z "$1" ]; then
echo "$prog: $1"
fi
echo "usage: $prog distribution-directory"
exit 1
}
# Verify we have one param and that it is the name of a directory.
# If not spit out our usage and exit
#
if [ $# -eq 1 ]; then
if [ -d $1 ]; then
DIST=$1
else
usage "$1 is not a directory"
fi
else
usage
fi
# This awk script matches the licence file agains an `ls' of of the given
# distribution directory and spits instructions out to stdout.
#
/bin/ls $DIST |
awk -v L=$LICENCE '
BEGIN {
# Process license file
#
while ( getline <L ) {
if ( NF == 4 ) {
if ( $1 == "Y" ) {
good_files[ $3 ] = 0
} else if ( $1 == "N" ) {
bad_files[ $3 ] = 0
}
}
}
unk_count = 0
}
$1 in good_files {
good_files[ $1 ] = 1
next
}
$1 in bad_files {
bad_files[ $1 ] = 1
next
}
{
unk_files[ unk_count++ ] = $1
}
END {
header = 0
for ( f in good_files ) {
if ( good_files[ f ] == 0 ) {
if ( ! header ) {
print "You are missing the following files:"
print
header = 1
}
print f
}
}
if ( header ) {
print
header = 0
}
for ( f in bad_files ) {
if ( bad_files[ f ] == 1 ) {
if ( ! header ) {
1998-04-13 01:16:02 -04:00
print "You MUST remove the following files/directories:"
print
header = 1
}
1998-04-13 01:16:02 -04:00
print "/bin/rm -rf", f
}
}
if ( header ) {
print
header = 0
}
if ( unk_count > 0 ) {
1998-04-13 01:16:02 -04:00
print "The following files/dirs are extra and " \
"should probably be removed:"
print
for ( i = 0; i < unk_count; i += 1 ) {
1998-04-13 01:16:02 -04:00
print "/bin/rm -rf", unk_files[ i ]
}
print
}
}
'
exit 0