Files
ipxe/src/util/licence.pl
Michael Brown 2782ccec41 [legal] Add support for the Unmodified Binary Distribution Licence
Add the text for the Unmodified Binary Distribution Licence.  This
Licence allows for the distribution of unmodified binaries built from
publicly available source code, without imposing the obligations of
the GNU General Public License upon anyone who chooses to distribute
only the unmodified binaries built from that source code.  See the
licence text for the precise terms and conditions.

Add the licence GPL2_OR_LATER_OR_UBDL to the set of licences which can
be declared using FILE_LICENCE(), and add the corresponding support to
licence.pl.

Signed-off-by: Michael Brown <mcb30@ipxe.org>
2015-03-02 12:07:14 +00:00

164 lines
4.1 KiB
Perl
Executable File

#!/usr/bin/perl -w
#
# Copyright (C) 2008 Michael Brown <mbrown@fensystems.co.uk>.
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License as
# published by the Free Software Foundation; either version 2 of the
# License, or any later version.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
# 02110-1301, USA.
use strict;
use warnings;
use Getopt::Long;
# List of licences we can handle
my $known_licences = {
gpl_any => {
desc => "GPL (any version)",
can_subsume => {
public_domain => 1,
bsd3 => 1,
bsd2 => 1,
mit => 1,
isc => 1,
},
},
gpl2_or_later => {
desc => "GPL version 2 (or, at your option, any later version)",
can_subsume => {
gpl_any => 1,
gpl2_or_later_or_ubdl => 1,
public_domain => 1,
bsd3 => 1,
bsd2 => 1,
mit => 1,
isc => 1,
},
},
gpl2_only => {
desc => "GPL version 2 only",
can_subsume => {
gpl_any => 1,
gpl2_or_later => 1,
gpl2_or_later_or_ubdl => 1,
public_domain => 1,
bsd3 => 1,
bsd2 => 1,
mit => 1,
isc => 1,
},
},
gpl2_or_later_or_ubdl => {
desc => ( "GPL version 2 (or, at your option, any later version) or ".
"Unmodified Binary Distribution Licence" ),
can_subsume => {
public_domain => 1,
bsd3 => 1,
bsd2 => 1,
mit => 1,
isc => 1,
},
},
public_domain => {
desc => "Public Domain",
can_subsume => {},
},
bsd4 => {
desc => "BSD Licence (with advertising clause)",
can_subsume => {
public_domain => 1,
bsd3 => 1,
bsd2 => 1,
mit => 1,
isc => 1,
},
},
bsd3 => {
desc => "BSD Licence (without advertising clause)",
can_subsume => {
public_domain => 1,
bsd2 => 1,
mit => 1,
isc => 1,
},
},
bsd2 => {
desc => "BSD Licence (without advertising or endorsement clauses)",
can_subsume => {
public_domain => 1,
mit => 1,
isc => 1,
},
},
mit => {
desc => "MIT/X11/Xorg Licence",
can_subsume => {
public_domain => 1,
isc => 1,
},
},
isc => {
desc => "ISC Licence",
can_subsume => {
public_domain => 1,
},
},
};
# Parse command-line options
my $verbosity = 1;
Getopt::Long::Configure ( 'bundling', 'auto_abbrev' );
GetOptions (
'verbose|v+' => sub { $verbosity++; },
'quiet|q+' => sub { $verbosity--; },
) or die "Could not parse command-line options\n";
# Parse licence list from command line
my $licences = {};
foreach my $licence ( @ARGV ) {
die "Unknown licence \"$licence\"\n"
unless exists $known_licences->{$licence};
$licences->{$licence} = $known_licences->{$licence};
}
die "No licences specified\n" unless %$licences;
# Dump licence list
if ( $verbosity >= 1 ) {
print "The following licences appear within this file:\n";
foreach my $licence ( keys %$licences ) {
print " ".$licences->{$licence}->{desc}."\n"
}
}
# Apply licence compatibilities to reduce to a single resulting licence
foreach my $licence ( keys %$licences ) {
# Skip already-deleted licences
next unless exists $licences->{$licence};
# Subsume any subsumable licences
foreach my $can_subsume ( keys %{$licences->{$licence}->{can_subsume}} ) {
if ( exists $licences->{$can_subsume} ) {
print $licences->{$licence}->{desc}." subsumes ".
$licences->{$can_subsume}->{desc}."\n"
if $verbosity >= 1;
delete $licences->{$can_subsume};
}
}
}
# Print resulting licence
die "Cannot reduce to a single resulting licence!\n"
if ( keys %$licences ) != 1;
( my $licence ) = keys %$licences;
print "The overall licence for this file is:\n " if $verbosity >= 1;
print $licences->{$licence}->{desc}."\n";