Annotation of qemu/roms/ipxe/src/util/licence.pl, revision 1.1

1.1     ! root        1: #!/usr/bin/perl -w
        !             2: #
        !             3: # Copyright (C) 2008 Michael Brown <[email protected]>.
        !             4: #
        !             5: # This program is free software; you can redistribute it and/or
        !             6: # modify it under the terms of the GNU General Public License as
        !             7: # published by the Free Software Foundation; either version 2 of the
        !             8: # License, or any later version.
        !             9: #
        !            10: # This program is distributed in the hope that it will be useful, but
        !            11: # WITHOUT ANY WARRANTY; without even the implied warranty of
        !            12: # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
        !            13: # General Public License for more details.
        !            14: #
        !            15: # You should have received a copy of the GNU General Public License
        !            16: # along with this program; if not, write to the Free Software
        !            17: # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
        !            18: 
        !            19: use strict;
        !            20: use warnings;
        !            21: use Getopt::Long;
        !            22: 
        !            23: # List of licences we can handle
        !            24: my $known_licences = {
        !            25:   gpl_any => {
        !            26:     desc => "GPL (any version)",
        !            27:     can_subsume => {
        !            28:       public_domain => 1,
        !            29:       bsd3 => 1,
        !            30:       bsd2 => 1,
        !            31:       mit  => 1,
        !            32:       isc  => 1,
        !            33:     },
        !            34:   },
        !            35:   gpl2_or_later => {
        !            36:     desc => "GPL version 2 (or, at your option, any later version)",
        !            37:     can_subsume => {
        !            38:       gpl_any => 1,
        !            39:       public_domain => 1,
        !            40:       bsd3 => 1,
        !            41:       bsd2 => 1,
        !            42:       mit  => 1,
        !            43:       isc  => 1,
        !            44:     },
        !            45:   },
        !            46:   gpl2_only => {
        !            47:     desc => "GPL version 2 only",
        !            48:     can_subsume => {
        !            49:       gpl_any => 1,
        !            50:       gpl2_or_later => 1,
        !            51:       public_domain => 1,
        !            52:       bsd3 => 1,
        !            53:       bsd2 => 1,
        !            54:       mit  => 1,
        !            55:       isc  => 1,
        !            56:     },
        !            57:   },
        !            58:   public_domain => {
        !            59:     desc => "Public Domain",
        !            60:     can_subsume => {},
        !            61:   },
        !            62:   bsd4 => {
        !            63:     desc => "BSD Licence (with advertising clause)",
        !            64:     can_subsume => {
        !            65:       public_domain => 1,
        !            66:       bsd3 => 1,
        !            67:       bsd2 => 1,
        !            68:       mit  => 1,
        !            69:       isc  => 1,
        !            70:     },
        !            71:   },
        !            72:   bsd3 => {
        !            73:     desc => "BSD Licence (without advertising clause)",
        !            74:     can_subsume => {
        !            75:       public_domain => 1,
        !            76:       bsd2 => 1,
        !            77:       mit  => 1,
        !            78:       isc  => 1,
        !            79:     },
        !            80:   },
        !            81:   bsd2 => {
        !            82:     desc => "BSD Licence (without advertising or endorsement clauses)",
        !            83:     can_subsume => {
        !            84:       public_domain => 1,
        !            85:       mit  => 1,
        !            86:       isc  => 1,
        !            87:     },
        !            88:   },
        !            89:   mit => {
        !            90:     desc => "MIT/X11/Xorg Licence",
        !            91:     can_subsume => {
        !            92:       public_domain => 1,
        !            93:       isc => 1,
        !            94:     },
        !            95:   },
        !            96:   isc => {
        !            97:     desc => "ISC Licence",
        !            98:     can_subsume => {
        !            99:       public_domain => 1,
        !           100:     },
        !           101:   },
        !           102: };
        !           103: 
        !           104: # Parse command-line options
        !           105: my $verbosity = 1;
        !           106: Getopt::Long::Configure ( 'bundling', 'auto_abbrev' );
        !           107: GetOptions (
        !           108:   'verbose|v+' => sub { $verbosity++; },
        !           109:   'quiet|q+' => sub { $verbosity--; },
        !           110: ) or die "Could not parse command-line options\n";
        !           111: 
        !           112: # Parse licence list from command line
        !           113: my $licences = {};
        !           114: foreach my $licence ( @ARGV ) {
        !           115:   die "Unknown licence \"$licence\"\n"
        !           116:       unless exists $known_licences->{$licence};
        !           117:   $licences->{$licence} = $known_licences->{$licence};
        !           118: }
        !           119: die "No licences specified\n" unless %$licences;
        !           120: 
        !           121: # Dump licence list
        !           122: if ( $verbosity >= 1 ) {
        !           123:   print "The following licences appear within this file:\n";
        !           124:   foreach my $licence ( keys %$licences ) {
        !           125:     print "  ".$licences->{$licence}->{desc}."\n"
        !           126:   }
        !           127: }
        !           128: 
        !           129: # Apply licence compatibilities to reduce to a single resulting licence
        !           130: foreach my $licence ( keys %$licences ) {
        !           131:   # Skip already-deleted licences
        !           132:   next unless exists $licences->{$licence};
        !           133:   # Subsume any subsumable licences
        !           134:   foreach my $can_subsume ( keys %{$licences->{$licence}->{can_subsume}} ) {
        !           135:     if ( exists $licences->{$can_subsume} ) {
        !           136:       print $licences->{$licence}->{desc}." subsumes ".
        !           137:          $licences->{$can_subsume}->{desc}."\n"
        !           138:          if $verbosity >= 1;
        !           139:       delete $licences->{$can_subsume};
        !           140:     }
        !           141:   }
        !           142: }
        !           143: 
        !           144: # Print resulting licence
        !           145: die "Cannot reduce to a single resulting licence!\n"
        !           146:     if ( keys %$licences ) != 1;
        !           147: ( my $licence ) = keys %$licences;
        !           148: print "The overall licence for this file is:\n  " if $verbosity >= 1;
        !           149: print $licences->{$licence}->{desc}."\n";

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.