SERVER-122016: [v8.3] exclude first-party components from README.third_party.md and re-add WiredTiger vendored test library table (#50444)

GitOrigin-RevId: 0aca6ab9dbedf41daa5478fbea6592b212152ced
This commit is contained in:
Jason Hills 2026-03-26 16:55:58 -04:00 committed by MongoDB Bot
parent b59bd51a17
commit 58b8bb3260
5 changed files with 102 additions and 62 deletions

View File

@ -34,8 +34,6 @@ a notice will be included in
| [fmt] | MIT | 11.2.0 | | ✗ |
| [folly] | Apache-2.0 | 2023.12.25.00 | | ✗ |
| [fuzztest] | BSD-3-Clause, Apache-2.0, HPND | 2025-07-28 | | |
| [github.com/apache/arrow-nanoarrow] | Apache-2.0 | apache-arrow-nanoarrow-0.7.0 | | |
| [github.com/apache/iceberg-cpp] | Apache-2.0 | v0.2.0-rc1 | | |
| [googletest] | BSD-3-Clause | 1.17.0 | | |
| [gperftools] | BSD-3-Clause | 2.9.1 | | ✗ |
| [gRPC (C++)] | Apache-2.0 | 1.74.1 | | ✗ |
@ -45,11 +43,9 @@ a notice will be included in
| [JSON Schema Store] | Apache-2.0 | 6847cfc3a17a04a7664474212db50c627e1e3408 | | |
| [JSON-Schema-Test-Suite] | MIT | 728066f9c5c258ba3b1804a22a5b998f2ec77ec0 | | |
| [libdwarf] | LGPL-2.1-or-later, BSD-3-Clause, Public Domain | 2.1.0 | | |
| [libmongocrypt] | Apache-2.0 | 1.15.0 | ✗ | ✗ |
| [LibTomCrypt] | Unlicense | 1.18.2 | ✗ | ✗ |
| [libunwind] | MIT | 1.8.1 | | ✗ |
| [linenoise] | BSD-2-Clause | 6cdc775807e57b2c3fd64bd207814f8ee1fe35f3 | | ✗ |
| [MongoDB C Driver] | Apache-2.0 | 1.28.1 | ✗ | ✗ |
| [Mozilla Firefox ESR] | MPL-2.0 | 140.7.0esr | | ✗ |
| [MurmurHash3] | Public Domain | a6bd3ce7be8ad147ea820a7cf6229a975c0c96bb | | ✗ |
| [nlohmann/json] | MIT | 3.11.3 | ✗ | |
@ -71,9 +67,8 @@ a notice will be included in
| [timelib] | MIT | 2022.13 | | ✗ |
| [Unicode Character Database] | Unicode-DFS-2016 | 8.0.0 | ✗ | ✗ |
| [valgrind.h] | BSD-4-Clause | 093bef43d69236287ccc748591c9560a71181b0a | | ✗ |
| [WiredTiger] | GPL-2.0-only OR GPL-3.0-only | 12.0.0 | ✗ | ✗ |
| [yaml-cpp] | MIT | 0.6.3 | | ✗ |
| [zlib] | Zlib | 1.3 | ✗ | ✗ |
| [zlib] | Zlib | 1.3.2 | ✗ | ✗ |
| [Zstandard (zstd)] | BSD-3-Clause OR GPL-2.0-only | 1.5.5 | ✗ | ✗ |
[Abseil Common Libraries (C++)]: https://github.com/abseil/abseil-cpp.git
@ -86,7 +81,6 @@ a notice will be included in
[JSON Schema Store]: https://github.com/schemastore/schemastore.git
[JSON-Schema-Test-Suite]: https://github.com/json-schema-org/JSON-Schema-Test-Suite.git
[LibTomCrypt]: https://github.com/libtom/libtomcrypt.git
[MongoDB C Driver]: https://github.com/mongodb/mongo-c-driver.git
[Mozilla Firefox ESR]: https://github.com/mozilla-firefox/firefox.git
[MurmurHash3]: https://github.com/aappleby/smhasher/blob/a6bd3ce/
[PCRE2 - Perl-Compatible Regular Expressions]: https://github.com/pcre2project/pcre2.git
@ -96,7 +90,6 @@ a notice will be included in
[SafeInt]: https://github.com/dcleblanc/safeint.git
[Snowball Stemming Algorithms (libstemmer)]: http://github.com/snowballstem/snowball.git
[Unicode Character Database]: https://www.unicode.org/Public/8.0.0/
[WiredTiger]: https://github.com/wiredtiger/wiredtiger.git
[Zstandard (zstd)]: https://github.com/facebook/zstd.git
[benchmark]: https://github.com/google/benchmark.git
[c-ares]: https://github.com/c-ares/c-ares.git
@ -105,13 +98,10 @@ a notice will be included in
[folly]: https://github.com/facebook/folly.git
[fuzztest]: https://github.com/google/fuzztest.git
[gRPC (C++)]: https://github.com/grpc/grpc.git
[github.com/apache/arrow-nanoarrow]: pkg:github/apache/arrow-nanoarrow@apache-arrow-nanoarrow-0.7.0
[github.com/apache/iceberg-cpp]: pkg:github/apache/iceberg-cpp@v0.2.0-rc1
[googletest]: https://github.com/google/googletest.git
[gperftools]: https://github.com/gperftools/gperftools.git
[immer]: https://github.com/arximboldi/immer.git
[libdwarf]: https://github.com/davea42/libdwarf-code.git
[libmongocrypt]: https://github.com/mongodb/libmongocrypt.git
[libunwind]: https://github.com/libunwind/libunwind.git
[linenoise]: https://github.com/antirez/linenoise
[nlohmann/json]: https://github.com/nlohmann/json.git
@ -129,6 +119,22 @@ a notice will be included in
[yaml-cpp]: https://github.com/jbeder/yaml-cpp.git
[zlib]: https://zlib.net/fossils/
## WiredTiger Vendored Test Libraries
The following libraries are transitively included by WiredTiger,
and are used by that component for testing. They don't appear in
released binary artifacts.
| Name |
| ------------------------------ |
| pkg:pypi/concurrencytest@0.1.2 |
| pkg:pypi/discover@0.4.0 |
| pkg:pypi/extras@0.0.3 |
| pkg:pypi/iso8601@2.1.0 |
| pkg:pypi/python-subunit@1.4.4 |
| pkg:pypi/testscenarios@0.4 |
| pkg:pypi/testtools@2.7.1 |
## Dynamically Linked Libraries
Sometimes MongoDB needs to load libraries provided and managed by the

View File

@ -2408,6 +2408,10 @@
{
"name": "import_script_path",
"value": "src/third_party/libmongocrypt/import.sh"
},
{
"name": "mdb_first_party",
"value": "true"
}
]
},
@ -2457,6 +2461,10 @@
{
"name": "import_script_path",
"value": "src/third_party/libbson/import.sh"
},
{
"name": "mdb_first_party",
"value": "true"
}
]
},
@ -2502,6 +2510,10 @@
{
"name": "emits_persisted_data",
"value": "false"
},
{
"name": "mdb_first_party",
"value": "true"
}
]
},
@ -3209,6 +3221,10 @@
{
"name": "emits_persisted_data",
"value": "true"
},
{
"name": "mdb_first_party",
"value": "true"
}
]
},

View File

@ -3,9 +3,9 @@
"bomFormat": "CycloneDX",
"specVersion": "1.5",
"serialNumber": "urn:uuid:71d980f0-95c5-4dfa-8987-307eb8880ce2",
"version": 4,
"version": 5,
"metadata": {
"timestamp": "2026-03-16T06:12:10Z",
"timestamp": "2026-03-25T17:21:56Z",
"lifecycles": [
{
"phase": "pre-build"
@ -563,8 +563,8 @@
"supplier": {
"name": "The Cyrus Project",
"url": [
"https://www.cyrusimap.org/sasl/",
"https://www.cyrusimap.org/overview/who_is_cyrus.html"
"https://www.cyrusimap.org/overview/who_is_cyrus.html",
"https://www.cyrusimap.org/sasl/"
]
},
"author": "The Cyrus Team",
@ -1615,7 +1615,7 @@
},
{
"type": "library",
"bom-ref": "pkg:github/madler/zlib@1.3",
"bom-ref": "pkg:github/madler/zlib@1.3.2",
"supplier": {
"name": "zlib",
"url": [
@ -1625,7 +1625,7 @@
"author": "Jean-loup Gailly, Mark Adler",
"group": "madler",
"name": "zlib",
"version": "1.3",
"version": "1.3.2",
"description": "zlib is a general purpose data compression library.",
"scope": "required",
"licenses": [
@ -1636,8 +1636,8 @@
}
],
"copyright": "Copyright \u00a9 1995-2024 Jean-loup Gailly and Mark Adler.",
"cpe": "cpe:2.3:a:zlib:zlib:1.3:*:*:*:*:*:*:*",
"purl": "pkg:github/madler/zlib@1.3",
"cpe": "cpe:2.3:a:zlib:zlib:1.3.2:*:*:*:*:*:*:*",
"purl": "pkg:github/madler/zlib@1.3.2",
"externalReferences": [
{
"url": "https://zlib.net/fossils/",
@ -1708,6 +1708,10 @@
{
"name": "import_script_path",
"value": "src/third_party/libmongocrypt/import.sh"
},
{
"name": "mdb_first_party",
"value": "true"
}
]
},
@ -1757,6 +1761,10 @@
{
"name": "import_script_path",
"value": "src/third_party/libbson/import.sh"
},
{
"name": "mdb_first_party",
"value": "true"
}
]
},
@ -2309,6 +2317,10 @@
{
"name": "emits_persisted_data",
"value": "true"
},
{
"name": "mdb_first_party",
"value": "true"
}
]
},
@ -2393,38 +2405,6 @@
"value": "false"
}
]
},
{
"bom-ref": "pkg:github/apache/arrow-nanoarrow@apache-arrow-nanoarrow-0.7.0?package-id=614f3463351947a8",
"licenses": [
{
"license": {
"id": "Apache-2.0"
}
}
],
"name": "github.com/apache/arrow-nanoarrow",
"purl": "pkg:github/apache/arrow-nanoarrow@apache-arrow-nanoarrow-0.7.0",
"type": "library",
"version": "apache-arrow-nanoarrow-0.7.0",
"scope": "excluded",
"properties": []
},
{
"bom-ref": "pkg:github/apache/iceberg-cpp@v0.2.0-rc1?package-id=ce0b9d2c8402061a",
"licenses": [
{
"license": {
"id": "Apache-2.0"
}
}
],
"name": "github.com/apache/iceberg-cpp",
"purl": "pkg:github/apache/iceberg-cpp@v0.2.0-rc1",
"type": "library",
"version": "v0.2.0-rc1",
"scope": "excluded",
"properties": []
}
],
"dependencies": [
@ -2561,7 +2541,7 @@
"dependsOn": []
},
{
"ref": "pkg:github/madler/zlib@1.3",
"ref": "pkg:github/madler/zlib@1.3.2",
"dependsOn": []
},
{
@ -2571,7 +2551,7 @@
{
"ref": "pkg:github/mongodb/mongo-c-driver@1.28.1",
"dependsOn": [
"pkg:github/madler/zlib@1.3"
"pkg:github/madler/zlib@1.3.2"
]
},
{
@ -2609,7 +2589,7 @@
"pkg:github/json-schema-org/json-schema-test-suite@728066f9c5c258ba3b1804a22a5b998f2ec77ec0",
"pkg:github/libtom/libtomcrypt@v1.18.2",
"pkg:github/libunwind/libunwind@v1.8.1",
"pkg:github/madler/zlib@1.3",
"pkg:github/madler/zlib@1.3.2",
"pkg:github/mongodb/libmongocrypt@1.15.0",
"pkg:github/nlohmann/json@v3.11.3",
"pkg:github/nodejs/node@22.1.0?download_url=https%3A%2F%2Fgithub.com%2Fnodejs%2Fnode%2Fblob%2F8b45c5d26a829bcd3280401dbc1874bcd1302289%2Fsrc%2Fnode_i18n.cc%23L825%23src%2Fnode_i18n.cc%3AGetStringWidth#src/node_i18n.cc",
@ -2682,14 +2662,6 @@
{
"ref": "pkg:pypi/ocspresponder@0.5.0",
"dependsOn": []
},
{
"ref": "pkg:github/apache/arrow-nanoarrow@apache-arrow-nanoarrow-0.7.0?package-id=614f3463351947a8",
"dependsOn": []
},
{
"ref": "pkg:github/apache/iceberg-cpp@v0.2.0-rc1?package-id=ce0b9d2c8402061a",
"dependsOn": []
}
]
}

View File

@ -23,6 +23,14 @@ $component_chart
$component_links
## WiredTiger Vendored Test Libraries
The following libraries are transitively included by WiredTiger,
and are used by that component for testing. They don't appear in
released binary artifacts.
$wiredtiger_chart
## Dynamically Linked Libraries
Sometimes MongoDB needs to load libraries provided and managed by the

View File

@ -2,6 +2,7 @@ import bisect
import json
import logging
import os
import re
import sys
import warnings
@ -26,9 +27,14 @@ def main():
component_links_string = sbom_to_component_links_string(sbom)
wiredtiger_chart = folders_to_wiredtiger_chart()
right_pad_chart_values(wiredtiger_chart)
wiredtiger_chart_string = chart_to_string(wiredtiger_chart)
template_data = {
"component_chart": component_chart_string,
"component_links": component_links_string,
"wiredtiger_chart": wiredtiger_chart_string,
}
create_markdown_with_template(template_data)
@ -56,6 +62,8 @@ def sbom_to_component_chart(sbom: dict) -> list[list[str]]:
component_chart = []
for component in components:
if is_first_party(component):
continue
check_component_validity(component)
name = component["name"]
license_string = []
@ -109,6 +117,8 @@ def sbom_to_component_links_string(sbom: dict) -> list[list[str]]:
link_list = []
for component in components:
if is_first_party(component):
continue
check_component_validity(component)
info_link = get_component_info_link(component)
bisect.insort(link_list, f"[{component['name'].replace('|', '')}]: {info_link}")
@ -116,6 +126,34 @@ def sbom_to_component_links_string(sbom: dict) -> list[list[str]]:
return "\n".join(link_list)
WIREDTIGER_3RDPARTY_PATH = "src/third_party/wiredtiger/test/3rdparty"
_WIREDTIGER_FOLDER_RE = re.compile(r"(.*-\d+\.\d+(\.\d+)?).*")
def folders_to_wiredtiger_chart() -> list[list[str]]:
wiredtiger_chart = [["Name"]]
try:
folder_names = os.listdir(WIREDTIGER_3RDPARTY_PATH)
except FileNotFoundError:
logging.warning("Warning: %s does not exist. Skipping wiredtiger chart.", WIREDTIGER_3RDPARTY_PATH)
return wiredtiger_chart
for folder in folder_names:
m = _WIREDTIGER_FOLDER_RE.fullmatch(folder)
if m:
name, version = m.group(1).rsplit("-", 1)
bisect.insort(wiredtiger_chart, [f"pkg:pypi/{name}@{version}"])
return wiredtiger_chart
def is_first_party(component: dict) -> bool:
for prop in component.get("properties", []):
if prop.get("name") == "mdb_first_party" and prop.get("value") == "true":
return True
return False
def check_component_validity(component) -> None:
for required_key in ["name", "version", "licenses"]:
if required_key not in component: