summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLucie Gérard <lucie.gerard@qt.io>2024-04-04 18:22:59 +0200
committerQt Cherry-pick Bot <cherrypick_bot@qt-project.org>2024-07-11 22:04:50 +0000
commit99e6614634d21c7701b658fbff09c23ebd04d63a (patch)
tree70637e587bc3d44a27f662a25a6d16b446599e86
parent818e75dcf81921e7f2820bff912f587fc228486e (diff)
Add a licenseRule.json file for checking of SPDX license identifiers
The license test in qtqa reads this file in order to check the validity of the license used. This file reproduce the QUIP-18 [1] rules, with some exceptions. Each entry in the file corresponds to a set of licensing rules. A set of licensing rules can depend on the file ending, registered in "file_pattern_ending". The last entry in the file has no "file_pattern_ending", it sets the rules for the files whose licensing does not depend on their ending. The license to be used depends on the location of the file within the Qt module repository. Let's call this "<true_location>". The "<true_location>" can also correspond to a file name, offering flexibility for exceptions to the rule. The "<true_location>" are registered in "location". For each "<true_location>" there is a "file type" entry and a "spdx" entry. The "spdx" entry gives the rule: the expected license tag(s) in SPDX format for the file ending (if applicable) and "<true_location>". The "file type" informs on the QUIP-18 type the tested file corresponds to. It is purely informational for the reader. The set of rules are tested in order of appearance in the json file. For this reason, a more constraining ending (like "special.txt") needs to appear in a "file_pattern_ending" located before the "file_pattern_ending" of a less constraining ending (like ".txt"). Also, a file ending cannot be present in two "file_pattern_ending". "file_pattern_ending" and "spdx" should list strings. "<true_location>" can be regular expressions. During the test the deeper "<true_location>" are checked first. The order is which they appear in the json file does not matter. To test this file, run QT_MODULE_TO_TEST=../qtwebengine perl tests/prebuild/license/tst_licenses.pl [1]: https://contribute.qt-project.org/quips/18 Task-number: QTBUG-121039 Change-Id: I4c6c5a78ca17e3afb20023e7339b1b6caf04be83 Reviewed-by: Kai Köhne <kai.koehne@qt.io> (cherry picked from commit 5693d073d1478967362d8f81f29b7f57ba88da66) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> (cherry picked from commit 5313ab65edb681571175c03114b479a32474d3c8)
-rw-r--r--licenseRule.json104
1 files changed, 104 insertions, 0 deletions
diff --git a/licenseRule.json b/licenseRule.json
new file mode 100644
index 000000000..5f78a7dc8
--- /dev/null
+++ b/licenseRule.json
@@ -0,0 +1,104 @@
+[
+ {
+ "comment" : ["file_pattern_ending: strings matched against the end of a file name.",
+ "location keys: regular expression matched against the beginning of",
+ "the file path (relative to the git submodule root).",
+ "spdx: list of SPDX-License-Expression's allowed in the matching files.",
+ "-------------------------------------------------------",
+ "Files with the following endings are Build System licensed,",
+ "unless they are examples",
+ "Files with other endings can also be build system files"
+ ],
+ "file_pattern_ending" : ["CMakeLists.txt", ".cmake", ".pro", ".pri", ".prf",
+ "configure", "configure.bat", "cmake.in", "plist.in", "CMakeLists.txt.in", ".clang-format"],
+ "location" : {
+ "" : {
+ "comment" : "Default",
+ "file type" : "build system",
+ "spdx" : ["BSD-3-Clause"]
+ },
+ "(.*)(examples/|snippets/)" : {
+ "comment" : "Example takes precedence",
+ "file type" : "examples and snippets",
+ "spdx" : ["LicenseRef-Qt-Commercial OR BSD-3-Clause"]
+ }
+ }
+ },
+ {
+ "comments" : ["Files with the following endings are Tool licensed,",
+ "unless they are examples.",
+ "Files with other endings can also be tool files."],
+ "file_pattern_ending" : [".sh", ".py", ".pl", ".bat", ".ps1"],
+ "location" :{
+ "" : {
+ "comment" : "Default",
+ "file type" : "tools and utils",
+ "spdx" : ["LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0"]
+ },
+ "(.*)(examples/|snippets/)" : {
+ "comment" : "Example takes precedence",
+ "file type" : "examples and snippets",
+ "spdx" : ["LicenseRef-Qt-Commercial OR BSD-3-Clause"]
+ }
+ }
+ },
+ {
+ "comment" : "Files with the following endings are Documentation licensed.",
+ "file_pattern_ending" : [".qdoc", ".qdoc.in", ".qdocinc" , ".qdocconf", ".txt", "README", "qt_attribution.json"],
+ "location" :{
+ "" : {
+ "comment" : "",
+ "file type" : "documentation",
+ "spdx" : ["LicenseRef-Qt-Commercial OR GFDL-1.3-no-invariants-only"]
+ }
+ }
+ },
+ {
+ "comment" : ["All other files",
+ "The licensing is defined only by the file location in the Qt module repository.",
+ "NO <file_pattern_ending> key for this case!",
+ "This needs to be the last entry of the file."],
+ "location" : {
+ "" : {
+ "comment" : "Default",
+ "file type" : "module and plugin",
+ "spdx" : ["LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only"]
+ },
+ "src/" : {
+ "comment" : "Default",
+ "file type" : "module and plugin",
+ "spdx" : ["LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only"]
+ },
+ "tests/" : {
+ "comment" : "Default",
+ "file type" : "test",
+ "spdx" : ["LicenseRef-Qt-Commercial OR GPL-3.0-only"]
+ },
+ "(.*)(examples/|snippets/)" : {
+ "comment" : "Default",
+ "file type" : "examples and snippets",
+ "spdx" : ["LicenseRef-Qt-Commercial OR BSD-3-Clause"]
+ },
+ "src/host/config\\.tests/" : {
+ "comment" : "Default",
+ "file type" : "build system",
+ "spdx" : ["BSD-3-Clause"]
+ },
+ "src/core/clipboard_util_win.cpp" : {
+ "comment" : "Partially from Chromium",
+ "file type" : "module and plugin",
+ "spdx" : ["BSD-3-Clause"]
+ },
+ "src/core/common/qt_messages.*" : {
+ "comment" : "Partially from Chromium",
+ "file type" : "module and plugin",
+ "spdx" : ["BSD-3-Clause"]
+ },
+ "src/core/tools/qwebengine_convert_dict/main.cpp" : {
+ "comment" : "Partially from Chromium",
+ "file type" : "module and plugin",
+ "spdx" : ["BSD-3-Clause"]
+ }
+ }
+ }
+]