From 1d9a56330887cfe841f58f355e22188c7196ceab Mon Sep 17 00:00:00 2001 From: Jonathan Pallant Date: Thu, 18 Jul 2024 12:10:35 +0100 Subject: [PATCH 1/6] Upgrade to reuse 4.0.3 ) Updated requirements file ) Ran `reuse convert-dep5` to switch to new file format --- .reuse/dep5 | 124 ---------------- REUSE.toml | 97 ++++++++++++ .../mingw-check/reuse-requirements.in | 2 +- .../mingw-check/reuse-requirements.txt | 138 ++++++++++-------- 4 files changed, 179 insertions(+), 182 deletions(-) delete mode 100644 .reuse/dep5 create mode 100644 REUSE.toml diff --git a/.reuse/dep5 b/.reuse/dep5 deleted file mode 100644 index 5706ea0b204..00000000000 --- a/.reuse/dep5 +++ /dev/null @@ -1,124 +0,0 @@ -# WARNING: this metadata is currently incomplete, do not rely on it yet. - -Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ - -# 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.example.toml - configure - CONTRIBUTING.md - COPYRIGHT - INSTALL.md - LICENSE-APACHE - LICENSE-MIT - README.md - RELEASES.md - rustfmt.toml - rust-bors.toml - triagebot.toml - x - x.ps1 - x.py - .clang-format - .editorconfig - .git-blame-ignore-revs - .gitattributes - .gitignore - .gitmodules - .mailmap - .ignore -Copyright: The Rust Project Developers (see https://thanks.rust-lang.org) -License: MIT or Apache-2.0 - -Files: compiler/rustc_llvm/llvm-wrapper/SymbolWrapper.cpp -Copyright: 2003-2019 University of Illinois at Urbana-Champaign. - 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/sync/mutex/fuchsia.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 -License: MIT - -Files: src/librustdoc/html/static/fonts/FiraSans* -Copyright: 2014, Mozilla Foundation - 2014, Telefonica S.A. -License: OFL-1.1 - -Files: src/librustdoc/html/static/fonts/NanumBarun* -Copyright: 2010 NAVER Corporation -License: OFL-1.1 - -Files: src/librustdoc/html/static/fonts/SourceCodePro* - src/librustdoc/html/static/fonts/SourceSerif4* -Copyright: 2010, 2012, 2014-2023, 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/rustdoc.css -Copyright: 2016 Ike Ku, Jessica Stokes and 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: 2014-2021 Knut Sveidqvist -License: MIT - -Files: library/backtrace/* -Copyright: 2014 Alex Crichton - The Rust Project Developers (see https://thanks.rust-lang.org) -License: MIT OR Apache-2.0 - -Files: src/doc/embedded-book/* -Copyright: Rust on Embedded Devices Working Group - The Rust Project Developers (see https://thanks.rust-lang.org) -License: MIT OR Apache-2.0 OR CC-BY-SA-4.0 - -Files: src/doc/rust-by-example/* -Copyright: 2014 Jorge Aparicio - The Rust Project Developers (see https://thanks.rust-lang.org) -License: MIT OR Apache-2.0 - -# Reuse cannot process the LLVM source tree, and so the copyrights for the LLVM -# submodule are written out here manually. The collect-licence-metadata tool -# has a specific exception coded within it to ignore ./src/llvm-project so -# any time LLVM is updated, please revisit this section. The copyrights are -# taken from the relevant LLVM sub-folders: llvm, lld, lldb, compiler-rt and libunwind. -# -# The git hash for the CREDITS.TXT file is taken from the current git submodule -# commit for ./src/llvm-project. -# -# The copyright years were compiled by looking at all the relevant -# ./src/llvm-project/*/LICENSE.txt files - -Files: src/llvm-project/* -Copyright: 2003-2019 by the contributors listed in [CREDITS.TXT](https://github.com/rust-lang/llvm-project/blob/7738295178045041669876bf32b0543ec8319a5c/llvm/CREDITS.TXT) - 2010 Apple Inc - 2003-2019 University of Illinois at Urbana-Champaign. -License: NCSA AND Apache-2.0 WITH LLVM-exception diff --git a/REUSE.toml b/REUSE.toml new file mode 100644 index 00000000000..e2da8b905bd --- /dev/null +++ b/REUSE.toml @@ -0,0 +1,97 @@ +version = 1 + +[[annotations]] +path = ["compiler/**", "library/**", "tests/**", "src/**", ".github/**", "Cargo.lock", "Cargo.toml", "CODE_OF_CONDUCT.md", "config.example.toml", "configure", "CONTRIBUTING.md", "COPYRIGHT", "INSTALL.md", "LICENSE-APACHE", "LICENSE-MIT", "README.md", "RELEASES.md", "rustfmt.toml", "rust-bors.toml", "triagebot.toml", "x", "x.ps1", "x.py", ".clang-format", ".editorconfig", ".git-blame-ignore-revs", ".gitattributes", ".gitignore", ".gitmodules", ".mailmap", ".ignore"] +precedence = "aggregate" +SPDX-FileCopyrightText = "The Rust Project Developers (see https://thanks.rust-lang.org)" +SPDX-License-Identifier = "MIT or Apache-2.0" + +[[annotations]] +path = "compiler/rustc_llvm/llvm-wrapper/SymbolWrapper.cpp" +precedence = "aggregate" +SPDX-FileCopyrightText = ["2003-2019 University of Illinois at Urbana-Champaign.", "The Rust Project Developers (see https://thanks.rust-lang.org)"] +SPDX-License-Identifier = "Apache-2.0 WITH LLVM-exception AND (Apache-2.0 OR MIT)" + +[[annotations]] +path = "library/core/src/unicode/unicode_data.rs" +precedence = "aggregate" +SPDX-FileCopyrightText = "1991-2022 Unicode, Inc. All rights reserved." +SPDX-License-Identifier = "Unicode-DFS-2016" + +[[annotations]] +path = "library/std/src/sync/mpmc/**" +precedence = "aggregate" +SPDX-FileCopyrightText = ["2019 The Crossbeam Project Developers", "The Rust Project Developers (see https://thanks.rust-lang.org)"] +SPDX-License-Identifier = "MIT OR Apache-2.0" + +[[annotations]] +path = "library/std/src/sys/sync/mutex/fuchsia.rs" +precedence = "aggregate" +SPDX-FileCopyrightText = ["2016 The Fuchsia Authors", "The Rust Project Developers (see https://thanks.rust-lang.org)"] +SPDX-License-Identifier = "BSD-2-Clause AND (MIT OR Apache-2.0)" + +[[annotations]] +path = "src/test/rustdoc/auxiliary/enum-primitive.rs" +precedence = "aggregate" +SPDX-FileCopyrightText = "2015 Anders Kaseorg " +SPDX-License-Identifier = "MIT" + +[[annotations]] +path = "src/librustdoc/html/static/fonts/FiraSans**" +precedence = "aggregate" +SPDX-FileCopyrightText = ["2014, Mozilla Foundation", "2014, Telefonica S.A."] +SPDX-License-Identifier = "OFL-1.1" + +[[annotations]] +path = "src/librustdoc/html/static/fonts/NanumBarun**" +precedence = "aggregate" +SPDX-FileCopyrightText = "2010 NAVER Corporation" +SPDX-License-Identifier = "OFL-1.1" + +[[annotations]] +path = ["src/librustdoc/html/static/fonts/SourceCodePro**", "src/librustdoc/html/static/fonts/SourceSerif4**"] +precedence = "aggregate" +SPDX-FileCopyrightText = "2010, 2012, 2014-2023, Adobe Systems Incorporated" +SPDX-License-Identifier = "OFL-1.1" + +[[annotations]] +path = "src/librustdoc/html/static/css/normalize.css" +precedence = "aggregate" +SPDX-FileCopyrightText = "Nicolas Gallagher and Jonathan Neal" +SPDX-License-Identifier = "MIT" + +[[annotations]] +path = "src/librustdoc/html/static/css/rustdoc.css" +precedence = "aggregate" +SPDX-FileCopyrightText = ["2016 Ike Ku, Jessica Stokes and Leon Guan", "The Rust Project Developers (see https://thanks.rust-lang.org)"] +SPDX-License-Identifier = "MIT OR Apache-2.0" + +[[annotations]] +path = "src/doc/rustc-dev-guide/mermaid.min.js" +precedence = "aggregate" +SPDX-FileCopyrightText = "2014-2021 Knut Sveidqvist" +SPDX-License-Identifier = "MIT" + +[[annotations]] +path = "library/backtrace/**" +precedence = "aggregate" +SPDX-FileCopyrightText = ["2014 Alex Crichton", "The Rust Project Developers (see https://thanks.rust-lang.org)"] +SPDX-License-Identifier = "MIT OR Apache-2.0" + +[[annotations]] +path = "src/doc/embedded-book/**" +precedence = "aggregate" +SPDX-FileCopyrightText = ["Rust on Embedded Devices Working Group", "The Rust Project Developers (see https://thanks.rust-lang.org)"] +SPDX-License-Identifier = "MIT OR Apache-2.0 OR CC-BY-SA-4.0" + +[[annotations]] +path = "src/doc/rust-by-example/**" +precedence = "aggregate" +SPDX-FileCopyrightText = ["2014 Jorge Aparicio", "The Rust Project Developers (see https://thanks.rust-lang.org)"] +SPDX-License-Identifier = "MIT OR Apache-2.0" + +[[annotations]] +path = "src/llvm-project/**" +precedence = "aggregate" +SPDX-FileCopyrightText = ["2003-2019 by the contributors listed in [CREDITS.TXT](https://github.com/rust-lang/llvm-project/blob/7738295178045041669876bf32b0543ec8319a5c/llvm/CREDITS.TXT)", "2010 Apple Inc", "2003-2019 University of Illinois at Urbana-Champaign."] +SPDX-License-Identifier = "NCSA AND Apache-2.0 WITH LLVM-exception" diff --git a/src/ci/docker/host-x86_64/mingw-check/reuse-requirements.in b/src/ci/docker/host-x86_64/mingw-check/reuse-requirements.in index c7b3376e2f1..d7c2d3fde5b 100644 --- a/src/ci/docker/host-x86_64/mingw-check/reuse-requirements.in +++ b/src/ci/docker/host-x86_64/mingw-check/reuse-requirements.in @@ -11,4 +11,4 @@ # pip-compile --allow-unsafe --generate-hashes reuse-requirements.in # -reuse +reuse>=4.0,<5.0 diff --git a/src/ci/docker/host-x86_64/mingw-check/reuse-requirements.txt b/src/ci/docker/host-x86_64/mingw-check/reuse-requirements.txt index b0f598f77ea..e12097a863e 100644 --- a/src/ci/docker/host-x86_64/mingw-check/reuse-requirements.txt +++ b/src/ci/docker/host-x86_64/mingw-check/reuse-requirements.txt @@ -1,9 +1,13 @@ # -# This file is autogenerated by pip-compile with Python 3.10 +# This file is autogenerated by pip-compile with Python 3.12 # by the following command: # # pip-compile --allow-unsafe --generate-hashes reuse-requirements.in # +attrs==23.2.0 \ + --hash=sha256:935dc3b529c262f6cf76e50877d35a4bd3c1de194fd41f47a2b7ae8f19971f30 \ + --hash=sha256:99b87a485a5820b23b879f04c2305b44b951b502fd64be915879d77a7e8fc6f1 + # via reuse binaryornot==0.4.4 \ --hash=sha256:359501dfc9d40632edc9fac890e19542db1a287bbcfa58175b66658392018061 \ --hash=sha256:b8b71173c917bddcd2c16070412e369c3ed7f0528926f70cac18a6c97fd563e4 @@ -14,71 +18,91 @@ boolean-py==4.0 \ # via # license-expression # reuse -chardet==5.1.0 \ - --hash=sha256:0d62712b956bc154f85fb0a266e2a3c5913c2967e00348701b32411d6def31e5 \ - --hash=sha256:362777fb014af596ad31334fde1e8c327dfdb076e1960d1694662d46a6917ab9 +chardet==5.2.0 \ + --hash=sha256:1b3b6ff479a8c414bc3fa2c0852995695c4a026dcd6d0633b2dd092ca39c1cf7 \ + --hash=sha256:e1cf59446890a00105fe7b7912492ea04b6e6f06d4b742b2c788469e34c82970 # via # binaryornot # python-debian -jinja2==3.1.2 \ - --hash=sha256:31351a702a408a9e7595a8fc6150fc3f43bb6bf7e319770cbc0db9df9437e852 \ - --hash=sha256:6088930bfe239f0e6710546ab9c19c9ef35e29792895fed6e6e31a023a182a61 +jinja2==3.1.4 \ + --hash=sha256:4a3aee7acbbe7303aede8e9648d13b8bf88a429282aa6122a993f0ac800cb369 \ + --hash=sha256:bc5dd2abb727a5319567b7a813e6a2e7318c39f4f487cfe6c89c6f9c7d25197d # via reuse -license-expression==30.0.0 \ - --hash=sha256:ad638292aa8493f84354909b517922cb823582c2ce2c4d880e42544a86bea8dd \ - --hash=sha256:e95325110110eb2b7539ee7773b97a0724d5371ec563cc718c8cac0e38cc40cc +license-expression==30.3.0 \ + --hash=sha256:1295406f736b4f395ff069aec1cebfad53c0fcb3cf57df0f5ec58fc7b905aea5 \ + --hash=sha256:ae0ba9a829d6909c785dc2f0131f13d10d68318e4a5f28af5ef152d6b52f9b41 # via reuse -markupsafe==2.1.1 \ - --hash=sha256:0212a68688482dc52b2d45013df70d169f542b7394fc744c02a57374a4207003 \ - --hash=sha256:089cf3dbf0cd6c100f02945abeb18484bd1ee57a079aefd52cffd17fba910b88 \ - --hash=sha256:10c1bfff05d95783da83491be968e8fe789263689c02724e0c691933c52994f5 \ - --hash=sha256:33b74d289bd2f5e527beadcaa3f401e0df0a89927c1559c8566c066fa4248ab7 \ - --hash=sha256:3799351e2336dc91ea70b034983ee71cf2f9533cdff7c14c90ea126bfd95d65a \ - --hash=sha256:3ce11ee3f23f79dbd06fb3d63e2f6af7b12db1d46932fe7bd8afa259a5996603 \ - --hash=sha256:421be9fbf0ffe9ffd7a378aafebbf6f4602d564d34be190fc19a193232fd12b1 \ - --hash=sha256:43093fb83d8343aac0b1baa75516da6092f58f41200907ef92448ecab8825135 \ - --hash=sha256:46d00d6cfecdde84d40e572d63735ef81423ad31184100411e6e3388d405e247 \ - --hash=sha256:4a33dea2b688b3190ee12bd7cfa29d39c9ed176bda40bfa11099a3ce5d3a7ac6 \ - --hash=sha256:4b9fe39a2ccc108a4accc2676e77da025ce383c108593d65cc909add5c3bd601 \ - --hash=sha256:56442863ed2b06d19c37f94d999035e15ee982988920e12a5b4ba29b62ad1f77 \ - --hash=sha256:671cd1187ed5e62818414afe79ed29da836dde67166a9fac6d435873c44fdd02 \ - --hash=sha256:694deca8d702d5db21ec83983ce0bb4b26a578e71fbdbd4fdcd387daa90e4d5e \ - --hash=sha256:6a074d34ee7a5ce3effbc526b7083ec9731bb3cbf921bbe1d3005d4d2bdb3a63 \ - --hash=sha256:6d0072fea50feec76a4c418096652f2c3238eaa014b2f94aeb1d56a66b41403f \ - --hash=sha256:6fbf47b5d3728c6aea2abb0589b5d30459e369baa772e0f37a0320185e87c980 \ - --hash=sha256:7f91197cc9e48f989d12e4e6fbc46495c446636dfc81b9ccf50bb0ec74b91d4b \ - --hash=sha256:86b1f75c4e7c2ac2ccdaec2b9022845dbb81880ca318bb7a0a01fbf7813e3812 \ - --hash=sha256:8dc1c72a69aa7e082593c4a203dcf94ddb74bb5c8a731e4e1eb68d031e8498ff \ - --hash=sha256:8e3dcf21f367459434c18e71b2a9532d96547aef8a871872a5bd69a715c15f96 \ - --hash=sha256:8e576a51ad59e4bfaac456023a78f6b5e6e7651dcd383bcc3e18d06f9b55d6d1 \ - --hash=sha256:96e37a3dc86e80bf81758c152fe66dbf60ed5eca3d26305edf01892257049925 \ - --hash=sha256:97a68e6ada378df82bc9f16b800ab77cbf4b2fada0081794318520138c088e4a \ - --hash=sha256:99a2a507ed3ac881b975a2976d59f38c19386d128e7a9a18b7df6fff1fd4c1d6 \ - --hash=sha256:a49907dd8420c5685cfa064a1335b6754b74541bbb3706c259c02ed65b644b3e \ - --hash=sha256:b09bf97215625a311f669476f44b8b318b075847b49316d3e28c08e41a7a573f \ - --hash=sha256:b7bd98b796e2b6553da7225aeb61f447f80a1ca64f41d83612e6139ca5213aa4 \ - --hash=sha256:b87db4360013327109564f0e591bd2a3b318547bcef31b468a92ee504d07ae4f \ - --hash=sha256:bcb3ed405ed3222f9904899563d6fc492ff75cce56cba05e32eff40e6acbeaa3 \ - --hash=sha256:d4306c36ca495956b6d568d276ac11fdd9c30a36f1b6eb928070dc5360b22e1c \ - --hash=sha256:d5ee4f386140395a2c818d149221149c54849dfcfcb9f1debfe07a8b8bd63f9a \ - --hash=sha256:dda30ba7e87fbbb7eab1ec9f58678558fd9a6b8b853530e176eabd064da81417 \ - --hash=sha256:e04e26803c9c3851c931eac40c695602c6295b8d432cbe78609649ad9bd2da8a \ - --hash=sha256:e1c0b87e09fa55a220f058d1d49d3fb8df88fbfab58558f1198e08c1e1de842a \ - --hash=sha256:e72591e9ecd94d7feb70c1cbd7be7b3ebea3f548870aa91e2732960fa4d57a37 \ - --hash=sha256:e8c843bbcda3a2f1e3c2ab25913c80a3c5376cd00c6e8c4a86a89a28c8dc5452 \ - --hash=sha256:efc1913fd2ca4f334418481c7e595c00aad186563bbc1ec76067848c7ca0a933 \ - --hash=sha256:f121a1420d4e173a5d96e47e9a0c0dcff965afdf1626d28de1460815f7c4ee7a \ - --hash=sha256:fc7b548b17d238737688817ab67deebb30e8073c95749d55538ed473130ec0c7 +markupsafe==2.1.5 \ + --hash=sha256:00e046b6dd71aa03a41079792f8473dc494d564611a8f89bbbd7cb93295ebdcf \ + --hash=sha256:075202fa5b72c86ad32dc7d0b56024ebdbcf2048c0ba09f1cde31bfdd57bcfff \ + --hash=sha256:0e397ac966fdf721b2c528cf028494e86172b4feba51d65f81ffd65c63798f3f \ + --hash=sha256:17b950fccb810b3293638215058e432159d2b71005c74371d784862b7e4683f3 \ + --hash=sha256:1f3fbcb7ef1f16e48246f704ab79d79da8a46891e2da03f8783a5b6fa41a9532 \ + --hash=sha256:2174c595a0d73a3080ca3257b40096db99799265e1c27cc5a610743acd86d62f \ + --hash=sha256:2b7c57a4dfc4f16f7142221afe5ba4e093e09e728ca65c51f5620c9aaeb9a617 \ + --hash=sha256:2d2d793e36e230fd32babe143b04cec8a8b3eb8a3122d2aceb4a371e6b09b8df \ + --hash=sha256:30b600cf0a7ac9234b2638fbc0fb6158ba5bdcdf46aeb631ead21248b9affbc4 \ + --hash=sha256:397081c1a0bfb5124355710fe79478cdbeb39626492b15d399526ae53422b906 \ + --hash=sha256:3a57fdd7ce31c7ff06cdfbf31dafa96cc533c21e443d57f5b1ecc6cdc668ec7f \ + --hash=sha256:3c6b973f22eb18a789b1460b4b91bf04ae3f0c4234a0a6aa6b0a92f6f7b951d4 \ + --hash=sha256:3e53af139f8579a6d5f7b76549125f0d94d7e630761a2111bc431fd820e163b8 \ + --hash=sha256:4096e9de5c6fdf43fb4f04c26fb114f61ef0bf2e5604b6ee3019d51b69e8c371 \ + --hash=sha256:4275d846e41ecefa46e2015117a9f491e57a71ddd59bbead77e904dc02b1bed2 \ + --hash=sha256:4c31f53cdae6ecfa91a77820e8b151dba54ab528ba65dfd235c80b086d68a465 \ + --hash=sha256:4f11aa001c540f62c6166c7726f71f7573b52c68c31f014c25cc7901deea0b52 \ + --hash=sha256:5049256f536511ee3f7e1b3f87d1d1209d327e818e6ae1365e8653d7e3abb6a6 \ + --hash=sha256:58c98fee265677f63a4385256a6d7683ab1832f3ddd1e66fe948d5880c21a169 \ + --hash=sha256:598e3276b64aff0e7b3451b72e94fa3c238d452e7ddcd893c3ab324717456bad \ + --hash=sha256:5b7b716f97b52c5a14bffdf688f971b2d5ef4029127f1ad7a513973cfd818df2 \ + --hash=sha256:5dedb4db619ba5a2787a94d877bc8ffc0566f92a01c0ef214865e54ecc9ee5e0 \ + --hash=sha256:619bc166c4f2de5caa5a633b8b7326fbe98e0ccbfacabd87268a2b15ff73a029 \ + --hash=sha256:629ddd2ca402ae6dbedfceeba9c46d5f7b2a61d9749597d4307f943ef198fc1f \ + --hash=sha256:656f7526c69fac7f600bd1f400991cc282b417d17539a1b228617081106feb4a \ + --hash=sha256:6ec585f69cec0aa07d945b20805be741395e28ac1627333b1c5b0105962ffced \ + --hash=sha256:72b6be590cc35924b02c78ef34b467da4ba07e4e0f0454a2c5907f473fc50ce5 \ + --hash=sha256:7502934a33b54030eaf1194c21c692a534196063db72176b0c4028e140f8f32c \ + --hash=sha256:7a68b554d356a91cce1236aa7682dc01df0edba8d043fd1ce607c49dd3c1edcf \ + --hash=sha256:7b2e5a267c855eea6b4283940daa6e88a285f5f2a67f2220203786dfa59b37e9 \ + --hash=sha256:823b65d8706e32ad2df51ed89496147a42a2a6e01c13cfb6ffb8b1e92bc910bb \ + --hash=sha256:8590b4ae07a35970728874632fed7bd57b26b0102df2d2b233b6d9d82f6c62ad \ + --hash=sha256:8dd717634f5a044f860435c1d8c16a270ddf0ef8588d4887037c5028b859b0c3 \ + --hash=sha256:8dec4936e9c3100156f8a2dc89c4b88d5c435175ff03413b443469c7c8c5f4d1 \ + --hash=sha256:97cafb1f3cbcd3fd2b6fbfb99ae11cdb14deea0736fc2b0952ee177f2b813a46 \ + --hash=sha256:a17a92de5231666cfbe003f0e4b9b3a7ae3afb1ec2845aadc2bacc93ff85febc \ + --hash=sha256:a549b9c31bec33820e885335b451286e2969a2d9e24879f83fe904a5ce59d70a \ + --hash=sha256:ac07bad82163452a6884fe8fa0963fb98c2346ba78d779ec06bd7a6262132aee \ + --hash=sha256:ae2ad8ae6ebee9d2d94b17fb62763125f3f374c25618198f40cbb8b525411900 \ + --hash=sha256:b91c037585eba9095565a3556f611e3cbfaa42ca1e865f7b8015fe5c7336d5a5 \ + --hash=sha256:bc1667f8b83f48511b94671e0e441401371dfd0f0a795c7daa4a3cd1dde55bea \ + --hash=sha256:bec0a414d016ac1a18862a519e54b2fd0fc8bbfd6890376898a6c0891dd82e9f \ + --hash=sha256:bf50cd79a75d181c9181df03572cdce0fbb75cc353bc350712073108cba98de5 \ + --hash=sha256:bff1b4290a66b490a2f4719358c0cdcd9bafb6b8f061e45c7a2460866bf50c2e \ + --hash=sha256:c061bb86a71b42465156a3ee7bd58c8c2ceacdbeb95d05a99893e08b8467359a \ + --hash=sha256:c8b29db45f8fe46ad280a7294f5c3ec36dbac9491f2d1c17345be8e69cc5928f \ + --hash=sha256:ce409136744f6521e39fd8e2a24c53fa18ad67aa5bc7c2cf83645cce5b5c4e50 \ + --hash=sha256:d050b3361367a06d752db6ead6e7edeb0009be66bc3bae0ee9d97fb326badc2a \ + --hash=sha256:d283d37a890ba4c1ae73ffadf8046435c76e7bc2247bbb63c00bd1a709c6544b \ + --hash=sha256:d9fad5155d72433c921b782e58892377c44bd6252b5af2f67f16b194987338a4 \ + --hash=sha256:daa4ee5a243f0f20d528d939d06670a298dd39b1ad5f8a72a4275124a7819eff \ + --hash=sha256:db0b55e0f3cc0be60c1f19efdde9a637c32740486004f20d1cff53c3c0ece4d2 \ + --hash=sha256:e61659ba32cf2cf1481e575d0462554625196a1f2fc06a1c777d3f48e8865d46 \ + --hash=sha256:ea3d8a3d18833cf4304cd2fc9cbb1efe188ca9b5efef2bdac7adc20594a0e46b \ + --hash=sha256:ec6a563cff360b50eed26f13adc43e61bc0c04d94b8be985e6fb24b81f6dcfdf \ + --hash=sha256:f5dfb42c4604dddc8e4305050aa6deb084540643ed5804d7455b5df8fe16f5e5 \ + --hash=sha256:fa173ec60341d6bb97a89f5ea19c85c5643c1e7dedebc22f5181eb73573142c5 \ + --hash=sha256:fa9db3f79de01457b03d4f01b34cf91bc0048eb2c3846ff26f66687c2f6d16ab \ + --hash=sha256:fce659a462a1be54d2ffcacea5e3ba2d74daa74f30f5f143fe0c58636e355fdd \ + --hash=sha256:ffee1f21e5ef0d712f9033568f8344d5da8cc2869dbd08d87c84656e6a2d2f68 # via jinja2 python-debian==0.1.49 \ --hash=sha256:880f3bc52e31599f2a9b432bd7691844286825087fccdcf2f6ffd5cd79a26f9f \ --hash=sha256:8cf677a30dbcb4be7a99536c17e11308a827a4d22028dc59a67f6c6dd3f0f58c # via reuse -reuse==1.1.0 \ - --hash=sha256:7a054f6e372ad02d0b1b07368030fc38746b50ed45f5422a81994e7a88b52f1f \ - --hash=sha256:b0f3fb9091ff513af04b555d14a4c529ab05f6a575ab192dd9b68244f1e0721d +reuse==4.0.3 \ + --hash=sha256:4f2c3e1213ec644e5febc50d8322d18982e4e1102af8a51d9493bfc2164a0eac \ + --hash=sha256:b33e26ec1d105cfcfc2e904d103faec0d758994278feb95a4f4290a864562243 # via -r reuse-requirements.in -setuptools==66.0.0 \ - --hash=sha256:a78d01d1e2c175c474884671dde039962c9d74c7223db7369771fcf6e29ceeab \ - --hash=sha256:bd6eb2d6722568de6d14b87c44a96fac54b2a45ff5e940e639979a3d1792adb6 +tomlkit==0.13.0 \ + --hash=sha256:08ad192699734149f5b97b45f1f18dad7eb1b6d16bc72ad0c2335772650d7b72 \ + --hash=sha256:7075d3042d03b80f603482d69bf0c8f345c2b30e41699fd8883227f89972b264 # via reuse From 4b210bc41959c21e9816fe59910ac4dfd225ca06 Mon Sep 17 00:00:00 2001 From: Jonathan Pallant Date: Thu, 18 Jul 2024 13:28:23 +0100 Subject: [PATCH 2/6] Reformatted REUSE.toml --- REUSE.toml | 80 +++++++++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 70 insertions(+), 10 deletions(-) diff --git a/REUSE.toml b/REUSE.toml index e2da8b905bd..d755da80830 100644 --- a/REUSE.toml +++ b/REUSE.toml @@ -1,7 +1,39 @@ version = 1 [[annotations]] -path = ["compiler/**", "library/**", "tests/**", "src/**", ".github/**", "Cargo.lock", "Cargo.toml", "CODE_OF_CONDUCT.md", "config.example.toml", "configure", "CONTRIBUTING.md", "COPYRIGHT", "INSTALL.md", "LICENSE-APACHE", "LICENSE-MIT", "README.md", "RELEASES.md", "rustfmt.toml", "rust-bors.toml", "triagebot.toml", "x", "x.ps1", "x.py", ".clang-format", ".editorconfig", ".git-blame-ignore-revs", ".gitattributes", ".gitignore", ".gitmodules", ".mailmap", ".ignore"] +path = [ + "compiler/**", + "library/**", + "tests/**", + "src/**", + ".github/**", + "Cargo.lock", + "Cargo.toml", + "CODE_OF_CONDUCT.md", + "config.example.toml", + "configure", + "CONTRIBUTING.md", + "COPYRIGHT", + "INSTALL.md", + "LICENSE-APACHE", + "LICENSE-MIT", + "README.md", + "RELEASES.md", + "rustfmt.toml", + "rust-bors.toml", + "triagebot.toml", + "x", + "x.ps1", + "x.py", + ".clang-format", + ".editorconfig", + ".git-blame-ignore-revs", + ".gitattributes", + ".gitignore", + ".gitmodules", + ".mailmap", + ".ignore", +] precedence = "aggregate" SPDX-FileCopyrightText = "The Rust Project Developers (see https://thanks.rust-lang.org)" SPDX-License-Identifier = "MIT or Apache-2.0" @@ -9,7 +41,10 @@ SPDX-License-Identifier = "MIT or Apache-2.0" [[annotations]] path = "compiler/rustc_llvm/llvm-wrapper/SymbolWrapper.cpp" precedence = "aggregate" -SPDX-FileCopyrightText = ["2003-2019 University of Illinois at Urbana-Champaign.", "The Rust Project Developers (see https://thanks.rust-lang.org)"] +SPDX-FileCopyrightText = [ + "2003-2019 University of Illinois at Urbana-Champaign.", + "The Rust Project Developers (see https://thanks.rust-lang.org)", +] SPDX-License-Identifier = "Apache-2.0 WITH LLVM-exception AND (Apache-2.0 OR MIT)" [[annotations]] @@ -21,13 +56,19 @@ SPDX-License-Identifier = "Unicode-DFS-2016" [[annotations]] path = "library/std/src/sync/mpmc/**" precedence = "aggregate" -SPDX-FileCopyrightText = ["2019 The Crossbeam Project Developers", "The Rust Project Developers (see https://thanks.rust-lang.org)"] +SPDX-FileCopyrightText = [ + "2019 The Crossbeam Project Developers", + "The Rust Project Developers (see https://thanks.rust-lang.org)", +] SPDX-License-Identifier = "MIT OR Apache-2.0" [[annotations]] path = "library/std/src/sys/sync/mutex/fuchsia.rs" precedence = "aggregate" -SPDX-FileCopyrightText = ["2016 The Fuchsia Authors", "The Rust Project Developers (see https://thanks.rust-lang.org)"] +SPDX-FileCopyrightText = [ + "2016 The Fuchsia Authors", + "The Rust Project Developers (see https://thanks.rust-lang.org)", +] SPDX-License-Identifier = "BSD-2-Clause AND (MIT OR Apache-2.0)" [[annotations]] @@ -49,7 +90,10 @@ SPDX-FileCopyrightText = "2010 NAVER Corporation" SPDX-License-Identifier = "OFL-1.1" [[annotations]] -path = ["src/librustdoc/html/static/fonts/SourceCodePro**", "src/librustdoc/html/static/fonts/SourceSerif4**"] +path = [ + "src/librustdoc/html/static/fonts/SourceCodePro**", + "src/librustdoc/html/static/fonts/SourceSerif4**", +] precedence = "aggregate" SPDX-FileCopyrightText = "2010, 2012, 2014-2023, Adobe Systems Incorporated" SPDX-License-Identifier = "OFL-1.1" @@ -63,7 +107,10 @@ SPDX-License-Identifier = "MIT" [[annotations]] path = "src/librustdoc/html/static/css/rustdoc.css" precedence = "aggregate" -SPDX-FileCopyrightText = ["2016 Ike Ku, Jessica Stokes and Leon Guan", "The Rust Project Developers (see https://thanks.rust-lang.org)"] +SPDX-FileCopyrightText = [ + "2016 Ike Ku, Jessica Stokes and Leon Guan", + "The Rust Project Developers (see https://thanks.rust-lang.org)", +] SPDX-License-Identifier = "MIT OR Apache-2.0" [[annotations]] @@ -75,23 +122,36 @@ SPDX-License-Identifier = "MIT" [[annotations]] path = "library/backtrace/**" precedence = "aggregate" -SPDX-FileCopyrightText = ["2014 Alex Crichton", "The Rust Project Developers (see https://thanks.rust-lang.org)"] +SPDX-FileCopyrightText = [ + "2014 Alex Crichton", + "The Rust Project Developers (see https://thanks.rust-lang.org)", +] SPDX-License-Identifier = "MIT OR Apache-2.0" [[annotations]] path = "src/doc/embedded-book/**" precedence = "aggregate" -SPDX-FileCopyrightText = ["Rust on Embedded Devices Working Group", "The Rust Project Developers (see https://thanks.rust-lang.org)"] +SPDX-FileCopyrightText = [ + "Rust on Embedded Devices Working Group", + "The Rust Project Developers (see https://thanks.rust-lang.org)", +] SPDX-License-Identifier = "MIT OR Apache-2.0 OR CC-BY-SA-4.0" [[annotations]] path = "src/doc/rust-by-example/**" precedence = "aggregate" -SPDX-FileCopyrightText = ["2014 Jorge Aparicio", "The Rust Project Developers (see https://thanks.rust-lang.org)"] +SPDX-FileCopyrightText = [ + "2014 Jorge Aparicio", + "The Rust Project Developers (see https://thanks.rust-lang.org)", +] SPDX-License-Identifier = "MIT OR Apache-2.0" [[annotations]] path = "src/llvm-project/**" precedence = "aggregate" -SPDX-FileCopyrightText = ["2003-2019 by the contributors listed in [CREDITS.TXT](https://github.com/rust-lang/llvm-project/blob/7738295178045041669876bf32b0543ec8319a5c/llvm/CREDITS.TXT)", "2010 Apple Inc", "2003-2019 University of Illinois at Urbana-Champaign."] +SPDX-FileCopyrightText = [ + "2003-2019 by the contributors listed in [CREDITS.TXT](https://github.com/rust-lang/llvm-project/blob/7738295178045041669876bf32b0543ec8319a5c/llvm/CREDITS.TXT)", + "2010 Apple Inc", + "2003-2019 University of Illinois at Urbana-Champaign.", +] SPDX-License-Identifier = "NCSA AND Apache-2.0 WITH LLVM-exception" From 3b70d1be7f7394c05b6b3d72b913bdd3970aae35 Mon Sep 17 00:00:00 2001 From: Jonathan Pallant Date: Thu, 18 Jul 2024 14:20:24 +0100 Subject: [PATCH 3/6] Set all reuse annotations to override. --- REUSE.toml | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/REUSE.toml b/REUSE.toml index d755da80830..5c7ea8e6f14 100644 --- a/REUSE.toml +++ b/REUSE.toml @@ -34,13 +34,13 @@ path = [ ".mailmap", ".ignore", ] -precedence = "aggregate" +precedence = "override" SPDX-FileCopyrightText = "The Rust Project Developers (see https://thanks.rust-lang.org)" SPDX-License-Identifier = "MIT or Apache-2.0" [[annotations]] path = "compiler/rustc_llvm/llvm-wrapper/SymbolWrapper.cpp" -precedence = "aggregate" +precedence = "override" SPDX-FileCopyrightText = [ "2003-2019 University of Illinois at Urbana-Champaign.", "The Rust Project Developers (see https://thanks.rust-lang.org)", @@ -49,13 +49,13 @@ SPDX-License-Identifier = "Apache-2.0 WITH LLVM-exception AND (Apache-2.0 OR MIT [[annotations]] path = "library/core/src/unicode/unicode_data.rs" -precedence = "aggregate" +precedence = "override" SPDX-FileCopyrightText = "1991-2022 Unicode, Inc. All rights reserved." SPDX-License-Identifier = "Unicode-DFS-2016" [[annotations]] path = "library/std/src/sync/mpmc/**" -precedence = "aggregate" +precedence = "override" SPDX-FileCopyrightText = [ "2019 The Crossbeam Project Developers", "The Rust Project Developers (see https://thanks.rust-lang.org)", @@ -64,7 +64,7 @@ SPDX-License-Identifier = "MIT OR Apache-2.0" [[annotations]] path = "library/std/src/sys/sync/mutex/fuchsia.rs" -precedence = "aggregate" +precedence = "override" SPDX-FileCopyrightText = [ "2016 The Fuchsia Authors", "The Rust Project Developers (see https://thanks.rust-lang.org)", @@ -73,19 +73,19 @@ SPDX-License-Identifier = "BSD-2-Clause AND (MIT OR Apache-2.0)" [[annotations]] path = "src/test/rustdoc/auxiliary/enum-primitive.rs" -precedence = "aggregate" +precedence = "override" SPDX-FileCopyrightText = "2015 Anders Kaseorg " SPDX-License-Identifier = "MIT" [[annotations]] path = "src/librustdoc/html/static/fonts/FiraSans**" -precedence = "aggregate" +precedence = "override" SPDX-FileCopyrightText = ["2014, Mozilla Foundation", "2014, Telefonica S.A."] SPDX-License-Identifier = "OFL-1.1" [[annotations]] path = "src/librustdoc/html/static/fonts/NanumBarun**" -precedence = "aggregate" +precedence = "override" SPDX-FileCopyrightText = "2010 NAVER Corporation" SPDX-License-Identifier = "OFL-1.1" @@ -94,19 +94,19 @@ path = [ "src/librustdoc/html/static/fonts/SourceCodePro**", "src/librustdoc/html/static/fonts/SourceSerif4**", ] -precedence = "aggregate" +precedence = "override" SPDX-FileCopyrightText = "2010, 2012, 2014-2023, Adobe Systems Incorporated" SPDX-License-Identifier = "OFL-1.1" [[annotations]] path = "src/librustdoc/html/static/css/normalize.css" -precedence = "aggregate" +precedence = "override" SPDX-FileCopyrightText = "Nicolas Gallagher and Jonathan Neal" SPDX-License-Identifier = "MIT" [[annotations]] path = "src/librustdoc/html/static/css/rustdoc.css" -precedence = "aggregate" +precedence = "override" SPDX-FileCopyrightText = [ "2016 Ike Ku, Jessica Stokes and Leon Guan", "The Rust Project Developers (see https://thanks.rust-lang.org)", @@ -115,13 +115,13 @@ SPDX-License-Identifier = "MIT OR Apache-2.0" [[annotations]] path = "src/doc/rustc-dev-guide/mermaid.min.js" -precedence = "aggregate" +precedence = "override" SPDX-FileCopyrightText = "2014-2021 Knut Sveidqvist" SPDX-License-Identifier = "MIT" [[annotations]] path = "library/backtrace/**" -precedence = "aggregate" +precedence = "override" SPDX-FileCopyrightText = [ "2014 Alex Crichton", "The Rust Project Developers (see https://thanks.rust-lang.org)", @@ -130,7 +130,7 @@ SPDX-License-Identifier = "MIT OR Apache-2.0" [[annotations]] path = "src/doc/embedded-book/**" -precedence = "aggregate" +precedence = "override" SPDX-FileCopyrightText = [ "Rust on Embedded Devices Working Group", "The Rust Project Developers (see https://thanks.rust-lang.org)", @@ -139,7 +139,7 @@ SPDX-License-Identifier = "MIT OR Apache-2.0 OR CC-BY-SA-4.0" [[annotations]] path = "src/doc/rust-by-example/**" -precedence = "aggregate" +precedence = "override" SPDX-FileCopyrightText = [ "2014 Jorge Aparicio", "The Rust Project Developers (see https://thanks.rust-lang.org)", @@ -148,7 +148,7 @@ SPDX-License-Identifier = "MIT OR Apache-2.0" [[annotations]] path = "src/llvm-project/**" -precedence = "aggregate" +precedence = "override" SPDX-FileCopyrightText = [ "2003-2019 by the contributors listed in [CREDITS.TXT](https://github.com/rust-lang/llvm-project/blob/7738295178045041669876bf32b0543ec8319a5c/llvm/CREDITS.TXT)", "2010 Apple Inc", From aa32a2c3a2a9e2ff10f3ab8d93abd965e19112df Mon Sep 17 00:00:00 2001 From: Jonathan Pallant Date: Mon, 22 Jul 2024 09:40:27 +0100 Subject: [PATCH 4/6] Regenerated hashes using python3.10 ) brew install python@3.10 ) python3.10 -m venv /tmp/myenv ) source /tmp/myenv/bin/activate ) pip install pip-tools ) /tmp/myenv/bin/pip-compile --allow-unsafe --generate-hashes reuse-requirements.in --- src/ci/docker/host-x86_64/mingw-check/reuse-requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/ci/docker/host-x86_64/mingw-check/reuse-requirements.txt b/src/ci/docker/host-x86_64/mingw-check/reuse-requirements.txt index e12097a863e..8784e18864b 100644 --- a/src/ci/docker/host-x86_64/mingw-check/reuse-requirements.txt +++ b/src/ci/docker/host-x86_64/mingw-check/reuse-requirements.txt @@ -1,5 +1,5 @@ # -# This file is autogenerated by pip-compile with Python 3.12 +# This file is autogenerated by pip-compile with Python 3.10 # by the following command: # # pip-compile --allow-unsafe --generate-hashes reuse-requirements.in From 445e70bc04d84a24dd8b613023f4e2d7175a112a Mon Sep 17 00:00:00 2001 From: Jonathan Pallant Date: Mon, 22 Jul 2024 09:44:18 +0100 Subject: [PATCH 5/6] Include REUSE.toml in REUSE.toml. Also remove to licenses we no longer need, and given REUSE.toml reads some basic idea of what it's about. --- LICENSES/CC-BY-3.0.txt | 319 ----------------------------------------- LICENSES/CC0-1.0.txt | 121 ---------------- REUSE.toml | 13 ++ 3 files changed, 13 insertions(+), 440 deletions(-) delete mode 100644 LICENSES/CC-BY-3.0.txt delete mode 100644 LICENSES/CC0-1.0.txt diff --git a/LICENSES/CC-BY-3.0.txt b/LICENSES/CC-BY-3.0.txt deleted file mode 100644 index bd32fa8477b..00000000000 --- a/LICENSES/CC-BY-3.0.txt +++ /dev/null @@ -1,319 +0,0 @@ -Creative Commons Legal Code - -Attribution 3.0 Unported - - CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE - LEGAL SERVICES. DISTRIBUTION OF THIS LICENSE DOES NOT CREATE AN - ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS - INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES - REGARDING THE INFORMATION PROVIDED, AND DISCLAIMS LIABILITY FOR - DAMAGES RESULTING FROM ITS USE. - -License - -THE WORK (AS DEFINED BELOW) IS PROVIDED UNDER THE TERMS OF THIS CREATIVE -COMMONS PUBLIC LICENSE ("CCPL" OR "LICENSE"). THE WORK IS PROTECTED BY -COPYRIGHT AND/OR OTHER APPLICABLE LAW. ANY USE OF THE WORK OTHER THAN AS -AUTHORIZED UNDER THIS LICENSE OR COPYRIGHT LAW IS PROHIBITED. - -BY EXERCISING ANY RIGHTS TO THE WORK PROVIDED HERE, YOU ACCEPT AND AGREE -TO BE BOUND BY THE TERMS OF THIS LICENSE. TO THE EXTENT THIS LICENSE MAY -BE CONSIDERED TO BE A CONTRACT, THE LICENSOR GRANTS YOU THE RIGHTS -CONTAINED HERE IN CONSIDERATION OF YOUR ACCEPTANCE OF SUCH TERMS AND -CONDITIONS. - -1. Definitions - - a. "Adaptation" means a work based upon the Work, or upon the Work and - other pre-existing works, such as a translation, adaptation, - derivative work, arrangement of music or other alterations of a - literary or artistic work, or phonogram or performance and includes - cinematographic adaptations or any other form in which the Work may be - recast, transformed, or adapted including in any form recognizably - derived from the original, except that a work that constitutes a - Collection will not be considered an Adaptation for the purpose of - this License. For the avoidance of doubt, where the Work is a musical - work, performance or phonogram, the synchronization of the Work in - timed-relation with a moving image ("synching") will be considered an - Adaptation for the purpose of this License. - b. "Collection" means a collection of literary or artistic works, such as - encyclopedias and anthologies, or performances, phonograms or - broadcasts, or other works or subject matter other than works listed - in Section 1(f) below, which, by reason of the selection and - arrangement of their contents, constitute intellectual creations, in - which the Work is included in its entirety in unmodified form along - with one or more other contributions, each constituting separate and - independent works in themselves, which together are assembled into a - collective whole. A work that constitutes a Collection will not be - considered an Adaptation (as defined above) for the purposes of this - License. - c. "Distribute" means to make available to the public the original and - copies of the Work or Adaptation, as appropriate, through sale or - other transfer of ownership. - d. "Licensor" means the individual, individuals, entity or entities that - offer(s) the Work under the terms of this License. - e. "Original Author" means, in the case of a literary or artistic work, - the individual, individuals, entity or entities who created the Work - or if no individual or entity can be identified, the publisher; and in - addition (i) in the case of a performance the actors, singers, - musicians, dancers, and other persons who act, sing, deliver, declaim, - play in, interpret or otherwise perform literary or artistic works or - expressions of folklore; (ii) in the case of a phonogram the producer - being the person or legal entity who first fixes the sounds of a - performance or other sounds; and, (iii) in the case of broadcasts, the - organization that transmits the broadcast. - f. "Work" means the literary and/or artistic work offered under the terms - of this License including without limitation any production in the - literary, scientific and artistic domain, whatever may be the mode or - form of its expression including digital form, such as a book, - pamphlet and other writing; a lecture, address, sermon or other work - of the same nature; a dramatic or dramatico-musical work; a - choreographic work or entertainment in dumb show; a musical - composition with or without words; a cinematographic work to which are - assimilated works expressed by a process analogous to cinematography; - a work of drawing, painting, architecture, sculpture, engraving or - lithography; a photographic work to which are assimilated works - expressed by a process analogous to photography; a work of applied - art; an illustration, map, plan, sketch or three-dimensional work - relative to geography, topography, architecture or science; a - performance; a broadcast; a phonogram; a compilation of data to the - extent it is protected as a copyrightable work; or a work performed by - a variety or circus performer to the extent it is not otherwise - considered a literary or artistic work. - g. "You" means an individual or entity exercising rights under this - License who has not previously violated the terms of this License with - respect to the Work, or who has received express permission from the - Licensor to exercise rights under this License despite a previous - violation. - h. "Publicly Perform" means to perform public recitations of the Work and - to communicate to the public those public recitations, by any means or - process, including by wire or wireless means or public digital - performances; to make available to the public Works in such a way that - members of the public may access these Works from a place and at a - place individually chosen by them; to perform the Work to the public - by any means or process and the communication to the public of the - performances of the Work, including by public digital performance; to - broadcast and rebroadcast the Work by any means including signs, - sounds or images. - i. "Reproduce" means to make copies of the Work by any means including - without limitation by sound or visual recordings and the right of - fixation and reproducing fixations of the Work, including storage of a - protected performance or phonogram in digital form or other electronic - medium. - -2. Fair Dealing Rights. Nothing in this License is intended to reduce, -limit, or restrict any uses free from copyright or rights arising from -limitations or exceptions that are provided for in connection with the -copyright protection under copyright law or other applicable laws. - -3. License Grant. Subject to the terms and conditions of this License, -Licensor hereby grants You a worldwide, royalty-free, non-exclusive, -perpetual (for the duration of the applicable copyright) license to -exercise the rights in the Work as stated below: - - a. to Reproduce the Work, to incorporate the Work into one or more - Collections, and to Reproduce the Work as incorporated in the - Collections; - b. to create and Reproduce Adaptations provided that any such Adaptation, - including any translation in any medium, takes reasonable steps to - clearly label, demarcate or otherwise identify that changes were made - to the original Work. For example, a translation could be marked "The - original work was translated from English to Spanish," or a - modification could indicate "The original work has been modified."; - c. to Distribute and Publicly Perform the Work including as incorporated - in Collections; and, - d. to Distribute and Publicly Perform Adaptations. - e. For the avoidance of doubt: - - i. Non-waivable Compulsory License Schemes. In those jurisdictions in - which the right to collect royalties through any statutory or - compulsory licensing scheme cannot be waived, the Licensor - reserves the exclusive right to collect such royalties for any - exercise by You of the rights granted under this License; - ii. Waivable Compulsory License Schemes. In those jurisdictions in - which the right to collect royalties through any statutory or - compulsory licensing scheme can be waived, the Licensor waives the - exclusive right to collect such royalties for any exercise by You - of the rights granted under this License; and, - iii. Voluntary License Schemes. The Licensor waives the right to - collect royalties, whether individually or, in the event that the - Licensor is a member of a collecting society that administers - voluntary licensing schemes, via that society, from any exercise - by You of the rights granted under this License. - -The above rights may be exercised in all media and formats whether now -known or hereafter devised. The above rights include the right to make -such modifications as are technically necessary to exercise the rights in -other media and formats. Subject to Section 8(f), all rights not expressly -granted by Licensor are hereby reserved. - -4. Restrictions. The license granted in Section 3 above is expressly made -subject to and limited by the following restrictions: - - a. You may Distribute or Publicly Perform the Work only under the terms - of this License. You must include a copy of, or the Uniform Resource - Identifier (URI) for, this License with every copy of the Work You - Distribute or Publicly Perform. You may not offer or impose any terms - on the Work that restrict the terms of this License or the ability of - the recipient of the Work to exercise the rights granted to that - recipient under the terms of the License. You may not sublicense the - Work. You must keep intact all notices that refer to this License and - to the disclaimer of warranties with every copy of the Work You - Distribute or Publicly Perform. When You Distribute or Publicly - Perform the Work, You may not impose any effective technological - measures on the Work that restrict the ability of a recipient of the - Work from You to exercise the rights granted to that recipient under - the terms of the License. This Section 4(a) applies to the Work as - incorporated in a Collection, but this does not require the Collection - apart from the Work itself to be made subject to the terms of this - License. If You create a Collection, upon notice from any Licensor You - must, to the extent practicable, remove from the Collection any credit - as required by Section 4(b), as requested. If You create an - Adaptation, upon notice from any Licensor You must, to the extent - practicable, remove from the Adaptation any credit as required by - Section 4(b), as requested. - b. If You Distribute, or Publicly Perform the Work or any Adaptations or - Collections, You must, unless a request has been made pursuant to - Section 4(a), keep intact all copyright notices for the Work and - provide, reasonable to the medium or means You are utilizing: (i) the - name of the Original Author (or pseudonym, if applicable) if supplied, - and/or if the Original Author and/or Licensor designate another party - or parties (e.g., a sponsor institute, publishing entity, journal) for - attribution ("Attribution Parties") in Licensor's copyright notice, - terms of service or by other reasonable means, the name of such party - or parties; (ii) the title of the Work if supplied; (iii) to the - extent reasonably practicable, the URI, if any, that Licensor - specifies to be associated with the Work, unless such URI does not - refer to the copyright notice or licensing information for the Work; - and (iv) , consistent with Section 3(b), in the case of an Adaptation, - a credit identifying the use of the Work in the Adaptation (e.g., - "French translation of the Work by Original Author," or "Screenplay - based on original Work by Original Author"). The credit required by - this Section 4 (b) may be implemented in any reasonable manner; - provided, however, that in the case of a Adaptation or Collection, at - a minimum such credit will appear, if a credit for all contributing - authors of the Adaptation or Collection appears, then as part of these - credits and in a manner at least as prominent as the credits for the - other contributing authors. For the avoidance of doubt, You may only - use the credit required by this Section for the purpose of attribution - in the manner set out above and, by exercising Your rights under this - License, You may not implicitly or explicitly assert or imply any - connection with, sponsorship or endorsement by the Original Author, - Licensor and/or Attribution Parties, as appropriate, of You or Your - use of the Work, without the separate, express prior written - permission of the Original Author, Licensor and/or Attribution - Parties. - c. Except as otherwise agreed in writing by the Licensor or as may be - otherwise permitted by applicable law, if You Reproduce, Distribute or - Publicly Perform the Work either by itself or as part of any - Adaptations or Collections, You must not distort, mutilate, modify or - take other derogatory action in relation to the Work which would be - prejudicial to the Original Author's honor or reputation. Licensor - agrees that in those jurisdictions (e.g. Japan), in which any exercise - of the right granted in Section 3(b) of this License (the right to - make Adaptations) would be deemed to be a distortion, mutilation, - modification or other derogatory action prejudicial to the Original - Author's honor and reputation, the Licensor will waive or not assert, - as appropriate, this Section, to the fullest extent permitted by the - applicable national law, to enable You to reasonably exercise Your - right under Section 3(b) of this License (right to make Adaptations) - but not otherwise. - -5. Representations, Warranties and Disclaimer - -UNLESS OTHERWISE MUTUALLY AGREED TO BY THE PARTIES IN WRITING, LICENSOR -OFFERS THE WORK AS-IS AND MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY -KIND CONCERNING THE WORK, EXPRESS, IMPLIED, STATUTORY OR OTHERWISE, -INCLUDING, WITHOUT LIMITATION, WARRANTIES OF TITLE, MERCHANTIBILITY, -FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT, OR THE ABSENCE OF -LATENT OR OTHER DEFECTS, ACCURACY, OR THE PRESENCE OF ABSENCE OF ERRORS, -WHETHER OR NOT DISCOVERABLE. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION -OF IMPLIED WARRANTIES, SO SUCH EXCLUSION MAY NOT APPLY TO YOU. - -6. Limitation on Liability. EXCEPT TO THE EXTENT REQUIRED BY APPLICABLE -LAW, IN NO EVENT WILL LICENSOR BE LIABLE TO YOU ON ANY LEGAL THEORY FOR -ANY SPECIAL, INCIDENTAL, CONSEQUENTIAL, PUNITIVE OR EXEMPLARY DAMAGES -ARISING OUT OF THIS LICENSE OR THE USE OF THE WORK, EVEN IF LICENSOR HAS -BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - -7. Termination - - a. This License and the rights granted hereunder will terminate - automatically upon any breach by You of the terms of this License. - Individuals or entities who have received Adaptations or Collections - from You under this License, however, will not have their licenses - terminated provided such individuals or entities remain in full - compliance with those licenses. Sections 1, 2, 5, 6, 7, and 8 will - survive any termination of this License. - b. Subject to the above terms and conditions, the license granted here is - perpetual (for the duration of the applicable copyright in the Work). - Notwithstanding the above, Licensor reserves the right to release the - Work under different license terms or to stop distributing the Work at - any time; provided, however that any such election will not serve to - withdraw this License (or any other license that has been, or is - required to be, granted under the terms of this License), and this - License will continue in full force and effect unless terminated as - stated above. - -8. Miscellaneous - - a. Each time You Distribute or Publicly Perform the Work or a Collection, - the Licensor offers to the recipient a license to the Work on the same - terms and conditions as the license granted to You under this License. - b. Each time You Distribute or Publicly Perform an Adaptation, Licensor - offers to the recipient a license to the original Work on the same - terms and conditions as the license granted to You under this License. - c. If any provision of this License is invalid or unenforceable under - applicable law, it shall not affect the validity or enforceability of - the remainder of the terms of this License, and without further action - by the parties to this agreement, such provision shall be reformed to - the minimum extent necessary to make such provision valid and - enforceable. - d. No term or provision of this License shall be deemed waived and no - breach consented to unless such waiver or consent shall be in writing - and signed by the party to be charged with such waiver or consent. - e. This License constitutes the entire agreement between the parties with - respect to the Work licensed here. There are no understandings, - agreements or representations with respect to the Work not specified - here. Licensor shall not be bound by any additional provisions that - may appear in any communication from You. This License may not be - modified without the mutual written agreement of the Licensor and You. - f. The rights granted under, and the subject matter referenced, in this - License were drafted utilizing the terminology of the Berne Convention - for the Protection of Literary and Artistic Works (as amended on - September 28, 1979), the Rome Convention of 1961, the WIPO Copyright - Treaty of 1996, the WIPO Performances and Phonograms Treaty of 1996 - and the Universal Copyright Convention (as revised on July 24, 1971). - These rights and subject matter take effect in the relevant - jurisdiction in which the License terms are sought to be enforced - according to the corresponding provisions of the implementation of - those treaty provisions in the applicable national law. If the - standard suite of rights granted under applicable copyright law - includes additional rights not granted under this License, such - additional rights are deemed to be included in the License; this - License is not intended to restrict the license of any rights under - applicable law. - - -Creative Commons Notice - - Creative Commons is not a party to this License, and makes no warranty - whatsoever in connection with the Work. Creative Commons will not be - liable to You or any party on any legal theory for any damages - whatsoever, including without limitation any general, special, - incidental or consequential damages arising in connection to this - license. Notwithstanding the foregoing two (2) sentences, if Creative - Commons has expressly identified itself as the Licensor hereunder, it - shall have all rights and obligations of Licensor. - - Except for the limited purpose of indicating to the public that the - Work is licensed under the CCPL, Creative Commons does not authorize - the use by either party of the trademark "Creative Commons" or any - related trademark or logo of Creative Commons without the prior - written consent of Creative Commons. Any permitted use will be in - compliance with Creative Commons' then-current trademark usage - guidelines, as may be published on its website or otherwise made - available upon request from time to time. For the avoidance of doubt, - this trademark restriction does not form part of this License. - - Creative Commons may be contacted at https://creativecommons.org/. \ No newline at end of file diff --git a/LICENSES/CC0-1.0.txt b/LICENSES/CC0-1.0.txt deleted file mode 100644 index 0e259d42c99..00000000000 --- a/LICENSES/CC0-1.0.txt +++ /dev/null @@ -1,121 +0,0 @@ -Creative Commons Legal Code - -CC0 1.0 Universal - - CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE - LEGAL SERVICES. DISTRIBUTION OF THIS DOCUMENT DOES NOT CREATE AN - ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS - INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES - REGARDING THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS - PROVIDED HEREUNDER, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM - THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS PROVIDED - HEREUNDER. - -Statement of Purpose - -The laws of most jurisdictions throughout the world automatically confer -exclusive Copyright and Related Rights (defined below) upon the creator -and subsequent owner(s) (each and all, an "owner") of an original work of -authorship and/or a database (each, a "Work"). - -Certain owners wish to permanently relinquish those rights to a Work for -the purpose of contributing to a commons of creative, cultural and -scientific works ("Commons") that the public can reliably and without fear -of later claims of infringement build upon, modify, incorporate in other -works, reuse and redistribute as freely as possible in any form whatsoever -and for any purposes, including without limitation commercial purposes. -These owners may contribute to the Commons to promote the ideal of a free -culture and the further production of creative, cultural and scientific -works, or to gain reputation or greater distribution for their Work in -part through the use and efforts of others. - -For these and/or other purposes and motivations, and without any -expectation of additional consideration or compensation, the person -associating CC0 with a Work (the "Affirmer"), to the extent that he or she -is an owner of Copyright and Related Rights in the Work, voluntarily -elects to apply CC0 to the Work and publicly distribute the Work under its -terms, with knowledge of his or her Copyright and Related Rights in the -Work and the meaning and intended legal effect of CC0 on those rights. - -1. Copyright and Related Rights. A Work made available under CC0 may be -protected by copyright and related or neighboring rights ("Copyright and -Related Rights"). Copyright and Related Rights include, but are not -limited to, the following: - - i. the right to reproduce, adapt, distribute, perform, display, - communicate, and translate a Work; - ii. moral rights retained by the original author(s) and/or performer(s); -iii. publicity and privacy rights pertaining to a person's image or - likeness depicted in a Work; - iv. rights protecting against unfair competition in regards to a Work, - subject to the limitations in paragraph 4(a), below; - v. rights protecting the extraction, dissemination, use and reuse of data - in a Work; - vi. database rights (such as those arising under Directive 96/9/EC of the - European Parliament and of the Council of 11 March 1996 on the legal - protection of databases, and under any national implementation - thereof, including any amended or successor version of such - directive); and -vii. other similar, equivalent or corresponding rights throughout the - world based on applicable law or treaty, and any national - implementations thereof. - -2. Waiver. To the greatest extent permitted by, but not in contravention -of, applicable law, Affirmer hereby overtly, fully, permanently, -irrevocably and unconditionally waives, abandons, and surrenders all of -Affirmer's Copyright and Related Rights and associated claims and causes -of action, whether now known or unknown (including existing as well as -future claims and causes of action), in the Work (i) in all territories -worldwide, (ii) for the maximum duration provided by applicable law or -treaty (including future time extensions), (iii) in any current or future -medium and for any number of copies, and (iv) for any purpose whatsoever, -including without limitation commercial, advertising or promotional -purposes (the "Waiver"). Affirmer makes the Waiver for the benefit of each -member of the public at large and to the detriment of Affirmer's heirs and -successors, fully intending that such Waiver shall not be subject to -revocation, rescission, cancellation, termination, or any other legal or -equitable action to disrupt the quiet enjoyment of the Work by the public -as contemplated by Affirmer's express Statement of Purpose. - -3. Public License Fallback. Should any part of the Waiver for any reason -be judged legally invalid or ineffective under applicable law, then the -Waiver shall be preserved to the maximum extent permitted taking into -account Affirmer's express Statement of Purpose. In addition, to the -extent the Waiver is so judged Affirmer hereby grants to each affected -person a royalty-free, non transferable, non sublicensable, non exclusive, -irrevocable and unconditional license to exercise Affirmer's Copyright and -Related Rights in the Work (i) in all territories worldwide, (ii) for the -maximum duration provided by applicable law or treaty (including future -time extensions), (iii) in any current or future medium and for any number -of copies, and (iv) for any purpose whatsoever, including without -limitation commercial, advertising or promotional purposes (the -"License"). The License shall be deemed effective as of the date CC0 was -applied by Affirmer to the Work. Should any part of the License for any -reason be judged legally invalid or ineffective under applicable law, such -partial invalidity or ineffectiveness shall not invalidate the remainder -of the License, and in such case Affirmer hereby affirms that he or she -will not (i) exercise any of his or her remaining Copyright and Related -Rights in the Work or (ii) assert any associated claims and causes of -action with respect to the Work, in either case contrary to Affirmer's -express Statement of Purpose. - -4. Limitations and Disclaimers. - - a. No trademark or patent rights held by Affirmer are waived, abandoned, - surrendered, licensed or otherwise affected by this document. - b. Affirmer offers the Work as-is and makes no representations or - warranties of any kind concerning the Work, express, implied, - statutory or otherwise, including without limitation warranties of - title, merchantability, fitness for a particular purpose, non - infringement, or the absence of latent or other defects, accuracy, or - the present or absence of errors, whether or not discoverable, all to - the greatest extent permissible under applicable law. - c. Affirmer disclaims responsibility for clearing rights of other persons - that may apply to the Work or any use thereof, including without - limitation any person's Copyright and Related Rights in the Work. - Further, Affirmer disclaims responsibility for obtaining any necessary - consents, permissions or other rights required for any use of the - Work. - d. Affirmer understands and acknowledges that Creative Commons is not a - party to this document and has no duty or obligation with respect to - this CC0 or use of the Work. diff --git a/REUSE.toml b/REUSE.toml index 5c7ea8e6f14..1a30d8016c9 100644 --- a/REUSE.toml +++ b/REUSE.toml @@ -1,5 +1,17 @@ version = 1 +# Reuse annotations file. +# +# This file controls how reuse-tool finds copyright and license notices within +# source files. As the tool has a habit of picking up random uses of the word +# 'Copyright' within source code, and because it will complain that other files +# do not contain any specific copyright and license notifications, we usually +# just set a blanket license and copyright notice for a whole sub-tree at a +# time. +# +# See https://reuse.software and https://github.com/fsfe/reuse-tool for more +# details. We currently use reuse-tool version 4.0.3. + [[annotations]] path = [ "compiler/**", @@ -19,6 +31,7 @@ path = [ "LICENSE-MIT", "README.md", "RELEASES.md", + "REUSE.toml", "rustfmt.toml", "rust-bors.toml", "triagebot.toml", From 2e971bf5c69b3997fddab4c4c359ac3773d06247 Mon Sep 17 00:00:00 2001 From: Jonathan Pallant Date: Mon, 22 Jul 2024 10:44:18 +0100 Subject: [PATCH 6/6] Removed CondensedDirectory support from license tools. Now that we have reuse-tool 4.0, we no longer need to massage the JSON license data to collapse LLVM into a single copyright notice and license - reuse-tool can do it for us using an annotation in REUSE.toml. This effectively reverts c6eb03b. --- .../collect-license-metadata/src/main.rs | 10 ---- .../collect-license-metadata/src/path_tree.rs | 52 +------------------ src/tools/generate-copyright/src/main.rs | 38 ++++---------- 3 files changed, 11 insertions(+), 89 deletions(-) diff --git a/src/tools/collect-license-metadata/src/main.rs b/src/tools/collect-license-metadata/src/main.rs index cbe94af3510..ca2a6f4b8c8 100644 --- a/src/tools/collect-license-metadata/src/main.rs +++ b/src/tools/collect-license-metadata/src/main.rs @@ -6,16 +6,6 @@ use crate::licenses::LicensesInterner; use anyhow::Error; use std::path::PathBuf; -// Some directories have too many slight license differences that'd result in a -// huge report, and could be considered a standalone project anyway. Those -// directories are "condensed" into a single licensing block for ease of -// reading, merging the licensing information. -// -// For every `(dir, file)``, every file in `dir` is considered to have the -// license info of `file`. -const CONDENSED_DIRECTORIES: &[(&str, &str)] = - &[("./src/llvm-project/", "./src/llvm-project/README.md")]; - fn main() -> Result<(), Error> { let reuse_exe: PathBuf = std::env::var_os("REUSE_EXE").expect("Missing REUSE_EXE").into(); let dest: PathBuf = std::env::var_os("DEST").expect("Missing DEST").into(); diff --git a/src/tools/collect-license-metadata/src/path_tree.rs b/src/tools/collect-license-metadata/src/path_tree.rs index fc8756d9a2e..b27fb7f9225 100644 --- a/src/tools/collect-license-metadata/src/path_tree.rs +++ b/src/tools/collect-license-metadata/src/path_tree.rs @@ -4,7 +4,7 @@ //! passes over the tree to remove redundant information. use crate::licenses::{License, LicenseId, LicensesInterner}; -use std::collections::{BTreeMap, BTreeSet}; +use std::collections::BTreeMap; use std::path::{Path, PathBuf}; #[derive(serde::Serialize)] @@ -12,7 +12,6 @@ use std::path::{Path, PathBuf}; pub(crate) enum Node { Root { children: Vec> }, Directory { name: PathBuf, children: Vec>, license: Option }, - CondensedDirectory { name: PathBuf, licenses: Vec }, File { name: PathBuf, license: L }, Group { files: Vec, directories: Vec, license: L }, Empty, @@ -59,8 +58,6 @@ impl Node { directories.entry(name).or_insert_with(Vec::new).append(&mut children); } file @ Node::File { .. } => files.push(file), - // Propagate condensed directories as-is. - condensed @ Node::CondensedDirectory { .. } => files.push(condensed), Node::Empty => {} Node::Root { .. } => { panic!("can't have a root inside another element"); @@ -87,7 +84,6 @@ impl Node { } Node::Empty => {} Node::File { .. } => {} - Node::CondensedDirectory { .. } => {} Node::Group { .. } => { panic!("Group should not be present at this stage"); } @@ -134,7 +130,6 @@ impl Node { } } Node::File { .. } => {} - Node::CondensedDirectory { .. } => {} Node::Group { .. } => panic!("group should not be present at this stage"), Node::Empty => {} } @@ -177,9 +172,6 @@ impl Node { Node::Directory { name: child_child_name, .. } => { *child_child_name = child_name.join(&child_child_name); } - Node::CondensedDirectory { name: child_child_name, .. } => { - *child_child_name = child_name.join(&child_child_name); - } Node::File { name: child_child_name, .. } => { *child_child_name = child_name.join(&child_child_name); } @@ -194,7 +186,6 @@ impl Node { } Node::Empty => {} Node::File { .. } => {} - Node::CondensedDirectory { .. } => {} Node::Group { .. } => panic!("Group should not be present at this stage"), } } @@ -262,7 +253,6 @@ impl Node { } } Node::File { .. } => {} - Node::CondensedDirectory { .. } => {} Node::Group { .. } => panic!("FileGroup should not be present at this stage"), Node::Empty => {} } @@ -278,7 +268,6 @@ impl Node { } children.retain(|child| !matches!(child, Node::Empty)); } - Node::CondensedDirectory { .. } => {} Node::Group { .. } => {} Node::File { .. } => {} Node::Empty => {} @@ -302,24 +291,7 @@ pub(crate) fn build(mut input: Vec<(PathBuf, LicenseId)>) -> Node { // Ensure reproducibility of all future steps. input.sort(); - let mut condensed_directories = BTreeMap::new(); - 'outer: for (path, license) in input { - // Files in condensed directories are handled separately. - for (condensed_directory, allowed_file) in super::CONDENSED_DIRECTORIES { - if path.starts_with(condensed_directory) { - if path.as_path() == Path::new(allowed_file) { - // The licence on our allowed file is used to represent the entire directory - condensed_directories - .entry(*condensed_directory) - .or_insert_with(BTreeSet::new) - .insert(license); - } else { - // don't add the file - } - continue 'outer; - } - } - + for (path, license) in input { let mut node = Node::File { name: path.file_name().unwrap().into(), license }; for component in path.parent().unwrap_or_else(|| Path::new(".")).components().rev() { node = Node::Directory { @@ -332,22 +304,6 @@ pub(crate) fn build(mut input: Vec<(PathBuf, LicenseId)>) -> Node { children.push(node); } - for (path, licenses) in condensed_directories { - let path = Path::new(path); - let mut node = Node::CondensedDirectory { - name: path.file_name().unwrap().into(), - licenses: licenses.iter().copied().collect(), - }; - for component in path.parent().unwrap_or_else(|| Path::new(".")).components().rev() { - node = Node::Directory { - name: component.as_os_str().into(), - children: vec![node], - license: None, - }; - } - children.push(node); - } - Node::Root { children } } @@ -376,10 +332,6 @@ pub(crate) fn expand_interned_licenses( Node::Group { files, directories, license } => { Node::Group { files, directories, license: interner.resolve(license) } } - Node::CondensedDirectory { name, licenses } => Node::CondensedDirectory { - name, - licenses: licenses.into_iter().map(|license| interner.resolve(license)).collect(), - }, Node::Empty => Node::Empty, } } diff --git a/src/tools/generate-copyright/src/main.rs b/src/tools/generate-copyright/src/main.rs index 558e87290b0..d91b258162e 100644 --- a/src/tools/generate-copyright/src/main.rs +++ b/src/tools/generate-copyright/src/main.rs @@ -1,5 +1,4 @@ use anyhow::Error; -use std::collections::BTreeSet; use std::io::Write; use std::path::PathBuf; @@ -27,7 +26,7 @@ fn render_recursive(node: &Node, buffer: &mut Vec, depth: usize) -> Result<( } } Node::Directory { name, children, license } => { - render_license(&prefix, std::iter::once(name), license.iter(), buffer)?; + render_license(&prefix, std::iter::once(name), license.as_ref(), buffer)?; if !children.is_empty() { writeln!(buffer, "{prefix}")?; writeln!(buffer, "{prefix}*Exceptions:*")?; @@ -37,19 +36,11 @@ fn render_recursive(node: &Node, buffer: &mut Vec, depth: usize) -> Result<( } } } - Node::CondensedDirectory { name, licenses } => { - render_license(&prefix, std::iter::once(name), licenses.iter(), buffer)?; - } Node::Group { files, directories, license } => { - render_license( - &prefix, - directories.iter().chain(files.iter()), - std::iter::once(license), - buffer, - )?; + render_license(&prefix, directories.iter().chain(files.iter()), Some(license), buffer)?; } Node::File { name, license } => { - render_license(&prefix, std::iter::once(name), std::iter::once(license), buffer)?; + render_license(&prefix, std::iter::once(name), Some(license), buffer)?; } } @@ -59,27 +50,17 @@ fn render_recursive(node: &Node, buffer: &mut Vec, depth: usize) -> Result<( fn render_license<'a>( prefix: &str, names: impl Iterator, - licenses: impl Iterator, + license: Option<&License>, buffer: &mut Vec, ) -> Result<(), Error> { - let mut spdxs = BTreeSet::new(); - let mut copyrights = BTreeSet::new(); - for license in licenses { - spdxs.insert(&license.spdx); - for copyright in &license.copyright { - copyrights.insert(copyright); - } - } - for name in names { writeln!(buffer, "{prefix}**`{name}`** ")?; } - for spdx in spdxs.iter() { - writeln!(buffer, "{prefix}License: `{spdx}` ")?; - } - for (i, copyright) in copyrights.iter().enumerate() { - let suffix = if i == copyrights.len() - 1 { "" } else { " " }; - writeln!(buffer, "{prefix}Copyright: {copyright}{suffix}")?; + if let Some(license) = license { + writeln!(buffer, "{prefix}License: `{}`", license.spdx)?; + for copyright in license.copyright.iter() { + writeln!(buffer, "{prefix}Copyright: {copyright}")?; + } } Ok(()) @@ -95,7 +76,6 @@ struct Metadata { pub(crate) enum Node { Root { children: Vec }, Directory { name: String, children: Vec, license: Option }, - CondensedDirectory { name: String, licenses: Vec }, File { name: String, license: License }, Group { files: Vec, directories: Vec, license: License }, }