mirror of
https://github.com/rust-lang/rust.git
synced 2024-11-22 06:44:35 +00:00
Auto merge of #104527 - ferrocene:pa-more-licenses, r=pnkfelix
Add more license annotations This PR updates the `.reuse/dep5` file to include more accurate licensing data for everything in the repository (*excluding* submodules and dependencies). Some decisions were made in this PR: * The standard copyright attribution for files maintained by us is "The Rust Project Developers (see https://thanks.rust-lang.org)", to avoid having to maintain an in-tree `AUTHORS` file. * For files that have specific licensing terms, we added the terms to the `.reuse/dep5` rather than adding SPDX comments in the files themselves. * REUSE picks up any comment/text line with `Copyright` on it, so I had to sprinkle around `REUSE-IgnoreStart` and `REUSE-IgnoreEnd` comments. The rendered `COPYRIGHT` file is available at https://gist.github.com/pietroalbini/efb81103f69596d39758114f3f6a8688. r? `@pnkfelix`
This commit is contained in:
commit
6dfaa14366
88
.reuse/dep5
88
.reuse/dep5
@ -1,13 +1,79 @@
|
||||
# WARNING: this metadata is currently incomplete, do not rely on it yet.
|
||||
|
||||
Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
|
||||
Files-Excluded:
|
||||
src/llvm-project
|
||||
|
||||
Files: *
|
||||
# Note that we're explicitly listing the individual files at the root of the
|
||||
# repository rather than just having `Files: *`. This is explicitly done to
|
||||
# help downstream forks of the Rust compiler: this way, the files they add
|
||||
# won't be automatically marked as authored by the Rust project.
|
||||
Files: compiler/*
|
||||
library/*
|
||||
tests/*
|
||||
src/*
|
||||
.github/*
|
||||
Cargo.lock
|
||||
Cargo.toml
|
||||
CODE_OF_CONDUCT.md
|
||||
config.toml.example
|
||||
configure
|
||||
CONTRIBUTING.md
|
||||
COPYRIGHT
|
||||
LICENSE-APACHE
|
||||
LICENSE-MIT
|
||||
README.md
|
||||
RELEASES.md
|
||||
rustfmt.toml
|
||||
triagebot.toml
|
||||
x
|
||||
x.ps1
|
||||
x.py
|
||||
.editorconfig
|
||||
.git-blame-ignore-revs
|
||||
.gitattributes
|
||||
.gitignore
|
||||
.gitmodules
|
||||
.mailmap
|
||||
Copyright: The Rust Project Developers (see https://thanks.rust-lang.org)
|
||||
License: MIT or Apache-2.0
|
||||
|
||||
Files: compiler/rustc_apfloat/*
|
||||
Copyright: LLVM APFloat authors
|
||||
The Rust Project Developers (see https://thanks.rust-lang.org)
|
||||
License: NCSA AND (MIT OR Apache-2.0)
|
||||
|
||||
Files: compiler/rustc_codegen_cranelift/src/cranelift_native.rs
|
||||
Copyright: The Cranelift Project Developers
|
||||
The Rust Project Developers (see https://thanks.rust-lang.org)
|
||||
License: Apache-2.0 WITH LLVM-exception AND (Apache-2.0 OR MIT)
|
||||
|
||||
Files: compiler/rustc_llvm/llvm-wrapper/SymbolWrapper.cpp
|
||||
Copyright: LLVM authors
|
||||
The Rust Project Developers (see https://thanks.rust-lang.org)
|
||||
License: Apache-2.0 WITH LLVM-exception AND (Apache-2.0 OR MIT)
|
||||
|
||||
Files: library/core/src/unicode/unicode_data.rs
|
||||
Copyright: 1991-2022 Unicode, Inc. All rights reserved.
|
||||
License: Unicode-DFS-2016
|
||||
|
||||
Files: library/std/src/sync/mpmc/*
|
||||
Copyright: 2019 The Crossbeam Project Developers
|
||||
The Rust Project Developers (see https://thanks.rust-lang.org)
|
||||
License: MIT OR Apache-2.0
|
||||
|
||||
Files: library/std/src/sys/unix/locks/fuchsia_mutex.rs
|
||||
Copyright: 2016 The Fuchsia Authors
|
||||
The Rust Project Developers (see https://thanks.rust-lang.org)
|
||||
License: BSD-2-Clause AND (MIT OR Apache-2.0)
|
||||
|
||||
Files: src/test/rustdoc/auxiliary/enum-primitive.rs
|
||||
Copyright: 2015 Anders Kaseorg <andersk@mit.edu>
|
||||
License: MIT
|
||||
|
||||
Files: src/librustdoc/html/static/fonts/FiraSans*
|
||||
Copyright: 2014, Mozilla Foundation, 2014, Telefonica S.A.
|
||||
Copyright: 2014, Mozilla Foundation
|
||||
2014, Telefonica S.A.
|
||||
License: OFL-1.1
|
||||
|
||||
Files: src/librustdoc/html/static/fonts/NanumBarun*
|
||||
@ -15,9 +81,19 @@ Copyright: 2010 NAVER Corporation
|
||||
License: OFL-1.1
|
||||
|
||||
Files: src/librustdoc/html/static/fonts/SourceCodePro*
|
||||
Copyright: 2010, 2012 Adobe Systems Incorporated
|
||||
src/librustdoc/html/static/fonts/SourceSerif4*
|
||||
Copyright: 2010, 2012, 2014-2023, Adobe Systems Incorporated
|
||||
License: OFL-1.1
|
||||
|
||||
Files: src/librustdoc/html/static/fonts/SourceSerif4*
|
||||
Copyright: 2014-2021 Adobe Systems Incorporated
|
||||
License: OFL-1.1
|
||||
Files: src/librustdoc/html/static/css/normalize.css
|
||||
Copyright: Nicolas Gallagher and Jonathan Neal
|
||||
License: MIT
|
||||
|
||||
Files: src/librustdoc/html/static/css/themes/ayu.css
|
||||
Copyright: Ike Ku, Jessica Stokes, Leon Guan
|
||||
The Rust Project Developers (see https://thanks.rust-lang.org)
|
||||
License: MIT OR Apache-2.0
|
||||
|
||||
Files: src/doc/rustc-dev-guide/mermaid.min.js
|
||||
Copyright: Knut Sveidqvist
|
||||
License: MIT
|
||||
|
9
LICENSES/BSD-2-Clause.txt
Normal file
9
LICENSES/BSD-2-Clause.txt
Normal file
@ -0,0 +1,9 @@
|
||||
Copyright (c) <year> <owner>
|
||||
|
||||
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
|
||||
|
||||
1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
|
||||
|
||||
2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
15
LICENSES/NCSA.txt
Normal file
15
LICENSES/NCSA.txt
Normal file
@ -0,0 +1,15 @@
|
||||
University of Illinois/NCSA Open Source License
|
||||
|
||||
Copyright (c) <Year> <Owner Organization Name>. All rights reserved.
|
||||
|
||||
Developed by: <Name of Development Group> <Name of Institution> <URL for Development Group/Institution>
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal with the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
|
||||
|
||||
* Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimers.
|
||||
|
||||
* Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimers in the documentation and/or other materials provided with the distribution.
|
||||
|
||||
* Neither the names of <Name of Development Group, Name of Institution>, nor the names of its contributors may be used to endorse or promote products derived from this Software without specific prior written permission.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE CONTRIBUTORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS WITH THE SOFTWARE.
|
22
LICENSES/Unicode-DFS-2016.txt
Normal file
22
LICENSES/Unicode-DFS-2016.txt
Normal file
@ -0,0 +1,22 @@
|
||||
UNICODE, INC. LICENSE AGREEMENT - DATA FILES AND SOFTWARE
|
||||
|
||||
Unicode Data Files include all data files under the directories http://www.unicode.org/Public/, http://www.unicode.org/reports/, http://www.unicode.org/cldr/data/, http://source.icu-project.org/repos/icu/, and http://www.unicode.org/utility/trac/browser/.
|
||||
|
||||
Unicode Data Files do not include PDF online code charts under the directory http://www.unicode.org/Public/.
|
||||
|
||||
Software includes any source code published in the Unicode Standard or under the directories http://www.unicode.org/Public/, http://www.unicode.org/reports/, http://www.unicode.org/cldr/data/, http://source.icu-project.org/repos/icu/, and http://www.unicode.org/utility/trac/browser/.
|
||||
|
||||
NOTICE TO USER: Carefully read the following legal agreement. BY DOWNLOADING, INSTALLING, COPYING OR OTHERWISE USING UNICODE INC.'S DATA FILES ("DATA FILES"), AND/OR SOFTWARE ("SOFTWARE"), YOU UNEQUIVOCALLY ACCEPT, AND AGREE TO BE BOUND BY, ALL OF THE TERMS AND CONDITIONS OF THIS AGREEMENT. IF YOU DO NOT AGREE, DO NOT DOWNLOAD, INSTALL, COPY, DISTRIBUTE OR USE THE DATA FILES OR SOFTWARE.
|
||||
|
||||
COPYRIGHT AND PERMISSION NOTICE
|
||||
|
||||
Copyright © 1991-2016 Unicode, Inc. All rights reserved. Distributed under the Terms of Use in http://www.unicode.org/copyright.html.
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either
|
||||
|
||||
(a) this copyright and permission notice appear with all copies of the Data Files or Software, or
|
||||
(b) this copyright and permission notice appear in associated Documentation.
|
||||
|
||||
THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE.
|
||||
|
||||
Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder.
|
@ -1,12 +1,6 @@
|
||||
// Copyright 2015 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 <LICENSE-APACHE or
|
||||
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
|
||||
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
|
||||
// option. This file may not be copied, modified, or distributed
|
||||
// except according to those terms.
|
||||
// SPDX-License-Identifier: MIT OR Apache-2.0
|
||||
// SPDX-FileCopyrightText: The Rust Project Developers (see https://thanks.rust-lang.org)
|
||||
|
||||
#![no_std]
|
||||
|
||||
pub struct System;
|
||||
|
@ -1,12 +1,6 @@
|
||||
// Copyright 2015 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 <LICENSE-APACHE or
|
||||
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
|
||||
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
|
||||
// option. This file may not be copied, modified, or distributed
|
||||
// except according to those terms.
|
||||
// SPDX-License-Identifier: MIT OR Apache-2.0
|
||||
// SPDX-FileCopyrightText: The Rust Project Developers (see https://thanks.rust-lang.org)
|
||||
|
||||
#![no_std]
|
||||
#![feature(allocator_api, rustc_private)]
|
||||
#![cfg_attr(any(unix, target_os = "redox"), feature(libc))]
|
||||
|
@ -6,4 +6,5 @@
|
||||
set -euo pipefail
|
||||
IFS=$'\n\t'
|
||||
|
||||
python3 src/ci/cpu-usage-over-time.py &> cpu-usage.csv &
|
||||
mkdir -p build
|
||||
python3 src/ci/cpu-usage-over-time.py &> build/cpu-usage.csv &
|
||||
|
@ -23,7 +23,7 @@ if [[ "${DEPLOY-0}" -eq "1" ]] || [[ "${DEPLOY_ALT-0}" -eq "1" ]]; then
|
||||
fi
|
||||
|
||||
# CPU usage statistics.
|
||||
cp cpu-usage.csv "${upload_dir}/cpu-${CI_JOB_NAME}.csv"
|
||||
cp build/cpu-usage.csv "${upload_dir}/cpu-${CI_JOB_NAME}.csv"
|
||||
|
||||
# Build metrics generated by x.py.
|
||||
cp "${build_dir}/metrics.json" "${upload_dir}/metrics-${CI_JOB_NAME}.json"
|
||||
|
@ -1,3 +1,4 @@
|
||||
<!-- REUSE-IgnoreStart -->
|
||||
<footer><p>
|
||||
Copyright © 2011 The Rust Project Developers. Licensed under the
|
||||
<a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>
|
||||
@ -5,3 +6,4 @@ or the <a href="https://opensource.org/licenses/MIT">MIT license</a>, at your op
|
||||
</p><p>
|
||||
This file may not be copied, modified, or distributed except according to those terms.
|
||||
</p></footer>
|
||||
<!-- REUSE-IgnoreEnd -->
|
||||
|
@ -1,3 +1,5 @@
|
||||
# REUSE-IgnoreStart
|
||||
|
||||
These documentation pages include resources by third parties. This copyright
|
||||
file applies only to those resources. The following third party resources are
|
||||
included, and carry their own copyright notices and license terms:
|
||||
@ -44,3 +46,5 @@ included, and carry their own copyright notices and license terms:
|
||||
See SourceSerif4-LICENSE.md.
|
||||
|
||||
This copyright file is intended to be distributed with rustdoc output.
|
||||
|
||||
# REUSE-IgnoreEnd
|
||||
|
@ -1,3 +1,5 @@
|
||||
// REUSE-IgnoreStart
|
||||
|
||||
Digitized data copyright (c) 2012-2015, The Mozilla Foundation and Telefonica S.A.
|
||||
with Reserved Font Name < Fira >,
|
||||
|
||||
@ -92,3 +94,5 @@ INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
|
||||
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
|
||||
OTHER DEALINGS IN THE FONT SOFTWARE.
|
||||
|
||||
// REUSE-IgnoreEnd
|
||||
|
@ -1,3 +1,5 @@
|
||||
// REUSE-IgnoreStart
|
||||
|
||||
Copyright (c) 2010, NAVER Corporation (https://www.navercorp.com/),
|
||||
|
||||
with Reserved Font Name Nanum, Naver Nanum, NanumGothic, Naver NanumGothic,
|
||||
@ -97,3 +99,5 @@ INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
|
||||
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
|
||||
OTHER DEALINGS IN THE FONT SOFTWARE.
|
||||
|
||||
// REUSE-IgnoreEnd
|
||||
|
@ -1,3 +1,5 @@
|
||||
// REUSE-IgnoreStart
|
||||
|
||||
Copyright 2010, 2012 Adobe Systems Incorporated (http://www.adobe.com/), with Reserved Font Name 'Source'. All Rights Reserved. Source is a trademark of Adobe Systems Incorporated in the United States and/or other countries.
|
||||
|
||||
This Font Software is licensed under the SIL Open Font License, Version 1.1.
|
||||
@ -91,3 +93,5 @@ INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
|
||||
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
|
||||
OTHER DEALINGS IN THE FONT SOFTWARE.
|
||||
|
||||
// REUSE-IgnoreEnd
|
||||
|
@ -1,3 +1,6 @@
|
||||
<!-- REUSE-IgnoreStart -->
|
||||
|
||||
Copyright 2014-2021 Adobe (http://www.adobe.com/), with Reserved Font Name 'Source'. All Rights Reserved. Source is a trademark of Adobe in the United States and/or other countries.
|
||||
Copyright 2014 - 2023 Adobe (http://www.adobe.com/), with Reserved Font Name ‘Source’. All Rights Reserved. Source is a trademark of Adobe in the United States and/or other countries.
|
||||
|
||||
This Font Software is licensed under the SIL Open Font License, Version 1.1.
|
||||
@ -91,3 +94,5 @@ INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
|
||||
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
|
||||
OTHER DEALINGS IN THE FONT SOFTWARE.
|
||||
|
||||
<!-- REUSE-IgnoreEnd -->
|
||||
|
@ -1,3 +1,5 @@
|
||||
// REUSE-IgnoreStart
|
||||
|
||||
Copyright 2014-2022 The Rust Project Developers
|
||||
|
||||
Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
|
||||
@ -5,3 +7,5 @@ http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
|
||||
<LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
|
||||
option. All files in the project carrying such notice may not be
|
||||
copied, modified, or distributed except according to those terms.
|
||||
|
||||
// REUSE-IgnoreEnd
|
||||
|
@ -275,6 +275,8 @@ If you want to contribute to Clippy, you can find more information in [CONTRIBUT
|
||||
|
||||
## License
|
||||
|
||||
<!-- REUSE-IgnoreStart -->
|
||||
|
||||
Copyright 2014-2022 The Rust Project Developers
|
||||
|
||||
Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
|
||||
@ -282,3 +284,5 @@ Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
|
||||
<LICENSE-MIT or [https://opensource.org/licenses/MIT](https://opensource.org/licenses/MIT)>, at your
|
||||
option. Files in the project may not be
|
||||
copied, modified, or distributed except according to those terms.
|
||||
|
||||
<!-- REUSE-IgnoreEnd -->
|
||||
|
@ -49,6 +49,8 @@ The changelog for `rustc_tools_util` is available under:
|
||||
|
||||
## License
|
||||
|
||||
<!-- REUSE-IgnoreStart -->
|
||||
|
||||
Copyright 2014-2022 The Rust Project Developers
|
||||
|
||||
Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
|
||||
@ -56,3 +58,5 @@ http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
|
||||
<LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
|
||||
option. All files in the project carrying such notice may not be
|
||||
copied, modified, or distributed except according to those terms.
|
||||
|
||||
<!-- REUSE-IgnoreEnd -->
|
||||
|
@ -42,6 +42,7 @@ pub(crate) struct License {
|
||||
impl License {
|
||||
fn simplify(&mut self) {
|
||||
self.remove_copyright_prefixes();
|
||||
self.remove_trailing_dots();
|
||||
self.copyright.sort();
|
||||
self.copyright.dedup();
|
||||
}
|
||||
@ -62,4 +63,12 @@ impl License {
|
||||
*copyright = stripped.into();
|
||||
}
|
||||
}
|
||||
|
||||
fn remove_trailing_dots(&mut self) {
|
||||
for copyright in &mut self.copyright {
|
||||
if copyright.ends_with('.') {
|
||||
*copyright = copyright.trim_end_matches('.').to_string();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -13,7 +13,7 @@ pub(crate) enum Node<L> {
|
||||
Root { childs: Vec<Node<L>> },
|
||||
Directory { name: PathBuf, childs: Vec<Node<L>>, license: Option<L> },
|
||||
File { name: PathBuf, license: L },
|
||||
FileGroup { names: Vec<PathBuf>, license: L },
|
||||
Group { files: Vec<PathBuf>, directories: Vec<PathBuf>, license: L },
|
||||
Empty,
|
||||
}
|
||||
|
||||
@ -22,7 +22,7 @@ impl Node<LicenseId> {
|
||||
self.merge_directories();
|
||||
self.collapse_in_licensed_directories();
|
||||
self.merge_directory_licenses();
|
||||
self.merge_file_groups();
|
||||
self.merge_groups();
|
||||
self.remove_empty();
|
||||
}
|
||||
|
||||
@ -64,8 +64,8 @@ impl Node<LicenseId> {
|
||||
Node::Root { .. } => {
|
||||
panic!("can't have a root inside another element");
|
||||
}
|
||||
Node::FileGroup { .. } => {
|
||||
panic!("FileGroup should not be present at this stage");
|
||||
Node::Group { .. } => {
|
||||
panic!("Group should not be present at this stage");
|
||||
}
|
||||
Node::Directory { license: Some(_), .. } => {
|
||||
panic!("license should not be set at this stage");
|
||||
@ -86,8 +86,8 @@ impl Node<LicenseId> {
|
||||
}
|
||||
Node::Empty => {}
|
||||
Node::File { .. } => {}
|
||||
Node::FileGroup { .. } => {
|
||||
panic!("FileGroup should not be present at this stage");
|
||||
Node::Group { .. } => {
|
||||
panic!("Group should not be present at this stage");
|
||||
}
|
||||
Node::Directory { license: Some(_), .. } => {
|
||||
panic!("license should not be set at this stage");
|
||||
@ -132,7 +132,7 @@ impl Node<LicenseId> {
|
||||
}
|
||||
}
|
||||
Node::File { .. } => {}
|
||||
Node::FileGroup { .. } => {}
|
||||
Node::Group { .. } => panic!("group should not be present at this stage"),
|
||||
Node::Empty => {}
|
||||
}
|
||||
}
|
||||
@ -165,8 +165,8 @@ impl Node<LicenseId> {
|
||||
Node::Root { .. } => {
|
||||
panic!("can't have a root inside another element");
|
||||
}
|
||||
Node::FileGroup { .. } => {
|
||||
panic!("FileGroup should not be present at this stage");
|
||||
Node::Group { .. } => {
|
||||
panic!("Group should not be present at this stage");
|
||||
}
|
||||
Node::Directory { name: child_child_name, .. } => {
|
||||
*child_child_name = child_name.join(&child_child_name);
|
||||
@ -185,38 +185,74 @@ impl Node<LicenseId> {
|
||||
}
|
||||
Node::Empty => {}
|
||||
Node::File { .. } => {}
|
||||
Node::FileGroup { .. } => {}
|
||||
Node::Group { .. } => panic!("Group should not be present at this stage"),
|
||||
}
|
||||
}
|
||||
|
||||
/// This pass groups multiple files in a directory with the same license into a single
|
||||
/// "FileGroup", so that the license of all those files can be reported as a group.
|
||||
/// "Group", so that the license of all those files can be reported as a group.
|
||||
///
|
||||
/// This also merges directories *without exceptions*.
|
||||
///
|
||||
/// Crucially this pass runs after collapse_in_licensed_directories, so the most common license
|
||||
/// will already be marked as the directory's license and won't be turned into a group.
|
||||
fn merge_file_groups(&mut self) {
|
||||
fn merge_groups(&mut self) {
|
||||
#[derive(Default)]
|
||||
struct Grouped {
|
||||
files: Vec<PathBuf>,
|
||||
directories: Vec<PathBuf>,
|
||||
}
|
||||
match self {
|
||||
Node::Root { childs } | Node::Directory { childs, .. } => {
|
||||
let mut grouped = BTreeMap::new();
|
||||
let mut grouped: BTreeMap<LicenseId, Grouped> = BTreeMap::new();
|
||||
|
||||
for child in &mut *childs {
|
||||
child.merge_file_groups();
|
||||
if let Node::File { name, license } = child {
|
||||
grouped.entry(*license).or_insert_with(Vec::new).push(name.clone());
|
||||
*child = Node::Empty;
|
||||
child.merge_groups();
|
||||
match child {
|
||||
Node::Directory { name, childs, license: Some(license) } => {
|
||||
if childs.is_empty() {
|
||||
grouped
|
||||
.entry(*license)
|
||||
.or_insert_with(Grouped::default)
|
||||
.directories
|
||||
.push(name.clone());
|
||||
*child = Node::Empty;
|
||||
}
|
||||
}
|
||||
Node::File { name, license } => {
|
||||
grouped
|
||||
.entry(*license)
|
||||
.or_insert_with(Grouped::default)
|
||||
.files
|
||||
.push(name.clone());
|
||||
*child = Node::Empty;
|
||||
}
|
||||
_ => {}
|
||||
}
|
||||
}
|
||||
|
||||
for (license, mut names) in grouped.into_iter() {
|
||||
if names.len() == 1 {
|
||||
childs.push(Node::File { license, name: names.pop().unwrap() });
|
||||
for (license, mut grouped) in grouped.into_iter() {
|
||||
if grouped.files.len() + grouped.directories.len() <= 1 {
|
||||
if let Some(name) = grouped.files.pop() {
|
||||
childs.push(Node::File { license, name });
|
||||
} else if let Some(name) = grouped.directories.pop() {
|
||||
childs.push(Node::Directory {
|
||||
name,
|
||||
childs: Vec::new(),
|
||||
license: Some(license),
|
||||
});
|
||||
}
|
||||
} else {
|
||||
childs.push(Node::FileGroup { license, names });
|
||||
childs.push(Node::Group {
|
||||
license,
|
||||
files: grouped.files,
|
||||
directories: grouped.directories,
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
Node::File { .. } => {}
|
||||
Node::FileGroup { .. } => panic!("FileGroup should not be present at this stage"),
|
||||
Node::Group { .. } => panic!("FileGroup should not be present at this stage"),
|
||||
Node::Empty => {}
|
||||
}
|
||||
}
|
||||
@ -231,7 +267,7 @@ impl Node<LicenseId> {
|
||||
}
|
||||
childs.retain(|child| !matches!(child, Node::Empty));
|
||||
}
|
||||
Node::FileGroup { .. } => {}
|
||||
Node::Group { .. } => {}
|
||||
Node::File { .. } => {}
|
||||
Node::Empty => {}
|
||||
}
|
||||
@ -278,16 +314,22 @@ pub(crate) fn expand_interned_licenses(
|
||||
) -> Node<&License> {
|
||||
match node {
|
||||
Node::Root { childs } => Node::Root {
|
||||
childs: childs.into_iter().map(|child| strip_interning(child, interner)).collect(),
|
||||
childs: childs
|
||||
.into_iter()
|
||||
.map(|child| expand_interned_licenses(child, interner))
|
||||
.collect(),
|
||||
},
|
||||
Node::Directory { name, childs, license } => Node::Directory {
|
||||
childs: childs.into_iter().map(|child| strip_interning(child, interner)).collect(),
|
||||
childs: childs
|
||||
.into_iter()
|
||||
.map(|child| expand_interned_licenses(child, interner))
|
||||
.collect(),
|
||||
license: license.map(|license| interner.resolve(license)),
|
||||
name,
|
||||
},
|
||||
Node::File { name, license } => Node::File { name, license: interner.resolve(license) },
|
||||
Node::FileGroup { names, license } => {
|
||||
Node::FileGroup { names, license: interner.resolve(license) }
|
||||
Node::Group { files, directories, license } => {
|
||||
Node::Group { files, directories, license: interner.resolve(license) }
|
||||
}
|
||||
Node::Empty => Node::Empty,
|
||||
}
|
||||
|
@ -36,8 +36,8 @@ fn render_recursive(node: &Node, buffer: &mut Vec<u8>, depth: usize) -> Result<(
|
||||
}
|
||||
}
|
||||
}
|
||||
Node::FileGroup { names, license } => {
|
||||
render_license(&prefix, names.iter(), license, buffer)?;
|
||||
Node::Group { files, directories, license } => {
|
||||
render_license(&prefix, directories.iter().chain(files.iter()), license, buffer)?;
|
||||
}
|
||||
Node::File { name, license } => {
|
||||
render_license(&prefix, std::iter::once(name), license, buffer)?;
|
||||
@ -76,7 +76,7 @@ pub(crate) enum Node {
|
||||
Root { childs: Vec<Node> },
|
||||
Directory { name: String, childs: Vec<Node>, license: License },
|
||||
File { name: String, license: License },
|
||||
FileGroup { names: Vec<String>, license: License },
|
||||
Group { files: Vec<String>, directories: Vec<String>, license: License },
|
||||
}
|
||||
|
||||
#[derive(serde::Deserialize)]
|
||||
|
@ -1,12 +1,5 @@
|
||||
// Copyright 2012-2014 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 <LICENSE-APACHE or
|
||||
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
|
||||
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
|
||||
// option. This file may not be copied, modified, or distributed
|
||||
// except according to those terms.
|
||||
// SPDX-License-Identifier: MIT OR Apache-2.0
|
||||
// SPDX-FileCopyrightText: The Rust Project Developers (see https://thanks.rust-lang.org)
|
||||
|
||||
#![feature(core_intrinsics)]
|
||||
use std::intrinsics::*;
|
||||
|
@ -1,12 +1,5 @@
|
||||
// Copyright 2012-2014 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 <LICENSE-APACHE or
|
||||
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
|
||||
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
|
||||
// option. This file may not be copied, modified, or distributed
|
||||
// except according to those terms.
|
||||
// SPDX-License-Identifier: MIT OR Apache-2.0
|
||||
// SPDX-FileCopyrightText: The Rust Project Developers (see https://thanks.rust-lang.org)
|
||||
|
||||
macro_rules! assert_approx_eq {
|
||||
($a:expr, $b:expr) => {{
|
||||
|
@ -1,12 +1,5 @@
|
||||
// Copyright 2012-2016 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 <LICENSE-APACHE or
|
||||
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
|
||||
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
|
||||
// option. This file may not be copied, modified, or distributed
|
||||
// except according to those terms.
|
||||
// SPDX-License-Identifier: MIT OR Apache-2.0
|
||||
// SPDX-FileCopyrightText: The Rust Project Developers (see https://thanks.rust-lang.org)
|
||||
|
||||
// Regression test for Issue #30530: alloca's created for storing
|
||||
// intermediate scratch values during brace-less match arms need to be
|
||||
|
@ -1,12 +1,5 @@
|
||||
// Copyright 2012-2014 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 <LICENSE-APACHE or
|
||||
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
|
||||
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
|
||||
// option. This file may not be copied, modified, or distributed
|
||||
// except according to those terms.
|
||||
// SPDX-License-Identifier: MIT OR Apache-2.0
|
||||
// SPDX-FileCopyrightText: The Rust Project Developers (see https://thanks.rust-lang.org)
|
||||
|
||||
use std::mem;
|
||||
|
||||
|
@ -1,13 +1,4 @@
|
||||
#!/bin/bash
|
||||
# Copyright 2014 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 <LICENSE-APACHE or
|
||||
# http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
|
||||
# <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
|
||||
# option. This file may not be copied, modified, or distributed
|
||||
# except according to those terms.
|
||||
|
||||
set -ue
|
||||
|
||||
|
@ -1,13 +1,4 @@
|
||||
#!/bin/bash
|
||||
# Copyright 2014 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 <LICENSE-APACHE or
|
||||
# http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
|
||||
# <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
|
||||
# option. This file may not be copied, modified, or distributed
|
||||
# except according to those terms.
|
||||
|
||||
set -ue
|
||||
|
||||
|
@ -1,13 +1,4 @@
|
||||
#!/bin/bash
|
||||
# Copyright 2014 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 <LICENSE-APACHE or
|
||||
# http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
|
||||
# <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
|
||||
# option. This file may not be copied, modified, or distributed
|
||||
# except according to those terms.
|
||||
|
||||
set -ue
|
||||
|
||||
|
@ -1,13 +1,4 @@
|
||||
#!/bin/bash
|
||||
# Copyright 2014 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 <LICENSE-APACHE or
|
||||
# http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
|
||||
# <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
|
||||
# option. This file may not be copied, modified, or distributed
|
||||
# except according to those terms.
|
||||
|
||||
# No undefined variables
|
||||
set -u
|
||||
|
@ -1,13 +1,4 @@
|
||||
#!/bin/sh
|
||||
# Copyright 2014 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 <LICENSE-APACHE or
|
||||
# http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
|
||||
# <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
|
||||
# option. This file may not be copied, modified, or distributed
|
||||
# except according to those terms.
|
||||
|
||||
set -ue
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user