From c0dd140340deadd184cc9e83f67c9504c2b175d3 Mon Sep 17 00:00:00 2001 From: Ezra Chung Date: Tue, 29 Oct 2024 15:28:20 -0500 Subject: [PATCH 01/78] uv: convert Python requirements into pyproject.toml --- etc/clang_format.py | 10 + etc/requirements.txt | 28 --- pyproject.toml | 23 ++ uv.lock | 573 +++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 606 insertions(+), 28 deletions(-) delete mode 100644 etc/requirements.txt create mode 100644 pyproject.toml create mode 100644 uv.lock diff --git a/etc/clang_format.py b/etc/clang_format.py index 627d83a241..f25ea234e9 100644 --- a/etc/clang_format.py +++ b/etc/clang_format.py @@ -1,4 +1,10 @@ #!/usr/bin/env python + +# /// script +# requires-python = "<3.0" +# dependencies = [] +# /// + """ A script that provides: 1. Ability to grab binaries where possible from LLVM. @@ -852,6 +858,10 @@ def usage(): def main(): """Main entry point """ + + # Python 3 is not supported by this script. + assert sys.version_info.major < 3 + parser = OptionParser() parser.add_option("-c", "--clang-format", type="string", dest="clang_format") diff --git a/etc/requirements.txt b/etc/requirements.txt deleted file mode 100644 index 83c495288c..0000000000 --- a/etc/requirements.txt +++ /dev/null @@ -1,28 +0,0 @@ -beautifulsoup4==4.12.3 # etc/patch-apidocs-index-pages.py. -click==8.1.7 # etc/make_release.py -cryptography==42.0.7 # etc/make_release.py (PyJWT) -GitPython==3.1.43 # etc/make_release.py -jira==3.5.2 # etc/make_release.py -PyGithub==2.3.0 # etc/make_release.py - -# Dependencies of required packages above. -certifi==2024.7.4 -cffi==1.16.0 -charset-normalizer==3.3.2 -defusedxml==0.7.1 -Deprecated==1.2.14 -gitdb==4.0.11 -idna==3.7 -oauthlib==3.2.2 -packaging==24.1 -pycparser==2.22 -PyJWT==2.8.0 -PyNaCl==1.5.0 -requests==2.32.3 -requests-oauthlib==2.0.0 -requests-toolbelt==1.0.0 -smmap==5.0.1 -soupsieve==2.5 -typing_extensions==4.12.2 -urllib3==2.2.2 -wrapt==1.16.0 diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 0000000000..ee2550b2df --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,23 @@ +[project] +name = "mongo-cxx-driver" +version = "0.1.0" +description = "For development only." +requires-python = ">=3.10" +dependencies = [] + +[dependency-groups] +dev = [ + # etc/make_release.py + "click>=6.0", + "gitpython>=3.1", + "jira>=3.1", + "looseversion>=1.3", + "pygithub>=2.0", + + # etc/patch-apidocs-current-redirects.py + "packaging>=14.0", + + # etc/patch-apidocs-index-pages.py + "beautifulsoup4>=4.12", + "packaging>=14.0", +] diff --git a/uv.lock b/uv.lock new file mode 100644 index 0000000000..8404e95d79 --- /dev/null +++ b/uv.lock @@ -0,0 +1,573 @@ +version = 1 +requires-python = ">=3.10" + +[[package]] +name = "beautifulsoup4" +version = "4.12.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "soupsieve" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/b3/ca/824b1195773ce6166d388573fc106ce56d4a805bd7427b624e063596ec58/beautifulsoup4-4.12.3.tar.gz", hash = "sha256:74e3d1928edc070d21748185c46e3fb33490f22f52a3addee9aee0f4f7781051", size = 581181 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b1/fe/e8c672695b37eecc5cbf43e1d0638d88d66ba3a44c4d321c796f4e59167f/beautifulsoup4-4.12.3-py3-none-any.whl", hash = "sha256:b80878c9f40111313e55da8ba20bdba06d8fa3969fc68304167741bbf9e082ed", size = 147925 }, +] + +[[package]] +name = "certifi" +version = "2024.8.30" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/b0/ee/9b19140fe824b367c04c5e1b369942dd754c4c5462d5674002f75c4dedc1/certifi-2024.8.30.tar.gz", hash = "sha256:bec941d2aa8195e248a60b31ff9f0558284cf01a52591ceda73ea9afffd69fd9", size = 168507 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/12/90/3c9ff0512038035f59d279fddeb79f5f1eccd8859f06d6163c58798b9487/certifi-2024.8.30-py3-none-any.whl", hash = "sha256:922820b53db7a7257ffbda3f597266d435245903d80737e34f8a45ff3e3230d8", size = 167321 }, +] + +[[package]] +name = "cffi" +version = "1.17.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pycparser" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/fc/97/c783634659c2920c3fc70419e3af40972dbaf758daa229a7d6ea6135c90d/cffi-1.17.1.tar.gz", hash = "sha256:1c39c6016c32bc48dd54561950ebd6836e1670f2ae46128f67cf49e789c52824", size = 516621 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/90/07/f44ca684db4e4f08a3fdc6eeb9a0d15dc6883efc7b8c90357fdbf74e186c/cffi-1.17.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:df8b1c11f177bc2313ec4b2d46baec87a5f3e71fc8b45dab2ee7cae86d9aba14", size = 182191 }, + { url = "https://files.pythonhosted.org/packages/08/fd/cc2fedbd887223f9f5d170c96e57cbf655df9831a6546c1727ae13fa977a/cffi-1.17.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8f2cdc858323644ab277e9bb925ad72ae0e67f69e804f4898c070998d50b1a67", size = 178592 }, + { url = "https://files.pythonhosted.org/packages/de/cc/4635c320081c78d6ffc2cab0a76025b691a91204f4aa317d568ff9280a2d/cffi-1.17.1-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:edae79245293e15384b51f88b00613ba9f7198016a5948b5dddf4917d4d26382", size = 426024 }, + { url = "https://files.pythonhosted.org/packages/b6/7b/3b2b250f3aab91abe5f8a51ada1b717935fdaec53f790ad4100fe2ec64d1/cffi-1.17.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:45398b671ac6d70e67da8e4224a065cec6a93541bb7aebe1b198a61b58c7b702", size = 448188 }, + { url = "https://files.pythonhosted.org/packages/d3/48/1b9283ebbf0ec065148d8de05d647a986c5f22586b18120020452fff8f5d/cffi-1.17.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ad9413ccdeda48c5afdae7e4fa2192157e991ff761e7ab8fdd8926f40b160cc3", size = 455571 }, + { url = "https://files.pythonhosted.org/packages/40/87/3b8452525437b40f39ca7ff70276679772ee7e8b394934ff60e63b7b090c/cffi-1.17.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5da5719280082ac6bd9aa7becb3938dc9f9cbd57fac7d2871717b1feb0902ab6", size = 436687 }, + { url = "https://files.pythonhosted.org/packages/8d/fb/4da72871d177d63649ac449aec2e8a29efe0274035880c7af59101ca2232/cffi-1.17.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2bb1a08b8008b281856e5971307cc386a8e9c5b625ac297e853d36da6efe9c17", size = 446211 }, + { url = "https://files.pythonhosted.org/packages/ab/a0/62f00bcb411332106c02b663b26f3545a9ef136f80d5df746c05878f8c4b/cffi-1.17.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:045d61c734659cc045141be4bae381a41d89b741f795af1dd018bfb532fd0df8", size = 461325 }, + { url = "https://files.pythonhosted.org/packages/36/83/76127035ed2e7e27b0787604d99da630ac3123bfb02d8e80c633f218a11d/cffi-1.17.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:6883e737d7d9e4899a8a695e00ec36bd4e5e4f18fabe0aca0efe0a4b44cdb13e", size = 438784 }, + { url = "https://files.pythonhosted.org/packages/21/81/a6cd025db2f08ac88b901b745c163d884641909641f9b826e8cb87645942/cffi-1.17.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:6b8b4a92e1c65048ff98cfe1f735ef8f1ceb72e3d5f0c25fdb12087a23da22be", size = 461564 }, + { url = "https://files.pythonhosted.org/packages/f8/fe/4d41c2f200c4a457933dbd98d3cf4e911870877bd94d9656cc0fcb390681/cffi-1.17.1-cp310-cp310-win32.whl", hash = "sha256:c9c3d058ebabb74db66e431095118094d06abf53284d9c81f27300d0e0d8bc7c", size = 171804 }, + { url = "https://files.pythonhosted.org/packages/d1/b6/0b0f5ab93b0df4acc49cae758c81fe4e5ef26c3ae2e10cc69249dfd8b3ab/cffi-1.17.1-cp310-cp310-win_amd64.whl", hash = "sha256:0f048dcf80db46f0098ccac01132761580d28e28bc0f78ae0d58048063317e15", size = 181299 }, + { url = "https://files.pythonhosted.org/packages/6b/f4/927e3a8899e52a27fa57a48607ff7dc91a9ebe97399b357b85a0c7892e00/cffi-1.17.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:a45e3c6913c5b87b3ff120dcdc03f6131fa0065027d0ed7ee6190736a74cd401", size = 182264 }, + { url = "https://files.pythonhosted.org/packages/6c/f5/6c3a8efe5f503175aaddcbea6ad0d2c96dad6f5abb205750d1b3df44ef29/cffi-1.17.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:30c5e0cb5ae493c04c8b42916e52ca38079f1b235c2f8ae5f4527b963c401caf", size = 178651 }, + { url = "https://files.pythonhosted.org/packages/94/dd/a3f0118e688d1b1a57553da23b16bdade96d2f9bcda4d32e7d2838047ff7/cffi-1.17.1-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f75c7ab1f9e4aca5414ed4d8e5c0e303a34f4421f8a0d47a4d019ceff0ab6af4", size = 445259 }, + { url = "https://files.pythonhosted.org/packages/2e/ea/70ce63780f096e16ce8588efe039d3c4f91deb1dc01e9c73a287939c79a6/cffi-1.17.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a1ed2dd2972641495a3ec98445e09766f077aee98a1c896dcb4ad0d303628e41", size = 469200 }, + { url = "https://files.pythonhosted.org/packages/1c/a0/a4fa9f4f781bda074c3ddd57a572b060fa0df7655d2a4247bbe277200146/cffi-1.17.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:46bf43160c1a35f7ec506d254e5c890f3c03648a4dbac12d624e4490a7046cd1", size = 477235 }, + { url = "https://files.pythonhosted.org/packages/62/12/ce8710b5b8affbcdd5c6e367217c242524ad17a02fe5beec3ee339f69f85/cffi-1.17.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a24ed04c8ffd54b0729c07cee15a81d964e6fee0e3d4d342a27b020d22959dc6", size = 459721 }, + { url = "https://files.pythonhosted.org/packages/ff/6b/d45873c5e0242196f042d555526f92aa9e0c32355a1be1ff8c27f077fd37/cffi-1.17.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:610faea79c43e44c71e1ec53a554553fa22321b65fae24889706c0a84d4ad86d", size = 467242 }, + { url = "https://files.pythonhosted.org/packages/1a/52/d9a0e523a572fbccf2955f5abe883cfa8bcc570d7faeee06336fbd50c9fc/cffi-1.17.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:a9b15d491f3ad5d692e11f6b71f7857e7835eb677955c00cc0aefcd0669adaf6", size = 477999 }, + { url = "https://files.pythonhosted.org/packages/44/74/f2a2460684a1a2d00ca799ad880d54652841a780c4c97b87754f660c7603/cffi-1.17.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:de2ea4b5833625383e464549fec1bc395c1bdeeb5f25c4a3a82b5a8c756ec22f", size = 454242 }, + { url = "https://files.pythonhosted.org/packages/f8/4a/34599cac7dfcd888ff54e801afe06a19c17787dfd94495ab0c8d35fe99fb/cffi-1.17.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:fc48c783f9c87e60831201f2cce7f3b2e4846bf4d8728eabe54d60700b318a0b", size = 478604 }, + { url = "https://files.pythonhosted.org/packages/34/33/e1b8a1ba29025adbdcda5fb3a36f94c03d771c1b7b12f726ff7fef2ebe36/cffi-1.17.1-cp311-cp311-win32.whl", hash = "sha256:85a950a4ac9c359340d5963966e3e0a94a676bd6245a4b55bc43949eee26a655", size = 171727 }, + { url = "https://files.pythonhosted.org/packages/3d/97/50228be003bb2802627d28ec0627837ac0bf35c90cf769812056f235b2d1/cffi-1.17.1-cp311-cp311-win_amd64.whl", hash = "sha256:caaf0640ef5f5517f49bc275eca1406b0ffa6aa184892812030f04c2abf589a0", size = 181400 }, + { url = "https://files.pythonhosted.org/packages/5a/84/e94227139ee5fb4d600a7a4927f322e1d4aea6fdc50bd3fca8493caba23f/cffi-1.17.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:805b4371bf7197c329fcb3ead37e710d1bca9da5d583f5073b799d5c5bd1eee4", size = 183178 }, + { url = "https://files.pythonhosted.org/packages/da/ee/fb72c2b48656111c4ef27f0f91da355e130a923473bf5ee75c5643d00cca/cffi-1.17.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:733e99bc2df47476e3848417c5a4540522f234dfd4ef3ab7fafdf555b082ec0c", size = 178840 }, + { url = "https://files.pythonhosted.org/packages/cc/b6/db007700f67d151abadf508cbfd6a1884f57eab90b1bb985c4c8c02b0f28/cffi-1.17.1-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1257bdabf294dceb59f5e70c64a3e2f462c30c7ad68092d01bbbfb1c16b1ba36", size = 454803 }, + { url = "https://files.pythonhosted.org/packages/1a/df/f8d151540d8c200eb1c6fba8cd0dfd40904f1b0682ea705c36e6c2e97ab3/cffi-1.17.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:da95af8214998d77a98cc14e3a3bd00aa191526343078b530ceb0bd710fb48a5", size = 478850 }, + { url = "https://files.pythonhosted.org/packages/28/c0/b31116332a547fd2677ae5b78a2ef662dfc8023d67f41b2a83f7c2aa78b1/cffi-1.17.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d63afe322132c194cf832bfec0dc69a99fb9bb6bbd550f161a49e9e855cc78ff", size = 485729 }, + { url = "https://files.pythonhosted.org/packages/91/2b/9a1ddfa5c7f13cab007a2c9cc295b70fbbda7cb10a286aa6810338e60ea1/cffi-1.17.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f79fc4fc25f1c8698ff97788206bb3c2598949bfe0fef03d299eb1b5356ada99", size = 471256 }, + { url = "https://files.pythonhosted.org/packages/b2/d5/da47df7004cb17e4955df6a43d14b3b4ae77737dff8bf7f8f333196717bf/cffi-1.17.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b62ce867176a75d03a665bad002af8e6d54644fad99a3c70905c543130e39d93", size = 479424 }, + { url = "https://files.pythonhosted.org/packages/0b/ac/2a28bcf513e93a219c8a4e8e125534f4f6db03e3179ba1c45e949b76212c/cffi-1.17.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:386c8bf53c502fff58903061338ce4f4950cbdcb23e2902d86c0f722b786bbe3", size = 484568 }, + { url = "https://files.pythonhosted.org/packages/d4/38/ca8a4f639065f14ae0f1d9751e70447a261f1a30fa7547a828ae08142465/cffi-1.17.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:4ceb10419a9adf4460ea14cfd6bc43d08701f0835e979bf821052f1805850fe8", size = 488736 }, + { url = "https://files.pythonhosted.org/packages/86/c5/28b2d6f799ec0bdecf44dced2ec5ed43e0eb63097b0f58c293583b406582/cffi-1.17.1-cp312-cp312-win32.whl", hash = "sha256:a08d7e755f8ed21095a310a693525137cfe756ce62d066e53f502a83dc550f65", size = 172448 }, + { url = "https://files.pythonhosted.org/packages/50/b9/db34c4755a7bd1cb2d1603ac3863f22bcecbd1ba29e5ee841a4bc510b294/cffi-1.17.1-cp312-cp312-win_amd64.whl", hash = "sha256:51392eae71afec0d0c8fb1a53b204dbb3bcabcb3c9b807eedf3e1e6ccf2de903", size = 181976 }, + { url = "https://files.pythonhosted.org/packages/8d/f8/dd6c246b148639254dad4d6803eb6a54e8c85c6e11ec9df2cffa87571dbe/cffi-1.17.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f3a2b4222ce6b60e2e8b337bb9596923045681d71e5a082783484d845390938e", size = 182989 }, + { url = "https://files.pythonhosted.org/packages/8b/f1/672d303ddf17c24fc83afd712316fda78dc6fce1cd53011b839483e1ecc8/cffi-1.17.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:0984a4925a435b1da406122d4d7968dd861c1385afe3b45ba82b750f229811e2", size = 178802 }, + { url = "https://files.pythonhosted.org/packages/0e/2d/eab2e858a91fdff70533cab61dcff4a1f55ec60425832ddfdc9cd36bc8af/cffi-1.17.1-cp313-cp313-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d01b12eeeb4427d3110de311e1774046ad344f5b1a7403101878976ecd7a10f3", size = 454792 }, + { url = "https://files.pythonhosted.org/packages/75/b2/fbaec7c4455c604e29388d55599b99ebcc250a60050610fadde58932b7ee/cffi-1.17.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:706510fe141c86a69c8ddc029c7910003a17353970cff3b904ff0686a5927683", size = 478893 }, + { url = "https://files.pythonhosted.org/packages/4f/b7/6e4a2162178bf1935c336d4da8a9352cccab4d3a5d7914065490f08c0690/cffi-1.17.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:de55b766c7aa2e2a3092c51e0483d700341182f08e67c63630d5b6f200bb28e5", size = 485810 }, + { url = "https://files.pythonhosted.org/packages/c7/8a/1d0e4a9c26e54746dc08c2c6c037889124d4f59dffd853a659fa545f1b40/cffi-1.17.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c59d6e989d07460165cc5ad3c61f9fd8f1b4796eacbd81cee78957842b834af4", size = 471200 }, + { url = "https://files.pythonhosted.org/packages/26/9f/1aab65a6c0db35f43c4d1b4f580e8df53914310afc10ae0397d29d697af4/cffi-1.17.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd398dbc6773384a17fe0d3e7eeb8d1a21c2200473ee6806bb5e6a8e62bb73dd", size = 479447 }, + { url = "https://files.pythonhosted.org/packages/5f/e4/fb8b3dd8dc0e98edf1135ff067ae070bb32ef9d509d6cb0f538cd6f7483f/cffi-1.17.1-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:3edc8d958eb099c634dace3c7e16560ae474aa3803a5df240542b305d14e14ed", size = 484358 }, + { url = "https://files.pythonhosted.org/packages/f1/47/d7145bf2dc04684935d57d67dff9d6d795b2ba2796806bb109864be3a151/cffi-1.17.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:72e72408cad3d5419375fc87d289076ee319835bdfa2caad331e377589aebba9", size = 488469 }, + { url = "https://files.pythonhosted.org/packages/bf/ee/f94057fa6426481d663b88637a9a10e859e492c73d0384514a17d78ee205/cffi-1.17.1-cp313-cp313-win32.whl", hash = "sha256:e03eab0a8677fa80d646b5ddece1cbeaf556c313dcfac435ba11f107ba117b5d", size = 172475 }, + { url = "https://files.pythonhosted.org/packages/7c/fc/6a8cb64e5f0324877d503c854da15d76c1e50eb722e320b15345c4d0c6de/cffi-1.17.1-cp313-cp313-win_amd64.whl", hash = "sha256:f6a16c31041f09ead72d69f583767292f750d24913dadacf5756b966aacb3f1a", size = 182009 }, +] + +[[package]] +name = "charset-normalizer" +version = "3.4.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f2/4f/e1808dc01273379acc506d18f1504eb2d299bd4131743b9fc54d7be4df1e/charset_normalizer-3.4.0.tar.gz", hash = "sha256:223217c3d4f82c3ac5e29032b3f1c2eb0fb591b72161f86d93f5719079dae93e", size = 106620 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/69/8b/825cc84cf13a28bfbcba7c416ec22bf85a9584971be15b21dd8300c65b7f/charset_normalizer-3.4.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:4f9fc98dad6c2eaa32fc3af1417d95b5e3d08aff968df0cd320066def971f9a6", size = 196363 }, + { url = "https://files.pythonhosted.org/packages/23/81/d7eef6a99e42c77f444fdd7bc894b0ceca6c3a95c51239e74a722039521c/charset_normalizer-3.4.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0de7b687289d3c1b3e8660d0741874abe7888100efe14bd0f9fd7141bcbda92b", size = 125639 }, + { url = "https://files.pythonhosted.org/packages/21/67/b4564d81f48042f520c948abac7079356e94b30cb8ffb22e747532cf469d/charset_normalizer-3.4.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:5ed2e36c3e9b4f21dd9422f6893dec0abf2cca553af509b10cd630f878d3eb99", size = 120451 }, + { url = "https://files.pythonhosted.org/packages/c2/72/12a7f0943dd71fb5b4e7b55c41327ac0a1663046a868ee4d0d8e9c369b85/charset_normalizer-3.4.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:40d3ff7fc90b98c637bda91c89d51264a3dcf210cade3a2c6f838c7268d7a4ca", size = 140041 }, + { url = "https://files.pythonhosted.org/packages/67/56/fa28c2c3e31217c4c52158537a2cf5d98a6c1e89d31faf476c89391cd16b/charset_normalizer-3.4.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1110e22af8ca26b90bd6364fe4c763329b0ebf1ee213ba32b68c73de5752323d", size = 150333 }, + { url = "https://files.pythonhosted.org/packages/f9/d2/466a9be1f32d89eb1554cf84073a5ed9262047acee1ab39cbaefc19635d2/charset_normalizer-3.4.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:86f4e8cca779080f66ff4f191a685ced73d2f72d50216f7112185dc02b90b9b7", size = 142921 }, + { url = "https://files.pythonhosted.org/packages/f8/01/344ec40cf5d85c1da3c1f57566c59e0c9b56bcc5566c08804a95a6cc8257/charset_normalizer-3.4.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7f683ddc7eedd742e2889d2bfb96d69573fde1d92fcb811979cdb7165bb9c7d3", size = 144785 }, + { url = "https://files.pythonhosted.org/packages/73/8b/2102692cb6d7e9f03b9a33a710e0164cadfce312872e3efc7cfe22ed26b4/charset_normalizer-3.4.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:27623ba66c183eca01bf9ff833875b459cad267aeeb044477fedac35e19ba907", size = 146631 }, + { url = "https://files.pythonhosted.org/packages/d8/96/cc2c1b5d994119ce9f088a9a0c3ebd489d360a2eb058e2c8049f27092847/charset_normalizer-3.4.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:f606a1881d2663630ea5b8ce2efe2111740df4b687bd78b34a8131baa007f79b", size = 140867 }, + { url = "https://files.pythonhosted.org/packages/c9/27/cde291783715b8ec30a61c810d0120411844bc4c23b50189b81188b273db/charset_normalizer-3.4.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:0b309d1747110feb25d7ed6b01afdec269c647d382c857ef4663bbe6ad95a912", size = 149273 }, + { url = "https://files.pythonhosted.org/packages/3a/a4/8633b0fc1a2d1834d5393dafecce4a1cc56727bfd82b4dc18fc92f0d3cc3/charset_normalizer-3.4.0-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:136815f06a3ae311fae551c3df1f998a1ebd01ddd424aa5603a4336997629e95", size = 152437 }, + { url = "https://files.pythonhosted.org/packages/64/ea/69af161062166b5975ccbb0961fd2384853190c70786f288684490913bf5/charset_normalizer-3.4.0-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:14215b71a762336254351b00ec720a8e85cada43b987da5a042e4ce3e82bd68e", size = 150087 }, + { url = "https://files.pythonhosted.org/packages/3b/fd/e60a9d9fd967f4ad5a92810138192f825d77b4fa2a557990fd575a47695b/charset_normalizer-3.4.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:79983512b108e4a164b9c8d34de3992f76d48cadc9554c9e60b43f308988aabe", size = 145142 }, + { url = "https://files.pythonhosted.org/packages/6d/02/8cb0988a1e49ac9ce2eed1e07b77ff118f2923e9ebd0ede41ba85f2dcb04/charset_normalizer-3.4.0-cp310-cp310-win32.whl", hash = "sha256:c94057af19bc953643a33581844649a7fdab902624d2eb739738a30e2b3e60fc", size = 94701 }, + { url = "https://files.pythonhosted.org/packages/d6/20/f1d4670a8a723c46be695dff449d86d6092916f9e99c53051954ee33a1bc/charset_normalizer-3.4.0-cp310-cp310-win_amd64.whl", hash = "sha256:55f56e2ebd4e3bc50442fbc0888c9d8c94e4e06a933804e2af3e89e2f9c1c749", size = 102191 }, + { url = "https://files.pythonhosted.org/packages/9c/61/73589dcc7a719582bf56aae309b6103d2762b526bffe189d635a7fcfd998/charset_normalizer-3.4.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:0d99dd8ff461990f12d6e42c7347fd9ab2532fb70e9621ba520f9e8637161d7c", size = 193339 }, + { url = "https://files.pythonhosted.org/packages/77/d5/8c982d58144de49f59571f940e329ad6e8615e1e82ef84584c5eeb5e1d72/charset_normalizer-3.4.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c57516e58fd17d03ebe67e181a4e4e2ccab1168f8c2976c6a334d4f819fe5944", size = 124366 }, + { url = "https://files.pythonhosted.org/packages/bf/19/411a64f01ee971bed3231111b69eb56f9331a769072de479eae7de52296d/charset_normalizer-3.4.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:6dba5d19c4dfab08e58d5b36304b3f92f3bd5d42c1a3fa37b5ba5cdf6dfcbcee", size = 118874 }, + { url = "https://files.pythonhosted.org/packages/4c/92/97509850f0d00e9f14a46bc751daabd0ad7765cff29cdfb66c68b6dad57f/charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bf4475b82be41b07cc5e5ff94810e6a01f276e37c2d55571e3fe175e467a1a1c", size = 138243 }, + { url = "https://files.pythonhosted.org/packages/e2/29/d227805bff72ed6d6cb1ce08eec707f7cfbd9868044893617eb331f16295/charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ce031db0408e487fd2775d745ce30a7cd2923667cf3b69d48d219f1d8f5ddeb6", size = 148676 }, + { url = "https://files.pythonhosted.org/packages/13/bc/87c2c9f2c144bedfa62f894c3007cd4530ba4b5351acb10dc786428a50f0/charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8ff4e7cdfdb1ab5698e675ca622e72d58a6fa2a8aa58195de0c0061288e6e3ea", size = 141289 }, + { url = "https://files.pythonhosted.org/packages/eb/5b/6f10bad0f6461fa272bfbbdf5d0023b5fb9bc6217c92bf068fa5a99820f5/charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3710a9751938947e6327ea9f3ea6332a09bf0ba0c09cae9cb1f250bd1f1549bc", size = 142585 }, + { url = "https://files.pythonhosted.org/packages/3b/a0/a68980ab8a1f45a36d9745d35049c1af57d27255eff8c907e3add84cf68f/charset_normalizer-3.4.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:82357d85de703176b5587dbe6ade8ff67f9f69a41c0733cf2425378b49954de5", size = 144408 }, + { url = "https://files.pythonhosted.org/packages/d7/a1/493919799446464ed0299c8eef3c3fad0daf1c3cd48bff9263c731b0d9e2/charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:47334db71978b23ebcf3c0f9f5ee98b8d65992b65c9c4f2d34c2eaf5bcaf0594", size = 139076 }, + { url = "https://files.pythonhosted.org/packages/fb/9d/9c13753a5a6e0db4a0a6edb1cef7aee39859177b64e1a1e748a6e3ba62c2/charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:8ce7fd6767a1cc5a92a639b391891bf1c268b03ec7e021c7d6d902285259685c", size = 146874 }, + { url = "https://files.pythonhosted.org/packages/75/d2/0ab54463d3410709c09266dfb416d032a08f97fd7d60e94b8c6ef54ae14b/charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:f1a2f519ae173b5b6a2c9d5fa3116ce16e48b3462c8b96dfdded11055e3d6365", size = 150871 }, + { url = "https://files.pythonhosted.org/packages/8d/c9/27e41d481557be53d51e60750b85aa40eaf52b841946b3cdeff363105737/charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:63bc5c4ae26e4bc6be6469943b8253c0fd4e4186c43ad46e713ea61a0ba49129", size = 148546 }, + { url = "https://files.pythonhosted.org/packages/ee/44/4f62042ca8cdc0cabf87c0fc00ae27cd8b53ab68be3605ba6d071f742ad3/charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:bcb4f8ea87d03bc51ad04add8ceaf9b0f085ac045ab4d74e73bbc2dc033f0236", size = 143048 }, + { url = "https://files.pythonhosted.org/packages/01/f8/38842422988b795220eb8038745d27a675ce066e2ada79516c118f291f07/charset_normalizer-3.4.0-cp311-cp311-win32.whl", hash = "sha256:9ae4ef0b3f6b41bad6366fb0ea4fc1d7ed051528e113a60fa2a65a9abb5b1d99", size = 94389 }, + { url = "https://files.pythonhosted.org/packages/0b/6e/b13bd47fa9023b3699e94abf565b5a2f0b0be6e9ddac9812182596ee62e4/charset_normalizer-3.4.0-cp311-cp311-win_amd64.whl", hash = "sha256:cee4373f4d3ad28f1ab6290684d8e2ebdb9e7a1b74fdc39e4c211995f77bec27", size = 101752 }, + { url = "https://files.pythonhosted.org/packages/d3/0b/4b7a70987abf9b8196845806198975b6aab4ce016632f817ad758a5aa056/charset_normalizer-3.4.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:0713f3adb9d03d49d365b70b84775d0a0d18e4ab08d12bc46baa6132ba78aaf6", size = 194445 }, + { url = "https://files.pythonhosted.org/packages/50/89/354cc56cf4dd2449715bc9a0f54f3aef3dc700d2d62d1fa5bbea53b13426/charset_normalizer-3.4.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:de7376c29d95d6719048c194a9cf1a1b0393fbe8488a22008610b0361d834ecf", size = 125275 }, + { url = "https://files.pythonhosted.org/packages/fa/44/b730e2a2580110ced837ac083d8ad222343c96bb6b66e9e4e706e4d0b6df/charset_normalizer-3.4.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:4a51b48f42d9358460b78725283f04bddaf44a9358197b889657deba38f329db", size = 119020 }, + { url = "https://files.pythonhosted.org/packages/9d/e4/9263b8240ed9472a2ae7ddc3e516e71ef46617fe40eaa51221ccd4ad9a27/charset_normalizer-3.4.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b295729485b06c1a0683af02a9e42d2caa9db04a373dc38a6a58cdd1e8abddf1", size = 139128 }, + { url = "https://files.pythonhosted.org/packages/6b/e3/9f73e779315a54334240353eaea75854a9a690f3f580e4bd85d977cb2204/charset_normalizer-3.4.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ee803480535c44e7f5ad00788526da7d85525cfefaf8acf8ab9a310000be4b03", size = 149277 }, + { url = "https://files.pythonhosted.org/packages/1a/cf/f1f50c2f295312edb8a548d3fa56a5c923b146cd3f24114d5adb7e7be558/charset_normalizer-3.4.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3d59d125ffbd6d552765510e3f31ed75ebac2c7470c7274195b9161a32350284", size = 142174 }, + { url = "https://files.pythonhosted.org/packages/16/92/92a76dc2ff3a12e69ba94e7e05168d37d0345fa08c87e1fe24d0c2a42223/charset_normalizer-3.4.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8cda06946eac330cbe6598f77bb54e690b4ca93f593dee1568ad22b04f347c15", size = 143838 }, + { url = "https://files.pythonhosted.org/packages/a4/01/2117ff2b1dfc61695daf2babe4a874bca328489afa85952440b59819e9d7/charset_normalizer-3.4.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:07afec21bbbbf8a5cc3651aa96b980afe2526e7f048fdfb7f1014d84acc8b6d8", size = 146149 }, + { url = "https://files.pythonhosted.org/packages/f6/9b/93a332b8d25b347f6839ca0a61b7f0287b0930216994e8bf67a75d050255/charset_normalizer-3.4.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:6b40e8d38afe634559e398cc32b1472f376a4099c75fe6299ae607e404c033b2", size = 140043 }, + { url = "https://files.pythonhosted.org/packages/ab/f6/7ac4a01adcdecbc7a7587767c776d53d369b8b971382b91211489535acf0/charset_normalizer-3.4.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:b8dcd239c743aa2f9c22ce674a145e0a25cb1566c495928440a181ca1ccf6719", size = 148229 }, + { url = "https://files.pythonhosted.org/packages/9d/be/5708ad18161dee7dc6a0f7e6cf3a88ea6279c3e8484844c0590e50e803ef/charset_normalizer-3.4.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:84450ba661fb96e9fd67629b93d2941c871ca86fc38d835d19d4225ff946a631", size = 151556 }, + { url = "https://files.pythonhosted.org/packages/5a/bb/3d8bc22bacb9eb89785e83e6723f9888265f3a0de3b9ce724d66bd49884e/charset_normalizer-3.4.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:44aeb140295a2f0659e113b31cfe92c9061622cadbc9e2a2f7b8ef6b1e29ef4b", size = 149772 }, + { url = "https://files.pythonhosted.org/packages/f7/fa/d3fc622de05a86f30beea5fc4e9ac46aead4731e73fd9055496732bcc0a4/charset_normalizer-3.4.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:1db4e7fefefd0f548d73e2e2e041f9df5c59e178b4c72fbac4cc6f535cfb1565", size = 144800 }, + { url = "https://files.pythonhosted.org/packages/9a/65/bdb9bc496d7d190d725e96816e20e2ae3a6fa42a5cac99c3c3d6ff884118/charset_normalizer-3.4.0-cp312-cp312-win32.whl", hash = "sha256:5726cf76c982532c1863fb64d8c6dd0e4c90b6ece9feb06c9f202417a31f7dd7", size = 94836 }, + { url = "https://files.pythonhosted.org/packages/3e/67/7b72b69d25b89c0b3cea583ee372c43aa24df15f0e0f8d3982c57804984b/charset_normalizer-3.4.0-cp312-cp312-win_amd64.whl", hash = "sha256:b197e7094f232959f8f20541ead1d9862ac5ebea1d58e9849c1bf979255dfac9", size = 102187 }, + { url = "https://files.pythonhosted.org/packages/f3/89/68a4c86f1a0002810a27f12e9a7b22feb198c59b2f05231349fbce5c06f4/charset_normalizer-3.4.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:dd4eda173a9fcccb5f2e2bd2a9f423d180194b1bf17cf59e3269899235b2a114", size = 194617 }, + { url = "https://files.pythonhosted.org/packages/4f/cd/8947fe425e2ab0aa57aceb7807af13a0e4162cd21eee42ef5b053447edf5/charset_normalizer-3.4.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:e9e3c4c9e1ed40ea53acf11e2a386383c3304212c965773704e4603d589343ed", size = 125310 }, + { url = "https://files.pythonhosted.org/packages/5b/f0/b5263e8668a4ee9becc2b451ed909e9c27058337fda5b8c49588183c267a/charset_normalizer-3.4.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:92a7e36b000bf022ef3dbb9c46bfe2d52c047d5e3f3343f43204263c5addc250", size = 119126 }, + { url = "https://files.pythonhosted.org/packages/ff/6e/e445afe4f7fda27a533f3234b627b3e515a1b9429bc981c9a5e2aa5d97b6/charset_normalizer-3.4.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:54b6a92d009cbe2fb11054ba694bc9e284dad30a26757b1e372a1fdddaf21920", size = 139342 }, + { url = "https://files.pythonhosted.org/packages/a1/b2/4af9993b532d93270538ad4926c8e37dc29f2111c36f9c629840c57cd9b3/charset_normalizer-3.4.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1ffd9493de4c922f2a38c2bf62b831dcec90ac673ed1ca182fe11b4d8e9f2a64", size = 149383 }, + { url = "https://files.pythonhosted.org/packages/fb/6f/4e78c3b97686b871db9be6f31d64e9264e889f8c9d7ab33c771f847f79b7/charset_normalizer-3.4.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:35c404d74c2926d0287fbd63ed5d27eb911eb9e4a3bb2c6d294f3cfd4a9e0c23", size = 142214 }, + { url = "https://files.pythonhosted.org/packages/2b/c9/1c8fe3ce05d30c87eff498592c89015b19fade13df42850aafae09e94f35/charset_normalizer-3.4.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4796efc4faf6b53a18e3d46343535caed491776a22af773f366534056c4e1fbc", size = 144104 }, + { url = "https://files.pythonhosted.org/packages/ee/68/efad5dcb306bf37db7db338338e7bb8ebd8cf38ee5bbd5ceaaaa46f257e6/charset_normalizer-3.4.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e7fdd52961feb4c96507aa649550ec2a0d527c086d284749b2f582f2d40a2e0d", size = 146255 }, + { url = "https://files.pythonhosted.org/packages/0c/75/1ed813c3ffd200b1f3e71121c95da3f79e6d2a96120163443b3ad1057505/charset_normalizer-3.4.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:92db3c28b5b2a273346bebb24857fda45601aef6ae1c011c0a997106581e8a88", size = 140251 }, + { url = "https://files.pythonhosted.org/packages/7d/0d/6f32255c1979653b448d3c709583557a4d24ff97ac4f3a5be156b2e6a210/charset_normalizer-3.4.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:ab973df98fc99ab39080bfb0eb3a925181454d7c3ac8a1e695fddfae696d9e90", size = 148474 }, + { url = "https://files.pythonhosted.org/packages/ac/a0/c1b5298de4670d997101fef95b97ac440e8c8d8b4efa5a4d1ef44af82f0d/charset_normalizer-3.4.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:4b67fdab07fdd3c10bb21edab3cbfe8cf5696f453afce75d815d9d7223fbe88b", size = 151849 }, + { url = "https://files.pythonhosted.org/packages/04/4f/b3961ba0c664989ba63e30595a3ed0875d6790ff26671e2aae2fdc28a399/charset_normalizer-3.4.0-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:aa41e526a5d4a9dfcfbab0716c7e8a1b215abd3f3df5a45cf18a12721d31cb5d", size = 149781 }, + { url = "https://files.pythonhosted.org/packages/d8/90/6af4cd042066a4adad58ae25648a12c09c879efa4849c705719ba1b23d8c/charset_normalizer-3.4.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:ffc519621dce0c767e96b9c53f09c5d215578e10b02c285809f76509a3931482", size = 144970 }, + { url = "https://files.pythonhosted.org/packages/cc/67/e5e7e0cbfefc4ca79025238b43cdf8a2037854195b37d6417f3d0895c4c2/charset_normalizer-3.4.0-cp313-cp313-win32.whl", hash = "sha256:f19c1585933c82098c2a520f8ec1227f20e339e33aca8fa6f956f6691b784e67", size = 94973 }, + { url = "https://files.pythonhosted.org/packages/65/97/fc9bbc54ee13d33dc54a7fcf17b26368b18505500fc01e228c27b5222d80/charset_normalizer-3.4.0-cp313-cp313-win_amd64.whl", hash = "sha256:707b82d19e65c9bd28b81dde95249b07bf9f5b90ebe1ef17d9b57473f8a64b7b", size = 102308 }, + { url = "https://files.pythonhosted.org/packages/bf/9b/08c0432272d77b04803958a4598a51e2a4b51c06640af8b8f0f908c18bf2/charset_normalizer-3.4.0-py3-none-any.whl", hash = "sha256:fe9f97feb71aa9896b81973a7bbada8c49501dc73e58a10fcef6663af95e5079", size = 49446 }, +] + +[[package]] +name = "click" +version = "8.1.7" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "colorama", marker = "platform_system == 'Windows'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/96/d3/f04c7bfcf5c1862a2a5b845c6b2b360488cf47af55dfa79c98f6a6bf98b5/click-8.1.7.tar.gz", hash = "sha256:ca9853ad459e787e2192211578cc907e7594e294c7ccc834310722b41b9ca6de", size = 336121 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/00/2e/d53fa4befbf2cfa713304affc7ca780ce4fc1fd8710527771b58311a3229/click-8.1.7-py3-none-any.whl", hash = "sha256:ae74fb96c20a0277a1d615f1e4d73c8414f5a98db8b799a7931d1582f3390c28", size = 97941 }, +] + +[[package]] +name = "colorama" +version = "0.4.6" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d8/53/6f443c9a4a8358a93a6792e2acffb9d9d5cb0a5cfd8802644b7b1c9a02e4/colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44", size = 27697 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6", size = 25335 }, +] + +[[package]] +name = "cryptography" +version = "43.0.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "cffi", marker = "platform_python_implementation != 'PyPy'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/0d/05/07b55d1fa21ac18c3a8c79f764e2514e6f6a9698f1be44994f5adf0d29db/cryptography-43.0.3.tar.gz", hash = "sha256:315b9001266a492a6ff443b61238f956b214dbec9910a081ba5b6646a055a805", size = 686989 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1f/f3/01fdf26701a26f4b4dbc337a26883ad5bccaa6f1bbbdd29cd89e22f18a1c/cryptography-43.0.3-cp37-abi3-macosx_10_9_universal2.whl", hash = "sha256:bf7a1932ac4176486eab36a19ed4c0492da5d97123f1406cf15e41b05e787d2e", size = 6225303 }, + { url = "https://files.pythonhosted.org/packages/a3/01/4896f3d1b392025d4fcbecf40fdea92d3df8662123f6835d0af828d148fd/cryptography-43.0.3-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:63efa177ff54aec6e1c0aefaa1a241232dcd37413835a9b674b6e3f0ae2bfd3e", size = 3760905 }, + { url = "https://files.pythonhosted.org/packages/0a/be/f9a1f673f0ed4b7f6c643164e513dbad28dd4f2dcdf5715004f172ef24b6/cryptography-43.0.3-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7e1ce50266f4f70bf41a2c6dc4358afadae90e2a1e5342d3c08883df1675374f", size = 3977271 }, + { url = "https://files.pythonhosted.org/packages/4e/49/80c3a7b5514d1b416d7350830e8c422a4d667b6d9b16a9392ebfd4a5388a/cryptography-43.0.3-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:443c4a81bb10daed9a8f334365fe52542771f25aedaf889fd323a853ce7377d6", size = 3746606 }, + { url = "https://files.pythonhosted.org/packages/0e/16/a28ddf78ac6e7e3f25ebcef69ab15c2c6be5ff9743dd0709a69a4f968472/cryptography-43.0.3-cp37-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:74f57f24754fe349223792466a709f8e0c093205ff0dca557af51072ff47ab18", size = 3986484 }, + { url = "https://files.pythonhosted.org/packages/01/f5/69ae8da70c19864a32b0315049866c4d411cce423ec169993d0434218762/cryptography-43.0.3-cp37-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:9762ea51a8fc2a88b70cf2995e5675b38d93bf36bd67d91721c309df184f49bd", size = 3852131 }, + { url = "https://files.pythonhosted.org/packages/fd/db/e74911d95c040f9afd3612b1f732e52b3e517cb80de8bf183be0b7d413c6/cryptography-43.0.3-cp37-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:81ef806b1fef6b06dcebad789f988d3b37ccaee225695cf3e07648eee0fc6b73", size = 4075647 }, + { url = "https://files.pythonhosted.org/packages/56/48/7b6b190f1462818b324e674fa20d1d5ef3e24f2328675b9b16189cbf0b3c/cryptography-43.0.3-cp37-abi3-win32.whl", hash = "sha256:cbeb489927bd7af4aa98d4b261af9a5bc025bd87f0e3547e11584be9e9427be2", size = 2623873 }, + { url = "https://files.pythonhosted.org/packages/eb/b1/0ebff61a004f7f89e7b65ca95f2f2375679d43d0290672f7713ee3162aff/cryptography-43.0.3-cp37-abi3-win_amd64.whl", hash = "sha256:f46304d6f0c6ab8e52770addfa2fc41e6629495548862279641972b6215451cd", size = 3068039 }, + { url = "https://files.pythonhosted.org/packages/30/d5/c8b32c047e2e81dd172138f772e81d852c51f0f2ad2ae8a24f1122e9e9a7/cryptography-43.0.3-cp39-abi3-macosx_10_9_universal2.whl", hash = "sha256:8ac43ae87929a5982f5948ceda07001ee5e83227fd69cf55b109144938d96984", size = 6222984 }, + { url = "https://files.pythonhosted.org/packages/2f/78/55356eb9075d0be6e81b59f45c7b48df87f76a20e73893872170471f3ee8/cryptography-43.0.3-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:846da004a5804145a5f441b8530b4bf35afbf7da70f82409f151695b127213d5", size = 3762968 }, + { url = "https://files.pythonhosted.org/packages/2a/2c/488776a3dc843f95f86d2f957ca0fc3407d0242b50bede7fad1e339be03f/cryptography-43.0.3-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0f996e7268af62598f2fc1204afa98a3b5712313a55c4c9d434aef49cadc91d4", size = 3977754 }, + { url = "https://files.pythonhosted.org/packages/7c/04/2345ca92f7a22f601a9c62961741ef7dd0127c39f7310dffa0041c80f16f/cryptography-43.0.3-cp39-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:f7b178f11ed3664fd0e995a47ed2b5ff0a12d893e41dd0494f406d1cf555cab7", size = 3749458 }, + { url = "https://files.pythonhosted.org/packages/ac/25/e715fa0bc24ac2114ed69da33adf451a38abb6f3f24ec207908112e9ba53/cryptography-43.0.3-cp39-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:c2e6fc39c4ab499049df3bdf567f768a723a5e8464816e8f009f121a5a9f4405", size = 3988220 }, + { url = "https://files.pythonhosted.org/packages/21/ce/b9c9ff56c7164d8e2edfb6c9305045fbc0df4508ccfdb13ee66eb8c95b0e/cryptography-43.0.3-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:e1be4655c7ef6e1bbe6b5d0403526601323420bcf414598955968c9ef3eb7d16", size = 3853898 }, + { url = "https://files.pythonhosted.org/packages/2a/33/b3682992ab2e9476b9c81fff22f02c8b0a1e6e1d49ee1750a67d85fd7ed2/cryptography-43.0.3-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:df6b6c6d742395dd77a23ea3728ab62f98379eff8fb61be2744d4679ab678f73", size = 4076592 }, + { url = "https://files.pythonhosted.org/packages/81/1e/ffcc41b3cebd64ca90b28fd58141c5f68c83d48563c88333ab660e002cd3/cryptography-43.0.3-cp39-abi3-win32.whl", hash = "sha256:d56e96520b1020449bbace2b78b603442e7e378a9b3bd68de65c782db1507995", size = 2623145 }, + { url = "https://files.pythonhosted.org/packages/87/5c/3dab83cc4aba1f4b0e733e3f0c3e7d4386440d660ba5b1e3ff995feb734d/cryptography-43.0.3-cp39-abi3-win_amd64.whl", hash = "sha256:0c580952eef9bf68c4747774cde7ec1d85a6e61de97281f2dba83c7d2c806362", size = 3068026 }, + { url = "https://files.pythonhosted.org/packages/6f/db/d8b8a039483f25fc3b70c90bc8f3e1d4497a99358d610c5067bf3bd4f0af/cryptography-43.0.3-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:d03b5621a135bffecad2c73e9f4deb1a0f977b9a8ffe6f8e002bf6c9d07b918c", size = 3144545 }, + { url = "https://files.pythonhosted.org/packages/93/90/116edd5f8ec23b2dc879f7a42443e073cdad22950d3c8ee834e3b8124543/cryptography-43.0.3-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:a2a431ee15799d6db9fe80c82b055bae5a752bef645bba795e8e52687c69efe3", size = 3679828 }, + { url = "https://files.pythonhosted.org/packages/d8/32/1e1d78b316aa22c0ba6493cc271c1c309969e5aa5c22c830a1d7ce3471e6/cryptography-43.0.3-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:281c945d0e28c92ca5e5930664c1cefd85efe80e5c0d2bc58dd63383fda29f83", size = 3908132 }, + { url = "https://files.pythonhosted.org/packages/91/bb/cd2c13be3332e7af3cdf16154147952d39075b9f61ea5e6b5241bf4bf436/cryptography-43.0.3-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:f18c716be16bc1fea8e95def49edf46b82fccaa88587a45f8dc0ff6ab5d8e0a7", size = 2988811 }, +] + +[[package]] +name = "defusedxml" +version = "0.7.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/0f/d5/c66da9b79e5bdb124974bfe172b4daf3c984ebd9c2a06e2b8a4dc7331c72/defusedxml-0.7.1.tar.gz", hash = "sha256:1bb3032db185915b62d7c6209c5a8792be6a32ab2fedacc84e01b52c51aa3e69", size = 75520 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/07/6c/aa3f2f849e01cb6a001cd8554a88d4c77c5c1a31c95bdf1cf9301e6d9ef4/defusedxml-0.7.1-py2.py3-none-any.whl", hash = "sha256:a352e7e428770286cc899e2542b6cdaedb2b4953ff269a210103ec58f6198a61", size = 25604 }, +] + +[[package]] +name = "deprecated" +version = "1.2.14" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "wrapt" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/92/14/1e41f504a246fc224d2ac264c227975427a85caf37c3979979edb9b1b232/Deprecated-1.2.14.tar.gz", hash = "sha256:e5323eb936458dccc2582dc6f9c322c852a775a27065ff2b0c4970b9d53d01b3", size = 2974416 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/20/8d/778b7d51b981a96554f29136cd59ca7880bf58094338085bcf2a979a0e6a/Deprecated-1.2.14-py2.py3-none-any.whl", hash = "sha256:6fac8b097794a90302bdbb17b9b815e732d3c4720583ff1b198499d78470466c", size = 9561 }, +] + +[[package]] +name = "gitdb" +version = "4.0.11" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "smmap" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/19/0d/bbb5b5ee188dec84647a4664f3e11b06ade2bde568dbd489d9d64adef8ed/gitdb-4.0.11.tar.gz", hash = "sha256:bf5421126136d6d0af55bc1e7c1af1c397a34f5b7bd79e776cd3e89785c2b04b", size = 394469 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/fd/5b/8f0c4a5bb9fd491c277c21eff7ccae71b47d43c4446c9d0c6cff2fe8c2c4/gitdb-4.0.11-py3-none-any.whl", hash = "sha256:81a3407ddd2ee8df444cbacea00e2d038e40150acfa3001696fe0dcf1d3adfa4", size = 62721 }, +] + +[[package]] +name = "gitpython" +version = "3.1.43" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "gitdb" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/b6/a1/106fd9fa2dd989b6fb36e5893961f82992cf676381707253e0bf93eb1662/GitPython-3.1.43.tar.gz", hash = "sha256:35f314a9f878467f5453cc1fee295c3e18e52f1b99f10f6cf5b1682e968a9e7c", size = 214149 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e9/bd/cc3a402a6439c15c3d4294333e13042b915bbeab54edc457c723931fed3f/GitPython-3.1.43-py3-none-any.whl", hash = "sha256:eec7ec56b92aad751f9912a73404bc02ba212a23adb2c7098ee668417051a1ff", size = 207337 }, +] + +[[package]] +name = "idna" +version = "3.10" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f1/70/7703c29685631f5a7590aa73f1f1d3fa9a380e654b86af429e0934a32f7d/idna-3.10.tar.gz", hash = "sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9", size = 190490 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/76/c6/c88e154df9c4e1a2a66ccf0005a88dfb2650c1dffb6f5ce603dfbd452ce3/idna-3.10-py3-none-any.whl", hash = "sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3", size = 70442 }, +] + +[[package]] +name = "jira" +version = "3.8.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "defusedxml" }, + { name = "packaging" }, + { name = "pillow" }, + { name = "requests" }, + { name = "requests-oauthlib" }, + { name = "requests-toolbelt" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/78/b4/557e4c80c0ea12164ffeec0e29372c085bfb263faad53cef5e1455523bec/jira-3.8.0.tar.gz", hash = "sha256:63719c529a570aaa01c3373dbb5a104dab70381c5be447f6c27f997302fa335a", size = 102927 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/4f/52/bb617020064261ba31cc965e932943458b7facfd9691ad7f76a2b631f44f/jira-3.8.0-py3-none-any.whl", hash = "sha256:12190dc84dad00b8a6c0341f7e8a254b0f38785afdec022bd5941e1184a5a3fb", size = 77505 }, +] + +[[package]] +name = "looseversion" +version = "1.3.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/64/7e/f13dc08e0712cc2eac8e56c7909ce2ac280dbffef2ffd87bd5277ce9d58b/looseversion-1.3.0.tar.gz", hash = "sha256:ebde65f3f6bb9531a81016c6fef3eb95a61181adc47b7f949e9c0ea47911669e", size = 8799 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/4e/74/d5405b9b3b12e9176dff223576d7090bc161092878f533fd0dc23dd6ae1d/looseversion-1.3.0-py2.py3-none-any.whl", hash = "sha256:781ef477b45946fc03dd4c84ea87734b21137ecda0e1e122bcb3c8d16d2a56e0", size = 8237 }, +] + +[[package]] +name = "mongo-cxx-driver" +version = "0.1.0" +source = { virtual = "." } + +[package.dependency-groups] +dev = [ + { name = "beautifulsoup4" }, + { name = "click" }, + { name = "gitpython" }, + { name = "jira" }, + { name = "looseversion" }, + { name = "packaging" }, + { name = "pygithub" }, +] + +[package.metadata] + +[package.metadata.dependency-groups] +dev = [ + { name = "beautifulsoup4", specifier = ">=4.12" }, + { name = "click", specifier = ">=6.0" }, + { name = "gitpython", specifier = ">=3.1" }, + { name = "jira", specifier = ">=3.1" }, + { name = "looseversion", specifier = ">=1.3" }, + { name = "packaging", specifier = ">=14.0" }, + { name = "pygithub", specifier = ">=2.0" }, +] + +[[package]] +name = "oauthlib" +version = "3.2.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/6d/fa/fbf4001037904031639e6bfbfc02badfc7e12f137a8afa254df6c4c8a670/oauthlib-3.2.2.tar.gz", hash = "sha256:9859c40929662bec5d64f34d01c99e093149682a3f38915dc0655d5a633dd918", size = 177352 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7e/80/cab10959dc1faead58dc8384a781dfbf93cb4d33d50988f7a69f1b7c9bbe/oauthlib-3.2.2-py3-none-any.whl", hash = "sha256:8139f29aac13e25d502680e9e19963e83f16838d48a0d71c287fe40e7067fbca", size = 151688 }, +] + +[[package]] +name = "packaging" +version = "24.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/51/65/50db4dda066951078f0a96cf12f4b9ada6e4b811516bf0262c0f4f7064d4/packaging-24.1.tar.gz", hash = "sha256:026ed72c8ed3fcce5bf8950572258698927fd1dbda10a5e981cdf0ac37f4f002", size = 148788 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/08/aa/cc0199a5f0ad350994d660967a8efb233fe0416e4639146c089643407ce6/packaging-24.1-py3-none-any.whl", hash = "sha256:5b8f2217dbdbd2f7f384c41c628544e6d52f2d0f53c6d0c3ea61aa5d1d7ff124", size = 53985 }, +] + +[[package]] +name = "pillow" +version = "11.0.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/a5/26/0d95c04c868f6bdb0c447e3ee2de5564411845e36a858cfd63766bc7b563/pillow-11.0.0.tar.gz", hash = "sha256:72bacbaf24ac003fea9bff9837d1eedb6088758d41e100c1552930151f677739", size = 46737780 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/98/fb/a6ce6836bd7fd93fbf9144bf54789e02babc27403b50a9e1583ee877d6da/pillow-11.0.0-cp310-cp310-macosx_10_10_x86_64.whl", hash = "sha256:6619654954dc4936fcff82db8eb6401d3159ec6be81e33c6000dfd76ae189947", size = 3154708 }, + { url = "https://files.pythonhosted.org/packages/6a/1d/1f51e6e912d8ff316bb3935a8cda617c801783e0b998bf7a894e91d3bd4c/pillow-11.0.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:b3c5ac4bed7519088103d9450a1107f76308ecf91d6dabc8a33a2fcfb18d0fba", size = 2979223 }, + { url = "https://files.pythonhosted.org/packages/90/83/e2077b0192ca8a9ef794dbb74700c7e48384706467067976c2a95a0f40a1/pillow-11.0.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a65149d8ada1055029fcb665452b2814fe7d7082fcb0c5bed6db851cb69b2086", size = 4183167 }, + { url = "https://files.pythonhosted.org/packages/0e/74/467af0146970a98349cdf39e9b79a6cc8a2e7558f2c01c28a7b6b85c5bda/pillow-11.0.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:88a58d8ac0cc0e7f3a014509f0455248a76629ca9b604eca7dc5927cc593c5e9", size = 4283912 }, + { url = "https://files.pythonhosted.org/packages/85/b1/d95d4f7ca3a6c1ae120959605875a31a3c209c4e50f0029dc1a87566cf46/pillow-11.0.0-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:c26845094b1af3c91852745ae78e3ea47abf3dbcd1cf962f16b9a5fbe3ee8488", size = 4195815 }, + { url = "https://files.pythonhosted.org/packages/41/c3/94f33af0762ed76b5a237c5797e088aa57f2b7fa8ee7932d399087be66a8/pillow-11.0.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:1a61b54f87ab5786b8479f81c4b11f4d61702830354520837f8cc791ebba0f5f", size = 4366117 }, + { url = "https://files.pythonhosted.org/packages/ba/3c/443e7ef01f597497268899e1cca95c0de947c9bbf77a8f18b3c126681e5d/pillow-11.0.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:674629ff60030d144b7bca2b8330225a9b11c482ed408813924619c6f302fdbb", size = 4278607 }, + { url = "https://files.pythonhosted.org/packages/26/95/1495304448b0081e60c0c5d63f928ef48bb290acee7385804426fa395a21/pillow-11.0.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:598b4e238f13276e0008299bd2482003f48158e2b11826862b1eb2ad7c768b97", size = 4410685 }, + { url = "https://files.pythonhosted.org/packages/45/da/861e1df971ef0de9870720cb309ca4d553b26a9483ec9be3a7bf1de4a095/pillow-11.0.0-cp310-cp310-win32.whl", hash = "sha256:9a0f748eaa434a41fccf8e1ee7a3eed68af1b690e75328fd7a60af123c193b50", size = 2249185 }, + { url = "https://files.pythonhosted.org/packages/d5/4e/78f7c5202ea2a772a5ab05069c1b82503e6353cd79c7e474d4945f4b82c3/pillow-11.0.0-cp310-cp310-win_amd64.whl", hash = "sha256:a5629742881bcbc1f42e840af185fd4d83a5edeb96475a575f4da50d6ede337c", size = 2566726 }, + { url = "https://files.pythonhosted.org/packages/77/e4/6e84eada35cbcc646fc1870f72ccfd4afacb0fae0c37ffbffe7f5dc24bf1/pillow-11.0.0-cp310-cp310-win_arm64.whl", hash = "sha256:ee217c198f2e41f184f3869f3e485557296d505b5195c513b2bfe0062dc537f1", size = 2254585 }, + { url = "https://files.pythonhosted.org/packages/f0/eb/f7e21b113dd48a9c97d364e0915b3988c6a0b6207652f5a92372871b7aa4/pillow-11.0.0-cp311-cp311-macosx_10_10_x86_64.whl", hash = "sha256:1c1d72714f429a521d8d2d018badc42414c3077eb187a59579f28e4270b4b0fc", size = 3154705 }, + { url = "https://files.pythonhosted.org/packages/25/b3/2b54a1d541accebe6bd8b1358b34ceb2c509f51cb7dcda8687362490da5b/pillow-11.0.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:499c3a1b0d6fc8213519e193796eb1a86a1be4b1877d678b30f83fd979811d1a", size = 2979222 }, + { url = "https://files.pythonhosted.org/packages/20/12/1a41eddad8265c5c19dda8fb6c269ce15ee25e0b9f8f26286e6202df6693/pillow-11.0.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c8b2351c85d855293a299038e1f89db92a2f35e8d2f783489c6f0b2b5f3fe8a3", size = 4190220 }, + { url = "https://files.pythonhosted.org/packages/a9/9b/8a8c4d07d77447b7457164b861d18f5a31ae6418ef5c07f6f878fa09039a/pillow-11.0.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6f4dba50cfa56f910241eb7f883c20f1e7b1d8f7d91c750cd0b318bad443f4d5", size = 4291399 }, + { url = "https://files.pythonhosted.org/packages/fc/e4/130c5fab4a54d3991129800dd2801feeb4b118d7630148cd67f0e6269d4c/pillow-11.0.0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:5ddbfd761ee00c12ee1be86c9c0683ecf5bb14c9772ddbd782085779a63dd55b", size = 4202709 }, + { url = "https://files.pythonhosted.org/packages/39/63/b3fc299528d7df1f678b0666002b37affe6b8751225c3d9c12cf530e73ed/pillow-11.0.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:45c566eb10b8967d71bf1ab8e4a525e5a93519e29ea071459ce517f6b903d7fa", size = 4372556 }, + { url = "https://files.pythonhosted.org/packages/c6/a6/694122c55b855b586c26c694937d36bb8d3b09c735ff41b2f315c6e66a10/pillow-11.0.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:b4fd7bd29610a83a8c9b564d457cf5bd92b4e11e79a4ee4716a63c959699b306", size = 4287187 }, + { url = "https://files.pythonhosted.org/packages/ba/a9/f9d763e2671a8acd53d29b1e284ca298bc10a595527f6be30233cdb9659d/pillow-11.0.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:cb929ca942d0ec4fac404cbf520ee6cac37bf35be479b970c4ffadf2b6a1cad9", size = 4418468 }, + { url = "https://files.pythonhosted.org/packages/6e/0e/b5cbad2621377f11313a94aeb44ca55a9639adabcaaa073597a1925f8c26/pillow-11.0.0-cp311-cp311-win32.whl", hash = "sha256:006bcdd307cc47ba43e924099a038cbf9591062e6c50e570819743f5607404f5", size = 2249249 }, + { url = "https://files.pythonhosted.org/packages/dc/83/1470c220a4ff06cd75fc609068f6605e567ea51df70557555c2ab6516b2c/pillow-11.0.0-cp311-cp311-win_amd64.whl", hash = "sha256:52a2d8323a465f84faaba5236567d212c3668f2ab53e1c74c15583cf507a0291", size = 2566769 }, + { url = "https://files.pythonhosted.org/packages/52/98/def78c3a23acee2bcdb2e52005fb2810ed54305602ec1bfcfab2bda6f49f/pillow-11.0.0-cp311-cp311-win_arm64.whl", hash = "sha256:16095692a253047fe3ec028e951fa4221a1f3ed3d80c397e83541a3037ff67c9", size = 2254611 }, + { url = "https://files.pythonhosted.org/packages/1c/a3/26e606ff0b2daaf120543e537311fa3ae2eb6bf061490e4fea51771540be/pillow-11.0.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:d2c0a187a92a1cb5ef2c8ed5412dd8d4334272617f532d4ad4de31e0495bd923", size = 3147642 }, + { url = "https://files.pythonhosted.org/packages/4f/d5/1caabedd8863526a6cfa44ee7a833bd97f945dc1d56824d6d76e11731939/pillow-11.0.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:084a07ef0821cfe4858fe86652fffac8e187b6ae677e9906e192aafcc1b69903", size = 2978999 }, + { url = "https://files.pythonhosted.org/packages/d9/ff/5a45000826a1aa1ac6874b3ec5a856474821a1b59d838c4f6ce2ee518fe9/pillow-11.0.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8069c5179902dcdce0be9bfc8235347fdbac249d23bd90514b7a47a72d9fecf4", size = 4196794 }, + { url = "https://files.pythonhosted.org/packages/9d/21/84c9f287d17180f26263b5f5c8fb201de0f88b1afddf8a2597a5c9fe787f/pillow-11.0.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f02541ef64077f22bf4924f225c0fd1248c168f86e4b7abdedd87d6ebaceab0f", size = 4300762 }, + { url = "https://files.pythonhosted.org/packages/84/39/63fb87cd07cc541438b448b1fed467c4d687ad18aa786a7f8e67b255d1aa/pillow-11.0.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:fcb4621042ac4b7865c179bb972ed0da0218a076dc1820ffc48b1d74c1e37fe9", size = 4210468 }, + { url = "https://files.pythonhosted.org/packages/7f/42/6e0f2c2d5c60f499aa29be14f860dd4539de322cd8fb84ee01553493fb4d/pillow-11.0.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:00177a63030d612148e659b55ba99527803288cea7c75fb05766ab7981a8c1b7", size = 4381824 }, + { url = "https://files.pythonhosted.org/packages/31/69/1ef0fb9d2f8d2d114db982b78ca4eeb9db9a29f7477821e160b8c1253f67/pillow-11.0.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:8853a3bf12afddfdf15f57c4b02d7ded92c7a75a5d7331d19f4f9572a89c17e6", size = 4296436 }, + { url = "https://files.pythonhosted.org/packages/44/ea/dad2818c675c44f6012289a7c4f46068c548768bc6c7f4e8c4ae5bbbc811/pillow-11.0.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:3107c66e43bda25359d5ef446f59c497de2b5ed4c7fdba0894f8d6cf3822dafc", size = 4429714 }, + { url = "https://files.pythonhosted.org/packages/af/3a/da80224a6eb15bba7a0dcb2346e2b686bb9bf98378c0b4353cd88e62b171/pillow-11.0.0-cp312-cp312-win32.whl", hash = "sha256:86510e3f5eca0ab87429dd77fafc04693195eec7fd6a137c389c3eeb4cfb77c6", size = 2249631 }, + { url = "https://files.pythonhosted.org/packages/57/97/73f756c338c1d86bb802ee88c3cab015ad7ce4b838f8a24f16b676b1ac7c/pillow-11.0.0-cp312-cp312-win_amd64.whl", hash = "sha256:8ec4a89295cd6cd4d1058a5e6aec6bf51e0eaaf9714774e1bfac7cfc9051db47", size = 2567533 }, + { url = "https://files.pythonhosted.org/packages/0b/30/2b61876e2722374558b871dfbfcbe4e406626d63f4f6ed92e9c8e24cac37/pillow-11.0.0-cp312-cp312-win_arm64.whl", hash = "sha256:27a7860107500d813fcd203b4ea19b04babe79448268403172782754870dac25", size = 2254890 }, + { url = "https://files.pythonhosted.org/packages/63/24/e2e15e392d00fcf4215907465d8ec2a2f23bcec1481a8ebe4ae760459995/pillow-11.0.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:bcd1fb5bb7b07f64c15618c89efcc2cfa3e95f0e3bcdbaf4642509de1942a699", size = 3147300 }, + { url = "https://files.pythonhosted.org/packages/43/72/92ad4afaa2afc233dc44184adff289c2e77e8cd916b3ddb72ac69495bda3/pillow-11.0.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:0e038b0745997c7dcaae350d35859c9715c71e92ffb7e0f4a8e8a16732150f38", size = 2978742 }, + { url = "https://files.pythonhosted.org/packages/9e/da/c8d69c5bc85d72a8523fe862f05ababdc52c0a755cfe3d362656bb86552b/pillow-11.0.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0ae08bd8ffc41aebf578c2af2f9d8749d91f448b3bfd41d7d9ff573d74f2a6b2", size = 4194349 }, + { url = "https://files.pythonhosted.org/packages/cd/e8/686d0caeed6b998351d57796496a70185376ed9c8ec7d99e1d19ad591fc6/pillow-11.0.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d69bfd8ec3219ae71bcde1f942b728903cad25fafe3100ba2258b973bd2bc1b2", size = 4298714 }, + { url = "https://files.pythonhosted.org/packages/ec/da/430015cec620d622f06854be67fd2f6721f52fc17fca8ac34b32e2d60739/pillow-11.0.0-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:61b887f9ddba63ddf62fd02a3ba7add935d053b6dd7d58998c630e6dbade8527", size = 4208514 }, + { url = "https://files.pythonhosted.org/packages/44/ae/7e4f6662a9b1cb5f92b9cc9cab8321c381ffbee309210940e57432a4063a/pillow-11.0.0-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:c6a660307ca9d4867caa8d9ca2c2658ab685de83792d1876274991adec7b93fa", size = 4380055 }, + { url = "https://files.pythonhosted.org/packages/74/d5/1a807779ac8a0eeed57f2b92a3c32ea1b696e6140c15bd42eaf908a261cd/pillow-11.0.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:73e3a0200cdda995c7e43dd47436c1548f87a30bb27fb871f352a22ab8dcf45f", size = 4296751 }, + { url = "https://files.pythonhosted.org/packages/38/8c/5fa3385163ee7080bc13026d59656267daaaaf3c728c233d530e2c2757c8/pillow-11.0.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:fba162b8872d30fea8c52b258a542c5dfd7b235fb5cb352240c8d63b414013eb", size = 4430378 }, + { url = "https://files.pythonhosted.org/packages/ca/1d/ad9c14811133977ff87035bf426875b93097fb50af747793f013979facdb/pillow-11.0.0-cp313-cp313-win32.whl", hash = "sha256:f1b82c27e89fffc6da125d5eb0ca6e68017faf5efc078128cfaa42cf5cb38798", size = 2249588 }, + { url = "https://files.pythonhosted.org/packages/fb/01/3755ba287dac715e6afdb333cb1f6d69740a7475220b4637b5ce3d78cec2/pillow-11.0.0-cp313-cp313-win_amd64.whl", hash = "sha256:8ba470552b48e5835f1d23ecb936bb7f71d206f9dfeee64245f30c3270b994de", size = 2567509 }, + { url = "https://files.pythonhosted.org/packages/c0/98/2c7d727079b6be1aba82d195767d35fcc2d32204c7a5820f822df5330152/pillow-11.0.0-cp313-cp313-win_arm64.whl", hash = "sha256:846e193e103b41e984ac921b335df59195356ce3f71dcfd155aa79c603873b84", size = 2254791 }, + { url = "https://files.pythonhosted.org/packages/eb/38/998b04cc6f474e78b563716b20eecf42a2fa16a84589d23c8898e64b0ffd/pillow-11.0.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:4ad70c4214f67d7466bea6a08061eba35c01b1b89eaa098040a35272a8efb22b", size = 3150854 }, + { url = "https://files.pythonhosted.org/packages/13/8e/be23a96292113c6cb26b2aa3c8b3681ec62b44ed5c2bd0b258bd59503d3c/pillow-11.0.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:6ec0d5af64f2e3d64a165f490d96368bb5dea8b8f9ad04487f9ab60dc4bb6003", size = 2982369 }, + { url = "https://files.pythonhosted.org/packages/97/8a/3db4eaabb7a2ae8203cd3a332a005e4aba00067fc514aaaf3e9721be31f1/pillow-11.0.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c809a70e43c7977c4a42aefd62f0131823ebf7dd73556fa5d5950f5b354087e2", size = 4333703 }, + { url = "https://files.pythonhosted.org/packages/28/ac/629ffc84ff67b9228fe87a97272ab125bbd4dc462745f35f192d37b822f1/pillow-11.0.0-cp313-cp313t-manylinux_2_28_x86_64.whl", hash = "sha256:4b60c9520f7207aaf2e1d94de026682fc227806c6e1f55bba7606d1c94dd623a", size = 4412550 }, + { url = "https://files.pythonhosted.org/packages/d6/07/a505921d36bb2df6868806eaf56ef58699c16c388e378b0dcdb6e5b2fb36/pillow-11.0.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:1e2688958a840c822279fda0086fec1fdab2f95bf2b717b66871c4ad9859d7e8", size = 4461038 }, + { url = "https://files.pythonhosted.org/packages/d6/b9/fb620dd47fc7cc9678af8f8bd8c772034ca4977237049287e99dda360b66/pillow-11.0.0-cp313-cp313t-win32.whl", hash = "sha256:607bbe123c74e272e381a8d1957083a9463401f7bd01287f50521ecb05a313f8", size = 2253197 }, + { url = "https://files.pythonhosted.org/packages/df/86/25dde85c06c89d7fc5db17940f07aae0a56ac69aa9ccb5eb0f09798862a8/pillow-11.0.0-cp313-cp313t-win_amd64.whl", hash = "sha256:5c39ed17edea3bc69c743a8dd3e9853b7509625c2462532e62baa0732163a904", size = 2572169 }, + { url = "https://files.pythonhosted.org/packages/51/85/9c33f2517add612e17f3381aee7c4072779130c634921a756c97bc29fb49/pillow-11.0.0-cp313-cp313t-win_arm64.whl", hash = "sha256:75acbbeb05b86bc53cbe7b7e6fe00fbcf82ad7c684b3ad82e3d711da9ba287d3", size = 2256828 }, + { url = "https://files.pythonhosted.org/packages/36/57/42a4dd825eab762ba9e690d696d894ba366e06791936056e26e099398cda/pillow-11.0.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:1187739620f2b365de756ce086fdb3604573337cc28a0d3ac4a01ab6b2d2a6d2", size = 3119239 }, + { url = "https://files.pythonhosted.org/packages/98/f7/25f9f9e368226a1d6cf3507081a1a7944eddd3ca7821023377043f5a83c8/pillow-11.0.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:fbbcb7b57dc9c794843e3d1258c0fbf0f48656d46ffe9e09b63bbd6e8cd5d0a2", size = 2950803 }, + { url = "https://files.pythonhosted.org/packages/59/01/98ead48a6c2e31e6185d4c16c978a67fe3ccb5da5c2ff2ba8475379bb693/pillow-11.0.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5d203af30149ae339ad1b4f710d9844ed8796e97fda23ffbc4cc472968a47d0b", size = 3281098 }, + { url = "https://files.pythonhosted.org/packages/51/c0/570255b2866a0e4d500a14f950803a2ec273bac7badc43320120b9262450/pillow-11.0.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:21a0d3b115009ebb8ac3d2ebec5c2982cc693da935f4ab7bb5c8ebe2f47d36f2", size = 3323665 }, + { url = "https://files.pythonhosted.org/packages/0e/75/689b4ec0483c42bfc7d1aacd32ade7a226db4f4fac57c6fdcdf90c0731e3/pillow-11.0.0-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:73853108f56df97baf2bb8b522f3578221e56f646ba345a372c78326710d3830", size = 3310533 }, + { url = "https://files.pythonhosted.org/packages/3d/30/38bd6149cf53da1db4bad304c543ade775d225961c4310f30425995cb9ec/pillow-11.0.0-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:e58876c91f97b0952eb766123bfef372792ab3f4e3e1f1a2267834c2ab131734", size = 3414886 }, + { url = "https://files.pythonhosted.org/packages/ec/3d/c32a51d848401bd94cabb8767a39621496491ee7cd5199856b77da9b18ad/pillow-11.0.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:224aaa38177597bb179f3ec87eeefcce8e4f85e608025e9cfac60de237ba6316", size = 2567508 }, +] + +[[package]] +name = "pycparser" +version = "2.22" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/1d/b2/31537cf4b1ca988837256c910a668b553fceb8f069bedc4b1c826024b52c/pycparser-2.22.tar.gz", hash = "sha256:491c8be9c040f5390f5bf44a5b07752bd07f56edf992381b05c701439eec10f6", size = 172736 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/13/a3/a812df4e2dd5696d1f351d58b8fe16a405b234ad2886a0dab9183fb78109/pycparser-2.22-py3-none-any.whl", hash = "sha256:c3702b6d3dd8c7abc1afa565d7e63d53a1d0bd86cdc24edd75470f4de499cfcc", size = 117552 }, +] + +[[package]] +name = "pygithub" +version = "2.4.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "deprecated" }, + { name = "pyjwt", extra = ["crypto"] }, + { name = "pynacl" }, + { name = "requests" }, + { name = "typing-extensions" }, + { name = "urllib3" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/f1/a0/1e8b8ca88df9857836f5bf8e3ee15dfb810d19814ef700b12f99ce11f691/pygithub-2.4.0.tar.gz", hash = "sha256:6601e22627e87bac192f1e2e39c6e6f69a43152cfb8f307cee575879320b3051", size = 3476673 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0a/f3/e185613c411757c0c18b904ea2db173f2872397eddf444a3fe8cdde47077/PyGithub-2.4.0-py3-none-any.whl", hash = "sha256:81935aa4bdc939fba98fee1cb47422c09157c56a27966476ff92775602b9ee24", size = 362599 }, +] + +[[package]] +name = "pyjwt" +version = "2.9.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/fb/68/ce067f09fca4abeca8771fe667d89cc347d1e99da3e093112ac329c6020e/pyjwt-2.9.0.tar.gz", hash = "sha256:7e1e5b56cc735432a7369cbfa0efe50fa113ebecdc04ae6922deba8b84582d0c", size = 78825 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/79/84/0fdf9b18ba31d69877bd39c9cd6052b47f3761e9910c15de788e519f079f/PyJWT-2.9.0-py3-none-any.whl", hash = "sha256:3b02fb0f44517787776cf48f2ae25d8e14f300e6d7545a4315cee571a415e850", size = 22344 }, +] + +[package.optional-dependencies] +crypto = [ + { name = "cryptography" }, +] + +[[package]] +name = "pynacl" +version = "1.5.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "cffi" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/a7/22/27582568be639dfe22ddb3902225f91f2f17ceff88ce80e4db396c8986da/PyNaCl-1.5.0.tar.gz", hash = "sha256:8ac7448f09ab85811607bdd21ec2464495ac8b7c66d146bf545b0f08fb9220ba", size = 3392854 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ce/75/0b8ede18506041c0bf23ac4d8e2971b4161cd6ce630b177d0a08eb0d8857/PyNaCl-1.5.0-cp36-abi3-macosx_10_10_universal2.whl", hash = "sha256:401002a4aaa07c9414132aaed7f6836ff98f59277a234704ff66878c2ee4a0d1", size = 349920 }, + { url = "https://files.pythonhosted.org/packages/59/bb/fddf10acd09637327a97ef89d2a9d621328850a72f1fdc8c08bdf72e385f/PyNaCl-1.5.0-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:52cb72a79269189d4e0dc537556f4740f7f0a9ec41c1322598799b0bdad4ef92", size = 601722 }, + { url = "https://files.pythonhosted.org/packages/5d/70/87a065c37cca41a75f2ce113a5a2c2aa7533be648b184ade58971b5f7ccc/PyNaCl-1.5.0-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a36d4a9dda1f19ce6e03c9a784a2921a4b726b02e1c736600ca9c22029474394", size = 680087 }, + { url = "https://files.pythonhosted.org/packages/ee/87/f1bb6a595f14a327e8285b9eb54d41fef76c585a0edef0a45f6fc95de125/PyNaCl-1.5.0-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:0c84947a22519e013607c9be43706dd42513f9e6ae5d39d3613ca1e142fba44d", size = 856678 }, + { url = "https://files.pythonhosted.org/packages/66/28/ca86676b69bf9f90e710571b67450508484388bfce09acf8a46f0b8c785f/PyNaCl-1.5.0-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:06b8f6fa7f5de8d5d2f7573fe8c863c051225a27b61e6860fd047b1775807858", size = 1133660 }, + { url = "https://files.pythonhosted.org/packages/3d/85/c262db650e86812585e2bc59e497a8f59948a005325a11bbbc9ecd3fe26b/PyNaCl-1.5.0-cp36-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:a422368fc821589c228f4c49438a368831cb5bbc0eab5ebe1d7fac9dded6567b", size = 663824 }, + { url = "https://files.pythonhosted.org/packages/fd/1a/cc308a884bd299b651f1633acb978e8596c71c33ca85e9dc9fa33a5399b9/PyNaCl-1.5.0-cp36-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:61f642bf2378713e2c2e1de73444a3778e5f0a38be6fee0fe532fe30060282ff", size = 1117912 }, + { url = "https://files.pythonhosted.org/packages/25/2d/b7df6ddb0c2a33afdb358f8af6ea3b8c4d1196ca45497dd37a56f0c122be/PyNaCl-1.5.0-cp36-abi3-win32.whl", hash = "sha256:e46dae94e34b085175f8abb3b0aaa7da40767865ac82c928eeb9e57e1ea8a543", size = 204624 }, + { url = "https://files.pythonhosted.org/packages/5e/22/d3db169895faaf3e2eda892f005f433a62db2decbcfbc2f61e6517adfa87/PyNaCl-1.5.0-cp36-abi3-win_amd64.whl", hash = "sha256:20f42270d27e1b6a29f54032090b972d97f0a1b0948cc52392041ef7831fee93", size = 212141 }, +] + +[[package]] +name = "requests" +version = "2.32.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "certifi" }, + { name = "charset-normalizer" }, + { name = "idna" }, + { name = "urllib3" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/63/70/2bf7780ad2d390a8d301ad0b550f1581eadbd9a20f896afe06353c2a2913/requests-2.32.3.tar.gz", hash = "sha256:55365417734eb18255590a9ff9eb97e9e1da868d4ccd6402399eaf68af20a760", size = 131218 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f9/9b/335f9764261e915ed497fcdeb11df5dfd6f7bf257d4a6a2a686d80da4d54/requests-2.32.3-py3-none-any.whl", hash = "sha256:70761cfe03c773ceb22aa2f671b4757976145175cdfca038c02654d061d6dcc6", size = 64928 }, +] + +[[package]] +name = "requests-oauthlib" +version = "2.0.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "oauthlib" }, + { name = "requests" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/42/f2/05f29bc3913aea15eb670be136045bf5c5bbf4b99ecb839da9b422bb2c85/requests-oauthlib-2.0.0.tar.gz", hash = "sha256:b3dffaebd884d8cd778494369603a9e7b58d29111bf6b41bdc2dcd87203af4e9", size = 55650 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3b/5d/63d4ae3b9daea098d5d6f5da83984853c1bbacd5dc826764b249fe119d24/requests_oauthlib-2.0.0-py2.py3-none-any.whl", hash = "sha256:7dd8a5c40426b779b0868c404bdef9768deccf22749cde15852df527e6269b36", size = 24179 }, +] + +[[package]] +name = "requests-toolbelt" +version = "1.0.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "requests" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/f3/61/d7545dafb7ac2230c70d38d31cbfe4cc64f7144dc41f6e4e4b78ecd9f5bb/requests-toolbelt-1.0.0.tar.gz", hash = "sha256:7681a0a3d047012b5bdc0ee37d7f8f07ebe76ab08caeccfc3921ce23c88d5bc6", size = 206888 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3f/51/d4db610ef29373b879047326cbf6fa98b6c1969d6f6dc423279de2b1be2c/requests_toolbelt-1.0.0-py2.py3-none-any.whl", hash = "sha256:cccfdd665f0a24fcf4726e690f65639d272bb0637b9b92dfd91a5568ccf6bd06", size = 54481 }, +] + +[[package]] +name = "smmap" +version = "5.0.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/88/04/b5bf6d21dc4041000ccba7eb17dd3055feb237e7ffc2c20d3fae3af62baa/smmap-5.0.1.tar.gz", hash = "sha256:dceeb6c0028fdb6734471eb07c0cd2aae706ccaecab45965ee83f11c8d3b1f62", size = 22291 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a7/a5/10f97f73544edcdef54409f1d839f6049a0d79df68adbc1ceb24d1aaca42/smmap-5.0.1-py3-none-any.whl", hash = "sha256:e6d8668fa5f93e706934a62d7b4db19c8d9eb8cf2adbb75ef1b675aa332b69da", size = 24282 }, +] + +[[package]] +name = "soupsieve" +version = "2.6" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d7/ce/fbaeed4f9fb8b2daa961f90591662df6a86c1abf25c548329a86920aedfb/soupsieve-2.6.tar.gz", hash = "sha256:e2e68417777af359ec65daac1057404a3c8a5455bb8abc36f1a9866ab1a51abb", size = 101569 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d1/c2/fe97d779f3ef3b15f05c94a2f1e3d21732574ed441687474db9d342a7315/soupsieve-2.6-py3-none-any.whl", hash = "sha256:e72c4ff06e4fb6e4b5a9f0f55fe6e81514581fca1515028625d0f299c602ccc9", size = 36186 }, +] + +[[package]] +name = "typing-extensions" +version = "4.12.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/df/db/f35a00659bc03fec321ba8bce9420de607a1d37f8342eee1863174c69557/typing_extensions-4.12.2.tar.gz", hash = "sha256:1a7ead55c7e559dd4dee8856e3a88b41225abfe1ce8df57b7c13915fe121ffb8", size = 85321 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/26/9f/ad63fc0248c5379346306f8668cda6e2e2e9c95e01216d2b8ffd9ff037d0/typing_extensions-4.12.2-py3-none-any.whl", hash = "sha256:04e5ca0351e0f3f85c6853954072df659d0d13fac324d0072316b67d7794700d", size = 37438 }, +] + +[[package]] +name = "urllib3" +version = "2.2.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/ed/63/22ba4ebfe7430b76388e7cd448d5478814d3032121827c12a2cc287e2260/urllib3-2.2.3.tar.gz", hash = "sha256:e7d814a81dad81e6caf2ec9fdedb284ecc9c73076b62654547cc64ccdcae26e9", size = 300677 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ce/d9/5f4c13cecde62396b0d3fe530a50ccea91e7dfc1ccf0e09c228841bb5ba8/urllib3-2.2.3-py3-none-any.whl", hash = "sha256:ca899ca043dcb1bafa3e262d73aa25c465bfb49e0bd9dd5d59f1d0acba2f8fac", size = 126338 }, +] + +[[package]] +name = "wrapt" +version = "1.16.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/95/4c/063a912e20bcef7124e0df97282a8af3ff3e4b603ce84c481d6d7346be0a/wrapt-1.16.0.tar.gz", hash = "sha256:5f370f952971e7d17c7d1ead40e49f32345a7f7a5373571ef44d800d06b1899d", size = 53972 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a8/c6/5375258add3777494671d8cec27cdf5402abd91016dee24aa2972c61fedf/wrapt-1.16.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:ffa565331890b90056c01db69c0fe634a776f8019c143a5ae265f9c6bc4bd6d4", size = 37315 }, + { url = "https://files.pythonhosted.org/packages/32/12/e11adfde33444986135d8881b401e4de6cbb4cced046edc6b464e6ad7547/wrapt-1.16.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e4fdb9275308292e880dcbeb12546df7f3e0f96c6b41197e0cf37d2826359020", size = 38160 }, + { url = "https://files.pythonhosted.org/packages/70/7d/3dcc4a7e96f8d3e398450ec7703db384413f79bd6c0196e0e139055ce00f/wrapt-1.16.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bb2dee3874a500de01c93d5c71415fcaef1d858370d405824783e7a8ef5db440", size = 80419 }, + { url = "https://files.pythonhosted.org/packages/d1/c4/8dfdc3c2f0b38be85c8d9fdf0011ebad2f54e40897f9549a356bebb63a97/wrapt-1.16.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2a88e6010048489cda82b1326889ec075a8c856c2e6a256072b28eaee3ccf487", size = 72669 }, + { url = "https://files.pythonhosted.org/packages/49/83/b40bc1ad04a868b5b5bcec86349f06c1ee1ea7afe51dc3e46131e4f39308/wrapt-1.16.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ac83a914ebaf589b69f7d0a1277602ff494e21f4c2f743313414378f8f50a4cf", size = 80271 }, + { url = "https://files.pythonhosted.org/packages/19/d4/cd33d3a82df73a064c9b6401d14f346e1d2fb372885f0295516ec08ed2ee/wrapt-1.16.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:73aa7d98215d39b8455f103de64391cb79dfcad601701a3aa0dddacf74911d72", size = 84748 }, + { url = "https://files.pythonhosted.org/packages/ef/58/2fde309415b5fa98fd8f5f4a11886cbf276824c4c64d45a39da342fff6fe/wrapt-1.16.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:807cc8543a477ab7422f1120a217054f958a66ef7314f76dd9e77d3f02cdccd0", size = 77522 }, + { url = "https://files.pythonhosted.org/packages/07/44/359e4724a92369b88dbf09878a7cde7393cf3da885567ea898e5904049a3/wrapt-1.16.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:bf5703fdeb350e36885f2875d853ce13172ae281c56e509f4e6eca049bdfb136", size = 84780 }, + { url = "https://files.pythonhosted.org/packages/88/8f/706f2fee019360cc1da652353330350c76aa5746b4e191082e45d6838faf/wrapt-1.16.0-cp310-cp310-win32.whl", hash = "sha256:f6b2d0c6703c988d334f297aa5df18c45e97b0af3679bb75059e0e0bd8b1069d", size = 35335 }, + { url = "https://files.pythonhosted.org/packages/19/2b/548d23362e3002ebbfaefe649b833fa43f6ca37ac3e95472130c4b69e0b4/wrapt-1.16.0-cp310-cp310-win_amd64.whl", hash = "sha256:decbfa2f618fa8ed81c95ee18a387ff973143c656ef800c9f24fb7e9c16054e2", size = 37528 }, + { url = "https://files.pythonhosted.org/packages/fd/03/c188ac517f402775b90d6f312955a5e53b866c964b32119f2ed76315697e/wrapt-1.16.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:1a5db485fe2de4403f13fafdc231b0dbae5eca4359232d2efc79025527375b09", size = 37313 }, + { url = "https://files.pythonhosted.org/packages/0f/16/ea627d7817394db04518f62934a5de59874b587b792300991b3c347ff5e0/wrapt-1.16.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:75ea7d0ee2a15733684badb16de6794894ed9c55aa5e9903260922f0482e687d", size = 38164 }, + { url = "https://files.pythonhosted.org/packages/7f/a7/f1212ba098f3de0fd244e2de0f8791ad2539c03bef6c05a9fcb03e45b089/wrapt-1.16.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a452f9ca3e3267cd4d0fcf2edd0d035b1934ac2bd7e0e57ac91ad6b95c0c6389", size = 80890 }, + { url = "https://files.pythonhosted.org/packages/b7/96/bb5e08b3d6db003c9ab219c487714c13a237ee7dcc572a555eaf1ce7dc82/wrapt-1.16.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:43aa59eadec7890d9958748db829df269f0368521ba6dc68cc172d5d03ed8060", size = 73118 }, + { url = "https://files.pythonhosted.org/packages/6e/52/2da48b35193e39ac53cfb141467d9f259851522d0e8c87153f0ba4205fb1/wrapt-1.16.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:72554a23c78a8e7aa02abbd699d129eead8b147a23c56e08d08dfc29cfdddca1", size = 80746 }, + { url = "https://files.pythonhosted.org/packages/11/fb/18ec40265ab81c0e82a934de04596b6ce972c27ba2592c8b53d5585e6bcd/wrapt-1.16.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:d2efee35b4b0a347e0d99d28e884dfd82797852d62fcd7ebdeee26f3ceb72cf3", size = 85668 }, + { url = "https://files.pythonhosted.org/packages/0f/ef/0ecb1fa23145560431b970418dce575cfaec555ab08617d82eb92afc7ccf/wrapt-1.16.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:6dcfcffe73710be01d90cae08c3e548d90932d37b39ef83969ae135d36ef3956", size = 78556 }, + { url = "https://files.pythonhosted.org/packages/25/62/cd284b2b747f175b5a96cbd8092b32e7369edab0644c45784871528eb852/wrapt-1.16.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:eb6e651000a19c96f452c85132811d25e9264d836951022d6e81df2fff38337d", size = 85712 }, + { url = "https://files.pythonhosted.org/packages/e5/a7/47b7ff74fbadf81b696872d5ba504966591a3468f1bc86bca2f407baef68/wrapt-1.16.0-cp311-cp311-win32.whl", hash = "sha256:66027d667efe95cc4fa945af59f92c5a02c6f5bb6012bff9e60542c74c75c362", size = 35327 }, + { url = "https://files.pythonhosted.org/packages/cf/c3/0084351951d9579ae83a3d9e38c140371e4c6b038136909235079f2e6e78/wrapt-1.16.0-cp311-cp311-win_amd64.whl", hash = "sha256:aefbc4cb0a54f91af643660a0a150ce2c090d3652cf4052a5397fb2de549cd89", size = 37523 }, + { url = "https://files.pythonhosted.org/packages/92/17/224132494c1e23521868cdd57cd1e903f3b6a7ba6996b7b8f077ff8ac7fe/wrapt-1.16.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:5eb404d89131ec9b4f748fa5cfb5346802e5ee8836f57d516576e61f304f3b7b", size = 37614 }, + { url = "https://files.pythonhosted.org/packages/6a/d7/cfcd73e8f4858079ac59d9db1ec5a1349bc486ae8e9ba55698cc1f4a1dff/wrapt-1.16.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:9090c9e676d5236a6948330e83cb89969f433b1943a558968f659ead07cb3b36", size = 38316 }, + { url = "https://files.pythonhosted.org/packages/7e/79/5ff0a5c54bda5aec75b36453d06be4f83d5cd4932cc84b7cb2b52cee23e2/wrapt-1.16.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:94265b00870aa407bd0cbcfd536f17ecde43b94fb8d228560a1e9d3041462d73", size = 86322 }, + { url = "https://files.pythonhosted.org/packages/c4/81/e799bf5d419f422d8712108837c1d9bf6ebe3cb2a81ad94413449543a923/wrapt-1.16.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f2058f813d4f2b5e3a9eb2eb3faf8f1d99b81c3e51aeda4b168406443e8ba809", size = 79055 }, + { url = "https://files.pythonhosted.org/packages/62/62/30ca2405de6a20448ee557ab2cd61ab9c5900be7cbd18a2639db595f0b98/wrapt-1.16.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:98b5e1f498a8ca1858a1cdbffb023bfd954da4e3fa2c0cb5853d40014557248b", size = 87291 }, + { url = "https://files.pythonhosted.org/packages/49/4e/5d2f6d7b57fc9956bf06e944eb00463551f7d52fc73ca35cfc4c2cdb7aed/wrapt-1.16.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:14d7dc606219cdd7405133c713f2c218d4252f2a469003f8c46bb92d5d095d81", size = 90374 }, + { url = "https://files.pythonhosted.org/packages/a6/9b/c2c21b44ff5b9bf14a83252a8b973fb84923764ff63db3e6dfc3895cf2e0/wrapt-1.16.0-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:49aac49dc4782cb04f58986e81ea0b4768e4ff197b57324dcbd7699c5dfb40b9", size = 83896 }, + { url = "https://files.pythonhosted.org/packages/14/26/93a9fa02c6f257df54d7570dfe8011995138118d11939a4ecd82cb849613/wrapt-1.16.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:418abb18146475c310d7a6dc71143d6f7adec5b004ac9ce08dc7a34e2babdc5c", size = 91738 }, + { url = "https://files.pythonhosted.org/packages/a2/5b/4660897233eb2c8c4de3dc7cefed114c61bacb3c28327e64150dc44ee2f6/wrapt-1.16.0-cp312-cp312-win32.whl", hash = "sha256:685f568fa5e627e93f3b52fda002c7ed2fa1800b50ce51f6ed1d572d8ab3e7fc", size = 35568 }, + { url = "https://files.pythonhosted.org/packages/5c/cc/8297f9658506b224aa4bd71906447dea6bb0ba629861a758c28f67428b91/wrapt-1.16.0-cp312-cp312-win_amd64.whl", hash = "sha256:dcdba5c86e368442528f7060039eda390cc4091bfd1dca41e8046af7c910dda8", size = 37653 }, + { url = "https://files.pythonhosted.org/packages/ff/21/abdedb4cdf6ff41ebf01a74087740a709e2edb146490e4d9beea054b0b7a/wrapt-1.16.0-py3-none-any.whl", hash = "sha256:6906c4100a8fcbf2fa735f6059214bb13b97f75b1a61777fcf6432121ef12ef1", size = 23362 }, +] From 852964609ec74815c722be374e8677e8a32cbd82 Mon Sep 17 00:00:00 2001 From: Ezra Chung Date: Tue, 29 Oct 2024 15:28:20 -0500 Subject: [PATCH 02/78] evg: move EVG files into evergreen-old --- {.evergreen => .evergreen-old}/abi-compliance-check-setup.sh | 0 {.evergreen => .evergreen-old}/abi-compliance-check-test.sh | 0 {.evergreen => .evergreen-old}/abi-prohibited-symbols-test.sh | 0 {.evergreen => .evergreen-old}/abi-stability-setup.sh | 0 {.evergreen => .evergreen-old}/abidiff-setup.sh | 0 {.evergreen => .evergreen-old}/abidiff-test.sh | 0 {.evergreen => .evergreen-old}/build_example_projects.sh | 0 {.evergreen => .evergreen-old}/build_snapshot_rpm.sh | 0 {.evergreen => .evergreen-old}/check-augmented-sbom.sh | 0 {.evergreen => .evergreen-old}/compile-scan-build.sh | 0 {.evergreen => .evergreen-old}/compile.sh | 0 {.evergreen => .evergreen-old}/connect.sh | 0 {.evergreen => .evergreen-old}/debian_package_build.sh | 0 {.evergreen => .evergreen-old}/find_cmake.sh | 0 {.evergreen => .evergreen-old}/install_c_driver.sh | 0 {.evergreen => .evergreen-old}/mongo-cxx-driver.spec | 0 {.evergreen => .evergreen-old}/spec.patch | 0 {.evergreen => .evergreen-old}/test.sh | 0 {.evergreen => .evergreen-old}/uninstall_check.sh | 0 {.evergreen => .evergreen-old}/uninstall_check_windows.cmd | 0 {.evergreen => .evergreen-old}/upload-code-coverage.sh | 0 21 files changed, 0 insertions(+), 0 deletions(-) rename {.evergreen => .evergreen-old}/abi-compliance-check-setup.sh (100%) rename {.evergreen => .evergreen-old}/abi-compliance-check-test.sh (100%) rename {.evergreen => .evergreen-old}/abi-prohibited-symbols-test.sh (100%) rename {.evergreen => .evergreen-old}/abi-stability-setup.sh (100%) rename {.evergreen => .evergreen-old}/abidiff-setup.sh (100%) rename {.evergreen => .evergreen-old}/abidiff-test.sh (100%) rename {.evergreen => .evergreen-old}/build_example_projects.sh (100%) rename {.evergreen => .evergreen-old}/build_snapshot_rpm.sh (100%) rename {.evergreen => .evergreen-old}/check-augmented-sbom.sh (100%) rename {.evergreen => .evergreen-old}/compile-scan-build.sh (100%) rename {.evergreen => .evergreen-old}/compile.sh (100%) rename {.evergreen => .evergreen-old}/connect.sh (100%) rename {.evergreen => .evergreen-old}/debian_package_build.sh (100%) rename {.evergreen => .evergreen-old}/find_cmake.sh (100%) rename {.evergreen => .evergreen-old}/install_c_driver.sh (100%) rename {.evergreen => .evergreen-old}/mongo-cxx-driver.spec (100%) rename {.evergreen => .evergreen-old}/spec.patch (100%) rename {.evergreen => .evergreen-old}/test.sh (100%) rename {.evergreen => .evergreen-old}/uninstall_check.sh (100%) rename {.evergreen => .evergreen-old}/uninstall_check_windows.cmd (100%) rename {.evergreen => .evergreen-old}/upload-code-coverage.sh (100%) diff --git a/.evergreen/abi-compliance-check-setup.sh b/.evergreen-old/abi-compliance-check-setup.sh similarity index 100% rename from .evergreen/abi-compliance-check-setup.sh rename to .evergreen-old/abi-compliance-check-setup.sh diff --git a/.evergreen/abi-compliance-check-test.sh b/.evergreen-old/abi-compliance-check-test.sh similarity index 100% rename from .evergreen/abi-compliance-check-test.sh rename to .evergreen-old/abi-compliance-check-test.sh diff --git a/.evergreen/abi-prohibited-symbols-test.sh b/.evergreen-old/abi-prohibited-symbols-test.sh similarity index 100% rename from .evergreen/abi-prohibited-symbols-test.sh rename to .evergreen-old/abi-prohibited-symbols-test.sh diff --git a/.evergreen/abi-stability-setup.sh b/.evergreen-old/abi-stability-setup.sh similarity index 100% rename from .evergreen/abi-stability-setup.sh rename to .evergreen-old/abi-stability-setup.sh diff --git a/.evergreen/abidiff-setup.sh b/.evergreen-old/abidiff-setup.sh similarity index 100% rename from .evergreen/abidiff-setup.sh rename to .evergreen-old/abidiff-setup.sh diff --git a/.evergreen/abidiff-test.sh b/.evergreen-old/abidiff-test.sh similarity index 100% rename from .evergreen/abidiff-test.sh rename to .evergreen-old/abidiff-test.sh diff --git a/.evergreen/build_example_projects.sh b/.evergreen-old/build_example_projects.sh similarity index 100% rename from .evergreen/build_example_projects.sh rename to .evergreen-old/build_example_projects.sh diff --git a/.evergreen/build_snapshot_rpm.sh b/.evergreen-old/build_snapshot_rpm.sh similarity index 100% rename from .evergreen/build_snapshot_rpm.sh rename to .evergreen-old/build_snapshot_rpm.sh diff --git a/.evergreen/check-augmented-sbom.sh b/.evergreen-old/check-augmented-sbom.sh similarity index 100% rename from .evergreen/check-augmented-sbom.sh rename to .evergreen-old/check-augmented-sbom.sh diff --git a/.evergreen/compile-scan-build.sh b/.evergreen-old/compile-scan-build.sh similarity index 100% rename from .evergreen/compile-scan-build.sh rename to .evergreen-old/compile-scan-build.sh diff --git a/.evergreen/compile.sh b/.evergreen-old/compile.sh similarity index 100% rename from .evergreen/compile.sh rename to .evergreen-old/compile.sh diff --git a/.evergreen/connect.sh b/.evergreen-old/connect.sh similarity index 100% rename from .evergreen/connect.sh rename to .evergreen-old/connect.sh diff --git a/.evergreen/debian_package_build.sh b/.evergreen-old/debian_package_build.sh similarity index 100% rename from .evergreen/debian_package_build.sh rename to .evergreen-old/debian_package_build.sh diff --git a/.evergreen/find_cmake.sh b/.evergreen-old/find_cmake.sh similarity index 100% rename from .evergreen/find_cmake.sh rename to .evergreen-old/find_cmake.sh diff --git a/.evergreen/install_c_driver.sh b/.evergreen-old/install_c_driver.sh similarity index 100% rename from .evergreen/install_c_driver.sh rename to .evergreen-old/install_c_driver.sh diff --git a/.evergreen/mongo-cxx-driver.spec b/.evergreen-old/mongo-cxx-driver.spec similarity index 100% rename from .evergreen/mongo-cxx-driver.spec rename to .evergreen-old/mongo-cxx-driver.spec diff --git a/.evergreen/spec.patch b/.evergreen-old/spec.patch similarity index 100% rename from .evergreen/spec.patch rename to .evergreen-old/spec.patch diff --git a/.evergreen/test.sh b/.evergreen-old/test.sh similarity index 100% rename from .evergreen/test.sh rename to .evergreen-old/test.sh diff --git a/.evergreen/uninstall_check.sh b/.evergreen-old/uninstall_check.sh similarity index 100% rename from .evergreen/uninstall_check.sh rename to .evergreen-old/uninstall_check.sh diff --git a/.evergreen/uninstall_check_windows.cmd b/.evergreen-old/uninstall_check_windows.cmd similarity index 100% rename from .evergreen/uninstall_check_windows.cmd rename to .evergreen-old/uninstall_check_windows.cmd diff --git a/.evergreen/upload-code-coverage.sh b/.evergreen-old/upload-code-coverage.sh similarity index 100% rename from .evergreen/upload-code-coverage.sh rename to .evergreen-old/upload-code-coverage.sh From dff877115cf852052b631fa95c1e9c3677ed4b92 Mon Sep 17 00:00:00 2001 From: Ezra Chung Date: Tue, 29 Oct 2024 15:28:20 -0500 Subject: [PATCH 03/78] evg: update references to old EVG files --- .evergreen-old/build_snapshot_rpm.sh | 8 +++--- .evergreen-old/connect.sh | 2 +- .evergreen-old/test.sh | 2 +- .evergreen-old/uninstall_check.sh | 2 +- .mci.yml | 38 ++++++++++++++-------------- 5 files changed, 26 insertions(+), 26 deletions(-) diff --git a/.evergreen-old/build_snapshot_rpm.sh b/.evergreen-old/build_snapshot_rpm.sh index 1667026b5d..5bf2bf5bfd 100755 --- a/.evergreen-old/build_snapshot_rpm.sh +++ b/.evergreen-old/build_snapshot_rpm.sh @@ -25,7 +25,7 @@ set -o errexit for arg in "$@"; do if [ "$arg" = "-h" ]; then - echo "Usage: ./.evergreen/build_snapshot_rpm.sh" + echo "Usage: ./.evergreen-old/build_snapshot_rpm.sh" echo "" echo " This script is used to build a .rpm package directly from a snapshot of the" echo " current repository." @@ -60,9 +60,9 @@ if [ -f "${spec_file}" ]; then echo "Found old spec file (${spec_file})...removing" rm -f ${spec_file} fi -cp "$(pwd)/.evergreen/${package}.spec" .. -if [ -f .evergreen/spec.patch ]; then - patch -d .. -p0 -i $(pwd)/.evergreen/spec.patch +cp "$(pwd)/.evergreen-old/${package}.spec" .. +if [ -f .evergreen-old/spec.patch ]; then + patch -d .. -p0 -i $(pwd)/.evergreen-old/spec.patch fi changelog_package=$(rpmspec --srpm -q --qf "%{name}" ${spec_file}) diff --git a/.evergreen-old/connect.sh b/.evergreen-old/connect.sh index 8694840420..06f97802bc 100755 --- a/.evergreen-old/connect.sh +++ b/.evergreen-old/connect.sh @@ -18,7 +18,7 @@ print_usage_and_exit () { BUILD_TYPE="Debug" \\ BUILD_DIR=$(pwd)/cmake-build \\ URI="mongodb://localhost:27017/?" \\ - ./.evergreen/connect.sh + ./.evergreen-old/connect.sh EOF exit 1; } diff --git a/.evergreen-old/test.sh b/.evergreen-old/test.sh index 54d86a2f98..ce150ef3c1 100755 --- a/.evergreen-old/test.sh +++ b/.evergreen-old/test.sh @@ -357,7 +357,7 @@ fi # is true. if [[ -z "${MONGODB_API_VERSION:-}" ]]; then echo "Building example projects..." - .evergreen/build_example_projects.sh + .evergreen-old/build_example_projects.sh echo "Building example projects... done." fi unset MONGODB_API_VERSION diff --git a/.evergreen-old/uninstall_check.sh b/.evergreen-old/uninstall_check.sh index 26b7848ebe..984f185e08 100755 --- a/.evergreen-old/uninstall_check.sh +++ b/.evergreen-old/uninstall_check.sh @@ -9,7 +9,7 @@ touch $INSTALL_DIR/lib/canary.txt ls -l $INSTALL_DIR/share/mongo-cxx-driver -. .evergreen/find_cmake.sh +. .evergreen-old/find_cmake.sh $CMAKE --build $BUILD_DIR --target uninstall diff --git a/.mci.yml b/.mci.yml index 44b0dbd00a..f25ddfd925 100644 --- a/.mci.yml +++ b/.mci.yml @@ -63,12 +63,12 @@ functions: type: setup params: binary: bash - args: [-c, mongo-cxx-driver/.evergreen/abi-compliance-check-setup.sh] + args: [-c, mongo-cxx-driver/.evergreen-old/abi-compliance-check-setup.sh] - command: subprocess.exec type: test params: binary: bash - args: [-c, mongo-cxx-driver/.evergreen/abi-compliance-check-test.sh] + args: [-c, mongo-cxx-driver/.evergreen-old/abi-compliance-check-test.sh] - command: s3.put type: system params: @@ -119,12 +119,12 @@ functions: type: setup params: binary: bash - args: [-c, mongo-cxx-driver/.evergreen/abidiff-setup.sh] + args: [-c, mongo-cxx-driver/.evergreen-old/abidiff-setup.sh] - command: subprocess.exec type: test params: binary: bash - args: [-c, mongo-cxx-driver/.evergreen/abidiff-test.sh] + args: [-c, mongo-cxx-driver/.evergreen-old/abidiff-test.sh] - command: s3.put type: system params: @@ -153,7 +153,7 @@ functions: type: test params: binary: bash - args: [-c, mongo-cxx-driver/.evergreen/abi-prohibited-symbols-test.sh] + args: [-c, mongo-cxx-driver/.evergreen-old/abi-prohibited-symbols-test.sh] "setup": - command: shell.exec @@ -364,7 +364,7 @@ functions: params: shell: bash add_expansions_to_env: true - script: mongo-cxx-driver/.evergreen/install_c_driver.sh + script: mongo-cxx-driver/.evergreen-old/install_c_driver.sh # fetch_c_driver_source may be used to fetch the C driver source without installing the C driver. # This can be used when only CI scripts are needed. @@ -477,7 +477,7 @@ functions: env: CC: ${cc_compiler} CXX: ${cxx_compiler} - script: .evergreen/compile.sh + script: .evergreen-old/compile.sh "compile_benchmarks": - command: shell.exec @@ -521,7 +521,7 @@ functions: - TEST_WITH_VALGRIND - use_mongocryptd - USE_STATIC_LIBS - script: .evergreen/test.sh + script: .evergreen-old/test.sh "test auth": - command: shell.exec @@ -536,7 +536,7 @@ functions: export BUILD_TYPE=${build_type} export BUILD_DIR=$(pwd)/build export URI="mongodb://bob:pwd123@localhost" - ./.evergreen/connect.sh + ./.evergreen-old/connect.sh "test atlas connectivity": - command: shell.exec @@ -555,7 +555,7 @@ functions: # The atlas_serverless_uri expansion is set in the Evergreen project settings. export URI="${atlas_serverless_uri}" - ./.evergreen/connect.sh + ./.evergreen-old/connect.sh "backtrace": - command: shell.exec @@ -612,7 +612,7 @@ functions: params: binary: bash working_dir: "mongo-cxx-driver" - args: [-c, .evergreen/upload-code-coverage.sh] + args: [-c, .evergreen-old/upload-code-coverage.sh] include_expansions_in_env: [codecov_token] "docker-image-build": @@ -659,7 +659,7 @@ functions: working_dir: "mongo-cxx-driver" add_expansions_to_env: true redirect_standard_error_to_output: true - args: [-c, .evergreen/compile-scan-build.sh] + args: [-c, .evergreen-old/compile-scan-build.sh] "upload scan artifacts": - command: subprocess.exec @@ -709,7 +709,7 @@ functions: - ARTIFACTORY_PASSWORD - SILK_CLIENT_ID - SILK_CLIENT_SECRET - args: [-c, .evergreen/check-augmented-sbom.sh] + args: [-c, .evergreen-old/check-augmented-sbom.sh] "upload augmented sbom": - command: s3.put @@ -1012,7 +1012,7 @@ tasks: working_dir: "mongo-cxx-driver" script: |- set -o errexit - ./.evergreen/uninstall_check.sh + ./.evergreen-old/uninstall_check.sh - name: uninstall_check_windows commands: @@ -1028,7 +1028,7 @@ tasks: working_dir: "mongo-cxx-driver" script: |- set -o errexit - cmd.exe /c .\\.evergreen\\uninstall_check_windows.cmd + cmd.exe /c .\\.evergreen-old\\uninstall_check_windows.cmd - name: build_example_with_add_subdirectory commands: @@ -1068,7 +1068,7 @@ tasks: script: |- set -o errexit export IS_PATCH="${is_patch}" - .evergreen/debian_package_build.sh + .evergreen-old/debian_package_build.sh - command: s3.put params: aws_key: ${aws_key} @@ -1093,7 +1093,7 @@ tasks: set -o errexit export IS_PATCH="${is_patch}" export DEB_BUILD_PROFILES="pkg.mongo-cxx-driver.mnmlstc" - .evergreen/debian_package_build.sh + .evergreen-old/debian_package_build.sh - command: s3.put params: aws_key: ${aws_key} @@ -1116,7 +1116,7 @@ tasks: shell: bash script: |- set -o errexit - .evergreen/build_snapshot_rpm.sh + .evergreen-old/build_snapshot_rpm.sh - command: s3.put params: aws_key: ${aws_key} @@ -1283,7 +1283,7 @@ task_groups: - command: subprocess.exec params: binary: bash - args: [-c, mongo-cxx-driver/.evergreen/abi-stability-setup.sh] + args: [-c, mongo-cxx-driver/.evergreen-old/abi-stability-setup.sh] include_expansions_in_env: [cxx_standard] tasks: [".abi-stability"] teardown_task_can_fail_task: true From f301d2d910ba0c75810137fc3c3627f66355180b Mon Sep 17 00:00:00 2001 From: Ezra Chung Date: Tue, 29 Oct 2024 15:28:21 -0500 Subject: [PATCH 04/78] evg: expand all YAML anchors --- .mci.yml | 331 +++++++++++++++++++++++++++++++++++-------------------- 1 file changed, 212 insertions(+), 119 deletions(-) diff --git a/.mci.yml b/.mci.yml index f25ddfd925..2b9b0bffcf 100644 --- a/.mci.yml +++ b/.mci.yml @@ -16,43 +16,6 @@ variables: # Only LIBMONGOC_DOWNLOAD_VERSION needs to be updated when pinning to an unreleased commit. mongoc_version_minimum: &mongoc_version_minimum "1.28.0" - integration_matrix: - integration_matrix_tasks_single: &integration_matrix_tasks_single - tasks: - - name: compile_and_test_with_shared_libs - - name: compile_and_test_with_shared_libs_extra_alignment - integration_matrix_tasks_replica: &integration_matrix_tasks_replica - tasks: - - name: compile_and_test_with_shared_libs_replica_set_with_libmongocrypt - integration_matrix_tasks_sharded: &integration_matrix_tasks_sharded - tasks: - - name: compile_and_test_with_shared_libs_sharded_cluster_with_libmongocrypt - integration_matrix_auth_tasks_single: &integration_matrix_auth_tasks_single - tasks: - - name: compile_and_test_auth_with_shared_libs - integration_matrix_versioned_api_tasks_single: &integration_matrix_versioned_api_tasks_single - tasks: - - name: test_versioned_api - - name: test_versioned_api_accept_version_two - # "Drivers MUST run all tests with mongocryptd on at least one platform for all tested server versions (4.2+)." - integration_matrix_mongocryptd_tasks: &integration_matrix_mongocryptd_tasks - tasks: - - name: compile_and_test_with_shared_libs_replica_set_with_libmongocrypt - - name: compile_and_test_with_shared_libs_sharded_cluster_with_libmongocrypt - integration_matrix_expansions_linux: &integration_matrix_expansions_linux - build_type: "Debug" - ENABLE_CODE_COVERAGE: ON - integration_matrix_expansions_windows_vs2017: &integration_matrix_expansions_windows_vs2017 - build_type: "Debug" # Same for Windows and Linux - generator: Visual Studio 15 2017 - platform: x64 - example_projects_cxx_standard: 17 - integration_matrix_expansions_windows_vs2019: &integration_matrix_expansions_windows_vs2019 - build_type: "Debug" # Same for Windows and Linux - generator: Visual Studio 16 2019 - platform: x64 - example_projects_cxx_standard: 17 - ####################################### # Functions # ####################################### @@ -1386,296 +1349,410 @@ buildvariants: run_on: ubuntu2004-large expansions: mongodb_version: "latest" - <<: *integration_matrix_expansions_linux - <<: *integration_matrix_tasks_single + build_type: "Debug" + ENABLE_CODE_COVERAGE: ON + tasks: + - name: compile_and_test_with_shared_libs + - name: compile_and_test_with_shared_libs_extra_alignment - name: integration-ubuntu2004-8.0-single display_name: "Ubuntu 20.04 Debug (MongoDB 8.0)" run_on: ubuntu2004-large expansions: mongodb_version: "8.0" - <<: *integration_matrix_expansions_linux - <<: *integration_matrix_tasks_single + build_type: "Debug" + ENABLE_CODE_COVERAGE: ON + tasks: + - name: compile_and_test_with_shared_libs + - name: compile_and_test_with_shared_libs_extra_alignment - name: integration-ubuntu2004-7.0-single display_name: "Ubuntu 20.04 Debug (MongoDB 7.0)" run_on: ubuntu2004-large expansions: mongodb_version: "7.0" - <<: *integration_matrix_expansions_linux - <<: *integration_matrix_tasks_single + build_type: "Debug" + ENABLE_CODE_COVERAGE: ON + tasks: + - name: compile_and_test_with_shared_libs + - name: compile_and_test_with_shared_libs_extra_alignment - name: integration-ubuntu1804-6.0-single display_name: "Ubuntu 18.04 Debug (MongoDB 6.0)" run_on: ubuntu1804-large expansions: mongodb_version: "6.0" - <<: *integration_matrix_expansions_linux - <<: *integration_matrix_tasks_single + build_type: "Debug" + ENABLE_CODE_COVERAGE: ON + tasks: + - name: compile_and_test_with_shared_libs + - name: compile_and_test_with_shared_libs_extra_alignment - name: integration-ubuntu1804-5.0-single display_name: "Ubuntu 18.04 Debug (MongoDB 5.0)" run_on: ubuntu1804-large expansions: mongodb_version: "5.0" - <<: *integration_matrix_expansions_linux - <<: *integration_matrix_tasks_single + build_type: "Debug" + ENABLE_CODE_COVERAGE: ON + tasks: + - name: compile_and_test_with_shared_libs + - name: compile_and_test_with_shared_libs_extra_alignment - name: integration-ubuntu1804-4.4-single display_name: "Ubuntu 18.04 Debug (MongoDB 4.4)" run_on: ubuntu1804-large expansions: mongodb_version: "4.4" - <<: *integration_matrix_expansions_linux - <<: *integration_matrix_tasks_single + build_type: "Debug" + ENABLE_CODE_COVERAGE: ON + tasks: + - name: compile_and_test_with_shared_libs + - name: compile_and_test_with_shared_libs_extra_alignment - name: integration-ubuntu1804-4.2-single display_name: "Ubuntu 18.04 Debug (MongoDB 4.2)" run_on: ubuntu1804-large expansions: mongodb_version: "4.2" - <<: *integration_matrix_expansions_linux - <<: *integration_matrix_tasks_single + build_type: "Debug" + ENABLE_CODE_COVERAGE: ON + tasks: + - name: compile_and_test_with_shared_libs + - name: compile_and_test_with_shared_libs_extra_alignment - name: integration-ubuntu1804-4.0-single display_name: "Ubuntu 18.04 Debug (MongoDB 4.0)" run_on: ubuntu1804-large expansions: mongodb_version: "4.0" - <<: *integration_matrix_expansions_linux - <<: *integration_matrix_tasks_single + build_type: "Debug" + ENABLE_CODE_COVERAGE: ON + tasks: + - name: compile_and_test_with_shared_libs + - name: compile_and_test_with_shared_libs_extra_alignment - name: integration-vs2019-latest-single display_name: "Windows (VS 2019) Debug (MongoDB Latest)" run_on: windows-vsCurrent-large expansions: mongodb_version: "latest" - <<: *integration_matrix_expansions_windows_vs2019 - <<: *integration_matrix_tasks_single + build_type: "Debug" # Same for Windows and Linux + generator: Visual Studio 16 2019 + platform: x64 + example_projects_cxx_standard: 17 + tasks: + - name: compile_and_test_with_shared_libs + - name: compile_and_test_with_shared_libs_extra_alignment - name: integration-vs2019-8.0-single display_name: "Windows (VS 2019) Debug (MongoDB 8.0)" run_on: windows-vsCurrent-large expansions: mongodb_version: "8.0" - <<: *integration_matrix_expansions_windows_vs2019 - <<: *integration_matrix_tasks_single + build_type: "Debug" # Same for Windows and Linux + generator: Visual Studio 16 2019 + platform: x64 + example_projects_cxx_standard: 17 + tasks: + - name: compile_and_test_with_shared_libs + - name: compile_and_test_with_shared_libs_extra_alignment - name: integration-vs2019-7.0-single display_name: "Windows (VS 2019) Debug (MongoDB 7.0)" run_on: windows-vsCurrent-large expansions: mongodb_version: "7.0" - <<: *integration_matrix_expansions_windows_vs2019 - <<: *integration_matrix_tasks_single + build_type: "Debug" # Same for Windows and Linux + generator: Visual Studio 16 2019 + platform: x64 + example_projects_cxx_standard: 17 + tasks: + - name: compile_and_test_with_shared_libs + - name: compile_and_test_with_shared_libs_extra_alignment - name: integration-vs2019-6.0-single display_name: "Windows (VS 2019) Debug (MongoDB 6.0)" run_on: windows-vsCurrent-large expansions: mongodb_version: "6.0" - <<: *integration_matrix_expansions_windows_vs2019 - <<: *integration_matrix_tasks_single + build_type: "Debug" # Same for Windows and Linux + generator: Visual Studio 16 2019 + platform: x64 + example_projects_cxx_standard: 17 + tasks: + - name: compile_and_test_with_shared_libs + - name: compile_and_test_with_shared_libs_extra_alignment - name: integration-vs2019-5.0-single display_name: "Windows (VS 2019) Debug (MongoDB 5.0)" run_on: windows-vsCurrent-large expansions: mongodb_version: "5.0" - <<: *integration_matrix_expansions_windows_vs2019 - <<: *integration_matrix_tasks_single + build_type: "Debug" # Same for Windows and Linux + generator: Visual Studio 16 2019 + platform: x64 + example_projects_cxx_standard: 17 + tasks: + - name: compile_and_test_with_shared_libs + - name: compile_and_test_with_shared_libs_extra_alignment - name: integration-vs2019-4.4-single display_name: "Windows (VS 2019) Debug (MongoDB 4.4)" run_on: windows-vsCurrent-large expansions: mongodb_version: "4.4" - <<: *integration_matrix_expansions_windows_vs2019 - <<: *integration_matrix_tasks_single + build_type: "Debug" # Same for Windows and Linux + generator: Visual Studio 16 2019 + platform: x64 + example_projects_cxx_standard: 17 + tasks: + - name: compile_and_test_with_shared_libs + - name: compile_and_test_with_shared_libs_extra_alignment - name: integration-vs2019-4.2-single display_name: "Windows (VS 2019) Debug (MongoDB 4.2)" run_on: windows-vsCurrent-large expansions: mongodb_version: "4.2" - <<: *integration_matrix_expansions_windows_vs2019 - <<: *integration_matrix_tasks_single + build_type: "Debug" # Same for Windows and Linux + generator: Visual Studio 16 2019 + platform: x64 + example_projects_cxx_standard: 17 + tasks: + - name: compile_and_test_with_shared_libs + - name: compile_and_test_with_shared_libs_extra_alignment - name: integration-vs2019-4.0-single display_name: "Windows (VS 2019) Debug (MongoDB 4.0)" run_on: windows-vsCurrent-large expansions: mongodb_version: "4.0" - <<: *integration_matrix_expansions_windows_vs2019 - <<: *integration_matrix_tasks_single + build_type: "Debug" # Same for Windows and Linux + generator: Visual Studio 16 2019 + platform: x64 + example_projects_cxx_standard: 17 + tasks: + - name: compile_and_test_with_shared_libs + - name: compile_and_test_with_shared_libs_extra_alignment - name: integration-ubuntu2004-latest-replica display_name: "Ubuntu 20.04 Debug replica set (MongoDB Latest)" run_on: ubuntu2004-large expansions: mongodb_version: "latest" - <<: *integration_matrix_expansions_linux - <<: *integration_matrix_tasks_replica + build_type: "Debug" + ENABLE_CODE_COVERAGE: ON + tasks: + - name: compile_and_test_with_shared_libs_replica_set_with_libmongocrypt - name: integration-ubuntu2004-8.0-replica display_name: "Ubuntu 20.04 Debug replica set (MongoDB 8.0)" run_on: ubuntu2004-large expansions: mongodb_version: "8.0" - <<: *integration_matrix_expansions_linux - <<: *integration_matrix_tasks_replica + build_type: "Debug" + ENABLE_CODE_COVERAGE: ON + tasks: + - name: compile_and_test_with_shared_libs_replica_set_with_libmongocrypt - name: integration-ubuntu2004-7.0-replica display_name: "Ubuntu 20.04 Debug replica set (MongoDB 7.0)" run_on: ubuntu2004-large expansions: mongodb_version: "7.0" - <<: *integration_matrix_expansions_linux - <<: *integration_matrix_tasks_replica + build_type: "Debug" + ENABLE_CODE_COVERAGE: ON + tasks: + - name: compile_and_test_with_shared_libs_replica_set_with_libmongocrypt - name: integration-ubuntu1804-6.0-replica display_name: "Ubuntu 18.04 Debug replica set (MongoDB 6.0)" run_on: ubuntu1804-large expansions: mongodb_version: "6.0" - <<: *integration_matrix_expansions_linux - <<: *integration_matrix_tasks_replica + build_type: "Debug" + ENABLE_CODE_COVERAGE: ON + tasks: + - name: compile_and_test_with_shared_libs_replica_set_with_libmongocrypt - name: integration-ubuntu1804-5.0-replica display_name: "Ubuntu 18.04 Debug replica set (MongoDB 5.0)" run_on: ubuntu1804-large expansions: mongodb_version: "5.0" - <<: *integration_matrix_expansions_linux - <<: *integration_matrix_tasks_replica + build_type: "Debug" + ENABLE_CODE_COVERAGE: ON + tasks: + - name: compile_and_test_with_shared_libs_replica_set_with_libmongocrypt - name: integration-ubuntu1804-4.4-replica display_name: "Ubuntu 18.04 Debug replica set (MongoDB 4.4)" run_on: ubuntu1804-large expansions: mongodb_version: "4.4" - <<: *integration_matrix_expansions_linux - <<: *integration_matrix_tasks_replica + build_type: "Debug" + ENABLE_CODE_COVERAGE: ON + tasks: + - name: compile_and_test_with_shared_libs_replica_set_with_libmongocrypt - name: integration-ubuntu1804-4.2-replica display_name: "Ubuntu 18.04 Debug replica set (MongoDB 4.2)" run_on: ubuntu1804-large expansions: mongodb_version: "4.2" - <<: *integration_matrix_expansions_linux - <<: *integration_matrix_tasks_replica + build_type: "Debug" + ENABLE_CODE_COVERAGE: ON + tasks: + - name: compile_and_test_with_shared_libs_replica_set_with_libmongocrypt - name: integration-ubuntu1804-4.0-replica display_name: "Ubuntu 18.04 Debug replica set (MongoDB 4.0)" run_on: ubuntu1804-large expansions: mongodb_version: "4.0" - <<: *integration_matrix_expansions_linux - <<: *integration_matrix_tasks_replica + build_type: "Debug" + ENABLE_CODE_COVERAGE: ON + tasks: + - name: compile_and_test_with_shared_libs_replica_set_with_libmongocrypt - name: integration-ubuntu2004-latest-sharded display_name: "Ubuntu 20.04 Debug sharded cluster (MongoDB Latest)" run_on: ubuntu2004-large expansions: mongodb_version: "latest" - <<: *integration_matrix_expansions_linux - <<: *integration_matrix_tasks_sharded + build_type: "Debug" + ENABLE_CODE_COVERAGE: ON + tasks: + - name: compile_and_test_with_shared_libs_sharded_cluster_with_libmongocrypt - name: integration-ubuntu2004-8.0-sharded display_name: "Ubuntu 20.04 Debug sharded cluster (MongoDB 8.0)" run_on: ubuntu2004-large expansions: mongodb_version: "8.0" - <<: *integration_matrix_expansions_linux - <<: *integration_matrix_tasks_sharded + build_type: "Debug" + ENABLE_CODE_COVERAGE: ON + tasks: + - name: compile_and_test_with_shared_libs_sharded_cluster_with_libmongocrypt - name: integration-ubuntu2004-7.0-sharded display_name: "Ubuntu 20.04 Debug sharded cluster (MongoDB 7.0)" run_on: ubuntu2004-large expansions: mongodb_version: "7.0" - <<: *integration_matrix_expansions_linux - <<: *integration_matrix_tasks_sharded + build_type: "Debug" + ENABLE_CODE_COVERAGE: ON + tasks: + - name: compile_and_test_with_shared_libs_sharded_cluster_with_libmongocrypt - name: integration-ubuntu1804-6.0-sharded display_name: "Ubuntu 18.04 Debug sharded cluster (MongoDB 6.0)" run_on: ubuntu1804-large expansions: mongodb_version: "6.0" - <<: *integration_matrix_expansions_linux - <<: *integration_matrix_tasks_sharded + build_type: "Debug" + ENABLE_CODE_COVERAGE: ON + tasks: + - name: compile_and_test_with_shared_libs_sharded_cluster_with_libmongocrypt - name: integration-ubuntu1804-5.0-sharded display_name: "Ubuntu 18.04 Debug sharded cluster (MongoDB 5.0)" run_on: ubuntu1804-large expansions: mongodb_version: "5.0" - <<: *integration_matrix_expansions_linux - <<: *integration_matrix_tasks_sharded + build_type: "Debug" + ENABLE_CODE_COVERAGE: ON + tasks: + - name: compile_and_test_with_shared_libs_sharded_cluster_with_libmongocrypt - name: integration-ubuntu1804-4.4-sharded display_name: "Ubuntu 18.04 Debug sharded cluster (MongoDB 4.4)" run_on: ubuntu1804-large expansions: mongodb_version: "4.4" - <<: *integration_matrix_expansions_linux - <<: *integration_matrix_tasks_sharded + build_type: "Debug" + ENABLE_CODE_COVERAGE: ON + tasks: + - name: compile_and_test_with_shared_libs_sharded_cluster_with_libmongocrypt - name: integration-ubuntu1804-4.2-sharded display_name: "Ubuntu 18.04 Debug sharded cluster (MongoDB 4.2)" run_on: ubuntu1804-large expansions: mongodb_version: "4.2" - <<: *integration_matrix_expansions_linux - <<: *integration_matrix_tasks_sharded + build_type: "Debug" + ENABLE_CODE_COVERAGE: ON + tasks: + - name: compile_and_test_with_shared_libs_sharded_cluster_with_libmongocrypt - name: integration-ubuntu1804-4.0-sharded display_name: "Ubuntu 18.04 Debug sharded cluster (MongoDB 4.0)" run_on: ubuntu1804-large expansions: mongodb_version: "4.0" - <<: *integration_matrix_expansions_linux - <<: *integration_matrix_tasks_sharded + build_type: "Debug" + ENABLE_CODE_COVERAGE: ON + tasks: + - name: compile_and_test_with_shared_libs_sharded_cluster_with_libmongocrypt - name: integration-auth-ubuntu2004-latest-single display_name: "Ubuntu 20.04 Debug Latest Auth" run_on: ubuntu2004-large expansions: mongodb_version: "latest" - <<: *integration_matrix_expansions_linux - <<: *integration_matrix_auth_tasks_single + build_type: "Debug" + ENABLE_CODE_COVERAGE: ON + tasks: + - name: compile_and_test_auth_with_shared_libs - name: integration-auth-vs2017-latest-single display_name: "Windows (VS 2017) Debug Latest Auth" run_on: windows-vsCurrent-large expansions: mongodb_version: "latest" - <<: *integration_matrix_expansions_windows_vs2017 - <<: *integration_matrix_auth_tasks_single + build_type: "Debug" # Same for Windows and Linux + generator: Visual Studio 15 2017 + platform: x64 + example_projects_cxx_standard: 17 + tasks: + - name: compile_and_test_auth_with_shared_libs - name: integration-auth-vs2019-latest-single display_name: "Windows (VS 2019) Debug Latest Auth" run_on: windows-vsCurrent-large expansions: mongodb_version: "latest" - <<: *integration_matrix_expansions_windows_vs2019 - <<: *integration_matrix_auth_tasks_single + build_type: "Debug" # Same for Windows and Linux + generator: Visual Studio 16 2019 + platform: x64 + example_projects_cxx_standard: 17 + tasks: + - name: compile_and_test_auth_with_shared_libs - name: integration-versioned-api-ubuntu2004-latest-single display_name: "Ubuntu 20.04 Debug Latest Versioned API" run_on: ubuntu2004-large expansions: mongodb_version: "latest" - <<: *integration_matrix_expansions_linux - <<: *integration_matrix_versioned_api_tasks_single + build_type: "Debug" + ENABLE_CODE_COVERAGE: ON + tasks: + - name: test_versioned_api + - name: test_versioned_api_accept_version_two - name: integration-versioned-api-vs2019-latest-single display_name: "Windows (VS 2019) Debug Latest Versioned API" run_on: windows-vsCurrent-large expansions: mongodb_version: "latest" - <<: *integration_matrix_expansions_windows_vs2019 - <<: *integration_matrix_versioned_api_tasks_single + build_type: "Debug" # Same for Windows and Linux + generator: Visual Studio 16 2019 + platform: x64 + example_projects_cxx_standard: 17 + tasks: + - name: test_versioned_api + - name: test_versioned_api_accept_version_two - name: integration-mongocryptd-ubuntu2004-latest display_name: "Ubuntu 20.04 Debug (MongoDB Latest) with mongocryptd" @@ -1683,8 +1760,12 @@ buildvariants: expansions: mongodb_version: "latest" use_mongocryptd: true - <<: *integration_matrix_expansions_linux - <<: *integration_matrix_mongocryptd_tasks + build_type: "Debug" + ENABLE_CODE_COVERAGE: ON + tasks: + # "Drivers MUST run all tests with mongocryptd on at least one platform for all tested server versions (4.2+)." + - name: compile_and_test_with_shared_libs_replica_set_with_libmongocrypt + - name: compile_and_test_with_shared_libs_sharded_cluster_with_libmongocrypt - name: integration-mongocryptd-ubuntu1804-5.0 display_name: "Ubuntu 18.04 Debug (MongoDB 5.0) with mongocryptd" @@ -1692,8 +1773,12 @@ buildvariants: expansions: mongodb_version: "5.0" use_mongocryptd: true - <<: *integration_matrix_expansions_linux - <<: *integration_matrix_mongocryptd_tasks + build_type: "Debug" + ENABLE_CODE_COVERAGE: ON + tasks: + # "Drivers MUST run all tests with mongocryptd on at least one platform for all tested server versions (4.2+)." + - name: compile_and_test_with_shared_libs_replica_set_with_libmongocrypt + - name: compile_and_test_with_shared_libs_sharded_cluster_with_libmongocrypt - name: integration-mongocryptd-ubuntu1804-4.4 display_name: "Ubuntu 18.04 Debug (MongoDB 4.4) with mongocryptd" @@ -1701,8 +1786,12 @@ buildvariants: expansions: mongodb_version: "4.4" use_mongocryptd: true - <<: *integration_matrix_expansions_linux - <<: *integration_matrix_mongocryptd_tasks + build_type: "Debug" + ENABLE_CODE_COVERAGE: ON + tasks: + # "Drivers MUST run all tests with mongocryptd on at least one platform for all tested server versions (4.2+)." + - name: compile_and_test_with_shared_libs_replica_set_with_libmongocrypt + - name: compile_and_test_with_shared_libs_sharded_cluster_with_libmongocrypt - name: integration-mongocryptd-ubuntu1804-4.2 display_name: "Ubuntu 18.04 Debug (MongoDB 4.2) with mongocryptd" @@ -1710,8 +1799,12 @@ buildvariants: expansions: mongodb_version: "4.2" use_mongocryptd: true - <<: *integration_matrix_expansions_linux - <<: *integration_matrix_mongocryptd_tasks + build_type: "Debug" + ENABLE_CODE_COVERAGE: ON + tasks: + # "Drivers MUST run all tests with mongocryptd on at least one platform for all tested server versions (4.2+)." + - name: compile_and_test_with_shared_libs_replica_set_with_libmongocrypt + - name: compile_and_test_with_shared_libs_sharded_cluster_with_libmongocrypt ####################################### # Linux Buildvariants # From 2651de8d7813bde1547efc3b28f266e6146f40c0 Mon Sep 17 00:00:00 2001 From: Ezra Chung Date: Tue, 29 Oct 2024 15:28:21 -0500 Subject: [PATCH 05/78] generator: import config_generator from C Driver --- .evergreen/config.yml | 32 +++ .../config_generator/components/stub.py | 23 ++ .evergreen/config_generator/etc/distros.py | 221 ++++++++++++++++++ .evergreen/config_generator/etc/function.py | 23 ++ .evergreen/config_generator/etc/utils.py | 182 +++++++++++++++ .evergreen/config_generator/generate.py | 30 +++ .../config_generator/generators/functions.py | 17 ++ .../generators/task_groups.py | 17 ++ .../config_generator/generators/tasks.py | 17 ++ .../config_generator/generators/variants.py | 17 ++ .evergreen/generated_configs/functions.yml | 1 + .evergreen/generated_configs/task_groups.yml | 1 + .evergreen/generated_configs/tasks.yml | 10 + .evergreen/generated_configs/variants.yml | 5 + pyproject.toml | 5 + uv.lock | 190 +++++++++++++++ 16 files changed, 791 insertions(+) create mode 100644 .evergreen/config.yml create mode 100644 .evergreen/config_generator/components/stub.py create mode 100644 .evergreen/config_generator/etc/distros.py create mode 100644 .evergreen/config_generator/etc/function.py create mode 100644 .evergreen/config_generator/etc/utils.py create mode 100644 .evergreen/config_generator/generate.py create mode 100644 .evergreen/config_generator/generators/functions.py create mode 100644 .evergreen/config_generator/generators/task_groups.py create mode 100644 .evergreen/config_generator/generators/tasks.py create mode 100644 .evergreen/config_generator/generators/variants.py create mode 100644 .evergreen/generated_configs/functions.yml create mode 100644 .evergreen/generated_configs/task_groups.yml create mode 100644 .evergreen/generated_configs/tasks.yml create mode 100644 .evergreen/generated_configs/variants.yml diff --git a/.evergreen/config.yml b/.evergreen/config.yml new file mode 100644 index 0000000000..ec7b33eb48 --- /dev/null +++ b/.evergreen/config.yml @@ -0,0 +1,32 @@ +# Default timeout for all tasks is 1 hour. +# May be overridden by individual tasks. +exec_timeout_secs: 3600 + +# Default command type is 'system' to indicate failures unrelated to tests or +# their setup. Most commands should define their type as 'setup' or 'test'. +# - setup: before test (lavendar). +# - test: during test (red). +# - system: after test (purple). +command_type: system + +# Ensure Evergreen tests earlier commits when a task fails. +stepback: true + +# Ensure failure in pre commands is also considered task failure. +pre_error_fails_task: true + +# Too many post commands are not designed to handle errors. +# TODO: set to true once failing post commands have been moved into +# teardown_group commands of appropriate task groups. +post_error_fails_task: false + +# Commands run after all tasks (excluding those in task groups). +# Use sparingly and ensure they are error-proof. +# TODO: move into teardown_group commands of appropriate task groups. +post: [] + +include: + - filename: .evergreen/generated_configs/functions.yml + - filename: .evergreen/generated_configs/task_groups.yml + - filename: .evergreen/generated_configs/tasks.yml + - filename: .evergreen/generated_configs/variants.yml diff --git a/.evergreen/config_generator/components/stub.py b/.evergreen/config_generator/components/stub.py new file mode 100644 index 0000000000..2906791341 --- /dev/null +++ b/.evergreen/config_generator/components/stub.py @@ -0,0 +1,23 @@ +from shrub.v3.evg_build_variant import BuildVariant +from shrub.v3.evg_command import subprocess_exec +from shrub.v3.evg_task import EvgTask + +TASKS = [ + EvgTask( + name='stub', + run_on='ubuntu2004-large', + commands=[subprocess_exec(binary='bash', args=['-c', 'true'])], + ), +] + +def tasks(): + return TASKS + +def variants(): + return [ + BuildVariant( + name='stub', + display_name='stub', + tasks=[task.get_task_ref() for task in TASKS], + ), + ] diff --git a/.evergreen/config_generator/etc/distros.py b/.evergreen/config_generator/etc/distros.py new file mode 100644 index 0000000000..2c142b6a9b --- /dev/null +++ b/.evergreen/config_generator/etc/distros.py @@ -0,0 +1,221 @@ +from typing import Literal + +from pydantic import BaseModel, validator +from packaging.version import Version + + +class Distro(BaseModel): + """ + Defines common properties of a given Evergreen distro. + + * name: Name of the distro. + * os: Name of the operating system. + * os_type: One of Linux, MacOS, or Windows. + * os_ver: Version of the operating system. + * vs_ver: Version of Visual Studio available. + * size: Size of tasks the distro is designed to handle. + * arch: Target architecture. + """ + + name: str + os: str | None = None + os_type: Literal['linux', 'macos', 'windows'] | None = None + os_ver: str | None = None + vs_ver: Literal[ + '2013', + '2015', + '2017', + '2019', + '2022', + 'vsCurrent', + 'vsCurrent2', + 'vsMulti', + ] | None = None + size: Literal['small', 'large'] | None = None + arch: Literal['arm64', 'power8', 'zseries'] | None = None + + @validator('os_ver') + @classmethod + def validate_os_ver(cls, value): + return Version(value) + +# See: https://evergreen.mongodb.com/distros +# pylint: disable=line-too-long +#fmt: off +DEBIAN_DISTROS = [ + Distro(name='debian10-large', os='debian', os_type='linux', os_ver='10', size='large'), + Distro(name='debian10-small', os='debian', os_type='linux', os_ver='10', size='small'), + Distro(name='debian11-large', os='debian', os_type='linux', os_ver='11', size='large'), + Distro(name='debian11-small', os='debian', os_type='linux', os_ver='11', size='small'), + Distro(name='debian92-large', os='debian', os_type='linux', os_ver='9.2', size='large'), + Distro(name='debian92-small', os='debian', os_type='linux', os_ver='9.2', size='small'), +] + +MACOS_DISTROS = [ + Distro(name='macos-1100', os='macos', os_type='macos', os_ver='11.00'), +] + +MACOS_ARM64_DISTROS = [ + Distro(name='macos-1100-arm64', os='macos', os_type='macos', os_ver='11.00', arch='arm64'), +] + +RHEL_DISTROS = [ + Distro(name='rhel80-large', os='rhel', os_type='linux', os_ver='8.0', size='large'), + Distro(name='rhel80-small', os='rhel', os_type='linux', os_ver='8.0', size='small'), + Distro(name='rhel84-large', os='rhel', os_type='linux', os_ver='8.4', size='large'), + Distro(name='rhel84-small', os='rhel', os_type='linux', os_ver='8.4', size='small'), + Distro(name='rhel8.9-large', os='rhel', os_type='linux', os_ver='8.7', size='large'), + Distro(name='rhel8.9-small', os='rhel', os_type='linux', os_ver='8.7', size='small'), + Distro(name='rhel92-large', os='rhel', os_type='linux', os_ver='9.0', size='large'), + Distro(name='rhel92-small', os='rhel', os_type='linux', os_ver='9.0', size='small'), +] + +RHEL_ARM64_DISTROS = [ + Distro(name='rhel82-arm64-large', os='rhel', os_type='linux', os_ver='8.2', size='large', arch='arm64'), + Distro(name='rhel82-arm64-small', os='rhel', os_type='linux', os_ver='8.2', size='small', arch='arm64'), + Distro(name='rhel92-arm64-large', os='rhel', os_type='linux', os_ver='9.0', size='large', arch='arm64'), + Distro(name='rhel92-arm64-small', os='rhel', os_type='linux', os_ver='9.0', size='small', arch='arm64'), +] + +RHEL_POWER8_DISTROS = [ + Distro(name='rhel81-power8-large', os='rhel', os_type='linux', os_ver='8.1', size='large', arch='power8'), + Distro(name='rhel81-power8-small', os='rhel', os_type='linux', os_ver='8.1', size='small', arch='power8'), +] + +RHEL_ZSERIES_DISTROS = [ + Distro(name='rhel83-zseries-large', os='rhel', os_type='linux', os_ver='8.3', size='large', arch='zseries'), + Distro(name='rhel83-zseries-small', os='rhel', os_type='linux', os_ver='8.3', size='small', arch='zseries'), +] + +UBUNTU_DISTROS = [ + Distro(name='ubuntu2004-large', os='ubuntu', os_type='linux', os_ver='20.04', size='large'), + Distro(name='ubuntu2004-small', os='ubuntu', os_type='linux', os_ver='20.04', size='small'), + Distro(name='ubuntu2204-large', os='ubuntu', os_type='linux', os_ver='22.04', size='large'), + Distro(name='ubuntu2204-small', os='ubuntu', os_type='linux', os_ver='22.04', size='small'), +] + +UBUNTU_ARM64_DISTROS = [ + Distro(name='ubuntu2004-arm64-large', os='ubuntu', os_type='linux', os_ver='20.04', size='large', arch='arm64'), + Distro(name='ubuntu2004-arm64-small', os='ubuntu', os_type='linux', os_ver='20.04', size='small', arch='arm64'), + Distro(name='ubuntu2204-arm64-large', os='ubuntu', os_type='linux', os_ver='22.04', size='large', arch='arm64'), + Distro(name='ubuntu2204-arm64-small', os='ubuntu', os_type='linux', os_ver='22.04', size='small', arch='arm64'), +] + +WINDOWS_DISTROS = [ + Distro(name='windows-64-vs2013-large', os='windows', os_type='windows', vs_ver='2013', size='large'), + Distro(name='windows-64-vs2013-small', os='windows', os_type='windows', vs_ver='2013', size='small'), + Distro(name='windows-64-vs2015-large', os='windows', os_type='windows', vs_ver='2015', size='large'), + Distro(name='windows-64-vs2015-small', os='windows', os_type='windows', vs_ver='2015', size='small'), + Distro(name='windows-64-vs2017-large', os='windows', os_type='windows', vs_ver='2017', size='large'), + Distro(name='windows-64-vs2017-small', os='windows', os_type='windows', vs_ver='2017', size='small'), + Distro(name='windows-64-vs2019-large', os='windows', os_type='windows', vs_ver='2019', size='large'), + Distro(name='windows-64-vs2019-small', os='windows', os_type='windows', vs_ver='2019', size='small'), + + Distro(name='windows-2022-large', os='windows', os_type='windows', os_ver='2022'), + Distro(name='windows-2022-small', os='windows', os_type='windows', os_ver='2022'), + + Distro(name='windows-64-2019', os='windows', os_type='windows', os_ver='2019'), + + Distro(name='windows-64-vsMulti-small', os='windows', os_type='windows', vs_ver='vsMulti', size='small'), + + Distro(name='windows-vsCurrent-2022-large', os='windows', os_type='windows', os_ver='2022', vs_ver='vsCurrent', size='large'), + Distro(name='windows-vsCurrent-2022-small', os='windows', os_type='windows', os_ver='2022', vs_ver='vsCurrent', size='small'), + + Distro(name='windows-vsCurrent-large', os='windows', os_type='windows', vs_ver='vsCurrent', size='large'), # Windows Server 2019 + Distro(name='windows-vsCurrent-small', os='windows', os_type='windows', vs_ver='vsCurrent', size='small'), # Windows Server 2019 +] +#fmt: on +# pylint: enable=line-too-long + +# Ensure no-arch distros are ordered before arch-specific distros. +ALL_DISTROS = [] + \ + DEBIAN_DISTROS + \ + MACOS_DISTROS + \ + MACOS_ARM64_DISTROS + \ + RHEL_DISTROS + \ + RHEL_ARM64_DISTROS + \ + RHEL_POWER8_DISTROS + \ + RHEL_ZSERIES_DISTROS + \ + UBUNTU_DISTROS + \ + UBUNTU_ARM64_DISTROS + \ + WINDOWS_DISTROS + + +def find_distro(name) -> Distro: + candidates = [d for d in ALL_DISTROS if name == d.name] + + if not candidates: + raise ValueError(f'could not find a distro with the name {name}') + + return candidates[0] + + +def find_large_distro(name) -> Distro: + candidates = [d for d in ALL_DISTROS if f'{name}-large' == d.name] + + if candidates: + return candidates[0] + + return find_distro(name) + + +def find_small_distro(name) -> Distro: + candidates = [d for d in ALL_DISTROS if f'{name}-small' == d.name] + + if candidates: + return candidates[0] + + return find_distro(name) + + +def make_distro_str(distro_name, compiler, arch) -> str: + if distro_name.startswith('windows-vsCurrent'): + # Rename `windows-vsCurrent-*` distros to `windows-` where`` + # is the Windows Server version used by the distro, e.g.: + # ('windows-vsCurrent-2022', 'vs2017x64', None) -> windows-2022-vs2017-x64 + # ('windows-vsCurrent-2022', 'mingw', None) -> windows-2022-mingw + # ('windows-vsCurrent', 'vs2017x64', None) -> windows-2019-vs2017-x64 + # ('windows-vsCurrent', 'mingw', None) -> windows-2019-mingw + maybe_arch = compiler[len('vs20XY'):] + if maybe_arch in ('x86', 'x64'): + compiler_str = compiler[:-len(maybe_arch)] + '-' + maybe_arch + else: + compiler_str = compiler + if distro_name.startswith('windows-vsCurrent-'): + distro_str = 'windows-' + \ + distro_name[len('windows-vsCurrent-'):] + f'-{compiler_str}' + else: + distro_str = 'windows-2019' + f'-{compiler_str}' + elif distro_name.startswith('windows-64-vs'): + # Abbreviate 'windows-64-vs' as 'vs' and append '-' if + # given in compiler string as 'vs', e.g.: + # ('windows-64-vs2017', 'vs2017x64', None) -> vs2017-x64 + # ('windows-64-vs2017', 'mingw', None) -> vs2017-mingw + distro_str = distro_name[len('windows-64-'):] + { + 'vs2013x64': '-x64', + 'vs2013x86': '-x86', + 'vs2015x64': '-x64', + 'vs2015x86': '-x86', + 'vs2017x64': '-x64', + 'vs2017x86': '-x86', + }.get(compiler, f'-{compiler}') + else: + distro_str = distro_name + if compiler: + distro_str += f'-{compiler}' + + if arch: + distro_str += f'-{arch}' + + return distro_str + + +def to_cc(compiler): + return { + 'vs2013x64': 'Visual Studio 12 2013 Win64', + 'vs2013x86': 'Visual Studio 12 2013', + 'vs2015x64': 'Visual Studio 14 2015 Win64', + 'vs2015x86': 'Visual Studio 14 2015', + 'vs2017x64': 'Visual Studio 15 2017 Win64', + 'vs2017x86': 'Visual Studio 15 2017', + }.get(compiler, compiler) diff --git a/.evergreen/config_generator/etc/function.py b/.evergreen/config_generator/etc/function.py new file mode 100644 index 0000000000..837590a252 --- /dev/null +++ b/.evergreen/config_generator/etc/function.py @@ -0,0 +1,23 @@ +from typing import ClassVar +from typing import Mapping +from collections import ChainMap + +from shrub.v3.evg_command import EvgCommand +from shrub.v3.evg_command import FunctionCall + + +class Function: + name: ClassVar[str] + commands: ClassVar[list[EvgCommand]] + + @classmethod + def defn(cls) -> Mapping[str, list[EvgCommand]]: + return {cls.name: cls.commands} + + @classmethod + def default_call(cls, **kwargs) -> FunctionCall: + return FunctionCall(func=cls.name, **kwargs) + + +def merge_defns(*args): + return ChainMap(*args) diff --git a/.evergreen/config_generator/etc/utils.py b/.evergreen/config_generator/etc/utils.py new file mode 100644 index 0000000000..0dd1832788 --- /dev/null +++ b/.evergreen/config_generator/etc/utils.py @@ -0,0 +1,182 @@ +import itertools +from importlib import import_module +from inspect import isclass +from pathlib import Path +from textwrap import dedent +from typing import (Any, Iterable, Literal, Mapping, Type, TypeVar, + Union, cast) + +import yaml +from shrub.v3.evg_command import EvgCommandType, subprocess_exec +from shrub.v3.evg_project import EvgProject +from shrub.v3.shrub_service import ConfigDumper +from shrub.v3.evg_task import EvgTaskRef +from typing_extensions import get_args, get_origin, get_type_hints + +T = TypeVar('T') + + +# Equivalent to EvgTaskRef but defines additional properties. +class TaskRef(EvgTaskRef): + """ + An evergreen task reference model that also includes additional properties. + + (The shrub.py model is missing some properties) + """ + + batchtime: int | None = None + + +# Automatically formats the provided script and invokes it in Bash. +def bash_exec( + script, + *, + include_expansions_in_env: Iterable[str] | None = None, + working_dir: str | None = None, + command_type: EvgCommandType | None = None, + retry_on_failure: bool | None = None, + env: Mapping[str, str] | None = None, + **kwargs, +): + ret = subprocess_exec( + binary="bash", + args=["-c", dedent(script)], + include_expansions_in_env=list(include_expansions_in_env) if include_expansions_in_env else None, + working_dir=working_dir, + command_type=command_type, + env=dict(env) if env else None, + **kwargs, + ) + + if retry_on_failure is not None: + ret.params |= {"retry_on_failure": retry_on_failure} + + return ret + + +def all_components(): + res = [] + + # .evergreen/config_generator/etc/utils.py -> .evergreen/config_generator/components + components_dir = Path(__file__).parent.parent / 'components' + + all_paths = components_dir.glob('**/*.py') + + for path in sorted(all_paths): + component_path = path.relative_to(components_dir) + component_str = str(component_path.with_suffix('')) # Drop '.py'. + component_str = component_str.replace('/', '.') # 'a/b' -> 'a.b' + module_name = f'config_generator.components.{component_str}' + res.append(import_module(module_name)) + + return res + + +# Helper function to print component name for diagnostic purposes. +def component_name(component): + component_prefix = 'config_generator.components.' + res = component.__name__[len(component_prefix):] + return res + + +def write_to_file(yml, filename): + # .evergreen/config_generator/etc/utils.py -> .evergreen + evergreen_dir = Path(__file__).parent.parent.parent + filename = evergreen_dir / 'generated_configs' / filename + + with open(filename.resolve(), 'w', encoding='utf-8') as file: + file.write(yml) + + +class Dumper(ConfigDumper): + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + + # List all tags on a single line. + self.FLOW_TAG_COUNT = float('inf') + + # Make an effort to order fields in a readable manner. + # Ordering applies to *all* mappings regardless of the parent node. + def represent_mapping(self, tag, mapping, flow_style=False): + if len(mapping) == 2 and 'key' in mapping and 'value' in mapping: + flow_style = True + + before = [ + 'name', + 'display_name', + 'command', + 'type', + 'run_on', + 'tags', + 'depends_on', + 'binary', + 'working_dir', + ] + + after = [ + 'commands', + 'args', + ] + + ordered = { + field: mapping.pop(field) for field in before if field in mapping + } + + suffix = { + field: mapping.pop(field) for field in after if field in mapping + } + + ordered.update(sorted(mapping.items())) + ordered.update(suffix) + + return self.represent_special_mapping(tag, ordered.items(), flow_style) + + +def to_yaml(project: EvgProject) -> str: + return yaml.dump( + project.dict(exclude_none=True, exclude_unset=True, by_alias=True), + Dumper=Dumper, + default_flow_style=False, + width=float('inf'), + ) + + +def all_possible(typ: Type[T]) -> Iterable[T]: + """ + Given a finite type, enumerate all possible values of that type. + The following are "finite" types: + + - Literal[...] types + - Union[...] of finite types + - NamedTuple where each field is a finite type + - None + """ + origin = get_origin(typ) + if typ is type(None): + yield cast(T, None) + elif origin is Literal: + # It is a literal type, so enumerate its literal operands + yield from get_args(typ) + return + elif origin == Union: + args = get_args(typ) + yield from itertools.chain.from_iterable(map(all_possible, args)) + elif isclass(typ) and issubclass(typ, tuple): + # Iter each NamedTuple field: + fields: Iterable[tuple[str, type]] = get_type_hints(typ).items() + # Generate lists of pairs of field names and their possible values + all_pairs: Iterable[Iterable[tuple[str, str]]] = ( + # Generate a (key, opt) pair for each option for 'key' + [(key, opt) for opt in all_possible(typ)] + # Over each field and type thereof: + for key, typ in fields + ) + # Now generate the cross product of all alternative for all fields: + matrix: Iterable[dict[str, Any]] = map(dict, itertools.product(*all_pairs)) + for items in matrix: + # Reconstruct as a NamedTuple: + yield typ(**items) # type: ignore + else: + raise TypeError( + f'Do not know how to do "all_possible" of type {typ!r} ({origin=})' + ) diff --git a/.evergreen/config_generator/generate.py b/.evergreen/config_generator/generate.py new file mode 100644 index 0000000000..8a17e1a6b2 --- /dev/null +++ b/.evergreen/config_generator/generate.py @@ -0,0 +1,30 @@ +#!/usr/bin/env python3 + + +import os +import sys + +from importlib import import_module + + +GENERATOR_NAMES = [ + "functions", + "tasks", + "task_groups", + "variants", +] + + +def main(): + # Permit `import config_generator.*` regardless of current working directory. + sys.path.append(os.path.join(os.path.dirname(__file__), '..')) + + for name in GENERATOR_NAMES: + m = import_module(f"config_generator.generators.{name}") + print(f"Running {name}.generate()...") + m.generate() + print(f"Running {name}.generate()... done.") + + +if __name__ == "__main__": + main() diff --git a/.evergreen/config_generator/generators/functions.py b/.evergreen/config_generator/generators/functions.py new file mode 100644 index 0000000000..43b2b244d1 --- /dev/null +++ b/.evergreen/config_generator/generators/functions.py @@ -0,0 +1,17 @@ +from shrub.v3.evg_project import EvgProject + +from config_generator.etc import utils + + +def generate(): + functions = {} + + for component in utils.all_components(): + if hasattr(component, 'functions'): + component_name = utils.component_name(component) + print(f' - {component_name}') + functions.update(component.functions()) + + functions = dict(sorted(functions.items())) + yml = utils.to_yaml(EvgProject(functions=functions)) + utils.write_to_file(yml, 'functions.yml') diff --git a/.evergreen/config_generator/generators/task_groups.py b/.evergreen/config_generator/generators/task_groups.py new file mode 100644 index 0000000000..9dc32d8bd4 --- /dev/null +++ b/.evergreen/config_generator/generators/task_groups.py @@ -0,0 +1,17 @@ +from shrub.v3.evg_project import EvgProject + +from config_generator.etc import utils + + +def generate(): + task_groups = [] + + for component in utils.all_components(): + if hasattr(component, 'task_groups'): + component_name = utils.component_name(component) + print(f' - {component_name}') + task_groups += component.task_groups() + + task_groups.sort(key=lambda v: v.name) + yaml = utils.to_yaml(EvgProject(task_groups=task_groups)) + utils.write_to_file(yaml, 'task_groups.yml') diff --git a/.evergreen/config_generator/generators/tasks.py b/.evergreen/config_generator/generators/tasks.py new file mode 100644 index 0000000000..edbc8b5c5a --- /dev/null +++ b/.evergreen/config_generator/generators/tasks.py @@ -0,0 +1,17 @@ +from shrub.v3.evg_project import EvgProject + +from config_generator.etc import utils + + +def generate(): + tasks = [] + + for component in utils.all_components(): + if hasattr(component, 'tasks'): + component_name = utils.component_name(component) + print(f' - {component_name}') + tasks += component.tasks() + + tasks.sort(key=lambda v: v.name) + yaml = utils.to_yaml(EvgProject(tasks=tasks)) + utils.write_to_file(yaml, 'tasks.yml') diff --git a/.evergreen/config_generator/generators/variants.py b/.evergreen/config_generator/generators/variants.py new file mode 100644 index 0000000000..678c66bd6c --- /dev/null +++ b/.evergreen/config_generator/generators/variants.py @@ -0,0 +1,17 @@ +from shrub.v3.evg_project import EvgProject + +from config_generator.etc import utils + + +def generate(): + variants = [] + + for component in utils.all_components(): + if hasattr(component, 'variants'): + component_name = utils.component_name(component) + print(f' - {component_name}') + variants += component.variants() + + variants.sort(key=lambda v: v.name) + yaml = utils.to_yaml(EvgProject(buildvariants=variants)) + utils.write_to_file(yaml, 'variants.yml') diff --git a/.evergreen/generated_configs/functions.yml b/.evergreen/generated_configs/functions.yml new file mode 100644 index 0000000000..71f637df88 --- /dev/null +++ b/.evergreen/generated_configs/functions.yml @@ -0,0 +1 @@ +functions: {} diff --git a/.evergreen/generated_configs/task_groups.yml b/.evergreen/generated_configs/task_groups.yml new file mode 100644 index 0000000000..96d97eada4 --- /dev/null +++ b/.evergreen/generated_configs/task_groups.yml @@ -0,0 +1 @@ +task_groups: [] diff --git a/.evergreen/generated_configs/tasks.yml b/.evergreen/generated_configs/tasks.yml new file mode 100644 index 0000000000..0562668317 --- /dev/null +++ b/.evergreen/generated_configs/tasks.yml @@ -0,0 +1,10 @@ +tasks: + - name: stub + run_on: ubuntu2004-large + commands: + - command: subprocess.exec + params: + binary: bash + args: + - -c + - "true" diff --git a/.evergreen/generated_configs/variants.yml b/.evergreen/generated_configs/variants.yml new file mode 100644 index 0000000000..3c7465e784 --- /dev/null +++ b/.evergreen/generated_configs/variants.yml @@ -0,0 +1,5 @@ +buildvariants: + - name: stub + display_name: stub + tasks: + - name: stub diff --git a/pyproject.toml b/pyproject.toml index ee2550b2df..2c8b3e7b39 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -7,6 +7,11 @@ dependencies = [] [dependency-groups] dev = [ + # .evergreen/config_generator/generate.py + "packaging>=14.0", + "pydantic>=2.7", + "shrub-py>=3.3.1", + # etc/make_release.py "click>=6.0", "gitpython>=3.1", diff --git a/uv.lock b/uv.lock index 8404e95d79..8cec220568 100644 --- a/uv.lock +++ b/uv.lock @@ -1,5 +1,18 @@ version = 1 requires-python = ">=3.10" +resolution-markers = [ + "python_full_version < '3.13'", + "python_full_version >= '3.13'", +] + +[[package]] +name = "annotated-types" +version = "0.7.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/ee/67/531ea369ba64dcff5ec9c3402f9f51bf748cec26dde048a2f973a4eea7f5/annotated_types-0.7.0.tar.gz", hash = "sha256:aff07c09a53a08bc8cfccb9c85b05f1aa9a2a6f23728d790723543408344ce89", size = 16081 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/78/b6/6307fbef88d9b5ee7421e68d78a9f162e0da4900bc5f5793f6d3d0e34fb8/annotated_types-0.7.0-py3-none-any.whl", hash = "sha256:1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53", size = 13643 }, +] [[package]] name = "beautifulsoup4" @@ -169,6 +182,18 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6", size = 25335 }, ] +[[package]] +name = "croniter" +version = "1.4.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "python-dateutil" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/96/56/f8500161d9ab57ea5ad29c203b85989f87af13a367b3178ade0cd34d8d3a/croniter-1.4.1.tar.gz", hash = "sha256:1a6df60eacec3b7a0aa52a8f2ef251ae3dd2a7c7c8b9874e73e791636d55a361", size = 42301 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f2/91/e5ae454da8200c6eb6cf94ca05d799b51e2cb2cc458a7737aebc0c5a21bb/croniter-1.4.1-py2.py3-none-any.whl", hash = "sha256:9595da48af37ea06ec3a9f899738f1b2c1c13da3c38cea606ef7cd03ea421128", size = 19579 }, +] + [[package]] name = "cryptography" version = "43.0.3" @@ -296,7 +321,9 @@ dev = [ { name = "jira" }, { name = "looseversion" }, { name = "packaging" }, + { name = "pydantic" }, { name = "pygithub" }, + { name = "shrub-py" }, ] [package.metadata] @@ -309,7 +336,9 @@ dev = [ { name = "jira", specifier = ">=3.1" }, { name = "looseversion", specifier = ">=1.3" }, { name = "packaging", specifier = ">=14.0" }, + { name = "pydantic", specifier = ">=2.7" }, { name = "pygithub", specifier = ">=2.0" }, + { name = "shrub-py", specifier = ">=3.3.1" }, ] [[package]] @@ -406,6 +435,87 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/13/a3/a812df4e2dd5696d1f351d58b8fe16a405b234ad2886a0dab9183fb78109/pycparser-2.22-py3-none-any.whl", hash = "sha256:c3702b6d3dd8c7abc1afa565d7e63d53a1d0bd86cdc24edd75470f4de499cfcc", size = 117552 }, ] +[[package]] +name = "pydantic" +version = "2.9.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "annotated-types" }, + { name = "pydantic-core" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/a9/b7/d9e3f12af310e1120c21603644a1cd86f59060e040ec5c3a80b8f05fae30/pydantic-2.9.2.tar.gz", hash = "sha256:d155cef71265d1e9807ed1c32b4c8deec042a44a50a4188b25ac67ecd81a9c0f", size = 769917 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/df/e4/ba44652d562cbf0bf320e0f3810206149c8a4e99cdbf66da82e97ab53a15/pydantic-2.9.2-py3-none-any.whl", hash = "sha256:f048cec7b26778210e28a0459867920654d48e5e62db0958433636cde4254f12", size = 434928 }, +] + +[[package]] +name = "pydantic-core" +version = "2.23.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/e2/aa/6b6a9b9f8537b872f552ddd46dd3da230367754b6f707b8e1e963f515ea3/pydantic_core-2.23.4.tar.gz", hash = "sha256:2584f7cf844ac4d970fba483a717dbe10c1c1c96a969bf65d61ffe94df1b2863", size = 402156 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5c/8b/d3ae387f66277bd8104096d6ec0a145f4baa2966ebb2cad746c0920c9526/pydantic_core-2.23.4-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:b10bd51f823d891193d4717448fab065733958bdb6a6b351967bd349d48d5c9b", size = 1867835 }, + { url = "https://files.pythonhosted.org/packages/46/76/f68272e4c3a7df8777798282c5e47d508274917f29992d84e1898f8908c7/pydantic_core-2.23.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:4fc714bdbfb534f94034efaa6eadd74e5b93c8fa6315565a222f7b6f42ca1166", size = 1776689 }, + { url = "https://files.pythonhosted.org/packages/cc/69/5f945b4416f42ea3f3bc9d2aaec66c76084a6ff4ff27555bf9415ab43189/pydantic_core-2.23.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:63e46b3169866bd62849936de036f901a9356e36376079b05efa83caeaa02ceb", size = 1800748 }, + { url = "https://files.pythonhosted.org/packages/50/ab/891a7b0054bcc297fb02d44d05c50e68154e31788f2d9d41d0b72c89fdf7/pydantic_core-2.23.4-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ed1a53de42fbe34853ba90513cea21673481cd81ed1be739f7f2efb931b24916", size = 1806469 }, + { url = "https://files.pythonhosted.org/packages/31/7c/6e3fa122075d78f277a8431c4c608f061881b76c2b7faca01d317ee39b5d/pydantic_core-2.23.4-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:cfdd16ab5e59fc31b5e906d1a3f666571abc367598e3e02c83403acabc092e07", size = 2002246 }, + { url = "https://files.pythonhosted.org/packages/ad/6f/22d5692b7ab63fc4acbc74de6ff61d185804a83160adba5e6cc6068e1128/pydantic_core-2.23.4-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:255a8ef062cbf6674450e668482456abac99a5583bbafb73f9ad469540a3a232", size = 2659404 }, + { url = "https://files.pythonhosted.org/packages/11/ac/1e647dc1121c028b691028fa61a4e7477e6aeb5132628fde41dd34c1671f/pydantic_core-2.23.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4a7cd62e831afe623fbb7aabbb4fe583212115b3ef38a9f6b71869ba644624a2", size = 2053940 }, + { url = "https://files.pythonhosted.org/packages/91/75/984740c17f12c3ce18b5a2fcc4bdceb785cce7df1511a4ce89bca17c7e2d/pydantic_core-2.23.4-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f09e2ff1f17c2b51f2bc76d1cc33da96298f0a036a137f5440ab3ec5360b624f", size = 1921437 }, + { url = "https://files.pythonhosted.org/packages/a0/74/13c5f606b64d93f0721e7768cd3e8b2102164866c207b8cd6f90bb15d24f/pydantic_core-2.23.4-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:e38e63e6f3d1cec5a27e0afe90a085af8b6806ee208b33030e65b6516353f1a3", size = 1966129 }, + { url = "https://files.pythonhosted.org/packages/18/03/9c4aa5919457c7b57a016c1ab513b1a926ed9b2bb7915bf8e506bf65c34b/pydantic_core-2.23.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:0dbd8dbed2085ed23b5c04afa29d8fd2771674223135dc9bc937f3c09284d071", size = 2110908 }, + { url = "https://files.pythonhosted.org/packages/92/2c/053d33f029c5dc65e5cf44ff03ceeefb7cce908f8f3cca9265e7f9b540c8/pydantic_core-2.23.4-cp310-none-win32.whl", hash = "sha256:6531b7ca5f951d663c339002e91aaebda765ec7d61b7d1e3991051906ddde119", size = 1735278 }, + { url = "https://files.pythonhosted.org/packages/de/81/7dfe464eca78d76d31dd661b04b5f2036ec72ea8848dd87ab7375e185c23/pydantic_core-2.23.4-cp310-none-win_amd64.whl", hash = "sha256:7c9129eb40958b3d4500fa2467e6a83356b3b61bfff1b414c7361d9220f9ae8f", size = 1917453 }, + { url = "https://files.pythonhosted.org/packages/5d/30/890a583cd3f2be27ecf32b479d5d615710bb926d92da03e3f7838ff3e58b/pydantic_core-2.23.4-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:77733e3892bb0a7fa797826361ce8a9184d25c8dffaec60b7ffe928153680ba8", size = 1865160 }, + { url = "https://files.pythonhosted.org/packages/1d/9a/b634442e1253bc6889c87afe8bb59447f106ee042140bd57680b3b113ec7/pydantic_core-2.23.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:1b84d168f6c48fabd1f2027a3d1bdfe62f92cade1fb273a5d68e621da0e44e6d", size = 1776777 }, + { url = "https://files.pythonhosted.org/packages/75/9a/7816295124a6b08c24c96f9ce73085032d8bcbaf7e5a781cd41aa910c891/pydantic_core-2.23.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:df49e7a0861a8c36d089c1ed57d308623d60416dab2647a4a17fe050ba85de0e", size = 1799244 }, + { url = "https://files.pythonhosted.org/packages/a9/8f/89c1405176903e567c5f99ec53387449e62f1121894aa9fc2c4fdc51a59b/pydantic_core-2.23.4-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ff02b6d461a6de369f07ec15e465a88895f3223eb75073ffea56b84d9331f607", size = 1805307 }, + { url = "https://files.pythonhosted.org/packages/d5/a5/1a194447d0da1ef492e3470680c66048fef56fc1f1a25cafbea4bc1d1c48/pydantic_core-2.23.4-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:996a38a83508c54c78a5f41456b0103c30508fed9abcad0a59b876d7398f25fd", size = 2000663 }, + { url = "https://files.pythonhosted.org/packages/13/a5/1df8541651de4455e7d587cf556201b4f7997191e110bca3b589218745a5/pydantic_core-2.23.4-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d97683ddee4723ae8c95d1eddac7c192e8c552da0c73a925a89fa8649bf13eea", size = 2655941 }, + { url = "https://files.pythonhosted.org/packages/44/31/a3899b5ce02c4316865e390107f145089876dff7e1dfc770a231d836aed8/pydantic_core-2.23.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:216f9b2d7713eb98cb83c80b9c794de1f6b7e3145eef40400c62e86cee5f4e1e", size = 2052105 }, + { url = "https://files.pythonhosted.org/packages/1b/aa/98e190f8745d5ec831f6d5449344c48c0627ac5fed4e5340a44b74878f8e/pydantic_core-2.23.4-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:6f783e0ec4803c787bcea93e13e9932edab72068f68ecffdf86a99fd5918878b", size = 1919967 }, + { url = "https://files.pythonhosted.org/packages/ae/35/b6e00b6abb2acfee3e8f85558c02a0822e9a8b2f2d812ea8b9079b118ba0/pydantic_core-2.23.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:d0776dea117cf5272382634bd2a5c1b6eb16767c223c6a5317cd3e2a757c61a0", size = 1964291 }, + { url = "https://files.pythonhosted.org/packages/13/46/7bee6d32b69191cd649bbbd2361af79c472d72cb29bb2024f0b6e350ba06/pydantic_core-2.23.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:d5f7a395a8cf1621939692dba2a6b6a830efa6b3cee787d82c7de1ad2930de64", size = 2109666 }, + { url = "https://files.pythonhosted.org/packages/39/ef/7b34f1b122a81b68ed0a7d0e564da9ccdc9a2924c8d6c6b5b11fa3a56970/pydantic_core-2.23.4-cp311-none-win32.whl", hash = "sha256:74b9127ffea03643e998e0c5ad9bd3811d3dac8c676e47db17b0ee7c3c3bf35f", size = 1732940 }, + { url = "https://files.pythonhosted.org/packages/2f/76/37b7e76c645843ff46c1d73e046207311ef298d3f7b2f7d8f6ac60113071/pydantic_core-2.23.4-cp311-none-win_amd64.whl", hash = "sha256:98d134c954828488b153d88ba1f34e14259284f256180ce659e8d83e9c05eaa3", size = 1916804 }, + { url = "https://files.pythonhosted.org/packages/74/7b/8e315f80666194b354966ec84b7d567da77ad927ed6323db4006cf915f3f/pydantic_core-2.23.4-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:f3e0da4ebaef65158d4dfd7d3678aad692f7666877df0002b8a522cdf088f231", size = 1856459 }, + { url = "https://files.pythonhosted.org/packages/14/de/866bdce10ed808323d437612aca1ec9971b981e1c52e5e42ad9b8e17a6f6/pydantic_core-2.23.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:f69a8e0b033b747bb3e36a44e7732f0c99f7edd5cea723d45bc0d6e95377ffee", size = 1770007 }, + { url = "https://files.pythonhosted.org/packages/dc/69/8edd5c3cd48bb833a3f7ef9b81d7666ccddd3c9a635225214e044b6e8281/pydantic_core-2.23.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:723314c1d51722ab28bfcd5240d858512ffd3116449c557a1336cbe3919beb87", size = 1790245 }, + { url = "https://files.pythonhosted.org/packages/80/33/9c24334e3af796ce80d2274940aae38dd4e5676298b4398eff103a79e02d/pydantic_core-2.23.4-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:bb2802e667b7051a1bebbfe93684841cc9351004e2badbd6411bf357ab8d5ac8", size = 1801260 }, + { url = "https://files.pythonhosted.org/packages/a5/6f/e9567fd90104b79b101ca9d120219644d3314962caa7948dd8b965e9f83e/pydantic_core-2.23.4-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d18ca8148bebe1b0a382a27a8ee60350091a6ddaf475fa05ef50dc35b5df6327", size = 1996872 }, + { url = "https://files.pythonhosted.org/packages/2d/ad/b5f0fe9e6cfee915dd144edbd10b6e9c9c9c9d7a56b69256d124b8ac682e/pydantic_core-2.23.4-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:33e3d65a85a2a4a0dc3b092b938a4062b1a05f3a9abde65ea93b233bca0e03f2", size = 2661617 }, + { url = "https://files.pythonhosted.org/packages/06/c8/7d4b708f8d05a5cbfda3243aad468052c6e99de7d0937c9146c24d9f12e9/pydantic_core-2.23.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:128585782e5bfa515c590ccee4b727fb76925dd04a98864182b22e89a4e6ed36", size = 2071831 }, + { url = "https://files.pythonhosted.org/packages/89/4d/3079d00c47f22c9a9a8220db088b309ad6e600a73d7a69473e3a8e5e3ea3/pydantic_core-2.23.4-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:68665f4c17edcceecc112dfed5dbe6f92261fb9d6054b47d01bf6371a6196126", size = 1917453 }, + { url = "https://files.pythonhosted.org/packages/e9/88/9df5b7ce880a4703fcc2d76c8c2d8eb9f861f79d0c56f4b8f5f2607ccec8/pydantic_core-2.23.4-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:20152074317d9bed6b7a95ade3b7d6054845d70584216160860425f4fbd5ee9e", size = 1968793 }, + { url = "https://files.pythonhosted.org/packages/e3/b9/41f7efe80f6ce2ed3ee3c2dcfe10ab7adc1172f778cc9659509a79518c43/pydantic_core-2.23.4-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:9261d3ce84fa1d38ed649c3638feefeae23d32ba9182963e465d58d62203bd24", size = 2116872 }, + { url = "https://files.pythonhosted.org/packages/63/08/b59b7a92e03dd25554b0436554bf23e7c29abae7cce4b1c459cd92746811/pydantic_core-2.23.4-cp312-none-win32.whl", hash = "sha256:4ba762ed58e8d68657fc1281e9bb72e1c3e79cc5d464be146e260c541ec12d84", size = 1738535 }, + { url = "https://files.pythonhosted.org/packages/88/8d/479293e4d39ab409747926eec4329de5b7129beaedc3786eca070605d07f/pydantic_core-2.23.4-cp312-none-win_amd64.whl", hash = "sha256:97df63000f4fea395b2824da80e169731088656d1818a11b95f3b173747b6cd9", size = 1917992 }, + { url = "https://files.pythonhosted.org/packages/ad/ef/16ee2df472bf0e419b6bc68c05bf0145c49247a1095e85cee1463c6a44a1/pydantic_core-2.23.4-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:7530e201d10d7d14abce4fb54cfe5b94a0aefc87da539d0346a484ead376c3cc", size = 1856143 }, + { url = "https://files.pythonhosted.org/packages/da/fa/bc3dbb83605669a34a93308e297ab22be82dfb9dcf88c6cf4b4f264e0a42/pydantic_core-2.23.4-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:df933278128ea1cd77772673c73954e53a1c95a4fdf41eef97c2b779271bd0bd", size = 1770063 }, + { url = "https://files.pythonhosted.org/packages/4e/48/e813f3bbd257a712303ebdf55c8dc46f9589ec74b384c9f652597df3288d/pydantic_core-2.23.4-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0cb3da3fd1b6a5d0279a01877713dbda118a2a4fc6f0d821a57da2e464793f05", size = 1790013 }, + { url = "https://files.pythonhosted.org/packages/b4/e0/56eda3a37929a1d297fcab1966db8c339023bcca0b64c5a84896db3fcc5c/pydantic_core-2.23.4-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:42c6dcb030aefb668a2b7009c85b27f90e51e6a3b4d5c9bc4c57631292015b0d", size = 1801077 }, + { url = "https://files.pythonhosted.org/packages/04/be/5e49376769bfbf82486da6c5c1683b891809365c20d7c7e52792ce4c71f3/pydantic_core-2.23.4-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:696dd8d674d6ce621ab9d45b205df149399e4bb9aa34102c970b721554828510", size = 1996782 }, + { url = "https://files.pythonhosted.org/packages/bc/24/e3ee6c04f1d58cc15f37bcc62f32c7478ff55142b7b3e6d42ea374ea427c/pydantic_core-2.23.4-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2971bb5ffe72cc0f555c13e19b23c85b654dd2a8f7ab493c262071377bfce9f6", size = 2661375 }, + { url = "https://files.pythonhosted.org/packages/c1/f8/11a9006de4e89d016b8de74ebb1db727dc100608bb1e6bbe9d56a3cbbcce/pydantic_core-2.23.4-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8394d940e5d400d04cad4f75c0598665cbb81aecefaca82ca85bd28264af7f9b", size = 2071635 }, + { url = "https://files.pythonhosted.org/packages/7c/45/bdce5779b59f468bdf262a5bc9eecbae87f271c51aef628d8c073b4b4b4c/pydantic_core-2.23.4-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:0dff76e0602ca7d4cdaacc1ac4c005e0ce0dcfe095d5b5259163a80d3a10d327", size = 1916994 }, + { url = "https://files.pythonhosted.org/packages/d8/fa/c648308fe711ee1f88192cad6026ab4f925396d1293e8356de7e55be89b5/pydantic_core-2.23.4-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:7d32706badfe136888bdea71c0def994644e09fff0bfe47441deaed8e96fdbc6", size = 1968877 }, + { url = "https://files.pythonhosted.org/packages/16/16/b805c74b35607d24d37103007f899abc4880923b04929547ae68d478b7f4/pydantic_core-2.23.4-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:ed541d70698978a20eb63d8c5d72f2cc6d7079d9d90f6b50bad07826f1320f5f", size = 2116814 }, + { url = "https://files.pythonhosted.org/packages/d1/58/5305e723d9fcdf1c5a655e6a4cc2a07128bf644ff4b1d98daf7a9dbf57da/pydantic_core-2.23.4-cp313-none-win32.whl", hash = "sha256:3d5639516376dce1940ea36edf408c554475369f5da2abd45d44621cb616f769", size = 1738360 }, + { url = "https://files.pythonhosted.org/packages/a5/ae/e14b0ff8b3f48e02394d8acd911376b7b66e164535687ef7dc24ea03072f/pydantic_core-2.23.4-cp313-none-win_amd64.whl", hash = "sha256:5a1504ad17ba4210df3a045132a7baeeba5a200e930f57512ee02909fc5c4cb5", size = 1919411 }, + { url = "https://files.pythonhosted.org/packages/13/a9/5d582eb3204464284611f636b55c0a7410d748ff338756323cb1ce721b96/pydantic_core-2.23.4-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:f455ee30a9d61d3e1a15abd5068827773d6e4dc513e795f380cdd59932c782d5", size = 1857135 }, + { url = "https://files.pythonhosted.org/packages/2c/57/faf36290933fe16717f97829eabfb1868182ac495f99cf0eda9f59687c9d/pydantic_core-2.23.4-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:1e90d2e3bd2c3863d48525d297cd143fe541be8bbf6f579504b9712cb6b643ec", size = 1740583 }, + { url = "https://files.pythonhosted.org/packages/91/7c/d99e3513dc191c4fec363aef1bf4c8af9125d8fa53af7cb97e8babef4e40/pydantic_core-2.23.4-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2e203fdf807ac7e12ab59ca2bfcabb38c7cf0b33c41efeb00f8e5da1d86af480", size = 1793637 }, + { url = "https://files.pythonhosted.org/packages/29/18/812222b6d18c2d13eebbb0f7cdc170a408d9ced65794fdb86147c77e1982/pydantic_core-2.23.4-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e08277a400de01bc72436a0ccd02bdf596631411f592ad985dcee21445bd0068", size = 1941963 }, + { url = "https://files.pythonhosted.org/packages/0f/36/c1f3642ac3f05e6bb4aec3ffc399fa3f84895d259cf5f0ce3054b7735c29/pydantic_core-2.23.4-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f220b0eea5965dec25480b6333c788fb72ce5f9129e8759ef876a1d805d00801", size = 1915332 }, + { url = "https://files.pythonhosted.org/packages/f7/ca/9c0854829311fb446020ebb540ee22509731abad886d2859c855dd29b904/pydantic_core-2.23.4-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:d06b0c8da4f16d1d1e352134427cb194a0a6e19ad5db9161bf32b2113409e728", size = 1957926 }, + { url = "https://files.pythonhosted.org/packages/c0/1c/7836b67c42d0cd4441fcd9fafbf6a027ad4b79b6559f80cf11f89fd83648/pydantic_core-2.23.4-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:ba1a0996f6c2773bd83e63f18914c1de3c9dd26d55f4ac302a7efe93fb8e7433", size = 2100342 }, + { url = "https://files.pythonhosted.org/packages/a9/f9/b6bcaf874f410564a78908739c80861a171788ef4d4f76f5009656672dfe/pydantic_core-2.23.4-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:9a5bce9d23aac8f0cf0836ecfc033896aa8443b501c58d0602dbfd5bd5b37753", size = 1920344 }, +] + [[package]] name = "pygithub" version = "2.4.0" @@ -457,6 +567,62 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/5e/22/d3db169895faaf3e2eda892f005f433a62db2decbcfbc2f61e6517adfa87/PyNaCl-1.5.0-cp36-abi3-win_amd64.whl", hash = "sha256:20f42270d27e1b6a29f54032090b972d97f0a1b0948cc52392041ef7831fee93", size = 212141 }, ] +[[package]] +name = "python-dateutil" +version = "2.9.0.post0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "six" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/66/c0/0c8b6ad9f17a802ee498c46e004a0eb49bc148f2fd230864601a86dcf6db/python-dateutil-2.9.0.post0.tar.gz", hash = "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3", size = 342432 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ec/57/56b9bcc3c9c6a792fcbaf139543cee77261f3651ca9da0c93f5c1221264b/python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427", size = 229892 }, +] + +[[package]] +name = "pyyaml" +version = "6.0.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/54/ed/79a089b6be93607fa5cdaedf301d7dfb23af5f25c398d5ead2525b063e17/pyyaml-6.0.2.tar.gz", hash = "sha256:d584d9ec91ad65861cc08d42e834324ef890a082e591037abe114850ff7bbc3e", size = 130631 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9b/95/a3fac87cb7158e231b5a6012e438c647e1a87f09f8e0d123acec8ab8bf71/PyYAML-6.0.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0a9a2848a5b7feac301353437eb7d5957887edbf81d56e903999a75a3d743086", size = 184199 }, + { url = "https://files.pythonhosted.org/packages/c7/7a/68bd47624dab8fd4afbfd3c48e3b79efe09098ae941de5b58abcbadff5cb/PyYAML-6.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:29717114e51c84ddfba879543fb232a6ed60086602313ca38cce623c1d62cfbf", size = 171758 }, + { url = "https://files.pythonhosted.org/packages/49/ee/14c54df452143b9ee9f0f29074d7ca5516a36edb0b4cc40c3f280131656f/PyYAML-6.0.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8824b5a04a04a047e72eea5cec3bc266db09e35de6bdfe34c9436ac5ee27d237", size = 718463 }, + { url = "https://files.pythonhosted.org/packages/4d/61/de363a97476e766574650d742205be468921a7b532aa2499fcd886b62530/PyYAML-6.0.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7c36280e6fb8385e520936c3cb3b8042851904eba0e58d277dca80a5cfed590b", size = 719280 }, + { url = "https://files.pythonhosted.org/packages/6b/4e/1523cb902fd98355e2e9ea5e5eb237cbc5f3ad5f3075fa65087aa0ecb669/PyYAML-6.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ec031d5d2feb36d1d1a24380e4db6d43695f3748343d99434e6f5f9156aaa2ed", size = 751239 }, + { url = "https://files.pythonhosted.org/packages/b7/33/5504b3a9a4464893c32f118a9cc045190a91637b119a9c881da1cf6b7a72/PyYAML-6.0.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:936d68689298c36b53b29f23c6dbb74de12b4ac12ca6cfe0e047bedceea56180", size = 695802 }, + { url = "https://files.pythonhosted.org/packages/5c/20/8347dcabd41ef3a3cdc4f7b7a2aff3d06598c8779faa189cdbf878b626a4/PyYAML-6.0.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:23502f431948090f597378482b4812b0caae32c22213aecf3b55325e049a6c68", size = 720527 }, + { url = "https://files.pythonhosted.org/packages/be/aa/5afe99233fb360d0ff37377145a949ae258aaab831bde4792b32650a4378/PyYAML-6.0.2-cp310-cp310-win32.whl", hash = "sha256:2e99c6826ffa974fe6e27cdb5ed0021786b03fc98e5ee3c5bfe1fd5015f42b99", size = 144052 }, + { url = "https://files.pythonhosted.org/packages/b5/84/0fa4b06f6d6c958d207620fc60005e241ecedceee58931bb20138e1e5776/PyYAML-6.0.2-cp310-cp310-win_amd64.whl", hash = "sha256:a4d3091415f010369ae4ed1fc6b79def9416358877534caf6a0fdd2146c87a3e", size = 161774 }, + { url = "https://files.pythonhosted.org/packages/f8/aa/7af4e81f7acba21a4c6be026da38fd2b872ca46226673c89a758ebdc4fd2/PyYAML-6.0.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:cc1c1159b3d456576af7a3e4d1ba7e6924cb39de8f67111c735f6fc832082774", size = 184612 }, + { url = "https://files.pythonhosted.org/packages/8b/62/b9faa998fd185f65c1371643678e4d58254add437edb764a08c5a98fb986/PyYAML-6.0.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:1e2120ef853f59c7419231f3bf4e7021f1b936f6ebd222406c3b60212205d2ee", size = 172040 }, + { url = "https://files.pythonhosted.org/packages/ad/0c/c804f5f922a9a6563bab712d8dcc70251e8af811fce4524d57c2c0fd49a4/PyYAML-6.0.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5d225db5a45f21e78dd9358e58a98702a0302f2659a3c6cd320564b75b86f47c", size = 736829 }, + { url = "https://files.pythonhosted.org/packages/51/16/6af8d6a6b210c8e54f1406a6b9481febf9c64a3109c541567e35a49aa2e7/PyYAML-6.0.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5ac9328ec4831237bec75defaf839f7d4564be1e6b25ac710bd1a96321cc8317", size = 764167 }, + { url = "https://files.pythonhosted.org/packages/75/e4/2c27590dfc9992f73aabbeb9241ae20220bd9452df27483b6e56d3975cc5/PyYAML-6.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ad2a3decf9aaba3d29c8f537ac4b243e36bef957511b4766cb0057d32b0be85", size = 762952 }, + { url = "https://files.pythonhosted.org/packages/9b/97/ecc1abf4a823f5ac61941a9c00fe501b02ac3ab0e373c3857f7d4b83e2b6/PyYAML-6.0.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:ff3824dc5261f50c9b0dfb3be22b4567a6f938ccce4587b38952d85fd9e9afe4", size = 735301 }, + { url = "https://files.pythonhosted.org/packages/45/73/0f49dacd6e82c9430e46f4a027baa4ca205e8b0a9dce1397f44edc23559d/PyYAML-6.0.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:797b4f722ffa07cc8d62053e4cff1486fa6dc094105d13fea7b1de7d8bf71c9e", size = 756638 }, + { url = "https://files.pythonhosted.org/packages/22/5f/956f0f9fc65223a58fbc14459bf34b4cc48dec52e00535c79b8db361aabd/PyYAML-6.0.2-cp311-cp311-win32.whl", hash = "sha256:11d8f3dd2b9c1207dcaf2ee0bbbfd5991f571186ec9cc78427ba5bd32afae4b5", size = 143850 }, + { url = "https://files.pythonhosted.org/packages/ed/23/8da0bbe2ab9dcdd11f4f4557ccaf95c10b9811b13ecced089d43ce59c3c8/PyYAML-6.0.2-cp311-cp311-win_amd64.whl", hash = "sha256:e10ce637b18caea04431ce14fabcf5c64a1c61ec9c56b071a4b7ca131ca52d44", size = 161980 }, + { url = "https://files.pythonhosted.org/packages/86/0c/c581167fc46d6d6d7ddcfb8c843a4de25bdd27e4466938109ca68492292c/PyYAML-6.0.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:c70c95198c015b85feafc136515252a261a84561b7b1d51e3384e0655ddf25ab", size = 183873 }, + { url = "https://files.pythonhosted.org/packages/a8/0c/38374f5bb272c051e2a69281d71cba6fdb983413e6758b84482905e29a5d/PyYAML-6.0.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ce826d6ef20b1bc864f0a68340c8b3287705cae2f8b4b1d932177dcc76721725", size = 173302 }, + { url = "https://files.pythonhosted.org/packages/c3/93/9916574aa8c00aa06bbac729972eb1071d002b8e158bd0e83a3b9a20a1f7/PyYAML-6.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1f71ea527786de97d1a0cc0eacd1defc0985dcf6b3f17bb77dcfc8c34bec4dc5", size = 739154 }, + { url = "https://files.pythonhosted.org/packages/95/0f/b8938f1cbd09739c6da569d172531567dbcc9789e0029aa070856f123984/PyYAML-6.0.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9b22676e8097e9e22e36d6b7bda33190d0d400f345f23d4065d48f4ca7ae0425", size = 766223 }, + { url = "https://files.pythonhosted.org/packages/b9/2b/614b4752f2e127db5cc206abc23a8c19678e92b23c3db30fc86ab731d3bd/PyYAML-6.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:80bab7bfc629882493af4aa31a4cfa43a4c57c83813253626916b8c7ada83476", size = 767542 }, + { url = "https://files.pythonhosted.org/packages/d4/00/dd137d5bcc7efea1836d6264f049359861cf548469d18da90cd8216cf05f/PyYAML-6.0.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:0833f8694549e586547b576dcfaba4a6b55b9e96098b36cdc7ebefe667dfed48", size = 731164 }, + { url = "https://files.pythonhosted.org/packages/c9/1f/4f998c900485e5c0ef43838363ba4a9723ac0ad73a9dc42068b12aaba4e4/PyYAML-6.0.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8b9c7197f7cb2738065c481a0461e50ad02f18c78cd75775628afb4d7137fb3b", size = 756611 }, + { url = "https://files.pythonhosted.org/packages/df/d1/f5a275fdb252768b7a11ec63585bc38d0e87c9e05668a139fea92b80634c/PyYAML-6.0.2-cp312-cp312-win32.whl", hash = "sha256:ef6107725bd54b262d6dedcc2af448a266975032bc85ef0172c5f059da6325b4", size = 140591 }, + { url = "https://files.pythonhosted.org/packages/0c/e8/4f648c598b17c3d06e8753d7d13d57542b30d56e6c2dedf9c331ae56312e/PyYAML-6.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:7e7401d0de89a9a855c839bc697c079a4af81cf878373abd7dc625847d25cbd8", size = 156338 }, + { url = "https://files.pythonhosted.org/packages/ef/e3/3af305b830494fa85d95f6d95ef7fa73f2ee1cc8ef5b495c7c3269fb835f/PyYAML-6.0.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:efdca5630322a10774e8e98e1af481aad470dd62c3170801852d752aa7a783ba", size = 181309 }, + { url = "https://files.pythonhosted.org/packages/45/9f/3b1c20a0b7a3200524eb0076cc027a970d320bd3a6592873c85c92a08731/PyYAML-6.0.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:50187695423ffe49e2deacb8cd10510bc361faac997de9efef88badc3bb9e2d1", size = 171679 }, + { url = "https://files.pythonhosted.org/packages/7c/9a/337322f27005c33bcb656c655fa78325b730324c78620e8328ae28b64d0c/PyYAML-6.0.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0ffe8360bab4910ef1b9e87fb812d8bc0a308b0d0eef8c8f44e0254ab3b07133", size = 733428 }, + { url = "https://files.pythonhosted.org/packages/a3/69/864fbe19e6c18ea3cc196cbe5d392175b4cf3d5d0ac1403ec3f2d237ebb5/PyYAML-6.0.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:17e311b6c678207928d649faa7cb0d7b4c26a0ba73d41e99c4fff6b6c3276484", size = 763361 }, + { url = "https://files.pythonhosted.org/packages/04/24/b7721e4845c2f162d26f50521b825fb061bc0a5afcf9a386840f23ea19fa/PyYAML-6.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:70b189594dbe54f75ab3a1acec5f1e3faa7e8cf2f1e08d9b561cb41b845f69d5", size = 759523 }, + { url = "https://files.pythonhosted.org/packages/2b/b2/e3234f59ba06559c6ff63c4e10baea10e5e7df868092bf9ab40e5b9c56b6/PyYAML-6.0.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:41e4e3953a79407c794916fa277a82531dd93aad34e29c2a514c2c0c5fe971cc", size = 726660 }, + { url = "https://files.pythonhosted.org/packages/fe/0f/25911a9f080464c59fab9027482f822b86bf0608957a5fcc6eaac85aa515/PyYAML-6.0.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:68ccc6023a3400877818152ad9a1033e3db8625d899c72eacb5a668902e4d652", size = 751597 }, + { url = "https://files.pythonhosted.org/packages/14/0d/e2c3b43bbce3cf6bd97c840b46088a3031085179e596d4929729d8d68270/PyYAML-6.0.2-cp313-cp313-win32.whl", hash = "sha256:bc2fa7c6b47d6bc618dd7fb02ef6fdedb1090ec036abab80d4681424b84c1183", size = 140527 }, + { url = "https://files.pythonhosted.org/packages/fa/de/02b54f42487e3d3c6efb3f89428677074ca7bf43aae402517bc7cca949f3/PyYAML-6.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:8388ee1976c416731879ac16da0aff3f63b286ffdd57cdeb95f3f2e085687563", size = 156446 }, +] + [[package]] name = "requests" version = "2.32.3" @@ -497,6 +663,30 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/3f/51/d4db610ef29373b879047326cbf6fa98b6c1969d6f6dc423279de2b1be2c/requests_toolbelt-1.0.0-py2.py3-none-any.whl", hash = "sha256:cccfdd665f0a24fcf4726e690f65639d272bb0637b9b92dfd91a5568ccf6bd06", size = 54481 }, ] +[[package]] +name = "shrub-py" +version = "3.3.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "croniter" }, + { name = "pydantic" }, + { name = "pyyaml" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/01/d7/b0c4ec5dca91e620926372f1363bbfcf5432b9579e6b8b9c8dd77e597b1a/shrub_py-3.3.1.tar.gz", hash = "sha256:dddf11e7362e176ddccb0e90c3938e7863f57cae70cb878c90680e8c77521fef", size = 33474 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/db/a3/03e3e9a4a1697d330b0001246a6ce39a6f27ce1f232933f8406918df893c/shrub_py-3.3.1-py3-none-any.whl", hash = "sha256:0190deecca05800b9fa7a2d56e368c9411043719c4dc1468df9feadee720b63e", size = 39954 }, +] + +[[package]] +name = "six" +version = "1.16.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/71/39/171f1c67cd00715f190ba0b100d606d440a28c93c7714febeca8b79af85e/six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926", size = 34041 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d9/5a/e7c31adbe875f2abbb91bd84cf2dc52d792b5a01506781dbcf25c91daf11/six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254", size = 11053 }, +] + [[package]] name = "smmap" version = "5.0.1" From e04fb80c307bbe9d2c1c6a95fb41dc681b5677a5 Mon Sep 17 00:00:00 2001 From: Ezra Chung Date: Tue, 29 Oct 2024 15:28:21 -0500 Subject: [PATCH 06/78] generator: fix pydantic 2.0 compatibility for dumping subclass fields --- .evergreen/config_generator/etc/utils.py | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/.evergreen/config_generator/etc/utils.py b/.evergreen/config_generator/etc/utils.py index 0dd1832788..47c826d6b6 100644 --- a/.evergreen/config_generator/etc/utils.py +++ b/.evergreen/config_generator/etc/utils.py @@ -7,7 +7,7 @@ Union, cast) import yaml -from shrub.v3.evg_command import EvgCommandType, subprocess_exec +from shrub.v3.evg_command import EvgCommandType, KeyValueParam, subprocess_exec from shrub.v3.evg_project import EvgProject from shrub.v3.shrub_service import ConfigDumper from shrub.v3.evg_task import EvgTaskRef @@ -132,9 +132,17 @@ def represent_mapping(self, tag, mapping, flow_style=False): return self.represent_special_mapping(tag, ordered.items(), flow_style) +# Workaround represention error for KeyValueParam with `serialize_as_any=True`. +Dumper.add_representer( + KeyValueParam, + lambda dumper, data: dumper.represent_dict({'key': data.key, 'value': data.value}) +) + + +# Set `serialize_as_any=True` to permit dumping additional fields in subclasses defined above. def to_yaml(project: EvgProject) -> str: return yaml.dump( - project.dict(exclude_none=True, exclude_unset=True, by_alias=True), + project.model_dump(exclude_none=True, exclude_unset=True, by_alias=True, serialize_as_any=True), Dumper=Dumper, default_flow_style=False, width=float('inf'), From 210740a65268a45d008fbb00e8a9dc60ca92022f Mon Sep 17 00:00:00 2001 From: Ezra Chung Date: Tue, 29 Oct 2024 15:28:22 -0500 Subject: [PATCH 07/78] generator: add support for C++ Driver EVG config distros --- .evergreen/config_generator/etc/distros.py | 59 ++++++++++++++++++---- 1 file changed, 49 insertions(+), 10 deletions(-) diff --git a/.evergreen/config_generator/etc/distros.py b/.evergreen/config_generator/etc/distros.py index 2c142b6a9b..0cf23d1d3b 100644 --- a/.evergreen/config_generator/etc/distros.py +++ b/.evergreen/config_generator/etc/distros.py @@ -37,7 +37,7 @@ class Distro(BaseModel): @validator('os_ver') @classmethod def validate_os_ver(cls, value): - return Version(value) + return value == 'latest' or Version(value) # See: https://evergreen.mongodb.com/distros # pylint: disable=line-too-long @@ -47,8 +47,13 @@ def validate_os_ver(cls, value): Distro(name='debian10-small', os='debian', os_type='linux', os_ver='10', size='small'), Distro(name='debian11-large', os='debian', os_type='linux', os_ver='11', size='large'), Distro(name='debian11-small', os='debian', os_type='linux', os_ver='11', size='small'), + Distro(name='debian12-large', os='debian', os_type='linux', os_ver='12', size='large'), + Distro(name='debian12-small', os='debian', os_type='linux', os_ver='12', size='small'), Distro(name='debian92-large', os='debian', os_type='linux', os_ver='9.2', size='large'), Distro(name='debian92-small', os='debian', os_type='linux', os_ver='9.2', size='small'), + + Distro(name='debian12-latest-large', os='debian', os_type='linux', os_ver='latest', size='large'), + Distro(name='debian12-latest-small', os='debian', os_type='linux', os_ver='latest', size='small'), ] MACOS_DISTROS = [ @@ -60,34 +65,53 @@ def validate_os_ver(cls, value): ] RHEL_DISTROS = [ + Distro(name='rhel70-large', os='rhel', os_type='linux', os_ver='7.0', size='large'), + Distro(name='rhel70-small', os='rhel', os_type='linux', os_ver='7.0', size='small'), + Distro(name='rhel76-large', os='rhel', os_type='linux', os_ver='7.6', size='large'), + Distro(name='rhel76-small', os='rhel', os_type='linux', os_ver='7.6', size='small'), + Distro(name='rhel79-large', os='rhel', os_type='linux', os_ver='7.9', size='large'), + Distro(name='rhel79-small', os='rhel', os_type='linux', os_ver='7.9', size='small'), Distro(name='rhel80-large', os='rhel', os_type='linux', os_ver='8.0', size='large'), Distro(name='rhel80-small', os='rhel', os_type='linux', os_ver='8.0', size='small'), Distro(name='rhel84-large', os='rhel', os_type='linux', os_ver='8.4', size='large'), Distro(name='rhel84-small', os='rhel', os_type='linux', os_ver='8.4', size='small'), - Distro(name='rhel8.9-large', os='rhel', os_type='linux', os_ver='8.7', size='large'), - Distro(name='rhel8.9-small', os='rhel', os_type='linux', os_ver='8.7', size='small'), - Distro(name='rhel92-large', os='rhel', os_type='linux', os_ver='9.0', size='large'), - Distro(name='rhel92-small', os='rhel', os_type='linux', os_ver='9.0', size='small'), + Distro(name='rhel87-large', os='rhel', os_type='linux', os_ver='8.7', size='large'), + Distro(name='rhel87-small', os='rhel', os_type='linux', os_ver='8.7', size='small'), + Distro(name='rhel90-large', os='rhel', os_type='linux', os_ver='9.0', size='large'), + Distro(name='rhel90-small', os='rhel', os_type='linux', os_ver='9.0', size='small'), + + Distro(name='rhel8-latest-large', os='rhel', os_type='linux', os_ver='latest', size='large'), + Distro(name='rhel8-latest-small', os='rhel', os_type='linux', os_ver='latest', size='small'), ] RHEL_ARM64_DISTROS = [ Distro(name='rhel82-arm64-large', os='rhel', os_type='linux', os_ver='8.2', size='large', arch='arm64'), Distro(name='rhel82-arm64-small', os='rhel', os_type='linux', os_ver='8.2', size='small', arch='arm64'), - Distro(name='rhel92-arm64-large', os='rhel', os_type='linux', os_ver='9.0', size='large', arch='arm64'), - Distro(name='rhel92-arm64-small', os='rhel', os_type='linux', os_ver='9.0', size='small', arch='arm64'), + Distro(name='rhel90-arm64-large', os='rhel', os_type='linux', os_ver='9.0', size='large', arch='arm64'), + Distro(name='rhel90-arm64-small', os='rhel', os_type='linux', os_ver='9.0', size='small', arch='arm64'), + Distro(name='rhel92-arm64-large', os='rhel', os_type='linux', os_ver='9.2', size='large', arch='arm64'), + Distro(name='rhel92-arm64-small', os='rhel', os_type='linux', os_ver='9.2', size='small', arch='arm64'), ] RHEL_POWER8_DISTROS = [ + Distro(name='rhel71-power8-large', os='rhel', os_type='linux', os_ver='7.1', size='large', arch='power8'), + Distro(name='rhel71-power8-small', os='rhel', os_type='linux', os_ver='7.1', size='small', arch='power8'), Distro(name='rhel81-power8-large', os='rhel', os_type='linux', os_ver='8.1', size='large', arch='power8'), Distro(name='rhel81-power8-small', os='rhel', os_type='linux', os_ver='8.1', size='small', arch='power8'), ] RHEL_ZSERIES_DISTROS = [ + Distro(name='rhel72-zseries-large', os='rhel', os_type='linux', os_ver='7.2', size='large', arch='zseries'), + Distro(name='rhel72-zseries-small', os='rhel', os_type='linux', os_ver='7.2', size='small', arch='zseries'), Distro(name='rhel83-zseries-large', os='rhel', os_type='linux', os_ver='8.3', size='large', arch='zseries'), Distro(name='rhel83-zseries-small', os='rhel', os_type='linux', os_ver='8.3', size='small', arch='zseries'), ] UBUNTU_DISTROS = [ + Distro(name='ubuntu1604-large', os='ubuntu', os_type='linux', os_ver='16.04', size='large'), + Distro(name='ubuntu1604-small', os='ubuntu', os_type='linux', os_ver='16.04', size='small'), + Distro(name='ubuntu1804-large', os='ubuntu', os_type='linux', os_ver='18.04', size='large'), + Distro(name='ubuntu1804-small', os='ubuntu', os_type='linux', os_ver='18.04', size='small'), Distro(name='ubuntu2004-large', os='ubuntu', os_type='linux', os_ver='20.04', size='large'), Distro(name='ubuntu2004-small', os='ubuntu', os_type='linux', os_ver='20.04', size='small'), Distro(name='ubuntu2204-large', os='ubuntu', os_type='linux', os_ver='22.04', size='large'), @@ -95,6 +119,10 @@ def validate_os_ver(cls, value): ] UBUNTU_ARM64_DISTROS = [ + Distro(name='ubuntu1604-arm64-large', os='ubuntu', os_type='linux', os_ver='16.04', size='large', arch='arm64'), + Distro(name='ubuntu1604-arm64-small', os='ubuntu', os_type='linux', os_ver='16.04', size='small', arch='arm64'), + Distro(name='ubuntu1804-arm64-large', os='ubuntu', os_type='linux', os_ver='18.04', size='large', arch='arm64'), + Distro(name='ubuntu1804-arm64-small', os='ubuntu', os_type='linux', os_ver='18.04', size='small', arch='arm64'), Distro(name='ubuntu2004-arm64-large', os='ubuntu', os_type='linux', os_ver='20.04', size='large', arch='arm64'), Distro(name='ubuntu2004-arm64-small', os='ubuntu', os_type='linux', os_ver='20.04', size='small', arch='arm64'), Distro(name='ubuntu2204-arm64-large', os='ubuntu', os_type='linux', os_ver='22.04', size='large', arch='arm64'), @@ -123,6 +151,9 @@ def validate_os_ver(cls, value): Distro(name='windows-vsCurrent-large', os='windows', os_type='windows', vs_ver='vsCurrent', size='large'), # Windows Server 2019 Distro(name='windows-vsCurrent-small', os='windows', os_type='windows', vs_ver='vsCurrent', size='small'), # Windows Server 2019 + + Distro(name='windows-vsCurrent2-large', os='windows', os_type='windows', vs_ver='vsCurrent2', size='large'), + Distro(name='windows-vsCurrent2-small', os='windows', os_type='windows', vs_ver='vsCurrent2', size='small'), ] #fmt: on # pylint: enable=line-too-long @@ -198,6 +229,10 @@ def make_distro_str(distro_name, compiler, arch) -> str: 'vs2015x86': '-x86', 'vs2017x64': '-x64', 'vs2017x86': '-x86', + 'vs2019x64': '-x64', + 'vs2019x86': '-x86', + 'vs2022x64': '-x64', + 'vs2022x86': '-x86', }.get(compiler, f'-{compiler}') else: distro_str = distro_name @@ -212,10 +247,14 @@ def make_distro_str(distro_name, compiler, arch) -> str: def to_cc(compiler): return { - 'vs2013x64': 'Visual Studio 12 2013 Win64', + 'vs2013x64': 'Visual Studio 12 2013', 'vs2013x86': 'Visual Studio 12 2013', - 'vs2015x64': 'Visual Studio 14 2015 Win64', + 'vs2015x64': 'Visual Studio 14 2015', 'vs2015x86': 'Visual Studio 14 2015', - 'vs2017x64': 'Visual Studio 15 2017 Win64', + 'vs2017x64': 'Visual Studio 15 2017', 'vs2017x86': 'Visual Studio 15 2017', + 'vs2019x64': 'Visual Studio 16 2019', + 'vs2019x86': 'Visual Studio 16 2019', + 'vs2022x64': 'Visual Studio 17 2022', + 'vs2022x86': 'Visual Studio 17 2022', }.get(compiler, compiler) From 2ade3449bf19ea37cdf97241a819bc3f6dac3fd8 Mon Sep 17 00:00:00 2001 From: Ezra Chung Date: Tue, 29 Oct 2024 15:28:22 -0500 Subject: [PATCH 08/78] generator: add VS compiler -> CMake generator+platform helpers --- .evergreen/config_generator/etc/distros.py | 39 ++++++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/.evergreen/config_generator/etc/distros.py b/.evergreen/config_generator/etc/distros.py index 0cf23d1d3b..36cace42ab 100644 --- a/.evergreen/config_generator/etc/distros.py +++ b/.evergreen/config_generator/etc/distros.py @@ -258,3 +258,42 @@ def to_cc(compiler): 'vs2022x64': 'Visual Studio 17 2022', 'vs2022x86': 'Visual Studio 17 2022', }.get(compiler, compiler) + + +def to_platform(compiler): + return { + 'vs2013x64': 'x64', + 'vs2013x86': 'Win32', + 'vs2015x64': 'x64', + 'vs2015x86': 'Win32', + 'vs2017x64': 'x64', + 'vs2017x86': 'Win32', + 'vs2019x64': 'x64', + 'vs2019x86': 'Win32', + 'vs2022x64': 'x64', + 'vs2022x86': 'Win32', + }.get(compiler, compiler) + + +def compiler_to_vars(compiler): + match compiler: + case 'gcc': + return { + 'cc_compiler': 'gcc', + 'cxx_compiler': 'g++', + } + + case 'clang': + return { + 'cc_compiler': 'clang', + 'cxx_compiler': 'clang++', + } + + case str(vs) if 'vs' in vs: + return { + 'generator': to_cc(vs), + 'platform': to_platform(vs), + } + + case _: + return {} From d8c1150008a59ae2051f7d4d92272206fb296f5b Mon Sep 17 00:00:00 2001 From: Ezra Chung Date: Tue, 29 Oct 2024 15:28:22 -0500 Subject: [PATCH 09/78] generator: add support for teardown_task_can_fail_task --- .evergreen/config_generator/etc/utils.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/.evergreen/config_generator/etc/utils.py b/.evergreen/config_generator/etc/utils.py index 47c826d6b6..5f696f9582 100644 --- a/.evergreen/config_generator/etc/utils.py +++ b/.evergreen/config_generator/etc/utils.py @@ -11,6 +11,7 @@ from shrub.v3.evg_project import EvgProject from shrub.v3.shrub_service import ConfigDumper from shrub.v3.evg_task import EvgTaskRef +from shrub.v3.evg_task_group import EvgTaskGroup from typing_extensions import get_args, get_origin, get_type_hints T = TypeVar('T') @@ -27,6 +28,17 @@ class TaskRef(EvgTaskRef): batchtime: int | None = None +# Equivalent to EvgTaskGroup but defines additional properties. +class TaskGroup(EvgTaskGroup): + """ + An evergreen task group model that also includes additional properties. + + (The shrub.py model is missing some properties) + """ + + teardown_task_can_fail_task: bool | None = None + + # Automatically formats the provided script and invokes it in Bash. def bash_exec( script, From a6cffdf2934693dc53c779c88ac4810ccabe75e7 Mon Sep 17 00:00:00 2001 From: Ezra Chung Date: Tue, 29 Oct 2024 15:28:23 -0500 Subject: [PATCH 10/78] evg: include generated functions.yml in legacy config --- .mci.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.mci.yml b/.mci.yml index 2b9b0bffcf..5e2bc629ba 100644 --- a/.mci.yml +++ b/.mci.yml @@ -4,6 +4,9 @@ exec_timeout_secs: 3600 +include: + - filename: .evergreen/generated_configs/functions.yml + ####################################### # Variables # ####################################### From c0faac857b8940fb70c9fd815f02fc54c046aeb9 Mon Sep 17 00:00:00 2001 From: Ezra Chung Date: Tue, 29 Oct 2024 15:28:23 -0500 Subject: [PATCH 11/78] functions: abi-compliance-check --- .../components/funcs/abi_compliance_check.py | 70 +++++++++++++++++++ .evergreen/generated_configs/functions.yml | 61 +++++++++++++++- .../scripts}/abi-compliance-check-setup.sh | 0 .../scripts}/abi-compliance-check-test.sh | 4 +- .mci.yml | 56 --------------- 5 files changed, 132 insertions(+), 59 deletions(-) create mode 100644 .evergreen/config_generator/components/funcs/abi_compliance_check.py rename {.evergreen-old => .evergreen/scripts}/abi-compliance-check-setup.sh (100%) rename {.evergreen-old => .evergreen/scripts}/abi-compliance-check-test.sh (95%) diff --git a/.evergreen/config_generator/components/funcs/abi_compliance_check.py b/.evergreen/config_generator/components/funcs/abi_compliance_check.py new file mode 100644 index 0000000000..0e62df6b91 --- /dev/null +++ b/.evergreen/config_generator/components/funcs/abi_compliance_check.py @@ -0,0 +1,70 @@ +from config_generator.etc.function import Function +from config_generator.etc.utils import bash_exec + +from shrub.v3.evg_command import EvgCommandType, s3_put + + +class AbiComplianceCheck(Function): + name = 'abi-compliance-check' + commands = [ + bash_exec( + command_type=EvgCommandType.SETUP, + script='mongo-cxx-driver/.evergreen/scripts/abi-compliance-check-setup.sh' + ), + bash_exec( + command_type=EvgCommandType.TEST, + script='mongo-cxx-driver/.evergreen/scripts/abi-compliance-check-test.sh' + ), + s3_put( + command_type=EvgCommandType.SYSTEM, + aws_key='${aws_key}', + aws_secret='${aws_secret}', + bucket='mciuploads', + content_type='text/html', + display_name='ABI Compliance Check (Stable): ', + local_files_include_filter='cxx-abi/compat_reports/**/compat_report.html', + permissions='public-read', + remote_file='mongo-cxx-driver/${branch_name}/${revision}/${version_id}/${build_id}/${execution}/abi-compliance-check/abi/', + ), + s3_put( + command_type=EvgCommandType.SYSTEM, + aws_key='${aws_key}', + aws_secret='${aws_secret}', + bucket='mciuploads', + content_type='text/plain', + display_name='ABI Compliance Check (Stable): ', + local_files_include_filter='cxx-abi/logs/**/log.txt', + permissions='public-read', + remote_file='mongo-cxx-driver/${branch_name}/${revision}/${version_id}/${build_id}/${execution}/abi-compliance-check/abi/', + ), + s3_put( + command_type=EvgCommandType.SYSTEM, + aws_key='${aws_key}', + aws_secret='${aws_secret}', + bucket='mciuploads', + content_type='text/html', + display_name='ABI Compliance Check (Unstable): ', + local_files_include_filter='cxx-noabi/compat_reports/**/compat_report.html', + permissions='public-read', + remote_file='mongo-cxx-driver/${branch_name}/${revision}/${version_id}/${build_id}/${execution}/abi-compliance-check/noabi/', + ), + s3_put( + command_type=EvgCommandType.SYSTEM, + aws_key='${aws_key}', + aws_secret='${aws_secret}', + bucket='mciuploads', + content_type='text/plain', + display_name='ABI Compliance Check (Unstable): ', + local_files_include_filter='cxx-noabi/logs/**/log.txt', + permissions='public-read', + remote_file='mongo-cxx-driver/${branch_name}/${revision}/${version_id}/${build_id}/${execution}/abi-compliance-check/noabi/', + ), + ] + + @classmethod + def call(cls, **kwargs): + return cls.default_call(**kwargs) + + +def functions(): + return AbiComplianceCheck.defn() diff --git a/.evergreen/generated_configs/functions.yml b/.evergreen/generated_configs/functions.yml index 71f637df88..088e9062c3 100644 --- a/.evergreen/generated_configs/functions.yml +++ b/.evergreen/generated_configs/functions.yml @@ -1 +1,60 @@ -functions: {} +functions: + abi-compliance-check: + - command: subprocess.exec + type: setup + params: + binary: bash + args: + - -c + - mongo-cxx-driver/.evergreen/scripts/abi-compliance-check-setup.sh + - command: subprocess.exec + type: test + params: + binary: bash + args: + - -c + - mongo-cxx-driver/.evergreen/scripts/abi-compliance-check-test.sh + - command: s3.put + type: system + params: + display_name: "ABI Compliance Check (Stable): " + aws_key: ${aws_key} + aws_secret: ${aws_secret} + bucket: mciuploads + content_type: text/html + local_files_include_filter: cxx-abi/compat_reports/**/compat_report.html + permissions: public-read + remote_file: mongo-cxx-driver/${branch_name}/${revision}/${version_id}/${build_id}/${execution}/abi-compliance-check/abi/ + - command: s3.put + type: system + params: + display_name: "ABI Compliance Check (Stable): " + aws_key: ${aws_key} + aws_secret: ${aws_secret} + bucket: mciuploads + content_type: text/plain + local_files_include_filter: cxx-abi/logs/**/log.txt + permissions: public-read + remote_file: mongo-cxx-driver/${branch_name}/${revision}/${version_id}/${build_id}/${execution}/abi-compliance-check/abi/ + - command: s3.put + type: system + params: + display_name: "ABI Compliance Check (Unstable): " + aws_key: ${aws_key} + aws_secret: ${aws_secret} + bucket: mciuploads + content_type: text/html + local_files_include_filter: cxx-noabi/compat_reports/**/compat_report.html + permissions: public-read + remote_file: mongo-cxx-driver/${branch_name}/${revision}/${version_id}/${build_id}/${execution}/abi-compliance-check/noabi/ + - command: s3.put + type: system + params: + display_name: "ABI Compliance Check (Unstable): " + aws_key: ${aws_key} + aws_secret: ${aws_secret} + bucket: mciuploads + content_type: text/plain + local_files_include_filter: cxx-noabi/logs/**/log.txt + permissions: public-read + remote_file: mongo-cxx-driver/${branch_name}/${revision}/${version_id}/${build_id}/${execution}/abi-compliance-check/noabi/ diff --git a/.evergreen-old/abi-compliance-check-setup.sh b/.evergreen/scripts/abi-compliance-check-setup.sh similarity index 100% rename from .evergreen-old/abi-compliance-check-setup.sh rename to .evergreen/scripts/abi-compliance-check-setup.sh diff --git a/.evergreen-old/abi-compliance-check-test.sh b/.evergreen/scripts/abi-compliance-check-test.sh similarity index 95% rename from .evergreen-old/abi-compliance-check-test.sh rename to .evergreen/scripts/abi-compliance-check-test.sh index 8837e5cf00..c8b29b012f 100755 --- a/.evergreen-old/abi-compliance-check-test.sh +++ b/.evergreen/scripts/abi-compliance-check-test.sh @@ -70,8 +70,8 @@ DOC DOC } | tee -a old.xml new.xml >/dev/null - cat old.xml | tee cxx-abi/old.xml cxx-noabi/old.xml >/dev/null - cat new.xml | tee cxx-abi/new.xml cxx-noabi/new.xml >/dev/null + tee cxx-abi/old.xml cxx-noabi/old.xml /dev/null + tee cxx-abi/new.xml cxx-noabi/new.xml /dev/null rm old.xml new.xml fi diff --git a/.mci.yml b/.mci.yml index 5e2bc629ba..67c6b549c5 100644 --- a/.mci.yml +++ b/.mci.yml @@ -24,62 +24,6 @@ variables: ####################################### functions: - "abi-compliance-check": - - command: subprocess.exec - type: setup - params: - binary: bash - args: [-c, mongo-cxx-driver/.evergreen-old/abi-compliance-check-setup.sh] - - command: subprocess.exec - type: test - params: - binary: bash - args: [-c, mongo-cxx-driver/.evergreen-old/abi-compliance-check-test.sh] - - command: s3.put - type: system - params: - aws_key: ${aws_key} - aws_secret: ${aws_secret} - bucket: mciuploads - content_type: text/html - display_name: "ABI Compliance Check (Stable): " - local_files_include_filter: cxx-abi/compat_reports/**/compat_report.html - permissions: public-read - remote_file: mongo-cxx-driver/${branch_name}/${revision}/${version_id}/${build_id}/${execution}/abi-compliance-check/abi/ - - command: s3.put - type: system - params: - aws_key: ${aws_key} - aws_secret: ${aws_secret} - bucket: mciuploads - content_type: text/plain - display_name: "ABI Compliance Check (Stable): " - local_files_include_filter: cxx-abi/logs/**/log.txt - permissions: public-read - remote_file: mongo-cxx-driver/${branch_name}/${revision}/${version_id}/${build_id}/${execution}/abi-compliance-check/abi/ - - command: s3.put - type: system - params: - aws_key: ${aws_key} - aws_secret: ${aws_secret} - bucket: mciuploads - content_type: text/html - display_name: "ABI Compliance Check (Unstable): " - local_files_include_filter: cxx-noabi/compat_reports/**/compat_report.html - permissions: public-read - remote_file: mongo-cxx-driver/${branch_name}/${revision}/${version_id}/${build_id}/${execution}/abi-compliance-check/noabi/ - - command: s3.put - type: system - params: - aws_key: ${aws_key} - aws_secret: ${aws_secret} - bucket: mciuploads - content_type: text/plain - display_name: "ABI Compliance Check (Unstable): " - local_files_include_filter: cxx-noabi/logs/**/log.txt - permissions: public-read - remote_file: mongo-cxx-driver/${branch_name}/${revision}/${version_id}/${build_id}/${execution}/abi-compliance-check/noabi/ - "abidiff": - command: subprocess.exec type: setup From cc2c7e60ac2c9713781514385f35002248e44091 Mon Sep 17 00:00:00 2001 From: Ezra Chung Date: Tue, 29 Oct 2024 15:28:23 -0500 Subject: [PATCH 12/78] functions: abidiff --- .../components/funcs/abidiff.py | 48 +++++++++++++++++++ .evergreen/generated_configs/functions.yml | 37 ++++++++++++++ .../scripts}/abidiff-setup.sh | 0 .../scripts}/abidiff-test.sh | 0 .mci.yml | 34 ------------- 5 files changed, 85 insertions(+), 34 deletions(-) create mode 100644 .evergreen/config_generator/components/funcs/abidiff.py rename {.evergreen-old => .evergreen/scripts}/abidiff-setup.sh (100%) rename {.evergreen-old => .evergreen/scripts}/abidiff-test.sh (100%) diff --git a/.evergreen/config_generator/components/funcs/abidiff.py b/.evergreen/config_generator/components/funcs/abidiff.py new file mode 100644 index 0000000000..0c8bff7f92 --- /dev/null +++ b/.evergreen/config_generator/components/funcs/abidiff.py @@ -0,0 +1,48 @@ +from config_generator.etc.function import Function +from config_generator.etc.utils import bash_exec + +from shrub.v3.evg_command import EvgCommandType, s3_put + + +class Abidiff(Function): + name = 'abidiff' + commands = [ + bash_exec( + command_type=EvgCommandType.SETUP, + script='mongo-cxx-driver/.evergreen/scripts/abidiff-setup.sh' + ), + bash_exec( + command_type=EvgCommandType.TEST, + script='mongo-cxx-driver/.evergreen/scripts/abidiff-test.sh' + ), + s3_put( + command_type=EvgCommandType.SYSTEM, + aws_key='${aws_key}', + aws_secret='${aws_secret}', + bucket='mciuploads', + content_type='text/plain', + display_name='abidiff (Stable): ', + local_files_include_filter='cxx-abi/*.txt', + permissions='public-read', + remote_file='mongo-cxx-driver/${branch_name}/${revision}/${version_id}/${build_id}/${execution}/abidiff/abi/', + ), + s3_put( + command_type=EvgCommandType.SYSTEM, + aws_key='${aws_key}', + aws_secret='${aws_secret}', + bucket='mciuploads', + content_type='text/plain', + display_name='abidiff (Unstable): ', + local_files_include_filter='cxx-noabi/*.txt', + permissions='public-read', + remote_file='mongo-cxx-driver/${branch_name}/${revision}/${version_id}/${build_id}/${execution}/abidiff/noabi/', + ), + ] + + @classmethod + def call(cls, **kwargs): + return cls.default_call(**kwargs) + + +def functions(): + return Abidiff.defn() diff --git a/.evergreen/generated_configs/functions.yml b/.evergreen/generated_configs/functions.yml index 088e9062c3..f618d7eeff 100644 --- a/.evergreen/generated_configs/functions.yml +++ b/.evergreen/generated_configs/functions.yml @@ -58,3 +58,40 @@ functions: local_files_include_filter: cxx-noabi/logs/**/log.txt permissions: public-read remote_file: mongo-cxx-driver/${branch_name}/${revision}/${version_id}/${build_id}/${execution}/abi-compliance-check/noabi/ + abidiff: + - command: subprocess.exec + type: setup + params: + binary: bash + args: + - -c + - mongo-cxx-driver/.evergreen/scripts/abidiff-setup.sh + - command: subprocess.exec + type: test + params: + binary: bash + args: + - -c + - mongo-cxx-driver/.evergreen/scripts/abidiff-test.sh + - command: s3.put + type: system + params: + display_name: "abidiff (Stable): " + aws_key: ${aws_key} + aws_secret: ${aws_secret} + bucket: mciuploads + content_type: text/plain + local_files_include_filter: cxx-abi/*.txt + permissions: public-read + remote_file: mongo-cxx-driver/${branch_name}/${revision}/${version_id}/${build_id}/${execution}/abidiff/abi/ + - command: s3.put + type: system + params: + display_name: "abidiff (Unstable): " + aws_key: ${aws_key} + aws_secret: ${aws_secret} + bucket: mciuploads + content_type: text/plain + local_files_include_filter: cxx-noabi/*.txt + permissions: public-read + remote_file: mongo-cxx-driver/${branch_name}/${revision}/${version_id}/${build_id}/${execution}/abidiff/noabi/ diff --git a/.evergreen-old/abidiff-setup.sh b/.evergreen/scripts/abidiff-setup.sh similarity index 100% rename from .evergreen-old/abidiff-setup.sh rename to .evergreen/scripts/abidiff-setup.sh diff --git a/.evergreen-old/abidiff-test.sh b/.evergreen/scripts/abidiff-test.sh similarity index 100% rename from .evergreen-old/abidiff-test.sh rename to .evergreen/scripts/abidiff-test.sh diff --git a/.mci.yml b/.mci.yml index 67c6b549c5..ebd7750bed 100644 --- a/.mci.yml +++ b/.mci.yml @@ -24,40 +24,6 @@ variables: ####################################### functions: - "abidiff": - - command: subprocess.exec - type: setup - params: - binary: bash - args: [-c, mongo-cxx-driver/.evergreen-old/abidiff-setup.sh] - - command: subprocess.exec - type: test - params: - binary: bash - args: [-c, mongo-cxx-driver/.evergreen-old/abidiff-test.sh] - - command: s3.put - type: system - params: - aws_key: ${aws_key} - aws_secret: ${aws_secret} - bucket: mciuploads - content_type: text/plain - display_name: "abidiff (Stable): " - local_files_include_filter: cxx-abi/*.txt - permissions: public-read - remote_file: mongo-cxx-driver/${branch_name}/${revision}/${version_id}/${build_id}/${execution}/abidiff/abi/ - - command: s3.put - type: system - params: - aws_key: ${aws_key} - aws_secret: ${aws_secret} - bucket: mciuploads - content_type: text/plain - display_name: "abidiff (Unstable): " - local_files_include_filter: cxx-noabi/*.txt - permissions: public-read - remote_file: mongo-cxx-driver/${branch_name}/${revision}/${version_id}/${build_id}/${execution}/abidiff/noabi/ - "abi-prohibited-symbols": - command: subprocess.exec type: test From c556b5d35c377b3a408b05594ea2841f769b7be2 Mon Sep 17 00:00:00 2001 From: Ezra Chung Date: Tue, 29 Oct 2024 15:28:24 -0500 Subject: [PATCH 13/78] functions: abi-prohibited-symbols --- .../funcs/abi_prohibited_symbols.py | 20 +++++++++++++++++++ .evergreen/generated_configs/functions.yml | 8 ++++++++ .../scripts}/abi-prohibited-symbols-test.sh | 0 .mci.yml | 7 ------- 4 files changed, 28 insertions(+), 7 deletions(-) create mode 100644 .evergreen/config_generator/components/funcs/abi_prohibited_symbols.py rename {.evergreen-old => .evergreen/scripts}/abi-prohibited-symbols-test.sh (100%) diff --git a/.evergreen/config_generator/components/funcs/abi_prohibited_symbols.py b/.evergreen/config_generator/components/funcs/abi_prohibited_symbols.py new file mode 100644 index 0000000000..2532aae2ea --- /dev/null +++ b/.evergreen/config_generator/components/funcs/abi_prohibited_symbols.py @@ -0,0 +1,20 @@ +from config_generator.etc.function import Function +from config_generator.etc.utils import bash_exec + +from shrub.v3.evg_command import EvgCommandType + + +class AbiProhibitedSymbols(Function): + name = 'abi-prohibited-symbols' + commands = bash_exec( + command_type=EvgCommandType.TEST, + script='mongo-cxx-driver/.evergreen/scripts/abi-prohibited-symbols-test.sh' + ) + + @classmethod + def call(cls, **kwargs): + return cls.default_call(**kwargs) + + +def functions(): + return AbiProhibitedSymbols.defn() diff --git a/.evergreen/generated_configs/functions.yml b/.evergreen/generated_configs/functions.yml index f618d7eeff..f715c3bbeb 100644 --- a/.evergreen/generated_configs/functions.yml +++ b/.evergreen/generated_configs/functions.yml @@ -58,6 +58,14 @@ functions: local_files_include_filter: cxx-noabi/logs/**/log.txt permissions: public-read remote_file: mongo-cxx-driver/${branch_name}/${revision}/${version_id}/${build_id}/${execution}/abi-compliance-check/noabi/ + abi-prohibited-symbols: + command: subprocess.exec + type: test + params: + binary: bash + args: + - -c + - mongo-cxx-driver/.evergreen/scripts/abi-prohibited-symbols-test.sh abidiff: - command: subprocess.exec type: setup diff --git a/.evergreen-old/abi-prohibited-symbols-test.sh b/.evergreen/scripts/abi-prohibited-symbols-test.sh similarity index 100% rename from .evergreen-old/abi-prohibited-symbols-test.sh rename to .evergreen/scripts/abi-prohibited-symbols-test.sh diff --git a/.mci.yml b/.mci.yml index ebd7750bed..6358ecc72d 100644 --- a/.mci.yml +++ b/.mci.yml @@ -24,13 +24,6 @@ variables: ####################################### functions: - "abi-prohibited-symbols": - - command: subprocess.exec - type: test - params: - binary: bash - args: [-c, mongo-cxx-driver/.evergreen-old/abi-prohibited-symbols-test.sh] - "setup": - command: shell.exec params: From 3c90e39f5509e7c30f4dab2ade07f45e8a77e352 Mon Sep 17 00:00:00 2001 From: Ezra Chung Date: Tue, 29 Oct 2024 15:28:24 -0500 Subject: [PATCH 14/78] functions: setup --- .../components/funcs/setup.py | 44 +++++++++++++++++++ .evergreen/generated_configs/functions.yml | 33 ++++++++++++++ .mci.yml | 29 ------------ 3 files changed, 77 insertions(+), 29 deletions(-) create mode 100644 .evergreen/config_generator/components/funcs/setup.py diff --git a/.evergreen/config_generator/components/funcs/setup.py b/.evergreen/config_generator/components/funcs/setup.py new file mode 100644 index 0000000000..1f3c6486a7 --- /dev/null +++ b/.evergreen/config_generator/components/funcs/setup.py @@ -0,0 +1,44 @@ +from config_generator.etc.function import Function +from config_generator.etc.utils import bash_exec + +from shrub.v3.evg_command import EvgCommandType, git_get_project + + +class Setup(Function): + name = 'setup' + commands = [ + bash_exec( + command_type=EvgCommandType.SETUP, + script='''\ + set -o errexit + set -o pipefail + rm -rf "mongo-cxx-driver" + rm -fr "mongo-c-driver" + rm -fr mongod + rm -fr drivers-evergreen-tools + ''' + ), + git_get_project(directory='mongo-cxx-driver'), + bash_exec( + command_type=EvgCommandType.SETUP, + script='''\ + set -o errexit + set -o pipefail + cc --version || true + c++ --version || true + gcc --version || true + g++ --version || true + clang --version || true + cmake --version || true + openssl version || true + ''' + ), + ] + + @classmethod + def call(cls, **kwargs): + return cls.default_call(**kwargs) + + +def functions(): + return Setup.defn() diff --git a/.evergreen/generated_configs/functions.yml b/.evergreen/generated_configs/functions.yml index f715c3bbeb..4575fec5a6 100644 --- a/.evergreen/generated_configs/functions.yml +++ b/.evergreen/generated_configs/functions.yml @@ -103,3 +103,36 @@ functions: local_files_include_filter: cxx-noabi/*.txt permissions: public-read remote_file: mongo-cxx-driver/${branch_name}/${revision}/${version_id}/${build_id}/${execution}/abidiff/noabi/ + setup: + - command: subprocess.exec + type: setup + params: + binary: bash + args: + - -c + - | + set -o errexit + set -o pipefail + rm -rf "mongo-cxx-driver" + rm -fr "mongo-c-driver" + rm -fr mongod + rm -fr drivers-evergreen-tools + - command: git.get_project + params: + directory: mongo-cxx-driver + - command: subprocess.exec + type: setup + params: + binary: bash + args: + - -c + - | + set -o errexit + set -o pipefail + cc --version || true + c++ --version || true + gcc --version || true + g++ --version || true + clang --version || true + cmake --version || true + openssl version || true diff --git a/.mci.yml b/.mci.yml index 6358ecc72d..b6b32fed92 100644 --- a/.mci.yml +++ b/.mci.yml @@ -24,35 +24,6 @@ variables: ####################################### functions: - "setup": - - command: shell.exec - params: - shell: bash - script: | - set -o errexit - set -o pipefail - rm -rf "mongo-cxx-driver" - rm -fr "mongo-c-driver" - rm -fr mongod - rm -fr drivers-evergreen-tools - - command: git.get_project - params: - directory: "mongo-cxx-driver" - - command: shell.exec - params: - shell: bash - working_dir: "." - script: | - set -o errexit - set -o pipefail - cc --version || true - c++ --version || true - gcc --version || true - g++ --version || true - clang --version || true - cmake --version || true - openssl version || true - "build_mongohouse": command: shell.exec params: From faee0c17a77a29d37a90af940ec0595c6ad1a39b Mon Sep 17 00:00:00 2001 From: Ezra Chung Date: Tue, 29 Oct 2024 15:28:24 -0500 Subject: [PATCH 15/78] functions: build_mongohouse --- .../components/funcs/build_mongohouse.py | 28 +++++++++++++++++++ .evergreen/generated_configs/functions.yml | 15 ++++++++++ .mci.yml | 13 --------- 3 files changed, 43 insertions(+), 13 deletions(-) create mode 100644 .evergreen/config_generator/components/funcs/build_mongohouse.py diff --git a/.evergreen/config_generator/components/funcs/build_mongohouse.py b/.evergreen/config_generator/components/funcs/build_mongohouse.py new file mode 100644 index 0000000000..9d47206107 --- /dev/null +++ b/.evergreen/config_generator/components/funcs/build_mongohouse.py @@ -0,0 +1,28 @@ +from config_generator.etc.function import Function +from config_generator.etc.utils import bash_exec + +from shrub.v3.evg_command import EvgCommandType + + +class BuildMongohouse(Function): + name = 'build_mongohouse' + commands = bash_exec( + command_type=EvgCommandType.SETUP, + script='''\ + if [ ! -d "drivers-evergreen-tools" ]; then + git clone https://github.com/mongodb-labs/drivers-evergreen-tools.git + fi + cd drivers-evergreen-tools + export DRIVERS_TOOLS=$(pwd) + + .evergreen/atlas_data_lake/pull-mongohouse-image.sh + ''' + ) + + @classmethod + def call(cls, **kwargs): + return cls.default_call(**kwargs) + + +def functions(): + return BuildMongohouse.defn() diff --git a/.evergreen/generated_configs/functions.yml b/.evergreen/generated_configs/functions.yml index 4575fec5a6..2bf78b3c09 100644 --- a/.evergreen/generated_configs/functions.yml +++ b/.evergreen/generated_configs/functions.yml @@ -103,6 +103,21 @@ functions: local_files_include_filter: cxx-noabi/*.txt permissions: public-read remote_file: mongo-cxx-driver/${branch_name}/${revision}/${version_id}/${build_id}/${execution}/abidiff/noabi/ + build_mongohouse: + command: subprocess.exec + type: setup + params: + binary: bash + args: + - -c + - | + if [ ! -d "drivers-evergreen-tools" ]; then + git clone https://github.com/mongodb-labs/drivers-evergreen-tools.git + fi + cd drivers-evergreen-tools + export DRIVERS_TOOLS=$(pwd) + + .evergreen/atlas_data_lake/pull-mongohouse-image.sh setup: - command: subprocess.exec type: setup diff --git a/.mci.yml b/.mci.yml index b6b32fed92..8e3d6dd163 100644 --- a/.mci.yml +++ b/.mci.yml @@ -24,19 +24,6 @@ variables: ####################################### functions: - "build_mongohouse": - command: shell.exec - params: - shell: bash - script: | - if [ ! -d "drivers-evergreen-tools" ]; then - git clone https://github.com/mongodb-labs/drivers-evergreen-tools.git - fi - cd drivers-evergreen-tools - export DRIVERS_TOOLS=$(pwd) - - .evergreen/atlas_data_lake/pull-mongohouse-image.sh - "run_mongohouse": command: shell.exec params: From 6a62698c503fddbaa6718ff8f60ff06133e03dc0 Mon Sep 17 00:00:00 2001 From: Ezra Chung Date: Tue, 29 Oct 2024 15:28:24 -0500 Subject: [PATCH 16/78] functions: run_mongohouse --- .../components/funcs/run_mongohouse.py | 25 +++++++++++++++++++ .evergreen/generated_configs/functions.yml | 12 +++++++++ .mci.yml | 10 -------- 3 files changed, 37 insertions(+), 10 deletions(-) create mode 100644 .evergreen/config_generator/components/funcs/run_mongohouse.py diff --git a/.evergreen/config_generator/components/funcs/run_mongohouse.py b/.evergreen/config_generator/components/funcs/run_mongohouse.py new file mode 100644 index 0000000000..8016d9ae36 --- /dev/null +++ b/.evergreen/config_generator/components/funcs/run_mongohouse.py @@ -0,0 +1,25 @@ +from config_generator.etc.function import Function +from config_generator.etc.utils import bash_exec + +from shrub.v3.evg_command import EvgCommandType + + +class RunMongohouse(Function): + name = 'run_mongohouse' + commands = bash_exec( + command_type=EvgCommandType.SETUP, + script='''\ + cd drivers-evergreen-tools + export DRIVERS_TOOLS=$(pwd) + + .evergreen/atlas_data_lake/run-mongohouse-image.sh + ''' + ) + + @classmethod + def call(cls, **kwargs): + return cls.default_call(**kwargs) + + +def functions(): + return RunMongohouse.defn() diff --git a/.evergreen/generated_configs/functions.yml b/.evergreen/generated_configs/functions.yml index 2bf78b3c09..513211f362 100644 --- a/.evergreen/generated_configs/functions.yml +++ b/.evergreen/generated_configs/functions.yml @@ -118,6 +118,18 @@ functions: export DRIVERS_TOOLS=$(pwd) .evergreen/atlas_data_lake/pull-mongohouse-image.sh + run_mongohouse: + command: subprocess.exec + type: setup + params: + binary: bash + args: + - -c + - | + cd drivers-evergreen-tools + export DRIVERS_TOOLS=$(pwd) + + .evergreen/atlas_data_lake/run-mongohouse-image.sh setup: - command: subprocess.exec type: setup diff --git a/.mci.yml b/.mci.yml index 8e3d6dd163..d89cee2cb5 100644 --- a/.mci.yml +++ b/.mci.yml @@ -24,16 +24,6 @@ variables: ####################################### functions: - "run_mongohouse": - command: shell.exec - params: - shell: bash - script: | - cd drivers-evergreen-tools - export DRIVERS_TOOLS=$(pwd) - - .evergreen/atlas_data_lake/run-mongohouse-image.sh - "test_mongohouse": command: shell.exec params: From 2cc3b4c9cb4116cf9465571fa796c4d24bca8f65 Mon Sep 17 00:00:00 2001 From: Ezra Chung Date: Tue, 29 Oct 2024 15:28:25 -0500 Subject: [PATCH 17/78] functions: test_mongohouse --- .../components/funcs/test_mongohouse.py | 21 +++++++++ .evergreen/generated_configs/functions.yml | 9 ++++ .evergreen/scripts/test-mongohouse.sh | 45 +++++++++++++++++++ .mci.yml | 41 ----------------- 4 files changed, 75 insertions(+), 41 deletions(-) create mode 100644 .evergreen/config_generator/components/funcs/test_mongohouse.py create mode 100755 .evergreen/scripts/test-mongohouse.sh diff --git a/.evergreen/config_generator/components/funcs/test_mongohouse.py b/.evergreen/config_generator/components/funcs/test_mongohouse.py new file mode 100644 index 0000000000..baeb431b9c --- /dev/null +++ b/.evergreen/config_generator/components/funcs/test_mongohouse.py @@ -0,0 +1,21 @@ +from config_generator.etc.function import Function +from config_generator.etc.utils import bash_exec + +from shrub.v3.evg_command import EvgCommandType + + +class TestMongohouse(Function): + name = 'test_mongohouse' + commands = bash_exec( + command_type=EvgCommandType.TEST, + working_dir='mongo-cxx-driver', + script='.evergreen/scripts/test-mongohouse.sh' + ) + + @classmethod + def call(cls, **kwargs): + return cls.default_call(**kwargs) + + +def functions(): + return TestMongohouse.defn() diff --git a/.evergreen/generated_configs/functions.yml b/.evergreen/generated_configs/functions.yml index 513211f362..85747a1624 100644 --- a/.evergreen/generated_configs/functions.yml +++ b/.evergreen/generated_configs/functions.yml @@ -163,3 +163,12 @@ functions: clang --version || true cmake --version || true openssl version || true + test_mongohouse: + command: subprocess.exec + type: test + params: + binary: bash + working_dir: mongo-cxx-driver + args: + - -c + - .evergreen/scripts/test-mongohouse.sh diff --git a/.evergreen/scripts/test-mongohouse.sh b/.evergreen/scripts/test-mongohouse.sh new file mode 100755 index 0000000000..b10e0ac6bb --- /dev/null +++ b/.evergreen/scripts/test-mongohouse.sh @@ -0,0 +1,45 @@ +#!/usr/bin/env bash + +set -o errexit +set -o pipefail + +echo "Waiting for mongohouse to start..." +wait_for_mongohouse() { + for _ in $(seq 300); do + # Exit code 7: "Failed to connect to host". + if + curl -s -m 1 "localhost:${1:?}" + (("$?" != 7)) + then + return 0 + else + sleep 1 + fi + done + echo "Could not detect mongohouse on port ${1:?}" 1>&2 + return 1 +} +wait_for_mongohouse 27017 || exit +echo "Waiting for mongohouse to start... done." +pgrep mongohouse + +cd build +export PREFIX +PREFIX="$(pwd)/../../mongoc" + +# Use LD_LIBRARY_PATH to inform the tests where to find dependencies on Linux. +# This task only runs on Linux. +if [ -n "${lib_dir:-}" ]; then + export LD_LIBRARY_PATH=".:${PREFIX:?}/${lib_dir:?}/" +else + export LD_LIBRARY_PATH=".:${PREFIX:?}/lib/" +fi + +export MONGOHOUSE_TESTS_PATH +MONGOHOUSE_TESTS_PATH="$(pwd)/../data/mongohouse" + +export RUN_MONGOHOUSE_TESTS=ON + +ulimit -c unlimited || true + +./src/mongocxx/test/test_mongohouse_specs diff --git a/.mci.yml b/.mci.yml index d89cee2cb5..84f1d67be7 100644 --- a/.mci.yml +++ b/.mci.yml @@ -24,47 +24,6 @@ variables: ####################################### functions: - "test_mongohouse": - command: shell.exec - params: - shell: bash - working_dir: "mongo-cxx-driver" - script: | - echo "Waiting for mongohouse to start..." - wait_for_mongohouse() { - for _ in $(seq 300); do - # Exit code 7: "Failed to connect to host". - if curl -s -m 1 localhost:$1; (("$?" != 7)); then - return 0 - else - sleep 1 - fi - done - echo "Could not detect mongohouse on port $1" 1>&2 - return 1 - } - wait_for_mongohouse 27017 || exit - echo "Waiting for mongohouse to start... done." - ps aux | grep mongohouse - - cd build - export PREFIX=$(pwd)/../../mongoc - - # Use LD_LIBRARY_PATH to inform the tests where to find dependencies on Linux. - # This task only runs on Linux. - if [ -n "${lib_dir}" ]; then - export LD_LIBRARY_PATH=.:$PREFIX/${lib_dir}/ - else - export LD_LIBRARY_PATH=.:$PREFIX/lib/ - fi - - export MONGOHOUSE_TESTS_PATH="$(pwd)/../data/mongohouse" - export RUN_MONGOHOUSE_TESTS=ON - - ulimit -c unlimited || true - - ./src/mongocxx/test/test_mongohouse_specs - "start_mongod": - command: shell.exec params: From 92ded0ff6a87e828e74e800d4bd77d5018c78d7e Mon Sep 17 00:00:00 2001 From: Ezra Chung Date: Tue, 29 Oct 2024 15:28:25 -0500 Subject: [PATCH 18/78] functions: start_mongod --- .../components/funcs/start_mongod.py | 46 +++++++++ .evergreen/generated_configs/functions.yml | 19 ++++ .evergreen/scripts/start-mongod.sh | 93 +++++++++++++++++++ .mci.yml | 88 ------------------ 4 files changed, 158 insertions(+), 88 deletions(-) create mode 100644 .evergreen/config_generator/components/funcs/start_mongod.py create mode 100755 .evergreen/scripts/start-mongod.sh diff --git a/.evergreen/config_generator/components/funcs/start_mongod.py b/.evergreen/config_generator/components/funcs/start_mongod.py new file mode 100644 index 0000000000..c6729b49a6 --- /dev/null +++ b/.evergreen/config_generator/components/funcs/start_mongod.py @@ -0,0 +1,46 @@ +from config_generator.etc.function import Function +from config_generator.etc.utils import bash_exec + +from shrub.v3.evg_command import EvgCommandType, expansions_update + +from typing import Mapping + + +class StartMongod(Function): + name = 'start_mongod' + commands = [ + bash_exec( + command_type=EvgCommandType.SETUP, + include_expansions_in_env=[ + "build_variant", + "mongodb_version", + + "AUTH", + "ORCHESTRATION_FILE", + "REQUIRE_API_VERSION", + "TOPOLOGY", + ], + script='mongo-cxx-driver/.evergreen/scripts/start-mongod.sh', + ), + expansions_update( + command_type=EvgCommandType.SETUP, + file='drivers-evergreen-tools/mo-expansion.yml', + ), + ] + + @classmethod + def call(cls, mongodb_version: str, topology: str, vars: Mapping[str, str] = {}): + vars = vars if vars else {} + + vars |= {'mongodb_version': mongodb_version} + + match topology: + case 'single': pass + case 'replica': vars |= {'TOPOLOGY': 'replica_set'} + case 'sharded': vars |= {'TOPOLOGY': 'sharded_cluster'} + + return cls.default_call(vars=vars if vars else None) + + +def functions(): + return StartMongod().defn() diff --git a/.evergreen/generated_configs/functions.yml b/.evergreen/generated_configs/functions.yml index 85747a1624..882d86a775 100644 --- a/.evergreen/generated_configs/functions.yml +++ b/.evergreen/generated_configs/functions.yml @@ -163,6 +163,25 @@ functions: clang --version || true cmake --version || true openssl version || true + start_mongod: + - command: subprocess.exec + type: setup + params: + binary: bash + include_expansions_in_env: + - build_variant + - mongodb_version + - AUTH + - ORCHESTRATION_FILE + - REQUIRE_API_VERSION + - TOPOLOGY + args: + - -c + - mongo-cxx-driver/.evergreen/scripts/start-mongod.sh + - command: expansions.update + type: setup + params: + file: drivers-evergreen-tools/mo-expansion.yml test_mongohouse: command: subprocess.exec type: test diff --git a/.evergreen/scripts/start-mongod.sh b/.evergreen/scripts/start-mongod.sh new file mode 100755 index 0000000000..79a432471a --- /dev/null +++ b/.evergreen/scripts/start-mongod.sh @@ -0,0 +1,93 @@ +#!/usr/bin/env bash + +set -o errexit +set -o pipefail + +: "${build_variant:?}" +: "${mongodb_version:?}" + +: "${AUTH:-}" +: "${ORCHESTRATION_FILE:-}" +: "${REQUIRE_API_VERSION:-}" +: "${TOPOLOGY:-}" + +if [ ! -d "drivers-evergreen-tools" ]; then + git clone https://github.com/mongodb-labs/drivers-evergreen-tools.git +fi +cd drivers-evergreen-tools + +# The legacy shell is only present in server 5.0 builds and earlier, +# but there is no 5.0 build for RHEL9, so we have to avoid it +if [[ "${build_variant}" =~ "rhel9" ]]; then + export SKIP_LEGACY_SHELL=1 +fi + +DRIVERS_TOOLS="$(pwd)" +if [ "Windows_NT" == "$OS" ]; then + DRIVERS_TOOLS="$(cygpath -m "${DRIVERS_TOOLS:?}")" +fi +export DRIVERS_TOOLS + +export MONGODB_BINARIES="${DRIVERS_TOOLS:?}/mongodb/bin" +export MONGO_ORCHESTRATION_HOME="${DRIVERS_TOOLS:?}/.evergreen/orchestration" +export MONGODB_VERSION="${mongodb_version:?}" +export AUTH +export TOPOLOGY +export REQUIRE_API_VERSION +export ORCHESTRATION_FILE + +export PATH="${MONGODB_BINARIES:?}:${PATH:-}" + +echo "{ \"releases\": { \"default\": \"${MONGODB_BINARIES:?}\" }}" >"${MONGO_ORCHESTRATION_HOME:?}/orchestration.config" +./.evergreen/run-orchestration.sh + +# Ensure server on port 27017 is the primary server. +if [[ "${TOPOLOGY:-}" == replica_set ]]; then + # Replset members should be on the following ports. + declare hosts="localhost:27017,localhost:27018,localhost:27019" + + # Authentication may be required. + declare creds + if [[ -n "${AUTH:-}" ]]; then + creds="bob:pwd123@" + else + creds="" + fi + + declare uri + printf -v uri "mongodb://%s%s" "${creds:-}" "${hosts:?}" + + # Raise the priority of the member on port 27017. Others should have priority 1. + declare script + printf -v script "%s\n%s\n%s\n" \ + "let c = rs.conf()" \ + "c.members.find((m) => m.host.includes('27017')).priority = 10" \ + "rs.reconfig(c)" + + mongosh --quiet "${uri:?}" --eval "${script:?}" + + # Wait up to a minute for member on port 27017 to become primary. + wait_for_primary() { + for _ in $(seq 60); do + if mongosh --quiet "${uri:?}" --eval "quit(rs.hello().primary.includes('27017') ? 0 : 1)"; then + return 0 + else + sleep 1 + fi + done + echo "Could not set replset member on port 27017 as primary" + return 1 + } + + echo "Waiting for replset member 27017 to become primary..." + wait_for_primary + echo "Waiting for replset member 27017 to become primary... done." +fi + +# Copy mongocryptd up so other functions can find it later, since we can't share PATHs +if [ -f "${MONGODB_BINARIES:?}/mongocryptd" ]; then + cp "${MONGODB_BINARIES:?}/mongocryptd" ../mongocryptd +fi + +cd ../ +pwd diff --git a/.mci.yml b/.mci.yml index 84f1d67be7..20ca60ebc0 100644 --- a/.mci.yml +++ b/.mci.yml @@ -24,94 +24,6 @@ variables: ####################################### functions: - "start_mongod": - - command: shell.exec - params: - shell: bash - working_dir: "." - script: | - set -o errexit - set -o pipefail - if [ ! -d "drivers-evergreen-tools" ]; then - git clone https://github.com/mongodb-labs/drivers-evergreen-tools.git - fi - cd drivers-evergreen-tools - # The legacy shell is only present in server 5.0 builds and earlier, - # but there is no 5.0 build for RHEL9, so we have to avoid it - if [[ "${build_variant}" =~ "rhel9" ]]; then - export SKIP_LEGACY_SHELL=1 - fi - export DRIVERS_TOOLS=$(pwd) - if [ "Windows_NT" == "$OS" ]; then - export DRIVERS_TOOLS=$(cygpath -m $DRIVERS_TOOLS) - fi - export MONGODB_BINARIES=$DRIVERS_TOOLS/mongodb/bin - export MONGO_ORCHESTRATION_HOME=$DRIVERS_TOOLS/.evergreen/orchestration - export MONGODB_VERSION=${mongodb_version} - export AUTH=${AUTH} - export TOPOLOGY=${TOPOLOGY|server} - export REQUIRE_API_VERSION=${REQUIRE_API_VERSION} - export ORCHESTRATION_FILE=${ORCHESTRATION_FILE} - export PATH="$MONGODB_BINARIES:$PATH" - - echo "{ \"releases\": { \"default\": \"$MONGODB_BINARIES\" }}" > $MONGO_ORCHESTRATION_HOME/orchestration.config - ./.evergreen/run-orchestration.sh - - # Ensure server on port 27017 is the primary server. - if [[ "$TOPOLOGY" == replica_set ]]; then - # Replset members should be on the following ports. - declare hosts="localhost:27017,localhost:27018,localhost:27019" - - # Authentication may be required. - declare creds - if [[ -n "$AUTH" ]]; then - creds="bob:pwd123@" - else - creds="" - fi - - declare uri - printf -v uri "mongodb://%s%s" "$creds" "$hosts" - - # Raise the priority of the member on port 27017. Others should have priority 1. - declare script - printf -v script "%s\n%s\n%s\n" \ - "let c = rs.conf()" \ - "c.members.find((m) => m.host.includes('27017')).priority = 10" \ - "rs.reconfig(c)" - - mongosh --quiet "$uri" --eval "$script" - - # Wait up to a minute for member on port 27017 to become primary. - wait_for_primary() { - for _ in $(seq 60); do - if mongosh --quiet "$uri" --eval "quit(rs.hello().primary.includes('27017') ? 0 : 1)"; then - return 0 - else - sleep 1 - fi - done - echo "Could not set replset member on port 27017 as primary" - return 1 - } - echo "Waiting for replset member 27017 to become primary..." - wait_for_primary - echo "Waiting for replset member 27017 to become primary... done." - fi - - # Copy mongocryptd up so other functions can find it later, since we can't share PATHs - if [ -f $MONGODB_BINARIES/mongocryptd ]; then - cp $MONGODB_BINARIES/mongocryptd ../mongocryptd - fi - - cd ../ - pwd - - command: expansions.update - params: - type: setup - file: drivers-evergreen-tools/mo-expansion.yml - - "stop_mongod": command: subprocess.exec params: From 980000a61a2d31494397a74a962448ecd223a5a3 Mon Sep 17 00:00:00 2001 From: Ezra Chung Date: Tue, 29 Oct 2024 15:28:25 -0500 Subject: [PATCH 19/78] functions: stop_mongod --- .../components/funcs/stop_mongod.py | 29 +++++++++++++++++++ .evergreen/generated_configs/functions.yml | 16 ++++++++++ .mci.yml | 16 ---------- 3 files changed, 45 insertions(+), 16 deletions(-) create mode 100644 .evergreen/config_generator/components/funcs/stop_mongod.py diff --git a/.evergreen/config_generator/components/funcs/stop_mongod.py b/.evergreen/config_generator/components/funcs/stop_mongod.py new file mode 100644 index 0000000000..8e6748d65e --- /dev/null +++ b/.evergreen/config_generator/components/funcs/stop_mongod.py @@ -0,0 +1,29 @@ +from config_generator.etc.function import Function +from config_generator.etc.utils import bash_exec + +from shrub.v3.evg_command import EvgCommandType + + +class StopMongod(Function): + name = 'stop_mongod' + commands = bash_exec( + command_type=EvgCommandType.SYSTEM, + script='''\ + set -o errexit + set -o pipefail + if cd drivers-evergreen-tools/.evergreen/orchestration 2>/dev/null; then + . ../venv-utils.sh + if venvactivate venv; then + mongo-orchestration stop + fi + fi + ''' + ) + + @classmethod + def call(cls, **kwargs): + return cls.default_call(**kwargs) + + +def functions(): + return StopMongod.defn() diff --git a/.evergreen/generated_configs/functions.yml b/.evergreen/generated_configs/functions.yml index 882d86a775..b7ef54f455 100644 --- a/.evergreen/generated_configs/functions.yml +++ b/.evergreen/generated_configs/functions.yml @@ -182,6 +182,22 @@ functions: type: setup params: file: drivers-evergreen-tools/mo-expansion.yml + stop_mongod: + command: subprocess.exec + type: system + params: + binary: bash + args: + - -c + - | + set -o errexit + set -o pipefail + if cd drivers-evergreen-tools/.evergreen/orchestration 2>/dev/null; then + . ../venv-utils.sh + if venvactivate venv; then + mongo-orchestration stop + fi + fi test_mongohouse: command: subprocess.exec type: test diff --git a/.mci.yml b/.mci.yml index 20ca60ebc0..2f2fa8ae04 100644 --- a/.mci.yml +++ b/.mci.yml @@ -24,22 +24,6 @@ variables: ####################################### functions: - "stop_mongod": - command: subprocess.exec - params: - binary: bash - args: - - -c - - | - set -o errexit - set -o pipefail - if cd drivers-evergreen-tools/.evergreen/orchestration 2>/dev/null; then - . ../venv-utils.sh - if venvactivate venv; then - mongo-orchestration stop - fi - fi - "install_c_driver": - command: expansions.update type: setup From 86a48dc6ea3efb4d0c68c48a7ab448ab2f0fbbd9 Mon Sep 17 00:00:00 2001 From: Ezra Chung Date: Tue, 29 Oct 2024 15:28:25 -0500 Subject: [PATCH 20/78] functions: install_c_driver --- .../components/funcs/install_c_driver.py | 44 +++++++++++++++++++ .evergreen/generated_configs/functions.yml | 14 ++++++ .../scripts/install-c-driver.sh | 0 .mci.yml | 26 ----------- etc/make_release.py | 2 +- etc/releasing.md | 4 +- 6 files changed, 61 insertions(+), 29 deletions(-) create mode 100644 .evergreen/config_generator/components/funcs/install_c_driver.py rename .evergreen-old/install_c_driver.sh => .evergreen/scripts/install-c-driver.sh (100%) diff --git a/.evergreen/config_generator/components/funcs/install_c_driver.py b/.evergreen/config_generator/components/funcs/install_c_driver.py new file mode 100644 index 0000000000..c077d10b55 --- /dev/null +++ b/.evergreen/config_generator/components/funcs/install_c_driver.py @@ -0,0 +1,44 @@ +from config_generator.etc.distros import compiler_to_vars +from config_generator.etc.function import Function +from config_generator.etc.utils import bash_exec + +from shrub.v3.evg_command import EvgCommandType, KeyValueParam, expansions_update + +from typing import Mapping + + +# If updating mongoc_version_minimum, also update: +# - LIBBSON_REQUIRED_VERSION and LIBMONGOC_REQUIRED_VERSION in CMakeLists.txt +# - the version of pkg:github/mongodb/mongo-c-driver in etc/purls.txt +# - the default value of --c-driver-build-ref in etc/make_release.py +# Only LIBMONGOC_DOWNLOAD_VERSION needs to be updated when pinning to an unreleased commit. +MONGOC_VERSION_MINIMUM = '1.28.0' + + +class InstallCDriver(Function): + name = 'install_c_driver' + commands = [ + expansions_update( + command_type=EvgCommandType.SETUP, + updates=[ + KeyValueParam(key='mongoc_version_minimum', value=MONGOC_VERSION_MINIMUM) + ] + ), + bash_exec( + command_type=EvgCommandType.SETUP, + add_expansions_to_env=True, + script='mongo-cxx-driver/.evergreen/scripts/install-c-driver.sh' + ), + ] + + @classmethod + def call(cls, compiler: str | None = None, vars: Mapping[str, str] = {}): + vars = vars if vars else {} + + vars |= compiler_to_vars(compiler) + + return cls.default_call(vars=vars if vars else None) + + +def functions(): + return InstallCDriver.defn() diff --git a/.evergreen/generated_configs/functions.yml b/.evergreen/generated_configs/functions.yml index b7ef54f455..a7f5d10775 100644 --- a/.evergreen/generated_configs/functions.yml +++ b/.evergreen/generated_configs/functions.yml @@ -118,6 +118,20 @@ functions: export DRIVERS_TOOLS=$(pwd) .evergreen/atlas_data_lake/pull-mongohouse-image.sh + install_c_driver: + - command: expansions.update + type: setup + params: + updates: + - { key: mongoc_version_minimum, value: 1.28.0 } + - command: subprocess.exec + type: setup + params: + binary: bash + add_expansions_to_env: true + args: + - -c + - mongo-cxx-driver/.evergreen/scripts/install-c-driver.sh run_mongohouse: command: subprocess.exec type: setup diff --git a/.evergreen-old/install_c_driver.sh b/.evergreen/scripts/install-c-driver.sh similarity index 100% rename from .evergreen-old/install_c_driver.sh rename to .evergreen/scripts/install-c-driver.sh diff --git a/.mci.yml b/.mci.yml index 2f2fa8ae04..0dcb65a522 100644 --- a/.mci.yml +++ b/.mci.yml @@ -7,37 +7,11 @@ exec_timeout_secs: 3600 include: - filename: .evergreen/generated_configs/functions.yml -####################################### -# Variables # -####################################### -variables: - - # If updating mongoc_version_minimum, also update: - # - LIBBSON_REQUIRED_VERSION and LIBMONGOC_REQUIRED_VERSION in CMakeLists.txt - # - the version of pkg:github/mongodb/mongo-c-driver in etc/purls.txt - # - the default value of --c-driver-build-ref in etc/make_release.py - # Only LIBMONGOC_DOWNLOAD_VERSION needs to be updated when pinning to an unreleased commit. - mongoc_version_minimum: &mongoc_version_minimum "1.28.0" - ####################################### # Functions # ####################################### functions: - "install_c_driver": - - command: expansions.update - type: setup - params: - updates: - - key: mongoc_version_minimum - value: *mongoc_version_minimum - - command: shell.exec - type: setup - params: - shell: bash - add_expansions_to_env: true - script: mongo-cxx-driver/.evergreen-old/install_c_driver.sh - # fetch_c_driver_source may be used to fetch the C driver source without installing the C driver. # This can be used when only CI scripts are needed. "fetch_c_driver_source": diff --git a/etc/make_release.py b/etc/make_release.py index 9972ad02c9..b78965107a 100755 --- a/etc/make_release.py +++ b/etc/make_release.py @@ -407,7 +407,7 @@ def build_c_driver(c_driver_build_ref, quiet): env = os.environ.copy() env['mongoc_version'] = c_driver_build_ref - run_shell_script('./.evergreen/install_c_driver.sh', env=env) + run_shell_script('./.evergreen/scripts/install_c_driver.sh', env=env) if not quiet: click.echo('Build of C Driver version "{}" was successful.'.format(c_driver_build_ref)) diff --git a/etc/releasing.md b/etc/releasing.md index b2e50131d9..a58c79ed4e 100644 --- a/etc/releasing.md +++ b/etc/releasing.md @@ -105,9 +105,9 @@ Ensure there are no new or unexpected task failures. ### Minimum Required MongoDB C Driver Version -Ensure `mongoc_version_minimum` and related values are updated for the latest minimum required C Driver release. +Ensure `MONGOC_VERSION_MINIMUM` and related values are updated for the latest minimum required C Driver release. -See the comment accompanying `mongoc_version_minimum` for a list of other sources to update. +See the comment accompanying `MONGOC_VERSION_MINIMUM` for a list of other sources to update. ### Coverity From 08e0c4ae2455140b033214a8c317e503a7fdacf5 Mon Sep 17 00:00:00 2001 From: Ezra Chung Date: Tue, 29 Oct 2024 15:28:26 -0500 Subject: [PATCH 21/78] functions: fetch_c_driver_source --- .../components/funcs/fetch_c_driver_source.py | 23 +++++++++++++++++++ .evergreen/generated_configs/functions.yml | 8 +++++++ .mci.yml | 12 ---------- 3 files changed, 31 insertions(+), 12 deletions(-) create mode 100644 .evergreen/config_generator/components/funcs/fetch_c_driver_source.py diff --git a/.evergreen/config_generator/components/funcs/fetch_c_driver_source.py b/.evergreen/config_generator/components/funcs/fetch_c_driver_source.py new file mode 100644 index 0000000000..6a83db99e3 --- /dev/null +++ b/.evergreen/config_generator/components/funcs/fetch_c_driver_source.py @@ -0,0 +1,23 @@ +from config_generator.etc.function import Function +from config_generator.etc.utils import bash_exec + +from shrub.v3.evg_command import EvgCommandType + +# fetch_c_driver_source may be used to fetch the C driver source without installing the C driver. +# This can be used when only CI scripts are needed. + + +class FetchCDriverSource(Function): + name = 'fetch_c_driver_source' + commands = bash_exec( + command_type=EvgCommandType.SETUP, + script='git clone --depth 1 https://github.com/mongodb/mongo-c-driver mongoc' + ) + + @classmethod + def call(cls, **kwargs): + return cls.default_call(**kwargs) + + +def functions(): + return FetchCDriverSource.defn() diff --git a/.evergreen/generated_configs/functions.yml b/.evergreen/generated_configs/functions.yml index a7f5d10775..f4f32b6314 100644 --- a/.evergreen/generated_configs/functions.yml +++ b/.evergreen/generated_configs/functions.yml @@ -118,6 +118,14 @@ functions: export DRIVERS_TOOLS=$(pwd) .evergreen/atlas_data_lake/pull-mongohouse-image.sh + fetch_c_driver_source: + command: subprocess.exec + type: setup + params: + binary: bash + args: + - -c + - git clone --depth 1 https://github.com/mongodb/mongo-c-driver mongoc install_c_driver: - command: expansions.update type: setup diff --git a/.mci.yml b/.mci.yml index 0dcb65a522..3f900ee93e 100644 --- a/.mci.yml +++ b/.mci.yml @@ -12,18 +12,6 @@ include: ####################################### functions: - # fetch_c_driver_source may be used to fetch the C driver source without installing the C driver. - # This can be used when only CI scripts are needed. - "fetch_c_driver_source": - - command: shell.exec - params: - shell: bash - working_dir: "." - script: | - set -o errexit - set -o pipefail - git clone --depth 1 https://github.com/mongodb/mongo-c-driver mongoc - "lint": - command: shell.exec params: From 2518429f1969374281237b14cf4230c26edb6768 Mon Sep 17 00:00:00 2001 From: Ezra Chung Date: Tue, 29 Oct 2024 15:28:26 -0500 Subject: [PATCH 22/78] functions: lint --- .../config_generator/components/funcs/lint.py | 20 +++++++++++++++++++ .evergreen/generated_configs/functions.yml | 9 +++++++++ .mci.yml | 10 ---------- etc/clang_format.py | 0 4 files changed, 29 insertions(+), 10 deletions(-) create mode 100644 .evergreen/config_generator/components/funcs/lint.py mode change 100644 => 100755 etc/clang_format.py diff --git a/.evergreen/config_generator/components/funcs/lint.py b/.evergreen/config_generator/components/funcs/lint.py new file mode 100644 index 0000000000..48c620e5bc --- /dev/null +++ b/.evergreen/config_generator/components/funcs/lint.py @@ -0,0 +1,20 @@ +from config_generator.etc.function import Function +from config_generator.etc.utils import bash_exec + +from shrub.v3.evg_command import EvgCommandType + +class Lint(Function): + name = 'lint' + commands = bash_exec( + command_type=EvgCommandType.TEST, + working_dir='mongo-cxx-driver', + script='python etc/clang_format.py lint' + ) + + @classmethod + def call(cls, **kwargs): + return cls.default_call(**kwargs) + + +def functions(): + return Lint.defn() diff --git a/.evergreen/generated_configs/functions.yml b/.evergreen/generated_configs/functions.yml index f4f32b6314..05b4e55149 100644 --- a/.evergreen/generated_configs/functions.yml +++ b/.evergreen/generated_configs/functions.yml @@ -140,6 +140,15 @@ functions: args: - -c - mongo-cxx-driver/.evergreen/scripts/install-c-driver.sh + lint: + command: subprocess.exec + type: test + params: + binary: bash + working_dir: mongo-cxx-driver + args: + - -c + - python etc/clang_format.py lint run_mongohouse: command: subprocess.exec type: setup diff --git a/.mci.yml b/.mci.yml index 3f900ee93e..4f92b21a6b 100644 --- a/.mci.yml +++ b/.mci.yml @@ -12,16 +12,6 @@ include: ####################################### functions: - "lint": - - command: shell.exec - params: - shell: bash - working_dir: "mongo-cxx-driver" - script: | - set -o errexit - set -o pipefail - python etc/clang_format.py lint - "clang-tidy": - command: shell.exec params: diff --git a/etc/clang_format.py b/etc/clang_format.py old mode 100644 new mode 100755 From 3c7952a74f1b6c1222b46251ff92a928fd3d865d Mon Sep 17 00:00:00 2001 From: Ezra Chung Date: Tue, 29 Oct 2024 15:28:26 -0500 Subject: [PATCH 23/78] functions: clang-tidy --- .../components/funcs/clang_tidy.py | 26 +++++++++++++++++++ .evergreen/generated_configs/functions.yml | 14 ++++++++++ .mci.yml | 12 --------- 3 files changed, 40 insertions(+), 12 deletions(-) create mode 100644 .evergreen/config_generator/components/funcs/clang_tidy.py diff --git a/.evergreen/config_generator/components/funcs/clang_tidy.py b/.evergreen/config_generator/components/funcs/clang_tidy.py new file mode 100644 index 0000000000..614cadec84 --- /dev/null +++ b/.evergreen/config_generator/components/funcs/clang_tidy.py @@ -0,0 +1,26 @@ +from config_generator.etc.function import Function +from config_generator.etc.utils import bash_exec + +from shrub.v3.evg_command import EvgCommandType + + +class ClangTidy(Function): + name = 'clang-tidy' + commands = bash_exec( + command_type=EvgCommandType.TEST, + working_dir='mongo-cxx-driver', + env={ + 'CC': "${cc_compiler}", + 'CXX': "${cxx_compiler}", + }, + include_expansions_in_env=['distro_id'], + script='./etc/run-clang-tidy.sh', + ) + + @classmethod + def call(cls, **kwargs): + return cls.default_call(**kwargs) + + +def functions(): + return ClangTidy.defn() diff --git a/.evergreen/generated_configs/functions.yml b/.evergreen/generated_configs/functions.yml index 05b4e55149..87793e0184 100644 --- a/.evergreen/generated_configs/functions.yml +++ b/.evergreen/generated_configs/functions.yml @@ -118,6 +118,20 @@ functions: export DRIVERS_TOOLS=$(pwd) .evergreen/atlas_data_lake/pull-mongohouse-image.sh + clang-tidy: + command: subprocess.exec + type: test + params: + binary: bash + working_dir: mongo-cxx-driver + env: + CC: ${cc_compiler} + CXX: ${cxx_compiler} + include_expansions_in_env: + - distro_id + args: + - -c + - ./etc/run-clang-tidy.sh fetch_c_driver_source: command: subprocess.exec type: setup diff --git a/.mci.yml b/.mci.yml index 4f92b21a6b..3101925cd3 100644 --- a/.mci.yml +++ b/.mci.yml @@ -12,18 +12,6 @@ include: ####################################### functions: - "clang-tidy": - - command: shell.exec - params: - shell: bash - working_dir: "mongo-cxx-driver" - include_expansions_in_env: - - distro_id - env: - CC: ${cc_compiler} - CXX: ${cxx_compiler} - script: ./etc/run-clang-tidy.sh - "clone_drivers-evergreen-tools": - command: shell.exec params: From f5404ac941bc99b974ad9d10e5f00c152f4977a5 Mon Sep 17 00:00:00 2001 From: Ezra Chung Date: Tue, 29 Oct 2024 15:28:27 -0500 Subject: [PATCH 24/78] functions: fetch-det (clone_drivers-evergreen-tools) --- .../components/funcs/fetch_det.py | 32 ++++++++++++++ .evergreen/generated_configs/functions.yml | 16 +++++++ .mci.yml | 42 +++++++------------ 3 files changed, 62 insertions(+), 28 deletions(-) create mode 100644 .evergreen/config_generator/components/funcs/fetch_det.py diff --git a/.evergreen/config_generator/components/funcs/fetch_det.py b/.evergreen/config_generator/components/funcs/fetch_det.py new file mode 100644 index 0000000000..ee30099ced --- /dev/null +++ b/.evergreen/config_generator/components/funcs/fetch_det.py @@ -0,0 +1,32 @@ +from shrub.v3.evg_command import EvgCommandType +from shrub.v3.evg_command import expansions_update + +from config_generator.etc.function import Function +from config_generator.etc.utils import bash_exec + + +class FetchDET(Function): + name = 'fetch-det' + commands = [ + bash_exec( + command_type=EvgCommandType.SETUP, + script='''\ + if [[ ! -d drivers-evergreen-tools ]]; then + git clone --depth=1 https://github.com/mongodb-labs/drivers-evergreen-tools.git + fi + echo "DRIVERS_TOOLS: $(pwd)/drivers-evergreen-tools" > det-expansion.yml + ''', + ), + expansions_update( + command_type=EvgCommandType.SETUP, + file='det-expansion.yml', + ), + ] + + @classmethod + def call(cls, **kwargs): + return cls.default_call(**kwargs) + + +def functions(): + return FetchDET.defn() diff --git a/.evergreen/generated_configs/functions.yml b/.evergreen/generated_configs/functions.yml index 87793e0184..034f0201f3 100644 --- a/.evergreen/generated_configs/functions.yml +++ b/.evergreen/generated_configs/functions.yml @@ -132,6 +132,22 @@ functions: args: - -c - ./etc/run-clang-tidy.sh + fetch-det: + - command: subprocess.exec + type: setup + params: + binary: bash + args: + - -c + - | + if [[ ! -d drivers-evergreen-tools ]]; then + git clone --depth=1 https://github.com/mongodb-labs/drivers-evergreen-tools.git + fi + echo "DRIVERS_TOOLS: $(pwd)/drivers-evergreen-tools" > det-expansion.yml + - command: expansions.update + type: setup + params: + file: det-expansion.yml fetch_c_driver_source: command: subprocess.exec type: setup diff --git a/.mci.yml b/.mci.yml index 3101925cd3..afeb4e44ee 100644 --- a/.mci.yml +++ b/.mci.yml @@ -12,20 +12,6 @@ include: ####################################### functions: - "clone_drivers-evergreen-tools": - - command: shell.exec - params: - shell: bash - script: |- - set -o errexit - if [ ! -d "drivers-evergreen-tools" ]; then - git clone https://github.com/mongodb-labs/drivers-evergreen-tools.git --depth=1 - fi - echo "DRIVERS_TOOLS: $(pwd)/drivers-evergreen-tools" > det-expansion.yml - # Set DRIVERS_TOOLS expansion. - - command: expansions.update - params: - file: det-expansion.yml "run_kms_servers": - command: shell.exec params: @@ -398,7 +384,7 @@ tasks: - func: "compile" vars: RUN_DISTCHECK: 1 - - func: "clone_drivers-evergreen-tools" + - func: "fetch-det" - func: "run_kms_servers" # Call "install_c_driver" before "test" to build static C driver libraries. Example projects require static C driver libraries. - func: "install_c_driver" @@ -414,7 +400,7 @@ tasks: vars: BSON_EXTRA_ALIGNMENT: 1 - func: "compile" - - func: "clone_drivers-evergreen-tools" + - func: "fetch-det" - func: "run_kms_servers" - func: "install_c_driver" vars: @@ -432,7 +418,7 @@ tasks: vars: RUN_DISTCHECK: 1 REQUIRED_CXX_STANDARD: 20 - - func: "clone_drivers-evergreen-tools" + - func: "fetch-det" - func: "run_kms_servers" - func: "install_c_driver" - func: "test" @@ -451,7 +437,7 @@ tasks: - func: "compile" vars: REQUIRED_CXX_STANDARD: 20 - - func: "clone_drivers-evergreen-tools" + - func: "fetch-det" - func: "run_kms_servers" - func: "install_c_driver" vars: @@ -512,7 +498,7 @@ tasks: vars: USE_STATIC_LIBS: 1 RUN_DISTCHECK: 1 - - func: "clone_drivers-evergreen-tools" + - func: "fetch-det" - func: "run_kms_servers" - func: "install_c_driver" - func: "test" @@ -530,7 +516,7 @@ tasks: - func: "compile" vars: USE_STATIC_LIBS: 1 - - func: "clone_drivers-evergreen-tools" + - func: "fetch-det" - func: "run_kms_servers" - func: "install_c_driver" vars: @@ -550,7 +536,7 @@ tasks: - func: "compile" vars: RUN_DISTCHECK: 1 - - func: "clone_drivers-evergreen-tools" + - func: "fetch-det" - func: "run_kms_servers" - func: "install_c_driver" - func: "test" @@ -567,7 +553,7 @@ tasks: - func: "compile" vars: RUN_DISTCHECK: 1 - - func: "clone_drivers-evergreen-tools" + - func: "fetch-det" - func: "run_kms_servers" - func: "install_c_driver" - func: "test" @@ -588,7 +574,7 @@ tasks: - func: "compile" vars: RUN_DISTCHECK: 1 - - func: "clone_drivers-evergreen-tools" + - func: "fetch-det" - func: "run_kms_servers" - func: "test" vars: @@ -604,7 +590,7 @@ tasks: - func: "compile" vars: RUN_DISTCHECK: 1 - - func: "clone_drivers-evergreen-tools" + - func: "fetch-det" - func: "run_kms_servers" - func: "test" vars: @@ -760,7 +746,7 @@ tasks: AUTH: noauth - func: "fetch_c_driver_source" - func: "compile" - - func: "clone_drivers-evergreen-tools" + - func: "fetch-det" - func: "run_kms_servers" - func: "test" vars: @@ -776,7 +762,7 @@ tasks: AUTH: noauth - func: "fetch_c_driver_source" - func: "compile" - - func: "clone_drivers-evergreen-tools" + - func: "fetch-det" - func: "run_kms_servers" - func: "test" vars: @@ -908,7 +894,7 @@ task_groups: - name: test_atlas_task_group_search_indexes_7.0 setup_group: - func: "setup" - - func: "clone_drivers-evergreen-tools" + - func: "fetch-det" - command: subprocess.exec params: working_dir: mongo-cxx-driver @@ -936,7 +922,7 @@ task_groups: - name: test_atlas_task_group_search_indexes_8.0 setup_group: - func: "setup" - - func: "clone_drivers-evergreen-tools" + - func: "fetch-det" - command: subprocess.exec params: working_dir: mongo-cxx-driver From 51787b25ab5411e4960a102c1129f70d2dd5bd44 Mon Sep 17 00:00:00 2001 From: Ezra Chung Date: Tue, 29 Oct 2024 15:28:27 -0500 Subject: [PATCH 25/78] functions: run_kms_servers --- .../components/funcs/run_kms_servers.py | 58 +++++++++++++++++++ .evergreen/generated_configs/functions.yml | 45 ++++++++++++++ .mci.yml | 40 ------------- 3 files changed, 103 insertions(+), 40 deletions(-) create mode 100644 .evergreen/config_generator/components/funcs/run_kms_servers.py diff --git a/.evergreen/config_generator/components/funcs/run_kms_servers.py b/.evergreen/config_generator/components/funcs/run_kms_servers.py new file mode 100644 index 0000000000..b80f91c95c --- /dev/null +++ b/.evergreen/config_generator/components/funcs/run_kms_servers.py @@ -0,0 +1,58 @@ +from shrub.v3.evg_command import EvgCommandType + +from config_generator.etc.function import Function +from config_generator.etc.utils import bash_exec + + +class RunKMSServers(Function): + name = 'run_kms_servers' + commands = [ + bash_exec( + command_type=EvgCommandType.SETUP, + script='''\ + set -o errexit + echo "Preparing CSFLE venv environment..." + if [[ "${distro_id}" =~ windows-64-vs2015-* ]]; then + # Python: ImportError: DLL load failed while importing _rust: The specified procedure could not be found. + echo "Preparing CSFLE venv environment... skipped." + exit 0 + fi + cd ./drivers-evergreen-tools/.evergreen/csfle + # This function ensures future invocations of activate-kmstlsvenv.sh conducted in + # parallel do not race to setup a venv environment; it has already been prepared. + # This primarily addresses the situation where the "test" and "run_kms_servers" + # functions invoke 'activate-kmstlsvenv.sh' simultaneously. + . ./activate-kmstlsvenv.sh && deactivate + echo "Preparing CSFLE venv environment... done." + ''', + ), + bash_exec( + command_type=EvgCommandType.SETUP, + background=True, + script='''\ + set -o errexit + echo "Starting mock KMS servers..." + if [[ "${distro_id}" =~ windows-64-vs2015-* ]]; then + # Python: ImportError: DLL load failed while importing _rust: The specified procedure could not be found. + echo "Starting mock KMS servers... skipped." + exit 0 + fi + cd ./drivers-evergreen-tools/.evergreen/csfle + . ./activate-kmstlsvenv.sh + python -u kms_http_server.py --ca_file ../x509gen/ca.pem --cert_file ../x509gen/server.pem --port 8999 & + python -u kms_http_server.py --ca_file ../x509gen/ca.pem --cert_file ../x509gen/expired.pem --port 9000 & + python -u kms_http_server.py --ca_file ../x509gen/ca.pem --cert_file ../x509gen/wrong-host.pem --port 9001 & + python -u kms_http_server.py --ca_file ../x509gen/ca.pem --cert_file ../x509gen/server.pem --port 9002 --require_client_cert & + python -u kms_kmip_server.py & + echo "Starting mock KMS servers... done." + ''', + ), + ] + + @classmethod + def call(cls, **kwargs): + return cls.default_call(**kwargs) + + +def functions(): + return RunKMSServers.defn() diff --git a/.evergreen/generated_configs/functions.yml b/.evergreen/generated_configs/functions.yml index 034f0201f3..74719c2b19 100644 --- a/.evergreen/generated_configs/functions.yml +++ b/.evergreen/generated_configs/functions.yml @@ -179,6 +179,51 @@ functions: args: - -c - python etc/clang_format.py lint + run_kms_servers: + - command: subprocess.exec + type: setup + params: + binary: bash + args: + - -c + - | + set -o errexit + echo "Preparing CSFLE venv environment..." + if [[ "${distro_id}" =~ windows-64-vs2015-* ]]; then + # Python: ImportError: DLL load failed while importing _rust: The specified procedure could not be found. + echo "Preparing CSFLE venv environment... skipped." + exit 0 + fi + cd ./drivers-evergreen-tools/.evergreen/csfle + # This function ensures future invocations of activate-kmstlsvenv.sh conducted in + # parallel do not race to setup a venv environment; it has already been prepared. + # This primarily addresses the situation where the "test" and "run_kms_servers" + # functions invoke 'activate-kmstlsvenv.sh' simultaneously. + . ./activate-kmstlsvenv.sh && deactivate + echo "Preparing CSFLE venv environment... done." + - command: subprocess.exec + type: setup + params: + binary: bash + background: true + args: + - -c + - | + set -o errexit + echo "Starting mock KMS servers..." + if [[ "${distro_id}" =~ windows-64-vs2015-* ]]; then + # Python: ImportError: DLL load failed while importing _rust: The specified procedure could not be found. + echo "Starting mock KMS servers... skipped." + exit 0 + fi + cd ./drivers-evergreen-tools/.evergreen/csfle + . ./activate-kmstlsvenv.sh + python -u kms_http_server.py --ca_file ../x509gen/ca.pem --cert_file ../x509gen/server.pem --port 8999 & + python -u kms_http_server.py --ca_file ../x509gen/ca.pem --cert_file ../x509gen/expired.pem --port 9000 & + python -u kms_http_server.py --ca_file ../x509gen/ca.pem --cert_file ../x509gen/wrong-host.pem --port 9001 & + python -u kms_http_server.py --ca_file ../x509gen/ca.pem --cert_file ../x509gen/server.pem --port 9002 --require_client_cert & + python -u kms_kmip_server.py & + echo "Starting mock KMS servers... done." run_mongohouse: command: subprocess.exec type: setup diff --git a/.mci.yml b/.mci.yml index afeb4e44ee..acef10b432 100644 --- a/.mci.yml +++ b/.mci.yml @@ -12,46 +12,6 @@ include: ####################################### functions: - "run_kms_servers": - - command: shell.exec - params: - shell: bash - script: |- - set -o errexit - echo "Preparing CSFLE venv environment..." - if [[ "${distro_id}" =~ windows-64-vs2015-* ]]; then - # Python: ImportError: DLL load failed while importing _rust: The specified procedure could not be found. - echo "Preparing CSFLE venv environment... skipped." - exit 0 - fi - cd ./drivers-evergreen-tools/.evergreen/csfle - # This function ensures future invocations of activate-kmstlsvenv.sh conducted in - # parallel do not race to setup a venv environment; it has already been prepared. - # This primarily addresses the situation where the "test" and "run_kms_servers" - # functions invoke 'activate-kmstlsvenv.sh' simultaneously. - . ./activate-kmstlsvenv.sh && deactivate - echo "Preparing CSFLE venv environment... done." - - command: shell.exec - params: - background: true - shell: bash - script: |- - set -o errexit - echo "Starting mock KMS servers..." - if [[ "${distro_id}" =~ windows-64-vs2015-* ]]; then - # Python: ImportError: DLL load failed while importing _rust: The specified procedure could not be found. - echo "Starting mock KMS servers... skipped." - exit 0 - fi - cd ./drivers-evergreen-tools/.evergreen/csfle - . ./activate-kmstlsvenv.sh - python -u kms_http_server.py --ca_file ../x509gen/ca.pem --cert_file ../x509gen/server.pem --port 8999 & - python -u kms_http_server.py --ca_file ../x509gen/ca.pem --cert_file ../x509gen/expired.pem --port 9000 & - python -u kms_http_server.py --ca_file ../x509gen/ca.pem --cert_file ../x509gen/wrong-host.pem --port 9001 & - python -u kms_http_server.py --ca_file ../x509gen/ca.pem --cert_file ../x509gen/server.pem --port 9002 --require_client_cert & - python -u kms_kmip_server.py & - echo "Starting mock KMS servers... done." - "compile": - command: shell.exec params: From ca454f57c5616dddcec6298f454f502023d103b3 Mon Sep 17 00:00:00 2001 From: Ezra Chung Date: Tue, 29 Oct 2024 15:28:27 -0500 Subject: [PATCH 26/78] functions: compile --- .../components/funcs/compile.py | 56 +++++++++++++++++++ .evergreen/generated_configs/functions.yml | 27 +++++++++ .../scripts}/compile.sh | 0 .gitattributes | 2 +- .mci.yml | 25 --------- 5 files changed, 84 insertions(+), 26 deletions(-) create mode 100644 .evergreen/config_generator/components/funcs/compile.py rename {.evergreen-old => .evergreen/scripts}/compile.sh (100%) diff --git a/.evergreen/config_generator/components/funcs/compile.py b/.evergreen/config_generator/components/funcs/compile.py new file mode 100644 index 0000000000..ab82d0663d --- /dev/null +++ b/.evergreen/config_generator/components/funcs/compile.py @@ -0,0 +1,56 @@ +from shrub.v3.evg_command import EvgCommandType + +from config_generator.etc.distros import compiler_to_vars +from config_generator.etc.function import Function +from config_generator.etc.utils import bash_exec + +from typing import Mapping + + +class Compile(Function): + name = 'compile' + commands = bash_exec( + command_type=EvgCommandType.TEST, + env={ + 'CC': '${cc_compiler}', + 'CXX': '${cxx_compiler}', + }, + include_expansions_in_env=[ + 'branch_name', + 'BSONCXX_POLYFILL', + 'build_type', + 'COMPILE_MACRO_GUARD_TESTS', + 'distro_id', + 'ENABLE_CODE_COVERAGE', + 'ENABLE_TESTS', + 'generator', + 'platform', + 'REQUIRED_CXX_STANDARD', + 'RUN_DISTCHECK', + 'USE_SANITIZER_ASAN', + 'USE_SANITIZER_UBSAN', + 'USE_STATIC_LIBS', + ], + working_dir='mongo-cxx-driver', + script='.evergreen/scripts/compile.sh', + ) + + @classmethod + def call( + cls, + build_type: str | None = None, + compiler: str | None = None, + polyfill: str | None = None, + vars: Mapping[str, str] = {} + ): + vars = vars if vars else {} + + vars |= {'build_type': build_type} if build_type else {} + vars |= compiler_to_vars(compiler) + vars |= {'BSONCXX_POLYFILL': polyfill} if polyfill else {} + + return cls.default_call(vars=vars if vars else None) + + +def functions(): + return Compile.defn() diff --git a/.evergreen/generated_configs/functions.yml b/.evergreen/generated_configs/functions.yml index 74719c2b19..3b7882f8d3 100644 --- a/.evergreen/generated_configs/functions.yml +++ b/.evergreen/generated_configs/functions.yml @@ -132,6 +132,33 @@ functions: args: - -c - ./etc/run-clang-tidy.sh + compile: + command: subprocess.exec + type: test + params: + binary: bash + working_dir: mongo-cxx-driver + env: + CC: ${cc_compiler} + CXX: ${cxx_compiler} + include_expansions_in_env: + - branch_name + - BSONCXX_POLYFILL + - build_type + - COMPILE_MACRO_GUARD_TESTS + - distro_id + - ENABLE_CODE_COVERAGE + - ENABLE_TESTS + - generator + - platform + - REQUIRED_CXX_STANDARD + - RUN_DISTCHECK + - USE_SANITIZER_ASAN + - USE_SANITIZER_UBSAN + - USE_STATIC_LIBS + args: + - -c + - .evergreen/scripts/compile.sh fetch-det: - command: subprocess.exec type: setup diff --git a/.evergreen-old/compile.sh b/.evergreen/scripts/compile.sh similarity index 100% rename from .evergreen-old/compile.sh rename to .evergreen/scripts/compile.sh diff --git a/.gitattributes b/.gitattributes index dae507c7ae..a3ac52a4d8 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1,5 +1,5 @@ .evergreen/build_example_projects.sh eol=lf -.evergreen/compile.sh eol=lf +.evergreen/scripts/compile.sh eol=lf .evergreen/install.sh eol=lf examples/projects/bsoncxx/cmake/shared/build.sh eol=lf examples/projects/bsoncxx/cmake/static/build.sh eol=lf diff --git a/.mci.yml b/.mci.yml index acef10b432..615bfe81d6 100644 --- a/.mci.yml +++ b/.mci.yml @@ -12,31 +12,6 @@ include: ####################################### functions: - "compile": - - command: shell.exec - params: - shell: bash - working_dir: "mongo-cxx-driver" - include_expansions_in_env: - - branch_name - - build_type - - BSONCXX_POLYFILL - - COMPILE_MACRO_GUARD_TESTS - - distro_id - - ENABLE_CODE_COVERAGE - - ENABLE_TESTS - - generator - - platform - - REQUIRED_CXX_STANDARD - - RUN_DISTCHECK - - USE_SANITIZER_ASAN - - USE_SANITIZER_UBSAN - - USE_STATIC_LIBS - env: - CC: ${cc_compiler} - CXX: ${cxx_compiler} - script: .evergreen-old/compile.sh - "compile_benchmarks": - command: shell.exec type: setup From db2e904181bf364dae8c8275feaf8a49e538c59d Mon Sep 17 00:00:00 2001 From: Ezra Chung Date: Tue, 29 Oct 2024 15:28:27 -0500 Subject: [PATCH 27/78] functions: compile_benchmarks --- .../components/funcs/compile_benchmarks.py | 30 +++++++++++++++++++ .evergreen/generated_configs/functions.yml | 16 ++++++++++ .mci.yml | 10 ------- 3 files changed, 46 insertions(+), 10 deletions(-) create mode 100644 .evergreen/config_generator/components/funcs/compile_benchmarks.py diff --git a/.evergreen/config_generator/components/funcs/compile_benchmarks.py b/.evergreen/config_generator/components/funcs/compile_benchmarks.py new file mode 100644 index 0000000000..e14ac68536 --- /dev/null +++ b/.evergreen/config_generator/components/funcs/compile_benchmarks.py @@ -0,0 +1,30 @@ +from shrub.v3.evg_command import EvgCommandType + +from config_generator.etc.function import Function +from config_generator.etc.utils import bash_exec + + +class CompileBenchmarks(Function): + name = 'compile_benchmarks' + commands = bash_exec( + command_type=EvgCommandType.SETUP, + env={ + 'CC': '${cc_compiler}', + 'CXX': '${cxx_compiler}', + }, + working_dir='mongo-cxx-driver', + script='''\ + set -o errexit + set -o pipefail + cmake -S . -B build -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH="$(pwd)/../mongoc" -DCMAKE_CXX_STANDARD=20 + cmake --build build --target microbenchmarks --parallel 64 + ''' + ) + + @classmethod + def call(cls, **kwargs): + return cls.default_call(**kwargs) + + +def functions(): + return CompileBenchmarks.defn() diff --git a/.evergreen/generated_configs/functions.yml b/.evergreen/generated_configs/functions.yml index 3b7882f8d3..6042e1291d 100644 --- a/.evergreen/generated_configs/functions.yml +++ b/.evergreen/generated_configs/functions.yml @@ -159,6 +159,22 @@ functions: args: - -c - .evergreen/scripts/compile.sh + compile_benchmarks: + command: subprocess.exec + type: setup + params: + binary: bash + working_dir: mongo-cxx-driver + env: + CC: ${cc_compiler} + CXX: ${cxx_compiler} + args: + - -c + - | + set -o errexit + set -o pipefail + cmake -S . -B build -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH="$(pwd)/../mongoc" -DCMAKE_CXX_STANDARD=20 + cmake --build build --target microbenchmarks --parallel 64 fetch-det: - command: subprocess.exec type: setup diff --git a/.mci.yml b/.mci.yml index 615bfe81d6..a887aa6d0d 100644 --- a/.mci.yml +++ b/.mci.yml @@ -12,16 +12,6 @@ include: ####################################### functions: - "compile_benchmarks": - - command: shell.exec - type: setup - params: - shell: bash - working_dir: "mongo-cxx-driver" - script: | - cmake -S . -B build -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH="$(pwd)/../mongoc" -DCMAKE_CXX_STANDARD=20 - cmake --build build --target microbenchmarks --parallel 64 - "test": - command: shell.exec params: From acfb9fe887e7e7c94382be13d940ede0c462fa5c Mon Sep 17 00:00:00 2001 From: Ezra Chung Date: Tue, 29 Oct 2024 15:28:28 -0500 Subject: [PATCH 28/78] functions: test --- .evergreen-old/build_example_projects.sh | 32 ----------- .../config_generator/components/funcs/test.py | 57 +++++++++++++++++++ .evergreen/generated_configs/functions.yml | 36 ++++++++++++ .evergreen/scripts/build-example-projects.sh | 32 +++++++++++ .../scripts}/test.sh | 2 +- .gitattributes | 2 +- .mci.yml | 34 ----------- 7 files changed, 127 insertions(+), 68 deletions(-) delete mode 100755 .evergreen-old/build_example_projects.sh create mode 100644 .evergreen/config_generator/components/funcs/test.py create mode 100755 .evergreen/scripts/build-example-projects.sh rename {.evergreen-old => .evergreen/scripts}/test.sh (99%) diff --git a/.evergreen-old/build_example_projects.sh b/.evergreen-old/build_example_projects.sh deleted file mode 100755 index 066b8b9f04..0000000000 --- a/.evergreen-old/build_example_projects.sh +++ /dev/null @@ -1,32 +0,0 @@ -#!/usr/bin/env bash - -set -o errexit -set -o pipefail - -if [ "$USE_STATIC_LIBS" ]; then - DIR=static -else - DIR=shared -fi - -cd examples/projects - -for project in bsoncxx mongocxx; do -( - cd $project - - if ! ( cd cmake/$DIR && ./build.sh >|output.txt 2>&1); then - echo "Example $project/cmake/$DIR failed" 1>&2 - cat cmake/$DIR/output.txt 1>&2 - exit 1 - fi - - if [[ ! ( "$OSTYPE" =~ cygwin ) ]]; then - if ! ( cd pkg-config/$DIR && ./build.sh >|output.txt 2>&1); then - echo "Example $project/pkg-config/$DIR failed" 1>&2 - cat pkg-config/$DIR/output.txt 1>&2 - exit 1 - fi - fi -) -done diff --git a/.evergreen/config_generator/components/funcs/test.py b/.evergreen/config_generator/components/funcs/test.py new file mode 100644 index 0000000000..3e80af967a --- /dev/null +++ b/.evergreen/config_generator/components/funcs/test.py @@ -0,0 +1,57 @@ +from shrub.v3.evg_command import EvgCommandType + +from config_generator.etc.distros import compiler_to_vars +from config_generator.etc.function import Function +from config_generator.etc.utils import bash_exec + +from typing import Mapping + + +class Test(Function): + name = 'test' + commands = bash_exec( + command_type=EvgCommandType.TEST, + include_expansions_in_env=[ + 'build_type', + 'CRYPT_SHARED_LIB_PATH', # Set by run-orchestration.sh in "start_mongod". + 'cse_aws_access_key_id', + 'cse_aws_secret_access_key', + 'cse_azure_client_id', + 'cse_azure_client_secret', + 'cse_azure_tenant_id', + 'cse_gcp_email', + 'cse_gcp_privatekey', + 'disable_slow_tests', + 'distro_id', + 'example_projects_cc', + 'example_projects_cxx', + 'example_projects_cxx_standard', + 'example_projects_cxxflags', + 'example_projects_ldflags', + 'generator', + 'lib_dir', + 'MONGOCXX_TEST_TOPOLOGY', + 'MONGODB_API_VERSION', + 'platform', + 'TEST_WITH_ASAN', + 'TEST_WITH_UBSAN', + 'TEST_WITH_VALGRIND', + 'use_mongocryptd', + 'USE_STATIC_LIBS', + ], + working_dir='mongo-cxx-driver', + script='.evergreen/scripts/test.sh', + ) + + @classmethod + def call(cls, build_type: str | None = None, compiler: str | None = None, vars: Mapping[str, str] = {}): + vars = vars if vars else {} + + vars |= {'build_type': build_type} if build_type else {} + vars |= compiler_to_vars(compiler) + + return cls.default_call(vars=vars if vars else None) + + +def functions(): + return Test.defn() diff --git a/.evergreen/generated_configs/functions.yml b/.evergreen/generated_configs/functions.yml index 6042e1291d..5812575179 100644 --- a/.evergreen/generated_configs/functions.yml +++ b/.evergreen/generated_configs/functions.yml @@ -347,6 +347,42 @@ functions: mongo-orchestration stop fi fi + test: + command: subprocess.exec + type: test + params: + binary: bash + working_dir: mongo-cxx-driver + include_expansions_in_env: + - build_type + - CRYPT_SHARED_LIB_PATH + - cse_aws_access_key_id + - cse_aws_secret_access_key + - cse_azure_client_id + - cse_azure_client_secret + - cse_azure_tenant_id + - cse_gcp_email + - cse_gcp_privatekey + - disable_slow_tests + - distro_id + - example_projects_cc + - example_projects_cxx + - example_projects_cxx_standard + - example_projects_cxxflags + - example_projects_ldflags + - generator + - lib_dir + - MONGOCXX_TEST_TOPOLOGY + - MONGODB_API_VERSION + - platform + - TEST_WITH_ASAN + - TEST_WITH_UBSAN + - TEST_WITH_VALGRIND + - use_mongocryptd + - USE_STATIC_LIBS + args: + - -c + - .evergreen/scripts/test.sh test_mongohouse: command: subprocess.exec type: test diff --git a/.evergreen/scripts/build-example-projects.sh b/.evergreen/scripts/build-example-projects.sh new file mode 100755 index 0000000000..6ea3ecf28b --- /dev/null +++ b/.evergreen/scripts/build-example-projects.sh @@ -0,0 +1,32 @@ +#!/usr/bin/env bash + +set -o errexit +set -o pipefail + +if [ "$USE_STATIC_LIBS" ]; then + DIR=static +else + DIR=shared +fi + +cd examples/projects + +for project in bsoncxx mongocxx; do + ( + cd $project + + if ! (cd cmake/$DIR && ./build.sh >|output.txt 2>&1); then + echo "Example $project/cmake/$DIR failed" 1>&2 + cat cmake/$DIR/output.txt 1>&2 + exit 1 + fi + + if [[ ! ("$OSTYPE" =~ cygwin) ]]; then + if ! (cd pkg-config/$DIR && ./build.sh >|output.txt 2>&1); then + echo "Example $project/pkg-config/$DIR failed" 1>&2 + cat pkg-config/$DIR/output.txt 1>&2 + exit 1 + fi + fi + ) +done diff --git a/.evergreen-old/test.sh b/.evergreen/scripts/test.sh similarity index 99% rename from .evergreen-old/test.sh rename to .evergreen/scripts/test.sh index ce150ef3c1..25bd4ed214 100755 --- a/.evergreen-old/test.sh +++ b/.evergreen/scripts/test.sh @@ -357,7 +357,7 @@ fi # is true. if [[ -z "${MONGODB_API_VERSION:-}" ]]; then echo "Building example projects..." - .evergreen-old/build_example_projects.sh + .evergreen/scripts/build-example-projects.sh echo "Building example projects... done." fi unset MONGODB_API_VERSION diff --git a/.gitattributes b/.gitattributes index a3ac52a4d8..da9776298b 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1,4 +1,4 @@ -.evergreen/build_example_projects.sh eol=lf +.evergreen/scripts/build-example-projects.sh eol=lf .evergreen/scripts/compile.sh eol=lf .evergreen/install.sh eol=lf examples/projects/bsoncxx/cmake/shared/build.sh eol=lf diff --git a/.mci.yml b/.mci.yml index a887aa6d0d..9dfa211441 100644 --- a/.mci.yml +++ b/.mci.yml @@ -12,40 +12,6 @@ include: ####################################### functions: - "test": - - command: shell.exec - params: - shell: bash - working_dir: "mongo-cxx-driver" - include_expansions_in_env: - - build_type - - CRYPT_SHARED_LIB_PATH # Set by run-orchestration.sh in "start_mongod". - - cse_aws_access_key_id - - cse_aws_secret_access_key - - cse_azure_client_id - - cse_azure_client_secret - - cse_azure_tenant_id - - cse_gcp_email - - cse_gcp_privatekey - - disable_slow_tests - - distro_id - - example_projects_cc - - example_projects_cxx - - example_projects_cxx_standard - - example_projects_cxxflags - - example_projects_ldflags - - generator - - lib_dir - - MONGOCXX_TEST_TOPOLOGY - - MONGODB_API_VERSION - - platform - - TEST_WITH_ASAN - - TEST_WITH_UBSAN - - TEST_WITH_VALGRIND - - use_mongocryptd - - USE_STATIC_LIBS - script: .evergreen-old/test.sh - "test auth": - command: shell.exec params: From 19920bd5380ecf157ebad5e1e4b5fe32d0a6eec0 Mon Sep 17 00:00:00 2001 From: Ezra Chung Date: Tue, 29 Oct 2024 15:28:28 -0500 Subject: [PATCH 29/78] functions: test auth --- .../components/funcs/test_auth.py | 29 +++++++++++++++++++ .evergreen/generated_configs/functions.yml | 16 ++++++++++ .mci.yml | 15 ---------- 3 files changed, 45 insertions(+), 15 deletions(-) create mode 100644 .evergreen/config_generator/components/funcs/test_auth.py diff --git a/.evergreen/config_generator/components/funcs/test_auth.py b/.evergreen/config_generator/components/funcs/test_auth.py new file mode 100644 index 0000000000..02e61a251b --- /dev/null +++ b/.evergreen/config_generator/components/funcs/test_auth.py @@ -0,0 +1,29 @@ +from shrub.v3.evg_command import EvgCommandType + +from config_generator.etc.function import Function +from config_generator.etc.utils import bash_exec + + +class TestAuth(Function): + name = 'test auth' + commands = bash_exec( + command_type=EvgCommandType.TEST, + working_dir='mongo-cxx-driver', + script='''\ + export MONGOC_INSTALL_PREFIX=$(pwd)/../mongoc + export MONGOCXX_INSTALL_PREFIX=$(pwd)/build/install + export LIB_DIR=${lib_dir} + export BUILD_TYPE=${build_type} + export BUILD_DIR=$(pwd)/build + export URI="mongodb://bob:pwd123@localhost" + ./.evergreen/scripts/connect.sh + ''' + ) + + @classmethod + def call(cls, **kwargs): + return cls.default_call(**kwargs) + + +def functions(): + return TestAuth.defn() diff --git a/.evergreen/generated_configs/functions.yml b/.evergreen/generated_configs/functions.yml index 5812575179..018cd45963 100644 --- a/.evergreen/generated_configs/functions.yml +++ b/.evergreen/generated_configs/functions.yml @@ -383,6 +383,22 @@ functions: args: - -c - .evergreen/scripts/test.sh + test auth: + command: subprocess.exec + type: test + params: + binary: bash + working_dir: mongo-cxx-driver + args: + - -c + - | + export MONGOC_INSTALL_PREFIX=$(pwd)/../mongoc + export MONGOCXX_INSTALL_PREFIX=$(pwd)/build/install + export LIB_DIR=${lib_dir} + export BUILD_TYPE=${build_type} + export BUILD_DIR=$(pwd)/build + export URI="mongodb://bob:pwd123@localhost" + ./.evergreen/scripts/connect.sh test_mongohouse: command: subprocess.exec type: test diff --git a/.mci.yml b/.mci.yml index 9dfa211441..7e04afd2a5 100644 --- a/.mci.yml +++ b/.mci.yml @@ -12,21 +12,6 @@ include: ####################################### functions: - "test auth": - - command: shell.exec - params: - shell: bash - working_dir: "mongo-cxx-driver" - script: | - - export MONGOC_INSTALL_PREFIX=$(pwd)/../mongoc - export MONGOCXX_INSTALL_PREFIX=$(pwd)/build/install - export LIB_DIR=${lib_dir} - export BUILD_TYPE=${build_type} - export BUILD_DIR=$(pwd)/build - export URI="mongodb://bob:pwd123@localhost" - ./.evergreen-old/connect.sh - "test atlas connectivity": - command: shell.exec params: From d1a5945be78f89c4f2b29e2392c532c60439a30a Mon Sep 17 00:00:00 2001 From: Ezra Chung Date: Tue, 29 Oct 2024 15:28:28 -0500 Subject: [PATCH 30/78] functions: test atlas connectivity --- .../funcs/test_atlas_connectivity.py | 33 +++++++++++++++++++ .evergreen/generated_configs/functions.yml | 20 +++++++++++ .../scripts}/connect.sh | 22 ++++++------- .mci.yml | 19 ----------- 4 files changed, 64 insertions(+), 30 deletions(-) create mode 100644 .evergreen/config_generator/components/funcs/test_atlas_connectivity.py rename {.evergreen-old => .evergreen/scripts}/connect.sh (71%) diff --git a/.evergreen/config_generator/components/funcs/test_atlas_connectivity.py b/.evergreen/config_generator/components/funcs/test_atlas_connectivity.py new file mode 100644 index 0000000000..f407a48b41 --- /dev/null +++ b/.evergreen/config_generator/components/funcs/test_atlas_connectivity.py @@ -0,0 +1,33 @@ +from shrub.v3.evg_command import EvgCommandType + +from config_generator.etc.function import Function +from config_generator.etc.utils import bash_exec + + +class TestAtlasConnectivity(Function): + name = 'test atlas connectivity' + commands = bash_exec( + command_type=EvgCommandType.TEST, + silent=True, + working_dir='mongo-cxx-driver', + script='''\ + export MONGOC_INSTALL_PREFIX=$(pwd)/../mongoc + export MONGOCXX_INSTALL_PREFIX=$(pwd)/build/install + export LIB_DIR=${lib_dir} + export BUILD_TYPE=${build_type} + export BUILD_DIR=$(pwd)/build + + # The atlas_serverless_uri expansion is set in the Evergreen project settings. + export URI="${atlas_serverless_uri}" + + ./.evergreen/scripts/connect.sh + ''' + ) + + @classmethod + def call(cls, **kwargs): + return cls.default_call(**kwargs) + + +def functions(): + return TestAtlasConnectivity.defn() diff --git a/.evergreen/generated_configs/functions.yml b/.evergreen/generated_configs/functions.yml index 018cd45963..96ef1e4c95 100644 --- a/.evergreen/generated_configs/functions.yml +++ b/.evergreen/generated_configs/functions.yml @@ -383,6 +383,26 @@ functions: args: - -c - .evergreen/scripts/test.sh + test atlas connectivity: + command: subprocess.exec + type: test + params: + binary: bash + working_dir: mongo-cxx-driver + silent: true + args: + - -c + - | + export MONGOC_INSTALL_PREFIX=$(pwd)/../mongoc + export MONGOCXX_INSTALL_PREFIX=$(pwd)/build/install + export LIB_DIR=${lib_dir} + export BUILD_TYPE=${build_type} + export BUILD_DIR=$(pwd)/build + + # The atlas_serverless_uri expansion is set in the Evergreen project settings. + export URI="${atlas_serverless_uri}" + + ./.evergreen/scripts/connect.sh test auth: command: subprocess.exec type: test diff --git a/.evergreen-old/connect.sh b/.evergreen/scripts/connect.sh similarity index 71% rename from .evergreen-old/connect.sh rename to .evergreen/scripts/connect.sh index 06f97802bc..7a2b010bfd 100755 --- a/.evergreen-old/connect.sh +++ b/.evergreen/scripts/connect.sh @@ -6,9 +6,9 @@ set -o pipefail LIB_DIR=${LIB_DIR:-"lib"} BUILD_TYPE=${BUILD_TYPE:-"Debug"} -print_usage_and_exit () { - echo "Error: $1" - cat << EOF +print_usage_and_exit() { + echo "Error: $1" + cat < Date: Tue, 29 Oct 2024 15:28:28 -0500 Subject: [PATCH 31/78] functions: backtrace --- .../components/funcs/backtrace.py | 21 +++++++++++++++++ .evergreen/generated_configs/functions.yml | 9 ++++++++ .mci.yml | 6 ----- etc/debug-core-evergreen.sh | 23 +++++++++++-------- 4 files changed, 43 insertions(+), 16 deletions(-) create mode 100644 .evergreen/config_generator/components/funcs/backtrace.py diff --git a/.evergreen/config_generator/components/funcs/backtrace.py b/.evergreen/config_generator/components/funcs/backtrace.py new file mode 100644 index 0000000000..350f19d663 --- /dev/null +++ b/.evergreen/config_generator/components/funcs/backtrace.py @@ -0,0 +1,21 @@ +from shrub.v3.evg_command import EvgCommandType + +from config_generator.etc.function import Function +from config_generator.etc.utils import bash_exec + + +class Backtrace(Function): + name = 'backtrace' + commands = bash_exec( + command_type=EvgCommandType.SYSTEM, + working_dir='mongo-cxx-driver', + script='etc/debug-core-evergreen.sh', + ) + + @classmethod + def call(cls, **kwargs): + return cls.default_call(**kwargs) + + +def functions(): + return Backtrace.defn() diff --git a/.evergreen/generated_configs/functions.yml b/.evergreen/generated_configs/functions.yml index 96ef1e4c95..2b6ebfedf5 100644 --- a/.evergreen/generated_configs/functions.yml +++ b/.evergreen/generated_configs/functions.yml @@ -103,6 +103,15 @@ functions: local_files_include_filter: cxx-noabi/*.txt permissions: public-read remote_file: mongo-cxx-driver/${branch_name}/${revision}/${version_id}/${build_id}/${execution}/abidiff/noabi/ + backtrace: + command: subprocess.exec + type: system + params: + binary: bash + working_dir: mongo-cxx-driver + args: + - -c + - etc/debug-core-evergreen.sh build_mongohouse: command: subprocess.exec type: setup diff --git a/.mci.yml b/.mci.yml index 7de4ca76b4..f734c87f77 100644 --- a/.mci.yml +++ b/.mci.yml @@ -12,12 +12,6 @@ include: ####################################### functions: - "backtrace": - - command: shell.exec - params: - working_dir: "mongo-cxx-driver" - script: | - ./etc/debug-core-evergreen.sh "upload working dir": - command: archive.targz_pack params: diff --git a/etc/debug-core-evergreen.sh b/etc/debug-core-evergreen.sh index 65481fa7cf..37859436ea 100755 --- a/etc/debug-core-evergreen.sh +++ b/etc/debug-core-evergreen.sh @@ -1,8 +1,11 @@ #!/usr/bin/env bash -if ! which gdb > /dev/null; then - echo "gdb not found. Will not search for core files" - exit 0 +set -o errexit +set -o pipefail + +if ! which gdb >/dev/null; then + echo "gdb not found. Will not search for core files" + exit 0 fi echo "Debugging core files" @@ -11,13 +14,13 @@ cd build shopt -s nullglob for i in *.core; do - echo $i - # find out which executable corresponds to the core dump - # file produces a string like: - # ./core: ELF 64-bit LSB core file x86-64, version 1 (SYSV), SVR4-style, from './a.out' - binary_path=$(file $i | awk '{print $NF}'| awk -F "'" '{print $2}') - echo "core dump produced by ${binary_path}" - echo "backtrace full" | gdb -q $binary_path $i + echo "${i:?}" + # find out which executable corresponds to the core dump + # file produces a string like: + # ./core: ELF 64-bit LSB core file x86-64, version 1 (SYSV), SVR4-style, from './a.out' + binary_path="$(file "${i:?}" | awk '{print $NF}' | awk -F "'" '{print $2}')" + echo "core dump produced by ${binary_path:?}" + echo "backtrace full" | gdb -q "${binary_path:?}" "${i:?}" done cd .. From 9d6f0397b6f6f072580b9c2580a20ea12fa48561 Mon Sep 17 00:00:00 2001 From: Ezra Chung Date: Tue, 29 Oct 2024 15:28:29 -0500 Subject: [PATCH 32/78] functions: upload working dir --- .../components/funcs/upload_working_dir.py | 34 +++++++++++++++++++ .evergreen/generated_configs/functions.yml | 19 +++++++++++ .mci.yml | 18 ---------- 3 files changed, 53 insertions(+), 18 deletions(-) create mode 100644 .evergreen/config_generator/components/funcs/upload_working_dir.py diff --git a/.evergreen/config_generator/components/funcs/upload_working_dir.py b/.evergreen/config_generator/components/funcs/upload_working_dir.py new file mode 100644 index 0000000000..2a704c62a5 --- /dev/null +++ b/.evergreen/config_generator/components/funcs/upload_working_dir.py @@ -0,0 +1,34 @@ +from shrub.v3.evg_command import EvgCommandType, archive_targz_pack, s3_put + +from config_generator.etc.function import Function + + +class UploadWorkingDir(Function): + name = 'upload working dir' + commands = [ + archive_targz_pack( + command_type=EvgCommandType.SYSTEM, + include=['./**'], + source_dir='mongo-cxx-driver', + target='working-dir.tar.gz', + ), + s3_put( + command_type=EvgCommandType.SYSTEM, + aws_key='${aws_key}', + aws_secret='${aws_secret}', + bucket='mciuploads', + content_type='${content_type|application/x-gzip}', + display_name='working-dir.tar.gz', + local_file='working-dir.tar.gz', + permissions='public-read', + remote_file='mongo-cxx-driver/${build_variant}/${revision}/${version_id}/${build_id}/artifacts/${task_id}-${execution}-working-dir.tar.gz', + ), + ] + + @classmethod + def call(cls, **kwargs): + return cls.default_call(**kwargs) + + +def functions(): + return UploadWorkingDir.defn() diff --git a/.evergreen/generated_configs/functions.yml b/.evergreen/generated_configs/functions.yml index 2b6ebfedf5..de620118da 100644 --- a/.evergreen/generated_configs/functions.yml +++ b/.evergreen/generated_configs/functions.yml @@ -437,3 +437,22 @@ functions: args: - -c - .evergreen/scripts/test-mongohouse.sh + upload working dir: + - command: archive.targz_pack + type: system + params: + include: + - ./** + source_dir: mongo-cxx-driver + target: working-dir.tar.gz + - command: s3.put + type: system + params: + display_name: working-dir.tar.gz + aws_key: ${aws_key} + aws_secret: ${aws_secret} + bucket: mciuploads + content_type: ${content_type|application/x-gzip} + local_file: working-dir.tar.gz + permissions: public-read + remote_file: mongo-cxx-driver/${build_variant}/${revision}/${version_id}/${build_id}/artifacts/${task_id}-${execution}-working-dir.tar.gz diff --git a/.mci.yml b/.mci.yml index f734c87f77..772d0747ee 100644 --- a/.mci.yml +++ b/.mci.yml @@ -12,24 +12,6 @@ include: ####################################### functions: - "upload working dir": - - command: archive.targz_pack - params: - target: "working-dir.tar.gz" - source_dir: "mongo-cxx-driver" - include: - - "./**" - - command: s3.put - params: - aws_key: ${aws_key} - aws_secret: ${aws_secret} - local_file: working-dir.tar.gz - remote_file: mongo-cxx-driver/${build_variant}/${revision}/${version_id}/${build_id}/artifacts/${task_id}-${execution}-working-dir.tar.gz - bucket: mciuploads - permissions: public-read - content_type: ${content_type|application/x-gzip} - display_name: "working-dir.tar.gz" - "upload mongo orchestration artifacts": - command: subprocess.exec params: From a8a7956676749addc3a1e44d5c00814799ae24e0 Mon Sep 17 00:00:00 2001 From: Ezra Chung Date: Tue, 29 Oct 2024 15:28:29 -0500 Subject: [PATCH 33/78] functions: upload mongo orchestration artifacts --- .../upload_mongo_orchestration_artifacts.py | 42 +++++++++++++++++++ .evergreen/generated_configs/functions.yml | 27 ++++++++++++ .mci.yml | 26 ------------ 3 files changed, 69 insertions(+), 26 deletions(-) create mode 100644 .evergreen/config_generator/components/funcs/upload_mongo_orchestration_artifacts.py diff --git a/.evergreen/config_generator/components/funcs/upload_mongo_orchestration_artifacts.py b/.evergreen/config_generator/components/funcs/upload_mongo_orchestration_artifacts.py new file mode 100644 index 0000000000..2ac684b03a --- /dev/null +++ b/.evergreen/config_generator/components/funcs/upload_mongo_orchestration_artifacts.py @@ -0,0 +1,42 @@ +from shrub.v3.evg_command import EvgCommandType, s3_put + +from config_generator.etc.function import Function +from config_generator.etc.utils import bash_exec + + +class UploadMongoOrchestrationArtifacts(Function): + name = 'upload mongo orchestration artifacts' + commands = [ + bash_exec( + command_type=EvgCommandType.SYSTEM, + script='''\ + set -o errexit + for log in $(find . -name '*.log'); do + tar rf mongodb-logs.tar "$log" + done + if [[ -f mongodb-logs.tar ]]; then + gzip mongodb-logs.tar + fi + ''' + ), + s3_put( + command_type=EvgCommandType.SYSTEM, + aws_key='${aws_key}', + aws_secret='${aws_secret}', + bucket='mciuploads', + content_type='${content_type|application/x-gzip}', + display_name='mongodb-logs.tar.gz', + local_file='mongodb-logs.tar.gz', + optional=True, + permissions='public-read', + remote_file='mongo-cxx-driver/${build_variant}/${revision}/${version_id}/${build_id}/logs/${task_id}-${execution}-mongodb-logs.tar.gz', + ), + ] + + @classmethod + def call(cls, **kwargs): + return cls.default_call(**kwargs) + + +def functions(): + return UploadMongoOrchestrationArtifacts.defn() diff --git a/.evergreen/generated_configs/functions.yml b/.evergreen/generated_configs/functions.yml index de620118da..c8ad356479 100644 --- a/.evergreen/generated_configs/functions.yml +++ b/.evergreen/generated_configs/functions.yml @@ -437,6 +437,33 @@ functions: args: - -c - .evergreen/scripts/test-mongohouse.sh + upload mongo orchestration artifacts: + - command: subprocess.exec + type: system + params: + binary: bash + args: + - -c + - | + set -o errexit + for log in $(find . -name '*.log'); do + tar rf mongodb-logs.tar "$log" + done + if [[ -f mongodb-logs.tar ]]; then + gzip mongodb-logs.tar + fi + - command: s3.put + type: system + params: + display_name: mongodb-logs.tar.gz + aws_key: ${aws_key} + aws_secret: ${aws_secret} + bucket: mciuploads + content_type: ${content_type|application/x-gzip} + local_file: mongodb-logs.tar.gz + optional: true + permissions: public-read + remote_file: mongo-cxx-driver/${build_variant}/${revision}/${version_id}/${build_id}/logs/${task_id}-${execution}-mongodb-logs.tar.gz upload working dir: - command: archive.targz_pack type: system diff --git a/.mci.yml b/.mci.yml index 772d0747ee..4e85a84ee6 100644 --- a/.mci.yml +++ b/.mci.yml @@ -12,32 +12,6 @@ include: ####################################### functions: - "upload mongo orchestration artifacts": - - command: subprocess.exec - params: - binary: bash - args: - - -c - - | - set -o errexit - for log in $(find . -name '*.log'); do - tar rf mongodb-logs.tar "$log" - done - if [[ -f mongodb-logs.tar ]]; then - gzip mongodb-logs.tar - fi - - command: s3.put - params: - optional: true - aws_key: ${aws_key} - aws_secret: ${aws_secret} - local_file: mongodb-logs.tar.gz - remote_file: mongo-cxx-driver/${build_variant}/${revision}/${version_id}/${build_id}/logs/${task_id}-${execution}-mongodb-logs.tar.gz - bucket: mciuploads - permissions: public-read - content_type: ${content_type|application/x-gzip} - display_name: "mongodb-logs.tar.gz" - "upload code coverage": - command: subprocess.exec params: From eec53198aff83e7af877131af9b8bdf1672634fa Mon Sep 17 00:00:00 2001 From: Ezra Chung Date: Tue, 29 Oct 2024 15:28:29 -0500 Subject: [PATCH 34/78] functions: upload code coverage --- .../components/funcs/upload_code_coverage.py | 22 +++++++++++++++++++ .evergreen/generated_configs/functions.yml | 11 ++++++++++ .../scripts}/upload-code-coverage.sh | 0 .mci.yml | 8 ------- 4 files changed, 33 insertions(+), 8 deletions(-) create mode 100644 .evergreen/config_generator/components/funcs/upload_code_coverage.py rename {.evergreen-old => .evergreen/scripts}/upload-code-coverage.sh (100%) diff --git a/.evergreen/config_generator/components/funcs/upload_code_coverage.py b/.evergreen/config_generator/components/funcs/upload_code_coverage.py new file mode 100644 index 0000000000..107c4f0317 --- /dev/null +++ b/.evergreen/config_generator/components/funcs/upload_code_coverage.py @@ -0,0 +1,22 @@ +from shrub.v3.evg_command import EvgCommandType + +from config_generator.etc.function import Function +from config_generator.etc.utils import bash_exec + + +class UploadCodeCoverage(Function): + name = 'upload code coverage' + commands = bash_exec( + command_type=EvgCommandType.SYSTEM, + include_expansions_in_env=['codecov_token'], + working_dir='mongo-cxx-driver', + script='.evergreen/scripts/upload-code-coverage.sh', + ) + + @classmethod + def call(cls, **kwargs): + return cls.default_call(**kwargs) + + +def functions(): + return UploadCodeCoverage.defn() diff --git a/.evergreen/generated_configs/functions.yml b/.evergreen/generated_configs/functions.yml index c8ad356479..6b0b0cc2c7 100644 --- a/.evergreen/generated_configs/functions.yml +++ b/.evergreen/generated_configs/functions.yml @@ -437,6 +437,17 @@ functions: args: - -c - .evergreen/scripts/test-mongohouse.sh + upload code coverage: + command: subprocess.exec + type: system + params: + binary: bash + working_dir: mongo-cxx-driver + include_expansions_in_env: + - codecov_token + args: + - -c + - .evergreen/scripts/upload-code-coverage.sh upload mongo orchestration artifacts: - command: subprocess.exec type: system diff --git a/.evergreen-old/upload-code-coverage.sh b/.evergreen/scripts/upload-code-coverage.sh similarity index 100% rename from .evergreen-old/upload-code-coverage.sh rename to .evergreen/scripts/upload-code-coverage.sh diff --git a/.mci.yml b/.mci.yml index 4e85a84ee6..639ec18c2b 100644 --- a/.mci.yml +++ b/.mci.yml @@ -12,14 +12,6 @@ include: ####################################### functions: - "upload code coverage": - - command: subprocess.exec - params: - binary: bash - working_dir: "mongo-cxx-driver" - args: [-c, .evergreen-old/upload-code-coverage.sh] - include_expansions_in_env: [codecov_token] - "docker-image-build": - command: shell.exec params: From 081a9180c3ee6d2a35411d21113aca24bdb3bc5b Mon Sep 17 00:00:00 2001 From: Ezra Chung Date: Tue, 29 Oct 2024 15:28:29 -0500 Subject: [PATCH 35/78] functions: docker-image-build --- .../components/funcs/docker_image_build.py | 33 +++++++++++++++++++ .evergreen/generated_configs/functions.yml | 20 +++++++++++ .mci.yml | 18 ---------- 3 files changed, 53 insertions(+), 18 deletions(-) create mode 100644 .evergreen/config_generator/components/funcs/docker_image_build.py diff --git a/.evergreen/config_generator/components/funcs/docker_image_build.py b/.evergreen/config_generator/components/funcs/docker_image_build.py new file mode 100644 index 0000000000..ed26865d31 --- /dev/null +++ b/.evergreen/config_generator/components/funcs/docker_image_build.py @@ -0,0 +1,33 @@ +from shrub.v3.evg_command import EvgCommandType + +from config_generator.etc.function import Function +from config_generator.etc.utils import bash_exec + + +class DockerImageBuild(Function): + name = 'docker-image-build' + commands = bash_exec( + command_type=EvgCommandType.TEST, + working_dir='mongo-cxx-driver', + script='''\ + set -o errexit + set -o pipefail + set -x + echo "Building Alpine Docker image" + make -C extras/docker/alpine3.19 nocachebuild test + echo "Building Debian Docker image" + make -C extras/docker/bookworm nocachebuild test + echo "Building Red Hat UBI Docker image" + make -C extras/docker/redhat-ubi-9.4 nocachebuild test + echo "Building Ubuntu Docker image" + make -C extras/docker/noble nocachebuild test + ''' + ) + + @classmethod + def call(cls, **kwargs): + return cls.default_call(**kwargs) + + +def functions(): + return DockerImageBuild.defn() diff --git a/.evergreen/generated_configs/functions.yml b/.evergreen/generated_configs/functions.yml index 6b0b0cc2c7..390e38aa74 100644 --- a/.evergreen/generated_configs/functions.yml +++ b/.evergreen/generated_configs/functions.yml @@ -184,6 +184,26 @@ functions: set -o pipefail cmake -S . -B build -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH="$(pwd)/../mongoc" -DCMAKE_CXX_STANDARD=20 cmake --build build --target microbenchmarks --parallel 64 + docker-image-build: + command: subprocess.exec + type: test + params: + binary: bash + working_dir: mongo-cxx-driver + args: + - -c + - | + set -o errexit + set -o pipefail + set -x + echo "Building Alpine Docker image" + make -C extras/docker/alpine3.19 nocachebuild test + echo "Building Debian Docker image" + make -C extras/docker/bookworm nocachebuild test + echo "Building Red Hat UBI Docker image" + make -C extras/docker/redhat-ubi-9.4 nocachebuild test + echo "Building Ubuntu Docker image" + make -C extras/docker/noble nocachebuild test fetch-det: - command: subprocess.exec type: setup diff --git a/.mci.yml b/.mci.yml index 639ec18c2b..88fb76be05 100644 --- a/.mci.yml +++ b/.mci.yml @@ -12,24 +12,6 @@ include: ####################################### functions: - "docker-image-build": - - command: shell.exec - params: - shell: bash - working_dir: "mongo-cxx-driver" - script: | - set -o errexit - set -o pipefail - set -x - echo "Building Alpine Docker image" - make -C extras/docker/alpine3.19 nocachebuild test - echo "Building Debian Docker image" - make -C extras/docker/bookworm nocachebuild test - echo "Building Red Hat UBI Docker image" - make -C extras/docker/redhat-ubi-9.4 nocachebuild test - echo "Building Ubuntu Docker image" - make -C extras/docker/noble nocachebuild test - "run benchmarks": - command: shell.exec type: setup From 082129b590f9c26fee3587b9037e8c1daf4111d5 Mon Sep 17 00:00:00 2001 From: Ezra Chung Date: Tue, 29 Oct 2024 15:28:30 -0500 Subject: [PATCH 36/78] functions: run benchmarks --- .../components/funcs/run_benchmarks.py | 37 +++++++++++++++++++ .evergreen/generated_configs/functions.yml | 22 +++++++++++ .mci.yml | 18 --------- etc/microbenchmark-test-data.sh | 14 +++---- 4 files changed, 66 insertions(+), 25 deletions(-) create mode 100644 .evergreen/config_generator/components/funcs/run_benchmarks.py diff --git a/.evergreen/config_generator/components/funcs/run_benchmarks.py b/.evergreen/config_generator/components/funcs/run_benchmarks.py new file mode 100644 index 0000000000..3a4ff658f3 --- /dev/null +++ b/.evergreen/config_generator/components/funcs/run_benchmarks.py @@ -0,0 +1,37 @@ +from shrub.v3.evg_command import BuiltInCommand, EvgCommandType + +from config_generator.etc.function import Function +from config_generator.etc.utils import bash_exec + + +class RunBenchmarks(Function): + name = 'run benchmarks' + commands = [ + bash_exec( + command_type=EvgCommandType.SETUP, + working_dir='mongo-cxx-driver', + script='etc/microbenchmark-test-data.sh', + ), + bash_exec( + command_type=EvgCommandType.TEST, + working_dir='mongo-cxx-driver', + script='build/benchmark/microbenchmarks all', + ), + + BuiltInCommand( + command='perf.send', + type=EvgCommandType.SYSTEM, + params={ + 'name': 'perf', + 'file': 'mongo-cxx-driver/results.json', + } + ), + ] + + @classmethod + def call(cls, **kwargs): + return cls.default_call(**kwargs) + + +def functions(): + return RunBenchmarks.defn() diff --git a/.evergreen/generated_configs/functions.yml b/.evergreen/generated_configs/functions.yml index 390e38aa74..5a7cbf01f0 100644 --- a/.evergreen/generated_configs/functions.yml +++ b/.evergreen/generated_configs/functions.yml @@ -251,6 +251,28 @@ functions: args: - -c - python etc/clang_format.py lint + run benchmarks: + - command: subprocess.exec + type: setup + params: + binary: bash + working_dir: mongo-cxx-driver + args: + - -c + - etc/microbenchmark-test-data.sh + - command: subprocess.exec + type: test + params: + binary: bash + working_dir: mongo-cxx-driver + args: + - -c + - build/benchmark/microbenchmarks all + - command: perf.send + type: system + params: + name: perf + file: mongo-cxx-driver/results.json run_kms_servers: - command: subprocess.exec type: setup diff --git a/.mci.yml b/.mci.yml index 88fb76be05..1d13348674 100644 --- a/.mci.yml +++ b/.mci.yml @@ -12,24 +12,6 @@ include: ####################################### functions: - "run benchmarks": - - command: shell.exec - type: setup - params: - shell: bash - working_dir: "mongo-cxx-driver" - script: ./etc/microbenchmark-test-data.sh - - command: shell.exec - type: test - params: - shell: bash - working_dir: "mongo-cxx-driver" - script: ./build/benchmark/microbenchmarks all - - command: perf.send - params: - name: perf - file: mongo-cxx-driver/results.json - "run scan build": - command: subprocess.exec type: test diff --git a/etc/microbenchmark-test-data.sh b/etc/microbenchmark-test-data.sh index 9e9dce2151..a5c64e0eda 100755 --- a/etc/microbenchmark-test-data.sh +++ b/etc/microbenchmark-test-data.sh @@ -7,16 +7,16 @@ set -o errexit set -o nounset if [ ! -d ".git" ]; then - echo "$0: This script must be run from the root of the repository" >&2 - exit 1 + echo "$0: This script must be run from the root of the repository" >&2 + exit 1 fi -tmpdir=`perl -MFile::Temp=tempdir -wle 'print tempdir(TMPDIR => 1, CLEANUP => 0)'` +tmpdir=$(perl -MFile::Temp=tempdir -wle 'print tempdir(TMPDIR => 1, CLEANUP => 0)') curl -sL https://github.com/mongodb-labs/driver-performance-test-data/archive/master.zip -o "$tmpdir/data.zip" -unzip -d "$tmpdir" "$tmpdir/data.zip" > /dev/null +unzip -d "$tmpdir" "$tmpdir/data.zip" >/dev/null mkdir -p data/benchmark -pushd "$tmpdir/driver-performance-test-data-master" > /dev/null +pushd "$tmpdir/driver-performance-test-data-master" >/dev/null tar xf extended_bson.tgz tar xf parallel.tgz @@ -27,6 +27,6 @@ rm parallel.tgz rm single_and_multi_document.tgz rm README.md -popd > /dev/null +popd >/dev/null rsync -ah "$tmpdir/driver-performance-test-data-master/" data/benchmark -rm -rf "$tmpdir" \ No newline at end of file +rm -rf "$tmpdir" From d486bcb55dc07ad3dce6588c42c809344ff86dad Mon Sep 17 00:00:00 2001 From: Ezra Chung Date: Tue, 29 Oct 2024 15:28:30 -0500 Subject: [PATCH 37/78] functions: run scan build --- .../components/funcs/run_scan_build.py | 25 +++++++++++++++++++ .evergreen/generated_configs/functions.yml | 11 ++++++++ .../scripts}/compile-scan-build.sh | 2 +- .mci.yml | 10 -------- 4 files changed, 37 insertions(+), 11 deletions(-) create mode 100644 .evergreen/config_generator/components/funcs/run_scan_build.py rename {.evergreen-old => .evergreen/scripts}/compile-scan-build.sh (98%) diff --git a/.evergreen/config_generator/components/funcs/run_scan_build.py b/.evergreen/config_generator/components/funcs/run_scan_build.py new file mode 100644 index 0000000000..a0a9f40d24 --- /dev/null +++ b/.evergreen/config_generator/components/funcs/run_scan_build.py @@ -0,0 +1,25 @@ +from shrub.v3.evg_command import EvgCommandType + +from config_generator.etc.function import Function +from config_generator.etc.utils import bash_exec + + +class RunScanBuild(Function): + name = 'run scan build' + commands = [ + bash_exec( + command_type=EvgCommandType.TEST, + add_expansions_to_env=True, + redirect_standard_error_to_output=True, + working_dir='mongo-cxx-driver', + script='.evergreen/scripts/compile-scan-build.sh', + ), + ] + + @classmethod + def call(cls, **kwargs): + return cls.default_call(**kwargs) + + +def functions(): + return RunScanBuild.defn() diff --git a/.evergreen/generated_configs/functions.yml b/.evergreen/generated_configs/functions.yml index 5a7cbf01f0..1573f12831 100644 --- a/.evergreen/generated_configs/functions.yml +++ b/.evergreen/generated_configs/functions.yml @@ -273,6 +273,17 @@ functions: params: name: perf file: mongo-cxx-driver/results.json + run scan build: + - command: subprocess.exec + type: test + params: + binary: bash + working_dir: mongo-cxx-driver + add_expansions_to_env: true + redirect_standard_error_to_output: true + args: + - -c + - .evergreen/scripts/compile-scan-build.sh run_kms_servers: - command: subprocess.exec type: setup diff --git a/.evergreen-old/compile-scan-build.sh b/.evergreen/scripts/compile-scan-build.sh similarity index 98% rename from .evergreen-old/compile-scan-build.sh rename to .evergreen/scripts/compile-scan-build.sh index 1232a0fca9..485a4c3ed7 100755 --- a/.evergreen-old/compile-scan-build.sh +++ b/.evergreen/scripts/compile-scan-build.sh @@ -25,7 +25,7 @@ scan_build_directories+=( ) # Use system scan-build otherwise. -IFS=: read -ra sys_dirs <<< "${PATH:-}" +IFS=: read -ra sys_dirs <<<"${PATH:-}" scan_build_directories+=("${sys_dirs[@]:-}") declare scan_build_binary diff --git a/.mci.yml b/.mci.yml index 1d13348674..f48c909daf 100644 --- a/.mci.yml +++ b/.mci.yml @@ -12,16 +12,6 @@ include: ####################################### functions: - "run scan build": - - command: subprocess.exec - type: test - params: - binary: bash - working_dir: "mongo-cxx-driver" - add_expansions_to_env: true - redirect_standard_error_to_output: true - args: [-c, .evergreen-old/compile-scan-build.sh] - "upload scan artifacts": - command: subprocess.exec type: test From fc316df6495db0fcc6cb1f70b73c9485805d1e12 Mon Sep 17 00:00:00 2001 From: Ezra Chung Date: Tue, 29 Oct 2024 15:28:30 -0500 Subject: [PATCH 38/78] functions: upload scan artifacts --- .../components/funcs/upload_scan_artifacts.py | 51 +++++++++++++++++++ .evergreen/generated_configs/functions.yml | 38 ++++++++++++++ .mci.yml | 37 -------------- 3 files changed, 89 insertions(+), 37 deletions(-) create mode 100644 .evergreen/config_generator/components/funcs/upload_scan_artifacts.py diff --git a/.evergreen/config_generator/components/funcs/upload_scan_artifacts.py b/.evergreen/config_generator/components/funcs/upload_scan_artifacts.py new file mode 100644 index 0000000000..e9032a6a29 --- /dev/null +++ b/.evergreen/config_generator/components/funcs/upload_scan_artifacts.py @@ -0,0 +1,51 @@ +from shrub.v3.evg_command import EvgCommandType, s3_put + +from config_generator.etc.function import Function +from config_generator.etc.utils import bash_exec + + +class UploadScanArtifacts(Function): + name = 'upload scan artifacts' + commands = [ + bash_exec( + command_type=EvgCommandType.TEST, + working_dir='mongo-cxx-driver', + script='''\ + set -o errexit + if find scan -name \\*.html | grep -q html; then + (cd scan && find . -name index.html -exec echo "
  • {}
  • " \\;) >> scan.html + else + echo "No issues found" > scan.html + fi + ''' + ), + bash_exec( + command_type=EvgCommandType.TEST, + silent=True, + env={ + 'AWS_ACCESS_KEY_ID': '${aws_key}', + 'AWS_SECRET_ACCESS_KEY': '${aws_secret}', + }, + working_dir='mongo-cxx-driver', + script=' aws s3 cp scan s3://mciuploads/mongo-cxx-driver/${build_variant}/${revision}/${version_id}/${build_id}/scan/ --recursive --acl public-read --region us-east-1', + ), + s3_put( + command_type=EvgCommandType.SYSTEM, + aws_key='${aws_key}', + aws_secret='${aws_secret}', + bucket='mciuploads', + content_type='text/html', + display_name='Scan Build Report', + local_file='mongo-cxx-driver/scan.html', + permissions='public-read', + remote_file='mongo-cxx-driver/${build_variant}/${revision}/${version_id}/${build_id}/scan/index.html', + ), + ] + + @classmethod + def call(cls, **kwargs): + return cls.default_call(**kwargs) + + +def functions(): + return UploadScanArtifacts.defn() diff --git a/.evergreen/generated_configs/functions.yml b/.evergreen/generated_configs/functions.yml index 1573f12831..d76b8574ee 100644 --- a/.evergreen/generated_configs/functions.yml +++ b/.evergreen/generated_configs/functions.yml @@ -528,6 +528,44 @@ functions: optional: true permissions: public-read remote_file: mongo-cxx-driver/${build_variant}/${revision}/${version_id}/${build_id}/logs/${task_id}-${execution}-mongodb-logs.tar.gz + upload scan artifacts: + - command: subprocess.exec + type: test + params: + binary: bash + working_dir: mongo-cxx-driver + args: + - -c + - | + set -o errexit + if find scan -name \*.html | grep -q html; then + (cd scan && find . -name index.html -exec echo "
  • {}
  • " \;) >> scan.html + else + echo "No issues found" > scan.html + fi + - command: subprocess.exec + type: test + params: + binary: bash + working_dir: mongo-cxx-driver + env: + AWS_ACCESS_KEY_ID: ${aws_key} + AWS_SECRET_ACCESS_KEY: ${aws_secret} + silent: true + args: + - -c + - aws s3 cp scan s3://mciuploads/mongo-cxx-driver/${build_variant}/${revision}/${version_id}/${build_id}/scan/ --recursive --acl public-read --region us-east-1 + - command: s3.put + type: system + params: + display_name: Scan Build Report + aws_key: ${aws_key} + aws_secret: ${aws_secret} + bucket: mciuploads + content_type: text/html + local_file: mongo-cxx-driver/scan.html + permissions: public-read + remote_file: mongo-cxx-driver/${build_variant}/${revision}/${version_id}/${build_id}/scan/index.html upload working dir: - command: archive.targz_pack type: system diff --git a/.mci.yml b/.mci.yml index f48c909daf..cbdb5ebe8f 100644 --- a/.mci.yml +++ b/.mci.yml @@ -12,43 +12,6 @@ include: ####################################### functions: - "upload scan artifacts": - - command: subprocess.exec - type: test - params: - working_dir: "mongo-cxx-driver" - binary: bash - args: - - -c - - | - set -o errexit - if find scan -name \*.html | grep -q html; then - (cd scan && find . -name index.html -exec echo "
  • {}
  • " \;) >> scan.html - else - echo "No issues found" > scan.html - fi - - command: subprocess.exec - params: - silent: true - working_dir: mongo-cxx-driver - binary: bash - env: - AWS_ACCESS_KEY_ID: ${aws_key} - AWS_SECRET_ACCESS_KEY: ${aws_secret} - args: - - -c - - aws s3 cp scan s3://mciuploads/mongo-cxx-driver/${build_variant}/${revision}/${version_id}/${build_id}/scan/ --recursive --acl public-read --region us-east-1 - - command: s3.put - params: - aws_key: ${aws_key} - aws_secret: ${aws_secret} - remote_file: mongo-cxx-driver/${build_variant}/${revision}/${version_id}/${build_id}/scan/index.html - bucket: mciuploads - permissions: public-read - local_file: mongo-cxx-driver/scan.html - content_type: text/html - display_name: Scan Build Report - "check augmented sbom": - command: subprocess.exec type: test From 840afbe2954a54c4fc340ec983061068000db13e Mon Sep 17 00:00:00 2001 From: Ezra Chung Date: Tue, 29 Oct 2024 15:28:31 -0500 Subject: [PATCH 39/78] functions: check augmented sbom --- .../components/funcs/check_augmented_sbom.py | 27 +++++++++++++++++++ .evergreen/generated_configs/functions.yml | 14 ++++++++++ .../scripts}/check-augmented-sbom.sh | 0 .mci.yml | 13 --------- 4 files changed, 41 insertions(+), 13 deletions(-) create mode 100644 .evergreen/config_generator/components/funcs/check_augmented_sbom.py rename {.evergreen-old => .evergreen/scripts}/check-augmented-sbom.sh (100%) diff --git a/.evergreen/config_generator/components/funcs/check_augmented_sbom.py b/.evergreen/config_generator/components/funcs/check_augmented_sbom.py new file mode 100644 index 0000000000..aafefc205d --- /dev/null +++ b/.evergreen/config_generator/components/funcs/check_augmented_sbom.py @@ -0,0 +1,27 @@ +from shrub.v3.evg_command import EvgCommandType + +from config_generator.etc.function import Function +from config_generator.etc.utils import bash_exec + + +class CheckAugmentedSBOM(Function): + name = 'check augmented sbom' + commands = bash_exec( + command_type=EvgCommandType.TEST, + working_dir='mongo-cxx-driver', + include_expansions_in_env=[ + 'ARTIFACTORY_USER', + 'ARTIFACTORY_PASSWORD', + 'SILK_CLIENT_ID', + 'SILK_CLIENT_SECRET', + ], + script='.evergreen/scripts/check-augmented-sbom.sh', + ) + + @classmethod + def call(cls, **kwargs): + return cls.default_call(**kwargs) + + +def functions(): + return CheckAugmentedSBOM.defn() diff --git a/.evergreen/generated_configs/functions.yml b/.evergreen/generated_configs/functions.yml index d76b8574ee..cc9c44e3ad 100644 --- a/.evergreen/generated_configs/functions.yml +++ b/.evergreen/generated_configs/functions.yml @@ -127,6 +127,20 @@ functions: export DRIVERS_TOOLS=$(pwd) .evergreen/atlas_data_lake/pull-mongohouse-image.sh + check augmented sbom: + command: subprocess.exec + type: test + params: + binary: bash + working_dir: mongo-cxx-driver + include_expansions_in_env: + - ARTIFACTORY_USER + - ARTIFACTORY_PASSWORD + - SILK_CLIENT_ID + - SILK_CLIENT_SECRET + args: + - -c + - .evergreen/scripts/check-augmented-sbom.sh clang-tidy: command: subprocess.exec type: test diff --git a/.evergreen-old/check-augmented-sbom.sh b/.evergreen/scripts/check-augmented-sbom.sh similarity index 100% rename from .evergreen-old/check-augmented-sbom.sh rename to .evergreen/scripts/check-augmented-sbom.sh diff --git a/.mci.yml b/.mci.yml index cbdb5ebe8f..8974313d61 100644 --- a/.mci.yml +++ b/.mci.yml @@ -12,19 +12,6 @@ include: ####################################### functions: - "check augmented sbom": - - command: subprocess.exec - type: test - params: - working_dir: "mongo-cxx-driver" - binary: bash - include_expansions_in_env: - - ARTIFACTORY_USER - - ARTIFACTORY_PASSWORD - - SILK_CLIENT_ID - - SILK_CLIENT_SECRET - args: [-c, .evergreen-old/check-augmented-sbom.sh] - "upload augmented sbom": - command: s3.put params: From d3b419715ba18f58f5b5f614f402da1245ebfc21 Mon Sep 17 00:00:00 2001 From: Ezra Chung Date: Tue, 29 Oct 2024 15:28:31 -0500 Subject: [PATCH 40/78] functions: upload augmented sbom --- .../components/funcs/upload_augmented_sbom.py | 39 +++++++++++++++++++ .evergreen/generated_configs/functions.yml | 23 +++++++++++ .mci.yml | 27 ------------- 3 files changed, 62 insertions(+), 27 deletions(-) create mode 100644 .evergreen/config_generator/components/funcs/upload_augmented_sbom.py diff --git a/.evergreen/config_generator/components/funcs/upload_augmented_sbom.py b/.evergreen/config_generator/components/funcs/upload_augmented_sbom.py new file mode 100644 index 0000000000..674af3aeb3 --- /dev/null +++ b/.evergreen/config_generator/components/funcs/upload_augmented_sbom.py @@ -0,0 +1,39 @@ +from shrub.v3.evg_command import EvgCommandType, s3_put + +from config_generator.etc.function import Function + + +class UploadAugmentedSBOM(Function): + name = 'upload augmented sbom' + commands = [ + s3_put( + command_type=EvgCommandType.SYSTEM, + aws_key='${aws_key}', + aws_secret='${aws_secret}', + bucket='mciuploads', + content_type='application/json', + display_name='Augmented SBOM', + local_file='mongo-cxx-driver/etc/augmented.sbom.json.new', + permissions='public-read', + remote_file='mongo-cxx-driver/${build_variant}/${revision}/${version_id}/${build_id}/silk/augmented.sbom.json', + ), + s3_put( + command_type=EvgCommandType.SYSTEM, + aws_key='${aws_key}', + aws_secret='${aws_secret}', + bucket='mciuploads', + content_type='application/json', + display_name='Augmented SBOM (Diff)', + local_file='mongo-cxx-driver/diff.txt', + permissions='public-read', + remote_file='mongo-cxx-driver/${build_variant}/${revision}/${version_id}/${build_id}/silk/augmented.sbom.json.diff', + ), + ] + + @classmethod + def call(cls, **kwargs): + return cls.default_call(**kwargs) + + +def functions(): + return UploadAugmentedSBOM.defn() diff --git a/.evergreen/generated_configs/functions.yml b/.evergreen/generated_configs/functions.yml index cc9c44e3ad..d4f6afeaa7 100644 --- a/.evergreen/generated_configs/functions.yml +++ b/.evergreen/generated_configs/functions.yml @@ -504,6 +504,29 @@ functions: args: - -c - .evergreen/scripts/test-mongohouse.sh + upload augmented sbom: + - command: s3.put + type: system + params: + display_name: Augmented SBOM + aws_key: ${aws_key} + aws_secret: ${aws_secret} + bucket: mciuploads + content_type: application/json + local_file: mongo-cxx-driver/etc/augmented.sbom.json.new + permissions: public-read + remote_file: mongo-cxx-driver/${build_variant}/${revision}/${version_id}/${build_id}/silk/augmented.sbom.json + - command: s3.put + type: system + params: + display_name: Augmented SBOM (Diff) + aws_key: ${aws_key} + aws_secret: ${aws_secret} + bucket: mciuploads + content_type: application/json + local_file: mongo-cxx-driver/diff.txt + permissions: public-read + remote_file: mongo-cxx-driver/${build_variant}/${revision}/${version_id}/${build_id}/silk/augmented.sbom.json.diff upload code coverage: command: subprocess.exec type: system diff --git a/.mci.yml b/.mci.yml index 8974313d61..b2da0f0b2c 100644 --- a/.mci.yml +++ b/.mci.yml @@ -7,33 +7,6 @@ exec_timeout_secs: 3600 include: - filename: .evergreen/generated_configs/functions.yml -####################################### -# Functions # -####################################### - -functions: - "upload augmented sbom": - - command: s3.put - params: - aws_key: ${aws_key} - aws_secret: ${aws_secret} - remote_file: mongo-cxx-driver/${build_variant}/${revision}/${version_id}/${build_id}/silk/augmented.sbom.json - bucket: mciuploads - permissions: public-read - local_file: mongo-cxx-driver/etc/augmented.sbom.json.new - content_type: application/json - display_name: Augmented SBOM - - command: s3.put - params: - aws_key: ${aws_key} - aws_secret: ${aws_secret} - remote_file: mongo-cxx-driver/${build_variant}/${revision}/${version_id}/${build_id}/silk/augmented.sbom.json.diff - bucket: mciuploads - permissions: public-read - local_file: mongo-cxx-driver/diff.txt - content_type: application/json - display_name: Augmented SBOM (Diff) - ####################################### # Post Task # ####################################### From a1cf80cea45f37277f80b9bf5dc98f5e359c072c Mon Sep 17 00:00:00 2001 From: Ezra Chung Date: Tue, 29 Oct 2024 15:28:31 -0500 Subject: [PATCH 41/78] Remove obsolete reference to install.sh (6a4998952b) --- .gitattributes | 1 - 1 file changed, 1 deletion(-) diff --git a/.gitattributes b/.gitattributes index da9776298b..1a3a550634 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1,6 +1,5 @@ .evergreen/scripts/build-example-projects.sh eol=lf .evergreen/scripts/compile.sh eol=lf -.evergreen/install.sh eol=lf examples/projects/bsoncxx/cmake/shared/build.sh eol=lf examples/projects/bsoncxx/cmake/static/build.sh eol=lf examples/projects/bsoncxx/pkg-config/shared/build.sh eol=lf From 1e827e7b4781fd584a44d141ff99c15adf14fe3f Mon Sep 17 00:00:00 2001 From: Ezra Chung Date: Tue, 29 Oct 2024 15:28:31 -0500 Subject: [PATCH 42/78] Include all generated configs in legacy config --- .mci.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.mci.yml b/.mci.yml index b2da0f0b2c..fef3dcddb6 100644 --- a/.mci.yml +++ b/.mci.yml @@ -6,6 +6,9 @@ exec_timeout_secs: 3600 include: - filename: .evergreen/generated_configs/functions.yml + - filename: .evergreen/generated_configs/tasks.yml + - filename: .evergreen/generated_configs/task_groups.yml + - filename: .evergreen/generated_configs/variants.yml ####################################### # Post Task # From f72c88273de86735274621d9d9b381b33f06481b Mon Sep 17 00:00:00 2001 From: Ezra Chung Date: Tue, 29 Oct 2024 15:28:32 -0500 Subject: [PATCH 43/78] component: abi_stability --- .../components/abi_stability.py | 200 ++++++++++++++++++ .../components/funcs/abi_compliance_check.py | 70 ------ .../funcs/abi_prohibited_symbols.py | 20 -- .../components/funcs/abidiff.py | 48 ----- .evergreen/generated_configs/task_groups.yml | 28 ++- .evergreen/generated_configs/tasks.yml | 15 ++ .evergreen/generated_configs/variants.yml | 20 ++ .../scripts}/abi-stability-setup.sh | 0 .mci.yml | 60 ------ 9 files changed, 262 insertions(+), 199 deletions(-) create mode 100644 .evergreen/config_generator/components/abi_stability.py delete mode 100644 .evergreen/config_generator/components/funcs/abi_compliance_check.py delete mode 100644 .evergreen/config_generator/components/funcs/abi_prohibited_symbols.py delete mode 100644 .evergreen/config_generator/components/funcs/abidiff.py rename {.evergreen-old => .evergreen/scripts}/abi-stability-setup.sh (100%) diff --git a/.evergreen/config_generator/components/abi_stability.py b/.evergreen/config_generator/components/abi_stability.py new file mode 100644 index 0000000000..6506d81499 --- /dev/null +++ b/.evergreen/config_generator/components/abi_stability.py @@ -0,0 +1,200 @@ +from config_generator.components.funcs.install_c_driver import InstallCDriver + +from config_generator.etc.distros import find_large_distro +from config_generator.etc.function import Function, merge_defns +from config_generator.etc.utils import TaskGroup, bash_exec + +from shrub.v3.evg_command import EvgCommandType, git_get_project, s3_put +from shrub.v3.evg_task import EvgTask, EvgTaskRef +from shrub.v3.evg_build_variant import BuildVariant, DisplayTask + + +TAG = 'abi-stability' + + +# pylint: disable=line-too-long +# fmt: off +MATRIX = [ + ('polyfill', 11), + ('stdlib', 17), +] +# fmt: on +# pylint: enable=line-too-long + + +class AbiComplianceCheck(Function): + name = 'abi-compliance-check' + commands = [ + bash_exec( + command_type=EvgCommandType.SETUP, + script='mongo-cxx-driver/.evergreen/scripts/abi-compliance-check-setup.sh' + ), + bash_exec( + command_type=EvgCommandType.TEST, + script='mongo-cxx-driver/.evergreen/scripts/abi-compliance-check-test.sh' + ), + s3_put( + command_type=EvgCommandType.SYSTEM, + aws_key='${aws_key}', + aws_secret='${aws_secret}', + bucket='mciuploads', + content_type='text/html', + display_name='ABI Compliance Check (Stable): ', + local_files_include_filter='cxx-abi/compat_reports/**/compat_report.html', + permissions='public-read', + remote_file='mongo-cxx-driver/${branch_name}/${revision}/${version_id}/${build_id}/${execution}/abi-compliance-check/abi/', + ), + s3_put( + command_type=EvgCommandType.SYSTEM, + aws_key='${aws_key}', + aws_secret='${aws_secret}', + bucket='mciuploads', + content_type='text/plain', + display_name='ABI Compliance Check (Stable): ', + local_files_include_filter='cxx-abi/logs/**/log.txt', + permissions='public-read', + remote_file='mongo-cxx-driver/${branch_name}/${revision}/${version_id}/${build_id}/${execution}/abi-compliance-check/abi/', + ), + s3_put( + command_type=EvgCommandType.SYSTEM, + aws_key='${aws_key}', + aws_secret='${aws_secret}', + bucket='mciuploads', + content_type='text/html', + display_name='ABI Compliance Check (Unstable): ', + local_files_include_filter='cxx-noabi/compat_reports/**/compat_report.html', + permissions='public-read', + remote_file='mongo-cxx-driver/${branch_name}/${revision}/${version_id}/${build_id}/${execution}/abi-compliance-check/noabi/', + ), + s3_put( + command_type=EvgCommandType.SYSTEM, + aws_key='${aws_key}', + aws_secret='${aws_secret}', + bucket='mciuploads', + content_type='text/plain', + display_name='ABI Compliance Check (Unstable): ', + local_files_include_filter='cxx-noabi/logs/**/log.txt', + permissions='public-read', + remote_file='mongo-cxx-driver/${branch_name}/${revision}/${version_id}/${build_id}/${execution}/abi-compliance-check/noabi/', + ), + ] + + @classmethod + def call(cls, **kwargs): + return cls.default_call(**kwargs) + + +class Abidiff(Function): + name = 'abidiff' + commands = [ + bash_exec( + command_type=EvgCommandType.SETUP, + script='mongo-cxx-driver/.evergreen/scripts/abidiff-setup.sh' + ), + bash_exec( + command_type=EvgCommandType.TEST, + script='mongo-cxx-driver/.evergreen/scripts/abidiff-test.sh' + ), + s3_put( + command_type=EvgCommandType.SYSTEM, + aws_key='${aws_key}', + aws_secret='${aws_secret}', + bucket='mciuploads', + content_type='text/plain', + display_name='abidiff (Stable): ', + local_files_include_filter='cxx-abi/*.txt', + permissions='public-read', + remote_file='mongo-cxx-driver/${branch_name}/${revision}/${version_id}/${build_id}/${execution}/abidiff/abi/', + ), + s3_put( + command_type=EvgCommandType.SYSTEM, + aws_key='${aws_key}', + aws_secret='${aws_secret}', + bucket='mciuploads', + content_type='text/plain', + display_name='abidiff (Unstable): ', + local_files_include_filter='cxx-noabi/*.txt', + permissions='public-read', + remote_file='mongo-cxx-driver/${branch_name}/${revision}/${version_id}/${build_id}/${execution}/abidiff/noabi/', + ), + ] + + @classmethod + def call(cls, **kwargs): + return cls.default_call(**kwargs) + + +class AbiProhibitedSymbols(Function): + name = 'abi-prohibited-symbols' + commands = bash_exec( + command_type=EvgCommandType.TEST, + script='mongo-cxx-driver/.evergreen/scripts/abi-prohibited-symbols-test.sh' + ) + + @classmethod + def call(cls, **kwargs): + return cls.default_call(**kwargs) + + +def functions(): + return merge_defns( + AbiComplianceCheck.defn(), + Abidiff.defn(), + AbiProhibitedSymbols.defn(), + ) + + +def tasks(): + distro_name = 'ubuntu2204' + distro = find_large_distro(distro_name) + + return [ + EvgTask( + name=func.name, + tags=[TAG, func.name, distro_name], + run_on=distro.name, + commands=[func.call()], + ) + for func in [AbiComplianceCheck, Abidiff, AbiProhibitedSymbols] + ] + + +def task_groups(): + return [ + TaskGroup( + name=f'tg-{TAG}', + max_hosts=-1, + setup_group_can_fail_task=True, + setup_task=[ + git_get_project(directory='mongo-cxx-driver'), + InstallCDriver.call(), + bash_exec( + include_expansions_in_env=['cxx_standard'], + script='mongo-cxx-driver/.evergreen/scripts/abi-stability-setup.sh' + ), + ], + tasks=[f'.{TAG}'], + teardown_task_can_fail_task=True, + teardown_task=[bash_exec(script='rm -rf *'),], + ) + ] + + +def variants(): + return [ + BuildVariant( + name=f'abi-stability-{name}', + display_name=f'ABI Stability Checks ({name})', + expansions={ + 'cxx_standard': f'{cxx_standard}', # Use a polyfill library. + }, + tasks=[EvgTaskRef(name='tg-abi-stability')], + display_tasks=[ + DisplayTask( + name=f'ABI Stability Checks ({name})', + execution_tasks=[f'.{TAG}'], + ) + ], + ) + for name, cxx_standard in MATRIX + ] diff --git a/.evergreen/config_generator/components/funcs/abi_compliance_check.py b/.evergreen/config_generator/components/funcs/abi_compliance_check.py deleted file mode 100644 index 0e62df6b91..0000000000 --- a/.evergreen/config_generator/components/funcs/abi_compliance_check.py +++ /dev/null @@ -1,70 +0,0 @@ -from config_generator.etc.function import Function -from config_generator.etc.utils import bash_exec - -from shrub.v3.evg_command import EvgCommandType, s3_put - - -class AbiComplianceCheck(Function): - name = 'abi-compliance-check' - commands = [ - bash_exec( - command_type=EvgCommandType.SETUP, - script='mongo-cxx-driver/.evergreen/scripts/abi-compliance-check-setup.sh' - ), - bash_exec( - command_type=EvgCommandType.TEST, - script='mongo-cxx-driver/.evergreen/scripts/abi-compliance-check-test.sh' - ), - s3_put( - command_type=EvgCommandType.SYSTEM, - aws_key='${aws_key}', - aws_secret='${aws_secret}', - bucket='mciuploads', - content_type='text/html', - display_name='ABI Compliance Check (Stable): ', - local_files_include_filter='cxx-abi/compat_reports/**/compat_report.html', - permissions='public-read', - remote_file='mongo-cxx-driver/${branch_name}/${revision}/${version_id}/${build_id}/${execution}/abi-compliance-check/abi/', - ), - s3_put( - command_type=EvgCommandType.SYSTEM, - aws_key='${aws_key}', - aws_secret='${aws_secret}', - bucket='mciuploads', - content_type='text/plain', - display_name='ABI Compliance Check (Stable): ', - local_files_include_filter='cxx-abi/logs/**/log.txt', - permissions='public-read', - remote_file='mongo-cxx-driver/${branch_name}/${revision}/${version_id}/${build_id}/${execution}/abi-compliance-check/abi/', - ), - s3_put( - command_type=EvgCommandType.SYSTEM, - aws_key='${aws_key}', - aws_secret='${aws_secret}', - bucket='mciuploads', - content_type='text/html', - display_name='ABI Compliance Check (Unstable): ', - local_files_include_filter='cxx-noabi/compat_reports/**/compat_report.html', - permissions='public-read', - remote_file='mongo-cxx-driver/${branch_name}/${revision}/${version_id}/${build_id}/${execution}/abi-compliance-check/noabi/', - ), - s3_put( - command_type=EvgCommandType.SYSTEM, - aws_key='${aws_key}', - aws_secret='${aws_secret}', - bucket='mciuploads', - content_type='text/plain', - display_name='ABI Compliance Check (Unstable): ', - local_files_include_filter='cxx-noabi/logs/**/log.txt', - permissions='public-read', - remote_file='mongo-cxx-driver/${branch_name}/${revision}/${version_id}/${build_id}/${execution}/abi-compliance-check/noabi/', - ), - ] - - @classmethod - def call(cls, **kwargs): - return cls.default_call(**kwargs) - - -def functions(): - return AbiComplianceCheck.defn() diff --git a/.evergreen/config_generator/components/funcs/abi_prohibited_symbols.py b/.evergreen/config_generator/components/funcs/abi_prohibited_symbols.py deleted file mode 100644 index 2532aae2ea..0000000000 --- a/.evergreen/config_generator/components/funcs/abi_prohibited_symbols.py +++ /dev/null @@ -1,20 +0,0 @@ -from config_generator.etc.function import Function -from config_generator.etc.utils import bash_exec - -from shrub.v3.evg_command import EvgCommandType - - -class AbiProhibitedSymbols(Function): - name = 'abi-prohibited-symbols' - commands = bash_exec( - command_type=EvgCommandType.TEST, - script='mongo-cxx-driver/.evergreen/scripts/abi-prohibited-symbols-test.sh' - ) - - @classmethod - def call(cls, **kwargs): - return cls.default_call(**kwargs) - - -def functions(): - return AbiProhibitedSymbols.defn() diff --git a/.evergreen/config_generator/components/funcs/abidiff.py b/.evergreen/config_generator/components/funcs/abidiff.py deleted file mode 100644 index 0c8bff7f92..0000000000 --- a/.evergreen/config_generator/components/funcs/abidiff.py +++ /dev/null @@ -1,48 +0,0 @@ -from config_generator.etc.function import Function -from config_generator.etc.utils import bash_exec - -from shrub.v3.evg_command import EvgCommandType, s3_put - - -class Abidiff(Function): - name = 'abidiff' - commands = [ - bash_exec( - command_type=EvgCommandType.SETUP, - script='mongo-cxx-driver/.evergreen/scripts/abidiff-setup.sh' - ), - bash_exec( - command_type=EvgCommandType.TEST, - script='mongo-cxx-driver/.evergreen/scripts/abidiff-test.sh' - ), - s3_put( - command_type=EvgCommandType.SYSTEM, - aws_key='${aws_key}', - aws_secret='${aws_secret}', - bucket='mciuploads', - content_type='text/plain', - display_name='abidiff (Stable): ', - local_files_include_filter='cxx-abi/*.txt', - permissions='public-read', - remote_file='mongo-cxx-driver/${branch_name}/${revision}/${version_id}/${build_id}/${execution}/abidiff/abi/', - ), - s3_put( - command_type=EvgCommandType.SYSTEM, - aws_key='${aws_key}', - aws_secret='${aws_secret}', - bucket='mciuploads', - content_type='text/plain', - display_name='abidiff (Unstable): ', - local_files_include_filter='cxx-noabi/*.txt', - permissions='public-read', - remote_file='mongo-cxx-driver/${branch_name}/${revision}/${version_id}/${build_id}/${execution}/abidiff/noabi/', - ), - ] - - @classmethod - def call(cls, **kwargs): - return cls.default_call(**kwargs) - - -def functions(): - return Abidiff.defn() diff --git a/.evergreen/generated_configs/task_groups.yml b/.evergreen/generated_configs/task_groups.yml index 96d97eada4..d0fccb2d63 100644 --- a/.evergreen/generated_configs/task_groups.yml +++ b/.evergreen/generated_configs/task_groups.yml @@ -1 +1,27 @@ -task_groups: [] +task_groups: + - name: tg-abi-stability + max_hosts: -1 + setup_group_can_fail_task: true + setup_task: + - command: git.get_project + params: + directory: mongo-cxx-driver + - func: install_c_driver + - command: subprocess.exec + params: + binary: bash + include_expansions_in_env: + - cxx_standard + args: + - -c + - mongo-cxx-driver/.evergreen/scripts/abi-stability-setup.sh + tasks: + - .abi-stability + teardown_task: + - command: subprocess.exec + params: + binary: bash + args: + - -c + - rm -rf * + teardown_task_can_fail_task: true diff --git a/.evergreen/generated_configs/tasks.yml b/.evergreen/generated_configs/tasks.yml index 0562668317..6c63684363 100644 --- a/.evergreen/generated_configs/tasks.yml +++ b/.evergreen/generated_configs/tasks.yml @@ -1,4 +1,19 @@ tasks: + - name: abi-compliance-check + run_on: ubuntu2204-large + tags: [abi-stability, abi-compliance-check, ubuntu2204] + commands: + - func: abi-compliance-check + - name: abi-prohibited-symbols + run_on: ubuntu2204-large + tags: [abi-stability, abi-prohibited-symbols, ubuntu2204] + commands: + - func: abi-prohibited-symbols + - name: abidiff + run_on: ubuntu2204-large + tags: [abi-stability, abidiff, ubuntu2204] + commands: + - func: abidiff - name: stub run_on: ubuntu2004-large commands: diff --git a/.evergreen/generated_configs/variants.yml b/.evergreen/generated_configs/variants.yml index 3c7465e784..9423785e94 100644 --- a/.evergreen/generated_configs/variants.yml +++ b/.evergreen/generated_configs/variants.yml @@ -1,4 +1,24 @@ buildvariants: + - name: abi-stability-polyfill + display_name: ABI Stability Checks (polyfill) + display_tasks: + - name: ABI Stability Checks (polyfill) + execution_tasks: + - .abi-stability + expansions: + cxx_standard: "11" + tasks: + - name: tg-abi-stability + - name: abi-stability-stdlib + display_name: ABI Stability Checks (stdlib) + display_tasks: + - name: ABI Stability Checks (stdlib) + execution_tasks: + - .abi-stability + expansions: + cxx_standard: "17" + tasks: + - name: tg-abi-stability - name: stub display_name: stub tasks: diff --git a/.evergreen-old/abi-stability-setup.sh b/.evergreen/scripts/abi-stability-setup.sh similarity index 100% rename from .evergreen-old/abi-stability-setup.sh rename to .evergreen/scripts/abi-stability-setup.sh diff --git a/.mci.yml b/.mci.yml index fef3dcddb6..5a6367d04d 100644 --- a/.mci.yml +++ b/.mci.yml @@ -27,22 +27,6 @@ post: ####################################### tasks: - - name: abi-compliance-check - tags: ["abi-stability", "abi-compliance-check"] - run_on: "ubuntu2204-large" - commands: - - func: "abi-compliance-check" - - name: abidiff - tags: ["abi-stability", "abidiff"] - run_on: "ubuntu2204-large" - commands: - - func: "abidiff" - - name: abi-prohibited-symbols - tags: ["abi-stability", "abi-prohibited-symbols"] - run_on: "ubuntu2204-large" - commands: - - func: "abi-prohibited-symbols" - - name: lint run_on: ubuntu1804-large commands: @@ -549,27 +533,6 @@ tasks: - func: "upload augmented sbom" task_groups: - - name: tg-abi-stability - max_hosts: -1 - setup_task_can_fail_task: true - setup_task: - - command: git.get_project - params: - directory: "mongo-cxx-driver" - - func: install_c_driver - - command: subprocess.exec - params: - binary: bash - args: [-c, mongo-cxx-driver/.evergreen-old/abi-stability-setup.sh] - include_expansions_in_env: [cxx_standard] - tasks: [".abi-stability"] - teardown_task_can_fail_task: true - teardown_task: - - command: subprocess.exec - params: - binary: bash - args: [-c, rm -rf *] - - name: test_atlas_task_group_search_indexes_7.0 setup_group: - func: "setup" @@ -632,29 +595,6 @@ task_groups: ####################################### buildvariants: - ########################## - # ABI Stability Checks # - ########################## - - name: abi-stability-polyfill - display_name: "ABI Stability Checks (polyfill)" - expansions: - cxx_standard: 11 # Use a polyfill library. - tasks: - - "tg-abi-stability" - display_tasks: - - name: "ABI Stability Checks (polyfill)" - execution_tasks: [".abi-stability"] - - - name: abi-stability-stdlib - display_name: "ABI Stability Checks (stdlib)" - expansions: - cxx_standard: 17 # Use the stdlib. - tasks: - - "tg-abi-stability" - display_tasks: - - name: "ABI Stability Checks (stdlib)" - execution_tasks: [".abi-stability"] - ####################################### # Standard MongoDB Integration Tests # ####################################### From 64bc2d74c89c7526c7e0d9e74cca4de56dedc065 Mon Sep 17 00:00:00 2001 From: Ezra Chung Date: Tue, 29 Oct 2024 15:28:32 -0500 Subject: [PATCH 44/78] component: atlas_search_indexes --- .../components/atlas_search_indexes.py | 113 ++++++++++++++++++ .evergreen/generated_configs/functions.yml | 13 ++ .evergreen/generated_configs/task_groups.yml | 60 ++++++++++ .evergreen/generated_configs/tasks.yml | 18 +++ .evergreen/generated_configs/variants.yml | 9 ++ .mci.yml | 95 --------------- 6 files changed, 213 insertions(+), 95 deletions(-) create mode 100644 .evergreen/config_generator/components/atlas_search_indexes.py diff --git a/.evergreen/config_generator/components/atlas_search_indexes.py b/.evergreen/config_generator/components/atlas_search_indexes.py new file mode 100644 index 0000000000..efbb26353b --- /dev/null +++ b/.evergreen/config_generator/components/atlas_search_indexes.py @@ -0,0 +1,113 @@ +from config_generator.components.funcs.compile import Compile +from config_generator.components.funcs.fetch_det import FetchDET +from config_generator.components.funcs.install_c_driver import InstallCDriver +from config_generator.components.funcs.setup import Setup + +from config_generator.etc.distros import find_large_distro +from config_generator.etc.function import Function +from config_generator.etc.utils import bash_exec + +from shrub.v3.evg_build_variant import BuildVariant, DisplayTask +from shrub.v3.evg_command import EvgCommandType, expansions_update +from shrub.v3.evg_task import EvgTask, EvgTaskRef +from shrub.v3.evg_task_group import EvgTaskGroup + + +TAG = 'atlas-search-indexes' + + +# pylint: disable=line-too-long +# fmt: off +MATRIX = [ + (7.0), + (8.0), +] +# fmt: on +# pylint: enable=line-too-long + + +class TestSearchIndexHelpers(Function): + name = 'test-search-index-helpers' + commands = bash_exec( + command_type=EvgCommandType.TEST, + working_dir='mongo-cxx-driver', + script='''\ + export MONGODB_URI=${MONGODB_URI} + export LD_LIBRARY_PATH=$(pwd)/../mongoc/lib + + ./build/src/mongocxx/test/test_driver "atlas search indexes prose tests" + ''' + ) + + @classmethod + def call(cls, **kwargs): + return cls.default_call(**kwargs) + + +def functions(): + return TestSearchIndexHelpers.defn() + + +def tasks(): + distro_name = 'ubuntu2004' + distro = find_large_distro(distro_name) + + return [ + EvgTask( + name=f'{TAG}-{mongodb_version}', + tags=[TAG, distro_name], + run_on=distro.name, + commands=[ + InstallCDriver.call(), + Compile.call(build_type='Debug'), + TestSearchIndexHelpers.call(), + ], + ) + for mongodb_version in MATRIX + ] + + +def task_groups(): + return [ + EvgTaskGroup( + name=f'tg-{TAG}-{mongodb_version}', + setup_group_can_fail_task=True, + setup_group_timeout_secs=1800, + setup_group=[ + Setup.call(), + FetchDET.call(), + bash_exec( + working_dir='mongo-cxx-driver', + env={'MONGODB_VERSION': f'{mongodb_version}'}, + add_expansions_to_env=True, + script='${DRIVERS_TOOLS}/.evergreen/atlas/setup-atlas-cluster.sh', + ), + expansions_update(file='mongo-cxx-driver/atlas-expansion.yml'), + ], + tasks=[f'{TAG}-{mongodb_version}'], + teardown_group=[ + bash_exec( + working_dir='mongo-cxx-driver', + add_expansions_to_env=True, + script='${DRIVERS_TOOLS}/.evergreen/atlas/teardown-atlas-cluster.sh' + ) + ] + ) + for mongodb_version in MATRIX + ] + + +def variants(): + return [ + BuildVariant( + name=f'{TAG}-matrix', + display_name=f'{TAG}-matrix', + tasks=[EvgTaskRef(name=f'tg-{TAG}-{mongodb_version}') for mongodb_version in MATRIX], + display_tasks=[ + DisplayTask( + name=f'{TAG}-matrix', + execution_tasks=[f'.{TAG}'], + ) + ], + ), + ] diff --git a/.evergreen/generated_configs/functions.yml b/.evergreen/generated_configs/functions.yml index d4f6afeaa7..4ba1b675d6 100644 --- a/.evergreen/generated_configs/functions.yml +++ b/.evergreen/generated_configs/functions.yml @@ -495,6 +495,19 @@ functions: export BUILD_DIR=$(pwd)/build export URI="mongodb://bob:pwd123@localhost" ./.evergreen/scripts/connect.sh + test-search-index-helpers: + command: subprocess.exec + type: test + params: + binary: bash + working_dir: mongo-cxx-driver + args: + - -c + - | + export MONGODB_URI=${MONGODB_URI} + export LD_LIBRARY_PATH=$(pwd)/../mongoc/lib + + ./build/src/mongocxx/test/test_driver "atlas search indexes prose tests" test_mongohouse: command: subprocess.exec type: test diff --git a/.evergreen/generated_configs/task_groups.yml b/.evergreen/generated_configs/task_groups.yml index d0fccb2d63..741086dc55 100644 --- a/.evergreen/generated_configs/task_groups.yml +++ b/.evergreen/generated_configs/task_groups.yml @@ -25,3 +25,63 @@ task_groups: - -c - rm -rf * teardown_task_can_fail_task: true + - name: tg-atlas-search-indexes-7.0 + setup_group: + - func: setup + - func: fetch-det + - command: subprocess.exec + params: + binary: bash + working_dir: mongo-cxx-driver + add_expansions_to_env: true + env: + MONGODB_VERSION: "7.0" + args: + - -c + - ${DRIVERS_TOOLS}/.evergreen/atlas/setup-atlas-cluster.sh + - command: expansions.update + params: + file: mongo-cxx-driver/atlas-expansion.yml + setup_group_can_fail_task: true + setup_group_timeout_secs: 1800 + tasks: + - atlas-search-indexes-7.0 + teardown_group: + - command: subprocess.exec + params: + binary: bash + working_dir: mongo-cxx-driver + add_expansions_to_env: true + args: + - -c + - ${DRIVERS_TOOLS}/.evergreen/atlas/teardown-atlas-cluster.sh + - name: tg-atlas-search-indexes-8.0 + setup_group: + - func: setup + - func: fetch-det + - command: subprocess.exec + params: + binary: bash + working_dir: mongo-cxx-driver + add_expansions_to_env: true + env: + MONGODB_VERSION: "8.0" + args: + - -c + - ${DRIVERS_TOOLS}/.evergreen/atlas/setup-atlas-cluster.sh + - command: expansions.update + params: + file: mongo-cxx-driver/atlas-expansion.yml + setup_group_can_fail_task: true + setup_group_timeout_secs: 1800 + tasks: + - atlas-search-indexes-8.0 + teardown_group: + - command: subprocess.exec + params: + binary: bash + working_dir: mongo-cxx-driver + add_expansions_to_env: true + args: + - -c + - ${DRIVERS_TOOLS}/.evergreen/atlas/teardown-atlas-cluster.sh diff --git a/.evergreen/generated_configs/tasks.yml b/.evergreen/generated_configs/tasks.yml index 6c63684363..524a451a6e 100644 --- a/.evergreen/generated_configs/tasks.yml +++ b/.evergreen/generated_configs/tasks.yml @@ -14,6 +14,24 @@ tasks: tags: [abi-stability, abidiff, ubuntu2204] commands: - func: abidiff + - name: atlas-search-indexes-7.0 + run_on: ubuntu2004-large + tags: [atlas-search-indexes, ubuntu2004] + commands: + - func: install_c_driver + - func: compile + vars: + build_type: Debug + - func: test-search-index-helpers + - name: atlas-search-indexes-8.0 + run_on: ubuntu2004-large + tags: [atlas-search-indexes, ubuntu2004] + commands: + - func: install_c_driver + - func: compile + vars: + build_type: Debug + - func: test-search-index-helpers - name: stub run_on: ubuntu2004-large commands: diff --git a/.evergreen/generated_configs/variants.yml b/.evergreen/generated_configs/variants.yml index 9423785e94..d5b566d3a2 100644 --- a/.evergreen/generated_configs/variants.yml +++ b/.evergreen/generated_configs/variants.yml @@ -19,6 +19,15 @@ buildvariants: cxx_standard: "17" tasks: - name: tg-abi-stability + - name: atlas-search-indexes-matrix + display_name: atlas-search-indexes-matrix + display_tasks: + - name: atlas-search-indexes-matrix + execution_tasks: + - .atlas-search-indexes + tasks: + - name: tg-atlas-search-indexes-7.0 + - name: tg-atlas-search-indexes-8.0 - name: stub display_name: stub tasks: diff --git a/.mci.yml b/.mci.yml index 5a6367d04d..81dc99a0ae 100644 --- a/.mci.yml +++ b/.mci.yml @@ -445,25 +445,6 @@ tasks: - func: "setup" - func: "docker-image-build" - - name: test_search_index_helpers - commands: - - func: "install_c_driver" - - func: "compile" - - command: shell.exec - params: - shell: bash - working_dir: mongo-cxx-driver - script: | - export MONGODB_URI=${MONGODB_URI} - - if [ -n "${lib_dir}" ]; then - export LD_LIBRARY_PATH=$(pwd)/../mongoc/${lib_dir}/ - else - export LD_LIBRARY_PATH=$(pwd)/../mongoc/lib/ - fi - - ./build/src/mongocxx/test/test_driver "atlas search indexes prose tests" - - name: scan-build-ubuntu2204-std11-mnmlstc run_on: ubuntu2204-large tags: [scan-build-matrix] @@ -532,64 +513,6 @@ tasks: - func: "check augmented sbom" - func: "upload augmented sbom" -task_groups: - - name: test_atlas_task_group_search_indexes_7.0 - setup_group: - - func: "setup" - - func: "fetch-det" - - command: subprocess.exec - params: - working_dir: mongo-cxx-driver - binary: bash - add_expansions_to_env: true - env: - MONGODB_VERSION: '7.0' - args: [-c, "${DRIVERS_TOOLS}/.evergreen/atlas/setup-atlas-cluster.sh"] - - command: expansions.update - # Expected to set MONGODB_URI expansion. - params: - file: mongo-cxx-driver/atlas-expansion.yml - teardown_group: - - command: subprocess.exec - params: - working_dir: mongo-cxx-driver - binary: bash - add_expansions_to_env: true - args: [-c, "${DRIVERS_TOOLS}/.evergreen/atlas/teardown-atlas-cluster.sh"] - setup_group_can_fail_task: true - setup_group_timeout_secs: 1800 - tasks: - - test_search_index_helpers - - - name: test_atlas_task_group_search_indexes_8.0 - setup_group: - - func: "setup" - - func: "fetch-det" - - command: subprocess.exec - params: - working_dir: mongo-cxx-driver - binary: bash - add_expansions_to_env: true - env: - MONGODB_VERSION: '8.0' - args: [-c, "${DRIVERS_TOOLS}/.evergreen/atlas/setup-atlas-cluster.sh"] - - command: expansions.update - # Expected to set MONGODB_URI expansion. - params: - file: mongo-cxx-driver/atlas-expansion.yml - teardown_group: - - command: subprocess.exec - params: - working_dir: mongo-cxx-driver - binary: bash - add_expansions_to_env: true - args: [-c, "${DRIVERS_TOOLS}/.evergreen/atlas/teardown-atlas-cluster.sh"] - setup_group_can_fail_task: true - setup_group_timeout_secs: 1800 - tasks: - - test_search_index_helpers - - ####################################### # Buildvariants # ####################################### @@ -1350,24 +1273,6 @@ buildvariants: - name: compile_without_tests - name: compile_macro_guard_tests - - name: atlas-search-indexes-7.0 - display_name: "Atlas Search Indexes (7.0)" - expansions: - build_type: "Debug" - run_on: - - ubuntu2004-build - tasks: - - name: test_atlas_task_group_search_indexes_7.0 - - - name: atlas-search-indexes-8.0 - display_name: "Atlas Search Indexes (8.0)" - expansions: - build_type: "Debug" - run_on: - - ubuntu2004-build - tasks: - - name: test_atlas_task_group_search_indexes_8.0 - - name: ubuntu2004-debug-gcc display_name: "Ubuntu 20.04 Debug (GCC)" expansions: From c86cfeb930fc401c2aecd245df8bca2dbcac9836 Mon Sep 17 00:00:00 2001 From: Ezra Chung Date: Tue, 29 Oct 2024 15:28:32 -0500 Subject: [PATCH 45/78] component: lint --- .../config_generator/components/funcs/lint.py | 20 ------- .../config_generator/components/lint.py | 56 +++++++++++++++++++ .evergreen/generated_configs/tasks.yml | 6 ++ .evergreen/generated_configs/variants.yml | 4 ++ .mci.yml | 10 ---- 5 files changed, 66 insertions(+), 30 deletions(-) delete mode 100644 .evergreen/config_generator/components/funcs/lint.py create mode 100644 .evergreen/config_generator/components/lint.py diff --git a/.evergreen/config_generator/components/funcs/lint.py b/.evergreen/config_generator/components/funcs/lint.py deleted file mode 100644 index 48c620e5bc..0000000000 --- a/.evergreen/config_generator/components/funcs/lint.py +++ /dev/null @@ -1,20 +0,0 @@ -from config_generator.etc.function import Function -from config_generator.etc.utils import bash_exec - -from shrub.v3.evg_command import EvgCommandType - -class Lint(Function): - name = 'lint' - commands = bash_exec( - command_type=EvgCommandType.TEST, - working_dir='mongo-cxx-driver', - script='python etc/clang_format.py lint' - ) - - @classmethod - def call(cls, **kwargs): - return cls.default_call(**kwargs) - - -def functions(): - return Lint.defn() diff --git a/.evergreen/config_generator/components/lint.py b/.evergreen/config_generator/components/lint.py new file mode 100644 index 0000000000..2767d54f18 --- /dev/null +++ b/.evergreen/config_generator/components/lint.py @@ -0,0 +1,56 @@ +from config_generator.components.funcs.setup import Setup + +from config_generator.etc.distros import find_large_distro +from config_generator.etc.function import Function +from config_generator.etc.utils import bash_exec + +from shrub.v3.evg_build_variant import BuildVariant +from shrub.v3.evg_command import EvgCommandType +from shrub.v3.evg_task import EvgTask, EvgTaskRef + + +TAG = 'lint' + + +class Lint(Function): + name = TAG + commands = bash_exec( + command_type=EvgCommandType.TEST, + working_dir='mongo-cxx-driver', + script='python etc/clang_format.py lint', + ) + + @classmethod + def call(cls, **kwargs): + return cls.default_call(**kwargs) + + +def functions(): + return Lint.defn() + + +def tasks(): + distro_name = 'ubuntu1804' + distro = find_large_distro(distro_name) + + return [ + EvgTask( + name=TAG, + tags=[TAG, distro_name], + run_on=distro.name, + commands=[ + Setup.call(), + Lint.call(), + ], + ), + ] + + +def variants(): + return [ + BuildVariant( + name=TAG, + display_name='Lint', + tasks=[EvgTaskRef(name=f'.{TAG}')], + ), + ] diff --git a/.evergreen/generated_configs/tasks.yml b/.evergreen/generated_configs/tasks.yml index 524a451a6e..34fc348bbd 100644 --- a/.evergreen/generated_configs/tasks.yml +++ b/.evergreen/generated_configs/tasks.yml @@ -32,6 +32,12 @@ tasks: vars: build_type: Debug - func: test-search-index-helpers + - name: lint + run_on: ubuntu1804-large + tags: [lint, ubuntu1804] + commands: + - func: setup + - func: lint - name: stub run_on: ubuntu2004-large commands: diff --git a/.evergreen/generated_configs/variants.yml b/.evergreen/generated_configs/variants.yml index d5b566d3a2..640b25de87 100644 --- a/.evergreen/generated_configs/variants.yml +++ b/.evergreen/generated_configs/variants.yml @@ -28,6 +28,10 @@ buildvariants: tasks: - name: tg-atlas-search-indexes-7.0 - name: tg-atlas-search-indexes-8.0 + - name: lint + display_name: Lint + tasks: + - name: .lint - name: stub display_name: stub tasks: diff --git a/.mci.yml b/.mci.yml index 81dc99a0ae..6103513290 100644 --- a/.mci.yml +++ b/.mci.yml @@ -27,12 +27,6 @@ post: ####################################### tasks: - - name: lint - run_on: ubuntu1804-large - commands: - - func: "setup" - - func: "lint" - - name: clang-tidy commands: - func: "setup" @@ -1515,10 +1509,6 @@ buildvariants: - name: debian-package-build-mnmlstc - name: rpm-package-build - - name: lint - display_name: Lint - tasks: [lint] - - name: scan-build-matrix display_name: scan-build-matrix tasks: From abc078056364c6343d4a035e2775455eb22ed25e Mon Sep 17 00:00:00 2001 From: Ezra Chung Date: Tue, 29 Oct 2024 15:28:33 -0500 Subject: [PATCH 46/78] component: clang_tidy (ubuntu2004-debug-clang) --- .../config_generator/components/clang_tidy.py | 69 +++++++++++++++++++ .../components/funcs/clang_tidy.py | 26 ------- .evergreen/generated_configs/functions.yml | 7 +- .evergreen/generated_configs/tasks.yml | 13 ++++ .evergreen/generated_configs/variants.yml | 4 ++ .mci.yml | 7 -- etc/run-clang-tidy.sh | 3 + 7 files changed, 92 insertions(+), 37 deletions(-) create mode 100644 .evergreen/config_generator/components/clang_tidy.py delete mode 100644 .evergreen/config_generator/components/funcs/clang_tidy.py diff --git a/.evergreen/config_generator/components/clang_tidy.py b/.evergreen/config_generator/components/clang_tidy.py new file mode 100644 index 0000000000..c5590698d2 --- /dev/null +++ b/.evergreen/config_generator/components/clang_tidy.py @@ -0,0 +1,69 @@ +from config_generator.components.funcs.install_c_driver import InstallCDriver +from config_generator.components.funcs.setup import Setup + +from config_generator.etc.distros import compiler_to_vars, find_small_distro +from config_generator.etc.function import Function +from config_generator.etc.utils import bash_exec + +from shrub.v3.evg_build_variant import BuildVariant +from shrub.v3.evg_command import EvgCommandType +from shrub.v3.evg_task import EvgTask, EvgTaskRef + +from typing import Mapping + + +TAG = 'clang-tidy' + + +class ClangTidy(Function): + name = TAG + commands = bash_exec( + command_type=EvgCommandType.TEST, + working_dir='mongo-cxx-driver', + include_expansions_in_env=[ + 'cc_compiler', + 'cxx_compiler', + 'distro_id', + ], + script='etc/run-clang-tidy.sh', + ) + + @classmethod + def call(cls, compiler: str, vars: Mapping[str, str] = {}): + vars = vars if vars else {} + + vars |= compiler_to_vars(compiler) + + return cls.default_call(vars=vars) + + +def functions(): + return ClangTidy.defn() + + +def tasks(): + distro_name = 'ubuntu2004' + distro = find_small_distro(distro_name) + + return [ + EvgTask( + name=TAG, + tags=[TAG, distro_name], + run_on=distro.name, + commands=[ + Setup.call(), + InstallCDriver.call(compiler='clang'), + ClangTidy.call(compiler='clang'), + ], + ), + ] + + +def variants(): + return [ + BuildVariant( + name=TAG, + display_name='Clang Tidy', + tasks=[EvgTaskRef(name=f'.{TAG}')], + ), + ] diff --git a/.evergreen/config_generator/components/funcs/clang_tidy.py b/.evergreen/config_generator/components/funcs/clang_tidy.py deleted file mode 100644 index 614cadec84..0000000000 --- a/.evergreen/config_generator/components/funcs/clang_tidy.py +++ /dev/null @@ -1,26 +0,0 @@ -from config_generator.etc.function import Function -from config_generator.etc.utils import bash_exec - -from shrub.v3.evg_command import EvgCommandType - - -class ClangTidy(Function): - name = 'clang-tidy' - commands = bash_exec( - command_type=EvgCommandType.TEST, - working_dir='mongo-cxx-driver', - env={ - 'CC': "${cc_compiler}", - 'CXX': "${cxx_compiler}", - }, - include_expansions_in_env=['distro_id'], - script='./etc/run-clang-tidy.sh', - ) - - @classmethod - def call(cls, **kwargs): - return cls.default_call(**kwargs) - - -def functions(): - return ClangTidy.defn() diff --git a/.evergreen/generated_configs/functions.yml b/.evergreen/generated_configs/functions.yml index 4ba1b675d6..a9029c984f 100644 --- a/.evergreen/generated_configs/functions.yml +++ b/.evergreen/generated_configs/functions.yml @@ -147,14 +147,13 @@ functions: params: binary: bash working_dir: mongo-cxx-driver - env: - CC: ${cc_compiler} - CXX: ${cxx_compiler} include_expansions_in_env: + - cc_compiler + - cxx_compiler - distro_id args: - -c - - ./etc/run-clang-tidy.sh + - etc/run-clang-tidy.sh compile: command: subprocess.exec type: test diff --git a/.evergreen/generated_configs/tasks.yml b/.evergreen/generated_configs/tasks.yml index 34fc348bbd..864b7a9acf 100644 --- a/.evergreen/generated_configs/tasks.yml +++ b/.evergreen/generated_configs/tasks.yml @@ -32,6 +32,19 @@ tasks: vars: build_type: Debug - func: test-search-index-helpers + - name: clang-tidy + run_on: ubuntu2004-small + tags: [clang-tidy, ubuntu2004] + commands: + - func: setup + - func: install_c_driver + vars: + cc_compiler: clang + cxx_compiler: clang++ + - func: clang-tidy + vars: + cc_compiler: clang + cxx_compiler: clang++ - name: lint run_on: ubuntu1804-large tags: [lint, ubuntu1804] diff --git a/.evergreen/generated_configs/variants.yml b/.evergreen/generated_configs/variants.yml index 640b25de87..4a00db9a6b 100644 --- a/.evergreen/generated_configs/variants.yml +++ b/.evergreen/generated_configs/variants.yml @@ -28,6 +28,10 @@ buildvariants: tasks: - name: tg-atlas-search-indexes-7.0 - name: tg-atlas-search-indexes-8.0 + - name: clang-tidy + display_name: Clang Tidy + tasks: + - name: .clang-tidy - name: lint display_name: Lint tasks: diff --git a/.mci.yml b/.mci.yml index 6103513290..e8be4ab321 100644 --- a/.mci.yml +++ b/.mci.yml @@ -27,12 +27,6 @@ post: ####################################### tasks: - - name: clang-tidy - commands: - - func: "setup" - - func: "install_c_driver" - - func: "clang-tidy" - - name: compile_and_test_with_shared_libs commands: - func: "setup" @@ -1290,7 +1284,6 @@ buildvariants: run_on: - ubuntu2004-large tasks: - - name: clang-tidy - name: compile_without_tests - name: compile_macro_guard_tests diff --git a/etc/run-clang-tidy.sh b/etc/run-clang-tidy.sh index e0a963c4f6..28fc8c0323 100755 --- a/etc/run-clang-tidy.sh +++ b/etc/run-clang-tidy.sh @@ -3,6 +3,9 @@ set -o errexit set -o pipefail +export CC="${cc_compiler:?}" +export CXX="${cxx_compiler:?}" + if [[ "${distro_id:?}" != ubuntu* ]]; then echo "run-clang-tidy.sh expects to be run on an Ubuntu distro!" 1>&2 exit 1 From e509fec5919f1198ade73a88473d192f4cc6e534 Mon Sep 17 00:00:00 2001 From: Ezra Chung Date: Tue, 29 Oct 2024 15:28:33 -0500 Subject: [PATCH 47/78] component: uninstall_check (+ uninstall_check_windows) --- .evergreen-old/find_cmake.sh | 45 --------- .../components/uninstall_check.py | 98 +++++++++++++++++++ .evergreen/generated_configs/functions.yml | 13 +++ .evergreen/generated_configs/tasks.yml | 91 +++++++++++++++++ .evergreen/generated_configs/variants.yml | 8 ++ .evergreen/scripts/find-cmake-old.sh | 44 +++++++++ .../scripts}/uninstall_check.sh | 40 ++++---- .../scripts}/uninstall_check_windows.cmd | 0 .mci.yml | 41 -------- etc/make_release.py | 2 +- 10 files changed, 275 insertions(+), 107 deletions(-) delete mode 100755 .evergreen-old/find_cmake.sh create mode 100644 .evergreen/config_generator/components/uninstall_check.py create mode 100755 .evergreen/scripts/find-cmake-old.sh rename {.evergreen-old => .evergreen/scripts}/uninstall_check.sh (51%) rename {.evergreen-old => .evergreen/scripts}/uninstall_check_windows.cmd (100%) mode change 100644 => 100755 diff --git a/.evergreen-old/find_cmake.sh b/.evergreen-old/find_cmake.sh deleted file mode 100755 index a6f39ac81c..0000000000 --- a/.evergreen-old/find_cmake.sh +++ /dev/null @@ -1,45 +0,0 @@ -#!/usr/bin/env bash - -set -o errexit # Exit the script with error if any of the commands fail - -find_cmake () -{ - if [ ! -z "$CMAKE" ]; then - return 0 - elif [ -f "/Applications/cmake-3.2.2-Darwin-x86_64/CMake.app/Contents/bin/cmake" ]; then - CMAKE="/Applications/cmake-3.2.2-Darwin-x86_64/CMake.app/Contents/bin/cmake" - elif [ -f "/Applications/Cmake.app/Contents/bin/cmake" ]; then - CMAKE="/Applications/Cmake.app/Contents/bin/cmake" - elif [ -f "/opt/cmake/bin/cmake" ]; then - CMAKE="/opt/cmake/bin/cmake" - elif [ -z "$IGNORE_SYSTEM_CMAKE" ] && command -v cmake 2>/dev/null; then - CMAKE=cmake - elif uname -a | grep -iq 'x86_64 GNU/Linux'; then - if [ -f "$(pwd)/cmake-3.11.0/bin/cmake" ]; then - CMAKE="$(pwd)/cmake-3.11.0/bin/cmake" - return 0 - fi - curl --retry 5 https://cmake.org/files/v3.11/cmake-3.11.0-Linux-x86_64.tar.gz -sS --max-time 120 --fail --output cmake.tar.gz - mkdir cmake-3.11.0 - tar xzf cmake.tar.gz -C cmake-3.11.0 --strip-components=1 - CMAKE=$(pwd)/cmake-3.11.0/bin/cmake - elif [ -f "/cygdrive/c/cmake/bin/cmake" ]; then - CMAKE="/cygdrive/c/cmake/bin/cmake" - fi - if [ -z "$CMAKE" -o -z "$( $CMAKE --version 2>/dev/null )" ]; then - # Some images have no cmake yet, or a broken cmake (see: BUILD-8570) - echo "-- MAKE CMAKE --" - CMAKE_INSTALL_DIR=$(readlink -f cmake-install) - curl --retry 5 https://cmake.org/files/v3.11/cmake-3.11.0.tar.gz -sS --max-time 120 --fail --output cmake.tar.gz - tar xzf cmake.tar.gz - cd cmake-3.11.0 - ./bootstrap --prefix="${CMAKE_INSTALL_DIR}" - make -j8 - make install - cd .. - CMAKE="${CMAKE_INSTALL_DIR}/bin/cmake" - echo "-- DONE MAKING CMAKE --" - fi -} - -find_cmake diff --git a/.evergreen/config_generator/components/uninstall_check.py b/.evergreen/config_generator/components/uninstall_check.py new file mode 100644 index 0000000000..766b2aaa8a --- /dev/null +++ b/.evergreen/config_generator/components/uninstall_check.py @@ -0,0 +1,98 @@ +from config_generator.components.funcs.compile import Compile +from config_generator.components.funcs.fetch_c_driver_source import FetchCDriverSource +from config_generator.components.funcs.setup import Setup + +from config_generator.etc.distros import find_large_distro, make_distro_str +from config_generator.etc.function import Function +from config_generator.etc.utils import bash_exec + +from shrub.v3.evg_build_variant import BuildVariant, DisplayTask +from shrub.v3.evg_command import EvgCommandType +from shrub.v3.evg_task import EvgTask, EvgTaskRef + +from itertools import product + + +TAG = 'uninstall-check' + + +# pylint: disable=line-too-long +# fmt: off +MATRIX = [ + ('debian10', 'gcc', [ 'Release'], ['shared']), + ('debian11', 'gcc', [ 'Release'], ['shared']), + ('debian12', 'gcc', [ 'Release'], ['shared']), + ('windows-64-vs2015', 'vs2015x64', ['Debug', 'Release'], ['shared']), + ('ubuntu1804', 'gcc', [ 'Release'], ['shared']), + ('ubuntu2004', 'gcc', [ 'Release'], ['shared']), +] +# fmt: on +# pylint: enable=line-too-long + + +class UninstallCheck(Function): + name = TAG + commands = bash_exec( + command_type=EvgCommandType.TEST, + working_dir='mongo-cxx-driver', + script='''\ + case "$OSTYPE" in + darwin*|linux*) .evergreen/scripts/uninstall_check.sh ;; + cygwin) cmd.exe /c ".evergreen\\\\scripts\\\\uninstall_check_windows.cmd" ;; + esac + ''' + ) + + @classmethod + def call(cls, **kwargs): + return cls.default_call(**kwargs) + + +def functions(): + return UninstallCheck.defn() + + +def tasks(): + res = [] + + link_type = 'shared' + + for distro_name, compiler, build_types, link_types in MATRIX: + distro = find_large_distro(distro_name) + + for build_type, link_type in product(build_types, link_types): + res.append( + EvgTask( + name=f'{TAG}-{make_distro_str(distro_name, compiler, None)}-{build_type.lower()}-{link_type}', + tags=[TAG, distro_name, compiler, build_type.lower(), link_type], + run_on=distro.name, + commands=[ + Setup.call(), + FetchCDriverSource.call(), + Compile.call( + build_type=build_type, + compiler=compiler, + vars={'ENABLE_TESTS': 'OFF'}, + ), + UninstallCheck.call(), + ], + ) + ) + + return res + + +def variants(): + return [ + BuildVariant( + name=TAG, + display_name='Uninstall Check', + tasks=[EvgTaskRef(name=f'.{TAG}')], + display_tasks=[ + DisplayTask( + name=f'uninstall-check', + execution_tasks=[f'.{TAG}'], + ) + ], + ), + ] diff --git a/.evergreen/generated_configs/functions.yml b/.evergreen/generated_configs/functions.yml index a9029c984f..b1da7287c1 100644 --- a/.evergreen/generated_configs/functions.yml +++ b/.evergreen/generated_configs/functions.yml @@ -516,6 +516,19 @@ functions: args: - -c - .evergreen/scripts/test-mongohouse.sh + uninstall-check: + command: subprocess.exec + type: test + params: + binary: bash + working_dir: mongo-cxx-driver + args: + - -c + - | + case "$OSTYPE" in + darwin*|linux*) .evergreen/scripts/uninstall_check.sh ;; + cygwin) cmd.exe /c ".evergreen\\scripts\\uninstall_check_windows.cmd" ;; + esac upload augmented sbom: - command: s3.put type: system diff --git a/.evergreen/generated_configs/tasks.yml b/.evergreen/generated_configs/tasks.yml index 864b7a9acf..c2a7ce96fd 100644 --- a/.evergreen/generated_configs/tasks.yml +++ b/.evergreen/generated_configs/tasks.yml @@ -60,3 +60,94 @@ tasks: args: - -c - "true" + - name: uninstall-check-debian10-gcc-release-shared + run_on: debian10-large + tags: [uninstall-check, debian10, gcc, release, shared] + commands: + - func: setup + - func: fetch_c_driver_source + - func: compile + vars: + ENABLE_TESTS: "OFF" + build_type: Release + cc_compiler: gcc + cxx_compiler: g++ + - func: uninstall-check + - name: uninstall-check-debian11-gcc-release-shared + run_on: debian11-large + tags: [uninstall-check, debian11, gcc, release, shared] + commands: + - func: setup + - func: fetch_c_driver_source + - func: compile + vars: + ENABLE_TESTS: "OFF" + build_type: Release + cc_compiler: gcc + cxx_compiler: g++ + - func: uninstall-check + - name: uninstall-check-debian12-gcc-release-shared + run_on: debian12-large + tags: [uninstall-check, debian12, gcc, release, shared] + commands: + - func: setup + - func: fetch_c_driver_source + - func: compile + vars: + ENABLE_TESTS: "OFF" + build_type: Release + cc_compiler: gcc + cxx_compiler: g++ + - func: uninstall-check + - name: uninstall-check-ubuntu1804-gcc-release-shared + run_on: ubuntu1804-large + tags: [uninstall-check, ubuntu1804, gcc, release, shared] + commands: + - func: setup + - func: fetch_c_driver_source + - func: compile + vars: + ENABLE_TESTS: "OFF" + build_type: Release + cc_compiler: gcc + cxx_compiler: g++ + - func: uninstall-check + - name: uninstall-check-ubuntu2004-gcc-release-shared + run_on: ubuntu2004-large + tags: [uninstall-check, ubuntu2004, gcc, release, shared] + commands: + - func: setup + - func: fetch_c_driver_source + - func: compile + vars: + ENABLE_TESTS: "OFF" + build_type: Release + cc_compiler: gcc + cxx_compiler: g++ + - func: uninstall-check + - name: uninstall-check-vs2015-x64-debug-shared + run_on: windows-64-vs2015-large + tags: [uninstall-check, windows-64-vs2015, vs2015x64, debug, shared] + commands: + - func: setup + - func: fetch_c_driver_source + - func: compile + vars: + ENABLE_TESTS: "OFF" + build_type: Debug + generator: Visual Studio 14 2015 + platform: x64 + - func: uninstall-check + - name: uninstall-check-vs2015-x64-release-shared + run_on: windows-64-vs2015-large + tags: [uninstall-check, windows-64-vs2015, vs2015x64, release, shared] + commands: + - func: setup + - func: fetch_c_driver_source + - func: compile + vars: + ENABLE_TESTS: "OFF" + build_type: Release + generator: Visual Studio 14 2015 + platform: x64 + - func: uninstall-check diff --git a/.evergreen/generated_configs/variants.yml b/.evergreen/generated_configs/variants.yml index 4a00db9a6b..af987b3160 100644 --- a/.evergreen/generated_configs/variants.yml +++ b/.evergreen/generated_configs/variants.yml @@ -40,3 +40,11 @@ buildvariants: display_name: stub tasks: - name: stub + - name: uninstall-check + display_name: Uninstall Check + display_tasks: + - name: uninstall-check + execution_tasks: + - .uninstall-check + tasks: + - name: .uninstall-check diff --git a/.evergreen/scripts/find-cmake-old.sh b/.evergreen/scripts/find-cmake-old.sh new file mode 100755 index 0000000000..8fea2f0a35 --- /dev/null +++ b/.evergreen/scripts/find-cmake-old.sh @@ -0,0 +1,44 @@ +#!/usr/bin/env bash + +set -o errexit # Exit the script with error if any of the commands fail + +find_cmake() { + if [ -n "$CMAKE" ]; then + return 0 + elif [ -f "/Applications/cmake-3.2.2-Darwin-x86_64/CMake.app/Contents/bin/cmake" ]; then + CMAKE="/Applications/cmake-3.2.2-Darwin-x86_64/CMake.app/Contents/bin/cmake" + elif [ -f "/Applications/Cmake.app/Contents/bin/cmake" ]; then + CMAKE="/Applications/Cmake.app/Contents/bin/cmake" + elif [ -f "/opt/cmake/bin/cmake" ]; then + CMAKE="/opt/cmake/bin/cmake" + elif [ -z "$IGNORE_SYSTEM_CMAKE" ] && command -v cmake 2>/dev/null; then + CMAKE=cmake + elif uname -a | grep -iq 'x86_64 GNU/Linux'; then + if [ -f "$(pwd)/cmake-3.11.0/bin/cmake" ]; then + CMAKE="$(pwd)/cmake-3.11.0/bin/cmake" + return 0 + fi + curl --retry 5 https://cmake.org/files/v3.11/cmake-3.11.0-Linux-x86_64.tar.gz -sS --max-time 120 --fail --output cmake.tar.gz + mkdir cmake-3.11.0 + tar xzf cmake.tar.gz -C cmake-3.11.0 --strip-components=1 + CMAKE=$(pwd)/cmake-3.11.0/bin/cmake + elif [ -f "/cygdrive/c/cmake/bin/cmake" ]; then + CMAKE="/cygdrive/c/cmake/bin/cmake" + fi + if [ -z "$CMAKE" ] || [ -z "$($CMAKE --version 2>/dev/null)" ]; then + # Some images have no cmake yet, or a broken cmake (see: BUILD-8570) + echo "-- MAKE CMAKE --" + CMAKE_INSTALL_DIR=$(readlink -f cmake-install) + curl --retry 5 https://cmake.org/files/v3.11/cmake-3.11.0.tar.gz -sS --max-time 120 --fail --output cmake.tar.gz + tar xzf cmake.tar.gz + cd cmake-3.11.0 + ./bootstrap --prefix="${CMAKE_INSTALL_DIR}" + make -j8 + make install + cd .. + CMAKE="${CMAKE_INSTALL_DIR}/bin/cmake" + echo "-- DONE MAKING CMAKE --" + fi +} + +find_cmake diff --git a/.evergreen-old/uninstall_check.sh b/.evergreen/scripts/uninstall_check.sh similarity index 51% rename from .evergreen-old/uninstall_check.sh rename to .evergreen/scripts/uninstall_check.sh index 984f185e08..56d33ceb09 100755 --- a/.evergreen-old/uninstall_check.sh +++ b/.evergreen/scripts/uninstall_check.sh @@ -1,87 +1,87 @@ #!/usr/bin/env bash -set -o errexit # Exit the script with error if any of the commands fail +set -o errexit # Exit the script with error if any of the commands fail -BUILD_DIR=$(pwd)/build -INSTALL_DIR=$BUILD_DIR/install +BUILD_DIR="$(pwd)/build" +INSTALL_DIR="$BUILD_DIR/install" -touch $INSTALL_DIR/lib/canary.txt +touch "$INSTALL_DIR/lib/canary.txt" -ls -l $INSTALL_DIR/share/mongo-cxx-driver +ls -l "$INSTALL_DIR/share/mongo-cxx-driver" -. .evergreen-old/find_cmake.sh +. .evergreen/scripts/find-cmake-old.sh -$CMAKE --build $BUILD_DIR --target uninstall +"$CMAKE" --build "$BUILD_DIR" --target uninstall -ls -lR $INSTALL_DIR +ls -lR "$INSTALL_DIR" -if test -f $INSTALL_DIR/lib/pkgconfig/libbsoncxx.pc; then +if test -f "$INSTALL_DIR/lib/pkgconfig/libbsoncxx.pc"; then echo "libbsoncxx.pc found!" exit 1 else echo "libbsoncxx.pc check ok" fi -if test ! -f $INSTALL_DIR/lib/canary.txt; then +if test ! -f "$INSTALL_DIR/lib/canary.txt"; then echo "canary.txt not found!" exit 1 else echo "canary.txt check ok" fi -if test ! -d $INSTALL_DIR/lib; then +if test ! -d "$INSTALL_DIR/lib"; then echo "$INSTALL_DIR/lib not found!" exit 1 else echo "$INSTALL_DIR/lib check ok" fi -if test -f $INSTALL_DIR/lib/pkgconfig/libmongocxx.pc; then +if test -f "$INSTALL_DIR/lib/pkgconfig/libmongocxx.pc"; then echo "libmongocxx.pc found!" exit 1 else echo "libmongocxx.pc check ok" fi -if test -f $INSTALL_DIR/include/bsoncxx/v_noabi/bsoncxx/json.hpp; then +if test -f "$INSTALL_DIR/include/bsoncxx/v_noabi/bsoncxx/json.hpp"; then echo "bsoncxx/json.hpp found!" exit 1 else echo "bsoncxx/json.hpp check ok" fi -if test -f $INSTALL_DIR/include/bsoncxx/v_noabi/bsoncxx/types.hpp; then +if test -f "$INSTALL_DIR/include/bsoncxx/v_noabi/bsoncxx/types.hpp"; then echo "bsoncxx/types.hpp found!" exit 1 else echo "bsoncxx/types.hpp check ok" fi -if test -d $INSTALL_DIR/include/bsoncxx; then +if test -d "$INSTALL_DIR/include/bsoncxx"; then echo "$INSTALL_DIR/include/bsoncxx found!" exit 1 else echo "$INSTALL_DIR/include/bsoncxx check ok" fi -if test -f $INSTALL_DIR/include/mongocxx/v_noabi/mongocxx/hint.hpp; then +if test -f "$INSTALL_DIR/include/mongocxx/v_noabi/mongocxx/hint.hpp"; then echo "mongocxx/hint.hpp found!" exit 1 else echo "mongocxx/hint.hpp check ok" fi -if test -f $INSTALL_DIR/include/mongocxx/v_noabi/mongocxx/logger.hpp; then +if test -f "$INSTALL_DIR/include/mongocxx/v_noabi/mongocxx/logger.hpp"; then echo "mongocxx/logger.hpp found!" exit 1 else echo "mongocxx/logger.hpp check ok" fi -if test -d $INSTALL_DIR/include/mongocxx; then +if test -d "$INSTALL_DIR/include/mongocxx"; then echo "$INSTALL_DIR/include/mongocxx found!" exit 1 else echo "$INSTALL_DIR/include/mongocxx check ok" fi -if test -f $INSTALL_DIR/share/mongo-cxx-driver/uninstall.sh; then +if test -f "$INSTALL_DIR/share/mongo-cxx-driver/uninstall.sh"; then echo "uninstall.sh found!" exit 1 else echo "uninstall.sh check ok" fi -if test -d $INSTALL_DIR/share/mongo-cxx-driver; then +if test -d "$INSTALL_DIR/share/mongo-cxx-driver"; then echo "$INSTALL_DIR/share/mongo-cxx-driver found!" exit 1 else diff --git a/.evergreen-old/uninstall_check_windows.cmd b/.evergreen/scripts/uninstall_check_windows.cmd old mode 100644 new mode 100755 similarity index 100% rename from .evergreen-old/uninstall_check_windows.cmd rename to .evergreen/scripts/uninstall_check_windows.cmd diff --git a/.mci.yml b/.mci.yml index e8be4ab321..1e054b8dbd 100644 --- a/.mci.yml +++ b/.mci.yml @@ -247,38 +247,6 @@ tasks: vars: MONGOCXX_TEST_TOPOLOGY: sharded - - name: uninstall_check - commands: - - func: "setup" - - func: "fetch_c_driver_source" - - func: "compile" - vars: - ENABLE_TESTS: OFF - - command: shell.exec - type: test - params: - shell: bash - working_dir: "mongo-cxx-driver" - script: |- - set -o errexit - ./.evergreen-old/uninstall_check.sh - - - name: uninstall_check_windows - commands: - - func: "setup" - - func: "fetch_c_driver_source" - - func: "compile" - vars: - ENABLE_TESTS: OFF - - command: shell.exec - type: test - params: - shell: bash - working_dir: "mongo-cxx-driver" - script: |- - set -o errexit - cmd.exe /c .\\.evergreen-old\\uninstall_check_windows.cmd - - name: build_example_with_add_subdirectory commands: - func: "setup" @@ -1043,7 +1011,6 @@ buildvariants: - name: compile_and_test_with_shared_libs_replica_set_with_libmongocrypt - name: compile_and_test_with_shared_libs_sharded_cluster_with_libmongocrypt - name: build_example_with_add_subdirectory - - name: uninstall_check - name: debian11-release-50 display_name: "Debian 11 Release (MongoDB 5.0)" @@ -1062,7 +1029,6 @@ buildvariants: - name: compile_and_test_with_shared_libs_replica_set - name: compile_and_test_with_shared_libs_sharded_cluster - name: build_example_with_add_subdirectory - - name: uninstall_check - name: debian10-release-50 display_name: "Debian 10 Release (MongoDB 5.0)" @@ -1079,7 +1045,6 @@ buildvariants: - name: compile_and_test_with_shared_libs_replica_set - name: compile_and_test_with_shared_libs_sharded_cluster - name: build_example_with_add_subdirectory - - name: uninstall_check - name: ubuntu2004-release-latest display_name: "Ubuntu 20.04 Release (MongoDB Latest)" @@ -1096,7 +1061,6 @@ buildvariants: - name: compile_and_test_with_shared_libs_replica_set_with_libmongocrypt - name: compile_and_test_with_shared_libs_sharded_cluster_with_libmongocrypt - name: build_example_with_add_subdirectory - - name: uninstall_check - name: ubuntu2004-release-50 display_name: "Ubuntu 20.04 Release (MongoDB 5.0)" @@ -1113,7 +1077,6 @@ buildvariants: - name: compile_and_test_with_shared_libs_replica_set - name: compile_and_test_with_shared_libs_sharded_cluster - name: build_example_with_add_subdirectory - - name: uninstall_check - name: ubuntu1804-release-50 display_name: "Ubuntu 18.04 Release (MongoDB 5.0)" @@ -1130,7 +1093,6 @@ buildvariants: - name: compile_and_test_with_shared_libs_replica_set - name: compile_and_test_with_shared_libs_sharded_cluster - name: build_example_with_add_subdirectory - - name: uninstall_check - name: ubuntu2004-debug-valgrind-latest display_name: "Valgrind Ubuntu 20.04 Debug (MongoDB Latest)" @@ -1467,7 +1429,6 @@ buildvariants: - windows-64-vs2015-compile tasks: - name: compile_without_tests - - name: uninstall_check_windows - name: windows-2k8-debug display_name: "Windows (VS 2015) Debug Static (MongoDB 4.2)" @@ -1480,7 +1441,6 @@ buildvariants: - windows-64-vs2015-compile tasks: - name: compile_without_tests - - name: uninstall_check_windows - name: windows-msvc2015-debug display_name: "Windows (VS 2015) Debug (MongoDB 4.2)" @@ -1493,7 +1453,6 @@ buildvariants: - windows-64-vs2015-compile tasks: - name: compile_without_tests - - name: uninstall_check_windows - name: packaging display_name: Linux Distro Packaging diff --git a/etc/make_release.py b/etc/make_release.py index b78965107a..f2802bfe73 100755 --- a/etc/make_release.py +++ b/etc/make_release.py @@ -438,7 +438,7 @@ def build_distribution(release_tag, release_version, c_driver_dir, quiet, skip_d click.echo('Clear ./build with "git clean -xdf ./build"', err=True) return None - run_shell_script('. .evergreen/find_cmake.sh;' + run_shell_script('. .evergreen/scripts/find-cmake-old.sh;' 'cd build;' 'echo ' + release_version + ' > VERSION_CURRENT;' '${CMAKE} -DCMAKE_BUILD_TYPE=Release ' From c558e75cabff902b225d9e809e9581a4b75e43f7 Mon Sep 17 00:00:00 2001 From: Ezra Chung Date: Tue, 29 Oct 2024 15:28:33 -0500 Subject: [PATCH 48/78] component: mongohouse --- .../components/funcs/build_mongohouse.py | 28 ----- .../components/funcs/run_mongohouse.py | 25 ----- .../components/funcs/test_mongohouse.py | 21 ---- .../config_generator/components/mongohouse.py | 103 ++++++++++++++++++ .evergreen/generated_configs/tasks.yml | 12 ++ .evergreen/generated_configs/variants.yml | 4 + .mci.yml | 18 --- 7 files changed, 119 insertions(+), 92 deletions(-) delete mode 100644 .evergreen/config_generator/components/funcs/build_mongohouse.py delete mode 100644 .evergreen/config_generator/components/funcs/run_mongohouse.py delete mode 100644 .evergreen/config_generator/components/funcs/test_mongohouse.py create mode 100644 .evergreen/config_generator/components/mongohouse.py diff --git a/.evergreen/config_generator/components/funcs/build_mongohouse.py b/.evergreen/config_generator/components/funcs/build_mongohouse.py deleted file mode 100644 index 9d47206107..0000000000 --- a/.evergreen/config_generator/components/funcs/build_mongohouse.py +++ /dev/null @@ -1,28 +0,0 @@ -from config_generator.etc.function import Function -from config_generator.etc.utils import bash_exec - -from shrub.v3.evg_command import EvgCommandType - - -class BuildMongohouse(Function): - name = 'build_mongohouse' - commands = bash_exec( - command_type=EvgCommandType.SETUP, - script='''\ - if [ ! -d "drivers-evergreen-tools" ]; then - git clone https://github.com/mongodb-labs/drivers-evergreen-tools.git - fi - cd drivers-evergreen-tools - export DRIVERS_TOOLS=$(pwd) - - .evergreen/atlas_data_lake/pull-mongohouse-image.sh - ''' - ) - - @classmethod - def call(cls, **kwargs): - return cls.default_call(**kwargs) - - -def functions(): - return BuildMongohouse.defn() diff --git a/.evergreen/config_generator/components/funcs/run_mongohouse.py b/.evergreen/config_generator/components/funcs/run_mongohouse.py deleted file mode 100644 index 8016d9ae36..0000000000 --- a/.evergreen/config_generator/components/funcs/run_mongohouse.py +++ /dev/null @@ -1,25 +0,0 @@ -from config_generator.etc.function import Function -from config_generator.etc.utils import bash_exec - -from shrub.v3.evg_command import EvgCommandType - - -class RunMongohouse(Function): - name = 'run_mongohouse' - commands = bash_exec( - command_type=EvgCommandType.SETUP, - script='''\ - cd drivers-evergreen-tools - export DRIVERS_TOOLS=$(pwd) - - .evergreen/atlas_data_lake/run-mongohouse-image.sh - ''' - ) - - @classmethod - def call(cls, **kwargs): - return cls.default_call(**kwargs) - - -def functions(): - return RunMongohouse.defn() diff --git a/.evergreen/config_generator/components/funcs/test_mongohouse.py b/.evergreen/config_generator/components/funcs/test_mongohouse.py deleted file mode 100644 index baeb431b9c..0000000000 --- a/.evergreen/config_generator/components/funcs/test_mongohouse.py +++ /dev/null @@ -1,21 +0,0 @@ -from config_generator.etc.function import Function -from config_generator.etc.utils import bash_exec - -from shrub.v3.evg_command import EvgCommandType - - -class TestMongohouse(Function): - name = 'test_mongohouse' - commands = bash_exec( - command_type=EvgCommandType.TEST, - working_dir='mongo-cxx-driver', - script='.evergreen/scripts/test-mongohouse.sh' - ) - - @classmethod - def call(cls, **kwargs): - return cls.default_call(**kwargs) - - -def functions(): - return TestMongohouse.defn() diff --git a/.evergreen/config_generator/components/mongohouse.py b/.evergreen/config_generator/components/mongohouse.py new file mode 100644 index 0000000000..360285ea4e --- /dev/null +++ b/.evergreen/config_generator/components/mongohouse.py @@ -0,0 +1,103 @@ +from config_generator.components.funcs.compile import Compile +from config_generator.components.funcs.fetch_c_driver_source import FetchCDriverSource +from config_generator.components.funcs.setup import Setup + +from config_generator.etc.distros import find_large_distro +from config_generator.etc.function import Function, merge_defns +from config_generator.etc.utils import bash_exec + +from shrub.v3.evg_build_variant import BuildVariant +from shrub.v3.evg_command import EvgCommandType +from shrub.v3.evg_task import EvgTask, EvgTaskRef + + +TAG = 'mongohouse' + + +class BuildMongohouse(Function): + name = 'build_mongohouse' + commands = bash_exec( + command_type=EvgCommandType.SETUP, + script='''\ + if [ ! -d "drivers-evergreen-tools" ]; then + git clone https://github.com/mongodb-labs/drivers-evergreen-tools.git + fi + cd drivers-evergreen-tools + export DRIVERS_TOOLS=$(pwd) + + .evergreen/atlas_data_lake/pull-mongohouse-image.sh + ''' + ) + + @classmethod + def call(cls, **kwargs): + return cls.default_call(**kwargs) + + +class RunMongohouse(Function): + name = 'run_mongohouse' + commands = bash_exec( + command_type=EvgCommandType.SETUP, + script='''\ + cd drivers-evergreen-tools + export DRIVERS_TOOLS=$(pwd) + + .evergreen/atlas_data_lake/run-mongohouse-image.sh + ''' + ) + + @classmethod + def call(cls, **kwargs): + return cls.default_call(**kwargs) + + +class TestMongohouse(Function): + name = 'test_mongohouse' + commands = bash_exec( + command_type=EvgCommandType.TEST, + working_dir='mongo-cxx-driver', + script='.evergreen/scripts/test-mongohouse.sh' + ) + + @classmethod + def call(cls, **kwargs): + return cls.default_call(**kwargs) + + +def functions(): + return merge_defns( + BuildMongohouse.defn(), + RunMongohouse.defn(), + TestMongohouse.defn(), + ) + + +def tasks(): + distro_name = 'ubuntu2204' + distro = find_large_distro(distro_name) + + return [ + EvgTask( + name='test_mongohouse', + tags=[TAG, distro_name], + run_on=distro.name, + commands=[ + Setup.call(), + FetchCDriverSource.call(), + Compile.call(build_type='Release'), + BuildMongohouse.call(), + RunMongohouse.call(), + TestMongohouse.call(), + ], + ), + ] + + +def variants(): + return [ + BuildVariant( + name='mongohouse', + display_name='Mongohouse', + tasks=[EvgTaskRef(name=f'.{TAG}')] + ), + ] diff --git a/.evergreen/generated_configs/tasks.yml b/.evergreen/generated_configs/tasks.yml index c2a7ce96fd..289b9de128 100644 --- a/.evergreen/generated_configs/tasks.yml +++ b/.evergreen/generated_configs/tasks.yml @@ -60,6 +60,18 @@ tasks: args: - -c - "true" + - name: test_mongohouse + run_on: ubuntu2204-large + tags: [mongohouse, ubuntu2204] + commands: + - func: setup + - func: fetch_c_driver_source + - func: compile + vars: + build_type: Release + - func: build_mongohouse + - func: run_mongohouse + - func: test_mongohouse - name: uninstall-check-debian10-gcc-release-shared run_on: debian10-large tags: [uninstall-check, debian10, gcc, release, shared] diff --git a/.evergreen/generated_configs/variants.yml b/.evergreen/generated_configs/variants.yml index af987b3160..68f0339693 100644 --- a/.evergreen/generated_configs/variants.yml +++ b/.evergreen/generated_configs/variants.yml @@ -36,6 +36,10 @@ buildvariants: display_name: Lint tasks: - name: .lint + - name: mongohouse + display_name: Mongohouse + tasks: + - name: .mongohouse - name: stub display_name: stub tasks: diff --git a/.mci.yml b/.mci.yml index 1e054b8dbd..d171d3dcea 100644 --- a/.mci.yml +++ b/.mci.yml @@ -344,16 +344,6 @@ tasks: local_file: rpm.tar.gz content_type: ${content_type|application/x-gzip} - - - name: test_mongohouse - commands: - - func: "setup" - - func: "fetch_c_driver_source" - - func: "compile" - - func: "build_mongohouse" - - func: "run_mongohouse" - - func: "test_mongohouse" - - name: test_versioned_api commands: - func: "setup" @@ -1249,14 +1239,6 @@ buildvariants: - name: compile_without_tests - name: compile_macro_guard_tests - - name: mongohouse-ubuntu - display_name: "Mongohouse Test" - expansions: - build_type: "Release" - run_on: ubuntu2204-small - tasks: - - name: test_mongohouse - - name: zseries-rhel83-latest display_name: "zSeries RHEL 8.3 (MongoDB Latest)" patchable: false From 6f417e0634e6b437cfcf81f63ca440ea6a5e9871 Mon Sep 17 00:00:00 2001 From: Ezra Chung Date: Tue, 29 Oct 2024 15:28:33 -0500 Subject: [PATCH 49/78] component: silk --- .../components/funcs/check_augmented_sbom.py | 27 ----- .../components/funcs/upload_augmented_sbom.py | 39 ------- .../config_generator/components/silk.py | 100 ++++++++++++++++++ .evergreen/generated_configs/tasks.yml | 7 ++ .evergreen/generated_configs/variants.yml | 4 + .mci.yml | 13 --- 6 files changed, 111 insertions(+), 79 deletions(-) delete mode 100644 .evergreen/config_generator/components/funcs/check_augmented_sbom.py delete mode 100644 .evergreen/config_generator/components/funcs/upload_augmented_sbom.py create mode 100644 .evergreen/config_generator/components/silk.py diff --git a/.evergreen/config_generator/components/funcs/check_augmented_sbom.py b/.evergreen/config_generator/components/funcs/check_augmented_sbom.py deleted file mode 100644 index aafefc205d..0000000000 --- a/.evergreen/config_generator/components/funcs/check_augmented_sbom.py +++ /dev/null @@ -1,27 +0,0 @@ -from shrub.v3.evg_command import EvgCommandType - -from config_generator.etc.function import Function -from config_generator.etc.utils import bash_exec - - -class CheckAugmentedSBOM(Function): - name = 'check augmented sbom' - commands = bash_exec( - command_type=EvgCommandType.TEST, - working_dir='mongo-cxx-driver', - include_expansions_in_env=[ - 'ARTIFACTORY_USER', - 'ARTIFACTORY_PASSWORD', - 'SILK_CLIENT_ID', - 'SILK_CLIENT_SECRET', - ], - script='.evergreen/scripts/check-augmented-sbom.sh', - ) - - @classmethod - def call(cls, **kwargs): - return cls.default_call(**kwargs) - - -def functions(): - return CheckAugmentedSBOM.defn() diff --git a/.evergreen/config_generator/components/funcs/upload_augmented_sbom.py b/.evergreen/config_generator/components/funcs/upload_augmented_sbom.py deleted file mode 100644 index 674af3aeb3..0000000000 --- a/.evergreen/config_generator/components/funcs/upload_augmented_sbom.py +++ /dev/null @@ -1,39 +0,0 @@ -from shrub.v3.evg_command import EvgCommandType, s3_put - -from config_generator.etc.function import Function - - -class UploadAugmentedSBOM(Function): - name = 'upload augmented sbom' - commands = [ - s3_put( - command_type=EvgCommandType.SYSTEM, - aws_key='${aws_key}', - aws_secret='${aws_secret}', - bucket='mciuploads', - content_type='application/json', - display_name='Augmented SBOM', - local_file='mongo-cxx-driver/etc/augmented.sbom.json.new', - permissions='public-read', - remote_file='mongo-cxx-driver/${build_variant}/${revision}/${version_id}/${build_id}/silk/augmented.sbom.json', - ), - s3_put( - command_type=EvgCommandType.SYSTEM, - aws_key='${aws_key}', - aws_secret='${aws_secret}', - bucket='mciuploads', - content_type='application/json', - display_name='Augmented SBOM (Diff)', - local_file='mongo-cxx-driver/diff.txt', - permissions='public-read', - remote_file='mongo-cxx-driver/${build_variant}/${revision}/${version_id}/${build_id}/silk/augmented.sbom.json.diff', - ), - ] - - @classmethod - def call(cls, **kwargs): - return cls.default_call(**kwargs) - - -def functions(): - return UploadAugmentedSBOM.defn() diff --git a/.evergreen/config_generator/components/silk.py b/.evergreen/config_generator/components/silk.py new file mode 100644 index 0000000000..247701dcfd --- /dev/null +++ b/.evergreen/config_generator/components/silk.py @@ -0,0 +1,100 @@ +from config_generator.components.funcs.setup import Setup + +from config_generator.etc.distros import find_small_distro +from config_generator.etc.function import Function +from config_generator.etc.function import Function, merge_defns +from config_generator.etc.utils import bash_exec + +from shrub.v3.evg_build_variant import BuildVariant +from shrub.v3.evg_command import EvgCommandType +from shrub.v3.evg_command import EvgCommandType, s3_put +from shrub.v3.evg_task import EvgTask, EvgTaskRef + + +TAG = 'silk' + + +class CheckAugmentedSBOM(Function): + name = 'check augmented sbom' + commands = bash_exec( + command_type=EvgCommandType.TEST, + working_dir='mongo-cxx-driver', + include_expansions_in_env=[ + 'ARTIFACTORY_USER', + 'ARTIFACTORY_PASSWORD', + 'SILK_CLIENT_ID', + 'SILK_CLIENT_SECRET', + ], + script='.evergreen/scripts/check-augmented-sbom.sh', + ) + + @classmethod + def call(cls, **kwargs): + return cls.default_call(**kwargs) + + +class UploadAugmentedSBOM(Function): + name = 'upload augmented sbom' + commands = [ + s3_put( + command_type=EvgCommandType.SYSTEM, + aws_key='${aws_key}', + aws_secret='${aws_secret}', + bucket='mciuploads', + content_type='application/json', + display_name='Augmented SBOM', + local_file='mongo-cxx-driver/etc/augmented.sbom.json.new', + permissions='public-read', + remote_file='mongo-cxx-driver/${build_variant}/${revision}/${version_id}/${build_id}/silk/augmented.sbom.json', + ), + s3_put( + command_type=EvgCommandType.SYSTEM, + aws_key='${aws_key}', + aws_secret='${aws_secret}', + bucket='mciuploads', + content_type='application/json', + display_name='Augmented SBOM (Diff)', + local_file='mongo-cxx-driver/diff.txt', + permissions='public-read', + remote_file='mongo-cxx-driver/${build_variant}/${revision}/${version_id}/${build_id}/silk/augmented.sbom.json.diff', + ), + ] + + @classmethod + def call(cls, **kwargs): + return cls.default_call(**kwargs) + + +def functions(): + return merge_defns( + CheckAugmentedSBOM.defn(), + UploadAugmentedSBOM.defn(), + ) + + +def tasks(): + distro_name = 'rhel8-latest' + distro = find_small_distro(distro_name) + + return [ + EvgTask( + name=TAG, + tags=[TAG, distro_name], + run_on=distro.name, + commands=[ + Setup.call(), + CheckAugmentedSBOM.call(), + UploadAugmentedSBOM.call(), + ], + ), + ] + + +def variants(): + return [ + BuildVariant( + name=TAG, + display_name='Silk', + tasks=[EvgTaskRef(name=f'.{TAG}')], + ), + ] diff --git a/.evergreen/generated_configs/tasks.yml b/.evergreen/generated_configs/tasks.yml index 289b9de128..c521fb80f8 100644 --- a/.evergreen/generated_configs/tasks.yml +++ b/.evergreen/generated_configs/tasks.yml @@ -51,6 +51,13 @@ tasks: commands: - func: setup - func: lint + - name: silk + run_on: rhel8-latest-small + tags: [silk, rhel8-latest] + commands: + - func: setup + - func: check augmented sbom + - func: upload augmented sbom - name: stub run_on: ubuntu2004-large commands: diff --git a/.evergreen/generated_configs/variants.yml b/.evergreen/generated_configs/variants.yml index 68f0339693..81b4b2b554 100644 --- a/.evergreen/generated_configs/variants.yml +++ b/.evergreen/generated_configs/variants.yml @@ -40,6 +40,10 @@ buildvariants: display_name: Mongohouse tasks: - name: .mongohouse + - name: silk + display_name: Silk + tasks: + - name: .silk - name: stub display_name: stub tasks: diff --git a/.mci.yml b/.mci.yml index d171d3dcea..26116a1b82 100644 --- a/.mci.yml +++ b/.mci.yml @@ -451,14 +451,6 @@ tasks: BSONCXX_POLYFILL: std - func: "upload scan artifacts" - - name: silk-check-augmented-sbom - run_on: rhel8-latest-small - tags: [silk] - commands: - - func: "setup" - - func: "check augmented sbom" - - func: "upload augmented sbom" - ####################################### # Buildvariants # ####################################### @@ -1448,11 +1440,6 @@ buildvariants: tasks: - name: .scan-build-matrix - - name: silk - display_name: silk - tasks: - - name: .silk - - name: rhel79-compile display_name: "RHEL 7.9 (gcc 4.8.5)" expansions: From 2e05c22af039178081be78d87fb928770e03e7e0 Mon Sep 17 00:00:00 2001 From: Ezra Chung Date: Tue, 29 Oct 2024 15:28:34 -0500 Subject: [PATCH 50/78] component: docker_build --- .../docker_image_build.py => docker_build.py} | 51 ++++++++++++++++++- .evergreen/generated_configs/tasks.yml | 12 +++++ .evergreen/generated_configs/variants.yml | 4 ++ .mci.yml | 19 ------- 4 files changed, 66 insertions(+), 20 deletions(-) rename .evergreen/config_generator/components/{funcs/docker_image_build.py => docker_build.py} (50%) diff --git a/.evergreen/config_generator/components/funcs/docker_image_build.py b/.evergreen/config_generator/components/docker_build.py similarity index 50% rename from .evergreen/config_generator/components/funcs/docker_image_build.py rename to .evergreen/config_generator/components/docker_build.py index ed26865d31..24c4e7fac9 100644 --- a/.evergreen/config_generator/components/funcs/docker_image_build.py +++ b/.evergreen/config_generator/components/docker_build.py @@ -1,8 +1,26 @@ -from shrub.v3.evg_command import EvgCommandType +from config_generator.components.funcs.setup import Setup +from config_generator.etc.distros import find_large_distro from config_generator.etc.function import Function from config_generator.etc.utils import bash_exec +from shrub.v3.evg_build_variant import BuildVariant +from shrub.v3.evg_command import EvgCommandType +from shrub.v3.evg_task import EvgTask, EvgTaskRef + + +TAG = 'docker-build' + + +# pylint: disable=line-too-long +# fmt: off +MATRIX = [ + ('ubuntu2204-arm64'), + ('ubuntu2204'), +] +# fmt: on +# pylint: enable=line-too-long + class DockerImageBuild(Function): name = 'docker-image-build' @@ -31,3 +49,34 @@ def call(cls, **kwargs): def functions(): return DockerImageBuild.defn() + + +def tasks(): + res = [] + + for distro_name in MATRIX: + distro = find_large_distro(distro_name) + + res.append( + EvgTask( + name=f'{TAG}-{distro_name}', + tags=[TAG, distro_name], + run_on=distro.name, + commands=[ + Setup.call(), + DockerImageBuild.call(), + ] + ) + ) + + return res + + +def variants(): + return [ + BuildVariant( + name=TAG, + display_name='Docker Build', + tasks=[EvgTaskRef(name=f'.{TAG}')], + ), + ] diff --git a/.evergreen/generated_configs/tasks.yml b/.evergreen/generated_configs/tasks.yml index c521fb80f8..1a6a5a07ae 100644 --- a/.evergreen/generated_configs/tasks.yml +++ b/.evergreen/generated_configs/tasks.yml @@ -45,6 +45,18 @@ tasks: vars: cc_compiler: clang cxx_compiler: clang++ + - name: docker-build-ubuntu2204 + run_on: ubuntu2204-large + tags: [docker-build, ubuntu2204] + commands: + - func: setup + - func: docker-image-build + - name: docker-build-ubuntu2204-arm64 + run_on: ubuntu2204-arm64-large + tags: [docker-build, ubuntu2204-arm64] + commands: + - func: setup + - func: docker-image-build - name: lint run_on: ubuntu1804-large tags: [lint, ubuntu1804] diff --git a/.evergreen/generated_configs/variants.yml b/.evergreen/generated_configs/variants.yml index 81b4b2b554..3718a6fcb1 100644 --- a/.evergreen/generated_configs/variants.yml +++ b/.evergreen/generated_configs/variants.yml @@ -32,6 +32,10 @@ buildvariants: display_name: Clang Tidy tasks: - name: .clang-tidy + - name: docker-build + display_name: Docker Build + tasks: + - name: .docker-build - name: lint display_name: Lint tasks: diff --git a/.mci.yml b/.mci.yml index 26116a1b82..12cfee4373 100644 --- a/.mci.yml +++ b/.mci.yml @@ -377,20 +377,6 @@ tasks: vars: MONGOCXX_TEST_TOPOLOGY: single - - name: docker_build_arm - run_on: - - ubuntu2204-arm64-small - commands: - - func: "setup" - - func: "docker-image-build" - - - name: docker_build - run_on: - - ubuntu2204-small - commands: - - func: "setup" - - func: "docker-image-build" - - name: scan-build-ubuntu2204-std11-mnmlstc run_on: ubuntu2204-large tags: [scan-build-matrix] @@ -924,11 +910,6 @@ buildvariants: ####################################### # Linux Buildvariants # ####################################### - - name: docker-builder - display_name: "Docker builder" - tasks: - - name: docker_build - - name: docker_build_arm - name: rhel9-release-latest display_name: "RHEL 9 Release (MongoDB Latest)" From dbfc413c0487891cf51c205e7ebe2cd373a7851f Mon Sep 17 00:00:00 2001 From: Ezra Chung Date: Tue, 29 Oct 2024 15:28:34 -0500 Subject: [PATCH 51/78] component: packaging --- .../config_generator/components/packaging.py | 142 ++++++++++++++++++ .evergreen/generated_configs/functions.yml | 63 ++++++++ .evergreen/generated_configs/tasks.yml | 18 +++ .evergreen/generated_configs/variants.yml | 4 + .../mongo-cxx-driver.spec | 0 .../scripts}/build_snapshot_rpm.sh | 8 +- .../scripts}/debian_package_build.sh | 0 {.evergreen-old => .evergreen}/spec.patch | 0 .mci.yml | 78 ---------- 9 files changed, 231 insertions(+), 82 deletions(-) create mode 100644 .evergreen/config_generator/components/packaging.py rename {.evergreen-old => .evergreen}/mongo-cxx-driver.spec (100%) rename {.evergreen-old => .evergreen/scripts}/build_snapshot_rpm.sh (97%) rename {.evergreen-old => .evergreen/scripts}/debian_package_build.sh (100%) rename {.evergreen-old => .evergreen}/spec.patch (100%) diff --git a/.evergreen/config_generator/components/packaging.py b/.evergreen/config_generator/components/packaging.py new file mode 100644 index 0000000000..6f735db26b --- /dev/null +++ b/.evergreen/config_generator/components/packaging.py @@ -0,0 +1,142 @@ +from config_generator.components.funcs.setup import Setup + +from config_generator.etc.distros import find_large_distro +from config_generator.etc.function import Function, merge_defns +from config_generator.etc.utils import bash_exec + +from shrub.v3.evg_build_variant import BuildVariant +from shrub.v3.evg_command import EvgCommandType, s3_put +from shrub.v3.evg_task import EvgTask, EvgTaskRef + + +TAG = 'packaging' + + +class DebianPackageBuild(Function): + name = 'build-package-debian' + desc = 'debian' + commands = [ + bash_exec( + command_type=EvgCommandType.TEST, + working_dir='mongo-cxx-driver', + script='''\ + set -o errexit + export IS_PATCH="${is_patch}" + .evergreen/scripts/debian_package_build.sh + ''', + ), + s3_put( + aws_key='${aws_key}', + aws_secret='${aws_secret}', + bucket='mciuploads', + content_type='${content_type|application/x-gzip}', + display_name='"deb.tar.gz"', + local_file='deb.tar.gz', + permissions='public-read', + remote_file='mongo-cxx-driver/${branch_name}/${revision}/${version_id}/${build_id}/${execution}/debian-packages.tar.gz', + ), + ] + + @classmethod + def call(cls, **kwargs): + return cls.default_call(**kwargs) + + +class DebianPackageBuildMnmlstc(Function): + name = 'build-package-debian-mnmlstc' + desc = 'debian-mnmlstc' + commands = [ + bash_exec( + command_type=EvgCommandType.TEST, + working_dir='mongo-cxx-driver', + script='''\ + set -o errexit + export IS_PATCH="${is_patch}" + export DEB_BUILD_PROFILES="pkg.mongo-cxx-driver.mnmlstc" + .evergreen/scripts/debian_package_build.sh + ''', + ), + s3_put( + aws_key='${aws_key}', + aws_secret='${aws_secret}', + bucket='mciuploads', + content_type='${content_type|application/x-gzip}', + display_name='"deb.tar.gz"', + local_file='deb.tar.gz', + permissions='public-read', + remote_file='mongo-cxx-driver/${branch_name}/${revision}/${version_id}/${build_id}/${execution}/debian-packages-mnmlstc.tar.gz', + ), + ] + + @classmethod + def call(cls, **kwargs): + return cls.default_call(**kwargs) + + +class RpmPackageBuild(Function): + name = 'build-package-rpm' + desc = 'rpm' + commands = [ + bash_exec( + command_type=EvgCommandType.TEST, + working_dir='mongo-cxx-driver', + script='.evergreen/scripts/build_snapshot_rpm.sh', + ), + s3_put( + aws_key='${aws_key}', + aws_secret='${aws_secret}', + bucket='mciuploads', + content_type='${content_type|application/x-gzip}', + local_file='rpm.tar.gz', + permissions='public-read', + remote_file='mongo-cxx-driver/${branch_name}/${revision}/${version_id}/${build_id}/${execution}/rpm-packages.tar.gz', + ), + ] + + @classmethod + def call(cls, **kwargs): + return cls.default_call(**kwargs) + + +# pylint: disable=line-too-long +# fmt: off +MATRIX = [ + (DebianPackageBuild, 'debian12-latest'), + (DebianPackageBuildMnmlstc, 'debian12-latest'), + (RpmPackageBuild, 'rhel92-arm64' ), +] +# fmt: on +# pylint: enable=line-too-long + + +def functions(): + return merge_defns( + DebianPackageBuild.defn(), + DebianPackageBuildMnmlstc.defn(), + RpmPackageBuild.defn(), + ) + + +def tasks(): + return [ + EvgTask( + name=f'{TAG}-{fn.desc}', + tags=[TAG, distro_name], + run_on=find_large_distro(distro_name).name, + commands=[ + Setup.call(), + fn.call(), + ] + ) + for fn, distro_name in MATRIX + ] + + +def variants(): + return [ + BuildVariant( + name=TAG, + display_name='Linux Distro Packaging', + tasks=[EvgTaskRef(name=f'.{TAG}')], + ), + ] diff --git a/.evergreen/generated_configs/functions.yml b/.evergreen/generated_configs/functions.yml index b1da7287c1..5c913d990b 100644 --- a/.evergreen/generated_configs/functions.yml +++ b/.evergreen/generated_configs/functions.yml @@ -112,6 +112,69 @@ functions: args: - -c - etc/debug-core-evergreen.sh + build-package-debian: + - command: subprocess.exec + type: test + params: + binary: bash + working_dir: mongo-cxx-driver + args: + - -c + - | + set -o errexit + export IS_PATCH="${is_patch}" + .evergreen/scripts/debian_package_build.sh + - command: s3.put + params: + display_name: "\"deb.tar.gz\"" + aws_key: ${aws_key} + aws_secret: ${aws_secret} + bucket: mciuploads + content_type: ${content_type|application/x-gzip} + local_file: deb.tar.gz + permissions: public-read + remote_file: mongo-cxx-driver/${branch_name}/${revision}/${version_id}/${build_id}/${execution}/debian-packages.tar.gz + build-package-debian-mnmlstc: + - command: subprocess.exec + type: test + params: + binary: bash + working_dir: mongo-cxx-driver + args: + - -c + - | + set -o errexit + export IS_PATCH="${is_patch}" + export DEB_BUILD_PROFILES="pkg.mongo-cxx-driver.mnmlstc" + .evergreen/scripts/debian_package_build.sh + - command: s3.put + params: + display_name: "\"deb.tar.gz\"" + aws_key: ${aws_key} + aws_secret: ${aws_secret} + bucket: mciuploads + content_type: ${content_type|application/x-gzip} + local_file: deb.tar.gz + permissions: public-read + remote_file: mongo-cxx-driver/${branch_name}/${revision}/${version_id}/${build_id}/${execution}/debian-packages-mnmlstc.tar.gz + build-package-rpm: + - command: subprocess.exec + type: test + params: + binary: bash + working_dir: mongo-cxx-driver + args: + - -c + - .evergreen/scripts/build_snapshot_rpm.sh + - command: s3.put + params: + aws_key: ${aws_key} + aws_secret: ${aws_secret} + bucket: mciuploads + content_type: ${content_type|application/x-gzip} + local_file: rpm.tar.gz + permissions: public-read + remote_file: mongo-cxx-driver/${branch_name}/${revision}/${version_id}/${build_id}/${execution}/rpm-packages.tar.gz build_mongohouse: command: subprocess.exec type: setup diff --git a/.evergreen/generated_configs/tasks.yml b/.evergreen/generated_configs/tasks.yml index 1a6a5a07ae..ae959dc3b7 100644 --- a/.evergreen/generated_configs/tasks.yml +++ b/.evergreen/generated_configs/tasks.yml @@ -63,6 +63,24 @@ tasks: commands: - func: setup - func: lint + - name: packaging-debian + run_on: debian12-latest-large + tags: [packaging, debian12-latest] + commands: + - func: setup + - func: build-package-debian + - name: packaging-debian-mnmlstc + run_on: debian12-latest-large + tags: [packaging, debian12-latest] + commands: + - func: setup + - func: build-package-debian-mnmlstc + - name: packaging-rpm + run_on: rhel92-arm64-large + tags: [packaging, rhel92-arm64] + commands: + - func: setup + - func: build-package-rpm - name: silk run_on: rhel8-latest-small tags: [silk, rhel8-latest] diff --git a/.evergreen/generated_configs/variants.yml b/.evergreen/generated_configs/variants.yml index 3718a6fcb1..54ccb58bad 100644 --- a/.evergreen/generated_configs/variants.yml +++ b/.evergreen/generated_configs/variants.yml @@ -44,6 +44,10 @@ buildvariants: display_name: Mongohouse tasks: - name: .mongohouse + - name: packaging + display_name: Linux Distro Packaging + tasks: + - name: .packaging - name: silk display_name: Silk tasks: diff --git a/.evergreen-old/mongo-cxx-driver.spec b/.evergreen/mongo-cxx-driver.spec similarity index 100% rename from .evergreen-old/mongo-cxx-driver.spec rename to .evergreen/mongo-cxx-driver.spec diff --git a/.evergreen-old/build_snapshot_rpm.sh b/.evergreen/scripts/build_snapshot_rpm.sh similarity index 97% rename from .evergreen-old/build_snapshot_rpm.sh rename to .evergreen/scripts/build_snapshot_rpm.sh index 5bf2bf5bfd..1667026b5d 100755 --- a/.evergreen-old/build_snapshot_rpm.sh +++ b/.evergreen/scripts/build_snapshot_rpm.sh @@ -25,7 +25,7 @@ set -o errexit for arg in "$@"; do if [ "$arg" = "-h" ]; then - echo "Usage: ./.evergreen-old/build_snapshot_rpm.sh" + echo "Usage: ./.evergreen/build_snapshot_rpm.sh" echo "" echo " This script is used to build a .rpm package directly from a snapshot of the" echo " current repository." @@ -60,9 +60,9 @@ if [ -f "${spec_file}" ]; then echo "Found old spec file (${spec_file})...removing" rm -f ${spec_file} fi -cp "$(pwd)/.evergreen-old/${package}.spec" .. -if [ -f .evergreen-old/spec.patch ]; then - patch -d .. -p0 -i $(pwd)/.evergreen-old/spec.patch +cp "$(pwd)/.evergreen/${package}.spec" .. +if [ -f .evergreen/spec.patch ]; then + patch -d .. -p0 -i $(pwd)/.evergreen/spec.patch fi changelog_package=$(rpmspec --srpm -q --qf "%{name}" ${spec_file}) diff --git a/.evergreen-old/debian_package_build.sh b/.evergreen/scripts/debian_package_build.sh similarity index 100% rename from .evergreen-old/debian_package_build.sh rename to .evergreen/scripts/debian_package_build.sh diff --git a/.evergreen-old/spec.patch b/.evergreen/spec.patch similarity index 100% rename from .evergreen-old/spec.patch rename to .evergreen/spec.patch diff --git a/.mci.yml b/.mci.yml index 12cfee4373..4b70b24aef 100644 --- a/.mci.yml +++ b/.mci.yml @@ -273,77 +273,6 @@ tasks: "$cmake_binary" --build build ./build/hello_mongocxx - - name: debian-package-build - run_on: debian12-latest-small - commands: - - func: "setup" - - command: shell.exec - type: test - params: - working_dir: "mongo-cxx-driver" - shell: bash - script: |- - set -o errexit - export IS_PATCH="${is_patch}" - .evergreen-old/debian_package_build.sh - - command: s3.put - params: - aws_key: ${aws_key} - aws_secret: ${aws_secret} - local_file: deb.tar.gz - remote_file: mongo-cxx-driver/${branch_name}/${revision}/${version_id}/${build_id}/${execution}/debian-packages.tar.gz - bucket: mciuploads - permissions: public-read - content_type: ${content_type|application/x-gzip} - display_name: "deb.tar.gz" - - - name: debian-package-build-mnmlstc - run_on: debian12-latest-small - commands: - - func: "setup" - - command: shell.exec - type: test - params: - working_dir: "mongo-cxx-driver" - shell: bash - script: |- - set -o errexit - export IS_PATCH="${is_patch}" - export DEB_BUILD_PROFILES="pkg.mongo-cxx-driver.mnmlstc" - .evergreen-old/debian_package_build.sh - - command: s3.put - params: - aws_key: ${aws_key} - aws_secret: ${aws_secret} - local_file: deb.tar.gz - remote_file: mongo-cxx-driver/${branch_name}/${revision}/${version_id}/${build_id}/${execution}/debian-packages-mnmlstc.tar.gz - bucket: mciuploads - permissions: public-read - content_type: ${content_type|application/x-gzip} - display_name: "deb.tar.gz" - - - name: rpm-package-build - run_on: rhel92-arm64-small - commands: - - func: "setup" - - command: shell.exec - type: test - params: - working_dir: "mongo-cxx-driver" - shell: bash - script: |- - set -o errexit - .evergreen-old/build_snapshot_rpm.sh - - command: s3.put - params: - aws_key: ${aws_key} - aws_secret: ${aws_secret} - remote_file: mongo-cxx-driver/${branch_name}/${revision}/${version_id}/${build_id}/${execution}/rpm-packages.tar.gz - bucket: mciuploads - permissions: public-read - local_file: rpm.tar.gz - content_type: ${content_type|application/x-gzip} - - name: test_versioned_api commands: - func: "setup" @@ -1409,13 +1338,6 @@ buildvariants: tasks: - name: compile_without_tests - - name: packaging - display_name: Linux Distro Packaging - tasks: - - name: debian-package-build - - name: debian-package-build-mnmlstc - - name: rpm-package-build - - name: scan-build-matrix display_name: scan-build-matrix tasks: From 523c39a2d1518933fbbeff089c048c944a7ddb56 Mon Sep 17 00:00:00 2001 From: Ezra Chung Date: Tue, 29 Oct 2024 15:28:34 -0500 Subject: [PATCH 52/78] component: scan_build --- .../components/funcs/run_scan_build.py | 25 --- .../components/funcs/upload_scan_artifacts.py | 51 ------ .../config_generator/components/scan_build.py | 155 ++++++++++++++++++ .evergreen/generated_configs/tasks.yml | 107 ++++++++++++ .evergreen/generated_configs/variants.yml | 8 + .evergreen/scripts/compile-scan-build.sh | 4 +- .mci.yml | 65 -------- 7 files changed, 272 insertions(+), 143 deletions(-) delete mode 100644 .evergreen/config_generator/components/funcs/run_scan_build.py delete mode 100644 .evergreen/config_generator/components/funcs/upload_scan_artifacts.py create mode 100644 .evergreen/config_generator/components/scan_build.py diff --git a/.evergreen/config_generator/components/funcs/run_scan_build.py b/.evergreen/config_generator/components/funcs/run_scan_build.py deleted file mode 100644 index a0a9f40d24..0000000000 --- a/.evergreen/config_generator/components/funcs/run_scan_build.py +++ /dev/null @@ -1,25 +0,0 @@ -from shrub.v3.evg_command import EvgCommandType - -from config_generator.etc.function import Function -from config_generator.etc.utils import bash_exec - - -class RunScanBuild(Function): - name = 'run scan build' - commands = [ - bash_exec( - command_type=EvgCommandType.TEST, - add_expansions_to_env=True, - redirect_standard_error_to_output=True, - working_dir='mongo-cxx-driver', - script='.evergreen/scripts/compile-scan-build.sh', - ), - ] - - @classmethod - def call(cls, **kwargs): - return cls.default_call(**kwargs) - - -def functions(): - return RunScanBuild.defn() diff --git a/.evergreen/config_generator/components/funcs/upload_scan_artifacts.py b/.evergreen/config_generator/components/funcs/upload_scan_artifacts.py deleted file mode 100644 index e9032a6a29..0000000000 --- a/.evergreen/config_generator/components/funcs/upload_scan_artifacts.py +++ /dev/null @@ -1,51 +0,0 @@ -from shrub.v3.evg_command import EvgCommandType, s3_put - -from config_generator.etc.function import Function -from config_generator.etc.utils import bash_exec - - -class UploadScanArtifacts(Function): - name = 'upload scan artifacts' - commands = [ - bash_exec( - command_type=EvgCommandType.TEST, - working_dir='mongo-cxx-driver', - script='''\ - set -o errexit - if find scan -name \\*.html | grep -q html; then - (cd scan && find . -name index.html -exec echo "
  • {}
  • " \\;) >> scan.html - else - echo "No issues found" > scan.html - fi - ''' - ), - bash_exec( - command_type=EvgCommandType.TEST, - silent=True, - env={ - 'AWS_ACCESS_KEY_ID': '${aws_key}', - 'AWS_SECRET_ACCESS_KEY': '${aws_secret}', - }, - working_dir='mongo-cxx-driver', - script=' aws s3 cp scan s3://mciuploads/mongo-cxx-driver/${build_variant}/${revision}/${version_id}/${build_id}/scan/ --recursive --acl public-read --region us-east-1', - ), - s3_put( - command_type=EvgCommandType.SYSTEM, - aws_key='${aws_key}', - aws_secret='${aws_secret}', - bucket='mciuploads', - content_type='text/html', - display_name='Scan Build Report', - local_file='mongo-cxx-driver/scan.html', - permissions='public-read', - remote_file='mongo-cxx-driver/${build_variant}/${revision}/${version_id}/${build_id}/scan/index.html', - ), - ] - - @classmethod - def call(cls, **kwargs): - return cls.default_call(**kwargs) - - -def functions(): - return UploadScanArtifacts.defn() diff --git a/.evergreen/config_generator/components/scan_build.py b/.evergreen/config_generator/components/scan_build.py new file mode 100644 index 0000000000..82c1390d7e --- /dev/null +++ b/.evergreen/config_generator/components/scan_build.py @@ -0,0 +1,155 @@ +from shrub.v3.evg_command import EvgCommandType, s3_put +from config_generator.components.funcs.fetch_c_driver_source import FetchCDriverSource +from config_generator.components.funcs.setup import Setup + +from config_generator.etc.distros import find_large_distro +from config_generator.etc.function import Function, merge_defns +from config_generator.etc.utils import bash_exec + +from shrub.v3.evg_build_variant import BuildVariant, DisplayTask +from shrub.v3.evg_command import EvgCommandType +from shrub.v3.evg_task import EvgTask, EvgTaskRef + + +TAG = 'scan-build' + + +# pylint: disable=line-too-long +# fmt: off +MATRIX = [ + (11, None ), + (11, 'mnmlstc'), + (11, 'boost' ), + (11, 'impls' ), + + (14, None ), + (14, 'mnmlstc'), + (14, 'boost' ), + (14, 'impls' ), + + (17, None ), + (17, 'impls' ), +] +# fmt: on +# pylint: enable=line-too-long + + +class RunScanBuild(Function): + name = 'run scan build' + commands = [ + bash_exec( + command_type=EvgCommandType.TEST, + add_expansions_to_env=True, + redirect_standard_error_to_output=True, + working_dir='mongo-cxx-driver', + script='.evergreen/scripts/compile-scan-build.sh', + ), + ] + + @classmethod + def call(cls, cxx_standard, polyfill): + vars = {'CXX_STANDARD': cxx_standard} + + if polyfill is not None: + vars |= {'BSONCXX_POLYFILL': polyfill} + + return cls.default_call(vars=vars) + + +class UploadScanArtifacts(Function): + name = 'upload scan artifacts' + commands = [ + bash_exec( + command_type=EvgCommandType.TEST, + working_dir='mongo-cxx-driver', + script='''\ + set -o errexit + if find scan -name \\*.html | grep -q html; then + (cd scan && find . -name index.html -exec echo "
  • {}
  • " \\;) >> scan.html + else + echo "No issues found" > scan.html + fi + ''' + ), + bash_exec( + command_type=EvgCommandType.TEST, + silent=True, + env={ + 'AWS_ACCESS_KEY_ID': '${aws_key}', + 'AWS_SECRET_ACCESS_KEY': '${aws_secret}', + }, + working_dir='mongo-cxx-driver', + script=' aws s3 cp scan s3://mciuploads/mongo-cxx-driver/${build_variant}/${revision}/${version_id}/${build_id}/scan/ --recursive --acl public-read --region us-east-1', + ), + s3_put( + command_type=EvgCommandType.SYSTEM, + aws_key='${aws_key}', + aws_secret='${aws_secret}', + bucket='mciuploads', + content_type='text/html', + display_name='Scan Build Report', + local_file='mongo-cxx-driver/scan.html', + permissions='public-read', + remote_file='mongo-cxx-driver/${build_variant}/${revision}/${version_id}/${build_id}/scan/index.html', + ), + ] + + @classmethod + def call(cls, **kwargs): + return cls.default_call(**kwargs) + + +def functions(): + return merge_defns( + RunScanBuild.defn(), + UploadScanArtifacts.defn(), + ) + + +def tasks(): + res = [] + + distro_name = 'ubuntu2204' + distro = find_large_distro(distro_name) + + for cxx_standard, polyfill in MATRIX: + name = f'{TAG}-{distro_name}-std{cxx_standard}' + tags = [TAG, distro_name, f'std{cxx_standard}'] + + if polyfill is not None: + name += f'-{polyfill}' + tags.append(polyfill) + else: + name += '-default' + + res.append( + EvgTask( + name=name, + tags=tags, + run_on=distro.name, + commands=[ + Setup.call(), + FetchCDriverSource.call(), + RunScanBuild.call(cxx_standard, polyfill), + UploadScanArtifacts.call(), + ], + ) + ) + + return res + + +def variants(): + return [ + BuildVariant( + name=f'{TAG}-matrix', + display_name=f'{TAG}-matrix', + tasks=[EvgTaskRef(name=f'.{TAG}')], + display_tasks=[ + DisplayTask( + name=f'{TAG}-matrix', + execution_tasks=[f'.{TAG}'], + ) + ], + ), + ] diff --git a/.evergreen/generated_configs/tasks.yml b/.evergreen/generated_configs/tasks.yml index ae959dc3b7..7bc345460d 100644 --- a/.evergreen/generated_configs/tasks.yml +++ b/.evergreen/generated_configs/tasks.yml @@ -81,6 +81,113 @@ tasks: commands: - func: setup - func: build-package-rpm + - name: scan-build-ubuntu2204-std11-boost + run_on: ubuntu2204-large + tags: [scan-build, ubuntu2204, std11, boost] + commands: + - func: setup + - func: fetch_c_driver_source + - func: run scan build + vars: + BSONCXX_POLYFILL: boost + CXX_STANDARD: 11 + - func: upload scan artifacts + - name: scan-build-ubuntu2204-std11-default + run_on: ubuntu2204-large + tags: [scan-build, ubuntu2204, std11] + commands: + - func: setup + - func: fetch_c_driver_source + - func: run scan build + vars: + CXX_STANDARD: 11 + - func: upload scan artifacts + - name: scan-build-ubuntu2204-std11-impls + run_on: ubuntu2204-large + tags: [scan-build, ubuntu2204, std11, impls] + commands: + - func: setup + - func: fetch_c_driver_source + - func: run scan build + vars: + BSONCXX_POLYFILL: impls + CXX_STANDARD: 11 + - func: upload scan artifacts + - name: scan-build-ubuntu2204-std11-mnmlstc + run_on: ubuntu2204-large + tags: [scan-build, ubuntu2204, std11, mnmlstc] + commands: + - func: setup + - func: fetch_c_driver_source + - func: run scan build + vars: + BSONCXX_POLYFILL: mnmlstc + CXX_STANDARD: 11 + - func: upload scan artifacts + - name: scan-build-ubuntu2204-std14-boost + run_on: ubuntu2204-large + tags: [scan-build, ubuntu2204, std14, boost] + commands: + - func: setup + - func: fetch_c_driver_source + - func: run scan build + vars: + BSONCXX_POLYFILL: boost + CXX_STANDARD: 14 + - func: upload scan artifacts + - name: scan-build-ubuntu2204-std14-default + run_on: ubuntu2204-large + tags: [scan-build, ubuntu2204, std14] + commands: + - func: setup + - func: fetch_c_driver_source + - func: run scan build + vars: + CXX_STANDARD: 14 + - func: upload scan artifacts + - name: scan-build-ubuntu2204-std14-impls + run_on: ubuntu2204-large + tags: [scan-build, ubuntu2204, std14, impls] + commands: + - func: setup + - func: fetch_c_driver_source + - func: run scan build + vars: + BSONCXX_POLYFILL: impls + CXX_STANDARD: 14 + - func: upload scan artifacts + - name: scan-build-ubuntu2204-std14-mnmlstc + run_on: ubuntu2204-large + tags: [scan-build, ubuntu2204, std14, mnmlstc] + commands: + - func: setup + - func: fetch_c_driver_source + - func: run scan build + vars: + BSONCXX_POLYFILL: mnmlstc + CXX_STANDARD: 14 + - func: upload scan artifacts + - name: scan-build-ubuntu2204-std17-default + run_on: ubuntu2204-large + tags: [scan-build, ubuntu2204, std17] + commands: + - func: setup + - func: fetch_c_driver_source + - func: run scan build + vars: + CXX_STANDARD: 17 + - func: upload scan artifacts + - name: scan-build-ubuntu2204-std17-impls + run_on: ubuntu2204-large + tags: [scan-build, ubuntu2204, std17, impls] + commands: + - func: setup + - func: fetch_c_driver_source + - func: run scan build + vars: + BSONCXX_POLYFILL: impls + CXX_STANDARD: 17 + - func: upload scan artifacts - name: silk run_on: rhel8-latest-small tags: [silk, rhel8-latest] diff --git a/.evergreen/generated_configs/variants.yml b/.evergreen/generated_configs/variants.yml index 54ccb58bad..60c49f66e2 100644 --- a/.evergreen/generated_configs/variants.yml +++ b/.evergreen/generated_configs/variants.yml @@ -48,6 +48,14 @@ buildvariants: display_name: Linux Distro Packaging tasks: - name: .packaging + - name: scan-build-matrix + display_name: scan-build-matrix + display_tasks: + - name: scan-build-matrix + execution_tasks: + - .scan-build + tasks: + - name: .scan-build - name: silk display_name: Silk tasks: diff --git a/.evergreen/scripts/compile-scan-build.sh b/.evergreen/scripts/compile-scan-build.sh index 485a4c3ed7..ee66176b16 100755 --- a/.evergreen/scripts/compile-scan-build.sh +++ b/.evergreen/scripts/compile-scan-build.sh @@ -3,7 +3,7 @@ set -o errexit set -o pipefail -: "${BSONCXX_POLYFILL:?}" +: "${BSONCXX_POLYFILL:-}" : "${CXX_STANDARD:?}" mongoc_prefix="$(pwd)/../mongoc" @@ -67,7 +67,7 @@ scan_build_flags=( --exclude "$(pwd)/build/_deps" # mongoc ) -case "${BSONCXX_POLYFILL:?}" in +case "${BSONCXX_POLYFILL:-}" in mnmlstc) cmake_flags+=(-D "BSONCXX_POLY_USE_MNMLSTC=ON") ;; boost) cmake_flags+=(-D "BSONCXX_POLY_USE_BOOST=ON") ;; impls) cmake_flags+=(-D "BSONCXX_POLY_USE_IMPLS=ON") ;; diff --git a/.mci.yml b/.mci.yml index 4b70b24aef..770d4d05f3 100644 --- a/.mci.yml +++ b/.mci.yml @@ -306,66 +306,6 @@ tasks: vars: MONGOCXX_TEST_TOPOLOGY: single - - name: scan-build-ubuntu2204-std11-mnmlstc - run_on: ubuntu2204-large - tags: [scan-build-matrix] - commands: - - func: "setup" - - func: "fetch_c_driver_source" - - func: "run scan build" - vars: - CXX_STANDARD: 11 - BSONCXX_POLYFILL: mnmlstc - - func: "upload scan artifacts" - - - name: scan-build-ubuntu2204-std11-boost - run_on: ubuntu2204-large - tags: [scan-build-matrix] - commands: - - func: "setup" - - func: "fetch_c_driver_source" - - func: "run scan build" - vars: - CXX_STANDARD: 11 - BSONCXX_POLYFILL: boost - - func: "upload scan artifacts" - - - name: scan-build-ubuntu2204-std11-impls - run_on: ubuntu2204-large - tags: [scan-build-matrix] - commands: - - func: "setup" - - func: "fetch_c_driver_source" - - func: "run scan build" - vars: - CXX_STANDARD: 11 - BSONCXX_POLYFILL: impls - - func: "upload scan artifacts" - - - name: scan-build-ubuntu2204-std14-impls - run_on: ubuntu2204-large - tags: [scan-build-matrix] - commands: - - func: "setup" - - func: "fetch_c_driver_source" - - func: "run scan build" - vars: - CXX_STANDARD: 14 - BSONCXX_POLYFILL: impls - - func: "upload scan artifacts" - - - name: scan-build-ubuntu2204-std17 - run_on: ubuntu2204-large - tags: [scan-build-matrix] - commands: - - func: "setup" - - func: "fetch_c_driver_source" - - func: "run scan build" - vars: - CXX_STANDARD: 17 - BSONCXX_POLYFILL: std - - func: "upload scan artifacts" - ####################################### # Buildvariants # ####################################### @@ -1338,11 +1278,6 @@ buildvariants: tasks: - name: compile_without_tests - - name: scan-build-matrix - display_name: scan-build-matrix - tasks: - - name: .scan-build-matrix - - name: rhel79-compile display_name: "RHEL 7.9 (gcc 4.8.5)" expansions: From bcf82580223cc661102b8aeaccfffd240cc8a6cc Mon Sep 17 00:00:00 2001 From: Ezra Chung Date: Tue, 29 Oct 2024 15:28:35 -0500 Subject: [PATCH 53/78] component: compile_only --- .../components/compile_only.py | 105 ++++++++++++++++++ .evergreen/generated_configs/tasks.yml | 91 +++++++++++++++ .evergreen/generated_configs/variants.yml | 8 ++ .mci.yml | 57 ---------- 4 files changed, 204 insertions(+), 57 deletions(-) create mode 100644 .evergreen/config_generator/components/compile_only.py diff --git a/.evergreen/config_generator/components/compile_only.py b/.evergreen/config_generator/components/compile_only.py new file mode 100644 index 0000000000..0f8d45eb0a --- /dev/null +++ b/.evergreen/config_generator/components/compile_only.py @@ -0,0 +1,105 @@ +from config_generator.components.funcs.compile import Compile +from config_generator.components.funcs.fetch_c_driver_source import FetchCDriverSource +from config_generator.components.funcs.setup import Setup + +from config_generator.etc.distros import find_large_distro, make_distro_str +from config_generator.etc.utils import TaskRef + +from shrub.v3.evg_build_variant import BuildVariant, DisplayTask +from shrub.v3.evg_task import EvgTask, EvgTaskRef + +from itertools import product + + +TAG = 'compile-only' + + +# pylint: disable=line-too-long +# fmt: off +MATRIX = [ + ('rhel79', None, ['Release'], ['shared'], ['impls']), + + ('rhel81-power8', None, ['Release'], ['shared'], [None]), + ('rhel83-zseries', None, ['Release'], ['shared'], [None]), + + ('ubuntu2004', None, ['Debug'], ['shared'], [None]), + ('ubuntu2004', 'gcc', ['Debug'], ['shared'], [None]), + ('ubuntu2004', 'clang', ['Debug'], ['shared'], [None]), + + ('windows-64-vs2015', 'vs2015x64', ['Debug'], ['shared'], [None]), + ('windows-64-vs2015', 'vs2015x64', ['Release'], ['shared'], [None]), +] +# fmt: on +# pylint: enable=line-too-long + + +def tasks(): + res = [] + + for distro_name, compiler, build_types, link_types, polyfills in MATRIX: + for build_type, link_type, polyfill in product(build_types, link_types, polyfills): + distro = find_large_distro(distro_name) + + name = f'{TAG}-{make_distro_str(distro_name, compiler, None)}' + tags = [TAG, distro_name] + + if compiler is not None: + tags.append(compiler) + + name += f'-{build_type.lower()}-{link_type}' + tags += [build_type.lower(), link_type] + + if polyfill is not None: + name += f'-{polyfill}' + tags.append(polyfill) + + # PowerPC and zSeries are limited resources. + patchable = False if any(pattern in distro_name for pattern in ['power8', 'zseries']) else None + + res.append( + EvgTask( + name=name, + tags=tags, + run_on=distro.name, + patchable=patchable, + commands=[ + Setup.call(), + FetchCDriverSource.call(), + Compile.call( + build_type=build_type, + compiler=compiler, + polyfill=polyfill, + vars={'ENABLE_TESTS': 'OFF'} + ) + ], + ) + ) + + return res + + +def variants(): + tasks = [] + + one_day = 1440 # Seconds. + + # PowerPC and zSeries are limited resources. + tasks = [ + TaskRef(name=f'.{TAG} .rhel81-power8', batchtime=one_day), + TaskRef(name=f'.{TAG} .rhel83-zseries', batchtime=one_day), + EvgTaskRef(name=f'.{TAG} !.rhel81-power8 !.rhel83-zseries'), + ] + + return [ + BuildVariant( + name=f'{TAG}-matrix', + display_name=f'{TAG}-matrix', + tasks=[EvgTaskRef(name=f'.{TAG}')], + display_tasks=[ + DisplayTask( + name=f'{TAG}-matrix', + execution_tasks=[f'.{TAG}'], + ) + ], + ), + ] diff --git a/.evergreen/generated_configs/tasks.yml b/.evergreen/generated_configs/tasks.yml index 7bc345460d..b2948b19e3 100644 --- a/.evergreen/generated_configs/tasks.yml +++ b/.evergreen/generated_configs/tasks.yml @@ -45,6 +45,97 @@ tasks: vars: cc_compiler: clang cxx_compiler: clang++ + - name: compile-only-rhel79-release-shared-impls + run_on: rhel79-large + tags: [compile-only, rhel79, release, shared, impls] + commands: + - func: setup + - func: fetch_c_driver_source + - func: compile + vars: + BSONCXX_POLYFILL: impls + ENABLE_TESTS: "OFF" + build_type: Release + - name: compile-only-rhel81-power8-release-shared + run_on: rhel81-power8-large + tags: [compile-only, rhel81-power8, release, shared] + patchable: false + commands: + - func: setup + - func: fetch_c_driver_source + - func: compile + vars: + ENABLE_TESTS: "OFF" + build_type: Release + - name: compile-only-rhel83-zseries-release-shared + run_on: rhel83-zseries-large + tags: [compile-only, rhel83-zseries, release, shared] + patchable: false + commands: + - func: setup + - func: fetch_c_driver_source + - func: compile + vars: + ENABLE_TESTS: "OFF" + build_type: Release + - name: compile-only-ubuntu2004-clang-debug-shared + run_on: ubuntu2004-large + tags: [compile-only, ubuntu2004, clang, debug, shared] + commands: + - func: setup + - func: fetch_c_driver_source + - func: compile + vars: + ENABLE_TESTS: "OFF" + build_type: Debug + cc_compiler: clang + cxx_compiler: clang++ + - name: compile-only-ubuntu2004-debug-shared + run_on: ubuntu2004-large + tags: [compile-only, ubuntu2004, debug, shared] + commands: + - func: setup + - func: fetch_c_driver_source + - func: compile + vars: + ENABLE_TESTS: "OFF" + build_type: Debug + - name: compile-only-ubuntu2004-gcc-debug-shared + run_on: ubuntu2004-large + tags: [compile-only, ubuntu2004, gcc, debug, shared] + commands: + - func: setup + - func: fetch_c_driver_source + - func: compile + vars: + ENABLE_TESTS: "OFF" + build_type: Debug + cc_compiler: gcc + cxx_compiler: g++ + - name: compile-only-vs2015-x64-debug-shared + run_on: windows-64-vs2015-large + tags: [compile-only, windows-64-vs2015, vs2015x64, debug, shared] + commands: + - func: setup + - func: fetch_c_driver_source + - func: compile + vars: + ENABLE_TESTS: "OFF" + build_type: Debug + generator: Visual Studio 14 2015 + platform: x64 + - name: compile-only-vs2015-x64-release-shared + run_on: windows-64-vs2015-large + tags: [compile-only, windows-64-vs2015, vs2015x64, release, shared] + commands: + - func: setup + - func: fetch_c_driver_source + - func: compile + vars: + ENABLE_TESTS: "OFF" + build_type: Release + generator: Visual Studio 14 2015 + platform: x64 - name: docker-build-ubuntu2204 run_on: ubuntu2204-large tags: [docker-build, ubuntu2204] diff --git a/.evergreen/generated_configs/variants.yml b/.evergreen/generated_configs/variants.yml index 60c49f66e2..bf75817624 100644 --- a/.evergreen/generated_configs/variants.yml +++ b/.evergreen/generated_configs/variants.yml @@ -32,6 +32,14 @@ buildvariants: display_name: Clang Tidy tasks: - name: .clang-tidy + - name: compile-only-matrix + display_name: compile-only-matrix + display_tasks: + - name: compile-only-matrix + execution_tasks: + - .compile-only + tasks: + - name: .compile-only - name: docker-build display_name: Docker Build tasks: diff --git a/.mci.yml b/.mci.yml index 770d4d05f3..cb0e2d4389 100644 --- a/.mci.yml +++ b/.mci.yml @@ -105,14 +105,6 @@ tasks: - func: "fetch_c_driver_source" - func: "compile" - - name: compile_without_tests - commands: - - func: "setup" - - func: "fetch_c_driver_source" - - func: "compile" - vars: - ENABLE_TESTS: OFF - - name: compile_and_run_benchmarks commands: - func: "setup" @@ -1052,7 +1044,6 @@ buildvariants: run_on: - ubuntu2004-build tasks: - - name: compile_without_tests - name: compile_macro_guard_tests - name: ubuntu2004-debug-gcc @@ -1065,7 +1056,6 @@ buildvariants: run_on: - ubuntu2004-large tasks: - - name: compile_without_tests - name: compile_macro_guard_tests - name: ubuntu2004-debug-clang @@ -1078,7 +1068,6 @@ buildvariants: run_on: - ubuntu2004-large tasks: - - name: compile_without_tests - name: compile_macro_guard_tests - name: zseries-rhel83-latest @@ -1241,49 +1230,3 @@ buildvariants: tasks: - name: test_versioned_api - name: test_versioned_api_accept_version_two - - - name: windows-2k8-release - display_name: "Windows (VS 2015) Release (MongoDB 4.2)" - expansions: - build_type: "Release" - mongodb_version: "4.2" - generator: Visual Studio 14 2015 - platform: x64 - run_on: - - windows-64-vs2015-compile - tasks: - - name: compile_without_tests - - - name: windows-2k8-debug - display_name: "Windows (VS 2015) Debug Static (MongoDB 4.2)" - expansions: - build_type: "Debug" - mongodb_version: "4.2" - generator: Visual Studio 14 2015 - platform: x64 - run_on: - - windows-64-vs2015-compile - tasks: - - name: compile_without_tests - - - name: windows-msvc2015-debug - display_name: "Windows (VS 2015) Debug (MongoDB 4.2)" - expansions: - build_type: "Debug" - generator: Visual Studio 14 2015 - platform: x64 - mongodb_version: "4.2" - run_on: - - windows-64-vs2015-compile - tasks: - - name: compile_without_tests - - - name: rhel79-compile - display_name: "RHEL 7.9 (gcc 4.8.5)" - expansions: - build_type: "Release" - BSONCXX_POLYFILL: impls - run_on: - - rhel79-large - tasks: - - name: compile_without_tests From 47e2e5542b1f8ba4288423639f13bc352273a03e Mon Sep 17 00:00:00 2001 From: Ezra Chung Date: Tue, 29 Oct 2024 15:28:35 -0500 Subject: [PATCH 54/78] component: macro_guards --- .../components/macro_guards.py | 70 +++++++++++++++++++ .evergreen/generated_configs/tasks.yml | 34 +++++++++ .evergreen/generated_configs/variants.yml | 8 +++ .mci.yml | 42 ----------- 4 files changed, 112 insertions(+), 42 deletions(-) create mode 100644 .evergreen/config_generator/components/macro_guards.py diff --git a/.evergreen/config_generator/components/macro_guards.py b/.evergreen/config_generator/components/macro_guards.py new file mode 100644 index 0000000000..bdb7395a41 --- /dev/null +++ b/.evergreen/config_generator/components/macro_guards.py @@ -0,0 +1,70 @@ +from config_generator.components.funcs.compile import Compile +from config_generator.components.funcs.fetch_c_driver_source import FetchCDriverSource +from config_generator.components.funcs.setup import Setup + +from config_generator.etc.distros import find_large_distro, make_distro_str + +from shrub.v3.evg_build_variant import BuildVariant, DisplayTask +from shrub.v3.evg_task import EvgTask, EvgTaskRef + + +TAG = 'macro-guards' + + +# pylint: disable=line-too-long +# fmt: off +MATRIX = [ + ('ubuntu2004', None ), + ('ubuntu2004', 'gcc' ), + ('ubuntu2004', 'clang'), +] +# fmt: on +# pylint: enable=line-too-long + + +def tasks(): + res = [] + + for distro_name, compiler in MATRIX: + distro = find_large_distro(distro_name) + + name = f'{TAG}-{make_distro_str(distro_name, compiler, None)}' + tags = [TAG, distro_name] + + if compiler is not None: + tags.append(compiler) + + res.append( + EvgTask( + name=name, + tags=tags, + run_on=distro.name, + commands=[ + Setup.call(), + FetchCDriverSource.call(), + Compile.call( + build_type='Debug', + compiler=compiler, + vars={'COMPILE_MACRO_GUARD_TESTS': 'ON'}, + ) + ], + ) + ) + + return res + + +def variants(): + return [ + BuildVariant( + name=f'{TAG}-matrix', + display_name=f'{TAG}-matrix', + tasks=[EvgTaskRef(name=f'.{TAG}')], + display_tasks=[ + DisplayTask( + name=f'{TAG}-matrix', + execution_tasks=[f'.{TAG}'], + ) + ], + ), + ] diff --git a/.evergreen/generated_configs/tasks.yml b/.evergreen/generated_configs/tasks.yml index b2948b19e3..8c3f7baa54 100644 --- a/.evergreen/generated_configs/tasks.yml +++ b/.evergreen/generated_configs/tasks.yml @@ -154,6 +154,40 @@ tasks: commands: - func: setup - func: lint + - name: macro-guards-ubuntu2004 + run_on: ubuntu2004-large + tags: [macro-guards, ubuntu2004] + commands: + - func: setup + - func: fetch_c_driver_source + - func: compile + vars: + COMPILE_MACRO_GUARD_TESTS: "ON" + build_type: Debug + - name: macro-guards-ubuntu2004-clang + run_on: ubuntu2004-large + tags: [macro-guards, ubuntu2004, clang] + commands: + - func: setup + - func: fetch_c_driver_source + - func: compile + vars: + COMPILE_MACRO_GUARD_TESTS: "ON" + build_type: Debug + cc_compiler: clang + cxx_compiler: clang++ + - name: macro-guards-ubuntu2004-gcc + run_on: ubuntu2004-large + tags: [macro-guards, ubuntu2004, gcc] + commands: + - func: setup + - func: fetch_c_driver_source + - func: compile + vars: + COMPILE_MACRO_GUARD_TESTS: "ON" + build_type: Debug + cc_compiler: gcc + cxx_compiler: g++ - name: packaging-debian run_on: debian12-latest-large tags: [packaging, debian12-latest] diff --git a/.evergreen/generated_configs/variants.yml b/.evergreen/generated_configs/variants.yml index bf75817624..801fc322cf 100644 --- a/.evergreen/generated_configs/variants.yml +++ b/.evergreen/generated_configs/variants.yml @@ -48,6 +48,14 @@ buildvariants: display_name: Lint tasks: - name: .lint + - name: macro-guards-matrix + display_name: macro-guards-matrix + display_tasks: + - name: macro-guards-matrix + execution_tasks: + - .macro-guards + tasks: + - name: .macro-guards - name: mongohouse display_name: Mongohouse tasks: diff --git a/.mci.yml b/.mci.yml index cb0e2d4389..fa6fef79bc 100644 --- a/.mci.yml +++ b/.mci.yml @@ -113,14 +113,6 @@ tasks: - func: "compile_benchmarks" - func: "run benchmarks" - - name: compile_macro_guard_tests - commands: - - func: "setup" - - func: "fetch_c_driver_source" - - func: "compile" - vars: - COMPILE_MACRO_GUARD_TESTS: ON - - name: compile_and_test_auth_with_shared_libs commands: - func: "setup" @@ -1036,40 +1028,6 @@ buildvariants: # signature. - name: compile_and_test_with_static_libs - - name: ubuntu2004-debug - display_name: "Ubuntu 20.04 Debug (MongoDB Latest) (Extra)" - expansions: - build_type: "Debug" - mongodb_version: "latest" - run_on: - - ubuntu2004-build - tasks: - - name: compile_macro_guard_tests - - - name: ubuntu2004-debug-gcc - display_name: "Ubuntu 20.04 Debug (GCC)" - expansions: - build_type: "Debug" - mongodb_version: "latest" - cc_compiler: gcc - cxx_compiler: g++ - run_on: - - ubuntu2004-large - tasks: - - name: compile_macro_guard_tests - - - name: ubuntu2004-debug-clang - display_name: "Ubuntu 20.04 Debug (Clang)" - expansions: - build_type: "Debug" - mongodb_version: "latest" - cc_compiler: clang - cxx_compiler: clang++ - run_on: - - ubuntu2004-large - tasks: - - name: compile_macro_guard_tests - - name: zseries-rhel83-latest display_name: "zSeries RHEL 8.3 (MongoDB Latest)" patchable: false From 3804db68849921a4d06b39d597bcb3209c7ed876 Mon Sep 17 00:00:00 2001 From: Ezra Chung Date: Tue, 29 Oct 2024 15:28:35 -0500 Subject: [PATCH 55/78] component: versioned_api --- .../components/versioned_api.py | 106 ++++++++++++++ .evergreen/generated_configs/tasks.yml | 135 ++++++++++++++++++ .evergreen/generated_configs/variants.yml | 8 ++ .mci.yml | 69 --------- 4 files changed, 249 insertions(+), 69 deletions(-) create mode 100644 .evergreen/config_generator/components/versioned_api.py diff --git a/.evergreen/config_generator/components/versioned_api.py b/.evergreen/config_generator/components/versioned_api.py new file mode 100644 index 0000000000..d3997c18b6 --- /dev/null +++ b/.evergreen/config_generator/components/versioned_api.py @@ -0,0 +1,106 @@ +from config_generator.components.funcs.compile import Compile +from config_generator.components.funcs.fetch_c_driver_source import FetchCDriverSource +from config_generator.components.funcs.fetch_det import FetchDET +from config_generator.components.funcs.run_kms_servers import RunKMSServers +from config_generator.components.funcs.setup import Setup +from config_generator.components.funcs.start_mongod import StartMongod +from config_generator.components.funcs.test import Test + +from config_generator.etc.distros import find_large_distro, make_distro_str + +from shrub.v3.evg_build_variant import BuildVariant, DisplayTask +from shrub.v3.evg_task import EvgTask, EvgTaskRef + +from itertools import product + + +TAG = 'versioned-api' + + +# pylint: disable=line-too-long +# fmt: off +MATRIX = [ + ('macos-1100', None, ['Release'], ['shared'], ['boost']), + ('ubuntu2004', None, ['Debug' ], ['shared'], [None ]), + ('windows-vsCurrent', 'vs2019x64', ['Debug' ], ['shared'], [None ]), +] +# fmt: on +# pylint: enable=line-too-long + + +def tasks(): + res = [] + + version_one_required = ( + 'one-required', + {'REQUIRE_API_VERSION': True}, + {'MONGODB_API_VERSION': 1}, + ) + + version_two_accepted = ( + 'two-accepted', + {'ORCHESTRATION_FILE': 'versioned-api-testing.json'}, + {}, + ) + + version_matrix = [version_one_required, version_two_accepted] + + for (distro_name, compiler, build_types, link_types, polyfills), (desc, mongod_vars, test_vars) in product(MATRIX, version_matrix): + distro = find_large_distro(distro_name) + + for build_type, link_type, polyfill in product(build_types, link_types, polyfills): + name = f'{TAG}-{desc}-{make_distro_str(distro_name, compiler, None)}' + tags = [TAG, distro_name] + + if compiler is not None: + tags.append(compiler) + + name += f'-{build_type.lower()}-{link_type}' + tags += [build_type.lower(), link_type] + + if polyfill is not None: + name += f'-{polyfill}' + tags.append(polyfill) + + mongod_vars |= {'AUTH': 'noauth'} # Versioned API + auth is tested by the C Driver. + compile_vars = {} + test_vars |= {'MONGOCXX_TEST_TOPOLOGY': 'single'} + + match distro.os_type: + case 'macos': compile_vars |= {'BSONCXX_POLYFILL': 'boost'} + case 'windows': test_vars |= {'example_projects_cxx_standard': 17} + + res.append( + EvgTask( + name=name, + tags=tags, + run_on=distro.name, + commands=[ + Setup.call(), + StartMongod.call(mongodb_version='latest', topology='single', vars=mongod_vars), + FetchCDriverSource.call(), + Compile.call(build_type=build_type, compiler=compiler, vars=compile_vars), + FetchDET.call(), + RunKMSServers.call(), + Test.call(build_type=build_type, compiler=compiler, vars=test_vars), + ], + ) + ) + + return res + + +def variants(): + return [ + BuildVariant( + name=f'{TAG}-matrix', + display_name=f'{TAG}-matrix', + tasks=[EvgTaskRef(name=f'.{TAG}')], + display_tasks=[ + DisplayTask( + name=f'{TAG}-matrix', + execution_tasks=[f'.{TAG}'], + ) + ], + ), + ] diff --git a/.evergreen/generated_configs/tasks.yml b/.evergreen/generated_configs/tasks.yml index 8c3f7baa54..bb95edb0dc 100644 --- a/.evergreen/generated_configs/tasks.yml +++ b/.evergreen/generated_configs/tasks.yml @@ -432,3 +432,138 @@ tasks: generator: Visual Studio 14 2015 platform: x64 - func: uninstall-check + - name: versioned-api-one-required-macos-1100-release-shared-boost + run_on: macos-1100 + tags: [versioned-api, macos-1100, release, shared, boost] + commands: + - func: setup + - func: start_mongod + vars: + AUTH: noauth + REQUIRE_API_VERSION: true + mongodb_version: latest + - func: fetch_c_driver_source + - func: compile + vars: + BSONCXX_POLYFILL: boost + build_type: Release + - func: fetch-det + - func: run_kms_servers + - func: test + vars: + MONGOCXX_TEST_TOPOLOGY: single + MONGODB_API_VERSION: 1 + build_type: Release + - name: versioned-api-one-required-ubuntu2004-debug-shared + run_on: ubuntu2004-large + tags: [versioned-api, ubuntu2004, debug, shared] + commands: + - func: setup + - func: start_mongod + vars: + AUTH: noauth + REQUIRE_API_VERSION: true + mongodb_version: latest + - func: fetch_c_driver_source + - func: compile + vars: + build_type: Debug + - func: fetch-det + - func: run_kms_servers + - func: test + vars: + MONGOCXX_TEST_TOPOLOGY: single + MONGODB_API_VERSION: 1 + build_type: Debug + - name: versioned-api-one-required-windows-2019-vs2019-x64-debug-shared + run_on: windows-vsCurrent-large + tags: [versioned-api, windows-vsCurrent, vs2019x64, debug, shared] + commands: + - func: setup + - func: start_mongod + vars: + AUTH: noauth + REQUIRE_API_VERSION: true + mongodb_version: latest + - func: fetch_c_driver_source + - func: compile + vars: + build_type: Debug + generator: Visual Studio 16 2019 + platform: x64 + - func: fetch-det + - func: run_kms_servers + - func: test + vars: + MONGOCXX_TEST_TOPOLOGY: single + MONGODB_API_VERSION: 1 + build_type: Debug + example_projects_cxx_standard: 17 + generator: Visual Studio 16 2019 + platform: x64 + - name: versioned-api-two-accepted-macos-1100-release-shared-boost + run_on: macos-1100 + tags: [versioned-api, macos-1100, release, shared, boost] + commands: + - func: setup + - func: start_mongod + vars: + AUTH: noauth + ORCHESTRATION_FILE: versioned-api-testing.json + mongodb_version: latest + - func: fetch_c_driver_source + - func: compile + vars: + BSONCXX_POLYFILL: boost + build_type: Release + - func: fetch-det + - func: run_kms_servers + - func: test + vars: + MONGOCXX_TEST_TOPOLOGY: single + build_type: Release + - name: versioned-api-two-accepted-ubuntu2004-debug-shared + run_on: ubuntu2004-large + tags: [versioned-api, ubuntu2004, debug, shared] + commands: + - func: setup + - func: start_mongod + vars: + AUTH: noauth + ORCHESTRATION_FILE: versioned-api-testing.json + mongodb_version: latest + - func: fetch_c_driver_source + - func: compile + vars: + build_type: Debug + - func: fetch-det + - func: run_kms_servers + - func: test + vars: + MONGOCXX_TEST_TOPOLOGY: single + build_type: Debug + - name: versioned-api-two-accepted-windows-2019-vs2019-x64-debug-shared + run_on: windows-vsCurrent-large + tags: [versioned-api, windows-vsCurrent, vs2019x64, debug, shared] + commands: + - func: setup + - func: start_mongod + vars: + AUTH: noauth + ORCHESTRATION_FILE: versioned-api-testing.json + mongodb_version: latest + - func: fetch_c_driver_source + - func: compile + vars: + build_type: Debug + generator: Visual Studio 16 2019 + platform: x64 + - func: fetch-det + - func: run_kms_servers + - func: test + vars: + MONGOCXX_TEST_TOPOLOGY: single + build_type: Debug + example_projects_cxx_standard: 17 + generator: Visual Studio 16 2019 + platform: x64 diff --git a/.evergreen/generated_configs/variants.yml b/.evergreen/generated_configs/variants.yml index 801fc322cf..780825526c 100644 --- a/.evergreen/generated_configs/variants.yml +++ b/.evergreen/generated_configs/variants.yml @@ -88,3 +88,11 @@ buildvariants: - .uninstall-check tasks: - name: .uninstall-check + - name: versioned-api-matrix + display_name: versioned-api-matrix + display_tasks: + - name: versioned-api-matrix + execution_tasks: + - .versioned-api + tasks: + - name: .versioned-api diff --git a/.mci.yml b/.mci.yml index fa6fef79bc..ed3a56bf6a 100644 --- a/.mci.yml +++ b/.mci.yml @@ -257,39 +257,6 @@ tasks: "$cmake_binary" --build build ./build/hello_mongocxx - - name: test_versioned_api - commands: - - func: "setup" - - func: "start_mongod" - vars: - REQUIRE_API_VERSION: true - # Authentication with versioned API should already be tested - # in the C driver. - AUTH: noauth - - func: "fetch_c_driver_source" - - func: "compile" - - func: "fetch-det" - - func: "run_kms_servers" - - func: "test" - vars: - MONGOCXX_TEST_TOPOLOGY: single - MONGODB_API_VERSION: 1 - - - name: test_versioned_api_accept_version_two - commands: - - func: "setup" - - func: "start_mongod" - vars: - ORCHESTRATION_FILE: versioned-api-testing.json - AUTH: noauth - - func: "fetch_c_driver_source" - - func: "compile" - - func: "fetch-det" - - func: "run_kms_servers" - - func: "test" - vars: - MONGOCXX_TEST_TOPOLOGY: single - ####################################### # Buildvariants # ####################################### @@ -684,30 +651,6 @@ buildvariants: tasks: - name: compile_and_test_auth_with_shared_libs - - name: integration-versioned-api-ubuntu2004-latest-single - display_name: "Ubuntu 20.04 Debug Latest Versioned API" - run_on: ubuntu2004-large - expansions: - mongodb_version: "latest" - build_type: "Debug" - ENABLE_CODE_COVERAGE: ON - tasks: - - name: test_versioned_api - - name: test_versioned_api_accept_version_two - - - name: integration-versioned-api-vs2019-latest-single - display_name: "Windows (VS 2019) Debug Latest Versioned API" - run_on: windows-vsCurrent-large - expansions: - mongodb_version: "latest" - build_type: "Debug" # Same for Windows and Linux - generator: Visual Studio 16 2019 - platform: x64 - example_projects_cxx_standard: 17 - tasks: - - name: test_versioned_api - - name: test_versioned_api_accept_version_two - - name: integration-mongocryptd-ubuntu2004-latest display_name: "Ubuntu 20.04 Debug (MongoDB Latest) with mongocryptd" run_on: ubuntu2004-large @@ -1176,15 +1119,3 @@ buildvariants: - name: compile_and_test_with_shared_libs_extra_alignment - name: compile_and_test_with_static_libs - name: compile_and_test_with_static_libs_extra_alignment - - - name: macos-1100-versioned-api - display_name: "MacOS 11.0 Release Versioned API" - expansions: - build_type: "Release" - BSONCXX_POLYFILL: "boost" - mongodb_version: "latest" - run_on: - - macos-1100 - tasks: - - name: test_versioned_api - - name: test_versioned_api_accept_version_two From a47119e2bb6a582c26b771d96220f38922e7d9ea Mon Sep 17 00:00:00 2001 From: Ezra Chung Date: Tue, 29 Oct 2024 15:28:35 -0500 Subject: [PATCH 56/78] component: compile_only (<- compile_with_shared_libs) --- .../components/compile_only.py | 18 ++++++++++++++++-- .evergreen/generated_configs/variants.yml | 6 +++++- .mci.yml | 11 ----------- 3 files changed, 21 insertions(+), 14 deletions(-) diff --git a/.evergreen/config_generator/components/compile_only.py b/.evergreen/config_generator/components/compile_only.py index 0f8d45eb0a..9785cfef5d 100644 --- a/.evergreen/config_generator/components/compile_only.py +++ b/.evergreen/config_generator/components/compile_only.py @@ -33,7 +33,7 @@ # pylint: enable=line-too-long -def tasks(): +def generate_tasks(): res = [] for distro_name, compiler, build_types, link_types, polyfills in MATRIX: @@ -78,6 +78,20 @@ def tasks(): return res +TASKS = generate_tasks() + + +def tasks(): + res = TASKS.copy() + + # PowerPC and zSeries are limited resources. + for task in res: + if any(pattern in task.run_on for pattern in ["power8", "zseries"]): + task.patchable = False + + return res + + def variants(): tasks = [] @@ -94,7 +108,7 @@ def variants(): BuildVariant( name=f'{TAG}-matrix', display_name=f'{TAG}-matrix', - tasks=[EvgTaskRef(name=f'.{TAG}')], + tasks=tasks, display_tasks=[ DisplayTask( name=f'{TAG}-matrix', diff --git a/.evergreen/generated_configs/variants.yml b/.evergreen/generated_configs/variants.yml index 780825526c..4ca76d2c00 100644 --- a/.evergreen/generated_configs/variants.yml +++ b/.evergreen/generated_configs/variants.yml @@ -39,7 +39,11 @@ buildvariants: execution_tasks: - .compile-only tasks: - - name: .compile-only + - name: .compile-only .rhel81-power8 + batchtime: 1440 + - name: .compile-only .rhel83-zseries + batchtime: 1440 + - name: .compile-only !.rhel81-power8 !.rhel83-zseries - name: docker-build display_name: Docker Build tasks: diff --git a/.mci.yml b/.mci.yml index ed3a56bf6a..704bf623fc 100644 --- a/.mci.yml +++ b/.mci.yml @@ -99,12 +99,6 @@ tasks: MONGOCXX_TEST_TOPOLOGY: single REQUIRED_CXX_STANDARD: 20 - - name: compile_with_shared_libs - commands: - - func: "setup" - - func: "fetch_c_driver_source" - - func: "compile" - - name: compile_and_run_benchmarks commands: - func: "setup" @@ -983,7 +977,6 @@ buildvariants: run_on: - rhel83-zseries-large tasks: - - name: compile_with_shared_libs - name: compile_and_test_with_shared_libs - name: compile_and_test_with_shared_libs_extra_alignment - name: compile_and_test_with_static_libs @@ -1001,7 +994,6 @@ buildvariants: run_on: - rhel83-zseries-large tasks: - - name: compile_with_shared_libs - name: compile_and_test_with_shared_libs - name: compile_and_test_with_shared_libs_extra_alignment - name: compile_and_test_with_static_libs @@ -1019,7 +1011,6 @@ buildvariants: run_on: - rhel83-zseries-large tasks: - - name: compile_with_shared_libs - name: compile_and_test_with_shared_libs - name: compile_and_test_with_shared_libs_extra_alignment - name: compile_and_test_with_static_libs @@ -1037,7 +1028,6 @@ buildvariants: run_on: - rhel81-power8-large tasks: - - name: compile_with_shared_libs - name: compile_and_test_with_shared_libs - name: compile_and_test_with_shared_libs_extra_alignment - name: compile_and_test_with_static_libs @@ -1055,7 +1045,6 @@ buildvariants: run_on: - rhel81-power8-large tasks: - - name: compile_with_shared_libs - name: compile_and_test_with_shared_libs - name: compile_and_test_with_shared_libs_extra_alignment - name: compile_and_test_with_static_libs From fe02224c06f5d10e37f84530e0308081daa9687e Mon Sep 17 00:00:00 2001 From: Ezra Chung Date: Tue, 29 Oct 2024 15:28:36 -0500 Subject: [PATCH 57/78] component: sanitizers --- .../config_generator/components/sanitizers.py | 142 ++++++++ .evergreen/generated_configs/tasks.yml | 304 ++++++++++++++++++ .evergreen/generated_configs/variants.yml | 8 + .mci.yml | 86 ----- 4 files changed, 454 insertions(+), 86 deletions(-) create mode 100644 .evergreen/config_generator/components/sanitizers.py diff --git a/.evergreen/config_generator/components/sanitizers.py b/.evergreen/config_generator/components/sanitizers.py new file mode 100644 index 0000000000..a4d1bcdc4d --- /dev/null +++ b/.evergreen/config_generator/components/sanitizers.py @@ -0,0 +1,142 @@ +from config_generator.components.funcs.compile import Compile +from config_generator.components.funcs.fetch_det import FetchDET +from config_generator.components.funcs.install_c_driver import InstallCDriver +from config_generator.components.funcs.install_c_driver import InstallCDriver +from config_generator.components.funcs.run_kms_servers import RunKMSServers +from config_generator.components.funcs.setup import Setup +from config_generator.components.funcs.start_mongod import StartMongod +from config_generator.components.funcs.test import Test + +from config_generator.etc.distros import compiler_to_vars, find_large_distro, make_distro_str + +from shrub.v3.evg_build_variant import BuildVariant, DisplayTask +from shrub.v3.evg_command import KeyValueParam, expansions_update +from shrub.v3.evg_task import EvgTask, EvgTaskRef + +from itertools import product + + +TAG = 'sanitizers' + + +# pylint: disable=line-too-long +# fmt: off +MATRIX = [ + ('ubuntu1804', ['asan' ], ['shared', 'static'], [False, True], ['5.0'], ['single']), + ('ubuntu1804', ['ubsan'], [ 'static'], [False, ], ['5.0'], ['single']), + + ('ubuntu2004', ['asan' ], ['shared', 'static'], [False, True], ['5.0'], ['single']), + ('ubuntu2004', ['ubsan'], [ 'static'], [False, ], ['5.0'], ['single']), +] +# fmt: on +# pylint: enable=line-too-long + + +def tasks(): + res = [] + + compiler = 'clang' + + for distro_name, sanitizers, link_types, with_extra_aligns, mongodb_versions, topologies in MATRIX: + for sanitizer, link_type, with_extra_align, mongodb_version, topology in product( + sanitizers, link_types, with_extra_aligns, mongodb_versions, topologies + ): + distro = find_large_distro(distro_name) + + name = f'{TAG}-{sanitizer}-{make_distro_str(distro_name, compiler, None)}' + tags = [TAG, sanitizer, distro_name] + + if compiler: + tags.append(compiler) + + name += f'-{link_type}' + tags += [link_type] + + if with_extra_align: + name += f'-extra_alignment' + tags += ['extra_alignment'] + + name += f'-{mongodb_version}-{topology}' + tags += [mongodb_version, topology] + + updates = [KeyValueParam(key='build_type', value='Debug')] + updates += [KeyValueParam(key=key, value=value) for key, value in compiler_to_vars(compiler).items()] + + icd_vars = {} + compile_vars = {} + test_vars = { + 'MONGOCXX_TEST_TOPOLOGY': topology, + 'example_projects_cc': 'clang', + 'example_projects_cxx': 'clang++', + } + + if link_type == 'static': + updates.append(KeyValueParam(key='USE_STATIC_LIBS', value='1')) + + if with_extra_align: + icd_vars |= {'BSON_EXTRA_ALIGNMENT': 1} + compile_vars |= {'BSON_EXTRA_ALIGNMENT': 1} + else: + compile_vars |= {'RUN_DISTCHECK': 1} + + commands = [expansions_update(updates=updates)] if updates else [] + + match sanitizer: + case 'asan': + compile_vars |= { + 'USE_SANITIZER_ASAN': 'ON', + } + + test_vars |= { + 'TEST_WITH_ASAN': 'ON', + 'example_projects_cxxflags': '-D_GLIBCXX_USE_CXX11_ABI=0 -fsanitize=address -fno-omit-frame-pointer', + 'example_projects_ldflags': '-fsanitize=address', + } + + case 'ubsan': + compile_vars |= { + 'USE_SANITIZER_UBSAN': 'ON', + } + + test_vars |= { + 'TEST_WITH_UBSAN': 'ON', + 'example_projects_cxxflags': '-D_GLIBCXX_USE_CXX11_ABI=0 -fsanitize=undefined -fno-sanitize-recover=undefined -fno-omit-frame-pointer', + 'example_projects_ldflags': '-fsanitize=undefined -fno-sanitize-recover=undefined', + } + + commands += [ + Setup.call(), + StartMongod.call(mongodb_version=mongodb_version, topology=topology), + InstallCDriver.call(vars=icd_vars), + Compile.call(vars=compile_vars), + FetchDET.call(), + RunKMSServers.call(), + Test.call(vars=test_vars), + ] + + res.append( + EvgTask( + name=name, + tags=tags, + run_on=distro.name, + commands=commands, + ) + ) + + return res + + +def variants(): + return [ + BuildVariant( + name=f'{TAG}-matrix', + display_name=f'{TAG}-matrix', + tasks=[EvgTaskRef(name=f'.{TAG}')], + display_tasks=[ + DisplayTask( + name=f'{TAG}-matrix', + execution_tasks=[f'.{TAG}'], + ) + ], + ), + ] diff --git a/.evergreen/generated_configs/tasks.yml b/.evergreen/generated_configs/tasks.yml index bb95edb0dc..6c5745fdf3 100644 --- a/.evergreen/generated_configs/tasks.yml +++ b/.evergreen/generated_configs/tasks.yml @@ -206,6 +206,310 @@ tasks: commands: - func: setup - func: build-package-rpm + - name: sanitizers-asan-ubuntu1804-clang-shared-5.0-single + run_on: ubuntu1804-large + tags: [sanitizers, asan, ubuntu1804, clang, shared, "5.0", single] + commands: + - command: expansions.update + params: + updates: + - { key: build_type, value: Debug } + - { key: cc_compiler, value: clang } + - { key: cxx_compiler, value: clang++ } + - func: setup + - func: start_mongod + vars: + mongodb_version: "5.0" + - func: install_c_driver + - func: compile + vars: + RUN_DISTCHECK: 1 + USE_SANITIZER_ASAN: "ON" + - func: fetch-det + - func: run_kms_servers + - func: test + vars: + MONGOCXX_TEST_TOPOLOGY: single + TEST_WITH_ASAN: "ON" + example_projects_cc: clang + example_projects_cxx: clang++ + example_projects_cxxflags: -D_GLIBCXX_USE_CXX11_ABI=0 -fsanitize=address -fno-omit-frame-pointer + example_projects_ldflags: -fsanitize=address + - name: sanitizers-asan-ubuntu1804-clang-shared-extra_alignment-5.0-single + run_on: ubuntu1804-large + tags: [sanitizers, asan, ubuntu1804, clang, shared, extra_alignment, "5.0", single] + commands: + - command: expansions.update + params: + updates: + - { key: build_type, value: Debug } + - { key: cc_compiler, value: clang } + - { key: cxx_compiler, value: clang++ } + - func: setup + - func: start_mongod + vars: + mongodb_version: "5.0" + - func: install_c_driver + vars: + BSON_EXTRA_ALIGNMENT: 1 + - func: compile + vars: + BSON_EXTRA_ALIGNMENT: 1 + USE_SANITIZER_ASAN: "ON" + - func: fetch-det + - func: run_kms_servers + - func: test + vars: + MONGOCXX_TEST_TOPOLOGY: single + TEST_WITH_ASAN: "ON" + example_projects_cc: clang + example_projects_cxx: clang++ + example_projects_cxxflags: -D_GLIBCXX_USE_CXX11_ABI=0 -fsanitize=address -fno-omit-frame-pointer + example_projects_ldflags: -fsanitize=address + - name: sanitizers-asan-ubuntu1804-clang-static-5.0-single + run_on: ubuntu1804-large + tags: [sanitizers, asan, ubuntu1804, clang, static, "5.0", single] + commands: + - command: expansions.update + params: + updates: + - { key: build_type, value: Debug } + - { key: cc_compiler, value: clang } + - { key: cxx_compiler, value: clang++ } + - { key: USE_STATIC_LIBS, value: "1" } + - func: setup + - func: start_mongod + vars: + mongodb_version: "5.0" + - func: install_c_driver + - func: compile + vars: + RUN_DISTCHECK: 1 + USE_SANITIZER_ASAN: "ON" + - func: fetch-det + - func: run_kms_servers + - func: test + vars: + MONGOCXX_TEST_TOPOLOGY: single + TEST_WITH_ASAN: "ON" + example_projects_cc: clang + example_projects_cxx: clang++ + example_projects_cxxflags: -D_GLIBCXX_USE_CXX11_ABI=0 -fsanitize=address -fno-omit-frame-pointer + example_projects_ldflags: -fsanitize=address + - name: sanitizers-asan-ubuntu1804-clang-static-extra_alignment-5.0-single + run_on: ubuntu1804-large + tags: [sanitizers, asan, ubuntu1804, clang, static, extra_alignment, "5.0", single] + commands: + - command: expansions.update + params: + updates: + - { key: build_type, value: Debug } + - { key: cc_compiler, value: clang } + - { key: cxx_compiler, value: clang++ } + - { key: USE_STATIC_LIBS, value: "1" } + - func: setup + - func: start_mongod + vars: + mongodb_version: "5.0" + - func: install_c_driver + vars: + BSON_EXTRA_ALIGNMENT: 1 + - func: compile + vars: + BSON_EXTRA_ALIGNMENT: 1 + USE_SANITIZER_ASAN: "ON" + - func: fetch-det + - func: run_kms_servers + - func: test + vars: + MONGOCXX_TEST_TOPOLOGY: single + TEST_WITH_ASAN: "ON" + example_projects_cc: clang + example_projects_cxx: clang++ + example_projects_cxxflags: -D_GLIBCXX_USE_CXX11_ABI=0 -fsanitize=address -fno-omit-frame-pointer + example_projects_ldflags: -fsanitize=address + - name: sanitizers-asan-ubuntu2004-clang-shared-5.0-single + run_on: ubuntu2004-large + tags: [sanitizers, asan, ubuntu2004, clang, shared, "5.0", single] + commands: + - command: expansions.update + params: + updates: + - { key: build_type, value: Debug } + - { key: cc_compiler, value: clang } + - { key: cxx_compiler, value: clang++ } + - func: setup + - func: start_mongod + vars: + mongodb_version: "5.0" + - func: install_c_driver + - func: compile + vars: + RUN_DISTCHECK: 1 + USE_SANITIZER_ASAN: "ON" + - func: fetch-det + - func: run_kms_servers + - func: test + vars: + MONGOCXX_TEST_TOPOLOGY: single + TEST_WITH_ASAN: "ON" + example_projects_cc: clang + example_projects_cxx: clang++ + example_projects_cxxflags: -D_GLIBCXX_USE_CXX11_ABI=0 -fsanitize=address -fno-omit-frame-pointer + example_projects_ldflags: -fsanitize=address + - name: sanitizers-asan-ubuntu2004-clang-shared-extra_alignment-5.0-single + run_on: ubuntu2004-large + tags: [sanitizers, asan, ubuntu2004, clang, shared, extra_alignment, "5.0", single] + commands: + - command: expansions.update + params: + updates: + - { key: build_type, value: Debug } + - { key: cc_compiler, value: clang } + - { key: cxx_compiler, value: clang++ } + - func: setup + - func: start_mongod + vars: + mongodb_version: "5.0" + - func: install_c_driver + vars: + BSON_EXTRA_ALIGNMENT: 1 + - func: compile + vars: + BSON_EXTRA_ALIGNMENT: 1 + USE_SANITIZER_ASAN: "ON" + - func: fetch-det + - func: run_kms_servers + - func: test + vars: + MONGOCXX_TEST_TOPOLOGY: single + TEST_WITH_ASAN: "ON" + example_projects_cc: clang + example_projects_cxx: clang++ + example_projects_cxxflags: -D_GLIBCXX_USE_CXX11_ABI=0 -fsanitize=address -fno-omit-frame-pointer + example_projects_ldflags: -fsanitize=address + - name: sanitizers-asan-ubuntu2004-clang-static-5.0-single + run_on: ubuntu2004-large + tags: [sanitizers, asan, ubuntu2004, clang, static, "5.0", single] + commands: + - command: expansions.update + params: + updates: + - { key: build_type, value: Debug } + - { key: cc_compiler, value: clang } + - { key: cxx_compiler, value: clang++ } + - { key: USE_STATIC_LIBS, value: "1" } + - func: setup + - func: start_mongod + vars: + mongodb_version: "5.0" + - func: install_c_driver + - func: compile + vars: + RUN_DISTCHECK: 1 + USE_SANITIZER_ASAN: "ON" + - func: fetch-det + - func: run_kms_servers + - func: test + vars: + MONGOCXX_TEST_TOPOLOGY: single + TEST_WITH_ASAN: "ON" + example_projects_cc: clang + example_projects_cxx: clang++ + example_projects_cxxflags: -D_GLIBCXX_USE_CXX11_ABI=0 -fsanitize=address -fno-omit-frame-pointer + example_projects_ldflags: -fsanitize=address + - name: sanitizers-asan-ubuntu2004-clang-static-extra_alignment-5.0-single + run_on: ubuntu2004-large + tags: [sanitizers, asan, ubuntu2004, clang, static, extra_alignment, "5.0", single] + commands: + - command: expansions.update + params: + updates: + - { key: build_type, value: Debug } + - { key: cc_compiler, value: clang } + - { key: cxx_compiler, value: clang++ } + - { key: USE_STATIC_LIBS, value: "1" } + - func: setup + - func: start_mongod + vars: + mongodb_version: "5.0" + - func: install_c_driver + vars: + BSON_EXTRA_ALIGNMENT: 1 + - func: compile + vars: + BSON_EXTRA_ALIGNMENT: 1 + USE_SANITIZER_ASAN: "ON" + - func: fetch-det + - func: run_kms_servers + - func: test + vars: + MONGOCXX_TEST_TOPOLOGY: single + TEST_WITH_ASAN: "ON" + example_projects_cc: clang + example_projects_cxx: clang++ + example_projects_cxxflags: -D_GLIBCXX_USE_CXX11_ABI=0 -fsanitize=address -fno-omit-frame-pointer + example_projects_ldflags: -fsanitize=address + - name: sanitizers-ubsan-ubuntu1804-clang-static-5.0-single + run_on: ubuntu1804-large + tags: [sanitizers, ubsan, ubuntu1804, clang, static, "5.0", single] + commands: + - command: expansions.update + params: + updates: + - { key: build_type, value: Debug } + - { key: cc_compiler, value: clang } + - { key: cxx_compiler, value: clang++ } + - { key: USE_STATIC_LIBS, value: "1" } + - func: setup + - func: start_mongod + vars: + mongodb_version: "5.0" + - func: install_c_driver + - func: compile + vars: + RUN_DISTCHECK: 1 + USE_SANITIZER_UBSAN: "ON" + - func: fetch-det + - func: run_kms_servers + - func: test + vars: + MONGOCXX_TEST_TOPOLOGY: single + TEST_WITH_UBSAN: "ON" + example_projects_cc: clang + example_projects_cxx: clang++ + example_projects_cxxflags: -D_GLIBCXX_USE_CXX11_ABI=0 -fsanitize=undefined -fno-sanitize-recover=undefined -fno-omit-frame-pointer + example_projects_ldflags: -fsanitize=undefined -fno-sanitize-recover=undefined + - name: sanitizers-ubsan-ubuntu2004-clang-static-5.0-single + run_on: ubuntu2004-large + tags: [sanitizers, ubsan, ubuntu2004, clang, static, "5.0", single] + commands: + - command: expansions.update + params: + updates: + - { key: build_type, value: Debug } + - { key: cc_compiler, value: clang } + - { key: cxx_compiler, value: clang++ } + - { key: USE_STATIC_LIBS, value: "1" } + - func: setup + - func: start_mongod + vars: + mongodb_version: "5.0" + - func: install_c_driver + - func: compile + vars: + RUN_DISTCHECK: 1 + USE_SANITIZER_UBSAN: "ON" + - func: fetch-det + - func: run_kms_servers + - func: test + vars: + MONGOCXX_TEST_TOPOLOGY: single + TEST_WITH_UBSAN: "ON" + example_projects_cc: clang + example_projects_cxx: clang++ + example_projects_cxxflags: -D_GLIBCXX_USE_CXX11_ABI=0 -fsanitize=undefined -fno-sanitize-recover=undefined -fno-omit-frame-pointer + example_projects_ldflags: -fsanitize=undefined -fno-sanitize-recover=undefined - name: scan-build-ubuntu2204-std11-boost run_on: ubuntu2204-large tags: [scan-build, ubuntu2204, std11, boost] diff --git a/.evergreen/generated_configs/variants.yml b/.evergreen/generated_configs/variants.yml index 4ca76d2c00..1b86e265a9 100644 --- a/.evergreen/generated_configs/variants.yml +++ b/.evergreen/generated_configs/variants.yml @@ -68,6 +68,14 @@ buildvariants: display_name: Linux Distro Packaging tasks: - name: .packaging + - name: sanitizers-matrix + display_name: sanitizers-matrix + display_tasks: + - name: sanitizers-matrix + execution_tasks: + - .sanitizers + tasks: + - name: .sanitizers - name: scan-build-matrix display_name: scan-build-matrix display_tasks: diff --git a/.mci.yml b/.mci.yml index 704bf623fc..1616e346cc 100644 --- a/.mci.yml +++ b/.mci.yml @@ -879,92 +879,6 @@ buildvariants: - name: compile_and_test_with_static_libs - name: compile_and_test_with_static_libs_extra_alignment - - name: ubuntu2004-debug-asan-latest - display_name: "ASAN Ubuntu 20.04 Debug (MongoDB Latest)" - expansions: - build_type: "Debug" - cc_compiler: clang - cxx_compiler: clang++ - USE_SANITIZER_ASAN: ON - TEST_WITH_ASAN: "ON" - mongodb_version: "latest" - example_projects_cc: clang - example_projects_cxx: clang++ - example_projects_cxxflags: -D_GLIBCXX_USE_CXX11_ABI=0 -fsanitize=address -fno-omit-frame-pointer - example_projects_ldflags: -fsanitize=address - run_on: - - ubuntu2004-build - tasks: - - name: compile_and_test_with_shared_libs - - name: compile_and_test_with_shared_libs_extra_alignment - - name: compile_and_test_with_static_libs - - name: compile_and_test_with_static_libs_extra_alignment - - - name: ubuntu1804-debug-asan-50 - display_name: "ASAN Ubuntu 18.04 Debug (MongoDB 5.0)" - expansions: - build_type: "Debug" - cc_compiler: clang - cxx_compiler: clang++ - USE_SANITIZER_ASAN: ON - TEST_WITH_ASAN: "ON" - mongodb_version: "5.0" - example_projects_cc: clang - example_projects_cxx: clang++ - example_projects_cxxflags: -D_GLIBCXX_USE_CXX11_ABI=0 -fsanitize=address -fno-omit-frame-pointer - example_projects_ldflags: -fsanitize=address - run_on: - - ubuntu1804-large - tasks: - - name: compile_and_test_with_shared_libs - - name: compile_and_test_with_shared_libs_extra_alignment - - name: compile_and_test_with_static_libs - - name: compile_and_test_with_static_libs_extra_alignment - - - name: ubuntu2004-debug-ubsan-latest - display_name: "UBSAN Ubuntu 20.04 Debug (MongoDB Latest)" - expansions: - build_type: "Debug" - cc_compiler: clang - cxx_compiler: clang++ - USE_SANITIZER_UBSAN: ON - TEST_WITH_UBSAN: "ON" - mongodb_version: "latest" - example_projects_cc: clang - example_projects_cxx: clang++ - example_projects_cxxflags: -D_GLIBCXX_USE_CXX11_ABI=0 -fsanitize=undefined -fno-sanitize-recover=undefined -fno-omit-frame-pointer - example_projects_ldflags: -fsanitize=undefined -fno-sanitize-recover=undefined - run_on: - - ubuntu2004-build - tasks: - # We currently don't run UBSAN on the shared library due to issues with UBSAN reporting - # numerous false positive instances of undefined behavior in the mock tests, when the - # driver invokes mock callback functions that have libmongoc types in the callback - # signature. - - name: compile_and_test_with_static_libs - - - name: ubuntu1804-debug-ubsan-50 - display_name: "UBSAN Ubuntu 18.04 Debug (MongoDB 5.0)" - expansions: - build_type: "Debug" - cc_compiler: clang - cxx_compiler: clang++ - USE_SANITIZER_UBSAN: ON - TEST_WITH_UBSAN: "ON" - mongodb_version: "5.0" - example_projects_cc: clang - example_projects_cxx: clang++ - example_projects_cxxflags: -D_GLIBCXX_USE_CXX11_ABI=0 -fsanitize=undefined -fno-sanitize-recover=undefined -fno-omit-frame-pointer - example_projects_ldflags: -fsanitize=undefined -fno-sanitize-recover=undefined - run_on: - - ubuntu1804-large - tasks: - # We currently don't run UBSAN on the shared library due to issues with UBSAN reporting - # numerous false positive instances of undefined behavior in the mock tests, when the - # driver invokes mock callback functions that have libmongoc types in the callback - # signature. - - name: compile_and_test_with_static_libs - - name: zseries-rhel83-latest display_name: "zSeries RHEL 8.3 (MongoDB Latest)" patchable: false From 680f4177b02aeadb856916492970ea0779e57620 Mon Sep 17 00:00:00 2001 From: Ezra Chung Date: Tue, 29 Oct 2024 15:28:36 -0500 Subject: [PATCH 58/78] component: valgrind --- .../config_generator/components/valgrind.py | 109 ++++++++++ .evergreen/generated_configs/tasks.yml | 196 ++++++++++++++++++ .evergreen/generated_configs/variants.yml | 8 + .mci.yml | 32 --- 4 files changed, 313 insertions(+), 32 deletions(-) create mode 100644 .evergreen/config_generator/components/valgrind.py diff --git a/.evergreen/config_generator/components/valgrind.py b/.evergreen/config_generator/components/valgrind.py new file mode 100644 index 0000000000..e37ab5dc7c --- /dev/null +++ b/.evergreen/config_generator/components/valgrind.py @@ -0,0 +1,109 @@ +from config_generator.components.funcs.compile import Compile +from config_generator.components.funcs.fetch_c_driver_source import FetchCDriverSource +from config_generator.components.funcs.fetch_det import FetchDET +from config_generator.components.funcs.install_c_driver import InstallCDriver +from config_generator.components.funcs.run_kms_servers import RunKMSServers +from config_generator.components.funcs.setup import Setup +from config_generator.components.funcs.start_mongod import StartMongod +from config_generator.components.funcs.test import Test + +from config_generator.etc.distros import find_large_distro, make_distro_str + +from shrub.v3.evg_build_variant import BuildVariant, DisplayTask +from shrub.v3.evg_command import KeyValueParam, expansions_update +from shrub.v3.evg_task import EvgTask, EvgTaskRef + +from itertools import product + + +TAG = 'valgrind' + + +# pylint: disable=line-too-long +# fmt: off +MATRIX = [ + ('ubuntu1804', None, ['shared', 'static'], [False, True], ['5.0' ], ['single']), + ('ubuntu2004', None, ['shared', 'static'], [False, True], ['latest'], ['single']), +] +# fmt: on +# pylint: enable=line-too-long + + +def tasks(): + res = [] + + for distro_name, compiler, link_types, with_extra_aligns, mongodb_versions, topologies in MATRIX: + for link_type, with_extra_align, mongodb_version, topology in product( + link_types, with_extra_aligns, mongodb_versions, topologies + ): + distro = find_large_distro(distro_name) + + name = f'{TAG}-{make_distro_str(distro_name, compiler, None)}' + tags = [TAG, distro_name] + + if compiler: + tags.append(compiler) + + name += f'-{link_type}' + tags += [link_type] + + if with_extra_align: + name += f'-extra_alignment' + tags += ['extra_alignment'] + + name += f'-{mongodb_version}-{topology}' + tags += [mongodb_version, topology] + + updates = [KeyValueParam(key='build_type', value='Debug')] + compile_vars = {'BSON_EXTRA_ALIGNMENT': 1} if with_extra_align else {} + test_vars = { + 'MONGOCXX_TEST_TOPOLOGY': topology, + 'TEST_WITH_VALGRIND': 'ON', + 'disable_slow_tests': 1, + 'use_mongocryptd': True, # False positives arise from the crypt_shared library. + } + + if link_type == 'static': + updates.append(KeyValueParam(key='USE_STATIC_LIBS', value='1')) + + if not with_extra_align: + compile_vars |= {'RUN_DISTCHECK': 1} + + commands = [expansions_update(updates=updates)] if updates else [] + + commands += [ + Setup.call(), + StartMongod.call(mongodb_version=mongodb_version, topology=topology), + FetchCDriverSource.call(), + Compile.call(compiler=compiler, vars=compile_vars), + FetchDET.call(), + RunKMSServers.call(), + Test.call(compiler=compiler, vars=test_vars), + ] + + res.append( + EvgTask( + name=name, + tags=tags, + run_on=distro.name, + commands=commands, + ) + ) + + return res + + +def variants(): + return [ + BuildVariant( + name=f'{TAG}-matrix', + display_name=f'{TAG}-matrix', + tasks=[EvgTaskRef(name=f'.{TAG}')], + display_tasks=[ + DisplayTask( + name=f'{TAG}-matrix', + execution_tasks=[f'.{TAG}'], + ) + ], + ), + ] diff --git a/.evergreen/generated_configs/tasks.yml b/.evergreen/generated_configs/tasks.yml index 6c5745fdf3..0df4f57ed3 100644 --- a/.evergreen/generated_configs/tasks.yml +++ b/.evergreen/generated_configs/tasks.yml @@ -736,6 +736,202 @@ tasks: generator: Visual Studio 14 2015 platform: x64 - func: uninstall-check + - name: valgrind-ubuntu1804-shared-5.0-single + run_on: ubuntu1804-large + tags: [valgrind, ubuntu1804, shared, "5.0", single] + commands: + - command: expansions.update + params: + updates: + - { key: build_type, value: Debug } + - func: setup + - func: start_mongod + vars: + mongodb_version: "5.0" + - func: fetch_c_driver_source + - func: compile + vars: + RUN_DISTCHECK: 1 + - func: fetch-det + - func: run_kms_servers + - func: test + vars: + MONGOCXX_TEST_TOPOLOGY: single + TEST_WITH_VALGRIND: "ON" + disable_slow_tests: 1 + use_mongocryptd: true + - name: valgrind-ubuntu1804-shared-extra_alignment-5.0-single + run_on: ubuntu1804-large + tags: [valgrind, ubuntu1804, shared, extra_alignment, "5.0", single] + commands: + - command: expansions.update + params: + updates: + - { key: build_type, value: Debug } + - func: setup + - func: start_mongod + vars: + mongodb_version: "5.0" + - func: fetch_c_driver_source + - func: compile + vars: + BSON_EXTRA_ALIGNMENT: 1 + - func: fetch-det + - func: run_kms_servers + - func: test + vars: + MONGOCXX_TEST_TOPOLOGY: single + TEST_WITH_VALGRIND: "ON" + disable_slow_tests: 1 + use_mongocryptd: true + - name: valgrind-ubuntu1804-static-5.0-single + run_on: ubuntu1804-large + tags: [valgrind, ubuntu1804, static, "5.0", single] + commands: + - command: expansions.update + params: + updates: + - { key: build_type, value: Debug } + - { key: USE_STATIC_LIBS, value: "1" } + - func: setup + - func: start_mongod + vars: + mongodb_version: "5.0" + - func: fetch_c_driver_source + - func: compile + vars: + RUN_DISTCHECK: 1 + - func: fetch-det + - func: run_kms_servers + - func: test + vars: + MONGOCXX_TEST_TOPOLOGY: single + TEST_WITH_VALGRIND: "ON" + disable_slow_tests: 1 + use_mongocryptd: true + - name: valgrind-ubuntu1804-static-extra_alignment-5.0-single + run_on: ubuntu1804-large + tags: [valgrind, ubuntu1804, static, extra_alignment, "5.0", single] + commands: + - command: expansions.update + params: + updates: + - { key: build_type, value: Debug } + - { key: USE_STATIC_LIBS, value: "1" } + - func: setup + - func: start_mongod + vars: + mongodb_version: "5.0" + - func: fetch_c_driver_source + - func: compile + vars: + BSON_EXTRA_ALIGNMENT: 1 + - func: fetch-det + - func: run_kms_servers + - func: test + vars: + MONGOCXX_TEST_TOPOLOGY: single + TEST_WITH_VALGRIND: "ON" + disable_slow_tests: 1 + use_mongocryptd: true + - name: valgrind-ubuntu2004-shared-extra_alignment-latest-single + run_on: ubuntu2004-large + tags: [valgrind, ubuntu2004, shared, extra_alignment, latest, single] + commands: + - command: expansions.update + params: + updates: + - { key: build_type, value: Debug } + - func: setup + - func: start_mongod + vars: + mongodb_version: latest + - func: fetch_c_driver_source + - func: compile + vars: + BSON_EXTRA_ALIGNMENT: 1 + - func: fetch-det + - func: run_kms_servers + - func: test + vars: + MONGOCXX_TEST_TOPOLOGY: single + TEST_WITH_VALGRIND: "ON" + disable_slow_tests: 1 + use_mongocryptd: true + - name: valgrind-ubuntu2004-shared-latest-single + run_on: ubuntu2004-large + tags: [valgrind, ubuntu2004, shared, latest, single] + commands: + - command: expansions.update + params: + updates: + - { key: build_type, value: Debug } + - func: setup + - func: start_mongod + vars: + mongodb_version: latest + - func: fetch_c_driver_source + - func: compile + vars: + RUN_DISTCHECK: 1 + - func: fetch-det + - func: run_kms_servers + - func: test + vars: + MONGOCXX_TEST_TOPOLOGY: single + TEST_WITH_VALGRIND: "ON" + disable_slow_tests: 1 + use_mongocryptd: true + - name: valgrind-ubuntu2004-static-extra_alignment-latest-single + run_on: ubuntu2004-large + tags: [valgrind, ubuntu2004, static, extra_alignment, latest, single] + commands: + - command: expansions.update + params: + updates: + - { key: build_type, value: Debug } + - { key: USE_STATIC_LIBS, value: "1" } + - func: setup + - func: start_mongod + vars: + mongodb_version: latest + - func: fetch_c_driver_source + - func: compile + vars: + BSON_EXTRA_ALIGNMENT: 1 + - func: fetch-det + - func: run_kms_servers + - func: test + vars: + MONGOCXX_TEST_TOPOLOGY: single + TEST_WITH_VALGRIND: "ON" + disable_slow_tests: 1 + use_mongocryptd: true + - name: valgrind-ubuntu2004-static-latest-single + run_on: ubuntu2004-large + tags: [valgrind, ubuntu2004, static, latest, single] + commands: + - command: expansions.update + params: + updates: + - { key: build_type, value: Debug } + - { key: USE_STATIC_LIBS, value: "1" } + - func: setup + - func: start_mongod + vars: + mongodb_version: latest + - func: fetch_c_driver_source + - func: compile + vars: + RUN_DISTCHECK: 1 + - func: fetch-det + - func: run_kms_servers + - func: test + vars: + MONGOCXX_TEST_TOPOLOGY: single + TEST_WITH_VALGRIND: "ON" + disable_slow_tests: 1 + use_mongocryptd: true - name: versioned-api-one-required-macos-1100-release-shared-boost run_on: macos-1100 tags: [versioned-api, macos-1100, release, shared, boost] diff --git a/.evergreen/generated_configs/variants.yml b/.evergreen/generated_configs/variants.yml index 1b86e265a9..96808c8edc 100644 --- a/.evergreen/generated_configs/variants.yml +++ b/.evergreen/generated_configs/variants.yml @@ -100,6 +100,14 @@ buildvariants: - .uninstall-check tasks: - name: .uninstall-check + - name: valgrind-matrix + display_name: valgrind-matrix + display_tasks: + - name: valgrind-matrix + execution_tasks: + - .valgrind + tasks: + - name: .valgrind - name: versioned-api-matrix display_name: versioned-api-matrix display_tasks: diff --git a/.mci.yml b/.mci.yml index 1616e346cc..d9afa49a8f 100644 --- a/.mci.yml +++ b/.mci.yml @@ -847,38 +847,6 @@ buildvariants: - name: compile_and_test_with_shared_libs_sharded_cluster - name: build_example_with_add_subdirectory - - name: ubuntu2004-debug-valgrind-latest - display_name: "Valgrind Ubuntu 20.04 Debug (MongoDB Latest)" - expansions: - build_type: "Debug" - TEST_WITH_VALGRIND: "ON" - mongodb_version: "latest" - disable_slow_tests: 1 - use_mongocryptd: true # false positives arise from the crypt_shared library - run_on: - - ubuntu2004-build - tasks: - - name: compile_and_test_with_shared_libs - - name: compile_and_test_with_shared_libs_extra_alignment - - name: compile_and_test_with_static_libs - - name: compile_and_test_with_static_libs_extra_alignment - - - name: ubuntu1804-debug-valgrind-50 - display_name: "Valgrind Ubuntu 18.04 Debug (MongoDB 5.0)" - expansions: - build_type: "Debug" - TEST_WITH_VALGRIND: "ON" - mongodb_version: "5.0" - disable_slow_tests: 1 - use_mongocryptd: true - run_on: - - ubuntu1804-large - tasks: - - name: compile_and_test_with_shared_libs - - name: compile_and_test_with_shared_libs_extra_alignment - - name: compile_and_test_with_static_libs - - name: compile_and_test_with_static_libs_extra_alignment - - name: zseries-rhel83-latest display_name: "zSeries RHEL 8.3 (MongoDB Latest)" patchable: false From 1daefdd748d717dbfefd0382a0512772c77650df Mon Sep 17 00:00:00 2001 From: Ezra Chung Date: Tue, 29 Oct 2024 15:28:36 -0500 Subject: [PATCH 59/78] component: benchmarks --- .../config_generator/components/benchmarks.py | 96 +++++++++++++++++++ .../components/funcs/compile_benchmarks.py | 30 ------ .../components/funcs/run_benchmarks.py | 37 ------- .evergreen/generated_configs/functions.yml | 73 +++++++------- .evergreen/generated_configs/tasks.yml | 11 +++ .evergreen/generated_configs/variants.yml | 4 + .mci.yml | 16 ---- 7 files changed, 146 insertions(+), 121 deletions(-) create mode 100644 .evergreen/config_generator/components/benchmarks.py delete mode 100644 .evergreen/config_generator/components/funcs/compile_benchmarks.py delete mode 100644 .evergreen/config_generator/components/funcs/run_benchmarks.py diff --git a/.evergreen/config_generator/components/benchmarks.py b/.evergreen/config_generator/components/benchmarks.py new file mode 100644 index 0000000000..1d5e83d2f7 --- /dev/null +++ b/.evergreen/config_generator/components/benchmarks.py @@ -0,0 +1,96 @@ +from config_generator.components.funcs.setup import Setup +from config_generator.components.funcs.fetch_c_driver_source import FetchCDriverSource +from config_generator.components.funcs.start_mongod import StartMongod + +from config_generator.etc.function import Function, merge_defns +from config_generator.etc.utils import bash_exec + +from shrub.v3.evg_build_variant import BuildVariant +from shrub.v3.evg_command import BuiltInCommand, EvgCommandType +from shrub.v3.evg_task import EvgTask, EvgTaskRef + + +TAG = 'benchmarks' + + +class RunBenchmarks(Function): + name = 'benchmarks-run' + commands = [ + bash_exec( + command_type=EvgCommandType.SETUP, + working_dir='mongo-cxx-driver', + script='etc/microbenchmark-test-data.sh', + ), + bash_exec( + command_type=EvgCommandType.TEST, + working_dir='mongo-cxx-driver', + script='build/benchmark/microbenchmarks all', + ), + + BuiltInCommand( + command='perf.send', + type=EvgCommandType.SYSTEM, + params={ + 'name': 'perf', + 'file': 'mongo-cxx-driver/results.json', + } + ), + ] + + @classmethod + def call(cls, **kwargs): + return cls.default_call(**kwargs) + + +class CompileBenchmarks(Function): + name = 'benchmarks-compile' + commands = bash_exec( + command_type=EvgCommandType.SETUP, + working_dir='mongo-cxx-driver', + script='''\ + set -o errexit + set -o pipefail + cmake -S . -B build -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH="$(pwd)/../mongoc" -DCMAKE_CXX_STANDARD=20 + cmake --build build --target microbenchmarks --parallel 64 + ''' + ) + + @classmethod + def call(cls, **kwargs): + return cls.default_call(**kwargs) + + +def functions(): + return merge_defns( + CompileBenchmarks.defn(), + RunBenchmarks.defn(), + ) + + +def tasks(): + distro_name = 'rhel90-dbx-perf' + + return [ + EvgTask( + name=TAG, + tags=[TAG, distro_name], + run_on=f'{distro_name}-large', + commands=[ + Setup.call(), + StartMongod.call(mongodb_version='v6.0-perf', topology='single'), + FetchCDriverSource.call(), + CompileBenchmarks.call(), + RunBenchmarks.call(), + ], + ) + ] + + +def variants(): + return [ + BuildVariant( + name=TAG, + display_name=TAG, + tasks=[EvgTaskRef(name=f'.{TAG}')] + ), + ] diff --git a/.evergreen/config_generator/components/funcs/compile_benchmarks.py b/.evergreen/config_generator/components/funcs/compile_benchmarks.py deleted file mode 100644 index e14ac68536..0000000000 --- a/.evergreen/config_generator/components/funcs/compile_benchmarks.py +++ /dev/null @@ -1,30 +0,0 @@ -from shrub.v3.evg_command import EvgCommandType - -from config_generator.etc.function import Function -from config_generator.etc.utils import bash_exec - - -class CompileBenchmarks(Function): - name = 'compile_benchmarks' - commands = bash_exec( - command_type=EvgCommandType.SETUP, - env={ - 'CC': '${cc_compiler}', - 'CXX': '${cxx_compiler}', - }, - working_dir='mongo-cxx-driver', - script='''\ - set -o errexit - set -o pipefail - cmake -S . -B build -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH="$(pwd)/../mongoc" -DCMAKE_CXX_STANDARD=20 - cmake --build build --target microbenchmarks --parallel 64 - ''' - ) - - @classmethod - def call(cls, **kwargs): - return cls.default_call(**kwargs) - - -def functions(): - return CompileBenchmarks.defn() diff --git a/.evergreen/config_generator/components/funcs/run_benchmarks.py b/.evergreen/config_generator/components/funcs/run_benchmarks.py deleted file mode 100644 index 3a4ff658f3..0000000000 --- a/.evergreen/config_generator/components/funcs/run_benchmarks.py +++ /dev/null @@ -1,37 +0,0 @@ -from shrub.v3.evg_command import BuiltInCommand, EvgCommandType - -from config_generator.etc.function import Function -from config_generator.etc.utils import bash_exec - - -class RunBenchmarks(Function): - name = 'run benchmarks' - commands = [ - bash_exec( - command_type=EvgCommandType.SETUP, - working_dir='mongo-cxx-driver', - script='etc/microbenchmark-test-data.sh', - ), - bash_exec( - command_type=EvgCommandType.TEST, - working_dir='mongo-cxx-driver', - script='build/benchmark/microbenchmarks all', - ), - - BuiltInCommand( - command='perf.send', - type=EvgCommandType.SYSTEM, - params={ - 'name': 'perf', - 'file': 'mongo-cxx-driver/results.json', - } - ), - ] - - @classmethod - def call(cls, **kwargs): - return cls.default_call(**kwargs) - - -def functions(): - return RunBenchmarks.defn() diff --git a/.evergreen/generated_configs/functions.yml b/.evergreen/generated_configs/functions.yml index 5c913d990b..7dcc31294f 100644 --- a/.evergreen/generated_configs/functions.yml +++ b/.evergreen/generated_configs/functions.yml @@ -112,6 +112,41 @@ functions: args: - -c - etc/debug-core-evergreen.sh + benchmarks-compile: + command: subprocess.exec + type: setup + params: + binary: bash + working_dir: mongo-cxx-driver + args: + - -c + - | + set -o errexit + set -o pipefail + cmake -S . -B build -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH="$(pwd)/../mongoc" -DCMAKE_CXX_STANDARD=20 + cmake --build build --target microbenchmarks --parallel 64 + benchmarks-run: + - command: subprocess.exec + type: setup + params: + binary: bash + working_dir: mongo-cxx-driver + args: + - -c + - etc/microbenchmark-test-data.sh + - command: subprocess.exec + type: test + params: + binary: bash + working_dir: mongo-cxx-driver + args: + - -c + - build/benchmark/microbenchmarks all + - command: perf.send + type: system + params: + name: perf + file: mongo-cxx-driver/results.json build-package-debian: - command: subprocess.exec type: test @@ -244,22 +279,6 @@ functions: args: - -c - .evergreen/scripts/compile.sh - compile_benchmarks: - command: subprocess.exec - type: setup - params: - binary: bash - working_dir: mongo-cxx-driver - env: - CC: ${cc_compiler} - CXX: ${cxx_compiler} - args: - - -c - - | - set -o errexit - set -o pipefail - cmake -S . -B build -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH="$(pwd)/../mongoc" -DCMAKE_CXX_STANDARD=20 - cmake --build build --target microbenchmarks --parallel 64 docker-image-build: command: subprocess.exec type: test @@ -327,28 +346,6 @@ functions: args: - -c - python etc/clang_format.py lint - run benchmarks: - - command: subprocess.exec - type: setup - params: - binary: bash - working_dir: mongo-cxx-driver - args: - - -c - - etc/microbenchmark-test-data.sh - - command: subprocess.exec - type: test - params: - binary: bash - working_dir: mongo-cxx-driver - args: - - -c - - build/benchmark/microbenchmarks all - - command: perf.send - type: system - params: - name: perf - file: mongo-cxx-driver/results.json run scan build: - command: subprocess.exec type: test diff --git a/.evergreen/generated_configs/tasks.yml b/.evergreen/generated_configs/tasks.yml index 0df4f57ed3..9a08e3c770 100644 --- a/.evergreen/generated_configs/tasks.yml +++ b/.evergreen/generated_configs/tasks.yml @@ -32,6 +32,17 @@ tasks: vars: build_type: Debug - func: test-search-index-helpers + - name: benchmarks + run_on: rhel90-dbx-perf-large + tags: [benchmarks, rhel90-dbx-perf] + commands: + - func: setup + - func: start_mongod + vars: + mongodb_version: v6.0-perf + - func: fetch_c_driver_source + - func: benchmarks-compile + - func: benchmarks-run - name: clang-tidy run_on: ubuntu2004-small tags: [clang-tidy, ubuntu2004] diff --git a/.evergreen/generated_configs/variants.yml b/.evergreen/generated_configs/variants.yml index 96808c8edc..d938f05c0d 100644 --- a/.evergreen/generated_configs/variants.yml +++ b/.evergreen/generated_configs/variants.yml @@ -28,6 +28,10 @@ buildvariants: tasks: - name: tg-atlas-search-indexes-7.0 - name: tg-atlas-search-indexes-8.0 + - name: benchmarks + display_name: benchmarks + tasks: + - name: .benchmarks - name: clang-tidy display_name: Clang Tidy tasks: diff --git a/.mci.yml b/.mci.yml index d9afa49a8f..529ed3876d 100644 --- a/.mci.yml +++ b/.mci.yml @@ -99,14 +99,6 @@ tasks: MONGOCXX_TEST_TOPOLOGY: single REQUIRED_CXX_STANDARD: 20 - - name: compile_and_run_benchmarks - commands: - - func: "setup" - - func: "start_mongod" - - func: "fetch_c_driver_source" - - func: "compile_benchmarks" - - func: "run benchmarks" - - name: compile_and_test_auth_with_shared_libs commands: - func: "setup" @@ -720,14 +712,6 @@ buildvariants: - name: compile_and_test_with_shared_libs_sharded_cluster_with_libmongocrypt - name: build_example_with_add_subdirectory - - name: benchmarks-rhel9 - display_name: "Benchmarks (RHEL 9.2)" - expansions: - mongodb_version: "v6.0-perf" - run_on: rhel90-dbx-perf-large - tasks: - - name: compile_and_run_benchmarks - - name: arm-rhel9-release-latest display_name: "arm64 RHEL 9 Release (MongoDB Latest)" expansions: From c1ae3574d511de95c08dfeb664ebc9e6ee940c86 Mon Sep 17 00:00:00 2001 From: Ezra Chung Date: Tue, 29 Oct 2024 15:28:37 -0500 Subject: [PATCH 60/78] component: integration --- .../components/integration.py | 204 + .evergreen/generated_configs/tasks.yml | 3532 +++++++++++++++++ .evergreen/generated_configs/variants.yml | 8 + .mci.yml | 965 +---- 4 files changed, 3750 insertions(+), 959 deletions(-) create mode 100644 .evergreen/config_generator/components/integration.py diff --git a/.evergreen/config_generator/components/integration.py b/.evergreen/config_generator/components/integration.py new file mode 100644 index 0000000000..abcf28944b --- /dev/null +++ b/.evergreen/config_generator/components/integration.py @@ -0,0 +1,204 @@ +from config_generator.components.funcs.compile import Compile +from config_generator.components.funcs.fetch_c_driver_source import FetchCDriverSource +from config_generator.components.funcs.fetch_det import FetchDET +from config_generator.components.funcs.install_c_driver import InstallCDriver +from config_generator.components.funcs.run_kms_servers import RunKMSServers +from config_generator.components.funcs.setup import Setup +from config_generator.components.funcs.start_mongod import StartMongod +from config_generator.components.funcs.test import Test + +from config_generator.etc.distros import compiler_to_vars, find_large_distro, make_distro_str +from config_generator.etc.utils import TaskRef + +from shrub.v3.evg_build_variant import BuildVariant, DisplayTask +from shrub.v3.evg_command import KeyValueParam, expansions_update +from shrub.v3.evg_task import EvgTask, EvgTaskRef + +from itertools import product + + +TAG = 'integration' + + +# pylint: disable=line-too-long +# fmt: off +MATRIX = [ + ('debian10', None, ['Release'], ['shared', 'static'], [None], [None], ['plain'], [False, True], ['5.0'], ['single', ]), + ('debian10', None, ['Release'], ['shared', ], [None], [None], ['plain'], [False, ], ['5.0'], [ 'replica', 'sharded']), + + ('debian11', None, ['Release'], ['shared', 'static'], [None, ], [None], ['plain'], [False, True], ['5.0'], ['single', ]), + ('debian11', None, ['Release'], ['shared', ], [ 20], [None], ['plain'], [False, True], ['5.0'], ['single', ]), + ('debian11', None, ['Release'], ['shared', ], [None, ], [None], ['plain'], [False, ], ['5.0'], [ 'replica', 'sharded']), + + ('debian12', None, ['Release'], ['shared', 'static'], [None, ], [None], ['plain', ], [False, True], ['latest'], ['single', ]), + ('debian12', None, ['Release'], ['shared', ], [ 20], [None], ['plain', ], [False, True], ['latest'], ['single', ]), + ('debian12', None, ['Release'], ['shared', ], [None, ], [None], [ 'csfle'], [False, ], ['latest'], [ 'replica', 'sharded']), + + ('macos-1100', None, ['Release'], ['shared', 'static'], [None], ['boost'], ['plain'], [False, True], ['5.0', 'latest'], ['single']), + + ('rhel81-power8', None, ['Release'], ['shared', 'static'], [None], [None], ['plain'], [False, True], ['5.0', 'latest'], ['single']), + ('rhel83-zseries', None, ['Release'], ['shared', 'static'], [None], [None], ['plain'], [False, True], ['5.0', '6.0', 'latest'], ['single']), + + ('rhel90', None, ['Release'], ['shared', 'static'], [None, ], [None], ['plain', ], [False, True], ['latest'], ['single', ]), + ('rhel90', None, ['Release'], ['shared', ], [ 20], [None], ['plain', ], [False, True], ['latest'], ['single', ]), + ('rhel90', None, ['Release'], ['shared', ], [None, ], [None], [ 'csfle'], [False, ], ['latest'], [ 'replica', 'sharded']), + + ('rhel90-arm64', None, ['Release'], ['shared', 'static'], [None, ], [None], ['plain', ], [False, True], ['latest'], ['single', ]), + ('rhel90-arm64', None, ['Release'], ['shared', ], [ 20], [None], ['plain', ], [False, True], ['latest'], ['single', ]), + ('rhel90-arm64', None, ['Release'], ['shared', ], [None, ], [None], [ 'csfle'], [False, ], ['latest'], [ 'replica', 'sharded']), + + ('ubuntu1804', None, ['Debug', ], ['shared'], [None], [None], ['plain', ], [False, True], ['4.0', '4.2', '4.4', '5.0', '6.0'], ['single', ]), + ('ubuntu1804', None, ['Debug', ], ['shared'], [None], [None], [ 'csfle', ], [False, ], ['4.0', '4.2', '4.4', '5.0', '6.0'], [ 'replica', 'sharded']), + ('ubuntu1804', None, ['Debug', ], ['shared'], [None], [None], [ 'crypt'], [False, ], [ '4.2', '4.4', '5.0', ], [ 'replica', 'sharded']), + ('ubuntu1804', None, [ 'Release'], ['shared'], [None], [None], ['plain', ], [False, ], [ '5.0', ], [ 'replica', 'sharded']), + + ('ubuntu1804-arm64', None, ['Release'], ['shared', 'static'], [None], [None], ['plain'], [False, True], ['5.0'], ['single']), + + ('ubuntu2004', None, ['Debug', ], ['shared', ], [None], [None], ['plain', ], [False, True], [ '7.0', '8.0', 'latest'], ['single', ]), + ('ubuntu2004', None, ['Debug', ], ['shared', ], [None], [None], [ 'csfle', ], [False, ], [ '7.0', '8.0', 'latest'], [ 'replica', 'sharded']), + ('ubuntu2004', None, ['Debug', ], ['shared', ], [None], [None], [ 'crypt'], [False, ], [ 'latest'], [ 'replica', 'sharded']), + ('ubuntu2004', None, [ 'Release'], ['shared', 'static'], [None], [None], ['plain', ], [False, True], ['5.0', 'latest'], ['single', ]), + ('ubuntu2004', None, [ 'Release'], ['shared', ], [None], [None], [ 'csfle', ], [False, ], ['5.0', 'latest'], [ 'replica', 'sharded']), + ('ubuntu2004', None, [ 'Release'], ['shared', ], [None], [None], ['plain', ], [False, ], ['5.0', ], [ 'replica', 'sharded']), + + ('ubuntu2004-arm64', None, ['Release'], ['shared', 'static'], [None], [None], ['plain'], [False, True], ['latest'], ['single']), + + ('windows-vsCurrent', 'vs2019x64', ['Debug'], ['shared'], [None], [None], ['plain'], [False, True], ['4.0', '4.2', '4.4', '5.0', '6.0', '7.0', '8.0', 'latest'], ['single']), +] +# fmt: on +# pylint: enable=line-too-long + + +def tasks(): + res = [] + + for distro_name, compiler, build_types, link_types, cxx_standards, polyfills, with_csfles, with_extra_aligns, mongodb_versions, topologies in MATRIX: + for build_type, link_type, cxx_standard, polyfill, with_csfle, with_extra_align, mongodb_version, topology in product( + build_types, link_types, cxx_standards, polyfills, with_csfles, with_extra_aligns, mongodb_versions, topologies, + ): + name = f'{TAG}-{make_distro_str(distro_name, compiler, None)}-{build_type.lower()}-{link_type}' + tags = [TAG, distro_name, build_type.lower(), link_type] + + if cxx_standard is not None: + name += f'-cxx{cxx_standard}' + tags += [f'cxx{cxx_standard}'] + + if polyfill is not None: + name += f'-{polyfill}' + tags += [polyfill] + + if with_csfle in ['csfle', 'crypt']: + name += '-csfle' + tags += ['csfle'] + + if with_extra_align: + name += '-extra_alignment' + tags += ['extra_alignment'] + + name += f'-{mongodb_version}-{topology}' + tags += [mongodb_version, topology] + + if with_csfle == 'crypt': + name += '-mongocryptd' + tags += ['mongocryptd'] + + distro = find_large_distro(distro_name) + + updates = [] + icd_vars = {'BSON_EXTRA_ALIGNMENT': 1} if with_extra_align else {} + compile_vars = {'BSON_EXTRA_ALIGNMENT': 1} if with_extra_align else {'RUN_DISTCHECK': 1} + test_vars = {'MONGOCXX_TEST_TOPOLOGY': topology} + + updates += [KeyValueParam(key='build_type', value=build_type)] + updates += [KeyValueParam(key=key, value=value) for key, value in compiler_to_vars(compiler).items()] + + if distro.os_type == 'windows': + test_vars |= {'example_projects_cxx_standard': 17} + + if build_type == 'Debug' and distro.os in ['ubuntu1804', 'ubuntu2004']: + updates += [KeyValueParam(key='ENABLE_CODE_COVERAGE', value='ON')] + + if 'rhel' in distro.os: + test_vars |= {'lib_dir': 'lib64'} + + if link_type == 'static': + compile_vars |= {'USE_STATIC_LIBS': 1} + test_vars |= {'USE_STATIC_LIBS': 1} + + if cxx_standard is not None: + compile_vars |= {'REQUIRED_CXX_STANDARD': cxx_standard} + test_vars |= { + 'example_projects_cxx_standard': cxx_standard, + 'REQUIRED_CXX_STANDARD': cxx_standard, + } + + commands = [expansions_update(updates=updates)] if updates else [] + + match with_csfle: + case 'plain': + commands += [ + Setup.call(), + StartMongod.call(mongodb_version=mongodb_version, topology=topology), + FetchCDriverSource.call(), + Compile.call(polyfill=polyfill, vars=compile_vars), + FetchDET.call(), + RunKMSServers.call(), + InstallCDriver.call(vars=icd_vars), + Test.call(vars=test_vars), + ] + case 'csfle': + commands += [ + Setup.call(), + StartMongod.call(mongodb_version=mongodb_version, topology=topology), + InstallCDriver.call(vars=icd_vars), + Compile.call(polyfill=polyfill, vars=compile_vars), + FetchDET.call(), + RunKMSServers.call(), + Test.call(vars=test_vars), + ] + case 'crypt': + commands += [ + Setup.call(), + StartMongod.call(mongodb_version=mongodb_version, topology=topology), + InstallCDriver.call(vars=icd_vars), + Compile.call(polyfill=polyfill, vars=compile_vars), + FetchDET.call(), + RunKMSServers.call(), + Test.call(vars=test_vars | {'use_mongocryptd': True}), + ] + + # PowerPC and zSeries are limited resources. + patchable = False if any(pattern in distro_name for pattern in ['power8', 'zseries']) else None + + res.append( + EvgTask( + name=name, + tags=tags, + run_on=distro.name, + patchable=patchable, + commands=commands, + ) + ) + + return res + + +def variants(): + tasks = [] + + one_day = 1440 # Seconds. + + # PowerPC and zSeries are limited resources. + tasks = [ + TaskRef(name=f'.{TAG} .rhel81-power8', batchtime=one_day), + TaskRef(name=f'.{TAG} .rhel83-zseries', batchtime=one_day), + EvgTaskRef(name=f'.{TAG} !.rhel81-power8 !.rhel83-zseries'), + ] + + return [ + BuildVariant( + name=f'{TAG}-matrix', + display_name=f'{TAG}-matrix', + tasks=tasks, + ), + ] diff --git a/.evergreen/generated_configs/tasks.yml b/.evergreen/generated_configs/tasks.yml index 9a08e3c770..9ec2c589ed 100644 --- a/.evergreen/generated_configs/tasks.yml +++ b/.evergreen/generated_configs/tasks.yml @@ -159,6 +159,3538 @@ tasks: commands: - func: setup - func: docker-image-build + - name: integration-debian10-release-shared-5.0-replica + run_on: debian10-large + tags: [integration, debian10, release, shared, "5.0", replica] + commands: + - command: expansions.update + params: + updates: + - { key: build_type, value: Release } + - func: setup + - func: start_mongod + vars: + TOPOLOGY: replica_set + mongodb_version: "5.0" + - func: fetch_c_driver_source + - func: compile + vars: + RUN_DISTCHECK: 1 + - func: fetch-det + - func: run_kms_servers + - func: install_c_driver + - func: test + vars: + MONGOCXX_TEST_TOPOLOGY: replica + - name: integration-debian10-release-shared-5.0-sharded + run_on: debian10-large + tags: [integration, debian10, release, shared, "5.0", sharded] + commands: + - command: expansions.update + params: + updates: + - { key: build_type, value: Release } + - func: setup + - func: start_mongod + vars: + TOPOLOGY: sharded_cluster + mongodb_version: "5.0" + - func: fetch_c_driver_source + - func: compile + vars: + RUN_DISTCHECK: 1 + - func: fetch-det + - func: run_kms_servers + - func: install_c_driver + - func: test + vars: + MONGOCXX_TEST_TOPOLOGY: sharded + - name: integration-debian10-release-shared-5.0-single + run_on: debian10-large + tags: [integration, debian10, release, shared, "5.0", single] + commands: + - command: expansions.update + params: + updates: + - { key: build_type, value: Release } + - func: setup + - func: start_mongod + vars: + mongodb_version: "5.0" + - func: fetch_c_driver_source + - func: compile + vars: + RUN_DISTCHECK: 1 + - func: fetch-det + - func: run_kms_servers + - func: install_c_driver + - func: test + vars: + MONGOCXX_TEST_TOPOLOGY: single + - name: integration-debian10-release-shared-extra_alignment-5.0-single + run_on: debian10-large + tags: [integration, debian10, release, shared, extra_alignment, "5.0", single] + commands: + - command: expansions.update + params: + updates: + - { key: build_type, value: Release } + - func: setup + - func: start_mongod + vars: + mongodb_version: "5.0" + - func: fetch_c_driver_source + - func: compile + vars: + BSON_EXTRA_ALIGNMENT: 1 + - func: fetch-det + - func: run_kms_servers + - func: install_c_driver + vars: + BSON_EXTRA_ALIGNMENT: 1 + - func: test + vars: + MONGOCXX_TEST_TOPOLOGY: single + - name: integration-debian10-release-static-5.0-single + run_on: debian10-large + tags: [integration, debian10, release, static, "5.0", single] + commands: + - command: expansions.update + params: + updates: + - { key: build_type, value: Release } + - func: setup + - func: start_mongod + vars: + mongodb_version: "5.0" + - func: fetch_c_driver_source + - func: compile + vars: + RUN_DISTCHECK: 1 + USE_STATIC_LIBS: 1 + - func: fetch-det + - func: run_kms_servers + - func: install_c_driver + - func: test + vars: + MONGOCXX_TEST_TOPOLOGY: single + USE_STATIC_LIBS: 1 + - name: integration-debian10-release-static-extra_alignment-5.0-single + run_on: debian10-large + tags: [integration, debian10, release, static, extra_alignment, "5.0", single] + commands: + - command: expansions.update + params: + updates: + - { key: build_type, value: Release } + - func: setup + - func: start_mongod + vars: + mongodb_version: "5.0" + - func: fetch_c_driver_source + - func: compile + vars: + BSON_EXTRA_ALIGNMENT: 1 + USE_STATIC_LIBS: 1 + - func: fetch-det + - func: run_kms_servers + - func: install_c_driver + vars: + BSON_EXTRA_ALIGNMENT: 1 + - func: test + vars: + MONGOCXX_TEST_TOPOLOGY: single + USE_STATIC_LIBS: 1 + - name: integration-debian11-release-shared-5.0-replica + run_on: debian11-large + tags: [integration, debian11, release, shared, "5.0", replica] + commands: + - command: expansions.update + params: + updates: + - { key: build_type, value: Release } + - func: setup + - func: start_mongod + vars: + TOPOLOGY: replica_set + mongodb_version: "5.0" + - func: fetch_c_driver_source + - func: compile + vars: + RUN_DISTCHECK: 1 + - func: fetch-det + - func: run_kms_servers + - func: install_c_driver + - func: test + vars: + MONGOCXX_TEST_TOPOLOGY: replica + - name: integration-debian11-release-shared-5.0-sharded + run_on: debian11-large + tags: [integration, debian11, release, shared, "5.0", sharded] + commands: + - command: expansions.update + params: + updates: + - { key: build_type, value: Release } + - func: setup + - func: start_mongod + vars: + TOPOLOGY: sharded_cluster + mongodb_version: "5.0" + - func: fetch_c_driver_source + - func: compile + vars: + RUN_DISTCHECK: 1 + - func: fetch-det + - func: run_kms_servers + - func: install_c_driver + - func: test + vars: + MONGOCXX_TEST_TOPOLOGY: sharded + - name: integration-debian11-release-shared-5.0-single + run_on: debian11-large + tags: [integration, debian11, release, shared, "5.0", single] + commands: + - command: expansions.update + params: + updates: + - { key: build_type, value: Release } + - func: setup + - func: start_mongod + vars: + mongodb_version: "5.0" + - func: fetch_c_driver_source + - func: compile + vars: + RUN_DISTCHECK: 1 + - func: fetch-det + - func: run_kms_servers + - func: install_c_driver + - func: test + vars: + MONGOCXX_TEST_TOPOLOGY: single + - name: integration-debian11-release-shared-cxx20-5.0-single + run_on: debian11-large + tags: [integration, debian11, release, shared, cxx20, "5.0", single] + commands: + - command: expansions.update + params: + updates: + - { key: build_type, value: Release } + - func: setup + - func: start_mongod + vars: + mongodb_version: "5.0" + - func: fetch_c_driver_source + - func: compile + vars: + REQUIRED_CXX_STANDARD: 20 + RUN_DISTCHECK: 1 + - func: fetch-det + - func: run_kms_servers + - func: install_c_driver + - func: test + vars: + MONGOCXX_TEST_TOPOLOGY: single + REQUIRED_CXX_STANDARD: 20 + example_projects_cxx_standard: 20 + - name: integration-debian11-release-shared-cxx20-extra_alignment-5.0-single + run_on: debian11-large + tags: [integration, debian11, release, shared, cxx20, extra_alignment, "5.0", single] + commands: + - command: expansions.update + params: + updates: + - { key: build_type, value: Release } + - func: setup + - func: start_mongod + vars: + mongodb_version: "5.0" + - func: fetch_c_driver_source + - func: compile + vars: + BSON_EXTRA_ALIGNMENT: 1 + REQUIRED_CXX_STANDARD: 20 + - func: fetch-det + - func: run_kms_servers + - func: install_c_driver + vars: + BSON_EXTRA_ALIGNMENT: 1 + - func: test + vars: + MONGOCXX_TEST_TOPOLOGY: single + REQUIRED_CXX_STANDARD: 20 + example_projects_cxx_standard: 20 + - name: integration-debian11-release-shared-extra_alignment-5.0-single + run_on: debian11-large + tags: [integration, debian11, release, shared, extra_alignment, "5.0", single] + commands: + - command: expansions.update + params: + updates: + - { key: build_type, value: Release } + - func: setup + - func: start_mongod + vars: + mongodb_version: "5.0" + - func: fetch_c_driver_source + - func: compile + vars: + BSON_EXTRA_ALIGNMENT: 1 + - func: fetch-det + - func: run_kms_servers + - func: install_c_driver + vars: + BSON_EXTRA_ALIGNMENT: 1 + - func: test + vars: + MONGOCXX_TEST_TOPOLOGY: single + - name: integration-debian11-release-static-5.0-single + run_on: debian11-large + tags: [integration, debian11, release, static, "5.0", single] + commands: + - command: expansions.update + params: + updates: + - { key: build_type, value: Release } + - func: setup + - func: start_mongod + vars: + mongodb_version: "5.0" + - func: fetch_c_driver_source + - func: compile + vars: + RUN_DISTCHECK: 1 + USE_STATIC_LIBS: 1 + - func: fetch-det + - func: run_kms_servers + - func: install_c_driver + - func: test + vars: + MONGOCXX_TEST_TOPOLOGY: single + USE_STATIC_LIBS: 1 + - name: integration-debian11-release-static-extra_alignment-5.0-single + run_on: debian11-large + tags: [integration, debian11, release, static, extra_alignment, "5.0", single] + commands: + - command: expansions.update + params: + updates: + - { key: build_type, value: Release } + - func: setup + - func: start_mongod + vars: + mongodb_version: "5.0" + - func: fetch_c_driver_source + - func: compile + vars: + BSON_EXTRA_ALIGNMENT: 1 + USE_STATIC_LIBS: 1 + - func: fetch-det + - func: run_kms_servers + - func: install_c_driver + vars: + BSON_EXTRA_ALIGNMENT: 1 + - func: test + vars: + MONGOCXX_TEST_TOPOLOGY: single + USE_STATIC_LIBS: 1 + - name: integration-debian12-release-shared-csfle-latest-replica + run_on: debian12-large + tags: [integration, debian12, release, shared, csfle, latest, replica] + commands: + - command: expansions.update + params: + updates: + - { key: build_type, value: Release } + - func: setup + - func: start_mongod + vars: + TOPOLOGY: replica_set + mongodb_version: latest + - func: install_c_driver + - func: compile + vars: + RUN_DISTCHECK: 1 + - func: fetch-det + - func: run_kms_servers + - func: test + vars: + MONGOCXX_TEST_TOPOLOGY: replica + - name: integration-debian12-release-shared-csfle-latest-sharded + run_on: debian12-large + tags: [integration, debian12, release, shared, csfle, latest, sharded] + commands: + - command: expansions.update + params: + updates: + - { key: build_type, value: Release } + - func: setup + - func: start_mongod + vars: + TOPOLOGY: sharded_cluster + mongodb_version: latest + - func: install_c_driver + - func: compile + vars: + RUN_DISTCHECK: 1 + - func: fetch-det + - func: run_kms_servers + - func: test + vars: + MONGOCXX_TEST_TOPOLOGY: sharded + - name: integration-debian12-release-shared-cxx20-extra_alignment-latest-single + run_on: debian12-large + tags: [integration, debian12, release, shared, cxx20, extra_alignment, latest, single] + commands: + - command: expansions.update + params: + updates: + - { key: build_type, value: Release } + - func: setup + - func: start_mongod + vars: + mongodb_version: latest + - func: fetch_c_driver_source + - func: compile + vars: + BSON_EXTRA_ALIGNMENT: 1 + REQUIRED_CXX_STANDARD: 20 + - func: fetch-det + - func: run_kms_servers + - func: install_c_driver + vars: + BSON_EXTRA_ALIGNMENT: 1 + - func: test + vars: + MONGOCXX_TEST_TOPOLOGY: single + REQUIRED_CXX_STANDARD: 20 + example_projects_cxx_standard: 20 + - name: integration-debian12-release-shared-cxx20-latest-single + run_on: debian12-large + tags: [integration, debian12, release, shared, cxx20, latest, single] + commands: + - command: expansions.update + params: + updates: + - { key: build_type, value: Release } + - func: setup + - func: start_mongod + vars: + mongodb_version: latest + - func: fetch_c_driver_source + - func: compile + vars: + REQUIRED_CXX_STANDARD: 20 + RUN_DISTCHECK: 1 + - func: fetch-det + - func: run_kms_servers + - func: install_c_driver + - func: test + vars: + MONGOCXX_TEST_TOPOLOGY: single + REQUIRED_CXX_STANDARD: 20 + example_projects_cxx_standard: 20 + - name: integration-debian12-release-shared-extra_alignment-latest-single + run_on: debian12-large + tags: [integration, debian12, release, shared, extra_alignment, latest, single] + commands: + - command: expansions.update + params: + updates: + - { key: build_type, value: Release } + - func: setup + - func: start_mongod + vars: + mongodb_version: latest + - func: fetch_c_driver_source + - func: compile + vars: + BSON_EXTRA_ALIGNMENT: 1 + - func: fetch-det + - func: run_kms_servers + - func: install_c_driver + vars: + BSON_EXTRA_ALIGNMENT: 1 + - func: test + vars: + MONGOCXX_TEST_TOPOLOGY: single + - name: integration-debian12-release-shared-latest-single + run_on: debian12-large + tags: [integration, debian12, release, shared, latest, single] + commands: + - command: expansions.update + params: + updates: + - { key: build_type, value: Release } + - func: setup + - func: start_mongod + vars: + mongodb_version: latest + - func: fetch_c_driver_source + - func: compile + vars: + RUN_DISTCHECK: 1 + - func: fetch-det + - func: run_kms_servers + - func: install_c_driver + - func: test + vars: + MONGOCXX_TEST_TOPOLOGY: single + - name: integration-debian12-release-static-extra_alignment-latest-single + run_on: debian12-large + tags: [integration, debian12, release, static, extra_alignment, latest, single] + commands: + - command: expansions.update + params: + updates: + - { key: build_type, value: Release } + - func: setup + - func: start_mongod + vars: + mongodb_version: latest + - func: fetch_c_driver_source + - func: compile + vars: + BSON_EXTRA_ALIGNMENT: 1 + USE_STATIC_LIBS: 1 + - func: fetch-det + - func: run_kms_servers + - func: install_c_driver + vars: + BSON_EXTRA_ALIGNMENT: 1 + - func: test + vars: + MONGOCXX_TEST_TOPOLOGY: single + USE_STATIC_LIBS: 1 + - name: integration-debian12-release-static-latest-single + run_on: debian12-large + tags: [integration, debian12, release, static, latest, single] + commands: + - command: expansions.update + params: + updates: + - { key: build_type, value: Release } + - func: setup + - func: start_mongod + vars: + mongodb_version: latest + - func: fetch_c_driver_source + - func: compile + vars: + RUN_DISTCHECK: 1 + USE_STATIC_LIBS: 1 + - func: fetch-det + - func: run_kms_servers + - func: install_c_driver + - func: test + vars: + MONGOCXX_TEST_TOPOLOGY: single + USE_STATIC_LIBS: 1 + - name: integration-macos-1100-release-shared-boost-5.0-single + run_on: macos-1100 + tags: [integration, macos-1100, release, shared, boost, "5.0", single] + commands: + - command: expansions.update + params: + updates: + - { key: build_type, value: Release } + - func: setup + - func: start_mongod + vars: + mongodb_version: "5.0" + - func: fetch_c_driver_source + - func: compile + vars: + BSONCXX_POLYFILL: boost + RUN_DISTCHECK: 1 + - func: fetch-det + - func: run_kms_servers + - func: install_c_driver + - func: test + vars: + MONGOCXX_TEST_TOPOLOGY: single + - name: integration-macos-1100-release-shared-boost-extra_alignment-5.0-single + run_on: macos-1100 + tags: [integration, macos-1100, release, shared, boost, extra_alignment, "5.0", single] + commands: + - command: expansions.update + params: + updates: + - { key: build_type, value: Release } + - func: setup + - func: start_mongod + vars: + mongodb_version: "5.0" + - func: fetch_c_driver_source + - func: compile + vars: + BSONCXX_POLYFILL: boost + BSON_EXTRA_ALIGNMENT: 1 + - func: fetch-det + - func: run_kms_servers + - func: install_c_driver + vars: + BSON_EXTRA_ALIGNMENT: 1 + - func: test + vars: + MONGOCXX_TEST_TOPOLOGY: single + - name: integration-macos-1100-release-shared-boost-extra_alignment-latest-single + run_on: macos-1100 + tags: [integration, macos-1100, release, shared, boost, extra_alignment, latest, single] + commands: + - command: expansions.update + params: + updates: + - { key: build_type, value: Release } + - func: setup + - func: start_mongod + vars: + mongodb_version: latest + - func: fetch_c_driver_source + - func: compile + vars: + BSONCXX_POLYFILL: boost + BSON_EXTRA_ALIGNMENT: 1 + - func: fetch-det + - func: run_kms_servers + - func: install_c_driver + vars: + BSON_EXTRA_ALIGNMENT: 1 + - func: test + vars: + MONGOCXX_TEST_TOPOLOGY: single + - name: integration-macos-1100-release-shared-boost-latest-single + run_on: macos-1100 + tags: [integration, macos-1100, release, shared, boost, latest, single] + commands: + - command: expansions.update + params: + updates: + - { key: build_type, value: Release } + - func: setup + - func: start_mongod + vars: + mongodb_version: latest + - func: fetch_c_driver_source + - func: compile + vars: + BSONCXX_POLYFILL: boost + RUN_DISTCHECK: 1 + - func: fetch-det + - func: run_kms_servers + - func: install_c_driver + - func: test + vars: + MONGOCXX_TEST_TOPOLOGY: single + - name: integration-macos-1100-release-static-boost-5.0-single + run_on: macos-1100 + tags: [integration, macos-1100, release, static, boost, "5.0", single] + commands: + - command: expansions.update + params: + updates: + - { key: build_type, value: Release } + - func: setup + - func: start_mongod + vars: + mongodb_version: "5.0" + - func: fetch_c_driver_source + - func: compile + vars: + BSONCXX_POLYFILL: boost + RUN_DISTCHECK: 1 + USE_STATIC_LIBS: 1 + - func: fetch-det + - func: run_kms_servers + - func: install_c_driver + - func: test + vars: + MONGOCXX_TEST_TOPOLOGY: single + USE_STATIC_LIBS: 1 + - name: integration-macos-1100-release-static-boost-extra_alignment-5.0-single + run_on: macos-1100 + tags: [integration, macos-1100, release, static, boost, extra_alignment, "5.0", single] + commands: + - command: expansions.update + params: + updates: + - { key: build_type, value: Release } + - func: setup + - func: start_mongod + vars: + mongodb_version: "5.0" + - func: fetch_c_driver_source + - func: compile + vars: + BSONCXX_POLYFILL: boost + BSON_EXTRA_ALIGNMENT: 1 + USE_STATIC_LIBS: 1 + - func: fetch-det + - func: run_kms_servers + - func: install_c_driver + vars: + BSON_EXTRA_ALIGNMENT: 1 + - func: test + vars: + MONGOCXX_TEST_TOPOLOGY: single + USE_STATIC_LIBS: 1 + - name: integration-macos-1100-release-static-boost-extra_alignment-latest-single + run_on: macos-1100 + tags: [integration, macos-1100, release, static, boost, extra_alignment, latest, single] + commands: + - command: expansions.update + params: + updates: + - { key: build_type, value: Release } + - func: setup + - func: start_mongod + vars: + mongodb_version: latest + - func: fetch_c_driver_source + - func: compile + vars: + BSONCXX_POLYFILL: boost + BSON_EXTRA_ALIGNMENT: 1 + USE_STATIC_LIBS: 1 + - func: fetch-det + - func: run_kms_servers + - func: install_c_driver + vars: + BSON_EXTRA_ALIGNMENT: 1 + - func: test + vars: + MONGOCXX_TEST_TOPOLOGY: single + USE_STATIC_LIBS: 1 + - name: integration-macos-1100-release-static-boost-latest-single + run_on: macos-1100 + tags: [integration, macos-1100, release, static, boost, latest, single] + commands: + - command: expansions.update + params: + updates: + - { key: build_type, value: Release } + - func: setup + - func: start_mongod + vars: + mongodb_version: latest + - func: fetch_c_driver_source + - func: compile + vars: + BSONCXX_POLYFILL: boost + RUN_DISTCHECK: 1 + USE_STATIC_LIBS: 1 + - func: fetch-det + - func: run_kms_servers + - func: install_c_driver + - func: test + vars: + MONGOCXX_TEST_TOPOLOGY: single + USE_STATIC_LIBS: 1 + - name: integration-rhel81-power8-release-shared-5.0-single + run_on: rhel81-power8-large + tags: [integration, rhel81-power8, release, shared, "5.0", single] + patchable: false + commands: + - command: expansions.update + params: + updates: + - { key: build_type, value: Release } + - func: setup + - func: start_mongod + vars: + mongodb_version: "5.0" + - func: fetch_c_driver_source + - func: compile + vars: + RUN_DISTCHECK: 1 + - func: fetch-det + - func: run_kms_servers + - func: install_c_driver + - func: test + vars: + MONGOCXX_TEST_TOPOLOGY: single + lib_dir: lib64 + - name: integration-rhel81-power8-release-shared-extra_alignment-5.0-single + run_on: rhel81-power8-large + tags: [integration, rhel81-power8, release, shared, extra_alignment, "5.0", single] + patchable: false + commands: + - command: expansions.update + params: + updates: + - { key: build_type, value: Release } + - func: setup + - func: start_mongod + vars: + mongodb_version: "5.0" + - func: fetch_c_driver_source + - func: compile + vars: + BSON_EXTRA_ALIGNMENT: 1 + - func: fetch-det + - func: run_kms_servers + - func: install_c_driver + vars: + BSON_EXTRA_ALIGNMENT: 1 + - func: test + vars: + MONGOCXX_TEST_TOPOLOGY: single + lib_dir: lib64 + - name: integration-rhel81-power8-release-shared-extra_alignment-latest-single + run_on: rhel81-power8-large + tags: [integration, rhel81-power8, release, shared, extra_alignment, latest, single] + patchable: false + commands: + - command: expansions.update + params: + updates: + - { key: build_type, value: Release } + - func: setup + - func: start_mongod + vars: + mongodb_version: latest + - func: fetch_c_driver_source + - func: compile + vars: + BSON_EXTRA_ALIGNMENT: 1 + - func: fetch-det + - func: run_kms_servers + - func: install_c_driver + vars: + BSON_EXTRA_ALIGNMENT: 1 + - func: test + vars: + MONGOCXX_TEST_TOPOLOGY: single + lib_dir: lib64 + - name: integration-rhel81-power8-release-shared-latest-single + run_on: rhel81-power8-large + tags: [integration, rhel81-power8, release, shared, latest, single] + patchable: false + commands: + - command: expansions.update + params: + updates: + - { key: build_type, value: Release } + - func: setup + - func: start_mongod + vars: + mongodb_version: latest + - func: fetch_c_driver_source + - func: compile + vars: + RUN_DISTCHECK: 1 + - func: fetch-det + - func: run_kms_servers + - func: install_c_driver + - func: test + vars: + MONGOCXX_TEST_TOPOLOGY: single + lib_dir: lib64 + - name: integration-rhel81-power8-release-static-5.0-single + run_on: rhel81-power8-large + tags: [integration, rhel81-power8, release, static, "5.0", single] + patchable: false + commands: + - command: expansions.update + params: + updates: + - { key: build_type, value: Release } + - func: setup + - func: start_mongod + vars: + mongodb_version: "5.0" + - func: fetch_c_driver_source + - func: compile + vars: + RUN_DISTCHECK: 1 + USE_STATIC_LIBS: 1 + - func: fetch-det + - func: run_kms_servers + - func: install_c_driver + - func: test + vars: + MONGOCXX_TEST_TOPOLOGY: single + USE_STATIC_LIBS: 1 + lib_dir: lib64 + - name: integration-rhel81-power8-release-static-extra_alignment-5.0-single + run_on: rhel81-power8-large + tags: [integration, rhel81-power8, release, static, extra_alignment, "5.0", single] + patchable: false + commands: + - command: expansions.update + params: + updates: + - { key: build_type, value: Release } + - func: setup + - func: start_mongod + vars: + mongodb_version: "5.0" + - func: fetch_c_driver_source + - func: compile + vars: + BSON_EXTRA_ALIGNMENT: 1 + USE_STATIC_LIBS: 1 + - func: fetch-det + - func: run_kms_servers + - func: install_c_driver + vars: + BSON_EXTRA_ALIGNMENT: 1 + - func: test + vars: + MONGOCXX_TEST_TOPOLOGY: single + USE_STATIC_LIBS: 1 + lib_dir: lib64 + - name: integration-rhel81-power8-release-static-extra_alignment-latest-single + run_on: rhel81-power8-large + tags: [integration, rhel81-power8, release, static, extra_alignment, latest, single] + patchable: false + commands: + - command: expansions.update + params: + updates: + - { key: build_type, value: Release } + - func: setup + - func: start_mongod + vars: + mongodb_version: latest + - func: fetch_c_driver_source + - func: compile + vars: + BSON_EXTRA_ALIGNMENT: 1 + USE_STATIC_LIBS: 1 + - func: fetch-det + - func: run_kms_servers + - func: install_c_driver + vars: + BSON_EXTRA_ALIGNMENT: 1 + - func: test + vars: + MONGOCXX_TEST_TOPOLOGY: single + USE_STATIC_LIBS: 1 + lib_dir: lib64 + - name: integration-rhel81-power8-release-static-latest-single + run_on: rhel81-power8-large + tags: [integration, rhel81-power8, release, static, latest, single] + patchable: false + commands: + - command: expansions.update + params: + updates: + - { key: build_type, value: Release } + - func: setup + - func: start_mongod + vars: + mongodb_version: latest + - func: fetch_c_driver_source + - func: compile + vars: + RUN_DISTCHECK: 1 + USE_STATIC_LIBS: 1 + - func: fetch-det + - func: run_kms_servers + - func: install_c_driver + - func: test + vars: + MONGOCXX_TEST_TOPOLOGY: single + USE_STATIC_LIBS: 1 + lib_dir: lib64 + - name: integration-rhel83-zseries-release-shared-5.0-single + run_on: rhel83-zseries-large + tags: [integration, rhel83-zseries, release, shared, "5.0", single] + patchable: false + commands: + - command: expansions.update + params: + updates: + - { key: build_type, value: Release } + - func: setup + - func: start_mongod + vars: + mongodb_version: "5.0" + - func: fetch_c_driver_source + - func: compile + vars: + RUN_DISTCHECK: 1 + - func: fetch-det + - func: run_kms_servers + - func: install_c_driver + - func: test + vars: + MONGOCXX_TEST_TOPOLOGY: single + lib_dir: lib64 + - name: integration-rhel83-zseries-release-shared-6.0-single + run_on: rhel83-zseries-large + tags: [integration, rhel83-zseries, release, shared, "6.0", single] + patchable: false + commands: + - command: expansions.update + params: + updates: + - { key: build_type, value: Release } + - func: setup + - func: start_mongod + vars: + mongodb_version: "6.0" + - func: fetch_c_driver_source + - func: compile + vars: + RUN_DISTCHECK: 1 + - func: fetch-det + - func: run_kms_servers + - func: install_c_driver + - func: test + vars: + MONGOCXX_TEST_TOPOLOGY: single + lib_dir: lib64 + - name: integration-rhel83-zseries-release-shared-extra_alignment-5.0-single + run_on: rhel83-zseries-large + tags: [integration, rhel83-zseries, release, shared, extra_alignment, "5.0", single] + patchable: false + commands: + - command: expansions.update + params: + updates: + - { key: build_type, value: Release } + - func: setup + - func: start_mongod + vars: + mongodb_version: "5.0" + - func: fetch_c_driver_source + - func: compile + vars: + BSON_EXTRA_ALIGNMENT: 1 + - func: fetch-det + - func: run_kms_servers + - func: install_c_driver + vars: + BSON_EXTRA_ALIGNMENT: 1 + - func: test + vars: + MONGOCXX_TEST_TOPOLOGY: single + lib_dir: lib64 + - name: integration-rhel83-zseries-release-shared-extra_alignment-6.0-single + run_on: rhel83-zseries-large + tags: [integration, rhel83-zseries, release, shared, extra_alignment, "6.0", single] + patchable: false + commands: + - command: expansions.update + params: + updates: + - { key: build_type, value: Release } + - func: setup + - func: start_mongod + vars: + mongodb_version: "6.0" + - func: fetch_c_driver_source + - func: compile + vars: + BSON_EXTRA_ALIGNMENT: 1 + - func: fetch-det + - func: run_kms_servers + - func: install_c_driver + vars: + BSON_EXTRA_ALIGNMENT: 1 + - func: test + vars: + MONGOCXX_TEST_TOPOLOGY: single + lib_dir: lib64 + - name: integration-rhel83-zseries-release-shared-extra_alignment-latest-single + run_on: rhel83-zseries-large + tags: [integration, rhel83-zseries, release, shared, extra_alignment, latest, single] + patchable: false + commands: + - command: expansions.update + params: + updates: + - { key: build_type, value: Release } + - func: setup + - func: start_mongod + vars: + mongodb_version: latest + - func: fetch_c_driver_source + - func: compile + vars: + BSON_EXTRA_ALIGNMENT: 1 + - func: fetch-det + - func: run_kms_servers + - func: install_c_driver + vars: + BSON_EXTRA_ALIGNMENT: 1 + - func: test + vars: + MONGOCXX_TEST_TOPOLOGY: single + lib_dir: lib64 + - name: integration-rhel83-zseries-release-shared-latest-single + run_on: rhel83-zseries-large + tags: [integration, rhel83-zseries, release, shared, latest, single] + patchable: false + commands: + - command: expansions.update + params: + updates: + - { key: build_type, value: Release } + - func: setup + - func: start_mongod + vars: + mongodb_version: latest + - func: fetch_c_driver_source + - func: compile + vars: + RUN_DISTCHECK: 1 + - func: fetch-det + - func: run_kms_servers + - func: install_c_driver + - func: test + vars: + MONGOCXX_TEST_TOPOLOGY: single + lib_dir: lib64 + - name: integration-rhel83-zseries-release-static-5.0-single + run_on: rhel83-zseries-large + tags: [integration, rhel83-zseries, release, static, "5.0", single] + patchable: false + commands: + - command: expansions.update + params: + updates: + - { key: build_type, value: Release } + - func: setup + - func: start_mongod + vars: + mongodb_version: "5.0" + - func: fetch_c_driver_source + - func: compile + vars: + RUN_DISTCHECK: 1 + USE_STATIC_LIBS: 1 + - func: fetch-det + - func: run_kms_servers + - func: install_c_driver + - func: test + vars: + MONGOCXX_TEST_TOPOLOGY: single + USE_STATIC_LIBS: 1 + lib_dir: lib64 + - name: integration-rhel83-zseries-release-static-6.0-single + run_on: rhel83-zseries-large + tags: [integration, rhel83-zseries, release, static, "6.0", single] + patchable: false + commands: + - command: expansions.update + params: + updates: + - { key: build_type, value: Release } + - func: setup + - func: start_mongod + vars: + mongodb_version: "6.0" + - func: fetch_c_driver_source + - func: compile + vars: + RUN_DISTCHECK: 1 + USE_STATIC_LIBS: 1 + - func: fetch-det + - func: run_kms_servers + - func: install_c_driver + - func: test + vars: + MONGOCXX_TEST_TOPOLOGY: single + USE_STATIC_LIBS: 1 + lib_dir: lib64 + - name: integration-rhel83-zseries-release-static-extra_alignment-5.0-single + run_on: rhel83-zseries-large + tags: [integration, rhel83-zseries, release, static, extra_alignment, "5.0", single] + patchable: false + commands: + - command: expansions.update + params: + updates: + - { key: build_type, value: Release } + - func: setup + - func: start_mongod + vars: + mongodb_version: "5.0" + - func: fetch_c_driver_source + - func: compile + vars: + BSON_EXTRA_ALIGNMENT: 1 + USE_STATIC_LIBS: 1 + - func: fetch-det + - func: run_kms_servers + - func: install_c_driver + vars: + BSON_EXTRA_ALIGNMENT: 1 + - func: test + vars: + MONGOCXX_TEST_TOPOLOGY: single + USE_STATIC_LIBS: 1 + lib_dir: lib64 + - name: integration-rhel83-zseries-release-static-extra_alignment-6.0-single + run_on: rhel83-zseries-large + tags: [integration, rhel83-zseries, release, static, extra_alignment, "6.0", single] + patchable: false + commands: + - command: expansions.update + params: + updates: + - { key: build_type, value: Release } + - func: setup + - func: start_mongod + vars: + mongodb_version: "6.0" + - func: fetch_c_driver_source + - func: compile + vars: + BSON_EXTRA_ALIGNMENT: 1 + USE_STATIC_LIBS: 1 + - func: fetch-det + - func: run_kms_servers + - func: install_c_driver + vars: + BSON_EXTRA_ALIGNMENT: 1 + - func: test + vars: + MONGOCXX_TEST_TOPOLOGY: single + USE_STATIC_LIBS: 1 + lib_dir: lib64 + - name: integration-rhel83-zseries-release-static-extra_alignment-latest-single + run_on: rhel83-zseries-large + tags: [integration, rhel83-zseries, release, static, extra_alignment, latest, single] + patchable: false + commands: + - command: expansions.update + params: + updates: + - { key: build_type, value: Release } + - func: setup + - func: start_mongod + vars: + mongodb_version: latest + - func: fetch_c_driver_source + - func: compile + vars: + BSON_EXTRA_ALIGNMENT: 1 + USE_STATIC_LIBS: 1 + - func: fetch-det + - func: run_kms_servers + - func: install_c_driver + vars: + BSON_EXTRA_ALIGNMENT: 1 + - func: test + vars: + MONGOCXX_TEST_TOPOLOGY: single + USE_STATIC_LIBS: 1 + lib_dir: lib64 + - name: integration-rhel83-zseries-release-static-latest-single + run_on: rhel83-zseries-large + tags: [integration, rhel83-zseries, release, static, latest, single] + patchable: false + commands: + - command: expansions.update + params: + updates: + - { key: build_type, value: Release } + - func: setup + - func: start_mongod + vars: + mongodb_version: latest + - func: fetch_c_driver_source + - func: compile + vars: + RUN_DISTCHECK: 1 + USE_STATIC_LIBS: 1 + - func: fetch-det + - func: run_kms_servers + - func: install_c_driver + - func: test + vars: + MONGOCXX_TEST_TOPOLOGY: single + USE_STATIC_LIBS: 1 + lib_dir: lib64 + - name: integration-rhel90-arm64-release-shared-csfle-latest-replica + run_on: rhel90-arm64-large + tags: [integration, rhel90-arm64, release, shared, csfle, latest, replica] + commands: + - command: expansions.update + params: + updates: + - { key: build_type, value: Release } + - func: setup + - func: start_mongod + vars: + TOPOLOGY: replica_set + mongodb_version: latest + - func: install_c_driver + - func: compile + vars: + RUN_DISTCHECK: 1 + - func: fetch-det + - func: run_kms_servers + - func: test + vars: + MONGOCXX_TEST_TOPOLOGY: replica + lib_dir: lib64 + - name: integration-rhel90-arm64-release-shared-csfle-latest-sharded + run_on: rhel90-arm64-large + tags: [integration, rhel90-arm64, release, shared, csfle, latest, sharded] + commands: + - command: expansions.update + params: + updates: + - { key: build_type, value: Release } + - func: setup + - func: start_mongod + vars: + TOPOLOGY: sharded_cluster + mongodb_version: latest + - func: install_c_driver + - func: compile + vars: + RUN_DISTCHECK: 1 + - func: fetch-det + - func: run_kms_servers + - func: test + vars: + MONGOCXX_TEST_TOPOLOGY: sharded + lib_dir: lib64 + - name: integration-rhel90-arm64-release-shared-cxx20-extra_alignment-latest-single + run_on: rhel90-arm64-large + tags: [integration, rhel90-arm64, release, shared, cxx20, extra_alignment, latest, single] + commands: + - command: expansions.update + params: + updates: + - { key: build_type, value: Release } + - func: setup + - func: start_mongod + vars: + mongodb_version: latest + - func: fetch_c_driver_source + - func: compile + vars: + BSON_EXTRA_ALIGNMENT: 1 + REQUIRED_CXX_STANDARD: 20 + - func: fetch-det + - func: run_kms_servers + - func: install_c_driver + vars: + BSON_EXTRA_ALIGNMENT: 1 + - func: test + vars: + MONGOCXX_TEST_TOPOLOGY: single + REQUIRED_CXX_STANDARD: 20 + example_projects_cxx_standard: 20 + lib_dir: lib64 + - name: integration-rhel90-arm64-release-shared-cxx20-latest-single + run_on: rhel90-arm64-large + tags: [integration, rhel90-arm64, release, shared, cxx20, latest, single] + commands: + - command: expansions.update + params: + updates: + - { key: build_type, value: Release } + - func: setup + - func: start_mongod + vars: + mongodb_version: latest + - func: fetch_c_driver_source + - func: compile + vars: + REQUIRED_CXX_STANDARD: 20 + RUN_DISTCHECK: 1 + - func: fetch-det + - func: run_kms_servers + - func: install_c_driver + - func: test + vars: + MONGOCXX_TEST_TOPOLOGY: single + REQUIRED_CXX_STANDARD: 20 + example_projects_cxx_standard: 20 + lib_dir: lib64 + - name: integration-rhel90-arm64-release-shared-extra_alignment-latest-single + run_on: rhel90-arm64-large + tags: [integration, rhel90-arm64, release, shared, extra_alignment, latest, single] + commands: + - command: expansions.update + params: + updates: + - { key: build_type, value: Release } + - func: setup + - func: start_mongod + vars: + mongodb_version: latest + - func: fetch_c_driver_source + - func: compile + vars: + BSON_EXTRA_ALIGNMENT: 1 + - func: fetch-det + - func: run_kms_servers + - func: install_c_driver + vars: + BSON_EXTRA_ALIGNMENT: 1 + - func: test + vars: + MONGOCXX_TEST_TOPOLOGY: single + lib_dir: lib64 + - name: integration-rhel90-arm64-release-shared-latest-single + run_on: rhel90-arm64-large + tags: [integration, rhel90-arm64, release, shared, latest, single] + commands: + - command: expansions.update + params: + updates: + - { key: build_type, value: Release } + - func: setup + - func: start_mongod + vars: + mongodb_version: latest + - func: fetch_c_driver_source + - func: compile + vars: + RUN_DISTCHECK: 1 + - func: fetch-det + - func: run_kms_servers + - func: install_c_driver + - func: test + vars: + MONGOCXX_TEST_TOPOLOGY: single + lib_dir: lib64 + - name: integration-rhel90-arm64-release-static-extra_alignment-latest-single + run_on: rhel90-arm64-large + tags: [integration, rhel90-arm64, release, static, extra_alignment, latest, single] + commands: + - command: expansions.update + params: + updates: + - { key: build_type, value: Release } + - func: setup + - func: start_mongod + vars: + mongodb_version: latest + - func: fetch_c_driver_source + - func: compile + vars: + BSON_EXTRA_ALIGNMENT: 1 + USE_STATIC_LIBS: 1 + - func: fetch-det + - func: run_kms_servers + - func: install_c_driver + vars: + BSON_EXTRA_ALIGNMENT: 1 + - func: test + vars: + MONGOCXX_TEST_TOPOLOGY: single + USE_STATIC_LIBS: 1 + lib_dir: lib64 + - name: integration-rhel90-arm64-release-static-latest-single + run_on: rhel90-arm64-large + tags: [integration, rhel90-arm64, release, static, latest, single] + commands: + - command: expansions.update + params: + updates: + - { key: build_type, value: Release } + - func: setup + - func: start_mongod + vars: + mongodb_version: latest + - func: fetch_c_driver_source + - func: compile + vars: + RUN_DISTCHECK: 1 + USE_STATIC_LIBS: 1 + - func: fetch-det + - func: run_kms_servers + - func: install_c_driver + - func: test + vars: + MONGOCXX_TEST_TOPOLOGY: single + USE_STATIC_LIBS: 1 + lib_dir: lib64 + - name: integration-rhel90-release-shared-csfle-latest-replica + run_on: rhel90-large + tags: [integration, rhel90, release, shared, csfle, latest, replica] + commands: + - command: expansions.update + params: + updates: + - { key: build_type, value: Release } + - func: setup + - func: start_mongod + vars: + TOPOLOGY: replica_set + mongodb_version: latest + - func: install_c_driver + - func: compile + vars: + RUN_DISTCHECK: 1 + - func: fetch-det + - func: run_kms_servers + - func: test + vars: + MONGOCXX_TEST_TOPOLOGY: replica + lib_dir: lib64 + - name: integration-rhel90-release-shared-csfle-latest-sharded + run_on: rhel90-large + tags: [integration, rhel90, release, shared, csfle, latest, sharded] + commands: + - command: expansions.update + params: + updates: + - { key: build_type, value: Release } + - func: setup + - func: start_mongod + vars: + TOPOLOGY: sharded_cluster + mongodb_version: latest + - func: install_c_driver + - func: compile + vars: + RUN_DISTCHECK: 1 + - func: fetch-det + - func: run_kms_servers + - func: test + vars: + MONGOCXX_TEST_TOPOLOGY: sharded + lib_dir: lib64 + - name: integration-rhel90-release-shared-cxx20-extra_alignment-latest-single + run_on: rhel90-large + tags: [integration, rhel90, release, shared, cxx20, extra_alignment, latest, single] + commands: + - command: expansions.update + params: + updates: + - { key: build_type, value: Release } + - func: setup + - func: start_mongod + vars: + mongodb_version: latest + - func: fetch_c_driver_source + - func: compile + vars: + BSON_EXTRA_ALIGNMENT: 1 + REQUIRED_CXX_STANDARD: 20 + - func: fetch-det + - func: run_kms_servers + - func: install_c_driver + vars: + BSON_EXTRA_ALIGNMENT: 1 + - func: test + vars: + MONGOCXX_TEST_TOPOLOGY: single + REQUIRED_CXX_STANDARD: 20 + example_projects_cxx_standard: 20 + lib_dir: lib64 + - name: integration-rhel90-release-shared-cxx20-latest-single + run_on: rhel90-large + tags: [integration, rhel90, release, shared, cxx20, latest, single] + commands: + - command: expansions.update + params: + updates: + - { key: build_type, value: Release } + - func: setup + - func: start_mongod + vars: + mongodb_version: latest + - func: fetch_c_driver_source + - func: compile + vars: + REQUIRED_CXX_STANDARD: 20 + RUN_DISTCHECK: 1 + - func: fetch-det + - func: run_kms_servers + - func: install_c_driver + - func: test + vars: + MONGOCXX_TEST_TOPOLOGY: single + REQUIRED_CXX_STANDARD: 20 + example_projects_cxx_standard: 20 + lib_dir: lib64 + - name: integration-rhel90-release-shared-extra_alignment-latest-single + run_on: rhel90-large + tags: [integration, rhel90, release, shared, extra_alignment, latest, single] + commands: + - command: expansions.update + params: + updates: + - { key: build_type, value: Release } + - func: setup + - func: start_mongod + vars: + mongodb_version: latest + - func: fetch_c_driver_source + - func: compile + vars: + BSON_EXTRA_ALIGNMENT: 1 + - func: fetch-det + - func: run_kms_servers + - func: install_c_driver + vars: + BSON_EXTRA_ALIGNMENT: 1 + - func: test + vars: + MONGOCXX_TEST_TOPOLOGY: single + lib_dir: lib64 + - name: integration-rhel90-release-shared-latest-single + run_on: rhel90-large + tags: [integration, rhel90, release, shared, latest, single] + commands: + - command: expansions.update + params: + updates: + - { key: build_type, value: Release } + - func: setup + - func: start_mongod + vars: + mongodb_version: latest + - func: fetch_c_driver_source + - func: compile + vars: + RUN_DISTCHECK: 1 + - func: fetch-det + - func: run_kms_servers + - func: install_c_driver + - func: test + vars: + MONGOCXX_TEST_TOPOLOGY: single + lib_dir: lib64 + - name: integration-rhel90-release-static-extra_alignment-latest-single + run_on: rhel90-large + tags: [integration, rhel90, release, static, extra_alignment, latest, single] + commands: + - command: expansions.update + params: + updates: + - { key: build_type, value: Release } + - func: setup + - func: start_mongod + vars: + mongodb_version: latest + - func: fetch_c_driver_source + - func: compile + vars: + BSON_EXTRA_ALIGNMENT: 1 + USE_STATIC_LIBS: 1 + - func: fetch-det + - func: run_kms_servers + - func: install_c_driver + vars: + BSON_EXTRA_ALIGNMENT: 1 + - func: test + vars: + MONGOCXX_TEST_TOPOLOGY: single + USE_STATIC_LIBS: 1 + lib_dir: lib64 + - name: integration-rhel90-release-static-latest-single + run_on: rhel90-large + tags: [integration, rhel90, release, static, latest, single] + commands: + - command: expansions.update + params: + updates: + - { key: build_type, value: Release } + - func: setup + - func: start_mongod + vars: + mongodb_version: latest + - func: fetch_c_driver_source + - func: compile + vars: + RUN_DISTCHECK: 1 + USE_STATIC_LIBS: 1 + - func: fetch-det + - func: run_kms_servers + - func: install_c_driver + - func: test + vars: + MONGOCXX_TEST_TOPOLOGY: single + USE_STATIC_LIBS: 1 + lib_dir: lib64 + - name: integration-ubuntu1804-arm64-release-shared-5.0-single + run_on: ubuntu1804-arm64-large + tags: [integration, ubuntu1804-arm64, release, shared, "5.0", single] + commands: + - command: expansions.update + params: + updates: + - { key: build_type, value: Release } + - func: setup + - func: start_mongod + vars: + mongodb_version: "5.0" + - func: fetch_c_driver_source + - func: compile + vars: + RUN_DISTCHECK: 1 + - func: fetch-det + - func: run_kms_servers + - func: install_c_driver + - func: test + vars: + MONGOCXX_TEST_TOPOLOGY: single + - name: integration-ubuntu1804-arm64-release-shared-extra_alignment-5.0-single + run_on: ubuntu1804-arm64-large + tags: [integration, ubuntu1804-arm64, release, shared, extra_alignment, "5.0", single] + commands: + - command: expansions.update + params: + updates: + - { key: build_type, value: Release } + - func: setup + - func: start_mongod + vars: + mongodb_version: "5.0" + - func: fetch_c_driver_source + - func: compile + vars: + BSON_EXTRA_ALIGNMENT: 1 + - func: fetch-det + - func: run_kms_servers + - func: install_c_driver + vars: + BSON_EXTRA_ALIGNMENT: 1 + - func: test + vars: + MONGOCXX_TEST_TOPOLOGY: single + - name: integration-ubuntu1804-arm64-release-static-5.0-single + run_on: ubuntu1804-arm64-large + tags: [integration, ubuntu1804-arm64, release, static, "5.0", single] + commands: + - command: expansions.update + params: + updates: + - { key: build_type, value: Release } + - func: setup + - func: start_mongod + vars: + mongodb_version: "5.0" + - func: fetch_c_driver_source + - func: compile + vars: + RUN_DISTCHECK: 1 + USE_STATIC_LIBS: 1 + - func: fetch-det + - func: run_kms_servers + - func: install_c_driver + - func: test + vars: + MONGOCXX_TEST_TOPOLOGY: single + USE_STATIC_LIBS: 1 + - name: integration-ubuntu1804-arm64-release-static-extra_alignment-5.0-single + run_on: ubuntu1804-arm64-large + tags: [integration, ubuntu1804-arm64, release, static, extra_alignment, "5.0", single] + commands: + - command: expansions.update + params: + updates: + - { key: build_type, value: Release } + - func: setup + - func: start_mongod + vars: + mongodb_version: "5.0" + - func: fetch_c_driver_source + - func: compile + vars: + BSON_EXTRA_ALIGNMENT: 1 + USE_STATIC_LIBS: 1 + - func: fetch-det + - func: run_kms_servers + - func: install_c_driver + vars: + BSON_EXTRA_ALIGNMENT: 1 + - func: test + vars: + MONGOCXX_TEST_TOPOLOGY: single + USE_STATIC_LIBS: 1 + - name: integration-ubuntu1804-debug-shared-4.0-single + run_on: ubuntu1804-large + tags: [integration, ubuntu1804, debug, shared, "4.0", single] + commands: + - command: expansions.update + params: + updates: + - { key: build_type, value: Debug } + - func: setup + - func: start_mongod + vars: + mongodb_version: "4.0" + - func: fetch_c_driver_source + - func: compile + vars: + RUN_DISTCHECK: 1 + - func: fetch-det + - func: run_kms_servers + - func: install_c_driver + - func: test + vars: + MONGOCXX_TEST_TOPOLOGY: single + - name: integration-ubuntu1804-debug-shared-4.2-single + run_on: ubuntu1804-large + tags: [integration, ubuntu1804, debug, shared, "4.2", single] + commands: + - command: expansions.update + params: + updates: + - { key: build_type, value: Debug } + - func: setup + - func: start_mongod + vars: + mongodb_version: "4.2" + - func: fetch_c_driver_source + - func: compile + vars: + RUN_DISTCHECK: 1 + - func: fetch-det + - func: run_kms_servers + - func: install_c_driver + - func: test + vars: + MONGOCXX_TEST_TOPOLOGY: single + - name: integration-ubuntu1804-debug-shared-4.4-single + run_on: ubuntu1804-large + tags: [integration, ubuntu1804, debug, shared, "4.4", single] + commands: + - command: expansions.update + params: + updates: + - { key: build_type, value: Debug } + - func: setup + - func: start_mongod + vars: + mongodb_version: "4.4" + - func: fetch_c_driver_source + - func: compile + vars: + RUN_DISTCHECK: 1 + - func: fetch-det + - func: run_kms_servers + - func: install_c_driver + - func: test + vars: + MONGOCXX_TEST_TOPOLOGY: single + - name: integration-ubuntu1804-debug-shared-5.0-single + run_on: ubuntu1804-large + tags: [integration, ubuntu1804, debug, shared, "5.0", single] + commands: + - command: expansions.update + params: + updates: + - { key: build_type, value: Debug } + - func: setup + - func: start_mongod + vars: + mongodb_version: "5.0" + - func: fetch_c_driver_source + - func: compile + vars: + RUN_DISTCHECK: 1 + - func: fetch-det + - func: run_kms_servers + - func: install_c_driver + - func: test + vars: + MONGOCXX_TEST_TOPOLOGY: single + - name: integration-ubuntu1804-debug-shared-6.0-single + run_on: ubuntu1804-large + tags: [integration, ubuntu1804, debug, shared, "6.0", single] + commands: + - command: expansions.update + params: + updates: + - { key: build_type, value: Debug } + - func: setup + - func: start_mongod + vars: + mongodb_version: "6.0" + - func: fetch_c_driver_source + - func: compile + vars: + RUN_DISTCHECK: 1 + - func: fetch-det + - func: run_kms_servers + - func: install_c_driver + - func: test + vars: + MONGOCXX_TEST_TOPOLOGY: single + - name: integration-ubuntu1804-debug-shared-csfle-4.0-replica + run_on: ubuntu1804-large + tags: [integration, ubuntu1804, debug, shared, csfle, "4.0", replica] + commands: + - command: expansions.update + params: + updates: + - { key: build_type, value: Debug } + - func: setup + - func: start_mongod + vars: + TOPOLOGY: replica_set + mongodb_version: "4.0" + - func: install_c_driver + - func: compile + vars: + RUN_DISTCHECK: 1 + - func: fetch-det + - func: run_kms_servers + - func: test + vars: + MONGOCXX_TEST_TOPOLOGY: replica + - name: integration-ubuntu1804-debug-shared-csfle-4.0-sharded + run_on: ubuntu1804-large + tags: [integration, ubuntu1804, debug, shared, csfle, "4.0", sharded] + commands: + - command: expansions.update + params: + updates: + - { key: build_type, value: Debug } + - func: setup + - func: start_mongod + vars: + TOPOLOGY: sharded_cluster + mongodb_version: "4.0" + - func: install_c_driver + - func: compile + vars: + RUN_DISTCHECK: 1 + - func: fetch-det + - func: run_kms_servers + - func: test + vars: + MONGOCXX_TEST_TOPOLOGY: sharded + - name: integration-ubuntu1804-debug-shared-csfle-4.2-replica + run_on: ubuntu1804-large + tags: [integration, ubuntu1804, debug, shared, csfle, "4.2", replica] + commands: + - command: expansions.update + params: + updates: + - { key: build_type, value: Debug } + - func: setup + - func: start_mongod + vars: + TOPOLOGY: replica_set + mongodb_version: "4.2" + - func: install_c_driver + - func: compile + vars: + RUN_DISTCHECK: 1 + - func: fetch-det + - func: run_kms_servers + - func: test + vars: + MONGOCXX_TEST_TOPOLOGY: replica + - name: integration-ubuntu1804-debug-shared-csfle-4.2-replica-mongocryptd + run_on: ubuntu1804-large + tags: [integration, ubuntu1804, debug, shared, csfle, "4.2", replica, mongocryptd] + commands: + - command: expansions.update + params: + updates: + - { key: build_type, value: Debug } + - func: setup + - func: start_mongod + vars: + TOPOLOGY: replica_set + mongodb_version: "4.2" + - func: install_c_driver + - func: compile + vars: + RUN_DISTCHECK: 1 + - func: fetch-det + - func: run_kms_servers + - func: test + vars: + MONGOCXX_TEST_TOPOLOGY: replica + use_mongocryptd: true + - name: integration-ubuntu1804-debug-shared-csfle-4.2-sharded + run_on: ubuntu1804-large + tags: [integration, ubuntu1804, debug, shared, csfle, "4.2", sharded] + commands: + - command: expansions.update + params: + updates: + - { key: build_type, value: Debug } + - func: setup + - func: start_mongod + vars: + TOPOLOGY: sharded_cluster + mongodb_version: "4.2" + - func: install_c_driver + - func: compile + vars: + RUN_DISTCHECK: 1 + - func: fetch-det + - func: run_kms_servers + - func: test + vars: + MONGOCXX_TEST_TOPOLOGY: sharded + - name: integration-ubuntu1804-debug-shared-csfle-4.2-sharded-mongocryptd + run_on: ubuntu1804-large + tags: [integration, ubuntu1804, debug, shared, csfle, "4.2", sharded, mongocryptd] + commands: + - command: expansions.update + params: + updates: + - { key: build_type, value: Debug } + - func: setup + - func: start_mongod + vars: + TOPOLOGY: sharded_cluster + mongodb_version: "4.2" + - func: install_c_driver + - func: compile + vars: + RUN_DISTCHECK: 1 + - func: fetch-det + - func: run_kms_servers + - func: test + vars: + MONGOCXX_TEST_TOPOLOGY: sharded + use_mongocryptd: true + - name: integration-ubuntu1804-debug-shared-csfle-4.4-replica + run_on: ubuntu1804-large + tags: [integration, ubuntu1804, debug, shared, csfle, "4.4", replica] + commands: + - command: expansions.update + params: + updates: + - { key: build_type, value: Debug } + - func: setup + - func: start_mongod + vars: + TOPOLOGY: replica_set + mongodb_version: "4.4" + - func: install_c_driver + - func: compile + vars: + RUN_DISTCHECK: 1 + - func: fetch-det + - func: run_kms_servers + - func: test + vars: + MONGOCXX_TEST_TOPOLOGY: replica + - name: integration-ubuntu1804-debug-shared-csfle-4.4-replica-mongocryptd + run_on: ubuntu1804-large + tags: [integration, ubuntu1804, debug, shared, csfle, "4.4", replica, mongocryptd] + commands: + - command: expansions.update + params: + updates: + - { key: build_type, value: Debug } + - func: setup + - func: start_mongod + vars: + TOPOLOGY: replica_set + mongodb_version: "4.4" + - func: install_c_driver + - func: compile + vars: + RUN_DISTCHECK: 1 + - func: fetch-det + - func: run_kms_servers + - func: test + vars: + MONGOCXX_TEST_TOPOLOGY: replica + use_mongocryptd: true + - name: integration-ubuntu1804-debug-shared-csfle-4.4-sharded + run_on: ubuntu1804-large + tags: [integration, ubuntu1804, debug, shared, csfle, "4.4", sharded] + commands: + - command: expansions.update + params: + updates: + - { key: build_type, value: Debug } + - func: setup + - func: start_mongod + vars: + TOPOLOGY: sharded_cluster + mongodb_version: "4.4" + - func: install_c_driver + - func: compile + vars: + RUN_DISTCHECK: 1 + - func: fetch-det + - func: run_kms_servers + - func: test + vars: + MONGOCXX_TEST_TOPOLOGY: sharded + - name: integration-ubuntu1804-debug-shared-csfle-4.4-sharded-mongocryptd + run_on: ubuntu1804-large + tags: [integration, ubuntu1804, debug, shared, csfle, "4.4", sharded, mongocryptd] + commands: + - command: expansions.update + params: + updates: + - { key: build_type, value: Debug } + - func: setup + - func: start_mongod + vars: + TOPOLOGY: sharded_cluster + mongodb_version: "4.4" + - func: install_c_driver + - func: compile + vars: + RUN_DISTCHECK: 1 + - func: fetch-det + - func: run_kms_servers + - func: test + vars: + MONGOCXX_TEST_TOPOLOGY: sharded + use_mongocryptd: true + - name: integration-ubuntu1804-debug-shared-csfle-5.0-replica + run_on: ubuntu1804-large + tags: [integration, ubuntu1804, debug, shared, csfle, "5.0", replica] + commands: + - command: expansions.update + params: + updates: + - { key: build_type, value: Debug } + - func: setup + - func: start_mongod + vars: + TOPOLOGY: replica_set + mongodb_version: "5.0" + - func: install_c_driver + - func: compile + vars: + RUN_DISTCHECK: 1 + - func: fetch-det + - func: run_kms_servers + - func: test + vars: + MONGOCXX_TEST_TOPOLOGY: replica + - name: integration-ubuntu1804-debug-shared-csfle-5.0-replica-mongocryptd + run_on: ubuntu1804-large + tags: [integration, ubuntu1804, debug, shared, csfle, "5.0", replica, mongocryptd] + commands: + - command: expansions.update + params: + updates: + - { key: build_type, value: Debug } + - func: setup + - func: start_mongod + vars: + TOPOLOGY: replica_set + mongodb_version: "5.0" + - func: install_c_driver + - func: compile + vars: + RUN_DISTCHECK: 1 + - func: fetch-det + - func: run_kms_servers + - func: test + vars: + MONGOCXX_TEST_TOPOLOGY: replica + use_mongocryptd: true + - name: integration-ubuntu1804-debug-shared-csfle-5.0-sharded + run_on: ubuntu1804-large + tags: [integration, ubuntu1804, debug, shared, csfle, "5.0", sharded] + commands: + - command: expansions.update + params: + updates: + - { key: build_type, value: Debug } + - func: setup + - func: start_mongod + vars: + TOPOLOGY: sharded_cluster + mongodb_version: "5.0" + - func: install_c_driver + - func: compile + vars: + RUN_DISTCHECK: 1 + - func: fetch-det + - func: run_kms_servers + - func: test + vars: + MONGOCXX_TEST_TOPOLOGY: sharded + - name: integration-ubuntu1804-debug-shared-csfle-5.0-sharded-mongocryptd + run_on: ubuntu1804-large + tags: [integration, ubuntu1804, debug, shared, csfle, "5.0", sharded, mongocryptd] + commands: + - command: expansions.update + params: + updates: + - { key: build_type, value: Debug } + - func: setup + - func: start_mongod + vars: + TOPOLOGY: sharded_cluster + mongodb_version: "5.0" + - func: install_c_driver + - func: compile + vars: + RUN_DISTCHECK: 1 + - func: fetch-det + - func: run_kms_servers + - func: test + vars: + MONGOCXX_TEST_TOPOLOGY: sharded + use_mongocryptd: true + - name: integration-ubuntu1804-debug-shared-csfle-6.0-replica + run_on: ubuntu1804-large + tags: [integration, ubuntu1804, debug, shared, csfle, "6.0", replica] + commands: + - command: expansions.update + params: + updates: + - { key: build_type, value: Debug } + - func: setup + - func: start_mongod + vars: + TOPOLOGY: replica_set + mongodb_version: "6.0" + - func: install_c_driver + - func: compile + vars: + RUN_DISTCHECK: 1 + - func: fetch-det + - func: run_kms_servers + - func: test + vars: + MONGOCXX_TEST_TOPOLOGY: replica + - name: integration-ubuntu1804-debug-shared-csfle-6.0-sharded + run_on: ubuntu1804-large + tags: [integration, ubuntu1804, debug, shared, csfle, "6.0", sharded] + commands: + - command: expansions.update + params: + updates: + - { key: build_type, value: Debug } + - func: setup + - func: start_mongod + vars: + TOPOLOGY: sharded_cluster + mongodb_version: "6.0" + - func: install_c_driver + - func: compile + vars: + RUN_DISTCHECK: 1 + - func: fetch-det + - func: run_kms_servers + - func: test + vars: + MONGOCXX_TEST_TOPOLOGY: sharded + - name: integration-ubuntu1804-debug-shared-extra_alignment-4.0-single + run_on: ubuntu1804-large + tags: [integration, ubuntu1804, debug, shared, extra_alignment, "4.0", single] + commands: + - command: expansions.update + params: + updates: + - { key: build_type, value: Debug } + - func: setup + - func: start_mongod + vars: + mongodb_version: "4.0" + - func: fetch_c_driver_source + - func: compile + vars: + BSON_EXTRA_ALIGNMENT: 1 + - func: fetch-det + - func: run_kms_servers + - func: install_c_driver + vars: + BSON_EXTRA_ALIGNMENT: 1 + - func: test + vars: + MONGOCXX_TEST_TOPOLOGY: single + - name: integration-ubuntu1804-debug-shared-extra_alignment-4.2-single + run_on: ubuntu1804-large + tags: [integration, ubuntu1804, debug, shared, extra_alignment, "4.2", single] + commands: + - command: expansions.update + params: + updates: + - { key: build_type, value: Debug } + - func: setup + - func: start_mongod + vars: + mongodb_version: "4.2" + - func: fetch_c_driver_source + - func: compile + vars: + BSON_EXTRA_ALIGNMENT: 1 + - func: fetch-det + - func: run_kms_servers + - func: install_c_driver + vars: + BSON_EXTRA_ALIGNMENT: 1 + - func: test + vars: + MONGOCXX_TEST_TOPOLOGY: single + - name: integration-ubuntu1804-debug-shared-extra_alignment-4.4-single + run_on: ubuntu1804-large + tags: [integration, ubuntu1804, debug, shared, extra_alignment, "4.4", single] + commands: + - command: expansions.update + params: + updates: + - { key: build_type, value: Debug } + - func: setup + - func: start_mongod + vars: + mongodb_version: "4.4" + - func: fetch_c_driver_source + - func: compile + vars: + BSON_EXTRA_ALIGNMENT: 1 + - func: fetch-det + - func: run_kms_servers + - func: install_c_driver + vars: + BSON_EXTRA_ALIGNMENT: 1 + - func: test + vars: + MONGOCXX_TEST_TOPOLOGY: single + - name: integration-ubuntu1804-debug-shared-extra_alignment-5.0-single + run_on: ubuntu1804-large + tags: [integration, ubuntu1804, debug, shared, extra_alignment, "5.0", single] + commands: + - command: expansions.update + params: + updates: + - { key: build_type, value: Debug } + - func: setup + - func: start_mongod + vars: + mongodb_version: "5.0" + - func: fetch_c_driver_source + - func: compile + vars: + BSON_EXTRA_ALIGNMENT: 1 + - func: fetch-det + - func: run_kms_servers + - func: install_c_driver + vars: + BSON_EXTRA_ALIGNMENT: 1 + - func: test + vars: + MONGOCXX_TEST_TOPOLOGY: single + - name: integration-ubuntu1804-debug-shared-extra_alignment-6.0-single + run_on: ubuntu1804-large + tags: [integration, ubuntu1804, debug, shared, extra_alignment, "6.0", single] + commands: + - command: expansions.update + params: + updates: + - { key: build_type, value: Debug } + - func: setup + - func: start_mongod + vars: + mongodb_version: "6.0" + - func: fetch_c_driver_source + - func: compile + vars: + BSON_EXTRA_ALIGNMENT: 1 + - func: fetch-det + - func: run_kms_servers + - func: install_c_driver + vars: + BSON_EXTRA_ALIGNMENT: 1 + - func: test + vars: + MONGOCXX_TEST_TOPOLOGY: single + - name: integration-ubuntu1804-release-shared-5.0-replica + run_on: ubuntu1804-large + tags: [integration, ubuntu1804, release, shared, "5.0", replica] + commands: + - command: expansions.update + params: + updates: + - { key: build_type, value: Release } + - func: setup + - func: start_mongod + vars: + TOPOLOGY: replica_set + mongodb_version: "5.0" + - func: fetch_c_driver_source + - func: compile + vars: + RUN_DISTCHECK: 1 + - func: fetch-det + - func: run_kms_servers + - func: install_c_driver + - func: test + vars: + MONGOCXX_TEST_TOPOLOGY: replica + - name: integration-ubuntu1804-release-shared-5.0-sharded + run_on: ubuntu1804-large + tags: [integration, ubuntu1804, release, shared, "5.0", sharded] + commands: + - command: expansions.update + params: + updates: + - { key: build_type, value: Release } + - func: setup + - func: start_mongod + vars: + TOPOLOGY: sharded_cluster + mongodb_version: "5.0" + - func: fetch_c_driver_source + - func: compile + vars: + RUN_DISTCHECK: 1 + - func: fetch-det + - func: run_kms_servers + - func: install_c_driver + - func: test + vars: + MONGOCXX_TEST_TOPOLOGY: sharded + - name: integration-ubuntu2004-arm64-release-shared-extra_alignment-latest-single + run_on: ubuntu2004-arm64-large + tags: [integration, ubuntu2004-arm64, release, shared, extra_alignment, latest, single] + commands: + - command: expansions.update + params: + updates: + - { key: build_type, value: Release } + - func: setup + - func: start_mongod + vars: + mongodb_version: latest + - func: fetch_c_driver_source + - func: compile + vars: + BSON_EXTRA_ALIGNMENT: 1 + - func: fetch-det + - func: run_kms_servers + - func: install_c_driver + vars: + BSON_EXTRA_ALIGNMENT: 1 + - func: test + vars: + MONGOCXX_TEST_TOPOLOGY: single + - name: integration-ubuntu2004-arm64-release-shared-latest-single + run_on: ubuntu2004-arm64-large + tags: [integration, ubuntu2004-arm64, release, shared, latest, single] + commands: + - command: expansions.update + params: + updates: + - { key: build_type, value: Release } + - func: setup + - func: start_mongod + vars: + mongodb_version: latest + - func: fetch_c_driver_source + - func: compile + vars: + RUN_DISTCHECK: 1 + - func: fetch-det + - func: run_kms_servers + - func: install_c_driver + - func: test + vars: + MONGOCXX_TEST_TOPOLOGY: single + - name: integration-ubuntu2004-arm64-release-static-extra_alignment-latest-single + run_on: ubuntu2004-arm64-large + tags: [integration, ubuntu2004-arm64, release, static, extra_alignment, latest, single] + commands: + - command: expansions.update + params: + updates: + - { key: build_type, value: Release } + - func: setup + - func: start_mongod + vars: + mongodb_version: latest + - func: fetch_c_driver_source + - func: compile + vars: + BSON_EXTRA_ALIGNMENT: 1 + USE_STATIC_LIBS: 1 + - func: fetch-det + - func: run_kms_servers + - func: install_c_driver + vars: + BSON_EXTRA_ALIGNMENT: 1 + - func: test + vars: + MONGOCXX_TEST_TOPOLOGY: single + USE_STATIC_LIBS: 1 + - name: integration-ubuntu2004-arm64-release-static-latest-single + run_on: ubuntu2004-arm64-large + tags: [integration, ubuntu2004-arm64, release, static, latest, single] + commands: + - command: expansions.update + params: + updates: + - { key: build_type, value: Release } + - func: setup + - func: start_mongod + vars: + mongodb_version: latest + - func: fetch_c_driver_source + - func: compile + vars: + RUN_DISTCHECK: 1 + USE_STATIC_LIBS: 1 + - func: fetch-det + - func: run_kms_servers + - func: install_c_driver + - func: test + vars: + MONGOCXX_TEST_TOPOLOGY: single + USE_STATIC_LIBS: 1 + - name: integration-ubuntu2004-debug-shared-7.0-single + run_on: ubuntu2004-large + tags: [integration, ubuntu2004, debug, shared, "7.0", single] + commands: + - command: expansions.update + params: + updates: + - { key: build_type, value: Debug } + - func: setup + - func: start_mongod + vars: + mongodb_version: "7.0" + - func: fetch_c_driver_source + - func: compile + vars: + RUN_DISTCHECK: 1 + - func: fetch-det + - func: run_kms_servers + - func: install_c_driver + - func: test + vars: + MONGOCXX_TEST_TOPOLOGY: single + - name: integration-ubuntu2004-debug-shared-8.0-single + run_on: ubuntu2004-large + tags: [integration, ubuntu2004, debug, shared, "8.0", single] + commands: + - command: expansions.update + params: + updates: + - { key: build_type, value: Debug } + - func: setup + - func: start_mongod + vars: + mongodb_version: "8.0" + - func: fetch_c_driver_source + - func: compile + vars: + RUN_DISTCHECK: 1 + - func: fetch-det + - func: run_kms_servers + - func: install_c_driver + - func: test + vars: + MONGOCXX_TEST_TOPOLOGY: single + - name: integration-ubuntu2004-debug-shared-csfle-7.0-replica + run_on: ubuntu2004-large + tags: [integration, ubuntu2004, debug, shared, csfle, "7.0", replica] + commands: + - command: expansions.update + params: + updates: + - { key: build_type, value: Debug } + - func: setup + - func: start_mongod + vars: + TOPOLOGY: replica_set + mongodb_version: "7.0" + - func: install_c_driver + - func: compile + vars: + RUN_DISTCHECK: 1 + - func: fetch-det + - func: run_kms_servers + - func: test + vars: + MONGOCXX_TEST_TOPOLOGY: replica + - name: integration-ubuntu2004-debug-shared-csfle-7.0-sharded + run_on: ubuntu2004-large + tags: [integration, ubuntu2004, debug, shared, csfle, "7.0", sharded] + commands: + - command: expansions.update + params: + updates: + - { key: build_type, value: Debug } + - func: setup + - func: start_mongod + vars: + TOPOLOGY: sharded_cluster + mongodb_version: "7.0" + - func: install_c_driver + - func: compile + vars: + RUN_DISTCHECK: 1 + - func: fetch-det + - func: run_kms_servers + - func: test + vars: + MONGOCXX_TEST_TOPOLOGY: sharded + - name: integration-ubuntu2004-debug-shared-csfle-8.0-replica + run_on: ubuntu2004-large + tags: [integration, ubuntu2004, debug, shared, csfle, "8.0", replica] + commands: + - command: expansions.update + params: + updates: + - { key: build_type, value: Debug } + - func: setup + - func: start_mongod + vars: + TOPOLOGY: replica_set + mongodb_version: "8.0" + - func: install_c_driver + - func: compile + vars: + RUN_DISTCHECK: 1 + - func: fetch-det + - func: run_kms_servers + - func: test + vars: + MONGOCXX_TEST_TOPOLOGY: replica + - name: integration-ubuntu2004-debug-shared-csfle-8.0-sharded + run_on: ubuntu2004-large + tags: [integration, ubuntu2004, debug, shared, csfle, "8.0", sharded] + commands: + - command: expansions.update + params: + updates: + - { key: build_type, value: Debug } + - func: setup + - func: start_mongod + vars: + TOPOLOGY: sharded_cluster + mongodb_version: "8.0" + - func: install_c_driver + - func: compile + vars: + RUN_DISTCHECK: 1 + - func: fetch-det + - func: run_kms_servers + - func: test + vars: + MONGOCXX_TEST_TOPOLOGY: sharded + - name: integration-ubuntu2004-debug-shared-csfle-latest-replica + run_on: ubuntu2004-large + tags: [integration, ubuntu2004, debug, shared, csfle, latest, replica] + commands: + - command: expansions.update + params: + updates: + - { key: build_type, value: Debug } + - func: setup + - func: start_mongod + vars: + TOPOLOGY: replica_set + mongodb_version: latest + - func: install_c_driver + - func: compile + vars: + RUN_DISTCHECK: 1 + - func: fetch-det + - func: run_kms_servers + - func: test + vars: + MONGOCXX_TEST_TOPOLOGY: replica + - name: integration-ubuntu2004-debug-shared-csfle-latest-replica-mongocryptd + run_on: ubuntu2004-large + tags: [integration, ubuntu2004, debug, shared, csfle, latest, replica, mongocryptd] + commands: + - command: expansions.update + params: + updates: + - { key: build_type, value: Debug } + - func: setup + - func: start_mongod + vars: + TOPOLOGY: replica_set + mongodb_version: latest + - func: install_c_driver + - func: compile + vars: + RUN_DISTCHECK: 1 + - func: fetch-det + - func: run_kms_servers + - func: test + vars: + MONGOCXX_TEST_TOPOLOGY: replica + use_mongocryptd: true + - name: integration-ubuntu2004-debug-shared-csfle-latest-sharded + run_on: ubuntu2004-large + tags: [integration, ubuntu2004, debug, shared, csfle, latest, sharded] + commands: + - command: expansions.update + params: + updates: + - { key: build_type, value: Debug } + - func: setup + - func: start_mongod + vars: + TOPOLOGY: sharded_cluster + mongodb_version: latest + - func: install_c_driver + - func: compile + vars: + RUN_DISTCHECK: 1 + - func: fetch-det + - func: run_kms_servers + - func: test + vars: + MONGOCXX_TEST_TOPOLOGY: sharded + - name: integration-ubuntu2004-debug-shared-csfle-latest-sharded-mongocryptd + run_on: ubuntu2004-large + tags: [integration, ubuntu2004, debug, shared, csfle, latest, sharded, mongocryptd] + commands: + - command: expansions.update + params: + updates: + - { key: build_type, value: Debug } + - func: setup + - func: start_mongod + vars: + TOPOLOGY: sharded_cluster + mongodb_version: latest + - func: install_c_driver + - func: compile + vars: + RUN_DISTCHECK: 1 + - func: fetch-det + - func: run_kms_servers + - func: test + vars: + MONGOCXX_TEST_TOPOLOGY: sharded + use_mongocryptd: true + - name: integration-ubuntu2004-debug-shared-extra_alignment-7.0-single + run_on: ubuntu2004-large + tags: [integration, ubuntu2004, debug, shared, extra_alignment, "7.0", single] + commands: + - command: expansions.update + params: + updates: + - { key: build_type, value: Debug } + - func: setup + - func: start_mongod + vars: + mongodb_version: "7.0" + - func: fetch_c_driver_source + - func: compile + vars: + BSON_EXTRA_ALIGNMENT: 1 + - func: fetch-det + - func: run_kms_servers + - func: install_c_driver + vars: + BSON_EXTRA_ALIGNMENT: 1 + - func: test + vars: + MONGOCXX_TEST_TOPOLOGY: single + - name: integration-ubuntu2004-debug-shared-extra_alignment-8.0-single + run_on: ubuntu2004-large + tags: [integration, ubuntu2004, debug, shared, extra_alignment, "8.0", single] + commands: + - command: expansions.update + params: + updates: + - { key: build_type, value: Debug } + - func: setup + - func: start_mongod + vars: + mongodb_version: "8.0" + - func: fetch_c_driver_source + - func: compile + vars: + BSON_EXTRA_ALIGNMENT: 1 + - func: fetch-det + - func: run_kms_servers + - func: install_c_driver + vars: + BSON_EXTRA_ALIGNMENT: 1 + - func: test + vars: + MONGOCXX_TEST_TOPOLOGY: single + - name: integration-ubuntu2004-debug-shared-extra_alignment-latest-single + run_on: ubuntu2004-large + tags: [integration, ubuntu2004, debug, shared, extra_alignment, latest, single] + commands: + - command: expansions.update + params: + updates: + - { key: build_type, value: Debug } + - func: setup + - func: start_mongod + vars: + mongodb_version: latest + - func: fetch_c_driver_source + - func: compile + vars: + BSON_EXTRA_ALIGNMENT: 1 + - func: fetch-det + - func: run_kms_servers + - func: install_c_driver + vars: + BSON_EXTRA_ALIGNMENT: 1 + - func: test + vars: + MONGOCXX_TEST_TOPOLOGY: single + - name: integration-ubuntu2004-debug-shared-latest-single + run_on: ubuntu2004-large + tags: [integration, ubuntu2004, debug, shared, latest, single] + commands: + - command: expansions.update + params: + updates: + - { key: build_type, value: Debug } + - func: setup + - func: start_mongod + vars: + mongodb_version: latest + - func: fetch_c_driver_source + - func: compile + vars: + RUN_DISTCHECK: 1 + - func: fetch-det + - func: run_kms_servers + - func: install_c_driver + - func: test + vars: + MONGOCXX_TEST_TOPOLOGY: single + - name: integration-ubuntu2004-release-shared-5.0-replica + run_on: ubuntu2004-large + tags: [integration, ubuntu2004, release, shared, "5.0", replica] + commands: + - command: expansions.update + params: + updates: + - { key: build_type, value: Release } + - func: setup + - func: start_mongod + vars: + TOPOLOGY: replica_set + mongodb_version: "5.0" + - func: fetch_c_driver_source + - func: compile + vars: + RUN_DISTCHECK: 1 + - func: fetch-det + - func: run_kms_servers + - func: install_c_driver + - func: test + vars: + MONGOCXX_TEST_TOPOLOGY: replica + - name: integration-ubuntu2004-release-shared-5.0-sharded + run_on: ubuntu2004-large + tags: [integration, ubuntu2004, release, shared, "5.0", sharded] + commands: + - command: expansions.update + params: + updates: + - { key: build_type, value: Release } + - func: setup + - func: start_mongod + vars: + TOPOLOGY: sharded_cluster + mongodb_version: "5.0" + - func: fetch_c_driver_source + - func: compile + vars: + RUN_DISTCHECK: 1 + - func: fetch-det + - func: run_kms_servers + - func: install_c_driver + - func: test + vars: + MONGOCXX_TEST_TOPOLOGY: sharded + - name: integration-ubuntu2004-release-shared-5.0-single + run_on: ubuntu2004-large + tags: [integration, ubuntu2004, release, shared, "5.0", single] + commands: + - command: expansions.update + params: + updates: + - { key: build_type, value: Release } + - func: setup + - func: start_mongod + vars: + mongodb_version: "5.0" + - func: fetch_c_driver_source + - func: compile + vars: + RUN_DISTCHECK: 1 + - func: fetch-det + - func: run_kms_servers + - func: install_c_driver + - func: test + vars: + MONGOCXX_TEST_TOPOLOGY: single + - name: integration-ubuntu2004-release-shared-csfle-5.0-replica + run_on: ubuntu2004-large + tags: [integration, ubuntu2004, release, shared, csfle, "5.0", replica] + commands: + - command: expansions.update + params: + updates: + - { key: build_type, value: Release } + - func: setup + - func: start_mongod + vars: + TOPOLOGY: replica_set + mongodb_version: "5.0" + - func: install_c_driver + - func: compile + vars: + RUN_DISTCHECK: 1 + - func: fetch-det + - func: run_kms_servers + - func: test + vars: + MONGOCXX_TEST_TOPOLOGY: replica + - name: integration-ubuntu2004-release-shared-csfle-5.0-sharded + run_on: ubuntu2004-large + tags: [integration, ubuntu2004, release, shared, csfle, "5.0", sharded] + commands: + - command: expansions.update + params: + updates: + - { key: build_type, value: Release } + - func: setup + - func: start_mongod + vars: + TOPOLOGY: sharded_cluster + mongodb_version: "5.0" + - func: install_c_driver + - func: compile + vars: + RUN_DISTCHECK: 1 + - func: fetch-det + - func: run_kms_servers + - func: test + vars: + MONGOCXX_TEST_TOPOLOGY: sharded + - name: integration-ubuntu2004-release-shared-csfle-latest-replica + run_on: ubuntu2004-large + tags: [integration, ubuntu2004, release, shared, csfle, latest, replica] + commands: + - command: expansions.update + params: + updates: + - { key: build_type, value: Release } + - func: setup + - func: start_mongod + vars: + TOPOLOGY: replica_set + mongodb_version: latest + - func: install_c_driver + - func: compile + vars: + RUN_DISTCHECK: 1 + - func: fetch-det + - func: run_kms_servers + - func: test + vars: + MONGOCXX_TEST_TOPOLOGY: replica + - name: integration-ubuntu2004-release-shared-csfle-latest-sharded + run_on: ubuntu2004-large + tags: [integration, ubuntu2004, release, shared, csfle, latest, sharded] + commands: + - command: expansions.update + params: + updates: + - { key: build_type, value: Release } + - func: setup + - func: start_mongod + vars: + TOPOLOGY: sharded_cluster + mongodb_version: latest + - func: install_c_driver + - func: compile + vars: + RUN_DISTCHECK: 1 + - func: fetch-det + - func: run_kms_servers + - func: test + vars: + MONGOCXX_TEST_TOPOLOGY: sharded + - name: integration-ubuntu2004-release-shared-extra_alignment-5.0-single + run_on: ubuntu2004-large + tags: [integration, ubuntu2004, release, shared, extra_alignment, "5.0", single] + commands: + - command: expansions.update + params: + updates: + - { key: build_type, value: Release } + - func: setup + - func: start_mongod + vars: + mongodb_version: "5.0" + - func: fetch_c_driver_source + - func: compile + vars: + BSON_EXTRA_ALIGNMENT: 1 + - func: fetch-det + - func: run_kms_servers + - func: install_c_driver + vars: + BSON_EXTRA_ALIGNMENT: 1 + - func: test + vars: + MONGOCXX_TEST_TOPOLOGY: single + - name: integration-ubuntu2004-release-shared-extra_alignment-latest-single + run_on: ubuntu2004-large + tags: [integration, ubuntu2004, release, shared, extra_alignment, latest, single] + commands: + - command: expansions.update + params: + updates: + - { key: build_type, value: Release } + - func: setup + - func: start_mongod + vars: + mongodb_version: latest + - func: fetch_c_driver_source + - func: compile + vars: + BSON_EXTRA_ALIGNMENT: 1 + - func: fetch-det + - func: run_kms_servers + - func: install_c_driver + vars: + BSON_EXTRA_ALIGNMENT: 1 + - func: test + vars: + MONGOCXX_TEST_TOPOLOGY: single + - name: integration-ubuntu2004-release-shared-latest-single + run_on: ubuntu2004-large + tags: [integration, ubuntu2004, release, shared, latest, single] + commands: + - command: expansions.update + params: + updates: + - { key: build_type, value: Release } + - func: setup + - func: start_mongod + vars: + mongodb_version: latest + - func: fetch_c_driver_source + - func: compile + vars: + RUN_DISTCHECK: 1 + - func: fetch-det + - func: run_kms_servers + - func: install_c_driver + - func: test + vars: + MONGOCXX_TEST_TOPOLOGY: single + - name: integration-ubuntu2004-release-static-5.0-single + run_on: ubuntu2004-large + tags: [integration, ubuntu2004, release, static, "5.0", single] + commands: + - command: expansions.update + params: + updates: + - { key: build_type, value: Release } + - func: setup + - func: start_mongod + vars: + mongodb_version: "5.0" + - func: fetch_c_driver_source + - func: compile + vars: + RUN_DISTCHECK: 1 + USE_STATIC_LIBS: 1 + - func: fetch-det + - func: run_kms_servers + - func: install_c_driver + - func: test + vars: + MONGOCXX_TEST_TOPOLOGY: single + USE_STATIC_LIBS: 1 + - name: integration-ubuntu2004-release-static-extra_alignment-5.0-single + run_on: ubuntu2004-large + tags: [integration, ubuntu2004, release, static, extra_alignment, "5.0", single] + commands: + - command: expansions.update + params: + updates: + - { key: build_type, value: Release } + - func: setup + - func: start_mongod + vars: + mongodb_version: "5.0" + - func: fetch_c_driver_source + - func: compile + vars: + BSON_EXTRA_ALIGNMENT: 1 + USE_STATIC_LIBS: 1 + - func: fetch-det + - func: run_kms_servers + - func: install_c_driver + vars: + BSON_EXTRA_ALIGNMENT: 1 + - func: test + vars: + MONGOCXX_TEST_TOPOLOGY: single + USE_STATIC_LIBS: 1 + - name: integration-ubuntu2004-release-static-extra_alignment-latest-single + run_on: ubuntu2004-large + tags: [integration, ubuntu2004, release, static, extra_alignment, latest, single] + commands: + - command: expansions.update + params: + updates: + - { key: build_type, value: Release } + - func: setup + - func: start_mongod + vars: + mongodb_version: latest + - func: fetch_c_driver_source + - func: compile + vars: + BSON_EXTRA_ALIGNMENT: 1 + USE_STATIC_LIBS: 1 + - func: fetch-det + - func: run_kms_servers + - func: install_c_driver + vars: + BSON_EXTRA_ALIGNMENT: 1 + - func: test + vars: + MONGOCXX_TEST_TOPOLOGY: single + USE_STATIC_LIBS: 1 + - name: integration-ubuntu2004-release-static-latest-single + run_on: ubuntu2004-large + tags: [integration, ubuntu2004, release, static, latest, single] + commands: + - command: expansions.update + params: + updates: + - { key: build_type, value: Release } + - func: setup + - func: start_mongod + vars: + mongodb_version: latest + - func: fetch_c_driver_source + - func: compile + vars: + RUN_DISTCHECK: 1 + USE_STATIC_LIBS: 1 + - func: fetch-det + - func: run_kms_servers + - func: install_c_driver + - func: test + vars: + MONGOCXX_TEST_TOPOLOGY: single + USE_STATIC_LIBS: 1 + - name: integration-windows-2019-vs2019-x64-debug-shared-4.0-single + run_on: windows-vsCurrent-large + tags: [integration, windows-vsCurrent, debug, shared, "4.0", single] + commands: + - command: expansions.update + params: + updates: + - { key: build_type, value: Debug } + - { key: generator, value: Visual Studio 16 2019 } + - { key: platform, value: x64 } + - func: setup + - func: start_mongod + vars: + mongodb_version: "4.0" + - func: fetch_c_driver_source + - func: compile + vars: + RUN_DISTCHECK: 1 + - func: fetch-det + - func: run_kms_servers + - func: install_c_driver + - func: test + vars: + MONGOCXX_TEST_TOPOLOGY: single + example_projects_cxx_standard: 17 + - name: integration-windows-2019-vs2019-x64-debug-shared-4.2-single + run_on: windows-vsCurrent-large + tags: [integration, windows-vsCurrent, debug, shared, "4.2", single] + commands: + - command: expansions.update + params: + updates: + - { key: build_type, value: Debug } + - { key: generator, value: Visual Studio 16 2019 } + - { key: platform, value: x64 } + - func: setup + - func: start_mongod + vars: + mongodb_version: "4.2" + - func: fetch_c_driver_source + - func: compile + vars: + RUN_DISTCHECK: 1 + - func: fetch-det + - func: run_kms_servers + - func: install_c_driver + - func: test + vars: + MONGOCXX_TEST_TOPOLOGY: single + example_projects_cxx_standard: 17 + - name: integration-windows-2019-vs2019-x64-debug-shared-4.4-single + run_on: windows-vsCurrent-large + tags: [integration, windows-vsCurrent, debug, shared, "4.4", single] + commands: + - command: expansions.update + params: + updates: + - { key: build_type, value: Debug } + - { key: generator, value: Visual Studio 16 2019 } + - { key: platform, value: x64 } + - func: setup + - func: start_mongod + vars: + mongodb_version: "4.4" + - func: fetch_c_driver_source + - func: compile + vars: + RUN_DISTCHECK: 1 + - func: fetch-det + - func: run_kms_servers + - func: install_c_driver + - func: test + vars: + MONGOCXX_TEST_TOPOLOGY: single + example_projects_cxx_standard: 17 + - name: integration-windows-2019-vs2019-x64-debug-shared-5.0-single + run_on: windows-vsCurrent-large + tags: [integration, windows-vsCurrent, debug, shared, "5.0", single] + commands: + - command: expansions.update + params: + updates: + - { key: build_type, value: Debug } + - { key: generator, value: Visual Studio 16 2019 } + - { key: platform, value: x64 } + - func: setup + - func: start_mongod + vars: + mongodb_version: "5.0" + - func: fetch_c_driver_source + - func: compile + vars: + RUN_DISTCHECK: 1 + - func: fetch-det + - func: run_kms_servers + - func: install_c_driver + - func: test + vars: + MONGOCXX_TEST_TOPOLOGY: single + example_projects_cxx_standard: 17 + - name: integration-windows-2019-vs2019-x64-debug-shared-6.0-single + run_on: windows-vsCurrent-large + tags: [integration, windows-vsCurrent, debug, shared, "6.0", single] + commands: + - command: expansions.update + params: + updates: + - { key: build_type, value: Debug } + - { key: generator, value: Visual Studio 16 2019 } + - { key: platform, value: x64 } + - func: setup + - func: start_mongod + vars: + mongodb_version: "6.0" + - func: fetch_c_driver_source + - func: compile + vars: + RUN_DISTCHECK: 1 + - func: fetch-det + - func: run_kms_servers + - func: install_c_driver + - func: test + vars: + MONGOCXX_TEST_TOPOLOGY: single + example_projects_cxx_standard: 17 + - name: integration-windows-2019-vs2019-x64-debug-shared-7.0-single + run_on: windows-vsCurrent-large + tags: [integration, windows-vsCurrent, debug, shared, "7.0", single] + commands: + - command: expansions.update + params: + updates: + - { key: build_type, value: Debug } + - { key: generator, value: Visual Studio 16 2019 } + - { key: platform, value: x64 } + - func: setup + - func: start_mongod + vars: + mongodb_version: "7.0" + - func: fetch_c_driver_source + - func: compile + vars: + RUN_DISTCHECK: 1 + - func: fetch-det + - func: run_kms_servers + - func: install_c_driver + - func: test + vars: + MONGOCXX_TEST_TOPOLOGY: single + example_projects_cxx_standard: 17 + - name: integration-windows-2019-vs2019-x64-debug-shared-8.0-single + run_on: windows-vsCurrent-large + tags: [integration, windows-vsCurrent, debug, shared, "8.0", single] + commands: + - command: expansions.update + params: + updates: + - { key: build_type, value: Debug } + - { key: generator, value: Visual Studio 16 2019 } + - { key: platform, value: x64 } + - func: setup + - func: start_mongod + vars: + mongodb_version: "8.0" + - func: fetch_c_driver_source + - func: compile + vars: + RUN_DISTCHECK: 1 + - func: fetch-det + - func: run_kms_servers + - func: install_c_driver + - func: test + vars: + MONGOCXX_TEST_TOPOLOGY: single + example_projects_cxx_standard: 17 + - name: integration-windows-2019-vs2019-x64-debug-shared-extra_alignment-4.0-single + run_on: windows-vsCurrent-large + tags: [integration, windows-vsCurrent, debug, shared, extra_alignment, "4.0", single] + commands: + - command: expansions.update + params: + updates: + - { key: build_type, value: Debug } + - { key: generator, value: Visual Studio 16 2019 } + - { key: platform, value: x64 } + - func: setup + - func: start_mongod + vars: + mongodb_version: "4.0" + - func: fetch_c_driver_source + - func: compile + vars: + BSON_EXTRA_ALIGNMENT: 1 + - func: fetch-det + - func: run_kms_servers + - func: install_c_driver + vars: + BSON_EXTRA_ALIGNMENT: 1 + - func: test + vars: + MONGOCXX_TEST_TOPOLOGY: single + example_projects_cxx_standard: 17 + - name: integration-windows-2019-vs2019-x64-debug-shared-extra_alignment-4.2-single + run_on: windows-vsCurrent-large + tags: [integration, windows-vsCurrent, debug, shared, extra_alignment, "4.2", single] + commands: + - command: expansions.update + params: + updates: + - { key: build_type, value: Debug } + - { key: generator, value: Visual Studio 16 2019 } + - { key: platform, value: x64 } + - func: setup + - func: start_mongod + vars: + mongodb_version: "4.2" + - func: fetch_c_driver_source + - func: compile + vars: + BSON_EXTRA_ALIGNMENT: 1 + - func: fetch-det + - func: run_kms_servers + - func: install_c_driver + vars: + BSON_EXTRA_ALIGNMENT: 1 + - func: test + vars: + MONGOCXX_TEST_TOPOLOGY: single + example_projects_cxx_standard: 17 + - name: integration-windows-2019-vs2019-x64-debug-shared-extra_alignment-4.4-single + run_on: windows-vsCurrent-large + tags: [integration, windows-vsCurrent, debug, shared, extra_alignment, "4.4", single] + commands: + - command: expansions.update + params: + updates: + - { key: build_type, value: Debug } + - { key: generator, value: Visual Studio 16 2019 } + - { key: platform, value: x64 } + - func: setup + - func: start_mongod + vars: + mongodb_version: "4.4" + - func: fetch_c_driver_source + - func: compile + vars: + BSON_EXTRA_ALIGNMENT: 1 + - func: fetch-det + - func: run_kms_servers + - func: install_c_driver + vars: + BSON_EXTRA_ALIGNMENT: 1 + - func: test + vars: + MONGOCXX_TEST_TOPOLOGY: single + example_projects_cxx_standard: 17 + - name: integration-windows-2019-vs2019-x64-debug-shared-extra_alignment-5.0-single + run_on: windows-vsCurrent-large + tags: [integration, windows-vsCurrent, debug, shared, extra_alignment, "5.0", single] + commands: + - command: expansions.update + params: + updates: + - { key: build_type, value: Debug } + - { key: generator, value: Visual Studio 16 2019 } + - { key: platform, value: x64 } + - func: setup + - func: start_mongod + vars: + mongodb_version: "5.0" + - func: fetch_c_driver_source + - func: compile + vars: + BSON_EXTRA_ALIGNMENT: 1 + - func: fetch-det + - func: run_kms_servers + - func: install_c_driver + vars: + BSON_EXTRA_ALIGNMENT: 1 + - func: test + vars: + MONGOCXX_TEST_TOPOLOGY: single + example_projects_cxx_standard: 17 + - name: integration-windows-2019-vs2019-x64-debug-shared-extra_alignment-6.0-single + run_on: windows-vsCurrent-large + tags: [integration, windows-vsCurrent, debug, shared, extra_alignment, "6.0", single] + commands: + - command: expansions.update + params: + updates: + - { key: build_type, value: Debug } + - { key: generator, value: Visual Studio 16 2019 } + - { key: platform, value: x64 } + - func: setup + - func: start_mongod + vars: + mongodb_version: "6.0" + - func: fetch_c_driver_source + - func: compile + vars: + BSON_EXTRA_ALIGNMENT: 1 + - func: fetch-det + - func: run_kms_servers + - func: install_c_driver + vars: + BSON_EXTRA_ALIGNMENT: 1 + - func: test + vars: + MONGOCXX_TEST_TOPOLOGY: single + example_projects_cxx_standard: 17 + - name: integration-windows-2019-vs2019-x64-debug-shared-extra_alignment-7.0-single + run_on: windows-vsCurrent-large + tags: [integration, windows-vsCurrent, debug, shared, extra_alignment, "7.0", single] + commands: + - command: expansions.update + params: + updates: + - { key: build_type, value: Debug } + - { key: generator, value: Visual Studio 16 2019 } + - { key: platform, value: x64 } + - func: setup + - func: start_mongod + vars: + mongodb_version: "7.0" + - func: fetch_c_driver_source + - func: compile + vars: + BSON_EXTRA_ALIGNMENT: 1 + - func: fetch-det + - func: run_kms_servers + - func: install_c_driver + vars: + BSON_EXTRA_ALIGNMENT: 1 + - func: test + vars: + MONGOCXX_TEST_TOPOLOGY: single + example_projects_cxx_standard: 17 + - name: integration-windows-2019-vs2019-x64-debug-shared-extra_alignment-8.0-single + run_on: windows-vsCurrent-large + tags: [integration, windows-vsCurrent, debug, shared, extra_alignment, "8.0", single] + commands: + - command: expansions.update + params: + updates: + - { key: build_type, value: Debug } + - { key: generator, value: Visual Studio 16 2019 } + - { key: platform, value: x64 } + - func: setup + - func: start_mongod + vars: + mongodb_version: "8.0" + - func: fetch_c_driver_source + - func: compile + vars: + BSON_EXTRA_ALIGNMENT: 1 + - func: fetch-det + - func: run_kms_servers + - func: install_c_driver + vars: + BSON_EXTRA_ALIGNMENT: 1 + - func: test + vars: + MONGOCXX_TEST_TOPOLOGY: single + example_projects_cxx_standard: 17 + - name: integration-windows-2019-vs2019-x64-debug-shared-extra_alignment-latest-single + run_on: windows-vsCurrent-large + tags: [integration, windows-vsCurrent, debug, shared, extra_alignment, latest, single] + commands: + - command: expansions.update + params: + updates: + - { key: build_type, value: Debug } + - { key: generator, value: Visual Studio 16 2019 } + - { key: platform, value: x64 } + - func: setup + - func: start_mongod + vars: + mongodb_version: latest + - func: fetch_c_driver_source + - func: compile + vars: + BSON_EXTRA_ALIGNMENT: 1 + - func: fetch-det + - func: run_kms_servers + - func: install_c_driver + vars: + BSON_EXTRA_ALIGNMENT: 1 + - func: test + vars: + MONGOCXX_TEST_TOPOLOGY: single + example_projects_cxx_standard: 17 + - name: integration-windows-2019-vs2019-x64-debug-shared-latest-single + run_on: windows-vsCurrent-large + tags: [integration, windows-vsCurrent, debug, shared, latest, single] + commands: + - command: expansions.update + params: + updates: + - { key: build_type, value: Debug } + - { key: generator, value: Visual Studio 16 2019 } + - { key: platform, value: x64 } + - func: setup + - func: start_mongod + vars: + mongodb_version: latest + - func: fetch_c_driver_source + - func: compile + vars: + RUN_DISTCHECK: 1 + - func: fetch-det + - func: run_kms_servers + - func: install_c_driver + - func: test + vars: + MONGOCXX_TEST_TOPOLOGY: single + example_projects_cxx_standard: 17 - name: lint run_on: ubuntu1804-large tags: [lint, ubuntu1804] diff --git a/.evergreen/generated_configs/variants.yml b/.evergreen/generated_configs/variants.yml index d938f05c0d..5ed164686d 100644 --- a/.evergreen/generated_configs/variants.yml +++ b/.evergreen/generated_configs/variants.yml @@ -52,6 +52,14 @@ buildvariants: display_name: Docker Build tasks: - name: .docker-build + - name: integration-matrix + display_name: integration-matrix + tasks: + - name: .integration .rhel81-power8 + batchtime: 1440 + - name: .integration .rhel83-zseries + batchtime: 1440 + - name: .integration !.rhel81-power8 !.rhel83-zseries - name: lint display_name: Lint tasks: diff --git a/.mci.yml b/.mci.yml index 529ed3876d..7e7f9965e9 100644 --- a/.mci.yml +++ b/.mci.yml @@ -15,962 +15,9 @@ include: ####################################### post: - - func: "stop_mongod" - - func: "backtrace" - # Workaround for CXX-2040 - # - func: "upload working dir" - - func: "upload mongo orchestration artifacts" - - func: "upload code coverage" - -####################################### -# Tasks # -####################################### - -tasks: - - name: compile_and_test_with_shared_libs - commands: - - func: "setup" - - func: "start_mongod" - - func: "fetch_c_driver_source" - - func: "compile" - vars: - RUN_DISTCHECK: 1 - - func: "fetch-det" - - func: "run_kms_servers" - # Call "install_c_driver" before "test" to build static C driver libraries. Example projects require static C driver libraries. - - func: "install_c_driver" - - func: "test" - vars: - MONGOCXX_TEST_TOPOLOGY: single - - - name: compile_and_test_with_shared_libs_extra_alignment - commands: - - func: "setup" - - func: "start_mongod" - - func: "fetch_c_driver_source" - vars: - BSON_EXTRA_ALIGNMENT: 1 - - func: "compile" - - func: "fetch-det" - - func: "run_kms_servers" - - func: "install_c_driver" - vars: - BSON_EXTRA_ALIGNMENT: 1 - - func: "test" - vars: - MONGOCXX_TEST_TOPOLOGY: single - - - name: compile_and_test_with_shared_libs_cxx20 - commands: - - func: "setup" - - func: "start_mongod" - - func: "fetch_c_driver_source" - - func: "compile" - vars: - RUN_DISTCHECK: 1 - REQUIRED_CXX_STANDARD: 20 - - func: "fetch-det" - - func: "run_kms_servers" - - func: "install_c_driver" - - func: "test" - vars: - example_projects_cxx_standard: 20 - MONGOCXX_TEST_TOPOLOGY: single - REQUIRED_CXX_STANDARD: 20 - - - name: compile_and_test_with_shared_libs_extra_alignment_cxx20 - commands: - - func: "setup" - - func: "start_mongod" - - func: "fetch_c_driver_source" - vars: - BSON_EXTRA_ALIGNMENT: 1 - - func: "compile" - vars: - REQUIRED_CXX_STANDARD: 20 - - func: "fetch-det" - - func: "run_kms_servers" - - func: "install_c_driver" - vars: - BSON_EXTRA_ALIGNMENT: 1 - - func: "test" - vars: - example_projects_cxx_standard: 20 - MONGOCXX_TEST_TOPOLOGY: single - REQUIRED_CXX_STANDARD: 20 - - - name: compile_and_test_auth_with_shared_libs - commands: - - func: "setup" - - func: "start_mongod" - vars: - AUTH: auth - - func: "fetch_c_driver_source" - - func: "compile" - - func: "test auth" - - func: "test atlas connectivity" - - - name: compile_and_test_with_static_libs - commands: - - func: "setup" - - func: "start_mongod" - - func: "fetch_c_driver_source" - - func: "compile" - vars: - USE_STATIC_LIBS: 1 - RUN_DISTCHECK: 1 - - func: "fetch-det" - - func: "run_kms_servers" - - func: "install_c_driver" - - func: "test" - vars: - MONGOCXX_TEST_TOPOLOGY: single - USE_STATIC_LIBS: 1 - - - name: compile_and_test_with_static_libs_extra_alignment - commands: - - func: "setup" - - func: "start_mongod" - - func: "fetch_c_driver_source" - vars: - BSON_EXTRA_ALIGNMENT: 1 - - func: "compile" - vars: - USE_STATIC_LIBS: 1 - - func: "fetch-det" - - func: "run_kms_servers" - - func: "install_c_driver" - vars: - BSON_EXTRA_ALIGNMENT: 1 - - func: "test" - vars: - MONGOCXX_TEST_TOPOLOGY: single - USE_STATIC_LIBS: 1 - - - name: compile_and_test_with_shared_libs_replica_set - commands: - - func: "setup" - - func: "start_mongod" - vars: - TOPOLOGY: "replica_set" - - func: "fetch_c_driver_source" - - func: "compile" - vars: - RUN_DISTCHECK: 1 - - func: "fetch-det" - - func: "run_kms_servers" - - func: "install_c_driver" - - func: "test" - vars: - MONGOCXX_TEST_TOPOLOGY: replica - - - name: compile_and_test_with_shared_libs_sharded_cluster - commands: - - func: "setup" - - func: "start_mongod" - vars: - TOPOLOGY: "sharded_cluster" - - func: "fetch_c_driver_source" - - func: "compile" - vars: - RUN_DISTCHECK: 1 - - func: "fetch-det" - - func: "run_kms_servers" - - func: "install_c_driver" - - func: "test" - vars: - MONGOCXX_TEST_TOPOLOGY: sharded - - # Auto downloading the C driver in the C++ build does not currently include - # support for libmongocrypt, therefore it is not configured with - # -DENABLE_CLIENT_SIDE_ENCRYPTION=ON. For now, CSFLE tests will need to have - # a manually configured C driver, hence the need to seperate this task. - - name: compile_and_test_with_shared_libs_replica_set_with_libmongocrypt - commands: - - func: "setup" - - func: "start_mongod" - vars: - TOPOLOGY: "replica_set" - - func: "install_c_driver" - - func: "compile" - vars: - RUN_DISTCHECK: 1 - - func: "fetch-det" - - func: "run_kms_servers" - - func: "test" - vars: - MONGOCXX_TEST_TOPOLOGY: replica - - - name: compile_and_test_with_shared_libs_sharded_cluster_with_libmongocrypt - commands: - - func: "setup" - - func: "start_mongod" - vars: - TOPOLOGY: "sharded_cluster" - - func: "install_c_driver" - - func: "compile" - vars: - RUN_DISTCHECK: 1 - - func: "fetch-det" - - func: "run_kms_servers" - - func: "test" - vars: - MONGOCXX_TEST_TOPOLOGY: sharded - - - name: build_example_with_add_subdirectory - commands: - - func: "setup" - - func: "start_mongod" - - command: shell.exec - type: test - params: - working_dir: "mongo-cxx-driver" - shell: bash - script: |- - set -o errexit - cd examples/add_subdirectory - [ -d mongo-c-driver ] || git clone --depth 1 https://github.com/mongodb/mongo-c-driver - rsync -aq --exclude='examples/add_subdirectory' $(readlink -f ../..) . - [ -d build ] || mkdir build - . ./mongo-c-driver/.evergreen/scripts/find-cmake-latest.sh - export cmake_binary - cmake_binary="$(find_cmake_latest)" - # Use ccache if available. - . ./mongo-c-driver/.evergreen/scripts/find-ccache.sh - find_ccache_and_export_vars "$(pwd)" || true - command -v "$cmake_binary" - "$cmake_binary" -S . -B build -DENABLE_AUTOMATIC_INIT_AND_CLEANUP=OFF - "$cmake_binary" --build build - ./build/hello_mongocxx - -####################################### -# Buildvariants # -####################################### - -buildvariants: - ####################################### - # Standard MongoDB Integration Tests # - ####################################### - - name: integration-ubuntu2004-latest-single - display_name: "Ubuntu 20.04 Debug (MongoDB Latest)" - run_on: ubuntu2004-large - expansions: - mongodb_version: "latest" - build_type: "Debug" - ENABLE_CODE_COVERAGE: ON - tasks: - - name: compile_and_test_with_shared_libs - - name: compile_and_test_with_shared_libs_extra_alignment - - - name: integration-ubuntu2004-8.0-single - display_name: "Ubuntu 20.04 Debug (MongoDB 8.0)" - run_on: ubuntu2004-large - expansions: - mongodb_version: "8.0" - build_type: "Debug" - ENABLE_CODE_COVERAGE: ON - tasks: - - name: compile_and_test_with_shared_libs - - name: compile_and_test_with_shared_libs_extra_alignment - - - name: integration-ubuntu2004-7.0-single - display_name: "Ubuntu 20.04 Debug (MongoDB 7.0)" - run_on: ubuntu2004-large - expansions: - mongodb_version: "7.0" - build_type: "Debug" - ENABLE_CODE_COVERAGE: ON - tasks: - - name: compile_and_test_with_shared_libs - - name: compile_and_test_with_shared_libs_extra_alignment - - - name: integration-ubuntu1804-6.0-single - display_name: "Ubuntu 18.04 Debug (MongoDB 6.0)" - run_on: ubuntu1804-large - expansions: - mongodb_version: "6.0" - build_type: "Debug" - ENABLE_CODE_COVERAGE: ON - tasks: - - name: compile_and_test_with_shared_libs - - name: compile_and_test_with_shared_libs_extra_alignment - - - name: integration-ubuntu1804-5.0-single - display_name: "Ubuntu 18.04 Debug (MongoDB 5.0)" - run_on: ubuntu1804-large - expansions: - mongodb_version: "5.0" - build_type: "Debug" - ENABLE_CODE_COVERAGE: ON - tasks: - - name: compile_and_test_with_shared_libs - - name: compile_and_test_with_shared_libs_extra_alignment - - - name: integration-ubuntu1804-4.4-single - display_name: "Ubuntu 18.04 Debug (MongoDB 4.4)" - run_on: ubuntu1804-large - expansions: - mongodb_version: "4.4" - build_type: "Debug" - ENABLE_CODE_COVERAGE: ON - tasks: - - name: compile_and_test_with_shared_libs - - name: compile_and_test_with_shared_libs_extra_alignment - - - name: integration-ubuntu1804-4.2-single - display_name: "Ubuntu 18.04 Debug (MongoDB 4.2)" - run_on: ubuntu1804-large - expansions: - mongodb_version: "4.2" - build_type: "Debug" - ENABLE_CODE_COVERAGE: ON - tasks: - - name: compile_and_test_with_shared_libs - - name: compile_and_test_with_shared_libs_extra_alignment - - - name: integration-ubuntu1804-4.0-single - display_name: "Ubuntu 18.04 Debug (MongoDB 4.0)" - run_on: ubuntu1804-large - expansions: - mongodb_version: "4.0" - build_type: "Debug" - ENABLE_CODE_COVERAGE: ON - tasks: - - name: compile_and_test_with_shared_libs - - name: compile_and_test_with_shared_libs_extra_alignment - - - name: integration-vs2019-latest-single - display_name: "Windows (VS 2019) Debug (MongoDB Latest)" - run_on: windows-vsCurrent-large - expansions: - mongodb_version: "latest" - build_type: "Debug" # Same for Windows and Linux - generator: Visual Studio 16 2019 - platform: x64 - example_projects_cxx_standard: 17 - tasks: - - name: compile_and_test_with_shared_libs - - name: compile_and_test_with_shared_libs_extra_alignment - - - name: integration-vs2019-8.0-single - display_name: "Windows (VS 2019) Debug (MongoDB 8.0)" - run_on: windows-vsCurrent-large - expansions: - mongodb_version: "8.0" - build_type: "Debug" # Same for Windows and Linux - generator: Visual Studio 16 2019 - platform: x64 - example_projects_cxx_standard: 17 - tasks: - - name: compile_and_test_with_shared_libs - - name: compile_and_test_with_shared_libs_extra_alignment - - - name: integration-vs2019-7.0-single - display_name: "Windows (VS 2019) Debug (MongoDB 7.0)" - run_on: windows-vsCurrent-large - expansions: - mongodb_version: "7.0" - build_type: "Debug" # Same for Windows and Linux - generator: Visual Studio 16 2019 - platform: x64 - example_projects_cxx_standard: 17 - tasks: - - name: compile_and_test_with_shared_libs - - name: compile_and_test_with_shared_libs_extra_alignment - - - name: integration-vs2019-6.0-single - display_name: "Windows (VS 2019) Debug (MongoDB 6.0)" - run_on: windows-vsCurrent-large - expansions: - mongodb_version: "6.0" - build_type: "Debug" # Same for Windows and Linux - generator: Visual Studio 16 2019 - platform: x64 - example_projects_cxx_standard: 17 - tasks: - - name: compile_and_test_with_shared_libs - - name: compile_and_test_with_shared_libs_extra_alignment - - - name: integration-vs2019-5.0-single - display_name: "Windows (VS 2019) Debug (MongoDB 5.0)" - run_on: windows-vsCurrent-large - expansions: - mongodb_version: "5.0" - build_type: "Debug" # Same for Windows and Linux - generator: Visual Studio 16 2019 - platform: x64 - example_projects_cxx_standard: 17 - tasks: - - name: compile_and_test_with_shared_libs - - name: compile_and_test_with_shared_libs_extra_alignment - - - name: integration-vs2019-4.4-single - display_name: "Windows (VS 2019) Debug (MongoDB 4.4)" - run_on: windows-vsCurrent-large - expansions: - mongodb_version: "4.4" - build_type: "Debug" # Same for Windows and Linux - generator: Visual Studio 16 2019 - platform: x64 - example_projects_cxx_standard: 17 - tasks: - - name: compile_and_test_with_shared_libs - - name: compile_and_test_with_shared_libs_extra_alignment - - - name: integration-vs2019-4.2-single - display_name: "Windows (VS 2019) Debug (MongoDB 4.2)" - run_on: windows-vsCurrent-large - expansions: - mongodb_version: "4.2" - build_type: "Debug" # Same for Windows and Linux - generator: Visual Studio 16 2019 - platform: x64 - example_projects_cxx_standard: 17 - tasks: - - name: compile_and_test_with_shared_libs - - name: compile_and_test_with_shared_libs_extra_alignment - - - name: integration-vs2019-4.0-single - display_name: "Windows (VS 2019) Debug (MongoDB 4.0)" - run_on: windows-vsCurrent-large - expansions: - mongodb_version: "4.0" - build_type: "Debug" # Same for Windows and Linux - generator: Visual Studio 16 2019 - platform: x64 - example_projects_cxx_standard: 17 - tasks: - - name: compile_and_test_with_shared_libs - - name: compile_and_test_with_shared_libs_extra_alignment - - - name: integration-ubuntu2004-latest-replica - display_name: "Ubuntu 20.04 Debug replica set (MongoDB Latest)" - run_on: ubuntu2004-large - expansions: - mongodb_version: "latest" - build_type: "Debug" - ENABLE_CODE_COVERAGE: ON - tasks: - - name: compile_and_test_with_shared_libs_replica_set_with_libmongocrypt - - - name: integration-ubuntu2004-8.0-replica - display_name: "Ubuntu 20.04 Debug replica set (MongoDB 8.0)" - run_on: ubuntu2004-large - expansions: - mongodb_version: "8.0" - build_type: "Debug" - ENABLE_CODE_COVERAGE: ON - tasks: - - name: compile_and_test_with_shared_libs_replica_set_with_libmongocrypt - - - name: integration-ubuntu2004-7.0-replica - display_name: "Ubuntu 20.04 Debug replica set (MongoDB 7.0)" - run_on: ubuntu2004-large - expansions: - mongodb_version: "7.0" - build_type: "Debug" - ENABLE_CODE_COVERAGE: ON - tasks: - - name: compile_and_test_with_shared_libs_replica_set_with_libmongocrypt - - - name: integration-ubuntu1804-6.0-replica - display_name: "Ubuntu 18.04 Debug replica set (MongoDB 6.0)" - run_on: ubuntu1804-large - expansions: - mongodb_version: "6.0" - build_type: "Debug" - ENABLE_CODE_COVERAGE: ON - tasks: - - name: compile_and_test_with_shared_libs_replica_set_with_libmongocrypt - - - name: integration-ubuntu1804-5.0-replica - display_name: "Ubuntu 18.04 Debug replica set (MongoDB 5.0)" - run_on: ubuntu1804-large - expansions: - mongodb_version: "5.0" - build_type: "Debug" - ENABLE_CODE_COVERAGE: ON - tasks: - - name: compile_and_test_with_shared_libs_replica_set_with_libmongocrypt - - - name: integration-ubuntu1804-4.4-replica - display_name: "Ubuntu 18.04 Debug replica set (MongoDB 4.4)" - run_on: ubuntu1804-large - expansions: - mongodb_version: "4.4" - build_type: "Debug" - ENABLE_CODE_COVERAGE: ON - tasks: - - name: compile_and_test_with_shared_libs_replica_set_with_libmongocrypt - - - name: integration-ubuntu1804-4.2-replica - display_name: "Ubuntu 18.04 Debug replica set (MongoDB 4.2)" - run_on: ubuntu1804-large - expansions: - mongodb_version: "4.2" - build_type: "Debug" - ENABLE_CODE_COVERAGE: ON - tasks: - - name: compile_and_test_with_shared_libs_replica_set_with_libmongocrypt - - - name: integration-ubuntu1804-4.0-replica - display_name: "Ubuntu 18.04 Debug replica set (MongoDB 4.0)" - run_on: ubuntu1804-large - expansions: - mongodb_version: "4.0" - build_type: "Debug" - ENABLE_CODE_COVERAGE: ON - tasks: - - name: compile_and_test_with_shared_libs_replica_set_with_libmongocrypt - - - name: integration-ubuntu2004-latest-sharded - display_name: "Ubuntu 20.04 Debug sharded cluster (MongoDB Latest)" - run_on: ubuntu2004-large - expansions: - mongodb_version: "latest" - build_type: "Debug" - ENABLE_CODE_COVERAGE: ON - tasks: - - name: compile_and_test_with_shared_libs_sharded_cluster_with_libmongocrypt - - - name: integration-ubuntu2004-8.0-sharded - display_name: "Ubuntu 20.04 Debug sharded cluster (MongoDB 8.0)" - run_on: ubuntu2004-large - expansions: - mongodb_version: "8.0" - build_type: "Debug" - ENABLE_CODE_COVERAGE: ON - tasks: - - name: compile_and_test_with_shared_libs_sharded_cluster_with_libmongocrypt - - - name: integration-ubuntu2004-7.0-sharded - display_name: "Ubuntu 20.04 Debug sharded cluster (MongoDB 7.0)" - run_on: ubuntu2004-large - expansions: - mongodb_version: "7.0" - build_type: "Debug" - ENABLE_CODE_COVERAGE: ON - tasks: - - name: compile_and_test_with_shared_libs_sharded_cluster_with_libmongocrypt - - - name: integration-ubuntu1804-6.0-sharded - display_name: "Ubuntu 18.04 Debug sharded cluster (MongoDB 6.0)" - run_on: ubuntu1804-large - expansions: - mongodb_version: "6.0" - build_type: "Debug" - ENABLE_CODE_COVERAGE: ON - tasks: - - name: compile_and_test_with_shared_libs_sharded_cluster_with_libmongocrypt - - - name: integration-ubuntu1804-5.0-sharded - display_name: "Ubuntu 18.04 Debug sharded cluster (MongoDB 5.0)" - run_on: ubuntu1804-large - expansions: - mongodb_version: "5.0" - build_type: "Debug" - ENABLE_CODE_COVERAGE: ON - tasks: - - name: compile_and_test_with_shared_libs_sharded_cluster_with_libmongocrypt - - - name: integration-ubuntu1804-4.4-sharded - display_name: "Ubuntu 18.04 Debug sharded cluster (MongoDB 4.4)" - run_on: ubuntu1804-large - expansions: - mongodb_version: "4.4" - build_type: "Debug" - ENABLE_CODE_COVERAGE: ON - tasks: - - name: compile_and_test_with_shared_libs_sharded_cluster_with_libmongocrypt - - - name: integration-ubuntu1804-4.2-sharded - display_name: "Ubuntu 18.04 Debug sharded cluster (MongoDB 4.2)" - run_on: ubuntu1804-large - expansions: - mongodb_version: "4.2" - build_type: "Debug" - ENABLE_CODE_COVERAGE: ON - tasks: - - name: compile_and_test_with_shared_libs_sharded_cluster_with_libmongocrypt - - - name: integration-ubuntu1804-4.0-sharded - display_name: "Ubuntu 18.04 Debug sharded cluster (MongoDB 4.0)" - run_on: ubuntu1804-large - expansions: - mongodb_version: "4.0" - build_type: "Debug" - ENABLE_CODE_COVERAGE: ON - tasks: - - name: compile_and_test_with_shared_libs_sharded_cluster_with_libmongocrypt - - - name: integration-auth-ubuntu2004-latest-single - display_name: "Ubuntu 20.04 Debug Latest Auth" - run_on: ubuntu2004-large - expansions: - mongodb_version: "latest" - build_type: "Debug" - ENABLE_CODE_COVERAGE: ON - tasks: - - name: compile_and_test_auth_with_shared_libs - - - name: integration-auth-vs2017-latest-single - display_name: "Windows (VS 2017) Debug Latest Auth" - run_on: windows-vsCurrent-large - expansions: - mongodb_version: "latest" - build_type: "Debug" # Same for Windows and Linux - generator: Visual Studio 15 2017 - platform: x64 - example_projects_cxx_standard: 17 - tasks: - - name: compile_and_test_auth_with_shared_libs - - - name: integration-auth-vs2019-latest-single - display_name: "Windows (VS 2019) Debug Latest Auth" - run_on: windows-vsCurrent-large - expansions: - mongodb_version: "latest" - build_type: "Debug" # Same for Windows and Linux - generator: Visual Studio 16 2019 - platform: x64 - example_projects_cxx_standard: 17 - tasks: - - name: compile_and_test_auth_with_shared_libs - - - name: integration-mongocryptd-ubuntu2004-latest - display_name: "Ubuntu 20.04 Debug (MongoDB Latest) with mongocryptd" - run_on: ubuntu2004-large - expansions: - mongodb_version: "latest" - use_mongocryptd: true - build_type: "Debug" - ENABLE_CODE_COVERAGE: ON - tasks: - # "Drivers MUST run all tests with mongocryptd on at least one platform for all tested server versions (4.2+)." - - name: compile_and_test_with_shared_libs_replica_set_with_libmongocrypt - - name: compile_and_test_with_shared_libs_sharded_cluster_with_libmongocrypt - - - name: integration-mongocryptd-ubuntu1804-5.0 - display_name: "Ubuntu 18.04 Debug (MongoDB 5.0) with mongocryptd" - run_on: ubuntu1804-large - expansions: - mongodb_version: "5.0" - use_mongocryptd: true - build_type: "Debug" - ENABLE_CODE_COVERAGE: ON - tasks: - # "Drivers MUST run all tests with mongocryptd on at least one platform for all tested server versions (4.2+)." - - name: compile_and_test_with_shared_libs_replica_set_with_libmongocrypt - - name: compile_and_test_with_shared_libs_sharded_cluster_with_libmongocrypt - - - name: integration-mongocryptd-ubuntu1804-4.4 - display_name: "Ubuntu 18.04 Debug (MongoDB 4.4) with mongocryptd" - run_on: ubuntu1804-large - expansions: - mongodb_version: "4.4" - use_mongocryptd: true - build_type: "Debug" - ENABLE_CODE_COVERAGE: ON - tasks: - # "Drivers MUST run all tests with mongocryptd on at least one platform for all tested server versions (4.2+)." - - name: compile_and_test_with_shared_libs_replica_set_with_libmongocrypt - - name: compile_and_test_with_shared_libs_sharded_cluster_with_libmongocrypt - - - name: integration-mongocryptd-ubuntu1804-4.2 - display_name: "Ubuntu 18.04 Debug (MongoDB 4.2) with mongocryptd" - run_on: ubuntu1804-large - expansions: - mongodb_version: "4.2" - use_mongocryptd: true - build_type: "Debug" - ENABLE_CODE_COVERAGE: ON - tasks: - # "Drivers MUST run all tests with mongocryptd on at least one platform for all tested server versions (4.2+)." - - name: compile_and_test_with_shared_libs_replica_set_with_libmongocrypt - - name: compile_and_test_with_shared_libs_sharded_cluster_with_libmongocrypt - - ####################################### - # Linux Buildvariants # - ####################################### - - - name: rhel9-release-latest - display_name: "RHEL 9 Release (MongoDB Latest)" - expansions: - build_type: "Release" - mongodb_version: "latest" - lib_dir: "lib64" - run_on: - - rhel90-large - tasks: - - name: compile_and_test_with_shared_libs - - name: compile_and_test_with_shared_libs_extra_alignment - - name: compile_and_test_with_shared_libs_cxx20 - - name: compile_and_test_with_shared_libs_extra_alignment_cxx20 - - name: compile_and_test_with_static_libs - - name: compile_and_test_with_static_libs_extra_alignment - - name: compile_and_test_with_shared_libs_replica_set_with_libmongocrypt - - name: compile_and_test_with_shared_libs_sharded_cluster_with_libmongocrypt - - name: build_example_with_add_subdirectory - - - name: arm-rhel9-release-latest - display_name: "arm64 RHEL 9 Release (MongoDB Latest)" - expansions: - build_type: "Release" - mongodb_version: "latest" - lib_dir: "lib64" - run_on: - - rhel90-arm64-large - tasks: - - name: compile_and_test_with_shared_libs - - name: compile_and_test_with_shared_libs_extra_alignment - - name: compile_and_test_with_shared_libs_cxx20 - - name: compile_and_test_with_shared_libs_extra_alignment_cxx20 - - name: compile_and_test_with_static_libs - - name: compile_and_test_with_static_libs_extra_alignment - - name: compile_and_test_with_shared_libs_replica_set_with_libmongocrypt - - name: compile_and_test_with_shared_libs_sharded_cluster_with_libmongocrypt - - name: build_example_with_add_subdirectory - - - name: debian12-release-latest - display_name: "Debian 12 Release (MongoDB Latest)" - expansions: - build_type: "Release" - mongodb_version: "latest" - run_on: - - debian12-large - tasks: - - name: compile_and_test_with_shared_libs - - name: compile_and_test_with_shared_libs_extra_alignment - - name: compile_and_test_with_shared_libs_cxx20 - - name: compile_and_test_with_shared_libs_extra_alignment_cxx20 - - name: compile_and_test_with_static_libs - - name: compile_and_test_with_static_libs_extra_alignment - - name: compile_and_test_with_shared_libs_replica_set_with_libmongocrypt - - name: compile_and_test_with_shared_libs_sharded_cluster_with_libmongocrypt - - name: build_example_with_add_subdirectory - - - name: debian11-release-50 - display_name: "Debian 11 Release (MongoDB 5.0)" - expansions: - build_type: "Release" - mongodb_version: "5.0" - run_on: - - debian11-large - tasks: - - name: compile_and_test_with_shared_libs - - name: compile_and_test_with_shared_libs_extra_alignment - - name: compile_and_test_with_shared_libs_cxx20 - - name: compile_and_test_with_shared_libs_extra_alignment_cxx20 - - name: compile_and_test_with_static_libs - - name: compile_and_test_with_static_libs_extra_alignment - - name: compile_and_test_with_shared_libs_replica_set - - name: compile_and_test_with_shared_libs_sharded_cluster - - name: build_example_with_add_subdirectory - - - name: debian10-release-50 - display_name: "Debian 10 Release (MongoDB 5.0)" - expansions: - build_type: "Release" - mongodb_version: "5.0" - run_on: - - debian10-large - tasks: - - name: compile_and_test_with_shared_libs - - name: compile_and_test_with_shared_libs_extra_alignment - - name: compile_and_test_with_static_libs - - name: compile_and_test_with_static_libs_extra_alignment - - name: compile_and_test_with_shared_libs_replica_set - - name: compile_and_test_with_shared_libs_sharded_cluster - - name: build_example_with_add_subdirectory - - - name: ubuntu2004-release-latest - display_name: "Ubuntu 20.04 Release (MongoDB Latest)" - expansions: - build_type: "Release" - mongodb_version: "latest" - run_on: - - ubuntu2004-large - tasks: - - name: compile_and_test_with_shared_libs - - name: compile_and_test_with_shared_libs_extra_alignment - - name: compile_and_test_with_static_libs - - name: compile_and_test_with_static_libs_extra_alignment - - name: compile_and_test_with_shared_libs_replica_set_with_libmongocrypt - - name: compile_and_test_with_shared_libs_sharded_cluster_with_libmongocrypt - - name: build_example_with_add_subdirectory - - - name: ubuntu2004-release-50 - display_name: "Ubuntu 20.04 Release (MongoDB 5.0)" - expansions: - build_type: "Release" - mongodb_version: "5.0" - run_on: - - ubuntu2004-large - tasks: - - name: compile_and_test_with_shared_libs - - name: compile_and_test_with_shared_libs_extra_alignment - - name: compile_and_test_with_static_libs - - name: compile_and_test_with_static_libs_extra_alignment - - name: compile_and_test_with_shared_libs_replica_set - - name: compile_and_test_with_shared_libs_sharded_cluster - - name: build_example_with_add_subdirectory - - - name: ubuntu1804-release-50 - display_name: "Ubuntu 18.04 Release (MongoDB 5.0)" - expansions: - build_type: "Release" - mongodb_version: "5.0" - run_on: - - ubuntu1804-large - tasks: - - name: compile_and_test_with_shared_libs - - name: compile_and_test_with_shared_libs_extra_alignment - - name: compile_and_test_with_static_libs - - name: compile_and_test_with_static_libs_extra_alignment - - name: compile_and_test_with_shared_libs_replica_set - - name: compile_and_test_with_shared_libs_sharded_cluster - - name: build_example_with_add_subdirectory - - - name: zseries-rhel83-latest - display_name: "zSeries RHEL 8.3 (MongoDB Latest)" - patchable: false - batchtime: 1440 # 1 day - expansions: - build_type: "Release" - mongodb_version: "latest" - cmake: "cmake" - lib_dir: "lib64" - run_on: - - rhel83-zseries-large - tasks: - - name: compile_and_test_with_shared_libs - - name: compile_and_test_with_shared_libs_extra_alignment - - name: compile_and_test_with_static_libs - - name: compile_and_test_with_static_libs_extra_alignment - - - name: zseries-rhel83-60 - display_name: "zSeries RHEL 8.3 (MongoDB 6.0)" - patchable: false - batchtime: 1440 # 1 day - expansions: - build_type: "Release" - mongodb_version: "6.0" - cmake: "cmake" - lib_dir: "lib64" - run_on: - - rhel83-zseries-large - tasks: - - name: compile_and_test_with_shared_libs - - name: compile_and_test_with_shared_libs_extra_alignment - - name: compile_and_test_with_static_libs - - name: compile_and_test_with_static_libs_extra_alignment - - - name: zseries-rhel83-50 - display_name: "zSeries RHEL 8.3 (MongoDB 5.0)" - patchable: false - batchtime: 1440 # 1 day - expansions: - build_type: "Release" - mongodb_version: "5.0" - cmake: "cmake" - lib_dir: "lib64" - run_on: - - rhel83-zseries-large - tasks: - - name: compile_and_test_with_shared_libs - - name: compile_and_test_with_shared_libs_extra_alignment - - name: compile_and_test_with_static_libs - - name: compile_and_test_with_static_libs_extra_alignment - - - name: power8-rhel81-latest - display_name: "ppc64le RHEL 8.1 (MongoDB Latest)" - patchable: false - batchtime: 1440 # 1 day - expansions: - build_type: "Release" - mongodb_version: "latest" - cmake: "cmake" - lib_dir: "lib64" - run_on: - - rhel81-power8-large - tasks: - - name: compile_and_test_with_shared_libs - - name: compile_and_test_with_shared_libs_extra_alignment - - name: compile_and_test_with_static_libs - - name: compile_and_test_with_static_libs_extra_alignment - - - name: power8-rhel81-50 - display_name: "ppc64le RHEL 8.1 (MongoDB 5.0)" - patchable: false - batchtime: 1440 # 1 day - expansions: - build_type: "Release" - mongodb_version: "5.0" - cmake: "cmake" - lib_dir: "lib64" - run_on: - - rhel81-power8-large - tasks: - - name: compile_and_test_with_shared_libs - - name: compile_and_test_with_shared_libs_extra_alignment - - name: compile_and_test_with_static_libs - - name: compile_and_test_with_static_libs_extra_alignment - - - name: arm-ubuntu2004-latest - display_name: "arm64 Ubuntu 20.04 (MongoDB Latest)" - batchtime: 1440 # 1 day - expansions: - build_type: "Release" - mongodb_version: "latest" - run_on: - - ubuntu2004-arm64-build - tasks: - - name: compile_and_test_with_shared_libs - - name: compile_and_test_with_shared_libs_extra_alignment - - name: compile_and_test_with_static_libs - - name: compile_and_test_with_static_libs_extra_alignment - - - name: arm-ubuntu1804-50 - display_name: "arm64 Ubuntu 18.04 (MongoDB 5.0)" - batchtime: 1440 # 1 day - expansions: - build_type: "Release" - mongodb_version: "5.0" - run_on: - - ubuntu1804-arm64-build - tasks: - - name: compile_and_test_with_shared_libs - - name: compile_and_test_with_shared_libs_extra_alignment - - name: compile_and_test_with_static_libs - - name: compile_and_test_with_static_libs_extra_alignment - - ####################################### - # Mac and Windows # - ####################################### - - name: macos-1100-latest - display_name: "MacOS 11.0 Release (Boost) (MongoDB Latest)" - expansions: - build_type: "Release" - BSONCXX_POLYFILL: "boost" - mongodb_version: "latest" - run_on: - - macos-1100 - tasks: - - name: compile_and_test_with_shared_libs - - name: compile_and_test_with_shared_libs_extra_alignment - - name: compile_and_test_with_static_libs - - name: compile_and_test_with_static_libs_extra_alignment - - - name: macos-1100-50 - display_name: "MacOS 11.0 Release (Boost) (MongoDB 5.0)" - expansions: - build_type: "Release" - BSONCXX_POLYFILL: "boost" - mongodb_version: "5.0" - run_on: - - macos-1100 - tasks: - - name: compile_and_test_with_shared_libs - - name: compile_and_test_with_shared_libs_extra_alignment - - name: compile_and_test_with_static_libs - - name: compile_and_test_with_static_libs_extra_alignment + - func: "stop_mongod" + - func: "backtrace" + # Workaround for CXX-2040 + # - func: "upload working dir" + - func: "upload mongo orchestration artifacts" + - func: "upload code coverage" From b5178cbd1b67a4e4c94ab4304347c82f40529bc8 Mon Sep 17 00:00:00 2001 From: Ezra Chung Date: Tue, 29 Oct 2024 15:28:37 -0500 Subject: [PATCH 61/78] evg: fix tasks which enable extra alignment --- .../components/funcs/compile.py | 1 + .../components/integration.py | 30 +- .evergreen/generated_configs/functions.yml | 1 + .evergreen/generated_configs/tasks.yml | 476 ++++++++---------- .evergreen/scripts/compile.sh | 32 ++ .evergreen/scripts/install-c-driver.sh | 17 +- 6 files changed, 273 insertions(+), 284 deletions(-) diff --git a/.evergreen/config_generator/components/funcs/compile.py b/.evergreen/config_generator/components/funcs/compile.py index ab82d0663d..ae8eaa45ad 100644 --- a/.evergreen/config_generator/components/funcs/compile.py +++ b/.evergreen/config_generator/components/funcs/compile.py @@ -17,6 +17,7 @@ class Compile(Function): }, include_expansions_in_env=[ 'branch_name', + 'BSON_EXTRA_ALIGNMENT', 'BSONCXX_POLYFILL', 'build_type', 'COMPILE_MACRO_GUARD_TESTS', diff --git a/.evergreen/config_generator/components/integration.py b/.evergreen/config_generator/components/integration.py index abcf28944b..ab0cf4a059 100644 --- a/.evergreen/config_generator/components/integration.py +++ b/.evergreen/config_generator/components/integration.py @@ -136,16 +136,26 @@ def tasks(): match with_csfle: case 'plain': - commands += [ - Setup.call(), - StartMongod.call(mongodb_version=mongodb_version, topology=topology), - FetchCDriverSource.call(), - Compile.call(polyfill=polyfill, vars=compile_vars), - FetchDET.call(), - RunKMSServers.call(), - InstallCDriver.call(vars=icd_vars), - Test.call(vars=test_vars), - ] + if with_extra_align: + commands += [ + Setup.call(), + StartMongod.call(mongodb_version=mongodb_version, topology=topology), + InstallCDriver.call(vars=icd_vars | {'SKIP_INSTALL_LIBMONGOCRYPT': 1}), + Compile.call(polyfill=polyfill, vars=compile_vars), + FetchDET.call(), + RunKMSServers.call(), + Test.call(vars=test_vars), + ] + else: + commands += [ + Setup.call(), + StartMongod.call(mongodb_version=mongodb_version, topology=topology), + FetchCDriverSource.call(), + Compile.call(polyfill=polyfill, vars=compile_vars), + FetchDET.call(), + RunKMSServers.call(), + Test.call(vars=test_vars), + ] case 'csfle': commands += [ Setup.call(), diff --git a/.evergreen/generated_configs/functions.yml b/.evergreen/generated_configs/functions.yml index 7dcc31294f..2a1a2f1e70 100644 --- a/.evergreen/generated_configs/functions.yml +++ b/.evergreen/generated_configs/functions.yml @@ -263,6 +263,7 @@ functions: CXX: ${cxx_compiler} include_expansions_in_env: - branch_name + - BSON_EXTRA_ALIGNMENT - BSONCXX_POLYFILL - build_type - COMPILE_MACRO_GUARD_TESTS diff --git a/.evergreen/generated_configs/tasks.yml b/.evergreen/generated_configs/tasks.yml index 9ec2c589ed..43497f90bf 100644 --- a/.evergreen/generated_configs/tasks.yml +++ b/.evergreen/generated_configs/tasks.yml @@ -178,7 +178,6 @@ tasks: RUN_DISTCHECK: 1 - func: fetch-det - func: run_kms_servers - - func: install_c_driver - func: test vars: MONGOCXX_TEST_TOPOLOGY: replica @@ -201,7 +200,6 @@ tasks: RUN_DISTCHECK: 1 - func: fetch-det - func: run_kms_servers - - func: install_c_driver - func: test vars: MONGOCXX_TEST_TOPOLOGY: sharded @@ -223,7 +221,6 @@ tasks: RUN_DISTCHECK: 1 - func: fetch-det - func: run_kms_servers - - func: install_c_driver - func: test vars: MONGOCXX_TEST_TOPOLOGY: single @@ -239,15 +236,15 @@ tasks: - func: start_mongod vars: mongodb_version: "5.0" - - func: fetch_c_driver_source + - func: install_c_driver + vars: + BSON_EXTRA_ALIGNMENT: 1 + SKIP_INSTALL_LIBMONGOCRYPT: 1 - func: compile vars: BSON_EXTRA_ALIGNMENT: 1 - func: fetch-det - func: run_kms_servers - - func: install_c_driver - vars: - BSON_EXTRA_ALIGNMENT: 1 - func: test vars: MONGOCXX_TEST_TOPOLOGY: single @@ -270,7 +267,6 @@ tasks: USE_STATIC_LIBS: 1 - func: fetch-det - func: run_kms_servers - - func: install_c_driver - func: test vars: MONGOCXX_TEST_TOPOLOGY: single @@ -287,16 +283,16 @@ tasks: - func: start_mongod vars: mongodb_version: "5.0" - - func: fetch_c_driver_source + - func: install_c_driver + vars: + BSON_EXTRA_ALIGNMENT: 1 + SKIP_INSTALL_LIBMONGOCRYPT: 1 - func: compile vars: BSON_EXTRA_ALIGNMENT: 1 USE_STATIC_LIBS: 1 - func: fetch-det - func: run_kms_servers - - func: install_c_driver - vars: - BSON_EXTRA_ALIGNMENT: 1 - func: test vars: MONGOCXX_TEST_TOPOLOGY: single @@ -320,7 +316,6 @@ tasks: RUN_DISTCHECK: 1 - func: fetch-det - func: run_kms_servers - - func: install_c_driver - func: test vars: MONGOCXX_TEST_TOPOLOGY: replica @@ -343,7 +338,6 @@ tasks: RUN_DISTCHECK: 1 - func: fetch-det - func: run_kms_servers - - func: install_c_driver - func: test vars: MONGOCXX_TEST_TOPOLOGY: sharded @@ -365,7 +359,6 @@ tasks: RUN_DISTCHECK: 1 - func: fetch-det - func: run_kms_servers - - func: install_c_driver - func: test vars: MONGOCXX_TEST_TOPOLOGY: single @@ -388,7 +381,6 @@ tasks: RUN_DISTCHECK: 1 - func: fetch-det - func: run_kms_servers - - func: install_c_driver - func: test vars: MONGOCXX_TEST_TOPOLOGY: single @@ -406,16 +398,16 @@ tasks: - func: start_mongod vars: mongodb_version: "5.0" - - func: fetch_c_driver_source + - func: install_c_driver + vars: + BSON_EXTRA_ALIGNMENT: 1 + SKIP_INSTALL_LIBMONGOCRYPT: 1 - func: compile vars: BSON_EXTRA_ALIGNMENT: 1 REQUIRED_CXX_STANDARD: 20 - func: fetch-det - func: run_kms_servers - - func: install_c_driver - vars: - BSON_EXTRA_ALIGNMENT: 1 - func: test vars: MONGOCXX_TEST_TOPOLOGY: single @@ -433,15 +425,15 @@ tasks: - func: start_mongod vars: mongodb_version: "5.0" - - func: fetch_c_driver_source + - func: install_c_driver + vars: + BSON_EXTRA_ALIGNMENT: 1 + SKIP_INSTALL_LIBMONGOCRYPT: 1 - func: compile vars: BSON_EXTRA_ALIGNMENT: 1 - func: fetch-det - func: run_kms_servers - - func: install_c_driver - vars: - BSON_EXTRA_ALIGNMENT: 1 - func: test vars: MONGOCXX_TEST_TOPOLOGY: single @@ -464,7 +456,6 @@ tasks: USE_STATIC_LIBS: 1 - func: fetch-det - func: run_kms_servers - - func: install_c_driver - func: test vars: MONGOCXX_TEST_TOPOLOGY: single @@ -481,16 +472,16 @@ tasks: - func: start_mongod vars: mongodb_version: "5.0" - - func: fetch_c_driver_source + - func: install_c_driver + vars: + BSON_EXTRA_ALIGNMENT: 1 + SKIP_INSTALL_LIBMONGOCRYPT: 1 - func: compile vars: BSON_EXTRA_ALIGNMENT: 1 USE_STATIC_LIBS: 1 - func: fetch-det - func: run_kms_servers - - func: install_c_driver - vars: - BSON_EXTRA_ALIGNMENT: 1 - func: test vars: MONGOCXX_TEST_TOPOLOGY: single @@ -551,16 +542,16 @@ tasks: - func: start_mongod vars: mongodb_version: latest - - func: fetch_c_driver_source + - func: install_c_driver + vars: + BSON_EXTRA_ALIGNMENT: 1 + SKIP_INSTALL_LIBMONGOCRYPT: 1 - func: compile vars: BSON_EXTRA_ALIGNMENT: 1 REQUIRED_CXX_STANDARD: 20 - func: fetch-det - func: run_kms_servers - - func: install_c_driver - vars: - BSON_EXTRA_ALIGNMENT: 1 - func: test vars: MONGOCXX_TEST_TOPOLOGY: single @@ -585,7 +576,6 @@ tasks: RUN_DISTCHECK: 1 - func: fetch-det - func: run_kms_servers - - func: install_c_driver - func: test vars: MONGOCXX_TEST_TOPOLOGY: single @@ -603,15 +593,15 @@ tasks: - func: start_mongod vars: mongodb_version: latest - - func: fetch_c_driver_source + - func: install_c_driver + vars: + BSON_EXTRA_ALIGNMENT: 1 + SKIP_INSTALL_LIBMONGOCRYPT: 1 - func: compile vars: BSON_EXTRA_ALIGNMENT: 1 - func: fetch-det - func: run_kms_servers - - func: install_c_driver - vars: - BSON_EXTRA_ALIGNMENT: 1 - func: test vars: MONGOCXX_TEST_TOPOLOGY: single @@ -633,7 +623,6 @@ tasks: RUN_DISTCHECK: 1 - func: fetch-det - func: run_kms_servers - - func: install_c_driver - func: test vars: MONGOCXX_TEST_TOPOLOGY: single @@ -649,16 +638,16 @@ tasks: - func: start_mongod vars: mongodb_version: latest - - func: fetch_c_driver_source + - func: install_c_driver + vars: + BSON_EXTRA_ALIGNMENT: 1 + SKIP_INSTALL_LIBMONGOCRYPT: 1 - func: compile vars: BSON_EXTRA_ALIGNMENT: 1 USE_STATIC_LIBS: 1 - func: fetch-det - func: run_kms_servers - - func: install_c_driver - vars: - BSON_EXTRA_ALIGNMENT: 1 - func: test vars: MONGOCXX_TEST_TOPOLOGY: single @@ -682,7 +671,6 @@ tasks: USE_STATIC_LIBS: 1 - func: fetch-det - func: run_kms_servers - - func: install_c_driver - func: test vars: MONGOCXX_TEST_TOPOLOGY: single @@ -706,7 +694,6 @@ tasks: RUN_DISTCHECK: 1 - func: fetch-det - func: run_kms_servers - - func: install_c_driver - func: test vars: MONGOCXX_TEST_TOPOLOGY: single @@ -722,16 +709,16 @@ tasks: - func: start_mongod vars: mongodb_version: "5.0" - - func: fetch_c_driver_source + - func: install_c_driver + vars: + BSON_EXTRA_ALIGNMENT: 1 + SKIP_INSTALL_LIBMONGOCRYPT: 1 - func: compile vars: BSONCXX_POLYFILL: boost BSON_EXTRA_ALIGNMENT: 1 - func: fetch-det - func: run_kms_servers - - func: install_c_driver - vars: - BSON_EXTRA_ALIGNMENT: 1 - func: test vars: MONGOCXX_TEST_TOPOLOGY: single @@ -747,16 +734,16 @@ tasks: - func: start_mongod vars: mongodb_version: latest - - func: fetch_c_driver_source + - func: install_c_driver + vars: + BSON_EXTRA_ALIGNMENT: 1 + SKIP_INSTALL_LIBMONGOCRYPT: 1 - func: compile vars: BSONCXX_POLYFILL: boost BSON_EXTRA_ALIGNMENT: 1 - func: fetch-det - func: run_kms_servers - - func: install_c_driver - vars: - BSON_EXTRA_ALIGNMENT: 1 - func: test vars: MONGOCXX_TEST_TOPOLOGY: single @@ -779,7 +766,6 @@ tasks: RUN_DISTCHECK: 1 - func: fetch-det - func: run_kms_servers - - func: install_c_driver - func: test vars: MONGOCXX_TEST_TOPOLOGY: single @@ -803,7 +789,6 @@ tasks: USE_STATIC_LIBS: 1 - func: fetch-det - func: run_kms_servers - - func: install_c_driver - func: test vars: MONGOCXX_TEST_TOPOLOGY: single @@ -820,7 +805,10 @@ tasks: - func: start_mongod vars: mongodb_version: "5.0" - - func: fetch_c_driver_source + - func: install_c_driver + vars: + BSON_EXTRA_ALIGNMENT: 1 + SKIP_INSTALL_LIBMONGOCRYPT: 1 - func: compile vars: BSONCXX_POLYFILL: boost @@ -828,9 +816,6 @@ tasks: USE_STATIC_LIBS: 1 - func: fetch-det - func: run_kms_servers - - func: install_c_driver - vars: - BSON_EXTRA_ALIGNMENT: 1 - func: test vars: MONGOCXX_TEST_TOPOLOGY: single @@ -847,7 +832,10 @@ tasks: - func: start_mongod vars: mongodb_version: latest - - func: fetch_c_driver_source + - func: install_c_driver + vars: + BSON_EXTRA_ALIGNMENT: 1 + SKIP_INSTALL_LIBMONGOCRYPT: 1 - func: compile vars: BSONCXX_POLYFILL: boost @@ -855,9 +843,6 @@ tasks: USE_STATIC_LIBS: 1 - func: fetch-det - func: run_kms_servers - - func: install_c_driver - vars: - BSON_EXTRA_ALIGNMENT: 1 - func: test vars: MONGOCXX_TEST_TOPOLOGY: single @@ -882,7 +867,6 @@ tasks: USE_STATIC_LIBS: 1 - func: fetch-det - func: run_kms_servers - - func: install_c_driver - func: test vars: MONGOCXX_TEST_TOPOLOGY: single @@ -906,7 +890,6 @@ tasks: RUN_DISTCHECK: 1 - func: fetch-det - func: run_kms_servers - - func: install_c_driver - func: test vars: MONGOCXX_TEST_TOPOLOGY: single @@ -924,15 +907,15 @@ tasks: - func: start_mongod vars: mongodb_version: "5.0" - - func: fetch_c_driver_source + - func: install_c_driver + vars: + BSON_EXTRA_ALIGNMENT: 1 + SKIP_INSTALL_LIBMONGOCRYPT: 1 - func: compile vars: BSON_EXTRA_ALIGNMENT: 1 - func: fetch-det - func: run_kms_servers - - func: install_c_driver - vars: - BSON_EXTRA_ALIGNMENT: 1 - func: test vars: MONGOCXX_TEST_TOPOLOGY: single @@ -950,15 +933,15 @@ tasks: - func: start_mongod vars: mongodb_version: latest - - func: fetch_c_driver_source + - func: install_c_driver + vars: + BSON_EXTRA_ALIGNMENT: 1 + SKIP_INSTALL_LIBMONGOCRYPT: 1 - func: compile vars: BSON_EXTRA_ALIGNMENT: 1 - func: fetch-det - func: run_kms_servers - - func: install_c_driver - vars: - BSON_EXTRA_ALIGNMENT: 1 - func: test vars: MONGOCXX_TEST_TOPOLOGY: single @@ -982,7 +965,6 @@ tasks: RUN_DISTCHECK: 1 - func: fetch-det - func: run_kms_servers - - func: install_c_driver - func: test vars: MONGOCXX_TEST_TOPOLOGY: single @@ -1007,7 +989,6 @@ tasks: USE_STATIC_LIBS: 1 - func: fetch-det - func: run_kms_servers - - func: install_c_driver - func: test vars: MONGOCXX_TEST_TOPOLOGY: single @@ -1026,16 +1007,16 @@ tasks: - func: start_mongod vars: mongodb_version: "5.0" - - func: fetch_c_driver_source + - func: install_c_driver + vars: + BSON_EXTRA_ALIGNMENT: 1 + SKIP_INSTALL_LIBMONGOCRYPT: 1 - func: compile vars: BSON_EXTRA_ALIGNMENT: 1 USE_STATIC_LIBS: 1 - func: fetch-det - func: run_kms_servers - - func: install_c_driver - vars: - BSON_EXTRA_ALIGNMENT: 1 - func: test vars: MONGOCXX_TEST_TOPOLOGY: single @@ -1054,16 +1035,16 @@ tasks: - func: start_mongod vars: mongodb_version: latest - - func: fetch_c_driver_source + - func: install_c_driver + vars: + BSON_EXTRA_ALIGNMENT: 1 + SKIP_INSTALL_LIBMONGOCRYPT: 1 - func: compile vars: BSON_EXTRA_ALIGNMENT: 1 USE_STATIC_LIBS: 1 - func: fetch-det - func: run_kms_servers - - func: install_c_driver - vars: - BSON_EXTRA_ALIGNMENT: 1 - func: test vars: MONGOCXX_TEST_TOPOLOGY: single @@ -1089,7 +1070,6 @@ tasks: USE_STATIC_LIBS: 1 - func: fetch-det - func: run_kms_servers - - func: install_c_driver - func: test vars: MONGOCXX_TEST_TOPOLOGY: single @@ -1114,7 +1094,6 @@ tasks: RUN_DISTCHECK: 1 - func: fetch-det - func: run_kms_servers - - func: install_c_driver - func: test vars: MONGOCXX_TEST_TOPOLOGY: single @@ -1138,7 +1117,6 @@ tasks: RUN_DISTCHECK: 1 - func: fetch-det - func: run_kms_servers - - func: install_c_driver - func: test vars: MONGOCXX_TEST_TOPOLOGY: single @@ -1156,15 +1134,15 @@ tasks: - func: start_mongod vars: mongodb_version: "5.0" - - func: fetch_c_driver_source + - func: install_c_driver + vars: + BSON_EXTRA_ALIGNMENT: 1 + SKIP_INSTALL_LIBMONGOCRYPT: 1 - func: compile vars: BSON_EXTRA_ALIGNMENT: 1 - func: fetch-det - func: run_kms_servers - - func: install_c_driver - vars: - BSON_EXTRA_ALIGNMENT: 1 - func: test vars: MONGOCXX_TEST_TOPOLOGY: single @@ -1182,15 +1160,15 @@ tasks: - func: start_mongod vars: mongodb_version: "6.0" - - func: fetch_c_driver_source + - func: install_c_driver + vars: + BSON_EXTRA_ALIGNMENT: 1 + SKIP_INSTALL_LIBMONGOCRYPT: 1 - func: compile vars: BSON_EXTRA_ALIGNMENT: 1 - func: fetch-det - func: run_kms_servers - - func: install_c_driver - vars: - BSON_EXTRA_ALIGNMENT: 1 - func: test vars: MONGOCXX_TEST_TOPOLOGY: single @@ -1208,15 +1186,15 @@ tasks: - func: start_mongod vars: mongodb_version: latest - - func: fetch_c_driver_source + - func: install_c_driver + vars: + BSON_EXTRA_ALIGNMENT: 1 + SKIP_INSTALL_LIBMONGOCRYPT: 1 - func: compile vars: BSON_EXTRA_ALIGNMENT: 1 - func: fetch-det - func: run_kms_servers - - func: install_c_driver - vars: - BSON_EXTRA_ALIGNMENT: 1 - func: test vars: MONGOCXX_TEST_TOPOLOGY: single @@ -1240,7 +1218,6 @@ tasks: RUN_DISTCHECK: 1 - func: fetch-det - func: run_kms_servers - - func: install_c_driver - func: test vars: MONGOCXX_TEST_TOPOLOGY: single @@ -1265,7 +1242,6 @@ tasks: USE_STATIC_LIBS: 1 - func: fetch-det - func: run_kms_servers - - func: install_c_driver - func: test vars: MONGOCXX_TEST_TOPOLOGY: single @@ -1291,7 +1267,6 @@ tasks: USE_STATIC_LIBS: 1 - func: fetch-det - func: run_kms_servers - - func: install_c_driver - func: test vars: MONGOCXX_TEST_TOPOLOGY: single @@ -1310,16 +1285,16 @@ tasks: - func: start_mongod vars: mongodb_version: "5.0" - - func: fetch_c_driver_source + - func: install_c_driver + vars: + BSON_EXTRA_ALIGNMENT: 1 + SKIP_INSTALL_LIBMONGOCRYPT: 1 - func: compile vars: BSON_EXTRA_ALIGNMENT: 1 USE_STATIC_LIBS: 1 - func: fetch-det - func: run_kms_servers - - func: install_c_driver - vars: - BSON_EXTRA_ALIGNMENT: 1 - func: test vars: MONGOCXX_TEST_TOPOLOGY: single @@ -1338,16 +1313,16 @@ tasks: - func: start_mongod vars: mongodb_version: "6.0" - - func: fetch_c_driver_source + - func: install_c_driver + vars: + BSON_EXTRA_ALIGNMENT: 1 + SKIP_INSTALL_LIBMONGOCRYPT: 1 - func: compile vars: BSON_EXTRA_ALIGNMENT: 1 USE_STATIC_LIBS: 1 - func: fetch-det - func: run_kms_servers - - func: install_c_driver - vars: - BSON_EXTRA_ALIGNMENT: 1 - func: test vars: MONGOCXX_TEST_TOPOLOGY: single @@ -1366,16 +1341,16 @@ tasks: - func: start_mongod vars: mongodb_version: latest - - func: fetch_c_driver_source + - func: install_c_driver + vars: + BSON_EXTRA_ALIGNMENT: 1 + SKIP_INSTALL_LIBMONGOCRYPT: 1 - func: compile vars: BSON_EXTRA_ALIGNMENT: 1 USE_STATIC_LIBS: 1 - func: fetch-det - func: run_kms_servers - - func: install_c_driver - vars: - BSON_EXTRA_ALIGNMENT: 1 - func: test vars: MONGOCXX_TEST_TOPOLOGY: single @@ -1401,7 +1376,6 @@ tasks: USE_STATIC_LIBS: 1 - func: fetch-det - func: run_kms_servers - - func: install_c_driver - func: test vars: MONGOCXX_TEST_TOPOLOGY: single @@ -1465,16 +1439,16 @@ tasks: - func: start_mongod vars: mongodb_version: latest - - func: fetch_c_driver_source + - func: install_c_driver + vars: + BSON_EXTRA_ALIGNMENT: 1 + SKIP_INSTALL_LIBMONGOCRYPT: 1 - func: compile vars: BSON_EXTRA_ALIGNMENT: 1 REQUIRED_CXX_STANDARD: 20 - func: fetch-det - func: run_kms_servers - - func: install_c_driver - vars: - BSON_EXTRA_ALIGNMENT: 1 - func: test vars: MONGOCXX_TEST_TOPOLOGY: single @@ -1500,7 +1474,6 @@ tasks: RUN_DISTCHECK: 1 - func: fetch-det - func: run_kms_servers - - func: install_c_driver - func: test vars: MONGOCXX_TEST_TOPOLOGY: single @@ -1519,15 +1492,15 @@ tasks: - func: start_mongod vars: mongodb_version: latest - - func: fetch_c_driver_source + - func: install_c_driver + vars: + BSON_EXTRA_ALIGNMENT: 1 + SKIP_INSTALL_LIBMONGOCRYPT: 1 - func: compile vars: BSON_EXTRA_ALIGNMENT: 1 - func: fetch-det - func: run_kms_servers - - func: install_c_driver - vars: - BSON_EXTRA_ALIGNMENT: 1 - func: test vars: MONGOCXX_TEST_TOPOLOGY: single @@ -1550,7 +1523,6 @@ tasks: RUN_DISTCHECK: 1 - func: fetch-det - func: run_kms_servers - - func: install_c_driver - func: test vars: MONGOCXX_TEST_TOPOLOGY: single @@ -1567,16 +1539,16 @@ tasks: - func: start_mongod vars: mongodb_version: latest - - func: fetch_c_driver_source + - func: install_c_driver + vars: + BSON_EXTRA_ALIGNMENT: 1 + SKIP_INSTALL_LIBMONGOCRYPT: 1 - func: compile vars: BSON_EXTRA_ALIGNMENT: 1 USE_STATIC_LIBS: 1 - func: fetch-det - func: run_kms_servers - - func: install_c_driver - vars: - BSON_EXTRA_ALIGNMENT: 1 - func: test vars: MONGOCXX_TEST_TOPOLOGY: single @@ -1601,7 +1573,6 @@ tasks: USE_STATIC_LIBS: 1 - func: fetch-det - func: run_kms_servers - - func: install_c_driver - func: test vars: MONGOCXX_TEST_TOPOLOGY: single @@ -1665,16 +1636,16 @@ tasks: - func: start_mongod vars: mongodb_version: latest - - func: fetch_c_driver_source + - func: install_c_driver + vars: + BSON_EXTRA_ALIGNMENT: 1 + SKIP_INSTALL_LIBMONGOCRYPT: 1 - func: compile vars: BSON_EXTRA_ALIGNMENT: 1 REQUIRED_CXX_STANDARD: 20 - func: fetch-det - func: run_kms_servers - - func: install_c_driver - vars: - BSON_EXTRA_ALIGNMENT: 1 - func: test vars: MONGOCXX_TEST_TOPOLOGY: single @@ -1700,7 +1671,6 @@ tasks: RUN_DISTCHECK: 1 - func: fetch-det - func: run_kms_servers - - func: install_c_driver - func: test vars: MONGOCXX_TEST_TOPOLOGY: single @@ -1719,15 +1689,15 @@ tasks: - func: start_mongod vars: mongodb_version: latest - - func: fetch_c_driver_source + - func: install_c_driver + vars: + BSON_EXTRA_ALIGNMENT: 1 + SKIP_INSTALL_LIBMONGOCRYPT: 1 - func: compile vars: BSON_EXTRA_ALIGNMENT: 1 - func: fetch-det - func: run_kms_servers - - func: install_c_driver - vars: - BSON_EXTRA_ALIGNMENT: 1 - func: test vars: MONGOCXX_TEST_TOPOLOGY: single @@ -1750,7 +1720,6 @@ tasks: RUN_DISTCHECK: 1 - func: fetch-det - func: run_kms_servers - - func: install_c_driver - func: test vars: MONGOCXX_TEST_TOPOLOGY: single @@ -1767,16 +1736,16 @@ tasks: - func: start_mongod vars: mongodb_version: latest - - func: fetch_c_driver_source + - func: install_c_driver + vars: + BSON_EXTRA_ALIGNMENT: 1 + SKIP_INSTALL_LIBMONGOCRYPT: 1 - func: compile vars: BSON_EXTRA_ALIGNMENT: 1 USE_STATIC_LIBS: 1 - func: fetch-det - func: run_kms_servers - - func: install_c_driver - vars: - BSON_EXTRA_ALIGNMENT: 1 - func: test vars: MONGOCXX_TEST_TOPOLOGY: single @@ -1801,7 +1770,6 @@ tasks: USE_STATIC_LIBS: 1 - func: fetch-det - func: run_kms_servers - - func: install_c_driver - func: test vars: MONGOCXX_TEST_TOPOLOGY: single @@ -1825,7 +1793,6 @@ tasks: RUN_DISTCHECK: 1 - func: fetch-det - func: run_kms_servers - - func: install_c_driver - func: test vars: MONGOCXX_TEST_TOPOLOGY: single @@ -1841,15 +1808,15 @@ tasks: - func: start_mongod vars: mongodb_version: "5.0" - - func: fetch_c_driver_source + - func: install_c_driver + vars: + BSON_EXTRA_ALIGNMENT: 1 + SKIP_INSTALL_LIBMONGOCRYPT: 1 - func: compile vars: BSON_EXTRA_ALIGNMENT: 1 - func: fetch-det - func: run_kms_servers - - func: install_c_driver - vars: - BSON_EXTRA_ALIGNMENT: 1 - func: test vars: MONGOCXX_TEST_TOPOLOGY: single @@ -1872,7 +1839,6 @@ tasks: USE_STATIC_LIBS: 1 - func: fetch-det - func: run_kms_servers - - func: install_c_driver - func: test vars: MONGOCXX_TEST_TOPOLOGY: single @@ -1889,16 +1855,16 @@ tasks: - func: start_mongod vars: mongodb_version: "5.0" - - func: fetch_c_driver_source + - func: install_c_driver + vars: + BSON_EXTRA_ALIGNMENT: 1 + SKIP_INSTALL_LIBMONGOCRYPT: 1 - func: compile vars: BSON_EXTRA_ALIGNMENT: 1 USE_STATIC_LIBS: 1 - func: fetch-det - func: run_kms_servers - - func: install_c_driver - vars: - BSON_EXTRA_ALIGNMENT: 1 - func: test vars: MONGOCXX_TEST_TOPOLOGY: single @@ -1921,7 +1887,6 @@ tasks: RUN_DISTCHECK: 1 - func: fetch-det - func: run_kms_servers - - func: install_c_driver - func: test vars: MONGOCXX_TEST_TOPOLOGY: single @@ -1943,7 +1908,6 @@ tasks: RUN_DISTCHECK: 1 - func: fetch-det - func: run_kms_servers - - func: install_c_driver - func: test vars: MONGOCXX_TEST_TOPOLOGY: single @@ -1965,7 +1929,6 @@ tasks: RUN_DISTCHECK: 1 - func: fetch-det - func: run_kms_servers - - func: install_c_driver - func: test vars: MONGOCXX_TEST_TOPOLOGY: single @@ -1987,7 +1950,6 @@ tasks: RUN_DISTCHECK: 1 - func: fetch-det - func: run_kms_servers - - func: install_c_driver - func: test vars: MONGOCXX_TEST_TOPOLOGY: single @@ -2009,7 +1971,6 @@ tasks: RUN_DISTCHECK: 1 - func: fetch-det - func: run_kms_servers - - func: install_c_driver - func: test vars: MONGOCXX_TEST_TOPOLOGY: single @@ -2383,15 +2344,15 @@ tasks: - func: start_mongod vars: mongodb_version: "4.0" - - func: fetch_c_driver_source + - func: install_c_driver + vars: + BSON_EXTRA_ALIGNMENT: 1 + SKIP_INSTALL_LIBMONGOCRYPT: 1 - func: compile vars: BSON_EXTRA_ALIGNMENT: 1 - func: fetch-det - func: run_kms_servers - - func: install_c_driver - vars: - BSON_EXTRA_ALIGNMENT: 1 - func: test vars: MONGOCXX_TEST_TOPOLOGY: single @@ -2407,15 +2368,15 @@ tasks: - func: start_mongod vars: mongodb_version: "4.2" - - func: fetch_c_driver_source + - func: install_c_driver + vars: + BSON_EXTRA_ALIGNMENT: 1 + SKIP_INSTALL_LIBMONGOCRYPT: 1 - func: compile vars: BSON_EXTRA_ALIGNMENT: 1 - func: fetch-det - func: run_kms_servers - - func: install_c_driver - vars: - BSON_EXTRA_ALIGNMENT: 1 - func: test vars: MONGOCXX_TEST_TOPOLOGY: single @@ -2431,15 +2392,15 @@ tasks: - func: start_mongod vars: mongodb_version: "4.4" - - func: fetch_c_driver_source + - func: install_c_driver + vars: + BSON_EXTRA_ALIGNMENT: 1 + SKIP_INSTALL_LIBMONGOCRYPT: 1 - func: compile vars: BSON_EXTRA_ALIGNMENT: 1 - func: fetch-det - func: run_kms_servers - - func: install_c_driver - vars: - BSON_EXTRA_ALIGNMENT: 1 - func: test vars: MONGOCXX_TEST_TOPOLOGY: single @@ -2455,15 +2416,15 @@ tasks: - func: start_mongod vars: mongodb_version: "5.0" - - func: fetch_c_driver_source + - func: install_c_driver + vars: + BSON_EXTRA_ALIGNMENT: 1 + SKIP_INSTALL_LIBMONGOCRYPT: 1 - func: compile vars: BSON_EXTRA_ALIGNMENT: 1 - func: fetch-det - func: run_kms_servers - - func: install_c_driver - vars: - BSON_EXTRA_ALIGNMENT: 1 - func: test vars: MONGOCXX_TEST_TOPOLOGY: single @@ -2479,15 +2440,15 @@ tasks: - func: start_mongod vars: mongodb_version: "6.0" - - func: fetch_c_driver_source + - func: install_c_driver + vars: + BSON_EXTRA_ALIGNMENT: 1 + SKIP_INSTALL_LIBMONGOCRYPT: 1 - func: compile vars: BSON_EXTRA_ALIGNMENT: 1 - func: fetch-det - func: run_kms_servers - - func: install_c_driver - vars: - BSON_EXTRA_ALIGNMENT: 1 - func: test vars: MONGOCXX_TEST_TOPOLOGY: single @@ -2510,7 +2471,6 @@ tasks: RUN_DISTCHECK: 1 - func: fetch-det - func: run_kms_servers - - func: install_c_driver - func: test vars: MONGOCXX_TEST_TOPOLOGY: replica @@ -2533,7 +2493,6 @@ tasks: RUN_DISTCHECK: 1 - func: fetch-det - func: run_kms_servers - - func: install_c_driver - func: test vars: MONGOCXX_TEST_TOPOLOGY: sharded @@ -2549,15 +2508,15 @@ tasks: - func: start_mongod vars: mongodb_version: latest - - func: fetch_c_driver_source + - func: install_c_driver + vars: + BSON_EXTRA_ALIGNMENT: 1 + SKIP_INSTALL_LIBMONGOCRYPT: 1 - func: compile vars: BSON_EXTRA_ALIGNMENT: 1 - func: fetch-det - func: run_kms_servers - - func: install_c_driver - vars: - BSON_EXTRA_ALIGNMENT: 1 - func: test vars: MONGOCXX_TEST_TOPOLOGY: single @@ -2579,7 +2538,6 @@ tasks: RUN_DISTCHECK: 1 - func: fetch-det - func: run_kms_servers - - func: install_c_driver - func: test vars: MONGOCXX_TEST_TOPOLOGY: single @@ -2595,16 +2553,16 @@ tasks: - func: start_mongod vars: mongodb_version: latest - - func: fetch_c_driver_source + - func: install_c_driver + vars: + BSON_EXTRA_ALIGNMENT: 1 + SKIP_INSTALL_LIBMONGOCRYPT: 1 - func: compile vars: BSON_EXTRA_ALIGNMENT: 1 USE_STATIC_LIBS: 1 - func: fetch-det - func: run_kms_servers - - func: install_c_driver - vars: - BSON_EXTRA_ALIGNMENT: 1 - func: test vars: MONGOCXX_TEST_TOPOLOGY: single @@ -2628,7 +2586,6 @@ tasks: USE_STATIC_LIBS: 1 - func: fetch-det - func: run_kms_servers - - func: install_c_driver - func: test vars: MONGOCXX_TEST_TOPOLOGY: single @@ -2651,7 +2608,6 @@ tasks: RUN_DISTCHECK: 1 - func: fetch-det - func: run_kms_servers - - func: install_c_driver - func: test vars: MONGOCXX_TEST_TOPOLOGY: single @@ -2673,7 +2629,6 @@ tasks: RUN_DISTCHECK: 1 - func: fetch-det - func: run_kms_servers - - func: install_c_driver - func: test vars: MONGOCXX_TEST_TOPOLOGY: single @@ -2867,15 +2822,15 @@ tasks: - func: start_mongod vars: mongodb_version: "7.0" - - func: fetch_c_driver_source + - func: install_c_driver + vars: + BSON_EXTRA_ALIGNMENT: 1 + SKIP_INSTALL_LIBMONGOCRYPT: 1 - func: compile vars: BSON_EXTRA_ALIGNMENT: 1 - func: fetch-det - func: run_kms_servers - - func: install_c_driver - vars: - BSON_EXTRA_ALIGNMENT: 1 - func: test vars: MONGOCXX_TEST_TOPOLOGY: single @@ -2891,15 +2846,15 @@ tasks: - func: start_mongod vars: mongodb_version: "8.0" - - func: fetch_c_driver_source + - func: install_c_driver + vars: + BSON_EXTRA_ALIGNMENT: 1 + SKIP_INSTALL_LIBMONGOCRYPT: 1 - func: compile vars: BSON_EXTRA_ALIGNMENT: 1 - func: fetch-det - func: run_kms_servers - - func: install_c_driver - vars: - BSON_EXTRA_ALIGNMENT: 1 - func: test vars: MONGOCXX_TEST_TOPOLOGY: single @@ -2915,15 +2870,15 @@ tasks: - func: start_mongod vars: mongodb_version: latest - - func: fetch_c_driver_source + - func: install_c_driver + vars: + BSON_EXTRA_ALIGNMENT: 1 + SKIP_INSTALL_LIBMONGOCRYPT: 1 - func: compile vars: BSON_EXTRA_ALIGNMENT: 1 - func: fetch-det - func: run_kms_servers - - func: install_c_driver - vars: - BSON_EXTRA_ALIGNMENT: 1 - func: test vars: MONGOCXX_TEST_TOPOLOGY: single @@ -2945,7 +2900,6 @@ tasks: RUN_DISTCHECK: 1 - func: fetch-det - func: run_kms_servers - - func: install_c_driver - func: test vars: MONGOCXX_TEST_TOPOLOGY: single @@ -2968,7 +2922,6 @@ tasks: RUN_DISTCHECK: 1 - func: fetch-det - func: run_kms_servers - - func: install_c_driver - func: test vars: MONGOCXX_TEST_TOPOLOGY: replica @@ -2991,7 +2944,6 @@ tasks: RUN_DISTCHECK: 1 - func: fetch-det - func: run_kms_servers - - func: install_c_driver - func: test vars: MONGOCXX_TEST_TOPOLOGY: sharded @@ -3013,7 +2965,6 @@ tasks: RUN_DISTCHECK: 1 - func: fetch-det - func: run_kms_servers - - func: install_c_driver - func: test vars: MONGOCXX_TEST_TOPOLOGY: single @@ -3117,15 +3068,15 @@ tasks: - func: start_mongod vars: mongodb_version: "5.0" - - func: fetch_c_driver_source + - func: install_c_driver + vars: + BSON_EXTRA_ALIGNMENT: 1 + SKIP_INSTALL_LIBMONGOCRYPT: 1 - func: compile vars: BSON_EXTRA_ALIGNMENT: 1 - func: fetch-det - func: run_kms_servers - - func: install_c_driver - vars: - BSON_EXTRA_ALIGNMENT: 1 - func: test vars: MONGOCXX_TEST_TOPOLOGY: single @@ -3141,15 +3092,15 @@ tasks: - func: start_mongod vars: mongodb_version: latest - - func: fetch_c_driver_source + - func: install_c_driver + vars: + BSON_EXTRA_ALIGNMENT: 1 + SKIP_INSTALL_LIBMONGOCRYPT: 1 - func: compile vars: BSON_EXTRA_ALIGNMENT: 1 - func: fetch-det - func: run_kms_servers - - func: install_c_driver - vars: - BSON_EXTRA_ALIGNMENT: 1 - func: test vars: MONGOCXX_TEST_TOPOLOGY: single @@ -3171,7 +3122,6 @@ tasks: RUN_DISTCHECK: 1 - func: fetch-det - func: run_kms_servers - - func: install_c_driver - func: test vars: MONGOCXX_TEST_TOPOLOGY: single @@ -3194,7 +3144,6 @@ tasks: USE_STATIC_LIBS: 1 - func: fetch-det - func: run_kms_servers - - func: install_c_driver - func: test vars: MONGOCXX_TEST_TOPOLOGY: single @@ -3211,16 +3160,16 @@ tasks: - func: start_mongod vars: mongodb_version: "5.0" - - func: fetch_c_driver_source + - func: install_c_driver + vars: + BSON_EXTRA_ALIGNMENT: 1 + SKIP_INSTALL_LIBMONGOCRYPT: 1 - func: compile vars: BSON_EXTRA_ALIGNMENT: 1 USE_STATIC_LIBS: 1 - func: fetch-det - func: run_kms_servers - - func: install_c_driver - vars: - BSON_EXTRA_ALIGNMENT: 1 - func: test vars: MONGOCXX_TEST_TOPOLOGY: single @@ -3237,16 +3186,16 @@ tasks: - func: start_mongod vars: mongodb_version: latest - - func: fetch_c_driver_source + - func: install_c_driver + vars: + BSON_EXTRA_ALIGNMENT: 1 + SKIP_INSTALL_LIBMONGOCRYPT: 1 - func: compile vars: BSON_EXTRA_ALIGNMENT: 1 USE_STATIC_LIBS: 1 - func: fetch-det - func: run_kms_servers - - func: install_c_driver - vars: - BSON_EXTRA_ALIGNMENT: 1 - func: test vars: MONGOCXX_TEST_TOPOLOGY: single @@ -3270,7 +3219,6 @@ tasks: USE_STATIC_LIBS: 1 - func: fetch-det - func: run_kms_servers - - func: install_c_driver - func: test vars: MONGOCXX_TEST_TOPOLOGY: single @@ -3295,7 +3243,6 @@ tasks: RUN_DISTCHECK: 1 - func: fetch-det - func: run_kms_servers - - func: install_c_driver - func: test vars: MONGOCXX_TEST_TOPOLOGY: single @@ -3320,7 +3267,6 @@ tasks: RUN_DISTCHECK: 1 - func: fetch-det - func: run_kms_servers - - func: install_c_driver - func: test vars: MONGOCXX_TEST_TOPOLOGY: single @@ -3345,7 +3291,6 @@ tasks: RUN_DISTCHECK: 1 - func: fetch-det - func: run_kms_servers - - func: install_c_driver - func: test vars: MONGOCXX_TEST_TOPOLOGY: single @@ -3370,7 +3315,6 @@ tasks: RUN_DISTCHECK: 1 - func: fetch-det - func: run_kms_servers - - func: install_c_driver - func: test vars: MONGOCXX_TEST_TOPOLOGY: single @@ -3395,7 +3339,6 @@ tasks: RUN_DISTCHECK: 1 - func: fetch-det - func: run_kms_servers - - func: install_c_driver - func: test vars: MONGOCXX_TEST_TOPOLOGY: single @@ -3420,7 +3363,6 @@ tasks: RUN_DISTCHECK: 1 - func: fetch-det - func: run_kms_servers - - func: install_c_driver - func: test vars: MONGOCXX_TEST_TOPOLOGY: single @@ -3445,7 +3387,6 @@ tasks: RUN_DISTCHECK: 1 - func: fetch-det - func: run_kms_servers - - func: install_c_driver - func: test vars: MONGOCXX_TEST_TOPOLOGY: single @@ -3464,15 +3405,15 @@ tasks: - func: start_mongod vars: mongodb_version: "4.0" - - func: fetch_c_driver_source + - func: install_c_driver + vars: + BSON_EXTRA_ALIGNMENT: 1 + SKIP_INSTALL_LIBMONGOCRYPT: 1 - func: compile vars: BSON_EXTRA_ALIGNMENT: 1 - func: fetch-det - func: run_kms_servers - - func: install_c_driver - vars: - BSON_EXTRA_ALIGNMENT: 1 - func: test vars: MONGOCXX_TEST_TOPOLOGY: single @@ -3491,15 +3432,15 @@ tasks: - func: start_mongod vars: mongodb_version: "4.2" - - func: fetch_c_driver_source + - func: install_c_driver + vars: + BSON_EXTRA_ALIGNMENT: 1 + SKIP_INSTALL_LIBMONGOCRYPT: 1 - func: compile vars: BSON_EXTRA_ALIGNMENT: 1 - func: fetch-det - func: run_kms_servers - - func: install_c_driver - vars: - BSON_EXTRA_ALIGNMENT: 1 - func: test vars: MONGOCXX_TEST_TOPOLOGY: single @@ -3518,15 +3459,15 @@ tasks: - func: start_mongod vars: mongodb_version: "4.4" - - func: fetch_c_driver_source + - func: install_c_driver + vars: + BSON_EXTRA_ALIGNMENT: 1 + SKIP_INSTALL_LIBMONGOCRYPT: 1 - func: compile vars: BSON_EXTRA_ALIGNMENT: 1 - func: fetch-det - func: run_kms_servers - - func: install_c_driver - vars: - BSON_EXTRA_ALIGNMENT: 1 - func: test vars: MONGOCXX_TEST_TOPOLOGY: single @@ -3545,15 +3486,15 @@ tasks: - func: start_mongod vars: mongodb_version: "5.0" - - func: fetch_c_driver_source + - func: install_c_driver + vars: + BSON_EXTRA_ALIGNMENT: 1 + SKIP_INSTALL_LIBMONGOCRYPT: 1 - func: compile vars: BSON_EXTRA_ALIGNMENT: 1 - func: fetch-det - func: run_kms_servers - - func: install_c_driver - vars: - BSON_EXTRA_ALIGNMENT: 1 - func: test vars: MONGOCXX_TEST_TOPOLOGY: single @@ -3572,15 +3513,15 @@ tasks: - func: start_mongod vars: mongodb_version: "6.0" - - func: fetch_c_driver_source + - func: install_c_driver + vars: + BSON_EXTRA_ALIGNMENT: 1 + SKIP_INSTALL_LIBMONGOCRYPT: 1 - func: compile vars: BSON_EXTRA_ALIGNMENT: 1 - func: fetch-det - func: run_kms_servers - - func: install_c_driver - vars: - BSON_EXTRA_ALIGNMENT: 1 - func: test vars: MONGOCXX_TEST_TOPOLOGY: single @@ -3599,15 +3540,15 @@ tasks: - func: start_mongod vars: mongodb_version: "7.0" - - func: fetch_c_driver_source + - func: install_c_driver + vars: + BSON_EXTRA_ALIGNMENT: 1 + SKIP_INSTALL_LIBMONGOCRYPT: 1 - func: compile vars: BSON_EXTRA_ALIGNMENT: 1 - func: fetch-det - func: run_kms_servers - - func: install_c_driver - vars: - BSON_EXTRA_ALIGNMENT: 1 - func: test vars: MONGOCXX_TEST_TOPOLOGY: single @@ -3626,15 +3567,15 @@ tasks: - func: start_mongod vars: mongodb_version: "8.0" - - func: fetch_c_driver_source + - func: install_c_driver + vars: + BSON_EXTRA_ALIGNMENT: 1 + SKIP_INSTALL_LIBMONGOCRYPT: 1 - func: compile vars: BSON_EXTRA_ALIGNMENT: 1 - func: fetch-det - func: run_kms_servers - - func: install_c_driver - vars: - BSON_EXTRA_ALIGNMENT: 1 - func: test vars: MONGOCXX_TEST_TOPOLOGY: single @@ -3653,15 +3594,15 @@ tasks: - func: start_mongod vars: mongodb_version: latest - - func: fetch_c_driver_source + - func: install_c_driver + vars: + BSON_EXTRA_ALIGNMENT: 1 + SKIP_INSTALL_LIBMONGOCRYPT: 1 - func: compile vars: BSON_EXTRA_ALIGNMENT: 1 - func: fetch-det - func: run_kms_servers - - func: install_c_driver - vars: - BSON_EXTRA_ALIGNMENT: 1 - func: test vars: MONGOCXX_TEST_TOPOLOGY: single @@ -3686,7 +3627,6 @@ tasks: RUN_DISTCHECK: 1 - func: fetch-det - func: run_kms_servers - - func: install_c_driver - func: test vars: MONGOCXX_TEST_TOPOLOGY: single diff --git a/.evergreen/scripts/compile.sh b/.evergreen/scripts/compile.sh index b692969cff..5d56d32a4f 100755 --- a/.evergreen/scripts/compile.sh +++ b/.evergreen/scripts/compile.sh @@ -15,6 +15,7 @@ set -o pipefail : "${build_type:?}" : "${distro_id:?}" # Required by find-cmake-latest.sh. +: "${BSON_EXTRA_ALIGNMENT:-}" : "${BSONCXX_POLYFILL:-}" : "${COMPILE_MACRO_GUARD_TESTS:-}" : "${ENABLE_CODE_COVERAGE:-}" @@ -155,6 +156,10 @@ linux*) cc_flags+=("${cc_flags_init[@]}") cxx_flags+=("${cxx_flags_init[@]}" -Wno-missing-field-initializers) + if [[ "${CXX:-}" != "clang++" ]]; then + cxx_flags+=(-Wno-aligned-new) + fi + if [[ "${distro_id:?}" != rhel7* ]]; then cxx_flags+=("-Wno-expansion-to-defined") else @@ -254,3 +259,30 @@ fi if [[ "${_RUN_DISTCHECK:-}" ]]; then "${cmake_binary}" --build . --config "${build_type:?}" --target distcheck fi + +# Ensure extra alignment is enabled or disabled as expected. +if [[ -n "$(find "${mongoc_prefix:?}" -name 'bson-config.h')" ]]; then + if [[ "${BSON_EXTRA_ALIGNMENT:-}" == "1" ]]; then + grep -R "#define BSON_EXTRA_ALIGN 1" "${mongoc_prefix:?}" || { + echo "BSON_EXTRA_ALIGN is not 1 despite BSON_EXTRA_ALIGNMENT=1" 1>&2 + exit 1 + } + else + grep -R "#define BSON_EXTRA_ALIGN 0" "${mongoc_prefix:?}" || { + echo "BSON_EXTRA_ALIGN is not 0 despite BSON_EXTRA_ALIGNMENT=0" 1>&2 + exit 1 + } + fi +else + if [[ "${BSON_EXTRA_ALIGNMENT:-}" == "1" ]]; then + grep -R "#define BSON_EXTRA_ALIGN 1" install || { + echo "BSON_EXTRA_ALIGN is not 1 despite BSON_EXTRA_ALIGNMENT=1" 1>&2 + exit 1 + } + else + grep -R "#define BSON_EXTRA_ALIGN 0" install || { + echo "BSON_EXTRA_ALIGN is not 0 despite BSON_EXTRA_ALIGNMENT=0" 1>&2 + exit 1 + } + fi +fi diff --git a/.evergreen/scripts/install-c-driver.sh b/.evergreen/scripts/install-c-driver.sh index 5afda21337..0c8874d705 100755 --- a/.evergreen/scripts/install-c-driver.sh +++ b/.evergreen/scripts/install-c-driver.sh @@ -70,11 +70,13 @@ cmake_binary="$(find_cmake_latest)" command -v "${cmake_binary:?}" # Install libmongocrypt. -{ - echo "Installing libmongocrypt into ${mongoc_dir}..." 1>&2 - "${mongoc_dir}/.evergreen/scripts/compile-libmongocrypt.sh" "${cmake_binary}" "${mongoc_idir}" "${mongoc_install_idir}" - echo "Installing libmongocrypt into ${mongoc_dir}... done." 1>&2 -} >/dev/null +if [[ "${SKIP_INSTALL_LIBMONGOCRYPT:-}" != "1" ]]; then + { + echo "Installing libmongocrypt into ${mongoc_dir}..." 1>&2 + "${mongoc_dir}/.evergreen/scripts/compile-libmongocrypt.sh" "${cmake_binary}" "${mongoc_idir}" "${mongoc_install_idir}" + echo "Installing libmongocrypt into ${mongoc_dir}... done." 1>&2 + } >/dev/null +fi if [[ "${OSTYPE}" == darwin* ]]; then # MacOS does not have nproc. @@ -99,13 +101,16 @@ declare -a configure_flags=( "-DCMAKE_INSTALL_PREFIX=${mongoc_install_idir}" "-DCMAKE_PREFIX_PATH=${mongoc_idir}" "-DENABLE_AUTOMATIC_INIT_AND_CLEANUP=OFF" - "-DENABLE_CLIENT_SIDE_ENCRYPTION=ON" "-DENABLE_EXAMPLES=OFF" "-DENABLE_SHM_COUNTERS=OFF" "-DENABLE_STATIC=ON" "-DENABLE_TESTS=OFF" ) +if [[ "${SKIP_INSTALL_LIBMONGOCRYPT:-}" != "1" ]]; then + configure_flags+=("-DENABLE_CLIENT_SIDE_ENCRYPTION=ON") +fi + declare -a compile_flags case "${OSTYPE:?}" in From 3e718a522fcf3da1d6a833ca603c0b5a227891f5 Mon Sep 17 00:00:00 2001 From: Ezra Chung Date: Tue, 29 Oct 2024 15:28:37 -0500 Subject: [PATCH 62/78] evg: copy post commands from legacy config into new config --- .evergreen/config.yml | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/.evergreen/config.yml b/.evergreen/config.yml index ec7b33eb48..c9c2a4b022 100644 --- a/.evergreen/config.yml +++ b/.evergreen/config.yml @@ -23,7 +23,13 @@ post_error_fails_task: false # Commands run after all tasks (excluding those in task groups). # Use sparingly and ensure they are error-proof. # TODO: move into teardown_group commands of appropriate task groups. -post: [] +post: + - func: "stop_mongod" + - func: "backtrace" + # Workaround for CXX-2040 + # - func: "upload working dir" + - func: "upload mongo orchestration artifacts" + - func: "upload code coverage" include: - filename: .evergreen/generated_configs/functions.yml From 752cfa6343e714e6cfba097939697c2e8fe97fdf Mon Sep 17 00:00:00 2001 From: Ezra Chung Date: Tue, 29 Oct 2024 15:28:39 -0500 Subject: [PATCH 63/78] evg: improve formatting of CMake flags output --- .evergreen/scripts/compile-scan-build.sh | 6 +++++- .evergreen/scripts/compile.sh | 6 +++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/.evergreen/scripts/compile-scan-build.sh b/.evergreen/scripts/compile-scan-build.sh index ee66176b16..f6b05e3a99 100755 --- a/.evergreen/scripts/compile-scan-build.sh +++ b/.evergreen/scripts/compile-scan-build.sh @@ -74,7 +74,11 @@ impls) cmake_flags+=(-D "BSONCXX_POLY_USE_IMPLS=ON") ;; std) cmake_flags+=(-D "BSONCXX_POLY_USE_STD=ON") ;; esac -echo "Configuring with CMake flags: ${cmake_flags[*]}" +echo "Configuring with CMake flags:" +for flag in "${cmake_flags[@]}"; do + echo " - ${flag:?}" +done +echo # Configure via scan-build for consistency. CCCACHE_DISABLE=1 "${scan_build_binary}" "${scan_build_flags[@]}" "${cmake_binary:?}" -S . -B build "${cmake_flags[@]}" diff --git a/.evergreen/scripts/compile.sh b/.evergreen/scripts/compile.sh index 5d56d32a4f..3623a7a1d8 100755 --- a/.evergreen/scripts/compile.sh +++ b/.evergreen/scripts/compile.sh @@ -242,7 +242,11 @@ if [[ "${COMPILE_MACRO_GUARD_TESTS:-"OFF"}" == "ON" ]]; then cmake_flags+=("-DENABLE_MACRO_GUARD_TESTS=ON") fi -echo "Configuring with CMake flags: ${cmake_flags[*]}" +echo "Configuring with CMake flags:" +for flag in "${cmake_flags[@]}"; do + echo " - ${flag:?}" +done +echo "${cmake_binary}" "${cmake_flags[@]}" .. From e10c0cd9c0013c6ffc6804454b4009dc95767f5b Mon Sep 17 00:00:00 2001 From: Ezra Chung Date: Tue, 29 Oct 2024 15:43:21 -0500 Subject: [PATCH 64/78] generator: remove stub component --- .../config_generator/components/stub.py | 23 ------------------- .evergreen/generated_configs/tasks.yml | 9 -------- .evergreen/generated_configs/variants.yml | 4 ---- 3 files changed, 36 deletions(-) delete mode 100644 .evergreen/config_generator/components/stub.py diff --git a/.evergreen/config_generator/components/stub.py b/.evergreen/config_generator/components/stub.py deleted file mode 100644 index 2906791341..0000000000 --- a/.evergreen/config_generator/components/stub.py +++ /dev/null @@ -1,23 +0,0 @@ -from shrub.v3.evg_build_variant import BuildVariant -from shrub.v3.evg_command import subprocess_exec -from shrub.v3.evg_task import EvgTask - -TASKS = [ - EvgTask( - name='stub', - run_on='ubuntu2004-large', - commands=[subprocess_exec(binary='bash', args=['-c', 'true'])], - ), -] - -def tasks(): - return TASKS - -def variants(): - return [ - BuildVariant( - name='stub', - display_name='stub', - tasks=[task.get_task_ref() for task in TASKS], - ), - ] diff --git a/.evergreen/generated_configs/tasks.yml b/.evergreen/generated_configs/tasks.yml index 43497f90bf..77df4cc287 100644 --- a/.evergreen/generated_configs/tasks.yml +++ b/.evergreen/generated_configs/tasks.yml @@ -4107,15 +4107,6 @@ tasks: - func: setup - func: check augmented sbom - func: upload augmented sbom - - name: stub - run_on: ubuntu2004-large - commands: - - command: subprocess.exec - params: - binary: bash - args: - - -c - - "true" - name: test_mongohouse run_on: ubuntu2204-large tags: [mongohouse, ubuntu2204] diff --git a/.evergreen/generated_configs/variants.yml b/.evergreen/generated_configs/variants.yml index 5ed164686d..9ed4d6756c 100644 --- a/.evergreen/generated_configs/variants.yml +++ b/.evergreen/generated_configs/variants.yml @@ -100,10 +100,6 @@ buildvariants: display_name: Silk tasks: - name: .silk - - name: stub - display_name: stub - tasks: - - name: stub - name: uninstall-check display_name: Uninstall Check display_tasks: From 9cd187a543a5e43f53aa4bcdefe28e3c13c33126 Mon Sep 17 00:00:00 2001 From: Ezra Chung Date: Tue, 29 Oct 2024 16:01:33 -0500 Subject: [PATCH 65/78] etc: update release instructions with uv commands --- etc/releasing.md | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/etc/releasing.md b/etc/releasing.md index a58c79ed4e..f58a17e614 100644 --- a/etc/releasing.md +++ b/etc/releasing.md @@ -296,13 +296,17 @@ git clone -o upstream git@github.com:mongodb/mongo-cxx-driver.git mongo-cxx-driv cd mongo-cxx-driver-release ``` -Create and activate a fresh Python 3 virtual environment with required packages installed: +Create and activate a fresh Python 3 virtual environment with required packages installed using [uv](https://docs.astral.sh/uv/getting-started/installation/): ```bash +# Outside the mongo-cxx-driver-release directory! +export UV_PROJECT_ENVIRONMENT="$HOME/mongo-cxx-driver-release-venv" -python3 -m venv ~/mongo-cxx-driver-release-venv # Outside the mongo-cxx-driver-release directory! -source ~/mongo-cxx-driver-release-venv/bin/activate -pip install -r etc/requirements.txt +# Install required packages into a new virtual environment. +uv sync --frozen + +# Activate the virtual environment. +source "$UV_PROJECT_ENVIRONMENT/bin/activate" ``` ### Create a Release Tag... From 85c01b65a1b8e6db22aeedd577d9dad4f19c6fdf Mon Sep 17 00:00:00 2001 From: Ezra Chung Date: Tue, 29 Oct 2024 16:05:22 -0500 Subject: [PATCH 66/78] generator: extend extra alignment fixes to valgrind tasks --- .../config_generator/components/valgrind.py | 10 ++++-- .evergreen/generated_configs/tasks.yml | 36 ++++++++++++++----- 2 files changed, 35 insertions(+), 11 deletions(-) diff --git a/.evergreen/config_generator/components/valgrind.py b/.evergreen/config_generator/components/valgrind.py index e37ab5dc7c..63ff524b5a 100644 --- a/.evergreen/config_generator/components/valgrind.py +++ b/.evergreen/config_generator/components/valgrind.py @@ -55,7 +55,8 @@ def tasks(): tags += [mongodb_version, topology] updates = [KeyValueParam(key='build_type', value='Debug')] - compile_vars = {'BSON_EXTRA_ALIGNMENT': 1} if with_extra_align else {} + icd_vars = {'SKIP_INSTALL_LIBMONGOCRYPT': 1} + compile_vars = {} test_vars = { 'MONGOCXX_TEST_TOPOLOGY': topology, 'TEST_WITH_VALGRIND': 'ON', @@ -66,7 +67,10 @@ def tasks(): if link_type == 'static': updates.append(KeyValueParam(key='USE_STATIC_LIBS', value='1')) - if not with_extra_align: + if with_extra_align: + icd_vars |= {'BSON_EXTRA_ALIGNMENT': 1} + compile_vars |= {'BSON_EXTRA_ALIGNMENT': 1} + else: compile_vars |= {'RUN_DISTCHECK': 1} commands = [expansions_update(updates=updates)] if updates else [] @@ -74,7 +78,7 @@ def tasks(): commands += [ Setup.call(), StartMongod.call(mongodb_version=mongodb_version, topology=topology), - FetchCDriverSource.call(), + InstallCDriver.call(vars=icd_vars), Compile.call(compiler=compiler, vars=compile_vars), FetchDET.call(), RunKMSServers.call(), diff --git a/.evergreen/generated_configs/tasks.yml b/.evergreen/generated_configs/tasks.yml index 77df4cc287..dd03e4498c 100644 --- a/.evergreen/generated_configs/tasks.yml +++ b/.evergreen/generated_configs/tasks.yml @@ -4222,7 +4222,9 @@ tasks: - func: start_mongod vars: mongodb_version: "5.0" - - func: fetch_c_driver_source + - func: install_c_driver + vars: + SKIP_INSTALL_LIBMONGOCRYPT: 1 - func: compile vars: RUN_DISTCHECK: 1 @@ -4246,7 +4248,10 @@ tasks: - func: start_mongod vars: mongodb_version: "5.0" - - func: fetch_c_driver_source + - func: install_c_driver + vars: + BSON_EXTRA_ALIGNMENT: 1 + SKIP_INSTALL_LIBMONGOCRYPT: 1 - func: compile vars: BSON_EXTRA_ALIGNMENT: 1 @@ -4271,7 +4276,9 @@ tasks: - func: start_mongod vars: mongodb_version: "5.0" - - func: fetch_c_driver_source + - func: install_c_driver + vars: + SKIP_INSTALL_LIBMONGOCRYPT: 1 - func: compile vars: RUN_DISTCHECK: 1 @@ -4296,7 +4303,10 @@ tasks: - func: start_mongod vars: mongodb_version: "5.0" - - func: fetch_c_driver_source + - func: install_c_driver + vars: + BSON_EXTRA_ALIGNMENT: 1 + SKIP_INSTALL_LIBMONGOCRYPT: 1 - func: compile vars: BSON_EXTRA_ALIGNMENT: 1 @@ -4320,7 +4330,10 @@ tasks: - func: start_mongod vars: mongodb_version: latest - - func: fetch_c_driver_source + - func: install_c_driver + vars: + BSON_EXTRA_ALIGNMENT: 1 + SKIP_INSTALL_LIBMONGOCRYPT: 1 - func: compile vars: BSON_EXTRA_ALIGNMENT: 1 @@ -4344,7 +4357,9 @@ tasks: - func: start_mongod vars: mongodb_version: latest - - func: fetch_c_driver_source + - func: install_c_driver + vars: + SKIP_INSTALL_LIBMONGOCRYPT: 1 - func: compile vars: RUN_DISTCHECK: 1 @@ -4369,7 +4384,10 @@ tasks: - func: start_mongod vars: mongodb_version: latest - - func: fetch_c_driver_source + - func: install_c_driver + vars: + BSON_EXTRA_ALIGNMENT: 1 + SKIP_INSTALL_LIBMONGOCRYPT: 1 - func: compile vars: BSON_EXTRA_ALIGNMENT: 1 @@ -4394,7 +4412,9 @@ tasks: - func: start_mongod vars: mongodb_version: latest - - func: fetch_c_driver_source + - func: install_c_driver + vars: + SKIP_INSTALL_LIBMONGOCRYPT: 1 - func: compile vars: RUN_DISTCHECK: 1 From 3bf5f9743e69dba7736b42a26ecdec8efde1fbbb Mon Sep 17 00:00:00 2001 From: Ezra Chung Date: Tue, 29 Oct 2024 16:06:30 -0500 Subject: [PATCH 67/78] generator: do not install libmongocrypt for sanitizer tasks --- .../config_generator/components/sanitizers.py | 2 +- .evergreen/generated_configs/tasks.yml | 16 ++++++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/.evergreen/config_generator/components/sanitizers.py b/.evergreen/config_generator/components/sanitizers.py index a4d1bcdc4d..b9edd29dde 100644 --- a/.evergreen/config_generator/components/sanitizers.py +++ b/.evergreen/config_generator/components/sanitizers.py @@ -62,7 +62,7 @@ def tasks(): updates = [KeyValueParam(key='build_type', value='Debug')] updates += [KeyValueParam(key=key, value=value) for key, value in compiler_to_vars(compiler).items()] - icd_vars = {} + icd_vars = {'SKIP_INSTALL_LIBMONGOCRYPT': 1} compile_vars = {} test_vars = { 'MONGOCXX_TEST_TOPOLOGY': topology, diff --git a/.evergreen/generated_configs/tasks.yml b/.evergreen/generated_configs/tasks.yml index dd03e4498c..9ae002a2ad 100644 --- a/.evergreen/generated_configs/tasks.yml +++ b/.evergreen/generated_configs/tasks.yml @@ -3704,6 +3704,8 @@ tasks: vars: mongodb_version: "5.0" - func: install_c_driver + vars: + SKIP_INSTALL_LIBMONGOCRYPT: 1 - func: compile vars: RUN_DISTCHECK: 1 @@ -3735,6 +3737,7 @@ tasks: - func: install_c_driver vars: BSON_EXTRA_ALIGNMENT: 1 + SKIP_INSTALL_LIBMONGOCRYPT: 1 - func: compile vars: BSON_EXTRA_ALIGNMENT: 1 @@ -3765,6 +3768,8 @@ tasks: vars: mongodb_version: "5.0" - func: install_c_driver + vars: + SKIP_INSTALL_LIBMONGOCRYPT: 1 - func: compile vars: RUN_DISTCHECK: 1 @@ -3797,6 +3802,7 @@ tasks: - func: install_c_driver vars: BSON_EXTRA_ALIGNMENT: 1 + SKIP_INSTALL_LIBMONGOCRYPT: 1 - func: compile vars: BSON_EXTRA_ALIGNMENT: 1 @@ -3826,6 +3832,8 @@ tasks: vars: mongodb_version: "5.0" - func: install_c_driver + vars: + SKIP_INSTALL_LIBMONGOCRYPT: 1 - func: compile vars: RUN_DISTCHECK: 1 @@ -3857,6 +3865,7 @@ tasks: - func: install_c_driver vars: BSON_EXTRA_ALIGNMENT: 1 + SKIP_INSTALL_LIBMONGOCRYPT: 1 - func: compile vars: BSON_EXTRA_ALIGNMENT: 1 @@ -3887,6 +3896,8 @@ tasks: vars: mongodb_version: "5.0" - func: install_c_driver + vars: + SKIP_INSTALL_LIBMONGOCRYPT: 1 - func: compile vars: RUN_DISTCHECK: 1 @@ -3919,6 +3930,7 @@ tasks: - func: install_c_driver vars: BSON_EXTRA_ALIGNMENT: 1 + SKIP_INSTALL_LIBMONGOCRYPT: 1 - func: compile vars: BSON_EXTRA_ALIGNMENT: 1 @@ -3949,6 +3961,8 @@ tasks: vars: mongodb_version: "5.0" - func: install_c_driver + vars: + SKIP_INSTALL_LIBMONGOCRYPT: 1 - func: compile vars: RUN_DISTCHECK: 1 @@ -3979,6 +3993,8 @@ tasks: vars: mongodb_version: "5.0" - func: install_c_driver + vars: + SKIP_INSTALL_LIBMONGOCRYPT: 1 - func: compile vars: RUN_DISTCHECK: 1 From 8f9aca2e47f1aea4ec2908e0982a197787ad7646 Mon Sep 17 00:00:00 2001 From: Ezra Chung Date: Wed, 30 Oct 2024 09:48:12 -0500 Subject: [PATCH 68/78] evg: backport root-level config options to .mci.yml --- .mci.yml | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/.mci.yml b/.mci.yml index 7e7f9965e9..50a5cfe8f1 100644 --- a/.mci.yml +++ b/.mci.yml @@ -1,19 +1,16 @@ -####################################### -# CXX Driver Config for MCI # -####################################### - exec_timeout_secs: 3600 +command_type: system +stepback: true +pre_error_fails_task: true +post_error_fails_task: false + include: - filename: .evergreen/generated_configs/functions.yml - filename: .evergreen/generated_configs/tasks.yml - filename: .evergreen/generated_configs/task_groups.yml - filename: .evergreen/generated_configs/variants.yml -####################################### -# Post Task # -####################################### - post: - func: "stop_mongod" - func: "backtrace" From e8ca6aae3a324837035cfb4f303947f238c29651 Mon Sep 17 00:00:00 2001 From: Ezra Chung Date: Thu, 7 Nov 2024 16:27:13 -0600 Subject: [PATCH 69/78] Use printf to print CMake arguments --- .evergreen/scripts/compile-scan-build.sh | 5 +---- .evergreen/scripts/compile.sh | 5 +---- 2 files changed, 2 insertions(+), 8 deletions(-) diff --git a/.evergreen/scripts/compile-scan-build.sh b/.evergreen/scripts/compile-scan-build.sh index f6b05e3a99..a9f10d4e0f 100755 --- a/.evergreen/scripts/compile-scan-build.sh +++ b/.evergreen/scripts/compile-scan-build.sh @@ -75,10 +75,7 @@ std) cmake_flags+=(-D "BSONCXX_POLY_USE_STD=ON") ;; esac echo "Configuring with CMake flags:" -for flag in "${cmake_flags[@]}"; do - echo " - ${flag:?}" -done -echo +printf " - %s\n" "${cmake_flags[@]}" # Configure via scan-build for consistency. CCCACHE_DISABLE=1 "${scan_build_binary}" "${scan_build_flags[@]}" "${cmake_binary:?}" -S . -B build "${cmake_flags[@]}" diff --git a/.evergreen/scripts/compile.sh b/.evergreen/scripts/compile.sh index 3623a7a1d8..7ceabcd9dd 100755 --- a/.evergreen/scripts/compile.sh +++ b/.evergreen/scripts/compile.sh @@ -243,10 +243,7 @@ if [[ "${COMPILE_MACRO_GUARD_TESTS:-"OFF"}" == "ON" ]]; then fi echo "Configuring with CMake flags:" -for flag in "${cmake_flags[@]}"; do - echo " - ${flag:?}" -done -echo +printf " - %s\n" "${cmake_flags[@]}" "${cmake_binary}" "${cmake_flags[@]}" .. From 080ac188f33aa3fd0f5a28005a94ce0ac691a0da Mon Sep 17 00:00:00 2001 From: Ezra Chung Date: Thu, 7 Nov 2024 16:27:13 -0600 Subject: [PATCH 70/78] Avoid splitting `-D` in CMake arguments list --- .evergreen/scripts/compile-scan-build.sh | 16 ++++++++-------- .evergreen/scripts/compile.sh | 8 ++++---- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/.evergreen/scripts/compile-scan-build.sh b/.evergreen/scripts/compile-scan-build.sh index a9f10d4e0f..67d3c45f76 100755 --- a/.evergreen/scripts/compile-scan-build.sh +++ b/.evergreen/scripts/compile-scan-build.sh @@ -53,10 +53,10 @@ CMAKE_BUILD_PARALLEL_LEVEL="$(nproc)" export CMAKE_BUILD_PARALLEL_LEVEL cmake_flags=( - -D CMAKE_BUILD_TYPE=Debug - -D "CMAKE_CXX_STANDARD=${CXX_STANDARD:?}" - -D CMAKE_CXX_STANDARD_REQUIRED=ON - -D ENABLE_TESTS=OFF + "-DCMAKE_BUILD_TYPE=Debug" + "-DCMAKE_CXX_STANDARD=${CXX_STANDARD:?}" + "-DCMAKE_CXX_STANDARD_REQUIRED=ON" + "-DENABLE_TESTS=OFF" ) scan_build_flags=( @@ -68,10 +68,10 @@ scan_build_flags=( ) case "${BSONCXX_POLYFILL:-}" in -mnmlstc) cmake_flags+=(-D "BSONCXX_POLY_USE_MNMLSTC=ON") ;; -boost) cmake_flags+=(-D "BSONCXX_POLY_USE_BOOST=ON") ;; -impls) cmake_flags+=(-D "BSONCXX_POLY_USE_IMPLS=ON") ;; -std) cmake_flags+=(-D "BSONCXX_POLY_USE_STD=ON") ;; +mnmlstc) cmake_flags+=("-DBSONCXX_POLY_USE_MNMLSTC=ON") ;; +boost) cmake_flags+=("-DBSONCXX_POLY_USE_BOOST=ON") ;; +impls) cmake_flags+=("-DBSONCXX_POLY_USE_IMPLS=ON") ;; +std) cmake_flags+=("-DBSONCXX_POLY_USE_STD=ON") ;; esac echo "Configuring with CMake flags:" diff --git a/.evergreen/scripts/compile.sh b/.evergreen/scripts/compile.sh index 7ceabcd9dd..dc96ecec66 100755 --- a/.evergreen/scripts/compile.sh +++ b/.evergreen/scripts/compile.sh @@ -132,10 +132,10 @@ export CMAKE_GENERATOR="${generator:?}" export CMAKE_GENERATOR_PLATFORM="${platform:-}" case "${BSONCXX_POLYFILL:-}" in -mnmlstc) cmake_flags+=(-D "BSONCXX_POLY_USE_MNMLSTC=ON") ;; -boost) cmake_flags+=(-D "BSONCXX_POLY_USE_BOOST=ON") ;; -impls) cmake_flags+=(-D "BSONCXX_POLY_USE_IMPLS=ON") ;; -std) cmake_flags+=(-D "BSONCXX_POLY_USE_STD=ON") ;; +mnmlstc) cmake_flags+=("-DBSONCXX_POLY_USE_MNMLSTC=ON") ;; +boost) cmake_flags+=("-DBSONCXX_POLY_USE_BOOST=ON") ;; +impls) cmake_flags+=("-DBSONCXX_POLY_USE_IMPLS=ON") ;; +std) cmake_flags+=("-DBSONCXX_POLY_USE_STD=ON") ;; *) ;; esac From 9fde835df3f095dd9f6d9f7d4b9ceef84e8a9e07 Mon Sep 17 00:00:00 2001 From: Ezra Chung Date: Thu, 7 Nov 2024 16:27:13 -0600 Subject: [PATCH 71/78] Avoid unintentionally modifying arguments of Python function calls --- .evergreen/config_generator/components/clang_tidy.py | 4 ++-- .../config_generator/components/funcs/install_c_driver.py | 4 ++-- .evergreen/config_generator/components/funcs/start_mongod.py | 4 ++-- .evergreen/config_generator/components/funcs/test.py | 4 ++-- .evergreen/config_generator/etc/utils.py | 2 ++ 5 files changed, 10 insertions(+), 8 deletions(-) diff --git a/.evergreen/config_generator/components/clang_tidy.py b/.evergreen/config_generator/components/clang_tidy.py index c5590698d2..5f0e4af3ba 100644 --- a/.evergreen/config_generator/components/clang_tidy.py +++ b/.evergreen/config_generator/components/clang_tidy.py @@ -29,8 +29,8 @@ class ClangTidy(Function): ) @classmethod - def call(cls, compiler: str, vars: Mapping[str, str] = {}): - vars = vars if vars else {} + def call(cls, compiler: str, vars: Mapping[str, str] = None): + vars = dict(vars or {}) vars |= compiler_to_vars(compiler) diff --git a/.evergreen/config_generator/components/funcs/install_c_driver.py b/.evergreen/config_generator/components/funcs/install_c_driver.py index c077d10b55..cd5899b499 100644 --- a/.evergreen/config_generator/components/funcs/install_c_driver.py +++ b/.evergreen/config_generator/components/funcs/install_c_driver.py @@ -32,8 +32,8 @@ class InstallCDriver(Function): ] @classmethod - def call(cls, compiler: str | None = None, vars: Mapping[str, str] = {}): - vars = vars if vars else {} + def call(cls, compiler: str | None = None, vars: Mapping[str, str] = None): + vars = dict(vars or {}) vars |= compiler_to_vars(compiler) diff --git a/.evergreen/config_generator/components/funcs/start_mongod.py b/.evergreen/config_generator/components/funcs/start_mongod.py index c6729b49a6..ad05be35d9 100644 --- a/.evergreen/config_generator/components/funcs/start_mongod.py +++ b/.evergreen/config_generator/components/funcs/start_mongod.py @@ -29,8 +29,8 @@ class StartMongod(Function): ] @classmethod - def call(cls, mongodb_version: str, topology: str, vars: Mapping[str, str] = {}): - vars = vars if vars else {} + def call(cls, mongodb_version: str, topology: str, vars: Mapping[str, str] = None): + vars = dict(vars or {}) vars |= {'mongodb_version': mongodb_version} diff --git a/.evergreen/config_generator/components/funcs/test.py b/.evergreen/config_generator/components/funcs/test.py index 3e80af967a..1e56ee648b 100644 --- a/.evergreen/config_generator/components/funcs/test.py +++ b/.evergreen/config_generator/components/funcs/test.py @@ -44,8 +44,8 @@ class Test(Function): ) @classmethod - def call(cls, build_type: str | None = None, compiler: str | None = None, vars: Mapping[str, str] = {}): - vars = vars if vars else {} + def call(cls, build_type: str | None = None, compiler: str | None = None, vars: Mapping[str, str] = None): + vars = dict(vars or {}) vars |= {'build_type': build_type} if build_type else {} vars |= compiler_to_vars(compiler) diff --git a/.evergreen/config_generator/etc/utils.py b/.evergreen/config_generator/etc/utils.py index 5f696f9582..66de77c7ff 100644 --- a/.evergreen/config_generator/etc/utils.py +++ b/.evergreen/config_generator/etc/utils.py @@ -130,6 +130,8 @@ def represent_mapping(self, tag, mapping, flow_style=False): 'args', ] + mapping = mapping.copy() + ordered = { field: mapping.pop(field) for field in before if field in mapping } From efb5da3c8f8b6c2100d9a8569796772592891904 Mon Sep 17 00:00:00 2001 From: Ezra Chung Date: Thu, 7 Nov 2024 16:27:14 -0600 Subject: [PATCH 72/78] Provide and use default `call()` in Function --- .../config_generator/components/abi_stability.py | 12 ------------ .../components/atlas_search_indexes.py | 4 ---- .evergreen/config_generator/components/benchmarks.py | 8 -------- .../config_generator/components/docker_build.py | 4 ---- .../config_generator/components/funcs/backtrace.py | 4 ---- .../components/funcs/fetch_c_driver_source.py | 4 ---- .../config_generator/components/funcs/fetch_det.py | 4 ---- .../components/funcs/run_kms_servers.py | 4 ---- .../config_generator/components/funcs/setup.py | 4 ---- .../config_generator/components/funcs/stop_mongod.py | 4 ---- .../components/funcs/test_atlas_connectivity.py | 4 ---- .../config_generator/components/funcs/test_auth.py | 4 ---- .../components/funcs/upload_code_coverage.py | 4 ---- .../funcs/upload_mongo_orchestration_artifacts.py | 6 +----- .../components/funcs/upload_working_dir.py | 4 ---- .evergreen/config_generator/components/lint.py | 4 ---- .evergreen/config_generator/components/mongohouse.py | 12 ------------ .evergreen/config_generator/components/packaging.py | 12 ------------ .evergreen/config_generator/components/scan_build.py | 4 ---- .evergreen/config_generator/components/silk.py | 8 -------- .../config_generator/components/uninstall_check.py | 4 ---- .evergreen/config_generator/etc/function.py | 4 ++++ 22 files changed, 5 insertions(+), 117 deletions(-) diff --git a/.evergreen/config_generator/components/abi_stability.py b/.evergreen/config_generator/components/abi_stability.py index 6506d81499..2db4f2de29 100644 --- a/.evergreen/config_generator/components/abi_stability.py +++ b/.evergreen/config_generator/components/abi_stability.py @@ -79,10 +79,6 @@ class AbiComplianceCheck(Function): ), ] - @classmethod - def call(cls, **kwargs): - return cls.default_call(**kwargs) - class Abidiff(Function): name = 'abidiff' @@ -119,10 +115,6 @@ class Abidiff(Function): ), ] - @classmethod - def call(cls, **kwargs): - return cls.default_call(**kwargs) - class AbiProhibitedSymbols(Function): name = 'abi-prohibited-symbols' @@ -131,10 +123,6 @@ class AbiProhibitedSymbols(Function): script='mongo-cxx-driver/.evergreen/scripts/abi-prohibited-symbols-test.sh' ) - @classmethod - def call(cls, **kwargs): - return cls.default_call(**kwargs) - def functions(): return merge_defns( diff --git a/.evergreen/config_generator/components/atlas_search_indexes.py b/.evergreen/config_generator/components/atlas_search_indexes.py index efbb26353b..1184647fb5 100644 --- a/.evergreen/config_generator/components/atlas_search_indexes.py +++ b/.evergreen/config_generator/components/atlas_search_indexes.py @@ -39,10 +39,6 @@ class TestSearchIndexHelpers(Function): ''' ) - @classmethod - def call(cls, **kwargs): - return cls.default_call(**kwargs) - def functions(): return TestSearchIndexHelpers.defn() diff --git a/.evergreen/config_generator/components/benchmarks.py b/.evergreen/config_generator/components/benchmarks.py index 1d5e83d2f7..b1d5019168 100644 --- a/.evergreen/config_generator/components/benchmarks.py +++ b/.evergreen/config_generator/components/benchmarks.py @@ -37,10 +37,6 @@ class RunBenchmarks(Function): ), ] - @classmethod - def call(cls, **kwargs): - return cls.default_call(**kwargs) - class CompileBenchmarks(Function): name = 'benchmarks-compile' @@ -55,10 +51,6 @@ class CompileBenchmarks(Function): ''' ) - @classmethod - def call(cls, **kwargs): - return cls.default_call(**kwargs) - def functions(): return merge_defns( diff --git a/.evergreen/config_generator/components/docker_build.py b/.evergreen/config_generator/components/docker_build.py index 24c4e7fac9..664aa26e1a 100644 --- a/.evergreen/config_generator/components/docker_build.py +++ b/.evergreen/config_generator/components/docker_build.py @@ -42,10 +42,6 @@ class DockerImageBuild(Function): ''' ) - @classmethod - def call(cls, **kwargs): - return cls.default_call(**kwargs) - def functions(): return DockerImageBuild.defn() diff --git a/.evergreen/config_generator/components/funcs/backtrace.py b/.evergreen/config_generator/components/funcs/backtrace.py index 350f19d663..b36c630d35 100644 --- a/.evergreen/config_generator/components/funcs/backtrace.py +++ b/.evergreen/config_generator/components/funcs/backtrace.py @@ -12,10 +12,6 @@ class Backtrace(Function): script='etc/debug-core-evergreen.sh', ) - @classmethod - def call(cls, **kwargs): - return cls.default_call(**kwargs) - def functions(): return Backtrace.defn() diff --git a/.evergreen/config_generator/components/funcs/fetch_c_driver_source.py b/.evergreen/config_generator/components/funcs/fetch_c_driver_source.py index 6a83db99e3..b2dabc81f5 100644 --- a/.evergreen/config_generator/components/funcs/fetch_c_driver_source.py +++ b/.evergreen/config_generator/components/funcs/fetch_c_driver_source.py @@ -14,10 +14,6 @@ class FetchCDriverSource(Function): script='git clone --depth 1 https://github.com/mongodb/mongo-c-driver mongoc' ) - @classmethod - def call(cls, **kwargs): - return cls.default_call(**kwargs) - def functions(): return FetchCDriverSource.defn() diff --git a/.evergreen/config_generator/components/funcs/fetch_det.py b/.evergreen/config_generator/components/funcs/fetch_det.py index ee30099ced..17e1934766 100644 --- a/.evergreen/config_generator/components/funcs/fetch_det.py +++ b/.evergreen/config_generator/components/funcs/fetch_det.py @@ -23,10 +23,6 @@ class FetchDET(Function): ), ] - @classmethod - def call(cls, **kwargs): - return cls.default_call(**kwargs) - def functions(): return FetchDET.defn() diff --git a/.evergreen/config_generator/components/funcs/run_kms_servers.py b/.evergreen/config_generator/components/funcs/run_kms_servers.py index b80f91c95c..e84b207876 100644 --- a/.evergreen/config_generator/components/funcs/run_kms_servers.py +++ b/.evergreen/config_generator/components/funcs/run_kms_servers.py @@ -49,10 +49,6 @@ class RunKMSServers(Function): ), ] - @classmethod - def call(cls, **kwargs): - return cls.default_call(**kwargs) - def functions(): return RunKMSServers.defn() diff --git a/.evergreen/config_generator/components/funcs/setup.py b/.evergreen/config_generator/components/funcs/setup.py index 1f3c6486a7..027db05648 100644 --- a/.evergreen/config_generator/components/funcs/setup.py +++ b/.evergreen/config_generator/components/funcs/setup.py @@ -35,10 +35,6 @@ class Setup(Function): ), ] - @classmethod - def call(cls, **kwargs): - return cls.default_call(**kwargs) - def functions(): return Setup.defn() diff --git a/.evergreen/config_generator/components/funcs/stop_mongod.py b/.evergreen/config_generator/components/funcs/stop_mongod.py index 8e6748d65e..c8e54b9771 100644 --- a/.evergreen/config_generator/components/funcs/stop_mongod.py +++ b/.evergreen/config_generator/components/funcs/stop_mongod.py @@ -20,10 +20,6 @@ class StopMongod(Function): ''' ) - @classmethod - def call(cls, **kwargs): - return cls.default_call(**kwargs) - def functions(): return StopMongod.defn() diff --git a/.evergreen/config_generator/components/funcs/test_atlas_connectivity.py b/.evergreen/config_generator/components/funcs/test_atlas_connectivity.py index f407a48b41..bcd2352c2e 100644 --- a/.evergreen/config_generator/components/funcs/test_atlas_connectivity.py +++ b/.evergreen/config_generator/components/funcs/test_atlas_connectivity.py @@ -24,10 +24,6 @@ class TestAtlasConnectivity(Function): ''' ) - @classmethod - def call(cls, **kwargs): - return cls.default_call(**kwargs) - def functions(): return TestAtlasConnectivity.defn() diff --git a/.evergreen/config_generator/components/funcs/test_auth.py b/.evergreen/config_generator/components/funcs/test_auth.py index 02e61a251b..7e34e0ce7e 100644 --- a/.evergreen/config_generator/components/funcs/test_auth.py +++ b/.evergreen/config_generator/components/funcs/test_auth.py @@ -20,10 +20,6 @@ class TestAuth(Function): ''' ) - @classmethod - def call(cls, **kwargs): - return cls.default_call(**kwargs) - def functions(): return TestAuth.defn() diff --git a/.evergreen/config_generator/components/funcs/upload_code_coverage.py b/.evergreen/config_generator/components/funcs/upload_code_coverage.py index 107c4f0317..6e6f53455e 100644 --- a/.evergreen/config_generator/components/funcs/upload_code_coverage.py +++ b/.evergreen/config_generator/components/funcs/upload_code_coverage.py @@ -13,10 +13,6 @@ class UploadCodeCoverage(Function): script='.evergreen/scripts/upload-code-coverage.sh', ) - @classmethod - def call(cls, **kwargs): - return cls.default_call(**kwargs) - def functions(): return UploadCodeCoverage.defn() diff --git a/.evergreen/config_generator/components/funcs/upload_mongo_orchestration_artifacts.py b/.evergreen/config_generator/components/funcs/upload_mongo_orchestration_artifacts.py index 2ac684b03a..cfbfd4bc5d 100644 --- a/.evergreen/config_generator/components/funcs/upload_mongo_orchestration_artifacts.py +++ b/.evergreen/config_generator/components/funcs/upload_mongo_orchestration_artifacts.py @@ -17,7 +17,7 @@ class UploadMongoOrchestrationArtifacts(Function): if [[ -f mongodb-logs.tar ]]; then gzip mongodb-logs.tar fi - ''' + ''', ), s3_put( command_type=EvgCommandType.SYSTEM, @@ -33,10 +33,6 @@ class UploadMongoOrchestrationArtifacts(Function): ), ] - @classmethod - def call(cls, **kwargs): - return cls.default_call(**kwargs) - def functions(): return UploadMongoOrchestrationArtifacts.defn() diff --git a/.evergreen/config_generator/components/funcs/upload_working_dir.py b/.evergreen/config_generator/components/funcs/upload_working_dir.py index 2a704c62a5..a6e6a71e4b 100644 --- a/.evergreen/config_generator/components/funcs/upload_working_dir.py +++ b/.evergreen/config_generator/components/funcs/upload_working_dir.py @@ -25,10 +25,6 @@ class UploadWorkingDir(Function): ), ] - @classmethod - def call(cls, **kwargs): - return cls.default_call(**kwargs) - def functions(): return UploadWorkingDir.defn() diff --git a/.evergreen/config_generator/components/lint.py b/.evergreen/config_generator/components/lint.py index 2767d54f18..03da765797 100644 --- a/.evergreen/config_generator/components/lint.py +++ b/.evergreen/config_generator/components/lint.py @@ -20,10 +20,6 @@ class Lint(Function): script='python etc/clang_format.py lint', ) - @classmethod - def call(cls, **kwargs): - return cls.default_call(**kwargs) - def functions(): return Lint.defn() diff --git a/.evergreen/config_generator/components/mongohouse.py b/.evergreen/config_generator/components/mongohouse.py index 360285ea4e..2b268b9ee7 100644 --- a/.evergreen/config_generator/components/mongohouse.py +++ b/.evergreen/config_generator/components/mongohouse.py @@ -29,10 +29,6 @@ class BuildMongohouse(Function): ''' ) - @classmethod - def call(cls, **kwargs): - return cls.default_call(**kwargs) - class RunMongohouse(Function): name = 'run_mongohouse' @@ -46,10 +42,6 @@ class RunMongohouse(Function): ''' ) - @classmethod - def call(cls, **kwargs): - return cls.default_call(**kwargs) - class TestMongohouse(Function): name = 'test_mongohouse' @@ -59,10 +51,6 @@ class TestMongohouse(Function): script='.evergreen/scripts/test-mongohouse.sh' ) - @classmethod - def call(cls, **kwargs): - return cls.default_call(**kwargs) - def functions(): return merge_defns( diff --git a/.evergreen/config_generator/components/packaging.py b/.evergreen/config_generator/components/packaging.py index 6f735db26b..038f61aa34 100644 --- a/.evergreen/config_generator/components/packaging.py +++ b/.evergreen/config_generator/components/packaging.py @@ -37,10 +37,6 @@ class DebianPackageBuild(Function): ), ] - @classmethod - def call(cls, **kwargs): - return cls.default_call(**kwargs) - class DebianPackageBuildMnmlstc(Function): name = 'build-package-debian-mnmlstc' @@ -68,10 +64,6 @@ class DebianPackageBuildMnmlstc(Function): ), ] - @classmethod - def call(cls, **kwargs): - return cls.default_call(**kwargs) - class RpmPackageBuild(Function): name = 'build-package-rpm' @@ -93,10 +85,6 @@ class RpmPackageBuild(Function): ), ] - @classmethod - def call(cls, **kwargs): - return cls.default_call(**kwargs) - # pylint: disable=line-too-long # fmt: off diff --git a/.evergreen/config_generator/components/scan_build.py b/.evergreen/config_generator/components/scan_build.py index 82c1390d7e..1ac88fb859 100644 --- a/.evergreen/config_generator/components/scan_build.py +++ b/.evergreen/config_generator/components/scan_build.py @@ -94,10 +94,6 @@ class UploadScanArtifacts(Function): ), ] - @classmethod - def call(cls, **kwargs): - return cls.default_call(**kwargs) - def functions(): return merge_defns( diff --git a/.evergreen/config_generator/components/silk.py b/.evergreen/config_generator/components/silk.py index 247701dcfd..0fc56e411d 100644 --- a/.evergreen/config_generator/components/silk.py +++ b/.evergreen/config_generator/components/silk.py @@ -28,10 +28,6 @@ class CheckAugmentedSBOM(Function): script='.evergreen/scripts/check-augmented-sbom.sh', ) - @classmethod - def call(cls, **kwargs): - return cls.default_call(**kwargs) - class UploadAugmentedSBOM(Function): name = 'upload augmented sbom' @@ -60,10 +56,6 @@ class UploadAugmentedSBOM(Function): ), ] - @classmethod - def call(cls, **kwargs): - return cls.default_call(**kwargs) - def functions(): return merge_defns( diff --git a/.evergreen/config_generator/components/uninstall_check.py b/.evergreen/config_generator/components/uninstall_check.py index 766b2aaa8a..785fc63a13 100644 --- a/.evergreen/config_generator/components/uninstall_check.py +++ b/.evergreen/config_generator/components/uninstall_check.py @@ -43,10 +43,6 @@ class UninstallCheck(Function): ''' ) - @classmethod - def call(cls, **kwargs): - return cls.default_call(**kwargs) - def functions(): return UninstallCheck.defn() diff --git a/.evergreen/config_generator/etc/function.py b/.evergreen/config_generator/etc/function.py index 837590a252..61398dced5 100644 --- a/.evergreen/config_generator/etc/function.py +++ b/.evergreen/config_generator/etc/function.py @@ -18,6 +18,10 @@ def defn(cls) -> Mapping[str, list[EvgCommand]]: def default_call(cls, **kwargs) -> FunctionCall: return FunctionCall(func=cls.name, **kwargs) + @classmethod + def call(cls, **kwargs) -> FunctionCall: + return cls.default_call(**kwargs) + def merge_defns(*args): return ChainMap(*args) From 2f3db7dd9d88518a703031dcc1ceffea4ee31261 Mon Sep 17 00:00:00 2001 From: Ezra Chung Date: Thu, 7 Nov 2024 16:27:14 -0600 Subject: [PATCH 73/78] Use `Path.write_text()` instead of `open()` + `write()` --- .evergreen/config_generator/etc/utils.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/.evergreen/config_generator/etc/utils.py b/.evergreen/config_generator/etc/utils.py index 66de77c7ff..19bd046dd7 100644 --- a/.evergreen/config_generator/etc/utils.py +++ b/.evergreen/config_generator/etc/utils.py @@ -95,9 +95,7 @@ def write_to_file(yml, filename): # .evergreen/config_generator/etc/utils.py -> .evergreen evergreen_dir = Path(__file__).parent.parent.parent filename = evergreen_dir / 'generated_configs' / filename - - with open(filename.resolve(), 'w', encoding='utf-8') as file: - file.write(yml) + filename.write_text(yml, encoding='utf-8') class Dumper(ConfigDumper): From d8bf2241921c4a6bca9d0df3213c1dd43093166e Mon Sep 17 00:00:00 2001 From: Ezra Chung Date: Thu, 7 Nov 2024 16:27:14 -0600 Subject: [PATCH 74/78] Fix Bash script indentation --- .../components/funcs/run_kms_servers.py | 12 ++++++------ .evergreen/generated_configs/functions.yml | 12 ++++++------ 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/.evergreen/config_generator/components/funcs/run_kms_servers.py b/.evergreen/config_generator/components/funcs/run_kms_servers.py index e84b207876..fdeea5b3a2 100644 --- a/.evergreen/config_generator/components/funcs/run_kms_servers.py +++ b/.evergreen/config_generator/components/funcs/run_kms_servers.py @@ -13,9 +13,9 @@ class RunKMSServers(Function): set -o errexit echo "Preparing CSFLE venv environment..." if [[ "${distro_id}" =~ windows-64-vs2015-* ]]; then - # Python: ImportError: DLL load failed while importing _rust: The specified procedure could not be found. - echo "Preparing CSFLE venv environment... skipped." - exit 0 + # Python: ImportError: DLL load failed while importing _rust: The specified procedure could not be found. + echo "Preparing CSFLE venv environment... skipped." + exit 0 fi cd ./drivers-evergreen-tools/.evergreen/csfle # This function ensures future invocations of activate-kmstlsvenv.sh conducted in @@ -33,9 +33,9 @@ class RunKMSServers(Function): set -o errexit echo "Starting mock KMS servers..." if [[ "${distro_id}" =~ windows-64-vs2015-* ]]; then - # Python: ImportError: DLL load failed while importing _rust: The specified procedure could not be found. - echo "Starting mock KMS servers... skipped." - exit 0 + # Python: ImportError: DLL load failed while importing _rust: The specified procedure could not be found. + echo "Starting mock KMS servers... skipped." + exit 0 fi cd ./drivers-evergreen-tools/.evergreen/csfle . ./activate-kmstlsvenv.sh diff --git a/.evergreen/generated_configs/functions.yml b/.evergreen/generated_configs/functions.yml index 2a1a2f1e70..0c7119ef4e 100644 --- a/.evergreen/generated_configs/functions.yml +++ b/.evergreen/generated_configs/functions.yml @@ -369,9 +369,9 @@ functions: set -o errexit echo "Preparing CSFLE venv environment..." if [[ "${distro_id}" =~ windows-64-vs2015-* ]]; then - # Python: ImportError: DLL load failed while importing _rust: The specified procedure could not be found. - echo "Preparing CSFLE venv environment... skipped." - exit 0 + # Python: ImportError: DLL load failed while importing _rust: The specified procedure could not be found. + echo "Preparing CSFLE venv environment... skipped." + exit 0 fi cd ./drivers-evergreen-tools/.evergreen/csfle # This function ensures future invocations of activate-kmstlsvenv.sh conducted in @@ -391,9 +391,9 @@ functions: set -o errexit echo "Starting mock KMS servers..." if [[ "${distro_id}" =~ windows-64-vs2015-* ]]; then - # Python: ImportError: DLL load failed while importing _rust: The specified procedure could not be found. - echo "Starting mock KMS servers... skipped." - exit 0 + # Python: ImportError: DLL load failed while importing _rust: The specified procedure could not be found. + echo "Starting mock KMS servers... skipped." + exit 0 fi cd ./drivers-evergreen-tools/.evergreen/csfle . ./activate-kmstlsvenv.sh From be975702b3c11e73e7dbf4fc723f3341e081df25 Mon Sep 17 00:00:00 2001 From: Ezra Chung Date: Thu, 7 Nov 2024 16:27:15 -0600 Subject: [PATCH 75/78] Remove redundant imports --- .evergreen/config_generator/components/sanitizers.py | 1 - .evergreen/config_generator/components/scan_build.py | 3 +-- .evergreen/config_generator/components/silk.py | 2 -- .evergreen/config_generator/components/valgrind.py | 1 - 4 files changed, 1 insertion(+), 6 deletions(-) diff --git a/.evergreen/config_generator/components/sanitizers.py b/.evergreen/config_generator/components/sanitizers.py index b9edd29dde..2a63f06b98 100644 --- a/.evergreen/config_generator/components/sanitizers.py +++ b/.evergreen/config_generator/components/sanitizers.py @@ -1,7 +1,6 @@ from config_generator.components.funcs.compile import Compile from config_generator.components.funcs.fetch_det import FetchDET from config_generator.components.funcs.install_c_driver import InstallCDriver -from config_generator.components.funcs.install_c_driver import InstallCDriver from config_generator.components.funcs.run_kms_servers import RunKMSServers from config_generator.components.funcs.setup import Setup from config_generator.components.funcs.start_mongod import StartMongod diff --git a/.evergreen/config_generator/components/scan_build.py b/.evergreen/config_generator/components/scan_build.py index 1ac88fb859..cfe3325368 100644 --- a/.evergreen/config_generator/components/scan_build.py +++ b/.evergreen/config_generator/components/scan_build.py @@ -1,4 +1,3 @@ -from shrub.v3.evg_command import EvgCommandType, s3_put from config_generator.components.funcs.fetch_c_driver_source import FetchCDriverSource from config_generator.components.funcs.setup import Setup @@ -7,7 +6,7 @@ from config_generator.etc.utils import bash_exec from shrub.v3.evg_build_variant import BuildVariant, DisplayTask -from shrub.v3.evg_command import EvgCommandType +from shrub.v3.evg_command import EvgCommandType, s3_put from shrub.v3.evg_task import EvgTask, EvgTaskRef diff --git a/.evergreen/config_generator/components/silk.py b/.evergreen/config_generator/components/silk.py index 0fc56e411d..7bef61b09e 100644 --- a/.evergreen/config_generator/components/silk.py +++ b/.evergreen/config_generator/components/silk.py @@ -1,12 +1,10 @@ from config_generator.components.funcs.setup import Setup from config_generator.etc.distros import find_small_distro -from config_generator.etc.function import Function from config_generator.etc.function import Function, merge_defns from config_generator.etc.utils import bash_exec from shrub.v3.evg_build_variant import BuildVariant -from shrub.v3.evg_command import EvgCommandType from shrub.v3.evg_command import EvgCommandType, s3_put from shrub.v3.evg_task import EvgTask, EvgTaskRef diff --git a/.evergreen/config_generator/components/valgrind.py b/.evergreen/config_generator/components/valgrind.py index 63ff524b5a..9feac82ef1 100644 --- a/.evergreen/config_generator/components/valgrind.py +++ b/.evergreen/config_generator/components/valgrind.py @@ -1,5 +1,4 @@ from config_generator.components.funcs.compile import Compile -from config_generator.components.funcs.fetch_c_driver_source import FetchCDriverSource from config_generator.components.funcs.fetch_det import FetchDET from config_generator.components.funcs.install_c_driver import InstallCDriver from config_generator.components.funcs.run_kms_servers import RunKMSServers From a5bc5fd43091edd3abcd97d9b14116bae4fec53f Mon Sep 17 00:00:00 2001 From: Ezra Chung Date: Thu, 7 Nov 2024 16:27:15 -0600 Subject: [PATCH 76/78] Add a README documenting the Evergreen config generator --- .evergreen/README.md | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 .evergreen/README.md diff --git a/.evergreen/README.md b/.evergreen/README.md new file mode 100644 index 0000000000..9cccfc317c --- /dev/null +++ b/.evergreen/README.md @@ -0,0 +1,36 @@ +# Evergreen Config Generation + +## Generation + +Use [Astral uv](https://docs.astral.sh/uv/) to run the `config_generator/generate.py` script from the project root directory: + +```bash +uv run .evergreen/config_generator/generate.py +``` + +Python binary and package requirements are defined in the project root directory's `pyproject.toml` file. + +## Layout + +The contents of this directory are organized as follows: + +- `config.yml`: the root Evergreen config file. +- `generated_configs`: generated Evergreen config files included by `config.yml`. +- `config_generator`: Python scripts used to generate config files under `generated_configs`. +- `scripts`: shell scripts used by functions or tasks in the generated Evergreen config. + +## Config Generator + +Config generator scripts are organized into three subdirectories: `components`, `etc`, and `generators`. + +### Components + +These scripts define Evergreen functions, tasks, task groups, and build variants. Components which only define Evergreen functions (for reuse by multiple components) are grouped under the `funcs` subdirectory. All other components (which define a task, task group, or build variant) are located outside the `funcs` directory. Components may otherwise be grouped under additional subdirectories as desired. + +### Etc + +These scripts define helper utilities used by components, but do not define any Evergreen functions, tasks, task grous, or build variants themselves. These scripts are only imported by scripts under `components`. + +### Generators + +These scripts are invoked by `generate.py` and are each responsible for generating an Evergreen config file under `generated_configs` (`functions.py` generates `functions.yml`, etc.). These scripts only scan the contents of the `components` directory. From 6d6debac613f79e98198354917c19e6b04e061c8 Mon Sep 17 00:00:00 2001 From: Ezra Chung Date: Thu, 7 Nov 2024 16:34:43 -0600 Subject: [PATCH 77/78] README wording tweaks --- .evergreen/README.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/.evergreen/README.md b/.evergreen/README.md index 9cccfc317c..f70faf36cf 100644 --- a/.evergreen/README.md +++ b/.evergreen/README.md @@ -17,20 +17,20 @@ The contents of this directory are organized as follows: - `config.yml`: the root Evergreen config file. - `generated_configs`: generated Evergreen config files included by `config.yml`. - `config_generator`: Python scripts used to generate config files under `generated_configs`. -- `scripts`: shell scripts used by functions or tasks in the generated Evergreen config. +- `scripts`: shell scripts used by the generated Evergreen config. ## Config Generator -Config generator scripts are organized into three subdirectories: `components`, `etc`, and `generators`. +Config generator scripts are organized into three subdirectories. ### Components -These scripts define Evergreen functions, tasks, task groups, and build variants. Components which only define Evergreen functions (for reuse by multiple components) are grouped under the `funcs` subdirectory. All other components (which define a task, task group, or build variant) are located outside the `funcs` directory. Components may otherwise be grouped under additional subdirectories as desired. +These scripts define Evergreen functions, tasks, task groups, and build variants. Components which only define Evergreen functions (for reuse by multiple components) are grouped under the `funcs` subdirectory. All other components (which define a task, task group, or build variant) are located outside the `funcs` directory. ### Etc -These scripts define helper utilities used by components, but do not define any Evergreen functions, tasks, task grous, or build variants themselves. These scripts are only imported by scripts under `components`. +These scripts define helper utilities used by components, but do not define any Evergreen functions, tasks, task groups, or build variants themselves. These scripts are only imported by scripts under `components`. ### Generators -These scripts are invoked by `generate.py` and are each responsible for generating an Evergreen config file under `generated_configs` (`functions.py` generates `functions.yml`, etc.). These scripts only scan the contents of the `components` directory. +These scripts are imported by `generate.py` and are each responsible for generating an Evergreen config file under `generated_configs` (`functions.py` generates `functions.yml`, etc.). These scripts only scan the contents of the `components` directory. From 47b184d053e2d34962e50dcf7ea3e1e1cc78c743 Mon Sep 17 00:00:00 2001 From: Ezra Chung Date: Thu, 7 Nov 2024 16:39:34 -0600 Subject: [PATCH 78/78] Update README to account for uv lockfile updates --- .evergreen/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.evergreen/README.md b/.evergreen/README.md index f70faf36cf..8c3c5a0fc5 100644 --- a/.evergreen/README.md +++ b/.evergreen/README.md @@ -5,10 +5,10 @@ Use [Astral uv](https://docs.astral.sh/uv/) to run the `config_generator/generate.py` script from the project root directory: ```bash -uv run .evergreen/config_generator/generate.py +uv run --frozen .evergreen/config_generator/generate.py ``` -Python binary and package requirements are defined in the project root directory's `pyproject.toml` file. +Python binary and package requirements are defined in the project root directory's `pyproject.toml` file. When the `pyproject.toml` file is updated, omit `--frozen` to allow `uv.lock` to be updated. ## Layout