diff --git a/src/etc/check-summary.py b/src/etc/check-summary.py index 7faacbfbb26..272bbc6fbbd 100755 --- a/src/etc/check-summary.py +++ b/src/etc/check-summary.py @@ -1,4 +1,5 @@ #!/usr/bin/env python +# xfail-license import sys diff --git a/src/etc/combine-tests.py b/src/etc/combine-tests.py index 1e3c0bcfbfc..d6efcbc4642 100755 --- a/src/etc/combine-tests.py +++ b/src/etc/combine-tests.py @@ -1,4 +1,5 @@ #!/usr/bin/env python +# xfail-license # this combines all the working run-pass tests into a single large crate so we # can run it "fast": spawning zillions of windows processes is our major build diff --git a/src/etc/extract-tests.py b/src/etc/extract-tests.py index 891e8674f88..9d9b7817f4b 100644 --- a/src/etc/extract-tests.py +++ b/src/etc/extract-tests.py @@ -1,3 +1,5 @@ +# xfail-license + # Script for extracting compilable fragments from markdown # documentation. See prep.js for a description of the format # recognized by this tool. Expects a directory fragements/ to exist diff --git a/src/etc/extract_grammar.py b/src/etc/extract_grammar.py index 63e89563464..58d1975c042 100755 --- a/src/etc/extract_grammar.py +++ b/src/etc/extract_grammar.py @@ -1,4 +1,5 @@ #!/usr/bin/env python +# xfail-license # This script is for extracting the grammar from the rust docs. diff --git a/src/etc/get-snapshot.py b/src/etc/get-snapshot.py index 7d390c8c9aa..130ace64ce4 100755 --- a/src/etc/get-snapshot.py +++ b/src/etc/get-snapshot.py @@ -1,4 +1,5 @@ #!/usr/bin/env python +# xfail-license import os, tarfile, re, shutil, sys from snapshot import * diff --git a/src/etc/latest-unix-snaps.py b/src/etc/latest-unix-snaps.py index 01d9edddf78..7a2ddba3a16 100755 --- a/src/etc/latest-unix-snaps.py +++ b/src/etc/latest-unix-snaps.py @@ -1,4 +1,5 @@ #!/usr/bin/env python +# xfail-license import os, tarfile, hashlib, re, shutil, sys from snapshot import * diff --git a/src/etc/licenseck.py b/src/etc/licenseck.py new file mode 100644 index 00000000000..14d00e8c2cb --- /dev/null +++ b/src/etc/licenseck.py @@ -0,0 +1,72 @@ +# Copyright 2013 The Rust Project Developers. See the COPYRIGHT +# file at the top-level directory of this distribution and at +# http://rust-lang.org/COPYRIGHT. +# +# Licensed under the Apache License, Version 2.0 or the MIT license +# , at your +# option. This file may not be copied, modified, or distributed +# except according to those terms. + +license1 = """// Copyright 2012 The Rust Project Developers. See the COPYRIGHT +// file at the top-level directory of this distribution and at +// http://rust-lang.org/COPYRIGHT. +// +// Licensed under the Apache License, Version 2.0 or the MIT license +// , at your +// option. This file may not be copied, modified, or distributed +// except according to those terms. +""" + +license2 = """// Copyright 2013 The Rust Project Developers. See the COPYRIGHT +// file at the top-level directory of this distribution and at +// http://rust-lang.org/COPYRIGHT. +// +// Licensed under the Apache License, Version 2.0 or the MIT license +// , at your +// option. This file may not be copied, modified, or distributed +// except according to those terms. +""" + +license3 = """# Copyright 2013 The Rust Project Developers. See the COPYRIGHT +# file at the top-level directory of this distribution and at +# http://rust-lang.org/COPYRIGHT. +# +# Licensed under the Apache License, Version 2.0 or the MIT license +# , at your +# option. This file may not be copied, modified, or distributed +# except according to those terms. +""" + +licenses = [license1, license2, license3] + +exceptions = [ + "rt/rust_android_dummy.cpp", # BSD, chromium + "rt/rust_android_dummy.h", # BSD, chromium + "rt/isaac/randport.cpp", # public domain + "rt/isaac/rand.h", # public domain + "rt/isaac/standard.h", # public domain +] + +def check_license(name, contents): + valid_license = False + for a_valid_license in licenses: + if contents.startswith(a_valid_license): + valid_license = True + break + if valid_license: + return True + + for exception in exceptions: + if name.endswith(exception): + return True + + firstlineish = contents[:100] + if firstlineish.find("xfail-license") != -1: + return True + + return False + diff --git a/src/etc/make-snapshot.py b/src/etc/make-snapshot.py index 4c2950af1cc..27d17c2ff16 100755 --- a/src/etc/make-snapshot.py +++ b/src/etc/make-snapshot.py @@ -1,4 +1,5 @@ #!/usr/bin/env python +# xfail-license import snapshot, sys diff --git a/src/etc/mirror-all-snapshots.py b/src/etc/mirror-all-snapshots.py index f4bb8c042ea..f1fce7a94b5 100644 --- a/src/etc/mirror-all-snapshots.py +++ b/src/etc/mirror-all-snapshots.py @@ -1,4 +1,5 @@ #!/usr/bin/env python +# xfail-license import os, tarfile, hashlib, re, shutil from snapshot import * diff --git a/src/etc/snapshot.py b/src/etc/snapshot.py index b19a44e968d..123987d4b1e 100644 --- a/src/etc/snapshot.py +++ b/src/etc/snapshot.py @@ -1,3 +1,5 @@ +# xfail-license + import re, os, sys, glob, tarfile, shutil, subprocess, tempfile try: diff --git a/src/etc/sugarise-doc-comments.py b/src/etc/sugarise-doc-comments.py index bd21447ffcc..6399cff6b88 100755 --- a/src/etc/sugarise-doc-comments.py +++ b/src/etc/sugarise-doc-comments.py @@ -1,4 +1,5 @@ #!/usr/bin/env python +# xfail-license # # this script attempts to turn doc comment attributes (#[doc = "..."]) diff --git a/src/etc/tidy.py b/src/etc/tidy.py index 2c498b9283f..e866d80062d 100644 --- a/src/etc/tidy.py +++ b/src/etc/tidy.py @@ -1,6 +1,8 @@ #!/usr/bin/env python +# xfail-license import sys, fileinput, subprocess, re +from licenseck import * err=0 cols=78 @@ -13,14 +15,25 @@ result=config_proc.communicate()[0] true="true".encode('utf8') autocrlf=result.strip() == true if result is not None else False -def report_err(s): +def report_error_name_no(name, no, s): global err - print("%s:%d: %s" % (fileinput.filename(), fileinput.filelineno(), s)) + print("%s:%d: %s" % (name, no, s)) err=1 +def report_err(s): + report_error_name_no(fileinput.filename(), fileinput.filelineno(), s) + +def do_license_check(name, contents): + if not check_license(name, contents): + report_error_name_no(name, 1, "incorrect license") + + file_names = [s for s in sys.argv[1:] if (not s.endswith("_gen.rs")) and (not ".#" in s)] +current_name = "" +current_contents = "" + try: for line in fileinput.input(file_names, openhook=fileinput.hook_encoded("utf-8")): @@ -42,6 +55,19 @@ try: if line_len > cols: report_err("line longer than %d chars" % cols) + + if fileinput.isfirstline() and current_name != "": + do_license_check(current_name, current_contents) + + if fileinput.isfirstline(): + current_name = fileinput.filename() + current_contents = "" + + current_contents += line + + if current_name != "": + do_license_check(current_name, current_contents) + except UnicodeDecodeError, e: report_err("UTF-8 decoding error " + str(e)) diff --git a/src/etc/unicode.py b/src/etc/unicode.py index ff9f75e996e..5dabf34953b 100755 --- a/src/etc/unicode.py +++ b/src/etc/unicode.py @@ -1,4 +1,5 @@ #!/usr/bin/env python +# xfail-license # This digests UnicodeData.txt and DerivedCoreProperties.txt and emits rust # code covering the core properties. Since this is a pretty rare event we diff --git a/src/libcargo/cargo.rc b/src/libcargo/cargo.rc index ea67d0ea858..29a7af2bfdb 100644 --- a/src/libcargo/cargo.rc +++ b/src/libcargo/cargo.rc @@ -1,4 +1,3 @@ -// -*- rust -*- // Copyright 2012 The Rust Project Developers. See the COPYRIGHT // file at the top-level directory of this distribution and at // http://rust-lang.org/COPYRIGHT. diff --git a/src/libcore/bool.rs b/src/libcore/bool.rs index 3e7b88b7b78..2f3a53ea504 100644 --- a/src/libcore/bool.rs +++ b/src/libcore/bool.rs @@ -1,4 +1,3 @@ -// -*- rust -*- // Copyright 2012 The Rust Project Developers. See the COPYRIGHT // file at the top-level directory of this distribution and at // http://rust-lang.org/COPYRIGHT. diff --git a/src/libcore/os.rs b/src/libcore/os.rs index ff3253a8223..ffd41bc05b1 100644 --- a/src/libcore/os.rs +++ b/src/libcore/os.rs @@ -1,4 +1,4 @@ -// Copyright 2012 The Rust Project Developers.src/libcore/os.rs +// Copyright 2012 The Rust Project Developers. See the COPYRIGHT // file at the top-level directory of this distribution and at // http://rust-lang.org/COPYRIGHT. // diff --git a/src/libcore/prelude.rs b/src/libcore/prelude.rs index de23feceea5..63b7628f119 100644 --- a/src/libcore/prelude.rs +++ b/src/libcore/prelude.rs @@ -1,3 +1,13 @@ +// Copyright 2013 The Rust Project Developers. See the COPYRIGHT +// file at the top-level directory of this distribution and at +// http://rust-lang.org/COPYRIGHT. +// +// Licensed under the Apache License, Version 2.0 or the MIT license +// , at your +// option. This file may not be copied, modified, or distributed +// except according to those terms. + // This file is imported into every module by default. /* Reexported core operators */ diff --git a/src/libfuzzer/fuzzer.rc b/src/libfuzzer/fuzzer.rc index 3f37b6d1794..b7ec10e1a4f 100644 --- a/src/libfuzzer/fuzzer.rc +++ b/src/libfuzzer/fuzzer.rc @@ -1,4 +1,3 @@ -// -*- rust -*- // Copyright 2012 The Rust Project Developers. See the COPYRIGHT // file at the top-level directory of this distribution and at // http://rust-lang.org/COPYRIGHT. diff --git a/src/librustc/driver/driver.rs b/src/librustc/driver/driver.rs index 740cc526310..70cad499e4c 100644 --- a/src/librustc/driver/driver.rs +++ b/src/librustc/driver/driver.rs @@ -1,4 +1,3 @@ -// -*- rust -*- // Copyright 2012 The Rust Project Developers. See the COPYRIGHT // file at the top-level directory of this distribution and at // http://rust-lang.org/COPYRIGHT. diff --git a/src/librustc/rustc.rc b/src/librustc/rustc.rc index 56a22899193..4e101eb5bb7 100644 --- a/src/librustc/rustc.rc +++ b/src/librustc/rustc.rc @@ -1,4 +1,3 @@ -// -*- rust -*- // Copyright 2012 The Rust Project Developers. See the COPYRIGHT // file at the top-level directory of this distribution and at // http://rust-lang.org/COPYRIGHT. diff --git a/src/libstd/bigint.rs b/src/libstd/bigint.rs index 303129c2849..678565ee325 100644 --- a/src/libstd/bigint.rs +++ b/src/libstd/bigint.rs @@ -1,3 +1,13 @@ +// Copyright 2013 The Rust Project Developers. See the COPYRIGHT +// file at the top-level directory of this distribution and at +// http://rust-lang.org/COPYRIGHT. +// +// Licensed under the Apache License, Version 2.0 or the MIT license +// , at your +// option. This file may not be copied, modified, or distributed +// except according to those terms. + /*! A Big integer (signed version: BigInt, unsigned version: BigUint). diff --git a/src/libstd/flatpipes.rs b/src/libstd/flatpipes.rs index 0607055db5c..534f1b7d479 100644 --- a/src/libstd/flatpipes.rs +++ b/src/libstd/flatpipes.rs @@ -1,3 +1,13 @@ +// Copyright 2013 The Rust Project Developers. See the COPYRIGHT +// file at the top-level directory of this distribution and at +// http://rust-lang.org/COPYRIGHT. +// +// Licensed under the Apache License, Version 2.0 or the MIT license +// , at your +// option. This file may not be copied, modified, or distributed +// except according to those terms. + /*! Generic communication channels for things that can be represented as, diff --git a/src/libstd/priority_queue.rs b/src/libstd/priority_queue.rs index 4d341d737f6..b9c040de42a 100644 --- a/src/libstd/priority_queue.rs +++ b/src/libstd/priority_queue.rs @@ -1,3 +1,12 @@ +// Copyright 2013 The Rust Project Developers. See the COPYRIGHT +// file at the top-level directory of this distribution and at +// http://rust-lang.org/COPYRIGHT. +// +// Licensed under the Apache License, Version 2.0 or the MIT license +// , at your +// option. This file may not be copied, modified, or distributed +// except according to those terms. //! A priority queue implemented with a binary heap diff --git a/src/rt/arch/arm/context.cpp b/src/rt/arch/arm/context.cpp index dbf06a532a8..2c735e410fa 100644 --- a/src/rt/arch/arm/context.cpp +++ b/src/rt/arch/arm/context.cpp @@ -1,3 +1,4 @@ +// xfail-license #include "context.h" #include "../../rust_globals.h" diff --git a/src/rt/arch/arm/context.h b/src/rt/arch/arm/context.h index 6c7db766d6a..54f0df7de31 100644 --- a/src/rt/arch/arm/context.h +++ b/src/rt/arch/arm/context.h @@ -1,4 +1,5 @@ // -*- mode: c++ -*- +// xfail-license #ifndef CONTEXT_H #define CONTEXT_H diff --git a/src/rt/arch/arm/gpr.cpp b/src/rt/arch/arm/gpr.cpp index 32a68d0732a..6dd385fb330 100644 --- a/src/rt/arch/arm/gpr.cpp +++ b/src/rt/arch/arm/gpr.cpp @@ -1,3 +1,5 @@ +// xfail-license + #include "gpr.h" #define LOAD(rn) do { \ diff --git a/src/rt/arch/arm/gpr.h b/src/rt/arch/arm/gpr.h index 472c8a05e35..49db1429903 100644 --- a/src/rt/arch/arm/gpr.h +++ b/src/rt/arch/arm/gpr.h @@ -1,3 +1,4 @@ +// xfail-license // General-purpose registers. This structure is used during stack crawling. #ifndef GPR_H diff --git a/src/rt/arch/arm/regs.h b/src/rt/arch/arm/regs.h index a49fcab1184..2b44bd3af35 100644 --- a/src/rt/arch/arm/regs.h +++ b/src/rt/arch/arm/regs.h @@ -1,3 +1,5 @@ +// xfail-license + #define RUSTRT_RBX 0 #define RUSTRT_RSP 1 #define RUSTRT_RBP 2 diff --git a/src/rt/arch/i386/context.h b/src/rt/arch/i386/context.h index 99d633ebff2..33352b4a556 100644 --- a/src/rt/arch/i386/context.h +++ b/src/rt/arch/i386/context.h @@ -1,4 +1,3 @@ -// -*- mode: c++ -*- // Copyright 2012 The Rust Project Developers. See the COPYRIGHT // file at the top-level directory of this distribution and at // http://rust-lang.org/COPYRIGHT. diff --git a/src/rt/arch/x86_64/context.h b/src/rt/arch/x86_64/context.h index f78c92e365a..b768a1fb7b0 100644 --- a/src/rt/arch/x86_64/context.h +++ b/src/rt/arch/x86_64/context.h @@ -1,4 +1,3 @@ -// -*- mode: c++ -*- // Copyright 2012 The Rust Project Developers. See the COPYRIGHT // file at the top-level directory of this distribution and at // http://rust-lang.org/COPYRIGHT. diff --git a/src/rt/rust_kernel.h b/src/rt/rust_kernel.h index cd52bfae8d3..48522b57d5c 100644 --- a/src/rt/rust_kernel.h +++ b/src/rt/rust_kernel.h @@ -1,4 +1,3 @@ -// -*- c++ -*- // Copyright 2012 The Rust Project Developers. See the COPYRIGHT // file at the top-level directory of this distribution and at // http://rust-lang.org/COPYRIGHT. diff --git a/src/rt/rust_log.h b/src/rt/rust_log.h index 8b32b1cc910..b98d8477dbc 100644 --- a/src/rt/rust_log.h +++ b/src/rt/rust_log.h @@ -1,4 +1,3 @@ -// -*- c++ -*- // Copyright 2012 The Rust Project Developers. See the COPYRIGHT // file at the top-level directory of this distribution and at // http://rust-lang.org/COPYRIGHT. diff --git a/src/rt/sync/lock_and_signal.h b/src/rt/sync/lock_and_signal.h index 1ed494a77ae..5a0eb83a394 100644 --- a/src/rt/sync/lock_and_signal.h +++ b/src/rt/sync/lock_and_signal.h @@ -1,4 +1,3 @@ -// -*- c++ -*- // Copyright 2012 The Rust Project Developers. See the COPYRIGHT // file at the top-level directory of this distribution and at // http://rust-lang.org/COPYRIGHT. diff --git a/src/rt/sync/sync.h b/src/rt/sync/sync.h index 13d11a55021..6ac97d57933 100644 --- a/src/rt/sync/sync.h +++ b/src/rt/sync/sync.h @@ -1,4 +1,3 @@ -// -*- c++ -*- // Copyright 2012 The Rust Project Developers. See the COPYRIGHT // file at the top-level directory of this distribution and at // http://rust-lang.org/COPYRIGHT. diff --git a/src/rt/util/array_list.h b/src/rt/util/array_list.h index 4bef26750db..0852cf9497e 100644 --- a/src/rt/util/array_list.h +++ b/src/rt/util/array_list.h @@ -1,4 +1,3 @@ -// -*- c++ -*- // Copyright 2012 The Rust Project Developers. See the COPYRIGHT // file at the top-level directory of this distribution and at // http://rust-lang.org/COPYRIGHT. diff --git a/src/rt/util/hash_map.h b/src/rt/util/hash_map.h index 253a7a06fb7..e5bef45c1c3 100644 --- a/src/rt/util/hash_map.h +++ b/src/rt/util/hash_map.h @@ -1,4 +1,3 @@ -// -*- c++ -*- // Copyright 2012 The Rust Project Developers. See the COPYRIGHT // file at the top-level directory of this distribution and at // http://rust-lang.org/COPYRIGHT. diff --git a/src/rt/util/indexed_list.h b/src/rt/util/indexed_list.h index 88f4f277618..4673e9e27e3 100644 --- a/src/rt/util/indexed_list.h +++ b/src/rt/util/indexed_list.h @@ -1,4 +1,3 @@ -// -*- c++ -*- // Copyright 2012 The Rust Project Developers. See the COPYRIGHT // file at the top-level directory of this distribution and at // http://rust-lang.org/COPYRIGHT.