Return to license-check CVS log | Up to [local] / ports |
File: [local] / ports / Attic / license-check (download)
Revision 1.4, Fri Sep 25 02:34:31 1998 UTC (25 years, 8 months ago) by marc
checkpoint more licence check changes |
#! /bin/sh # # $OpenBSD: license-check,v 1.4 1998/09/25 02:34:31 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 `mv -f xxx ../licensed' command so # they can be fed to the shell (after manual # verification) to move them into a directory # that will not be copied to any CD-ROM. # # Unknown files: files that are noted in the LICENSE file but # do not have a distribution flag of either Y or N. # # 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.mk 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 license 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 } else { unk_files[ $3 ] = 0 } } } extra_count = 0 } $1 in good_files { good_files[ $1 ] = 1 next } $1 in bad_files { bad_files[ $1 ] = 1 next } $1 in unk_files { unk_files[ $1 ] = 1 next } { extra_files[ extra_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 } } for ( f in unk_files ) { if ( unk_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 ) { print "You MUST move the following files/directories:" print header = 1 } print "/bin/mv -f", f, "../licensed" } } if ( header ) { print header = 0 } for ( f in unk_files ) { if ( unk_files[ f ] == 1 ) { if ( ! header ) { print "The status of the following files is unknown:" print header = 1 } print f } } if ( header ) { print header = 0 } if ( extra_count > 0 ) { print "The following files/dirs are extra and " \ "should probably be removed:" print for ( i = 0; i < extra_count; i += 1 ) { print "/bin/rm -rf", extra_files[ i ] } print } } ' exit 0