diff --git a/.clang-format b/.clang-format new file mode 100644 index 0000000..8409201 --- /dev/null +++ b/.clang-format @@ -0,0 +1,149 @@ +--- +# this file work is a derivative of onecoreuap/net/.clang-format +# https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md +# +Language: Cpp +# BasedOnStyle: LLVM +AccessModifierOffset: -4 +AlignAfterOpenBracket: AlwaysBreak +AlignConsecutiveAssignments: false +AlignEscapedNewlines: DontAlign +AlignOperands: true +AlignTrailingComments: true +AllowAllParametersOfDeclarationOnNextLine: true +AllowShortBlocksOnASingleLine: false +AllowShortCaseLabelsOnASingleLine: false +AllowShortFunctionsOnASingleLine: None +AllowShortIfStatementsOnASingleLine: false +AllowShortLoopsOnASingleLine: false +AlwaysBreakAfterDefinitionReturnType: None +AlwaysBreakAfterReturnType: None +AlwaysBreakBeforeMultilineStrings: true +AlwaysBreakTemplateDeclarations: true +BinPackArguments: false +BinPackParameters: false +BreakBeforeBinaryOperators: None +BreakBeforeBraces: Custom +BraceWrapping: + AfterCaseLabel: true + AfterClass: true + AfterControlStatement: true + AfterEnum: true + AfterFunction: true + AfterNamespace: false + AfterStruct: true + AfterUnion: true + AfterExternBlock: false + BeforeCatch: true + BeforeElse: true + SplitEmptyFunction: true + SplitEmptyRecord: true + SplitEmptyNamespace: true +BreakBeforeTernaryOperators: true +BreakConstructorInitializers: AfterColon +ColumnLimit: 130 +CommentPragmas: '^ IWYU pragma:' +CompactNamespaces: true +ConstructorInitializerAllOnOneLineOrOnePerLine: true +ConstructorInitializerIndentWidth: 4 +ContinuationIndentWidth: 4 +Cpp11BracedListStyle: true +DerivePointerAlignment: false +DisableFormat: false +ExperimentalAutoDetectBinPacking: false +FixNamespaceComments: true +ForEachMacros: [ foreach, Q_FOREACH, BOOST_FOREACH ] +IncludeBlocks: Regroup +IncludeCategories: + - Regex: '^"(stdafx.h|pch.h|precomp.h)"$' + Priority: -1 +IndentCaseLabels: false +IndentWidth: 4 +IndentWrappedFunctionNames: false +KeepEmptyLinesAtTheStartOfBlocks: true +MacroBlockBegin: '^BEGIN_COM_MAP$|^BEGIN_CONNECTION_POINT_MAP$|^BEGIN_HELPER_NODEMAP$|^BEGIN_MODULE$|^BEGIN_MSG_MAP$|^BEGIN_OBJECT_MAP$|^BEGIN_TEST_CLASS$|^BEGIN_TEST_METHOD$|^BEGIN_TEST_METHOD_PROPERTIES$' +MacroBlockEnd: '^END_COM_MAP$|^END_CONNECTION_POINT_MAP$|^END_HELPER_NODEMAP$|^END_MODULE$|^END_MSG_MAP$|^END_OBJECT_MAP$|^END_TEST_CLASS$|^END_TEST_METHOD$|^END_TEST_METHOD_PROPERTIES$' +MaxEmptyLinesToKeep: 1 +NamespaceIndentation: Inner +ObjCBlockIndentWidth: 2 +ObjCSpaceAfterProperty: false +ObjCSpaceBeforeProtocolList: true +PenaltyBreakBeforeFirstCallParameter: 19 +PenaltyBreakComment: 300 +PenaltyBreakFirstLessLess: 120 +PenaltyBreakString: 1000 +PenaltyExcessCharacter: 1 +PenaltyReturnTypeOnItsOwnLine: 1000 +PointerAlignment: Left +SortIncludes: false +SpaceAfterCStyleCast: false +SpaceBeforeAssignmentOperators: true +SpaceBeforeParens: ControlStatements +SpaceInEmptyParentheses: false +SpacesBeforeTrailingComments: 1 +SpacesInAngles: false +SpacesInContainerLiterals: true +SpacesInCStyleCastParentheses: false +SpacesInParentheses: false +SpacesInSquareBrackets: false +Standard: Cpp11 +StatementMacros: [ + _Acquires_exclusive_lock_, + _Acquires_lock_, + _Acquires_nonreentrant_lock_, + _Acquires_shared_lock_, + _Analysis_assume_smart_lock_acquired_, + _Analysis_assume_smart_lock_released_, + _Create_lock_level_, + _Detaches_lock_, + _Function_class_, + _Global_cancel_spin_lock_, + _Global_critical_region_, + _Global_interlock_, + _Global_priority_region_, + _Has_lock_kind_, + _Has_lock_level_, + _IRQL_always_function_max_, + _IRQL_always_function_min_, + _IRQL_raises_, + _IRQL_requires_, + _IRQL_requires_max_, + _IRQL_requires_min_, + _IRQL_requires_same_, + _IRQL_restores_, + _IRQL_restores_global_, + _IRQL_saves_, + _IRQL_saves_global_, + _Lock_level_order_, + _Moves_lock_, + _Must_inspect_result_, + _No_competing_thread_, + _Post_same_lock_, + _Post_writable_byte_size_, + _Pre_satisfies_, + _Releases_exclusive_lock_, + _Releases_lock_, + _Releases_nonreentrant_lock_, + _Releases_shared_lock_, + _Replaces_lock_, + _Requires_exclusive_lock_held_, + _Requires_lock_held_, + _Requires_lock_not_held_, + _Requires_no_locks_held_, + _Requires_shared_lock_held_, + _Ret_maybenull_, + _Ret_range_, + _Success_, + _Swaps_locks_, + _Use_decl_annotations_, + _When_, + RpcEndExcept, +] +TabWidth: 4 +TypenameMacros: [ + IFACEMETHOD, + STDMETHOD, +] +UseTab: Never +... + diff --git a/.gdnsuppress b/.gdnsuppress new file mode 100644 index 0000000..00368c8 --- /dev/null +++ b/.gdnsuppress @@ -0,0 +1,326 @@ +{ + "hydrated": false, + "properties": { + "helpUri": "https://eng.ms/docs/microsoft-security/security/azure-security/cloudai-security-fundamentals-engineering/security-integration/guardian-wiki/microsoft-guardian/general/suppressions" + }, + "version": "1.0.0", + "suppressionSets": { + "default": { + "name": "default", + "createdDate": "2025-04-30 22:17:21Z", + "lastUpdatedDate": "2025-04-30 22:17:21Z" + } + }, + "results": { + "3d7d59d41a06e01093616033ddd4ecec1e8dcb65363768638eea6acb6d012b4e": { + "signature": "3d7d59d41a06e01093616033ddd4ecec1e8dcb65363768638eea6acb6d012b4e", + "alternativeSignatures": [ + "88c2fa648d6200a3832a1a4b6d568c43a9dd89e05e4032c4286450c4d3a9171d" + ], + "memberOf": [ + "default" + ], + "createdDate": "2025-04-30 22:17:21Z" + }, + "aa145b1818ed203013a6267ca382110ec5ea9c1bf50a812964d4c7b5671224ec": { + "signature": "aa145b1818ed203013a6267ca382110ec5ea9c1bf50a812964d4c7b5671224ec", + "alternativeSignatures": [ + "88c2fa648d6200a3832a1a4b6d568c43a9dd89e05e4032c4286450c4d3a9171d" + ], + "memberOf": [ + "default" + ], + "createdDate": "2025-04-30 22:17:21Z" + }, + "c5f15f6ef4ac3f1e82c31ae0f651ab0f1c8448e34824bf231dd2104cef70d9e5": { + "signature": "c5f15f6ef4ac3f1e82c31ae0f651ab0f1c8448e34824bf231dd2104cef70d9e5", + "alternativeSignatures": [ + "88c2fa648d6200a3832a1a4b6d568c43a9dd89e05e4032c4286450c4d3a9171d" + ], + "memberOf": [ + "default" + ], + "createdDate": "2025-04-30 22:17:21Z" + }, + "e8eb99fd7876f9c79c0ff194de9e21cc77d63573a9b73ba1666778a247dcebff": { + "signature": "e8eb99fd7876f9c79c0ff194de9e21cc77d63573a9b73ba1666778a247dcebff", + "alternativeSignatures": [ + "88c2fa648d6200a3832a1a4b6d568c43a9dd89e05e4032c4286450c4d3a9171d" + ], + "memberOf": [ + "default" + ], + "createdDate": "2025-04-30 22:17:21Z" + }, + "43df748a685bc9feca8cf04c518f57a82012d61665dca65d8a1fb652a55d9391": { + "signature": "43df748a685bc9feca8cf04c518f57a82012d61665dca65d8a1fb652a55d9391", + "alternativeSignatures": [ + "88c2fa648d6200a3832a1a4b6d568c43a9dd89e05e4032c4286450c4d3a9171d" + ], + "memberOf": [ + "default" + ], + "createdDate": "2025-04-30 22:17:21Z" + }, + "fc58019c679cf3c469af5161b1f237f7552ee81c3d3ae29aff2d18fcceafe3e7": { + "signature": "fc58019c679cf3c469af5161b1f237f7552ee81c3d3ae29aff2d18fcceafe3e7", + "alternativeSignatures": [ + "88c2fa648d6200a3832a1a4b6d568c43a9dd89e05e4032c4286450c4d3a9171d" + ], + "memberOf": [ + "default" + ], + "createdDate": "2025-04-30 22:17:21Z" + }, + "bedcd464fd4426dbd786cb09b7407100aa548dfff85d3c89e7fd79c8c2623391": { + "signature": "bedcd464fd4426dbd786cb09b7407100aa548dfff85d3c89e7fd79c8c2623391", + "alternativeSignatures": [ + "88c2fa648d6200a3832a1a4b6d568c43a9dd89e05e4032c4286450c4d3a9171d" + ], + "memberOf": [ + "default" + ], + "createdDate": "2025-04-30 22:17:21Z" + }, + "06d5d116da395c14acda7a67c6530e675cc6d59593a94f37fbc2b91ce05380ca": { + "signature": "06d5d116da395c14acda7a67c6530e675cc6d59593a94f37fbc2b91ce05380ca", + "alternativeSignatures": [ + "88c2fa648d6200a3832a1a4b6d568c43a9dd89e05e4032c4286450c4d3a9171d" + ], + "memberOf": [ + "default" + ], + "createdDate": "2025-04-30 22:17:21Z" + }, + "a93af66a96249e7041eee45e325c2548da917d4c6984e7cf67fa0c052a01a980": { + "signature": "a93af66a96249e7041eee45e325c2548da917d4c6984e7cf67fa0c052a01a980", + "alternativeSignatures": [ + "88c2fa648d6200a3832a1a4b6d568c43a9dd89e05e4032c4286450c4d3a9171d" + ], + "memberOf": [ + "default" + ], + "createdDate": "2025-04-30 22:17:21Z" + }, + "2950fa4920cef845442e43dccfbdd49ca5935a1f0aa115c3b25bf5397d39bac7": { + "signature": "2950fa4920cef845442e43dccfbdd49ca5935a1f0aa115c3b25bf5397d39bac7", + "alternativeSignatures": [ + "88c2fa648d6200a3832a1a4b6d568c43a9dd89e05e4032c4286450c4d3a9171d" + ], + "memberOf": [ + "default" + ], + "createdDate": "2025-04-30 22:17:21Z" + }, + "d747605a4cb9b5cbe7715f638b3909572302db204327120c50f712064c405380": { + "signature": "d747605a4cb9b5cbe7715f638b3909572302db204327120c50f712064c405380", + "alternativeSignatures": [ + "88c2fa648d6200a3832a1a4b6d568c43a9dd89e05e4032c4286450c4d3a9171d" + ], + "memberOf": [ + "default" + ], + "createdDate": "2025-04-30 22:17:21Z" + }, + "be9c9eacd39f7740ac8794956f9133718e7bac4556a7a29ebdbcae5a1c762faf": { + "signature": "be9c9eacd39f7740ac8794956f9133718e7bac4556a7a29ebdbcae5a1c762faf", + "alternativeSignatures": [ + "88c2fa648d6200a3832a1a4b6d568c43a9dd89e05e4032c4286450c4d3a9171d" + ], + "memberOf": [ + "default" + ], + "createdDate": "2025-04-30 22:17:21Z" + }, + "1af653b6acce89da21e37933f80d0686bf8a01aab386620533b42e06b55a3f26": { + "signature": "1af653b6acce89da21e37933f80d0686bf8a01aab386620533b42e06b55a3f26", + "alternativeSignatures": [ + "88c2fa648d6200a3832a1a4b6d568c43a9dd89e05e4032c4286450c4d3a9171d" + ], + "memberOf": [ + "default" + ], + "createdDate": "2025-04-30 22:17:21Z" + }, + "5ba96332382fbe9cfb5c6baf51b5bd6e2644f1aa86c3fad66562dd648458f431": { + "signature": "5ba96332382fbe9cfb5c6baf51b5bd6e2644f1aa86c3fad66562dd648458f431", + "alternativeSignatures": [ + "88c2fa648d6200a3832a1a4b6d568c43a9dd89e05e4032c4286450c4d3a9171d" + ], + "memberOf": [ + "default" + ], + "createdDate": "2025-04-30 22:17:21Z" + }, + "29432097a113f870ee7f86e585601fa1a6013f50b65893a359391ef47f996c73": { + "signature": "29432097a113f870ee7f86e585601fa1a6013f50b65893a359391ef47f996c73", + "alternativeSignatures": [ + "88c2fa648d6200a3832a1a4b6d568c43a9dd89e05e4032c4286450c4d3a9171d" + ], + "memberOf": [ + "default" + ], + "createdDate": "2025-04-30 22:17:21Z" + }, + "352c2da0bfcde6f9f60c43359e7263b07247d26bff0343a369c8e3667c37fbe1": { + "signature": "352c2da0bfcde6f9f60c43359e7263b07247d26bff0343a369c8e3667c37fbe1", + "alternativeSignatures": [ + "88c2fa648d6200a3832a1a4b6d568c43a9dd89e05e4032c4286450c4d3a9171d" + ], + "memberOf": [ + "default" + ], + "createdDate": "2025-04-30 22:17:21Z" + }, + "64bf4920e1b5b21e7312594ca9d95e3b48ac05a9cef507b21d91ba588a0ab08e": { + "signature": "64bf4920e1b5b21e7312594ca9d95e3b48ac05a9cef507b21d91ba588a0ab08e", + "alternativeSignatures": [ + "88c2fa648d6200a3832a1a4b6d568c43a9dd89e05e4032c4286450c4d3a9171d" + ], + "memberOf": [ + "default" + ], + "createdDate": "2025-04-30 22:17:21Z" + }, + "720d1478e66c5f46670729c232d5afb787cdcc007f53e67d31edd4457e60967c": { + "signature": "720d1478e66c5f46670729c232d5afb787cdcc007f53e67d31edd4457e60967c", + "alternativeSignatures": [ + "88c2fa648d6200a3832a1a4b6d568c43a9dd89e05e4032c4286450c4d3a9171d" + ], + "memberOf": [ + "default" + ], + "createdDate": "2025-04-30 22:17:21Z" + }, + "cf0a86680efb56a7eb351df85c51c6ad2e1ae64f108b8729ab7a9dd148d8312b": { + "signature": "cf0a86680efb56a7eb351df85c51c6ad2e1ae64f108b8729ab7a9dd148d8312b", + "alternativeSignatures": [ + "88c2fa648d6200a3832a1a4b6d568c43a9dd89e05e4032c4286450c4d3a9171d" + ], + "memberOf": [ + "default" + ], + "createdDate": "2025-04-30 22:17:21Z" + }, + "3cedf840f8bdf45d29de68eedf06e3548fbdf86ebe3929c38b1be7babd790142": { + "signature": "3cedf840f8bdf45d29de68eedf06e3548fbdf86ebe3929c38b1be7babd790142", + "alternativeSignatures": [ + "88c2fa648d6200a3832a1a4b6d568c43a9dd89e05e4032c4286450c4d3a9171d" + ], + "memberOf": [ + "default" + ], + "createdDate": "2025-04-30 22:17:21Z" + }, + "2e746764a2b4ee4971e2afded4c2dd99c5bf7647a5c8d9ae027d901caf7c5982": { + "signature": "2e746764a2b4ee4971e2afded4c2dd99c5bf7647a5c8d9ae027d901caf7c5982", + "alternativeSignatures": [ + "88c2fa648d6200a3832a1a4b6d568c43a9dd89e05e4032c4286450c4d3a9171d" + ], + "memberOf": [ + "default" + ], + "createdDate": "2025-04-30 22:17:21Z" + }, + "04e31f322d76e5b2d92d36987ae5453b9d7b4eb1aba2e59f9956e088756eb3d3": { + "signature": "04e31f322d76e5b2d92d36987ae5453b9d7b4eb1aba2e59f9956e088756eb3d3", + "alternativeSignatures": [ + "88c2fa648d6200a3832a1a4b6d568c43a9dd89e05e4032c4286450c4d3a9171d" + ], + "memberOf": [ + "default" + ], + "createdDate": "2025-04-30 22:17:21Z" + }, + "df6145ffc4e1301e28b405ec934470ab2346ac60ef1b5a806a470f6a86907141": { + "signature": "df6145ffc4e1301e28b405ec934470ab2346ac60ef1b5a806a470f6a86907141", + "alternativeSignatures": [ + "88c2fa648d6200a3832a1a4b6d568c43a9dd89e05e4032c4286450c4d3a9171d" + ], + "memberOf": [ + "default" + ], + "createdDate": "2025-04-30 22:17:21Z" + }, + "53daee355a750916f6516911381cd31bfbb8de644cb0158a7bfb6456ffab163c": { + "signature": "53daee355a750916f6516911381cd31bfbb8de644cb0158a7bfb6456ffab163c", + "alternativeSignatures": [ + "88c2fa648d6200a3832a1a4b6d568c43a9dd89e05e4032c4286450c4d3a9171d" + ], + "memberOf": [ + "default" + ], + "createdDate": "2025-04-30 22:17:21Z" + }, + "cf5679eb50b6062e91bab7a9a53aa2c356a41289192081f733e42c6def3abc96": { + "signature": "cf5679eb50b6062e91bab7a9a53aa2c356a41289192081f733e42c6def3abc96", + "alternativeSignatures": [ + "88c2fa648d6200a3832a1a4b6d568c43a9dd89e05e4032c4286450c4d3a9171d" + ], + "memberOf": [ + "default" + ], + "createdDate": "2025-04-30 22:17:21Z" + }, + "9dac4ccae735c85dd3974f876f336accefa2f90f3cea74801bf4b148926bd132": { + "signature": "9dac4ccae735c85dd3974f876f336accefa2f90f3cea74801bf4b148926bd132", + "alternativeSignatures": [ + "88c2fa648d6200a3832a1a4b6d568c43a9dd89e05e4032c4286450c4d3a9171d" + ], + "memberOf": [ + "default" + ], + "createdDate": "2025-04-30 22:17:21Z" + }, + "d05aa96a810d8140a0c2269e8d5e64b8b6db02652da6842547e1e1c4139096b5": { + "signature": "d05aa96a810d8140a0c2269e8d5e64b8b6db02652da6842547e1e1c4139096b5", + "alternativeSignatures": [ + "88c2fa648d6200a3832a1a4b6d568c43a9dd89e05e4032c4286450c4d3a9171d" + ], + "memberOf": [ + "default" + ], + "createdDate": "2025-04-30 22:17:21Z" + }, + "cd0ad7bf2ffe4b3d068dc6c9731aa1d8f001250f30ebd3667a8982f03e72c879": { + "signature": "cd0ad7bf2ffe4b3d068dc6c9731aa1d8f001250f30ebd3667a8982f03e72c879", + "alternativeSignatures": [ + "88c2fa648d6200a3832a1a4b6d568c43a9dd89e05e4032c4286450c4d3a9171d" + ], + "memberOf": [ + "default" + ], + "createdDate": "2025-04-30 22:17:21Z" + }, + "8415dbbf5b26dadc3e7d7f09b496a7f53452c60b67019bbb92c48dd1cd0f703a": { + "signature": "8415dbbf5b26dadc3e7d7f09b496a7f53452c60b67019bbb92c48dd1cd0f703a", + "alternativeSignatures": [ + "88c2fa648d6200a3832a1a4b6d568c43a9dd89e05e4032c4286450c4d3a9171d" + ], + "memberOf": [ + "default" + ], + "createdDate": "2025-04-30 22:17:21Z" + }, + "20edc36496c8274a97fe9179b56fcc1b5aab4b7e0d6769c23e14181844f64f35": { + "signature": "20edc36496c8274a97fe9179b56fcc1b5aab4b7e0d6769c23e14181844f64f35", + "alternativeSignatures": [ + "14b018ac237bbbfe6304e73f454e190a2c60d335f249db0a9af6500eeae4808f" + ], + "memberOf": [ + "default" + ], + "createdDate": "2025-04-30 22:17:21Z" + }, + "2652e38833372ca84eeebf1e9cd6145d4556e3851f7e698f95b5f01574cef372": { + "signature": "2652e38833372ca84eeebf1e9cd6145d4556e3851f7e698f95b5f01574cef372", + "alternativeSignatures": [ + "d705445d04087b944ab3e7777bce5c61a4efc64fc7be2953cf7ed8573321a87b" + ], + "memberOf": [ + "default" + ], + "createdDate": "2025-04-30 22:17:21Z" + } + } +} \ No newline at end of file diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS new file mode 100644 index 0000000..367d7f4 --- /dev/null +++ b/.github/CODEOWNERS @@ -0,0 +1,4 @@ +# File containing policy for file ownership + +# Reviewers for all files in the repository +* @microsoft/wsl-maintainers \ No newline at end of file diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md new file mode 100644 index 0000000..d1ef424 --- /dev/null +++ b/.github/pull_request_template.md @@ -0,0 +1,18 @@ + +## Summary of the Pull Request + + +## PR Checklist + +- [ ] **Closes:** Link to issue #xxx +- [ ] **Communication:** I've discussed this with core contributors already. If work hasn't been agreed, this work might be rejected +- [ ] **Tests:** Added/updated if needed and all pass +- [ ] **Localization:** All end user facing strings can be localized +- [ ] **Dev docs:** Added/updated if needed +- [ ] **Documentation updated:** If checked, please file a pull request on [our docs repo](https://github.com/MicrosoftDocs/wsl/) and link it here: #xxx + + +## Detailed Description of the Pull Request / Additional comments + + +## Validation Steps Performed diff --git a/.github/workflows/documentation.yml b/.github/workflows/documentation.yml new file mode 100644 index 0000000..fb51aae --- /dev/null +++ b/.github/workflows/documentation.yml @@ -0,0 +1,35 @@ +name: Build documentation +on: + workflow_dispatch: + push: + branches: [main, master] + +jobs: + DeployDocs: + environment: + name: github-pages + url: ${{ steps.deployment.outputs.page_url }} + runs-on: ubuntu-latest + permissions: + contents: read + pages: write + id-token: write + steps: + - name: Checkout actions + uses: actions/checkout@v4 + + - name: Install packages + run: pip install mkdocs-mermaid2-plugin mkdocs --break-system-packages + shell: bash + + - name: Build documentation + run: mkdocs build -f doc/mkdocs.yml + shell: bash + + - uses: actions/upload-pages-artifact@v3 + with: + path: doc/site + + - name: Deploy to GitHub Pages + id: deployment + uses: actions/deploy-pages@v4 \ No newline at end of file diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..6bd61e5 --- /dev/null +++ b/.gitignore @@ -0,0 +1,67 @@ +.vscode/* +.vs/ +!vendor/.preserve +out +tmp +/.vs/ +/.vscode/ +*.sln +*.user +*.csproj +*.vcxproj +*.targets +*.filters +*.pdb +*.lib +*.dll +obj/ +Debug/ +Release/ +Properties/ +/_deps/ +/package/Strings/en-US/ +/packages/ +CMakeFiles/ +CMakeCache.txt +*.msix +cmake_install.cmake +build_tools/ +*_i.c +*_p.c +*_p.c +wslsupport/wslsupport.h +dlldata.c +.gdbinit +llvm/ +*.a +*.so +*.o +linux/init/init +linux/init +initrd/init +bin/ +*.nupkg +build/ +generated/ +Microsoft.WSL.PluginApi.nuspec +test/linux/unit_tests/wsl_unit_tests +*.dir/ +UserConfig.cmake +*.wix +*.wixobj +*.wixpdb +test.bat +AppxManifest.xml +package_layout/ +priconf.xml +resources.map.txt +resources.pri +msi-install-*.txt +kernellogs.txt +FormatSource.ps1 +msixinstaller/x64 +package/x64 +/appx-logs.txt +tools/clang-format.exe +/linux-crashes +doc/site/ \ No newline at end of file diff --git a/.pipelines/build-stage.yml b/.pipelines/build-stage.yml new file mode 100644 index 0000000..4af9ca9 --- /dev/null +++ b/.pipelines/build-stage.yml @@ -0,0 +1,384 @@ +parameters: + - name: isRelease + type: boolean + default: true + + - name: packageVersion + type: string + default: "" + + - name: isNightly + type: boolean + default: false + + - name: nugetPackages + type: object + default: + - Microsoft.WSL.PluginApi.nuspec + + - name: traceLoggingConfig + type: string + default: '' + + - name: targets + type: object + default: + - target: "wsl;libwsl;wslg;wslservice;wslhost;wslrelay;wslinstaller;wslinstall;initramfs;wslserviceproxystub;wslsettings;wslinstallerproxystub;testplugin" + pattern: "wsl.exe,libwsl.dll,wslg.exe,wslservice.exe,wslhost.exe,wslrelay.exe,wslinstaller.exe,wslinstall.dll,wslserviceproxystub.dll,wslsettings.dll,wslsettings.exe,wslinstallerproxystub.dll,wsldevicehost.dll,lxutil.dll,WSLDVCPlugin.dll,testplugin.dll,wsldeps.dll" + - target: "msixgluepackage" + pattern: "gluepackage.msix" + - target: "msipackage" + pattern: "wsl.msi" + + - name: platforms + type: object + default: + - x64 + - arm64 + + - name: esrp + type: object + default: + ConnectedServiceName: "AzureConnection-AME" + signConfigType: "inlineSignParams" + SessionTimeout: 60 + MaxConcurrency: 50 + MaxRetryAttempts: 5 + ServiceEndpointUrl: $(EsrpServiceEndpointUrl) + AuthAKVName: $(EsrpAuthAKVName) + AuthSignCertName: $(EsrpAuthSignCertName) + AppRegistrationClientId: $(EsrpAppRegistrationClientId) + AppRegistrationTenantId: $(EsrpAppRegistrationTenantId) + EsrpClientId: $(EsrpClientId) + +stages: + - stage: build + jobs: + - job: + displayName: "Formatting & localization checks" + timeoutInMinutes: 30 + pool: + type: windows + variables: + ob_outputDirectory: '$(Build.SourcesDirectory)\out' + + steps: + - script: python tools/devops/validate-localization.py localization/strings en-US + displayName: Validate localization resources + + - script: python tools\devops\validate-copyright-headers.py src + displayName: Validate copyright headers (src/) + + - script: python tools\devops\validate-copyright-headers.py test + displayName: Validate copyright headers (test/) + + - task: CMake@1 + displayName: "CMake ." + inputs: + workingDirectory: "." + cmakeArgs: . + + - task: PowerShell@2 + inputs: + targetType: "filePath" + filePath: FormatSource.ps1 + arguments: "-ModifiedOnly $false -Verify $true" + displayName: "Clang-format check" + + - job: build + displayName: "Build WSL package" + timeoutInMinutes: 120 + pool: + type: windows + + variables: + NUGET_PLUGIN_HANDSHAKE_TIMEOUT_IN_SECONDS: 60 + NUGET_PLUGIN_REQUEST_TIMEOUT_IN_SECONDS: 60 + ob_outputDirectory: '$(Build.SourcesDirectory)\out' + ob_artifactBaseName: 'drop_wsl' + ob_artifactSuffix: '_build' + ob_sdl_codeSignValidation_excludes: -|**testbin\** + Codeql.PublishDatabaseLog: true + Codeql.SourceRoot: src + + steps: + + - task: CodeQL3000Init@0 + inputs: + Enabled: ${{ and(parameters.isNightly, eq(variables['Build.SourceBranch'], 'refs/heads/main'))}} + + - task: UseDotNet@2 + displayName: Install .NET Core SDK (required by EsrpCodeSigning) + condition: and(succeeded(), eq('${{ parameters.isRelease }}', true)) + inputs: + packageType: "sdk" + + - task: PowerShell@2 + displayName: Set trace logging configuration + condition: ne('${{ parameters.traceLoggingConfig }}', '') + inputs: + targetType: 'inline' + script: 'Set-Content -Path src/windows/inc/traceloggingconfig.h -Value $env:config.replace("\n", "`n")' + env: + config: '${{ parameters.traceLoggingConfig }}' + + - task: PowerShell@2 + displayName: "Compute package version" + name: version + inputs: + targetType: inline + ${{ if eq(parameters.packageVersion, '') }}: + script: | + $gitversion_version = (Select-Xml -Path packages.config -XPath '/packages/package[@id=''GitVersion.CommandLine'']/@version').Node.Value + $env:path = "packages/GitVersion.CommandLine.$gitversion_version/tools;$env:path" + . .\tools\devops\version_functions.ps1 + $version = Get-VersionInfo -Nightly $${{ parameters.isNightly }} + Write-Host "##vso[task.setvariable variable=WSL_PACKAGE_VERSION;isOutput=true]$($version.MsixVersion)" + Write-Host "##vso[task.setvariable variable=WSL_NUGET_PACKAGE_VERSION;isOutput=true]$($version.NugetVersion)" + + ${{ else }}: + script: | + Write-Host "##vso[task.setvariable variable=WSL_PACKAGE_VERSION;isOutput=true]$([string]('${{ parameters.packageVersion }}' + '.0'))" + Write-Host "##vso[task.setvariable variable=WSL_NUGET_PACKAGE_VERSION;isOutput=true]$([string]('${{ parameters.packageVersion }}'))" + + - ${{ each platform in parameters.platforms }}: + - task: CMake@1 + displayName: "CMake ${{ platform }}" + inputs: + workingDirectory: "." + cmakeArgs: . --fresh -A ${{ platform }} -DCMAKE_BUILD_TYPE=Release -DCMAKE_SYSTEM_VERSION=10.0.26100.0 -DPACKAGE_VERSION=$(version.WSL_PACKAGE_VERSION) -DWSL_NUGET_PACKAGE_VERSION=$(version.WSL_NUGET_PACKAGE_VERSION) -DSKIP_PACKAGE_SIGNING=${{ parameters.isRelease }} -DOFFICIAL_BUILD=${{ parameters.isRelease }} -DPIPELINE_BUILD_ID=$(Build.BuildId) + + # This additional Restore NuGet package task is added as a workaround for WSL Settings to have its' packages restored properly. + # Without this, building wsl settings may encounter the following error: + # + # The plugin credential provider could not acquire credentials. Authentication may require manual action. + # Consider re-running the command with --interactive for `dotnet`, /p:NuGetInteractive="true" for MSBuild or removing the -NonInteractive switch for `NuGet` + # Response status code does not indicate success: 401 (Unauthorized) + - script: _deps\nuget.exe restore -NonInteractive + + - ${{ each target in parameters.targets }}: + - script: cmake --build . --config Release --target ${{ target.target }} -- -m + condition: and(succeeded(), eq('${{ parameters.isRelease }}', true)) + displayName: "Build ${{ target.target }} (${{ platform }})" + + - task: SFP.build-tasks.custom-build-task-1.EsrpCodeSigning@5 + displayName: "Sign ${{ target.target }} (${{ platform }})" + condition: and(succeeded(), eq('${{ parameters.isRelease }}', true)) + inputs: + ConnectedServiceName: ${{ parameters.esrp.ConnectedServiceName}} + signConfigType: ${{ parameters.esrp.signConfigType }} + SessionTimeout: ${{ parameters.esrp.SessionTimeout }} + MaxConcurrency: ${{ parameters.esrp.MaxConcurrency }} + MaxRetryAttempts: ${{ parameters.esrp.MaxRetryAttempts }} + ServiceEndpointUrl: ${{ parameters.esrp.ServiceEndpointUrl }} + AuthAKVName: ${{ parameters.esrp.AuthAKVName }} + AuthSignCertName: ${{ parameters.esrp.AuthSignCertName }} + AppRegistrationClientId: ${{ parameters.esrp.AppRegistrationClientId }} + AppRegistrationTenantId: ${{ parameters.esrp.AppRegistrationTenantId }} + FolderPath: "bin\\${{ platform }}" + Pattern: "${{ target.pattern }}" + UseMSIAuthentication: true + EsrpClientId: ${{ parameters.esrp.EsrpClientId }} + inlineOperation: | + [ + { + "KeyCode": "CP-230012", + "OperationCode": "SigntoolSign", + "Parameters" : { + "OpusName" : "Microsoft", + "OpusInfo" : "http://www.microsoft.com", + "FileDigest" : "/fd \"SHA256\"", + "PageHash" : "/NPH", + "TimeStamp" : "/tr \"http://rfc3161.gtm.corp.microsoft.com/TSS/HttpTspServer\" /td sha256" + }, + "ToolName" : "sign", + "ToolVersion" : "1.0" + }, + { + "KeyCode" : "CP-230012", + "OperationCode" : "SigntoolVerify", + "Parameters" : {}, + "ToolName" : "sign", + "ToolVersion" : "1.0" + } + ] + + # Replace the intermediate wslsettings binaries file with the signed versions so that any future steps building wslsettings will use the signed versions + - task: PowerShell@2 + displayName: 'Replace wslsettings binaries in intermediate folder with signed versions' + condition: and(succeeded(), eq('${{ parameters.isRelease }}', true)) + inputs: + targetType: inline + script: | + $arch = '${{ platform }}' + $wslsettingsbinpath = "bin\$arch\release\wslsettings" + $wslsettingsobjpath = "src\windows\wslsettings\obj\$arch\release" + # Update the timestamp of wslsettings.exe so that it doesn't get rebuilt + (Get-Item $wslsettingsbinpath\wslsettings.exe).LastWriteTime = Get-Date + Copy-Item $wslsettingsbinpath\wslsettings.dll $wslsettingsobjpath\wslsettings.dll -Force + Copy-Item $wslsettingsbinpath\wslsettings.exe $wslsettingsobjpath\apphost.exe -Force + + - script: cmake --build . --config Release -- -m + displayName: "Build installer msix and tests (${{ platform }})" + + - task: PowerShell@2 + displayName: "Move ${{ platform }} installer msi to output directory" + inputs: + targetType: inline + script: | + New-Item -ItemType Directory -Path "$(ob_outputDirectory)\bundle" -Force + $arch = '${{ platform }}' + Copy-Item -Path "bin\$arch\release\wsl.msi" -Destination "$(ob_outputDirectory)\bundle\wsl.$(version.WSL_PACKAGE_VERSION).$arch.msi" + + - task: SFP.build-tasks.custom-build-task-1.EsrpCodeSigning@5 + displayName: "Sign the bundle" + condition: and(succeeded(), eq('${{ parameters.isRelease }}', true)) + inputs: + ConnectedServiceName: ${{ parameters.esrp.ConnectedServiceName}} + signConfigType: ${{ parameters.esrp.signConfigType }} + SessionTimeout: ${{ parameters.esrp.SessionTimeout }} + MaxConcurrency: ${{ parameters.esrp.MaxConcurrency }} + MaxRetryAttempts: ${{ parameters.esrp.MaxRetryAttempts }} + ServiceEndpointUrl: ${{ parameters.esrp.ServiceEndpointUrl }} + AuthAKVName: ${{ parameters.esrp.AuthAKVName }} + AuthSignCertName: ${{ parameters.esrp.AuthSignCertName }} + AppRegistrationClientId: ${{ parameters.esrp.AppRegistrationClientId }} + AppRegistrationTenantId: ${{ parameters.esrp.AppRegistrationTenantId }} + FolderPath: "bundle" + Pattern: "*.msixbundle" + UseMSIAuthentication: true + EsrpClientId: ${{ parameters.esrp.EsrpClientId }} + inlineOperation: | + [ + { + "KeyCode": "CP-230012", + "OperationCode": "SigntoolSign", + "Parameters" : { + "OpusName" : "Microsoft", + "OpusInfo" : "http://www.microsoft.com", + "FileDigest" : "/fd \"SHA256\"", + "PageHash" : "/NPH", + "TimeStamp" : "/tr \"http://rfc3161.gtm.corp.microsoft.com/TSS/HttpTspServer\" /td sha256" + }, + "ToolName" : "sign", + "ToolVersion" : "1.0" + }, + { + "KeyCode" : "CP-230012", + "OperationCode" : "SigntoolVerify", + "Parameters" : {}, + "ToolName" : "sign", + "ToolVersion" : "1.0" + } + ] + + - script: md.exe $(ob_outputDirectory)\bin\nuget + displayName: "Create the nuget directory" + + - ${{ each package in parameters.nugetPackages }}: + - script: nuget.exe pack ${{ package }} -OutputDirectory $(ob_outputDirectory)\bin\nuget -NonInteractive + displayName: Build ${{ package }} + + - task: SFP.build-tasks.custom-build-task-1.EsrpCodeSigning@5 + displayName: "Sign nuget packages" + condition: and(succeeded(), eq('${{ parameters.isRelease }}', true)) + inputs: + ConnectedServiceName: ${{ parameters.esrp.ConnectedServiceName}} + signConfigType: ${{ parameters.esrp.signConfigType }} + SessionTimeout: ${{ parameters.esrp.SessionTimeout }} + MaxConcurrency: ${{ parameters.esrp.MaxConcurrency }} + MaxRetryAttempts: ${{ parameters.esrp.MaxRetryAttempts }} + ServiceEndpointUrl: ${{ parameters.esrp.ServiceEndpointUrl }} + AuthAKVName: ${{ parameters.esrp.AuthAKVName }} + AuthSignCertName: ${{ parameters.esrp.AuthSignCertName }} + AppRegistrationClientId: ${{ parameters.esrp.AppRegistrationClientId }} + AppRegistrationTenantId: ${{ parameters.esrp.AppRegistrationTenantId }} + FolderPath: '$(ob_outputDirectory)\bin\nuget' + Pattern: "*.nupkg" + UseMSIAuthentication: true + EsrpClientId: ${{ parameters.esrp.EsrpClientId }} + inlineOperation: | + [ + { + "KeyCode": "CP-401405", + "OperationCode": "NuGetSign", + "Parameters" : {}, + "ToolName" : "sign", + "ToolVersion" : "1.0" + }, + { + "KeyCode" : "CP-401405", + "OperationCode" : "NuGetVerify", + "Parameters" : {}, + "ToolName" : "sign", + "ToolVersion" : "1.0" + } + ] + + - powershell: | + foreach ($arch in @("x64", "ARM64")) + { + $binFolder = ".\bin\$arch\Release" + $pdbFolder = Join-Path $(ob_outputDirectory) "pdb\$arch\Release" + mkdir $pdbFolder + foreach ($filter in @("*.pdb", "*.debug")) + { + foreach ($e in (Get-ChildItem -Recurse -Path $binFolder -Filter $filter)) {Copy-Item -Path $e.fullname -Destination (Join-Path $pdbFolder $e.name)} + } + } + + displayName: Collect symbols + + - powershell: | + mkdir appxsym + foreach ($arch in @("x64", "ARM64")) + { + Get-ChildItem -Path $(ob_outputDirectory)\pdb\$arch\release\*.pdb -Exclude wsltests.pdb | Compress-Archive -DestinationPath appxsym/Microsoft.WSL_$(version.WSL_PACKAGE_VERSION)_$arch.zip + Copy-Item -Path appxsym/Microsoft.WSL_$(version.WSL_PACKAGE_VERSION)_$arch.zip -Destination appxsym/Microsoft.WSL_$(version.WSL_PACKAGE_VERSION)_$arch.appxsym + } + mkdir $(ob_outputDirectory)/appxupload + Get-ChildItem -Path appxsym/*.appxsym,bundle/release/Microsoft.WSL_$(version.WSL_PACKAGE_VERSION)_x64_ARM64.msixbundle | Compress-Archive -DestinationPath $(ob_outputDirectory)/appxupload/Microsoft.WSL_$(version.WSL_PACKAGE_VERSION)_x64_ARM64.zip + Move-Item -Path $(ob_outputDirectory)/appxupload/Microsoft.WSL_$(version.WSL_PACKAGE_VERSION)_x64_ARM64.zip -Destination $(ob_outputDirectory)/appxupload/Microsoft.WSL_$(version.WSL_PACKAGE_VERSION)_x64_ARM64.appxupload + rm appxsym/*.appxsym + + displayName: Create appxupload + condition: and(succeeded(), eq('${{ parameters.isRelease }}', true)) + + - powershell: | + $taefVersion = (Select-Xml -Path packages.config -XPath '/packages/package[@id=''Microsoft.Taef'']/@version').Node.Value + New-Item -ItemType Directory -Path "$(ob_outputDirectory)\bundle" -Force + foreach ($arch in @("x64", "ARM64")) + { + mkdir $(ob_outputDirectory)\testbin\$arch\release + + Move-Item -Path "bin\$arch\release\wsltests.dll" -Destination "$(ob_outputDirectory)\testbin\$arch\release\wsltests.dll" + Move-Item -Path "bin\$arch\release\testplugin.dll" -Destination "$(ob_outputDirectory)\testbin\$arch\release\testplugin.dll" + Move-Item -Path "packages\Microsoft.Taef.$taefVersion\build\Binaries\$arch" -Destination "$(ob_outputDirectory)\testbin\$arch\release\taef" + } + + Move-Item -Path "bin\x64\cloudtest" -Destination "$(ob_outputDirectory)\testbin\x64\cloudtest" + Move-Item -Path "tools\test\test-setup.ps1" -Destination "$(ob_outputDirectory)\testbin\test-setup.ps1" + Move-Item -Path "tools\test\CloudTest-Setup.bat" -Destination "$(ob_outputDirectory)\testbin\CloudTest-Setup.bat" + Move-Item -Path "tools\wsl.wprp" -Destination "$(ob_outputDirectory)\testbin\wsl.wprp" + Move-Item -Path "test\linux\unit_tests" -Destination "$(ob_outputDirectory)\testbin\unit_tests" + + Move-Item -Path bundle\release\* -Destination $(ob_outputDirectory)\bundle + $TestDistroVersion = (Select-Xml -Path packages.config -XPath '/packages/package[@id=''Microsoft.WSL.TestDistro'']/@version').Node.Value + Copy-Item "packages\Microsoft.WSL.TestDistro.$TestDistroVersion\test_distro.tar.xz" "$(ob_outputDirectory)\testbin\x64" + + displayName: Move artifacts to drop directory + + - task: PublishSymbols@2 + displayName: Publish symbols + inputs: + SymbolServerType: "TeamServices" + TreatNotIndexedAsWarning: true + SymbolsProduct: WSL + SymbolsVersion: $(version.WSL_PACKAGE_VERSION) + SearchPattern: | + $(ob_outputDirectory)/pdb/**/*.pdb + $(ob_outputDirectory)/bin/**/*.exe + $(ob_outputDirectory)/bin/**/*.dll + + - task: CodeQL3000Finalize@0 + condition: ${{ and(parameters.isNightly, eq(variables['Build.SourceBranch'], 'refs/heads/main'))}} diff --git a/.pipelines/flight-stage.yml b/.pipelines/flight-stage.yml new file mode 100644 index 0000000..1bf1a30 --- /dev/null +++ b/.pipelines/flight-stage.yml @@ -0,0 +1,120 @@ +parameters: +- name: publishPackage + type: boolean + default: false + +- name: packageVersion + type: string + default: '' + +- name: bypassTests + type: boolean + default: false + +stages: + - stage: flight + ${{ if eq(parameters.bypassTests, true) }}: + dependsOn: [build] + ${{ else }}: + dependsOn: [test] + + jobs: + - job: flight + displayName: 'Package and Flight WSL package' + + dependsOn: [] # The stage handles this dependency + pool: + type: windows + variables: + AppId: 9P9TQF7MRM4R + FlightId: $(StoreBrokerFlightId) + StoreBrokerPath: $(Build.SourcesDirectory)\storebroker # location of StoreBroker information in the repo + StoreBrokerPayloadPath: $(Build.ArtifactStagingDirectory)\StoreBrokerPayload # location of package created for flight + WSL_PACKAGE_VERSION: $[ dependencies.build.outputs['version.WSL_PACKAGE_VERSION'] ] + ob_outputDirectory: '$(Build.SourcesDirectory)\out' + ob_artifactBaseName: 'drop_wsl' + ob_artifactSuffix: '_flight' + ob_sdl_checkcflags_enabled : false # Disable the CFLAGS check since we're not actually building anything in this stage + + steps: + + # Source: https://learn.microsoft.com/azure/devops/pipelines/build/run-retention?view=azure-devops&tabs=powershell + - task: PowerShell@2 + condition: and(succeeded(), not(canceled())) + displayName: Retain this build + inputs: + failOnStderr: true + targetType: 'inline' + script: | + $contentType = "application/json"; + $headers = @{ Authorization = 'Bearer $(System.AccessToken)' }; + $rawRequest = @{ daysValid = 365 * 2; definitionId = $(System.DefinitionId); ownerId = 'User:$(Build.RequestedForId)'; protectPipeline = $false; runId = $(Build.BuildId) }; + $request = ConvertTo-Json @($rawRequest); + $uri = "$(System.CollectionUri)$(System.TeamProject)/_apis/build/retention/leases?api-version=6.0-preview.1"; + Invoke-RestMethod -uri $uri -method POST -Headers $headers -ContentType $contentType -Body $request; + + # Download the build drop + - task: DownloadPipelineArtifact@2 + displayName: Download Bundle artifact + inputs: + artifact: "drop_wsl_build" + path: drop + + # copy the appxupload folder to the storebroker folder + - powershell: | + mkdir $(StoreBrokerPath)\appxpackage\ + Copy-Item -Path drop\appxupload\* -Destination $(StoreBrokerPath)\appxpackage\ -Recurse -Force + displayName: Copy AppxUpload artifact + + # creates a submission package that is published to the store; containers store page information and the WSL appxupload + - task: MS-RDX-MRO.windows-store-publish-dev.package-task.store-package@3 + displayName: 'Creating StoreBroker Payload' + inputs: + serviceEndpoint: 'AzureConnection-StoreBroker-WIF' + sbConfigPath: $(StoreBrokerPath)\sbconfig.json + sourceFolder: $(StoreBrokerPath)\appxpackage\ + contents: Microsoft.WSL_${{ parameters.packageVersion }}.0_x64_ARM64.appxupload + pdpPath: $(StoreBrokerPath)\PDPs\ + pdpInclude: PDP.xml + pdpMediaPath: $(StoreBrokerPath)\Media\ + outSBPackagePath: $(StoreBrokerPayloadPath) + outSBName: WindowsSubsystemForLinux + + # copy the storebroker submission package to the drop folder so it can be used if needed + - powershell: | + New-Item -ItemType Directory -Force -Path $(ob_outputDirectory) + Copy-Item -Path $(StoreBrokerPayloadPath)\* -Destination $(ob_outputDirectory) -Recurse -Force + Copy-Item -Path SBLog.txt -Destination $(ob_outputDirectory) -Force + displayName: Copy StoreBrokerPayload to drop + + # submit the package flight to the WSL SelfHost Flight Group + - task: MS-RDX-MRO.windows-store-publish-dev.flight-task.store-flight@3 + displayName: 'Flight StoreBroker Package to Partner Center - WSL SelfHost Flight Group' + condition: and(succeeded(), eq('${{ parameters.publishPackage }}', true)) + inputs: + serviceEndpoint: 'AzureConnection-StoreBroker-WIF' + appId: $(AppId) + flightId: $(FlightId) + inputMethod: JsonAndZip + jsonPath: $(StoreBrokerPayloadPath)\WindowsSubsystemForLinux.json + zipPath: $(StoreBrokerPayloadPath)\WindowsSubsystemForLinux.zip + force: true + skipPolling: true # skips polling Partner Centre/store API for the state of the package; skipping will mean that errors in the process will only show up in Partner Center + targetPublishMode: Immediate # on completion of this task, the package will be published to the WSL SelfHost flight once ceritified (no manual clicking of any buttons in Partner Center) + preserveSubmissionId: false + deletePackages: true + numberOfPackagesToKeep: 0 + + - task: PipAuthenticate@1 + displayName: 'Pip Authenticate' + inputs: + artifactFeeds: 'wsl' + + # Create a draft github release + - powershell: | + pip install --user -r tools/devops/requirements.txt + python tools/devops/create-release.py '${{ parameters.packageVersion }}' drop\bundle\Microsoft.WSL_${{ parameters.packageVersion }}.0_x64_ARM64.msixbundle drop\bundle\wsl.${{ parameters.packageVersion }}.0.arm64.msi drop\bundle\wsl.${{ parameters.packageVersion }}.0.x64.msi --no-fetch --github-token "$env:token" ${{ iif(parameters.publishPackage, '--publish', '--use-current-ref') }} + + displayName: Create Github release + env: + token: $(GITHUB_RELEASE_TOKEN) \ No newline at end of file diff --git a/.pipelines/nuget-stage.yml b/.pipelines/nuget-stage.yml new file mode 100644 index 0000000..682227f --- /dev/null +++ b/.pipelines/nuget-stage.yml @@ -0,0 +1,48 @@ +parameters: +- name: isNightly + type: boolean + default: false + +- name: nugetPackages + type: object + default: + - Microsoft.WSL.PluginApi + +stages: +- stage: nuget + dependsOn: [build, test] + jobs: + - job: nuget + displayName: 'Publish nuget packages' + condition: and(succeeded(), or(eq(variables['Build.Reason'], 'Schedule'), eq('${{ parameters.isNightly }}', false))) + dependsOn: [] # The stage handles this dependency + + pool: + type: windows + + variables: + WSL_NUGET_PACKAGE_VERSION: $[ dependencies.build.outputs['version.WSL_NUGET_PACKAGE_VERSION'] ] + NUGET_PLUGIN_HANDSHAKE_TIMEOUT_IN_SECONDS: 60 + NUGET_PLUGIN_REQUEST_TIMEOUT_IN_SECONDS: 60 + ob_outputDirectory: '$(Build.SourcesDirectory)\out' + ob_artifactBaseName: 'drop_wsl' + ob_artifactSuffix: '_nuget' + + steps: + + - task: DownloadPipelineArtifact@2 + displayName: Download nuget artifacts + inputs: + artifact: "drop_wsl_build" + path: drop + + # Note: this task might fail if there's been no commits between two nightly pipelines, which is fine. + - ${{ each package in parameters.nugetPackages }}: + - task: NuGetCommand@2 + displayName: Push nuget/${{ package }}.$(WSL_NUGET_PACKAGE_VERSION).nupkg + inputs: + command: 'push' + packagesToPush: drop/nuget/${{ package }}.$(WSL_NUGET_PACKAGE_VERSION).nupkg + nuGetFeedType: 'internal' + publishVstsFeed: wsl + allowPackageConflicts: ${{ parameters.isNightly }} \ No newline at end of file diff --git a/.pipelines/test-job.yml b/.pipelines/test-job.yml new file mode 100644 index 0000000..29f169a --- /dev/null +++ b/.pipelines/test-job.yml @@ -0,0 +1,42 @@ +parameters: + - name: branch + type: string + + - name: version + type: string + + - name: image + type: string + + - name: run + type: boolean + +jobs: + - job: test_${{ parameters.branch }}_${{ parameters.version }} + displayName: "${{ parameters.version }} tests - ${{ parameters.branch }}" + dependsOn: [] + condition: and(succeeded(), eq('${{ parameters.run }}', true)) + variables: + ob_outputDirectory: '$(Build.SourcesDirectory)\out' + ob_artifactBaseName: 'drop_wsl' + ob_artifactSuffix: '_test' + timeoutInMinutes: 360 + cancelTimeoutInMinutes: 420 + pool: + type: cloudtestagentless + steps: + - task: CloudTestServerBuildTask@2 + inputs: + DisplayName: "${{ parameters.version }} tests - ${{ parameters.branch }}" + connectedServiceName: "CloudTest-PROD" + cloudTestTenant: "wsl" + testMapLocation: 'testbin\x64\cloudtest\wsl-test-image-${{ parameters.image }}-${{ parameters.version}}\TestMap.xml' + pipelineArtifactName: "drop_wsl_build" + pipelineArtifactBuildUrl: '$(System.TaskDefinitionsUri)$(System.TeamProject)/_build/results?buildId=$(Build.BuildId)' + buildDropArtifactName: "" + timeoutInMinutes: 360 + cancelTimeoutInMinutes: 420 + TestTimeout: "0.05:00:00" + parserProperties: "worker:VsTestVersion=V150;session:HoldTrigger=Failure;VstsTestResultAttachmentUploadBehavior=Always" + notificationSubscribers: $(Build.RequestedForEmail) + scheduleBuildRequesterAlias: "lowdev" diff --git a/.pipelines/test-stage.yml b/.pipelines/test-stage.yml new file mode 100644 index 0000000..eb5244c --- /dev/null +++ b/.pipelines/test-stage.yml @@ -0,0 +1,37 @@ +parameters: + - name: rs_prerelease_only + type: boolean + default: false + + - name: versions + type: object + default: + - wsl1 + - wsl2 + + - name: test_images + type: object + default: + - name: rs_prerelease + image: rs_prerelease-2025-01-30 + - name: ni_release + image: win11-23h2-ent-2024-11-18 + - name: fe_release + image: 2022-datacenter-g2-2024-09-10 + - name: vb_release + image: win10-22h2-ent-g2-2024-09-10 + + # TODO: ge_release + +stages: +- stage: test + dependsOn: [build] + jobs: + - ${{ each version in parameters.versions }}: + - ${{ each image in parameters.test_images }}: + - template: test-job.yml@self + parameters: + branch: "${{ image.name }}" + version: ${{ version }} + image: "${{ image.image }}" + run: ${{ or(not(parameters.rs_prerelease_only), eq(image.name, 'rs_prerelease')) }} \ No newline at end of file diff --git a/.pipelines/wsl-build-nightly-localization.yml b/.pipelines/wsl-build-nightly-localization.yml new file mode 100644 index 0000000..dff79fc --- /dev/null +++ b/.pipelines/wsl-build-nightly-localization.yml @@ -0,0 +1,53 @@ +trigger: + branches: + include: + - main + paths: + include: + - 'localization/strings/en-US/Resources.resw' + +# Schedule nightly build +# Cron syntax: "mm HH DD MM DW" = minutes, hours, days, months, day of week (UTC time) +schedules: +# "0 8" = 8AM UTC = 12AM PST +- cron: "0 8 * * *" + displayName: Nightly Touchdown Build Schedule + branches: + include: + - "main" + always: true + +pool: + name: 'wsl-build' + +steps: +- checkout : self + persistCredentials: true + +- task: TouchdownBuildTask@4 + displayName: Touchdown Build Localization + inputs: + environment: 'PRODEXT' + teamId: '38646' + authType: 'FederatedIdentity' + FederatedIdentityServiceConnection: 'Azure-Connection' + isPreview: false + resourceFilePath: | + localization\strings\en-US\Resources.resw;O:localization\strings\ + storebroker\PDPs\en-us\PDP.xml;O:storebroker\PDPs\ + localizationTarget: true + pseudoSetting: 'Excluded' + cultureMappingType: 'None' + +- task: PipAuthenticate@1 + inputs: + artifactFeeds: 'wsl' + +- powershell: | + pip install --user -r tools/devops/requirements.txt + python tools/devops/create-change.py . "$env:token" "WSL localization" "Localization change from build: $env:buildId" "user/localization/$env:buildId" + + displayName: Create pull request + env: + token: $(GithubPRToken) + buildId: $(Build.BuildId) \ No newline at end of file diff --git a/.pipelines/wsl-build-nightly-onebranch.yml b/.pipelines/wsl-build-nightly-onebranch.yml new file mode 100644 index 0000000..5e4f7d5 --- /dev/null +++ b/.pipelines/wsl-build-nightly-onebranch.yml @@ -0,0 +1,50 @@ +trigger: none + +schedules: +# "0 8" = 8AM UTC = 12AM PST +- cron: "0 8 * * *" + displayName: Nightly build + branches: + include: [main] + always: true + +variables: + WindowsContainerImage: "onebranch.azurecr.io/windows/ltsc2022/vse2022:latest" + WindowsHostVersion: '1ESWindows2022' + +resources: + repositories: + - repository: templates + type: git + name: OneBranch.Pipelines/GovernedTemplates + ref: refs/heads/main + +extends: + template: v2/Microsoft.NonOfficial.yml@templates + parameters: + platform: + name: "windows_undocked" + featureFlags: + EnableCDPxPAT: false + WindowsHostVersion: 1ESWindows2022 + globalSdl: + credscan: + enabled: true + perStage: + credscan: + enabled: true + tsa: + enabled: false + git: + fetchDepth: -1 + fetchTags: true + + stages: + - template: build-stage.yml@self + parameters: + isRelease: false + isNightly: true + + - template: test-stage.yml@self + parameters: + rs_prerelease_only: false \ No newline at end of file diff --git a/.pipelines/wsl-build-notice.yml b/.pipelines/wsl-build-notice.yml new file mode 100644 index 0000000..883166b --- /dev/null +++ b/.pipelines/wsl-build-notice.yml @@ -0,0 +1,33 @@ +trigger: + branches: + include: + - main + +pool: + name: 'wsl-build' + +steps: +- checkout : self + persistCredentials: true + +- task: ComponentGovernanceComponentDetection@0 + displayName: Component Detection + +- task: notice@0 + displayName: Generate NOTICE file + inputs: + outputfile: $(System.DefaultWorkingDirectory)/NOTICE.txt + outputformat: text + +- task: PipAuthenticate@1 + inputs: + artifactFeeds: 'wsl' + +- powershell: | + pip install --user -r tools/devops/requirements.txt + python tools/devops/create-change.py . "$env:token" "WSL notice" "Notice change from build: $env:buildId" "user/notice/$env:buildId" + + displayName: Create pull request + env: + token: $(GithubPRToken) + buildId: $(Build.BuildId) \ No newline at end of file diff --git a/.pipelines/wsl-build-pr-onebranch.yml b/.pipelines/wsl-build-pr-onebranch.yml new file mode 100644 index 0000000..f6a0e6e --- /dev/null +++ b/.pipelines/wsl-build-pr-onebranch.yml @@ -0,0 +1,52 @@ +trigger: + branches: + include: + - main + - release/* + +variables: + WindowsContainerImage: "onebranch.azurecr.io/windows/ltsc2022/vse2022:latest" + WindowsHostVersion: '1ESWindows2022' + +resources: + repositories: + - repository: templates + type: git + name: OneBranch.Pipelines/GovernedTemplates + ref: refs/heads/main + +extends: + template: v2/Microsoft.NonOfficial.yml@templates + parameters: + platform: + name: "windows_undocked" + featureFlags: + EnableCDPxPAT: false + WindowsHostVersion: 1ESWindows2022 + globalSdl: + suppression: + suppressionFile: $(Build.SourcesDirectory)\.gdnsuppress + suppressionSet: default + apiscan: + enabled: false + credscan: + enabled: true + perStage: + credscan: + enabled: true + policheck: + enabled: true + break: true + severity: Note + git: + fetchDepth: -1 + fetchTags: true + + stages: + - template: build-stage.yml@self + parameters: + isRelease: false + + - template: test-stage.yml@self + parameters: + rs_prerelease_only: true diff --git a/.pipelines/wsl-build-release-onebranch.yml b/.pipelines/wsl-build-release-onebranch.yml new file mode 100644 index 0000000..3425fc9 --- /dev/null +++ b/.pipelines/wsl-build-release-onebranch.yml @@ -0,0 +1,69 @@ +parameters: +- name: bypassTests + displayName: 'Publish release even if tests fail' + type: boolean + default: false + +- name: testVersion + displayName: 'Test the release pipeline' + type: string + default: '' + +trigger: + tags: + include: ['*.*.*'] + +variables: + WindowsContainerImage: "onebranch.azurecr.io/windows/ltsc2022/vse2022:latest" + WindowsHostVersion: '1ESWindows2022' + +resources: + repositories: + - repository: templates + type: git + name: OneBranch.Pipelines/GovernedTemplates + ref: refs/heads/main + +extends: + template: v2/Microsoft.Official.yml@templates + parameters: + platform: + name: "windows_undocked" + featureFlags: + EnableCDPxPAT: false + WindowsHostVersion: 1ESWindows2022 + globalSdl: + credscan: + enabled: true + perStage: + credscan: + enabled: true + tsa: + enabled: false + evidence: + enabled: false + git: + fetchDepth: -1 + fetchTags: true + + stages: + - template: build-stage.yml@self + parameters: + isRelease: true + packageVersion: ${{ iif(eq(parameters.testVersion, ''), variables['Build.SourceBranchName'], parameters.testVersion) }} + traceLoggingConfig: $(ReleaseTraceLoggingConfig) + + - template: test-stage.yml@self + parameters: + rs_prerelease_only: false + + - template: flight-stage.yml@self + parameters: + publishPackage: ${{ iif(eq(parameters.testVersion, ''), true, false) }} + packageVersion: ${{ iif(eq(parameters.testVersion, ''), variables['Build.SourceBranchName'], parameters.testVersion) }} + bypassTests: ${{ parameters.bypassTests }} + + - ${{ if eq(parameters.testVersion, '') }}: + - template: nuget-stage.yml@self + parameters: + isNightly: false \ No newline at end of file diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..3be48f4 --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,445 @@ +cmake_minimum_required(VERSION 3.25) +set(CMAKE_SYSTEM_VERSION 10.0.26100.0) + +project(wsl) + +# Rationalize TARGET_PLATFORM +if("${CMAKE_GENERATOR_PLATFORM}" STREQUAL "arm64" OR "${TARGET_PLATFORM}" STREQUAL "arm64") + set(TARGET_PLATFORM "arm64") + set(TEST_DISTRO_PLATFORM "arm64") +elseif("${CMAKE_GENERATOR_PLATFORM}" MATCHES "x64|amd64|" OR "${TARGET_PLATFORM}" MATCHES "x64|amd64|") + set(TARGET_PLATFORM "x64") + set(TEST_DISTRO_PLATFORM "amd64") +else() + message(FATAL_ERROR "Unsupported platform: ${CMAKE_GENERATOR_PLATFORM}") +endif() + + +if (NOT ${CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION} STREQUAL ${CMAKE_SYSTEM_VERSION}) + message(FATAL_ERROR "Incorrect Windows SDK version: ${CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION}, requires ${CMAKE_SYSTEM_VERSION}") +endif() + +include(FetchContent) + +# Import GSL and nlohmannjson + +set(FETCHCONTENT_BASE_DIR ${CMAKE_BINARY_DIR}/_deps/${TARGET_PLATFORM}) + +FetchContent_Declare(GSL + URL https://github.com/microsoft/GSL/archive/refs/tags/v4.0.0.tar.gz + URL_HASH SHA256=f0e32cb10654fea91ad56bde89170d78cfbf4363ee0b01d8f097de2ba49f6ce9) + +FetchContent_MakeAvailable(GSL) +FetchContent_GetProperties(GSL SOURCE_DIR GSL_SOURCE_DIR) + + +FetchContent_Declare(nlohmannjson + URL https://github.com/nlohmann/json/releases/download/v3.11.3/json.tar.xz + URL_HASH SHA256=d6c65aca6b1ed68e7a182f4757257b107ae403032760ed6ef121c9d55e81757d) + +FetchContent_MakeAvailable(nlohmannjson) +FetchContent_GetProperties(nlohmannjson SOURCE_DIR NLOHMAN_JSON_SOURCE_DIR) + +# Import modules +list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/cmake") +find_package(IDL REQUIRED) +find_package(LINUXBUILD REQUIRED) +find_package(NUGET REQUIRED) +find_package(VERSION REQUIRED) +find_package(MC REQUIRED) +find_package(Appx REQUIRED) + +# Download nuget packages +restore_nuget_packages() + +# Load nuget packages versions and paths +parse_nuget_packages_versions() + +find_nuget_package(Microsoft.Direct3D.Linux DIRECT3D /build/native) +find_nuget_package(Microsoft.Identity.MSAL.WSL.Proxy MSAL /build/native/bin) +find_nuget_package(Microsoft.RemoteDesktop.Client.MSRDC.SessionHost MSRDC /build/native/bin) +find_nuget_package(Microsoft.Taef TAEF /) +find_nuget_package(Microsoft.Windows.ImplementationLibrary WIL /) +find_nuget_package(Microsoft.WSL.DeviceHost WSL_DEVICE_HOST /build/native) +find_nuget_package(Microsoft.WSL.Kernel KERNEL /build/native) +find_nuget_package(Microsoft.WSL.bsdtar BSDTARD /build/native/bin) +find_nuget_package(Microsoft.WSL.LinuxSdk LINUXSDK /) +find_nuget_package(Microsoft.WSL.TestDistro TEST_DISTRO /) +find_nuget_package(Microsoft.WSLg WSLG /build/native/bin) +find_nuget_package(StrawberryPerl PERL /) +find_nuget_package(vswhere VSWHERE /tools) +find_nuget_package(Wix WIX /tools/net6.0/any) + +# Architecture-specific nuget packages from the OS repo. +if (${TARGET_PLATFORM} STREQUAL "x64") + find_nuget_package(Microsoft.DXCore.Linux.amd64fre DXCORE /build/native) + find_nuget_package(Microsoft.WSL.Dependencies.amd64fre WSLDEPS /build/native) + find_nuget_package(Microsoft.WSL.LxUtil.amd64fre LXUTIL /build/native) +endif() + +if (${TARGET_PLATFORM} STREQUAL "arm64") + find_nuget_package(Microsoft.DXCore.Linux.arm64fre DXCORE /build/native) + find_nuget_package(Microsoft.WSL.Dependencies.arm64fre WSLDEPS /build/native) + find_nuget_package(Microsoft.WSL.LxUtil.arm64fre LXUTIL /build/native) +endif() + +# Wsl Settings packages +find_nuget_package(CommunityToolkit.Mvvm CTK_MVVM /) +find_nuget_package(CommunityToolkit.WinUI.Animations CTK_ANIMATIONS /) +find_nuget_package(CommunityToolkit.WinUI.Controls.SettingsControls CTK_STTNGS_CTRLS /) +find_nuget_package(Microsoft.Extensions.Hosting EXTS_HOSTING /) +find_nuget_package(Microsoft.NETCore.App.Runtime.win-${TARGET_PLATFORM} DOTNET_RUNTIME /) +find_nuget_package(Microsoft.WindowsAppSDK WIN_APP_SDK /) +find_nuget_package(Microsoft.Windows.SDK.NET.Ref WINDOWS_SDK_DOTNET /) +find_nuget_package(Microsoft.Xaml.Behaviors.WinUI.Managed XAML_BEHAVIORS /) +find_nuget_package(WinUIEx WINUIEX /) + +set(BIN2CPIO ${CMAKE_CURRENT_LIST_DIR}/tools/bin2cpio/bin2cpio.pl) +set(WSLG_TS_PLUGIN_DLL "WSLDVCPlugin.dll") + +# Default to debug build if unspecified +if(NOT CMAKE_BUILD_TYPE) + set(CMAKE_BUILD_TYPE "Debug") +endif() + +set(SUPPORTED_LANGS cs-CZ;da-DK;de-DE;en-GB;en-US;es-ES;fi-FI;fr-FR;hu-HU;it-IT;ja-JP;ko-KR;nb-NO;nl-NL;pl-PL;pt-BR;pt-PT;ru-RU;sv-SE;tr-TR;zh-CN;zh-TW) + +if (EXISTS "${CMAKE_CURRENT_LIST_DIR}/UserConfig.cmake") + find_package(USER REQUIRED PATHS ${CMAKE_CURRENT_LIST_DIR}) +endif() + +# Optional target configuration + +if (NOT DEFINED WSL_BUILD_WSL_SETTINGS) + set(WSL_BUILD_WSL_SETTINGS true) +endif () + +# Only generate the build configuration that CMake is configured for +set(CMAKE_CONFIGURATION_TYPES "${CMAKE_BUILD_TYPE}" CACHE STRING "" FORCE) + +find_commit_hash(COMMIT_HASH) + +if (NOT PACKAGE_VERSION) + find_version(PACKAGE_VERSION WSL_NUGET_PACKAGE_VERSION) # Fetch the package version from git if not specified +endif () + +if (NOT PACKAGE_VERSION MATCHES "^([0-9]+).([0-9]+).([0-9]+).([0-9]+)$") + message(FATAL_ERROR "PACKAGE_VERSION is invalid: '${PACKAGE_VERSION}'. Needs to match '([0-9]+).([0-9]+).([0-9]+).([0-9]+)'") +endif() + +set(PACKAGE_VERSION_MAJOR ${CMAKE_MATCH_1}) +set(PACKAGE_VERSION_MINOR ${CMAKE_MATCH_2}) +set(PACKAGE_VERSION_REVISION ${CMAKE_MATCH_3}) + +# The store requires the revision number to be 0, so enforce this on official builds +if (OFFICIAL_BUILD AND NOT PACKAGE_VERSION MATCHES "^([0-9]+).([0-9]+).([0-9]+).0$") + message(FATAL_ERROR "PACKAGE_VERSION is invalid: '${PACKAGE_VERSION}'. Needs to match '([0-9]+).([0-9]+).([0-9]+).0' for official builds") +endif() + +# Configure output directories +set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin/${TARGET_PLATFORM}) +set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/Debug) +set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/Release) + +set_property(GLOBAL PROPERTY USE_FOLDERS ON) + +# Packaging variables +set(BIN ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${CMAKE_BUILD_TYPE}) +file(MAKE_DIRECTORY ${BIN}) + +set (GENERATED_DIR ${CMAKE_BINARY_DIR}/generated) +file(MAKE_DIRECTORY ${GENERATED_DIR}) + +set(PACKAGE_CERTIFICATE ${GENERATED_DIR}/dev-cert.pfx) +file(CREATE_LINK ${WSL_DEVICE_HOST_SOURCE_DIR}/bin/${TARGET_PLATFORM}/wsldevicehost.dll ${BIN}/wsldevicehost.dll) +file(CREATE_LINK ${LXUTIL_SOURCE_DIR}/bin/lxutil.dll ${BIN}/lxutil.dll) +file(CREATE_LINK ${WSLG_SOURCE_DIR}/${TARGET_PLATFORM}/${WSLG_TS_PLUGIN_DLL} ${BIN}/${WSLG_TS_PLUGIN_DLL}) +file(CREATE_LINK ${WSLDEPS_SOURCE_DIR}/bin/wsldeps.dll ${BIN}/wsldeps.dll) + +if (${SKIP_PACKAGE_SIGNING}) + set(PACKAGE_SIGN_COMMAND echo Skipped package signing for:) +else() + if (NOT EXISTS ${PACKAGE_CERTIFICATE}) + execute_process( + COMMAND powershell.exe -ExecutionPolicy Bypass -NoProfile -NonInteractive ${CMAKE_CURRENT_LIST_DIR}/tools/create-dev-cert.ps1 -OutputPath ${PACKAGE_CERTIFICATE} + COMMAND_ERROR_IS_FATAL ANY) + endif() + + set(PACKAGE_SIGN_COMMAND SignTool.exe sign /a /v /fd SHA256 /f ${PACKAGE_CERTIFICATE}) +endif() + + +# Generate local test script +configure_file(${CMAKE_CURRENT_LIST_DIR}/tools/test/test.bat.in ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${CMAKE_BUILD_TYPE}/test.bat) + +# Common build flags +set(CMAKE_CXX_STANDARD 20) + +if (${CMAKE_BUILD_TYPE} STREQUAL "Debug") + set(CMAKE_MSVC_RUNTIME_LIBRARY MultiThreadedDebug) +else() + set(CMAKE_MSVC_RUNTIME_LIBRARY MultiThreaded) +endif() + +if (${TARGET_PLATFORM} STREQUAL "x64") + add_compile_definitions(_AMD64_) +endif() + +if (${TARGET_PLATFORM} STREQUAL "arm64") + add_compile_definitions(_ARM64_) +endif() + +add_definitions(/sdl) # Default-initialize class members +add_definitions(/FS) # Enable parallel PDB access +add_compile_definitions(UNICODE + WIL_SUPPRESS_PRIVATE_API_USE + CPPWINRT_SUPPRESS_STATIC_INITIALIZERS + NOMINMAX + _CRT_SECURE_NO_WARNINGS + KERNEL_VERSION="${KERNEL_VERSION}" + WSLDEPS_VERSION="${WSLDEPS_VERSION}" + WSLG_VERSION="${WSLG_VERSION}" + WSLG_TS_PLUGIN_DLL=L"${WSLG_TS_PLUGIN_DLL}" + WSL_DEVICE_HOST_VERSION="${WSL_DEVICE_HOST_VERSION}" + COMMIT_HASH="${COMMIT_HASH}" + WSL_PACKAGE_VERSION="${PACKAGE_VERSION}" + LXUTIL_VERSION="${LXUTIL_VERSION}" + MSRDC_VERSION="${MSRDC_VERSION}" + DIRECT3D_VERSION="${DIRECT3D_VERSION}" + DXCORE_VERSION="${DXCORE_VERSION}" + WSL_PACKAGE_VERSION_MAJOR=${PACKAGE_VERSION_MAJOR} + WSL_PACKAGE_VERSION_MINOR=${PACKAGE_VERSION_MINOR} + WSL_PACKAGE_VERSION_REVISION=${PACKAGE_VERSION_REVISION} + WSL_BUILD_WSL_SETTINGS=${WSL_BUILD_WSL_SETTINGS}) + +if (${OFFICIAL_BUILD}) + add_compile_definitions(WSL_OFFICIAL_BUILD) +endif() + +if (${WSL_BUILD_THIN_PACKAGE}) + add_compile_definitions(WSL_DEV_THIN_MSI_PACKAGE="${BIN}/wsl.msi") +endif () + +string(REPLACE "/Zi" "" CMAKE_CXX_FLAGS_DEBUG ${CMAKE_CXX_FLAGS_DEBUG}) # make sure /Zi is removed from the debug flags +set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /bigobj /W3 /WX /ZH:SHA_256") +set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /Z7 -DDEBUG -DDBG") +set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /Zi /guard:cf /Qspectre") + +# Linker flags +set(CMAKE_SHARED_LINKER_FLAGS_RELEASE "${CMAKE_SHARED_LINKER_FLAGS_RELEASE} /debug:full /debugtype:cv,fixup /guard:cf /DYNAMICBASE") +set(CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} /debug:full /debugtype:cv,fixup /guard:cf /DYNAMICBASE") +if (${TARGET_PLATFORM} STREQUAL "x64") + set(CMAKE_SHARED_LINKER_FLAGS_RELEASE "${CMAKE_SHARED_LINKER_FLAGS_RELEASE} /CETCOMPAT") + set(CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} /CETCOMPAT") +endif() + +# Common link libraries +link_directories(${WSLDEPS_SOURCE_DIR}/lib/) +link_directories(${LXUTIL_SOURCE_DIR}/lib/) +set(COMMON_LINK_LIBRARIES + ws2_32.lib + Userenv.lib + RuntimeObject.lib + Pathcch.lib + ntdll.lib + RpcRT4.lib + Mswsock.lib + Shlwapi.lib + synchronization.lib + Bcrypt.lib + Iphlpapi.lib + icu.lib + computecore.lib + computenetwork.lib + MI.lib + Wintrust.lib + msi.lib + wsldeps.lib) + +# Linux +if(${TARGET_PLATFORM} STREQUAL "" OR ${TARGET_PLATFORM} STREQUAL "x64") + set(LLVM_ARCH x86_64) +elseif(${TARGET_PLATFORM} STREQUAL "arm64") + set(LLVM_ARCH aarch64) +else() + message(FATAL_ERROR "Unsupported platform: '${TARGET_PLATFORM}'") +endif() + +# Determine the Visual Studio installation directory which contains LLVM tools +execute_process( + COMMAND "${VSWHERE_SOURCE_DIR}/vswhere.exe" -latest -products * -property installationPath + OUTPUT_VARIABLE VS_INSTALL_DIR + OUTPUT_STRIP_TRAILING_WHITESPACE + COMMAND_ERROR_IS_FATAL ANY +) + +if (NOT VS_INSTALL_DIR) + message(FATAL_ERROR "Could not determine Visual Studio installation directory.") +endif() + +if("${CMAKE_HOST_SYSTEM_PROCESSOR}" STREQUAL "AMD64") + set(LLVM_INSTALL_DIR "${VS_INSTALL_DIR}/VC/Tools/Llvm/x64/bin") +else() + set(LLVM_INSTALL_DIR "${VS_INSTALL_DIR}/VC/Tools/Llvm/${CMAKE_HOST_SYSTEM_PROCESSOR}/bin") +endif() + +if (NOT EXISTS ${LLVM_INSTALL_DIR}) + message(FATAL_ERROR "C++ Clang Compiler for Windows is not installed. Please install it from the Visual Studio Installer.") +endif() + +# Generate the clang-format script which contains a path to clang-format.exe +configure_file(${CMAKE_CURRENT_LIST_DIR}/tools/FormatSource.ps1.in ${CMAKE_BINARY_DIR}/FormatSource.ps1) + +cmake_path(COMPARE "${wsl_SOURCE_DIR}" EQUAL "${wsl_BINARY_DIR}" BUILD_IN_SOURCE) +if (NOT ${BUILD_IN_SOURCE}) # Testing on 3.26 project_type_DIR paths appear canonicalized + file(CREATE_LINK ${LLVM_INSTALL_DIR}/clang-format.exe ${wsl_SOURCE_DIR}/tools/clang-format.exe COPY_ON_ERROR) +endif() + +set(LINUXSDK_PATH ${LINUXSDK_SOURCE_DIR}/${LLVM_ARCH}) +set(LLVM_TARGET "${LLVM_ARCH}-unknown-linux-musl") +set(LINUX_CC ${LLVM_INSTALL_DIR}/clang.exe) +set(LINUX_CXX ${LLVM_INSTALL_DIR}/clang++.exe) +set(LINUX_AR ${LLVM_INSTALL_DIR}/llvm-ar.exe) +set(LINUX_COMMON_FLAGS --gcc-toolchain=${LINUXSDK_PATH} + -fpic + -B${LINUXSDK_PATH} + -isysroot ${LINUXSDK_PATH} + -isystem ${LINUXSDK_PATH}/include/c++/v1 + -isystem ${LINUXSDK_PATH}/include + -isystem ${GSL_SOURCE_DIR}/include + -isystem "${WSLDEPS_SOURCE_DIR}/include/lxcore" + -isystem "${WSLDEPS_SOURCE_DIR}/include/schemas" + -I "${CMAKE_CURRENT_LIST_DIR}/src/linux/inc" + -I "${CMAKE_CURRENT_LIST_DIR}/src/linux/mountutil" + -I "${CMAKE_CURRENT_LIST_DIR}/src/linux/plan9" + -I "${CMAKE_CURRENT_LIST_DIR}/src/shared/configfile" + -I "${CMAKE_CURRENT_LIST_DIR}/src/shared/inc" + -I "${NLOHMAN_JSON_SOURCE_DIR}/include" + -I "${CMAKE_BINARY_DIR}/generated" + --no-standard-libraries + -Werror + -Wall + -Wpointer-arith + -D_POSIX_C_SOURCE=200809L + -Dswprintf_s=swprintf + -fms-extensions + -target ${LLVM_TARGET} + -D_GNU_SOURCE=1 + -D_LARGEFILE64_SOURCE + -DWSL_PACKAGE_VERSION="${PACKAGE_VERSION}" + -DWSL_PACKAGE_VERSION_MAJOR=${PACKAGE_VERSION_MAJOR} + -DWSL_PACKAGE_VERSION_MINOR=${PACKAGE_VERSION_MINOR} + -DWSL_PACKAGE_VERSION_REVISION=${PACKAGE_VERSION_REVISION} + ) + +if (${TARGET_PLATFORM} STREQUAL "x64") + set(LINUX_COMMON_FLAGS ${LINUX_COMMON_FLAGS} -D_AMD64_) +endif() + +if (${TARGET_PLATFORM} STREQUAL "arm64") + set(LINUX_COMMON_FLAGS ${LINUX_COMMON_FLAGS} -D_ARM64_) +endif() + +set(LINUX_CXXFLAGS ${LINUX_COMMON_FLAGS} -std=c++20) +set(LINUX_CFLAGS ${LINUX_COMMON_FLAGS} -std=c99) + +string(TOLOWER ${CMAKE_BUILD_TYPE} build_type) +if (build_type STREQUAL debug) + set(LINUX_BUILD_TYPE_FLAGS -g3 -fno-inline-functions -DDEBUG -DDBG) +else() + set(LINUX_BUILD_TYPE_FLAGS -g -O2 -DNDEBUG) +endif() + +set(LINUX_LDFLAGS -target ${LLVM_TARGET} + --gcc-toolchain=${LINUXSDK_PATH} + -B${LINUXSDK_PATH} + -isysroot ${LINUXSDK_PATH} + -nostartfiles + --no-standard-libraries + -fuse-ld=lld.exe + -L${LINUXSDK_PATH}/lib + -L${LINUXSDK_PATH}/lib/linux + -L${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${CMAKE_BUILD_TYPE} + -lclang_rt.builtins-${LLVM_ARCH} + -l:libc.a + -static) + +set(COMMON_LINUX_LINK_LIBRAIRIES configfile) + +if(DEFINED ENV{WSL_DEV_BINARY_PATH}) + set(WSL_DEV_BINARY_PATH $ENV{WSL_DEV_BINARY_PATH}) +endif() + +if (DEFINED WSL_DEV_BINARY_PATH) # Development shortcut to make the package smaller + add_compile_definitions(WSL_SYSTEM_DISTRO_PATH="${WSL_DEV_BINARY_PATH}/system.vhd" + WSL_KERNEL_PATH="${WSL_DEV_BINARY_PATH}/kernel" + WSL_KERNEL_MODULES_PATH="${WSL_DEV_BINARY_PATH}/modules.vhd" + WSL_DEV_INSTALL_PATH="${WSL_DEV_BINARY_PATH}" + WSL_GPU_LIB_PATH="${WSL_DEV_BINARY_PATH}/lib") +endif() + +# Common include paths +include_directories(${CMAKE_CURRENT_SOURCE_DIR}/wil/include) +include_directories(${WSLDEPS_SOURCE_DIR}/include) +include_directories(${WSLDEPS_SOURCE_DIR}/include/Windows) +include_directories(${WSLDEPS_SOURCE_DIR}/include/schemas) +include_directories(${WSLDEPS_SOURCE_DIR}/include/lxcore) +include_directories(${CMAKE_CURRENT_SOURCE_DIR}/src/shared/inc) +include_directories(${CMAKE_CURRENT_SOURCE_DIR}/src/windows/inc) +include_directories(${CMAKE_CURRENT_BINARY_DIR}/src/windows/service/inc/${TARGET_PLATFORM}/${CMAKE_BUILD_TYPE}) +include_directories(${CMAKE_CURRENT_BINARY_DIR}/src/windows/wslinstaller/inc/${TARGET_PLATFORM}/${CMAKE_BUILD_TYPE}) +include_directories(${CMAKE_CURRENT_SOURCE_DIR}/src/linux/init/inc) +include_directories(${CMAKE_CURRENT_SOURCE_DIR}/src/windows/common) +include_directories(${CMAKE_CURRENT_SOURCE_DIR}/src/shared/configfile) +include_directories(${CMAKE_CURRENT_SOURCE_DIR}/localization) +include_directories(${CMAKE_BINARY_DIR}/generated) + +include_directories(${WIL_SOURCE_DIR}/include) +include_directories(${GSL_SOURCE_DIR}/include) +include_directories(${TAEF_SOURCE_DIR}/build/include) + +include_directories(${NLOHMAN_JSON_SOURCE_DIR}/include) +link_directories(${TAEF_SOURCE_DIR}/build/Library/${TARGET_PLATFORM}) +set(TAEF_LINK_LIBRARIES + TE.Common.lib + Wex.Common.lib + Wex.Logger.lib) + +# Subprojects +add_subdirectory(nuget) +add_subdirectory(msixgluepackage) +add_subdirectory(msipackage) +add_subdirectory(msixinstaller) +add_subdirectory(src/windows/common) +add_subdirectory(src/windows/service) +add_subdirectory(src/windows/wslinstaller/inc) +add_subdirectory(src/windows/wslinstaller/stub) +add_subdirectory(src/windows/wslinstaller/exe) +add_subdirectory(src/shared/configfile) +add_subdirectory(src/windows/wsl) +add_subdirectory(src/windows/wslg) +add_subdirectory(src/windows/wslhost) +add_subdirectory(src/windows/wslrelay) +add_subdirectory(src/windows/wslinstall) + +if (WSL_BUILD_WSL_SETTINGS) + add_subdirectory(src/windows/libwsl) + add_subdirectory(src/windows/wslsettings) +endif() + +add_subdirectory(src/linux/netlinkutil) +add_subdirectory(src/linux/mountutil) +add_subdirectory(src/linux/plan9) +add_subdirectory(src/linux/init) +add_subdirectory(localization) + +add_subdirectory(test/windows) + +if (DEFINED PIPELINE_BUILD_ID) + add_subdirectory(cloudtest) +endif() + + +if(DEFINED ENV{WSL_POST_BUILD_COMMAND}) + set(WSL_POST_BUILD_COMMAND $ENV{WSL_POST_BUILD_COMMAND}) +endif () diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 112311e..7311660 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,123 +1,44 @@ -Please provide as much information as possible when reporting a bug or filing an issue on the Windows Subsystem for Linux. +# WSL contributing guide -## Important: Reporting BSODs and Security issues +There are a few main ways to contribute to WSL, with guides to each one: + +1. [Add a feature or bugfix to WSL](#add-a-feature-or-bugfix-to-wsl) +2. [File a WSL issue](#file-a-wsl-issue) + +## Add a feature or bugfix to WSL + +We welcome any contributions to the WSL source code to add features or fix bugs! Before you start actually working on the feature, please **[file it as an issue, or a feature request in this repository](https://github.com/microsoft/WSL/issues)** so that we can track it and provide any feedback if necessary. + +Once you have done so, please see [the developer docs](./doc/docs/dev-loop.md) for instructions on how to build WSL locally on your machine for development. + +When your fix is ready, please [submit it as a pull request in this repository](https://github.com/microsoft/WSL/pulls) and the WSL team will triage and respond to it. Most contributions require you to agree to a Contributor License Agreement (CLA) declaring that you have the right to, and actually do, grant us the rights to use your contribution. For details, visit https://cla.microsoft.com. + +## File a WSL issue + +You can file issues for WSL at the WSL repository, or linked repositories. Before filing an issue please search for any existing issues and upvote or comment on those if possible. + +1. If your issue is related to WSL documentation, please file it at [microsoftdocs/wsl](https://github.com/microsoftdocs/WSL/issues) +2. If your issue is related to a Linux GUI app, please file it at [microsoft/wslg](https://github.com/microsoft/wslg/issues) +3. Otherwise if you have a technical issue related to WSL in general, such as start up issues, etc., please file it at [microsoft/wsl](https://github.com/microsoft/WSL/issues) + +Please provide as much information as possible when reporting a bug or filing an issue on the Windows Subsystem for Linux, and be sure to include logs as necessary! + +Please see the [notes for collecting WSL logs](#notes-for-collecting-wsl-logs) section below for more info on filing issues. + +## Thank you + +Thank you in advance for your contribution! We appreciate your help in making WSL a better tool for everyone. + +## Notes for collecting WSL logs + +### Important: Reporting BSODs and Security issues **Do not open GitHub issues for Windows crashes (BSODs) or security issues.**. Instead, send Windows crashes or other security-related issues to secure@microsoft.com. See the `10) Reporting a Windows crash (BSOD)` section below for detailed instructions. -## Reporting issues in Windows Console or WSL text rendering/user experience +### Reporting issues in Windows Console or WSL text rendering/user experience Note that WSL distro's launch in the Windows Console (unless you have taken steps to launch a 3rd party console/terminal). Therefore, *please file UI/UX related issues in the [Windows Console issue tracker](https://github.com/microsoft/console)*. -## Reporting issues in WSL -A well written bug report will follow the following template: - -### 1) Issue Title -A title succinctly describing the issue. - -#### Example: -`Traceroute not working.` - -### 2) Windows version / build number -Your Windows build number. This can be gathered from the CMD prompt using the `cmd.exe --version` command. - -```cmd.exe -C:\ cmd.exe --version -Microsoft Windows [Version 10.0.21354.1] -``` - -Note: The Windows Insider builds contain many updates and fixes. If you are running on the Creators Update (10.0.15063) please check to see if your issue has been resolved in a later build. If you are running on a Version below (10.0.14393), please try to update your Version. - -#### Example: - -`Microsoft Windows [Version 10.0.21354.1]` - -### 3) Steps required to reproduce - -Should include all packages and environmental variables as well as other required configuration. - -#### Example: On linux - -`$ sudo apt-get install traceroute && traceroute www.microsoft.com` - -#### Example: On Windows - -`` -`$ cmd.exe` -`CD C:\Windows\System32\` -`tracert.exe` -`` - -### 4) Copy of the terminal output - -#### Example: - -``` -$ traceroute www.microsoft.com -traceroute to www.microsoft.com (23.75.239.28), 30 hops max, 60 byte packets -setsockopt IP_MTU_DISCOVER: Invalid argument -``` - -### 5) Expected Behavior - -What was the expected result of the command? Include examples / documentation if possible. - -### 6) Strace of the failing command - -Run the failing command under [strace](http://manpages.ubuntu.com/manpages/wily/man1/strace.1.html). Normal command structure is: - -``` -$ strace -ff -``` - -> Note: `strace` can produce lengthy output. If the generated trace is more than about 20 lines please paste this into a [Gist](https://gist.github.com/) or another paste service and link in the bug. - -#### Example: - -``` -$ strace traceroute www.microsoft.com -execve("/usr/bin/traceroute", ["traceroute", "www.microsoft.com"], [/* 22 vars */]) = 0 -brk(0) = 0x7fffdd3bc000 -access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory) -mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f1f4e820000 -access("/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or directory) -... -... -... -``` - -### 7) Additional information - -Some bugs require additional information such as scripts to reproduce. Please add to this section. - -If there are files required, email the files to InsiderSupport@microsoft.com with: - -* **Subject**: Forward to WSL Team - RE: github issue -* **Body**: "Please forward to WSL Team" and include your attachment. - -Common files are: - -* Memory dumps found under C:\Windows\MEMORY.DMP -* Additional strace logs if the error occurs within a fork. The following - command generates an output file for every fork created: - -``` -$ strace -ff -o -``` - -#### wsl --mount - -If the issue is about wsl --mount, please include the output of running `wmic diskdrive get Availability,Capabilities,CapabilityDescriptions,DeviceID,InterfaceType,MediaLoaded,MediaType,Model,Name,Partitions` in an elevated command prompt. - -Example: - -``` -C:\WINDOWS\system32>wmic diskdrive get Availability,Capabilities,CapabilityDescriptions,DeviceID,InterfaceType,MediaLoaded,MediaType,Model,Name,Partitions -Availability Capabilities CapabilityDescriptions DeviceID InterfaceType MediaLoaded MediaType Model Name Partitions - {3, 4} {"Random Access", "Supports Writing"} \\.\PHYSICALDRIVE0 SCSI TRUE Fixed hard disk media SAMSUNG MZVLB512HAJQ-000H2 \\.\PHYSICALDRIVE0 3 - {3, 4} {"Random Access", "Supports Writing"} \\.\PHYSICALDRIVE1 SCSI TRUE Fixed hard disk media SAMSUNG MZVLB1T0HALR-000H2 \\.\PHYSICALDRIVE1 1 - {3, 4, 10} {"Random Access", "Supports Writing", "SMART Notification"} \\.\PHYSICALDRIVE2 SCSI TRUE Fixed hard disk media ST2000DM001-1ER164 \\.\PHYSICALDRIVE2 1 -``` - -#### Collect WSL logs for networking issues +### Collect WSL logs for networking issues Install tcpdump in your WSL distribution using the following commands. Note: This will not work if WSL has Internet connectivity issues. @@ -127,7 +48,7 @@ Note: This will not work if WSL has Internet connectivity issues. # sudo apt-get -y install tcpdump ``` -Install [WPR](https://learn.microsoft.com/en-us/windows-hardware/test/wpt/windows-performance-recorder) +Install [WPR](https://learn.microsoft.com/windows-hardware/test/wpt/windows-performance-recorder) To collect WSL networking logs, do the following steps in an administrative powershell prompt: @@ -142,9 +63,10 @@ The script will output the path of the log file once done.
+ -### 8) Collect WSL logs (recommended method) +### Collect WSL logs (recommended method) If you choose to email these logs instead of attaching to the bug, please send them to wsl-gh-logs@microsoft.com with the number of the github issue in the subject, and in the message a link to your comment in the github issue. @@ -157,45 +79,6 @@ Set-ExecutionPolicy Bypass -Scope Process -Force ``` The script will output the path of the log file once done. -### 9) Collect WSL logs with Feedback hub -To collect WSL logs follow these steps: - -#### Open Feedback Hub and enter the title and description of your issue - -- Open Feedback hub and create a new issue by pressing `Windows Key + F` on your keyboard. -- Enter in the details of your issue: - - In `Summarize your feedback` copy and paste in the title of your Github Issue - - In `Explain in more detail` copy and paste a link to your Github Issue - -![GIF Of networking instructions](img/networkinglog1.gif) - -#### Choose the WSL category - -- Select that your issue is a `Problem` -- Choose the `Developer Platform` category and the `Windows Subsystem for Linux` subcategory - -![GIF Of networking instructions](img/networkinglog2.gif) - -#### Recreate your problem in the 'Additional Details' section - -- Select 'Other' under 'Which of the following best describes your problem' -- Click 'Recreate My Problem' under 'Attachments -- Ensure that `Include Data About:` is checked to 'Windows Subsystem for Linux' -- 'Click Start Recording' to start collecting logs -- Recreate your problem -- Click 'Stop Recording' - -![GIF Of networking instructions](img/networkinglog3.gif) - -#### Check your attachments and submit - -- Verify your recording is attached and whether you would like to send the screenshot that is automatically attached -- Hit Submit -- Get a link to your feedback item by clicking on 'Share my Feedback' and post that link to the Github thread so we can easily get to your feedback! - -![GIF Of networking instructions](img/networkinglog4.gif) - - ### 10) Reporting a Windows crash (BSOD) To collect a kernel crash dump, first run the following command in an elevated command prompt: @@ -216,7 +99,7 @@ Make sure that the email body contains: ### 11) Reporting a WSL process crash -The easiest way to report a WSL process crash is by [collecting a user-mode crash dump](https://learn.microsoft.com/en-us/windows/win32/wer/collecting-user-mode-dumps). +The easiest way to report a WSL process crash is by [collecting a user-mode crash dump](https://learn.microsoft.com/windows/win32/wer/collecting-user-mode-dumps). To collect dumps of all running WSL processe, please open a PowerShell prompt with admin privileges, navigate to a folder where you'd like to put your log files and run these commands: @@ -273,4 +156,4 @@ To collect time travel debugging traces: 10) Go to the folder where the trace was collected, and locate the .run file. It should look like: `wslservice*.run` -11) Share that file on the issue +11) Share that file on the issue \ No newline at end of file diff --git a/DATA_AND_PRIVACY.md b/DATA_AND_PRIVACY.md new file mode 100644 index 0000000..a004ea2 --- /dev/null +++ b/DATA_AND_PRIVACY.md @@ -0,0 +1,18 @@ +# WSL data & privacy + +## Overview + +WSL collects diagnostic data using Windows telemetry, just like other Windows components. You can disable this by opening Windows Settings, navigating to Privacy and Security -> Diagnostics & Feedback and disabling 'Diagnostic data'. You can also view all diagnostic data that you are sending in that menu using the 'View diagnostic data' option. + +For more information please read the [Microsoft privacy statement](https://www.microsoft.com/privacy/privacystatement). + +## What does WSL collect? + +1. Usage + - Understanding what features and settings are most often used in WSL helps us make decisions on where to focus our time and energy. +2. Stability + - Monitoring bugs and system crashes assists us in prioritizing the most urgent issues. +3. Performance + - Assessing the performance of WSL gives us an understanding of what runtimes / components could be causing slow downs. This supports our commitment in providing you a speedy and effective WSL. + +You can search for WSL telemetry events by looking for calls to `WSL_LOG_TELEMETRY` in the source code of this repository. \ No newline at end of file diff --git a/Directory.Build.Props b/Directory.Build.Props new file mode 100644 index 0000000..2600906 --- /dev/null +++ b/Directory.Build.Props @@ -0,0 +1,11 @@ + + + true + true + + + + true + + + \ No newline at end of file diff --git a/Images/LargeTile.scale-100.png b/Images/LargeTile.scale-100.png new file mode 100644 index 0000000..7bb1420 Binary files /dev/null and b/Images/LargeTile.scale-100.png differ diff --git a/Images/SettingsOOBECrossOSFileAccess.gif b/Images/SettingsOOBECrossOSFileAccess.gif new file mode 100644 index 0000000..b63446e Binary files /dev/null and b/Images/SettingsOOBECrossOSFileAccess.gif differ diff --git a/Images/SettingsOOBEDistroManagement.png b/Images/SettingsOOBEDistroManagement.png new file mode 100644 index 0000000..bcd00fd Binary files /dev/null and b/Images/SettingsOOBEDistroManagement.png differ diff --git a/Images/SettingsOOBEDockerDesktopIntegration.png b/Images/SettingsOOBEDockerDesktopIntegration.png new file mode 100644 index 0000000..c8eb59d Binary files /dev/null and b/Images/SettingsOOBEDockerDesktopIntegration.png differ diff --git a/Images/SettingsOOBEDockerIcon.png b/Images/SettingsOOBEDockerIcon.png new file mode 100644 index 0000000..ba6847c Binary files /dev/null and b/Images/SettingsOOBEDockerIcon.png differ diff --git a/Images/SettingsOOBEFileExplorerIcon.png b/Images/SettingsOOBEFileExplorerIcon.png new file mode 100644 index 0000000..36dc690 Binary files /dev/null and b/Images/SettingsOOBEFileExplorerIcon.png differ diff --git a/Images/SettingsOOBEGPUAcceleration.gif b/Images/SettingsOOBEGPUAcceleration.gif new file mode 100644 index 0000000..4201c2c Binary files /dev/null and b/Images/SettingsOOBEGPUAcceleration.gif differ diff --git a/Images/SettingsOOBEGUIApps.png b/Images/SettingsOOBEGUIApps.png new file mode 100644 index 0000000..cb750ac Binary files /dev/null and b/Images/SettingsOOBEGUIApps.png differ diff --git a/Images/SettingsOOBEGeneral.png b/Images/SettingsOOBEGeneral.png new file mode 100644 index 0000000..32aaa81 Binary files /dev/null and b/Images/SettingsOOBEGeneral.png differ diff --git a/Images/SettingsOOBENetworkingIntegration.png b/Images/SettingsOOBENetworkingIntegration.png new file mode 100644 index 0000000..8381e30 Binary files /dev/null and b/Images/SettingsOOBENetworkingIntegration.png differ diff --git a/Images/SettingsOOBEVSCodeIcon.png b/Images/SettingsOOBEVSCodeIcon.png new file mode 100644 index 0000000..3841241 Binary files /dev/null and b/Images/SettingsOOBEVSCodeIcon.png differ diff --git a/Images/SettingsOOBEVSCodeIntegration.png b/Images/SettingsOOBEVSCodeIntegration.png new file mode 100644 index 0000000..75d813a Binary files /dev/null and b/Images/SettingsOOBEVSCodeIntegration.png differ diff --git a/Images/SmallTile.scale-100.png b/Images/SmallTile.scale-100.png new file mode 100644 index 0000000..6a7ea06 Binary files /dev/null and b/Images/SmallTile.scale-100.png differ diff --git a/Images/SplashScreen.scale-100.png b/Images/SplashScreen.scale-100.png new file mode 100644 index 0000000..99550aa Binary files /dev/null and b/Images/SplashScreen.scale-100.png differ diff --git a/Images/Square150x150Logo.scale-100.png b/Images/Square150x150Logo.scale-100.png new file mode 100644 index 0000000..c709239 Binary files /dev/null and b/Images/Square150x150Logo.scale-100.png differ diff --git a/Images/Square44x44Logo.altform-lightunplated_targetsize-16.png b/Images/Square44x44Logo.altform-lightunplated_targetsize-16.png new file mode 100644 index 0000000..e83a109 Binary files /dev/null and b/Images/Square44x44Logo.altform-lightunplated_targetsize-16.png differ diff --git a/Images/Square44x44Logo.altform-lightunplated_targetsize-24.png b/Images/Square44x44Logo.altform-lightunplated_targetsize-24.png new file mode 100644 index 0000000..4d438ac Binary files /dev/null and b/Images/Square44x44Logo.altform-lightunplated_targetsize-24.png differ diff --git a/Images/Square44x44Logo.altform-lightunplated_targetsize-256.png b/Images/Square44x44Logo.altform-lightunplated_targetsize-256.png new file mode 100644 index 0000000..dba6db4 Binary files /dev/null and b/Images/Square44x44Logo.altform-lightunplated_targetsize-256.png differ diff --git a/Images/Square44x44Logo.altform-lightunplated_targetsize-32.png b/Images/Square44x44Logo.altform-lightunplated_targetsize-32.png new file mode 100644 index 0000000..b69075a Binary files /dev/null and b/Images/Square44x44Logo.altform-lightunplated_targetsize-32.png differ diff --git a/Images/Square44x44Logo.altform-lightunplated_targetsize-48.png b/Images/Square44x44Logo.altform-lightunplated_targetsize-48.png new file mode 100644 index 0000000..6e3e94a Binary files /dev/null and b/Images/Square44x44Logo.altform-lightunplated_targetsize-48.png differ diff --git a/Images/Square44x44Logo.altform-unplated_targetsize-16.png b/Images/Square44x44Logo.altform-unplated_targetsize-16.png new file mode 100644 index 0000000..e83a109 Binary files /dev/null and b/Images/Square44x44Logo.altform-unplated_targetsize-16.png differ diff --git a/Images/Square44x44Logo.altform-unplated_targetsize-256.png b/Images/Square44x44Logo.altform-unplated_targetsize-256.png new file mode 100644 index 0000000..dba6db4 Binary files /dev/null and b/Images/Square44x44Logo.altform-unplated_targetsize-256.png differ diff --git a/Images/Square44x44Logo.altform-unplated_targetsize-32.png b/Images/Square44x44Logo.altform-unplated_targetsize-32.png new file mode 100644 index 0000000..b69075a Binary files /dev/null and b/Images/Square44x44Logo.altform-unplated_targetsize-32.png differ diff --git a/Images/Square44x44Logo.altform-unplated_targetsize-48.png b/Images/Square44x44Logo.altform-unplated_targetsize-48.png new file mode 100644 index 0000000..6e3e94a Binary files /dev/null and b/Images/Square44x44Logo.altform-unplated_targetsize-48.png differ diff --git a/Images/Square44x44Logo.scale-100.png b/Images/Square44x44Logo.scale-100.png new file mode 100644 index 0000000..d01623c Binary files /dev/null and b/Images/Square44x44Logo.scale-100.png differ diff --git a/Images/Square44x44Logo.targetsize-16.png b/Images/Square44x44Logo.targetsize-16.png new file mode 100644 index 0000000..e83a109 Binary files /dev/null and b/Images/Square44x44Logo.targetsize-16.png differ diff --git a/Images/Square44x44Logo.targetsize-24.png b/Images/Square44x44Logo.targetsize-24.png new file mode 100644 index 0000000..4d438ac Binary files /dev/null and b/Images/Square44x44Logo.targetsize-24.png differ diff --git a/Images/Square44x44Logo.targetsize-24_altform-unplated.png b/Images/Square44x44Logo.targetsize-24_altform-unplated.png new file mode 100644 index 0000000..4d438ac Binary files /dev/null and b/Images/Square44x44Logo.targetsize-24_altform-unplated.png differ diff --git a/Images/Square44x44Logo.targetsize-256.png b/Images/Square44x44Logo.targetsize-256.png new file mode 100644 index 0000000..dba6db4 Binary files /dev/null and b/Images/Square44x44Logo.targetsize-256.png differ diff --git a/Images/Square44x44Logo.targetsize-32.png b/Images/Square44x44Logo.targetsize-32.png new file mode 100644 index 0000000..b69075a Binary files /dev/null and b/Images/Square44x44Logo.targetsize-32.png differ diff --git a/Images/Square44x44Logo.targetsize-48.png b/Images/Square44x44Logo.targetsize-48.png new file mode 100644 index 0000000..6e3e94a Binary files /dev/null and b/Images/Square44x44Logo.targetsize-48.png differ diff --git a/Images/StoreLogo.backup.png b/Images/StoreLogo.backup.png new file mode 100644 index 0000000..2e4bb21 Binary files /dev/null and b/Images/StoreLogo.backup.png differ diff --git a/Images/StoreLogo.scale-100.png b/Images/StoreLogo.scale-100.png new file mode 100644 index 0000000..2e4bb21 Binary files /dev/null and b/Images/StoreLogo.scale-100.png differ diff --git a/Images/Wide310x150Logo.scale-100.png b/Images/Wide310x150Logo.scale-100.png new file mode 100644 index 0000000..df78892 Binary files /dev/null and b/Images/Wide310x150Logo.scale-100.png differ diff --git a/Images/wsl.ico b/Images/wsl.ico new file mode 100644 index 0000000..1340c25 Binary files /dev/null and b/Images/wsl.ico differ diff --git a/Images/wslbw.ico b/Images/wslbw.ico new file mode 100644 index 0000000..c9b9a1c Binary files /dev/null and b/Images/wslbw.ico differ diff --git a/NOTICE.txt b/NOTICE.txt new file mode 100644 index 0000000..d78eecf --- /dev/null +++ b/NOTICE.txt @@ -0,0 +1,2129 @@ +NOTICES AND INFORMATION +Do Not Translate or Localize + +This software incorporates material from third parties. +Microsoft makes certain open source code available at https://3rdpartysource.microsoft.com, +or you may send a check or money order for US $5.00, including the product name, +the open source component name, platform, and version number, to: + +Source Code Compliance Team +Microsoft Corporation +One Microsoft Way +Redmond, WA 98052 +USA + +Notwithstanding any other terms, you may reverse engineer this software to the extent +required to debug changes to any libraries licensed under the GNU Lesser General Public License. + +--------------------------------------------------------- + +llvm/llvm-project d32170dbd5b0d54436537b6b75beaf44324e0c28 - Apache-2.0 WITH LLVM-exception + + +(c) (tm) +(c) Value A +(c) auto AS +(c) Value Sd +(c) auto AST +(c) CXType PT +(c) Type I1Ty +(c) Value RHS +(c) X1 ... X1 +(c) Type I32Ty +(c) Value Elt0 +Copyright 2014 +(c) Type Int8Ty +(c) Type V8x8Ty +(c) Value FMSub +(c) unsigned AS +(c) Constant One +(c) Type FloatTy +(c) Type Int16Ty +(c) Type Int32Ty +(c) Type Int64Ty +(c) Value AllocA +(c) Value Alloca +Alloc1 a1 (c) R1 +Alloc1 a2 (c) R1 +(c) FileID MainID +(c) Lower C Upper +(c) Stmt NumExprs +(c) Type DoubleTy +(c) Type I32PtrTy +(c) Value AllocaA +Coproc, Opc1, CRm +(c) ConstantInt C2 +(c) EUR CHECK-NEXT +(c) Scale 1 Offset +(c) State UNQUOTED +(c) Type IndexType +Copyright (c) 2012 +Copyright (c) 2013 +Copyright (c) 2019 +Exprs new (c) Stmt +(c) ExprResult NewE +(c) Metadata Ops MD +(c) SelectInst SelI +(c) SmallVector MDs +(c) TransferBatch B +(c) Type Int32PtrTy +(c) Type Int64PtrTy +(c) BasicBlock Entry +(c) CXXRecordDecl CD +(c) FunctionType FTy +(c) Offset C- Offset +Copyright 2010 INRIA +Copyright 2011 INRIA +Copyright 2012 INRIA +Copyright 2014 INRIA +Copyright 2015 INRIA +Copyright 2016 INRIA +(c) FunctionType FnTy +(c) QualType ResultTy +(c) SourceRange Range +AsmToks new (c) Token +SubExprs new (c) Stmt +(c) 2008 Red Hat, Inc. +(c) 2011 Anthony Green +(c) BasicBlock EntryBB +(c) FunctionType FFnTy +(c) FunctionType IFnTy +(c) SourceLocation Loc +Condition (c) Branches +Context (c) LineToUnit +Copyright (c) 2013 IBM +(c) ErrMsg Stream Error +(c) SmallVector NewVars +(c) SmallVector ToErase +Bbb kind copyright' Bbb +(c) Constant PosDivisorC +CommonPtr new (c) Common +Copyright (c) 2012 CHECK +(c) CharUnits AlignedSize +(c) Constant NullV2I32Ptr +(c) Constant PosDividendC +Copyright 2010-2011 INRIA +Copyright 2014-2015 INRIA +COPYRIGHT,v 1.3 2003/06/02 +Coproc, Opc1, Rt, Rt2, CRm +Copyright 2003 Google Inc. +Copyright 2008 Google Inc. +Copyright 2009 Google Inc. +Copyright 2015 Google Inc. +Copyright 2018 Google Inc. +Copyright The LLVM project +coprime. APInt A HugePrime +copyrighted by the author. +(c) IdentifierInfo NumExprs +(c) VectorType Int8PtrVecTy +(c) Willem van Schaik, 1999 +Copyright (c) 1997, Phillip +Copyright 2005, Google Inc. +Copyright 2006, Google Inc. +Copyright 2007, Google Inc. +Copyright 2008, Google Inc. +Copyright 2012 Google, Inc. +Copyright 2013, Google Inc. +Copyright 2015, Google Inc. +InitCache (c) TransferBatch +copyright u'2015, LLVM Team +Copyright 2006, Dean Edwards +(c) CHECK-NEXT 194 CHECK-NEXT +(c) CXXBaseSpecifier NumBases +(c) Designator NumDesignators +(c) StringLiteral NumClobbers +Constraints new (c) StringRef +Copyright (c) 2002 Bo Thorsen +Copyright (c) 2010 Apple Inc. +Copyright (c) by P.J. Plauger +Copyright 2010 Zencoder, Inc. +Copyright 2017 Roman Lebedev. +ParamInfo new (c) ParmVarDecl +Copyright (c) 2000 Software AG +Copyright (c) 2002 Roger Sayle +Copyright (c) 2008 David Daney +Copyright (c) 2009 Google Inc. +Copyright (c) 2016 Aaron Watry +Copyright (c) 2017 Google Inc. +Copyright (c) 2018 Jim Ingham. +Copyright 2009 The Go Authors. +Copyright 2010 The Go Authors. +Copyright 2011 The Go Authors. +Copyright 2012 The Go Authors. +Copyright 2013 The Go Authors. +Copyright 2014 The Go Authors. +Copyright 2015 The Go Authors. +(c) (3) educational corporation +(c) CHECK-NEXT foo() CHECK-NEXT +(copr0) ConstantDataVector CDV1 +(copr1) ConstantDataVector CDV2 +Copyright (c) 1994 X Consortium +Copyright (c) 2008 Matteo Frigo +Copyright (c) 2009 Matteo Frigo +Copyright (c) 2010 CodeSourcery +Copyright (c) 2011 Kyle Moffett +Copyright (c) 2011 Tilera Corp. +Copyright (c) 2011 Timothy Wall +Copyright (c) 2012 Peter Harris +Copyright (c) 2012 Tilera Corp. +Copyright 2008-2010 Apple, Inc. +Copyright 2015 Sven Verdoolaege +Copyright 2016 Sven Verdoolaege +Copyright 2017 Sven Verdoolaege +Copyright 2018 Sven Verdoolaege +Copyright, License, and Patents +Other Coprocessor Instructions. +(c) StringLiteral NumConstraints +Copyright (c) 1996 Red Hat, Inc. +Copyright (c) 2002 Ranjit Mathew +Copyright (c) 2004 Anthony Green +Copyright (c) 2004 Simon Posnjak +Copyright (c) 2008 Anthony Green +Copyright (c) 2008 Red Hat, Inc. +Copyright (c) 2011 Anthony Green +Copyright (c) 2012 Anthony Green +Copyright (c) 2014 Red Hat, Inc. +Copyright 2011 Sven Verdoolaege. +(c) foo() pragma omp target teams +Copyright (c) 1992 Henry Spencer. +Copyright (c) 2000 John Hornkvist +Copyright (c) 2001 John Hornkvist +Copyright (c) 2006 Kirill Simonov +Copyright (c) 2012 Alan Hourihane +Copyright 2001-2004 Unicode, Inc. +copyright u'2003- d, LLVM Project +copyright u'2011- d, LLVM Project +(c) CyclesSaved + LocalCyclesSaved +Copyright (c) 1999-2007 Apple Inc. +Copyright (c) 2009 The Go Authors. +Copyright (c) 2009-2019 Polly Team +Copyright (c) 2012 Thorsten Glaser +Copyright (c) 2013 Tensilica, Inc. +Copyright 2012 Universiteit Leiden +Copyright 2016-2017 Tobias Grosser +copyright u'2007- d, The LLDB Team +copyright u'2013- d, Analyzer Team +Constraint new (c) AtomicConstraint +Copyright (c) 1998 Cygnus Solutions +Copyright (c) 1998 Geoffrey Keating +Copyright (c) 2001 David E. O'Brien +Copyright (c) 2013 Mentor Graphics. +Copyright (c) 2015the LLVM Project. +Copyright 2009-2010 The Go Authors. +copyright u'2007- d, The Clang Team +copyright u'2010- d, The Polly Team +copyright u'2011-2018, LLVM Project +Copyright (C ) Microsoft Corporation +Copyright (c) 2000, 2007 Software AG +Copyright (c) 2001 Alexander Peslyak +Copyright (c) 2012, 2013 Xilinx, Inc +Copyright (c) 2014, 2015 Google Inc. +Copyright (c) 2019 The MLIR Authors. +Copyright (c) Microsoft Corporation. +Copyright 2009, 2010 The Go Authors. +Copyright 2015-2016 Sven Verdoolaege +Copyright 2016, 2017 Tobias Grosser. +Copyright 2016-2017 Sven Verdoolaege +(c) PointerType InitPtrType InitValue +Copyright (c) 1996-2003 Red Hat, Inc. +Copyright (c) 1996-2004 Red Hat, Inc. +Copyright (c) 1999-2003 Steve Purcell +Copyright (c) 2012-2016, Yann Collet. +Copyright 2011,2015 Sven Verdoolaege. +Copyright (c) 1996, 1998 Red Hat, Inc. +Copyright (c) 1998, 2008 Red Hat, Inc. +Copyright (c) 1999, 2008 Red Hat, Inc. +Copyright (c) 2004 Renesas Technology. +Copyright (c) 2008 Christian Haggstrom +Copyright (c) 2008, 2010 Red Hat, Inc. +Copyright (c) 2011, 2012 Anthony Green +Copyright (c) 2011, 2013 Anthony Green +Copyright (c) 2011, 2014 Anthony Green +Copyright (c) 2012, 2013 Anthony Green +Copyright (c) 2012, 2014 Anthony Green +Copyright 2007-2010 by the Sphinx team +(c) 2006 Free Software Foundation, Inc. +(c) CHECK-NEXT T break CHECK-NEXT Preds +Copyright (c) 1998, 2012 Andreas Schwab +Copyright (c) 2002-2004 Tim J. Robbins. +Copyright (c) 2005 Free Standards Group +Copyright 2005-2007 Universiteit Leiden +Copyright 2006-2007 Universiteit Leiden +Copyright 2012 Ecole Normale Superieure +Copyright 2013 Ecole Normale Superieure +Copyright 2014 Ecole Normale Superieure +Copyright 2016 Ismael Jimenez Martinez. +Portions Copyright 2009 The Go Authors. +in LLVM, Diploma Thesis, (c) April 2011 +(c) StringRef NumClobbers // FIXME Avoid +Copyright (c) 1996-1998 John D. Polstra. +Copyright (c) 2002-2008, 2012 Kaz Kojima +Copyright (c) 1997-2019 Intel Corporation +Copyright (c) 2005 Axis Communications AB +Copyright (c) 2010-2015 Benjamin Peterson +Copyright 1992, 1993, 1994 Henry Spencer. +coproc_option_imm Operand let PrintMethod +(c) CXXCtorInitializer NumIvarInitializers +Copyright (c) 2000 Hewlett Packard Company +Copyright (c) 2002 Bo Thorsen +Copyright (c) 1996-2003, 2010 Red Hat, Inc. +Copyright (c) 2004 eXtensible Systems, Inc. +Copyright (c) 2009-2014 by the contributors +Copyright (c) 2009-2015 by the contributors +Copyright (c) 2009-2016 by the contributors +Copyright (c) 2009-2019 by the contributors +Copyright (c) 2011 Free Software Foundation +Copyright (c) 2011-2014 by the contributors +Copyright (c) 2011-2019 by the contributors +Copyright (c) 2013 Imagination Technologies +Copyright (c) 2017-2019 by the contributors +(c) CHECK-NEXT Preds (1) B4 CHECK-NEXT Succs +(c) CHECK-NEXT Preds (1) B5 CHECK-NEXT Succs +(c) CHECK-NEXT Preds (1) B7 CHECK-NEXT Succs +CoprocNumAsmOperand AsmOperandClass let Name +CoprocRegAsmOperand AsmOperandClass let Name +Copyright (c) 1993 by Sun Microsystems, Inc. +Copyright (c) 1996, 1998, 2005 Red Hat, Inc. +Copyright (c) 1996, 1998, 2007 Red Hat, Inc. +Copyright (c) 1998, 2008, 2011 Red Hat, Inc. +Copyright (c) 1999, 2007, 2008 Red Hat, Inc. +Copyright (c) 2004 by Sun Microsystems, Inc. +Copyright (c) 2007, 2009, 2010 Red Hat, Inc. +Copyright (c) 2011, 2012, 2013 Anthony Green +Copyright 2012,2014 Ecole Normale Superieure +Copyright 2012-2013 Ecole Normale Superieure +Copyright 2012-2014 Ecole Normale Superieure +Copyright 2013-2014 Ecole Normale Superieure +Copyright (c) 1992, 1993, 1994 Henry Spencer. +Copyright (c) 2002-2007 Michael J. Fromberger +Copyright (c) 2009, 2010, 2011, 2012 ARM Ltd. +Copyright (c) 2012, 2013 Anthony Green Target +Copyright 2000 Free Software Foundation, Inc. +Copyright 2004 Free Software Foundation, Inc. +Copyright (c) 2008 Ryan McCabe +(c) 2003-2004 Randolph Chung +CoprocOptionAsmOperand AsmOperandClass let Name +Copyright (c) 2003, 2004, 2006, 2008 Kaz Kojima +Copyright (c) 2014 Advanced Micro Devices, Inc. +Copyright (c) 2015 Advanced Micro Devices, Inc. +Copyright (c) 1994-1999 Lucent Technologies Inc. +Copyright (c) 2002, 2007 Bo Thorsen +Copyright (c) 2013 Imagination Technologies Ltd. +(c) Designator NumDesigs NumDesignators NumDesigs +Copyright (c) 1992, 1993 UNIX International, Inc. +Copyright (c) 1996-2003, 2007, 2008 Red Hat, Inc. +Copyright (c) 2004 Free Software Foundation, Inc. +Copyright (c) 2006 Free Software Foundation, Inc. +Copyright (c) 2007 Free Software Foundation, Inc. +Copyright (c) 2008 Free Software Foundation, Inc. +Copyright (c) 2009 Free Software Foundation, Inc. +Copyright (c) 2011 Free Software Foundation, Inc. +Copyright (c) 2012 Free Software Foundation, Inc. +Copyright (c) 2012, Noah Spurrier +Copyright (c) 2013-2014, Pexpect development team +Copyright (c) 2013-2016, Pexpect development team +Copyright (c) 2014 Free Software Foundation, Inc. +Copyright (c) 2015 Paul Norman +Copyright (c) 2016 Aaron Watry +Copyright extcopyright~ he year the LLVM Project. +(c) CHECK-NEXT Preds (3) B3 B4 B2 CHECK-NEXT Succs +(c) CHECK-NEXT Preds (3) B3 B5 B6 CHECK-NEXT Succs +Copyright (c) 1996, 2007, 2008, 2011 Red Hat, Inc. +Copyright (c) 1998, 2001, 2007, 2008 Red Hat, Inc. +Copyright (c) 1998, 2007, 2008, 2012 Red Hat, Inc. +Copyright (c) 2000, 2003, 2004, 2008 Red Hat, Inc. +Copyright (c) 2003-2010 Python Software Foundation +Copyright (c) 2012 Zack Weinberg +Copyright 1992-2018 Free Software Foundation, Inc. +Copyright 2008-2009 Katholieke Universiteit Leuven +(c) Stmt NumExprs std::copy Exprs, Exprs + NumExprs +Copyright (c) 1996, MPEG Software Simulation Group. +Copyright (c) 2003 Jakub Jelinek +Copyright (c) 2008 Guido U. Draheim +Copyright (c) 2008 Stepan Kasal +Copyright (c) 2011 Plausible Labs Cooperative, Inc. +Copyright (c) 2012 Qualcomm Innovation Center, Inc. +Copyright (c) 2008 Benjamin Kosnik +Copyright (c) 2013 Synopsys, Inc. (www.synopsys.com) +Copyright (c) 2013 Synposys, Inc. (www.synopsys.com) +Copyright (c) 2014,2015 Advanced Micro Devices, Inc. +Copyright (c) 2002, 2003, 2004, 2006, 2008 Kaz Kojima +Copyright (c) 2003, 2004, 2006, 2007, 2012 Kaz Kojima +Copyright (c) 2013 Miodrag Vallat. +Copyright (c) 2014, 2015 Advanced Micro Devices, Inc. +Copyright (c) 2016 Krzesimir Nowak +Copyright (c) 1994-2014 Free Software Foundation, Inc. +Copyright (c) 1994-2017 Free Software Foundation, Inc. +Copyright (c) 1996, 2003-2004, 2007-2008 Red Hat, Inc. +Copyright (c) 1996-2014 Free Software Foundation, Inc. +Copyright (c) 1996-2015 Free Software Foundation, Inc. +Copyright (c) 1996-2017 Free Software Foundation, Inc. +Copyright (c) 1997-2014 Free Software Foundation, Inc. +Copyright (c) 1997-2017 Free Software Foundation, Inc. +Copyright (c) 1999-2013 Free Software Foundation, Inc. +Copyright (c) 1999-2014 Free Software Foundation, Inc. +Copyright (c) 1999-2017 Free Software Foundation, Inc. +Copyright (c) 2001-2014 Free Software Foundation, Inc. +Copyright (c) 2001-2017 Free Software Foundation, Inc. +Copyright (c) 2002-2014 Free Software Foundation, Inc. +Copyright (c) 2002-2017 Free Software Foundation, Inc. +Copyright (c) 2003-2014 Free Software Foundation, Inc. +Copyright (c) 2003-2017 Free Software Foundation, Inc. +Copyright (c) 2004-2014 Free Software Foundation, Inc. +Copyright (c) 2004-2015 Free Software Foundation, Inc. +Copyright (c) 2004-2017 Free Software Foundation, Inc. +Copyright (c) 2006-2014 Free Software Foundation, Inc. +Copyright (c) 2006-2017 Free Software Foundation, Inc. +Copyright (c) 2007, 2008 Free Software Foundation, Inc +Copyright (c) 2008 Sven Verdoolaege +Copyright (c) 2009-2014 Free Software Foundation, Inc. +Copyright (c) 2009-2017 Free Software Foundation, Inc. +Copyright (c) 2010-2015 Free Software Foundation, Inc. +Copyright (c) 2010-2017 Free Software Foundation, Inc. +Copyright (c) 2011-2013 Free Software Foundation, Inc. +Copyright (c) 2011-2014 Free Software Foundation, Inc. +Copyright (c) 2012-2014 Free Software Foundation, Inc. +Copyright (c) 2012-2015 Free Software Foundation, Inc. +Copyright (c) 2013-2014 Free Software Foundation, Inc. +Copyright (c) 2013-2015 Free Software Foundation, Inc. +Copyright (c) 2002, 2009 Free Software Foundation, Inc. +Copyright (c) 2004, 2005 Free Software Foundation, Inc. +Copyright (c) 2004, 2010 Free Software Foundation, Inc. +Copyright (c) 2006, 2008 Free Software Foundation, Inc. +Copyright (c) 2008, 2010 Free Software Foundation, Inc. +Copyright (c) 2014 Sebastian Macke +Copyright (c) 2015 Moritz Klammler +Copyright (c) 1996, 1997, 2003, 2004, 2008 Red Hat, Inc. +Copyright (c) 1998, 2001, 2007, 2008, 2011, 2014 Red Hat +Copyright (c) 2009 Bradley Smith +Copyright (c) 2013 Jesse Towner +Copyright (c) 2013 Roy Stogner +(c) Type AtExitFuncArgs VoidStar FunctionType AtExitFuncTy +copyright (c) 1991-2011, Thomas G. Lane, Guido Vollbeding. +(c) GlobalVariable Handle new GlobalVariable M, DsoHandleTy +(c) Type ArgTys Int32Ty, Int32Ty, Int32Ty FunctionType FnTy +Copyright (c) 2004 Scott James Remnant +Copyright (c) 2008 Steven G. Johnson +Copyright (c) 2009 Steven G. Johnson +Copyright (c) 2004, 2011-2015 Free Software Foundation, Inc. +Copyright (c) 2007, 2008, 2010 Free Software Foundation, Inc +Copyright (c) 2007, 2009, 2010 Free Software Foundation, Inc +Copyright (c) 2013 Victor Oliveira +Copyright 1984, 1987, 1989, 1992, 2000 by Stephen L. Moshier +(c) DeclRefExpr DR M.makeDeclRefExpr(PV) ImplicitCastExpr ICE +(c) IdentifierInfo NumExprs std::copy Names, Names + NumExprs +Copyright (c) 1998 Todd C. Miller +Copyright (c) 2001, 2003, 2005 Free Software Foundation, Inc. +Copyright (c) 2002, 2003, 2009 Free Software Foundation, Inc. +Copyright (c) 2004, 2005, 2012 Free Software Foundation, Inc. +Copyright (c) 2006, 2008, 2010 Free Software Foundation, Inc. +(c) BranchInst BI BranchInst::Create(Exit, Exit, False, Entry) +Copyright (c) 1996, 1998, 1999, 2001, 2007, 2008 Red Hat, Inc. +Copyright (c) 1996, 1998, 2001, 2002, 2003, 2005 Red Hat, Inc. +Copyright (c) 1996, 1998, 2005, 2007, 2009, 2010 Red Hat, Inc. +Copyright (c) 1996,1998,2001-2003,2005,2008,2010 Red Hat, Inc. +Copyright (c) 1994 The Regents of the University of California. +Copyright (c) 1996-2014 Anthony Green, Red Hat, Inc and others. +Copyright (c) 1992-1996, 1998-2012 Free Software Foundation, Inc. +Copyright (c) 1996-2001, 2003-2015 Free Software Foundation, Inc. +Copyright (c) 2001, 2003, 2005, 2008 Free Software Foundation, Inc. +Copyright (c) 2001, 2003, 2005, 2011 Free Software Foundation, Inc. +Copyright (c) 2003, 2004, 2005, 2006 Free Software Foundation, Inc. +Copyright (c) 2003-2019 University of Illinois at Urbana-Champaign. +Copyright (c) 2004, 2005, 2007, 2008 Free Software Foundation, Inc. +Copyright (c) 2004, 2005, 2007, 2009 Free Software Foundation, Inc. +Copyright (c) 2007-2018 University of Illinois at Urbana-Champaign. +Copyright (c) 2007-2019 University of Illinois at Urbana-Champaign. +Copyright (c) 2002, 2003, 2004, 2010, Free Software Foundation, Inc. +Copyright (c) 2006-2009 Steven J. Bethard +Copyright (c) 1992, 1993 The Regents of the University of California. +(c) StringLiteral NumClobbers std::copy Clobbers, Clobbers + NumClobbers +Copyright (c) 2000-2007 Vita Nuova Holdings Limited (www.vitanuova.com). +Copyright (c) 2001, 2002, 2003, 2005, 2008 Free Software Foundation, Inc. +Copyright (c) 2001, 2002, 2003, 2005, 2009 Free Software Foundation, Inc. +Copyright (c) 2001, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. +Copyright (c) 2001, 2003, 2005, 2008, 2011 Free Software Foundation, Inc. +Copyright (c) 2002, 2006, 2007, 2009, 2010 Free Software Foundation, Inc. +Copyright (c) 2003, 2004, 2005, 2006, 2011 Free Software Foundation, Inc. +Copyright (c) 2004, 2005, 2007, 2008, 2009 Free Software Foundation, Inc. +Copyright (c) 1992, 1993, 1994 The Regents of the University of California. +Copyright (c) 2004-2005, 2007-2008, 2011-2015 Free Software Foundation, Inc. +Copyright (c) 2004-2005, 2007-2009, 2011-2015 Free Software Foundation, Inc. +Copyright (c) 2004-2005, 2007, 2009, 2011-2015 Free Software Foundation, Inc. +Copyright (c) 2012 Alexandre K. I. de Mendonca +Copyright (c) 2001, 2002, 2003, 2005, 2008, 2010 Free Software Foundation, Inc. +Copyright (c) 2002, 2003, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. +(c) StringLiteral NumConstraints std::copy Constraints, Constraints + NumConstraints +Copyright (c) 1996, 1997, 2000, 2001, 2003, 2005, 2008 Free Software Foundation, Inc. +Copyright (c) 1999, 2000, 2001, 2003, 2004, 2005, 2008 Free Software Foundation, Inc. +Copyright (c) 2002, 2003, 2005, 2006, 2007, 2008, 2011 Free Software Foundation, Inc. +Copyright (c) 1995, 1996, 1997, 2003, 2004, 2005, 2007, 2009 Free Software Foundation, Inc. +Copyright (c) 1997, 1999, 2000, 2001, 2003, 2004, 2005, 2008 Free Software Foundation, Inc. +Copyright (c) 1997, 2000, 2001, 2003, 2004, 2005, 2006, 2008 Free Software Foundation, Inc. +Copyright (c) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2008 Free Software Foundation, Inc. +Copyright (c) 1996, 1998, 2000, 2001, 2002, 2003, 2004, 2005, 2008 Free Software Foundation, Inc. +Copyright (c) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2009 Free Software Foundation, Inc. +Copyright (c) 1996, 1998, 2000, 2001, 2002, 2003, 2004, 2005, 2008, 2011 Free Software Foundation, Inc. +Copyright (c) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2009, 2010, 2011 Free Software Foundation, Inc. +Copyright (c) 1999, 2000, 2003, 2004, 2005, 2006, 2007, 2009, 2010, 2011, 2012 Free Software Foundation, Inc. +Copyright (c) 2012 Alexandre K. I. de Mendonca , Paulo Pizarro +Copyright (c) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2008, 2009 Free Software Foundation, Inc. +Copyright (c) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc. +Copyright (c) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc. +Copyright (c) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005, 2006, 2008, 2009, 2010, 2011, 2012 Free Software Foundation, Inc. +Copyright (c) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc. +Copyright (c) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc. +Copyright (c) 1995, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2010, 2011, 2014 Free Software Foundation, Inc. +Copyright (c) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc. +Copyright (c) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc. +Copyright (c) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc. +Copyright (c) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc. +Copyright (c) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 Free Software Foundation, Inc. + +Apache-2.0 WITH LLVM-exception + +--------------------------------------------------------- + +--------------------------------------------------------- + +StrawberryPerl 5.28.0.1 - GPL-1.0-or-later OR Artistic-1.0-Perl + + +(c) 2009,2012 +(c) OMIX, Inc. +Copyright 1998 +Copyright 2000 +Copyright 2004 +Copyright 2010 +Copyright 2001. +copyright 2014. +(c) Mnemonic C's +Copyright 1998 I +(c) 2000 Dr. Seuss +(c) Copyright 2000 +COPYRIGHT (c) 2010 +Copyright (c) 2000 +Copyright (c) 2001 +Copyright (c) 2006 +Copyright (c) 2008 +Copyright (c) 2010 +Copyright (c) 2011 +Copyright (c) 2012 +Copyright (c) 2013 +Copyright (c) 2016 +Copyright (c) 2017 +Copyright (c) 2018 +copyright (c) 2011 +Copyright 1995-2015 +Copyright 2009-2017 +copyright 1996 King +copyright_year 2017 +2003 SP1, Sever 2008 +COPYRIGHT Yves Orton +Copyright 1996 Zenin +copyright 1995-2004. +copyright year//2017 +copyrighted (c) 1996 +(c) 2005 Byrne Reese. +2003 SP1, Server 2008 +Copyright Mark Fowler +copyrighted by Adobe. +Copyright (c) 1994-1997 +Copyright (c) 2001-2015 +Copyright (c) 2004-2014 +Copyright (c) 2005-2015 +Copyright (c) 2010 KMX. +Copyright (c) 2010-2012 +Copyright (c) 2010-2016 +Copyright (c) 2011-2015 +Portions Copyright 2001 +copyright 1996 King Tut +copyright 2000 Fred Foo +(c) Rafael Garcia-Suarez +Copyright (c) 1997, 1998 +Copyright (c) 2009, 2011 +Copyright Mark Overmeer. +(c) 2017 Unicode(r), Inc. +Copyright (c) 2001 Single +Copyright (c) 2005 by mst +Copyright (c) 2006 - 2011 +Copyright (c) 2007 - 2010 +Copyright (c) 2007 - 2013 +Copyright 2000 Gisle Aas. +Copyright 2001 Gisle Aas. +Copyright 2002 Gisle Aas. +Copyright 2002 Johnny Lee +Copyright 2003, Gisle Aas +Copyright 2006 Yves Orton +Copyright 2009 Gisle Aas. +Gisle Aas, Copyright 2003 +copyright 2004, Published +copyright by Ken Williams +COPYRIGHT Tom Christiansen +Copyright (c) 2009 by yvbl +Copyright 2003 Graham Barr +Copyright 2004 Simon Flack +Copyright 2015 Chad Granum +Copyright 2016 Chad Granum +Copyright 2016 cPanel Inc. +Copyright 2018 Chad Granum +copyright (c) 2008 by yvbl +(c) 2004 Dennis K. Paulsen. +(c) Copyright 2000 Fred Foo +Copyright (c) 1996 by Eryq. +Copyright (c) 2007 - 2010 L +Copyright (c) Ken Williams. +Copyright 1999 Tye McQueen. +Copyright 2001, Larry Wall. +Copyright 2006 Chris Dolan. +Copyright 2010 Adam Kennedy +Copyright 2010 Grant McLean +Copyright 2012 David Golden +Copyright 2017 Jens Rehsack +copyright 2008 Audrey Tang. +Copyright (c) 1998 Gisle Aas +Copyright (c) 2001,2002 RIPE +Copyright (c) 2001-2005 RIPE +Copyright (c) 2002 Your Name +Copyright (c) 2003 Tim Bunce +Copyright (c) 2003-2005 RIPE +Copyright (c) 2007 Bob Free. +Copyright (c) 2015 Bob Free. +Copyright 2006-2018 Sisyphus +Copyright 2009, Paul Fenwick +Copyright 2010, Shlomi Fish. +Copyright 2011 Joachim Zobel +Copyright 2012 David Oswald. +Copyright 2014 Laurent Dami. +Copyright 2016 Unicode, Inc. +Copyright 2017 Stefan Hermes +Copyright, 2005 Simon Wistow +Copyright, 2006 Simon Wistow +Copyright (c) 1995 Your Name. +Copyright (c) 1996 Dave Roth. +Copyright (c) 1998, Tim Bunce +Copyright (c) 2001 Dave Cross +Copyright (c) 2002 Sam Tregar +Copyright (c) 2009-2010, Goro +Copyright (c) 2013 Fred Moyer +Copyright (c) 2014 Steve Hay. +Copyright (c) 2016 Cpanel Inc +Copyright (c) Takumi Akiyama. +Copyright 2000-2002 Tim Bunce +Copyright 2001, Sean M. Burke +Copyright 2002 Sreeji K. Das. +Copyright 2002-2014 Dan Kogai +Copyright 2004 by Daniel Muey +Copyright 2006 by Randy Kobes +Copyright 2010 Curtis Jewell. +Copyright 2013, Niels Thykier +Copyright Laurent Dami, 2014. +(c) Copyright 2007 Arthur Dent +Copyright (c) 2000 Mark Kvale. +Copyright (c) 2004-2005 Nokia. +Copyright (c) 2005 Byrne Reese +Copyright (c) 2006 Google Inc. +Copyright (c) 2006-2017 Hatuka +Copyright (c) 2009, Goro Fuji. +Copyright (c) 2009-2012 Hatuka +Copyright (c) 2009-2013 Hatuka +Copyright (c) 2009-2018 Hatuka +Copyright (c) 2011 Mark Allen. +Copyright (c) 2012 M. Nunberg. +Copyright (c) 2013 Google Inc. +Copyright (c) 2014 cPanel Inc. +Copyright (c) 2017 Mark Allen. +Copyright (c) 2017 Reini Urban +Copyright 1987-2018 Larry Wall +Copyright 1995 Martijn Koster. +Copyright 1995, Martijn Koster +Copyright 1995-1998 Gisle Aas. +Copyright 1995-1999 Gisle Aas. +Copyright 1995-2000 Gisle Aas. +Copyright 1995-2001 Gisle Aas. +Copyright 1995-2004 Gisle Aas. +Copyright 1995-2006 Gisle Aas. +Copyright 1995-2009 Gisle Aas. +Copyright 1995-2009, Gisle Aas +Copyright 1995-2017 Mark Adler +Copyright 1996,2001 Gisle Aas. +Copyright 1996-2001 Gisle Aas. +Copyright 1996-2001, Gisle Aas +Copyright 1996-2003, Gisle Aas +Copyright 1996-2004 Gisle Aas. +Copyright 1996-2010, Gisle Aas +Copyright 1996-2016 Gisle Aas. +Copyright 1997 Uwe Hollerbach. +Copyright 1997-1998, Gisle Aas +Copyright 1997-1999 Gisle Aas. +Copyright 1997-2011 Gisle Aas. +Copyright 1998-1999 Gisle Aas. +Copyright 1998-2000 Gisle Aas. +Copyright 1998-2001 Gisle Aas. +Copyright 1998-2002 Gisle Aas. +Copyright 1998-2003 Gisle Aas. +Copyright 1998-2005 Gisle Aas. +Copyright 1998-2006 Gisle Aas. +Copyright 1998-2008 Gisle Aas. +Copyright 1998-2010 Gisle Aas. +Copyright 1999-2004 Gisle Aas. +Copyright 2001 Benjamin Trott. +Copyright 2001-2017 Ray Finch. +Copyright 2002, Sean M. Burke. +Copyright 2003 Julius C. Duque +Copyright 2007 David Cantrell. +Copyright 2010 by Mark Dootson +Copyright 2012 Steffen Mueller +copyright (c) 2002 Jos Boumans +copyright (c) 2005 Jos Boumans +copyright (c) 2014 cPanel Inc. +(c) 1995 Microsoft Corporation. +(c) 1999 Microsoft Corporation. +Copyright (c) 1998 Graham Barr. +Copyright (c) 2000 Clark Cooper +Copyright (c) 2000 Graham Barr. +Copyright (c) 2002 Mark Fowler. +Copyright (c) 2002 T.J. Mather. +Copyright (c) 2003 Graham Barr. +Copyright (c) 2004 X Consortium +Copyright (c) 2006 Bob Mathews. +Copyright (c) 2006 DelTel, Inc. +Copyright (c) 2008 Paul Fenwick +Copyright (c) 2010 Mark Dootson +Copyright (c) 2011 Dick Franks. +Copyright (c) 2011 Tim Jenness. +Copyright (c) 2012 Dick Franks. +Copyright (c) 2013 Dick Franks. +Copyright (c) 2014 Dick Franks. +Copyright (c) 2015 Dick Franks. +Copyright (c) 2016 Dick Franks. +Copyright (c) 2016, cPanel Inc. +Copyright (c) 2017 Dick Franks. +Copyright (c) Mihai Bazon 2008. +Copyright (c) MingW-W64 Project +Copyright 1995-1999, Gisle Aas. +Copyright 2002 Jonathan Leffler +Copyright 2008 by Laurent Dami. +Copyright 2011 Christian Hansen +Copyright 2012 by Dana Jacobsen +Copyright 2013 by Dana Jacobsen +Copyright 2017 by Dana Jacobsen +copyright 1998 by Gabor Egressy +copyright 2000 - 2004 Ned Konz. +copyrighted by Dovecot authors. +Copyright (c) 1997 Michael Fuhr. +Copyright (c) 2000 Andy Wardley. +Copyright (c) 2000 Michael Fuhr. +Copyright (c) 2000, W3Works, LLC +Copyright (c) 2001, Kurt Kincaid +Copyright (c) 2003 Simon Cozens. +Copyright (c) 2008 Andy Wardley. +Copyright (c) 2008 Yuval Kogman. +Copyright (c) 2016 Unicode, Inc. +Copyright (c) jQuery Foundation. +Copyright 1995 Lincoln D. Stein. +Copyright 1995,1996 Neil Winton. +Copyright 1995-1996 Neil Winton. +Copyright 1998 The Perl Journal. +Copyright 1999 Barrie Slaymaker. +Copyright 1999-2004 Grant McLean +Copyright 2001 Barrie Slaymaker. +Copyright 2001, Barrie Slaymaker +Copyright 2002-2008 by chromatic +Copyright 2004-2010 John Peacock +Copyright 2004-2018 by Dan Sully +Copyright 2005-2008 Andy Lester. +Copyright 2007-2009 Matt S Trout +Copyright 2008 by Chia-liang Kao +Copyright 2011-2015 Mateu Hunter +Copyright 2013 Tom Christiansen. +Copyright 2018 Gianni Ceccarelli +Copyright MM-MMX, John McNamara. +Copyrights 1995-2000 Graham Barr +copyright (c) 1994 by Tim Bunce. +copyright 2000 The Perl Journal. +COPYRIGHT (c) MMV, John McNamara. +Copyright (c) 1990-2007 Info-ZIP. +Copyright (c) 1994-2006 Tim Bunce +Copyright (c) 1994-2007 Tim Bunce +Copyright (c) 1997-8 Graham Barr. +Copyright (c) 1999, Ken Williams. +Copyright (c) 2000-2002 Ned Konz. +Copyright (c) 2001 Paul Kulchenko +Copyright (c) 2002 James Tillman. +Copyright (c) 2002 Richard Clamp. +Copyright (c) 2002 Sean M. Burke. +Copyright (c) 2003 Richard Clamp. +Copyright (c) 2004 Sean M. Burke. +Copyright (c) 2004 by Jeff Zucker +Copyright (c) 2005 Paul Marquess. +Copyright (c) 2005, Damian Conway +Copyright (c) 2007 Martin Kutter. +Copyright (c) 2007-14 Rob Kinyon. +Copyright (c) 2009 Yann Kerherve. +Copyright (c) 2010-2015 the Moo L +Copyright (c) 2012, Steve Peters. +Copyright (c) 2013 by Joel Berger +Copyright (c) 2014 A. Sinan Unur. +Copyright (c) 2014 Douglas Wilson +Copyright (c) 2017 Stefan Hermes. +Copyright 2000,2001 Sean M. Burke +Copyright 2001 Abhijit Menon-Sen. +Copyright 2001-2014. Ingy dot Net +Copyright 2002-2006 Abe Timmerman +Copyright 2002-2007 Adrian Howard +Copyright 2008-2009, Paul Fenwick +Copyright Andy Wardley 1998-2007. +Copyright Micheal G Schwern 2001. +copyright (c) 2004 by Casey West. +copyright (c) 2014 by Arthur Axel +copyright (c) 2014 by Mark Allen. +copyright (c) 2016 by Arthur Axel +copyright (c) 2018 by Arthur Axel +copyright 1999-2010 W3Works, LLC. +copyright 2004, Lincoln D. Stein. +parts copyright 2011 Aaron Crane. +COPYRIGHT (c) MMXV, John McNamara. +Copyright (c) 1994-2013 Larry Wall +Copyright (c) 1997 Alan Citterman. +Copyright (c) 1997 Jochen Wiedmann +Copyright (c) 1998+ Sean M. Burke. +Copyright (c) 1998-2004 Tom Hughes +Copyright (c) 2000 Paul Kulchenko. +Copyright (c) 2000 Simon Matthews. +Copyright (c) 2000, Andrew Benham. +Copyright (c) 2000-9, Leon Brocard +Copyright (c) 2001+ Sean M. Burke. +Copyright (c) 2001, Paul Marquess. +Copyright (c) 2003-2005 Yves Orton +Copyright (c) 2003-2017 J-L Morel. +Copyright (c) 2006 Simon Wilkinson +Copyright (c) 2007 Brandon L Black +Copyright (c) 2008- Martin Kutter. +Copyright (c) 2010 Krasimir Berov. +Copyright (c) 2010 by Jens Rehsack +Copyright (c) 2011 by Dave Rolsky. +Copyright (c) 2013 Chris Williams. +Copyright (c) 2013-2014 Steve Hay. +Copyright (c) 2013-2016 Steve Hay. +Copyright (c) 2013-2017 Steve Hay. +Copyright (c) 2014 by Dave Rolsky. +Copyright (c) 2015-2016 cPanel Inc +Copyright (c) 2016 Chris Marshall. +Copyright (c) 2016 by Dave Rolsky. +Copyright (c) 2017 by Dave Rolsky. +Copyright 1999 - 2006 Tye McQueen. +Copyright 2000-2005 Sean M. Burke. +Copyright 2000-2018, Steve Hancock +Copyright 2001, t0mas@netlords.net +Copyright 2001-2003 AxKit.com Ltd. +Copyright 2001-2009 AxKit.com Ltd. +Copyright 2001-2018. Ingy dot Net. +Copyright 2002 by Janek Schleicher +Copyright 2002-2010 by Audrey Tang +Copyright 2003 - 2007 Fergal Daly. +Copyright 2003 by Michel Rodriguez +Copyright 2003-2008 by Audrey Tang +Copyright 2003-2010 by Audrey Tang +Copyright 2003-2011 by Audrey Tang +Copyright 2004-2009 by Audrey Tang +Copyright 2004-2014. Ingy dot Net. +Copyright 2004-2017. Ingy dot Net. +Copyright 2005, 2006 Adam Kennedy. +Copyright 2005-2018. Ingy dot Net. +Copyright 2006,2008 by Randy Kobes +Copyright 2007-2018. Ingy dot Net. +Copyright 2012 Alessandro Ghedini. +Copyright 2013 Alessandro Ghedini. +Copyright 2013 by Kenichi Ishigaki +Copyright 2013-2014, Niels Thykier +Copyright 2014 Alessandro Ghedini. +Copyright MM-MMXII, John McNamara. +Copyright MM-MMXVI, John McNamara. +Portions Copyright 2001 Ray Finch. +copyright (c) 2009 by Philip Gwyn. +copyright (c) 2017 by Dave Rolsky. +copyright (c) 2018 by Dave Rolsky. +copyright 2002, Daniel J. Harasty. +parts copyright 2005 Steve Peters. +parts copyright 2006 Chris Nandor. +parts copyright 2009 Adam Kennedy. +parts copyright 2010 Adam Kennedy. +COPYRIGHT 2001-2007, AxKit.com Ltd. +Copyright (c) 1998, Jochen Wiedmann +Copyright (c) 2000 Andrew Tridgell. +Copyright (c) 2001 Michael Hennecke +Copyright (c) 2001, Colin McMillen. +Copyright (c) 2001-2010 Neil Bowers +Copyright (c) 2002 Jonathan Leffler +Copyright (c) 2002-2003, Rob Brown. +Copyright (c) 2002-2009 Neil Bowers +Copyright (c) 2003 Chris Reinhardt. +Copyright (c) 2003-2018 Mark Shelor +Copyright (c) 2004 Peter Marschall. +Copyright (c) 2006-2008 Gabor Szabo +Copyright (c) 2007,2008 NLnet Labs. +Copyright (c) 2007-10 Max Maischein +Copyright (c) 2009 by David Golden. +Copyright (c) 2011 by Joachim Zobel +Copyright (c) 2012 by Daniel Dragan +Copyright (c) 2013 by David Golden. +Copyright (c) 2013,2015 Dick Franks +Copyright (c) 2014 by David Golden. +Copyright (c) 2014,2017 Dick Franks +Copyright (c) 2014-2017 cPanel Inc. +Copyright (c) 2016 by Jesse Luehrs. +Copyright (c) 2016- by Jens Rehsack +Copyright 1995-1998,2004 Gisle Aas. +Copyright 2000-2010, John McNamara. +Copyright 2001 - 2011 Adam Kennedy. +Copyright 2001 by Jarkko Hietaniemi +Copyright 2001 by Michael G Schwern +Copyright 2001-2009, AxKit.com Ltd. +Copyright 2003, 2004 by Fergal Daly +Copyright 2003, R. Barrie Slaymaker +Copyright 2005 - 2009 Adam Kennedy. +Copyright 2005 - 2011 Adam Kennedy. +Copyright 2005 - 2012 Adam Kennedy. +Copyright 2006 - 2010 Adam Kennedy. +Copyright 2006 - 2011 Adam Kennedy. +Copyright 2006 - 2013 Adam Kennedy. +Copyright 2006-2008 Curtis Ovid Poe +Copyright 2007 - 2011 Adam Kennedy. +Copyright 2007-2011 Andy Armstrong. +Copyright 2008 - 2009 Adam Kennedy. +Copyright 2008 - 2011 Adam Kennedy. +Copyright 2009 - 2011 Adam Kennedy. +Copyright 2009 - 2012 Adam Kennedy. +Copyright 2010- Tatsuhiko Miyagawa. +Copyright 2011 Breno G. de Oliveira +Copyright 2014 - 2018 Jens Rehsack. +Copyright 2015-2017 by Jens Rehsack +Copyright 2017- by Kenichi Ishigaki +copyright (c) 2003 by Simon Cozens. +copyright (c) 2004 by Simon Cozens. +copyright (c) 2010 by Adam Kennedy. +copyright (c) 2013 by David Golden. +copyright (c) 2013 by Jesse Luehrs. +copyright (c) 2014 by Jesse Luehrs. +copyright (c) 2015 by Robin Berjon. +copyright (c) 2016 by Adam Kennedy. +copyright (c) 2016 by David Golden. +copyright (c) 2016 by Jesse Luehrs. +copyright (c) 2017 by Adam Kennedy. +copyright (c) 2017 by Graham Ollis. +parts copyright 2000 Sean M. Burke. +Copyright (c) 1995-1997 Graham Barr. +Copyright (c) 1995-1998 Graham Barr. +Copyright (c) 1995-2004 Graham Barr. +Copyright (c) 1995-2006 Graham Barr. +Copyright (c) 1995-2009 Graham Barr. +Copyright (c) 1997, 1999 Tom Phoenix +Copyright (c) 1997-1998 Graham Barr. +Copyright (c) 1998-2004 Graham Barr. +Copyright (c) 1998-2005 Graham Barr. +Copyright (c) 1998-2011 Graham Barr. +Copyright (c) 2000 Ilya Zakharevich. +Copyright (c) 2000,2002 Thomas Pfau. +Copyright (c) 2000-2004 Tim Jenness. +Copyright (c) 2002-2004 Graham Barr. +Copyright (c) 2003 Sidney Markowitz. +Copyright (c) 2003- Euro6IX project. +Copyright (c) 2005-6 Joshua Hoblitt. +Copyright (c) 2006, Portugal Telecom +Copyright (c) 2008 - 2010 Kazuho Oku +Copyright (c) 2009 Tokuhiro Matsuno. +Copyright (c) 2009,2012 Dick Franks. +Copyright (c) 2009-2011 Dick Franks. +Copyright (c) 2011-2012 Dick Franks. +Copyright (c) 2011-2014 Reini Urban. +Copyright (c) 2012 Tom Christiansen. +Copyright (c) 2012,2016 Dick Franks. +Copyright (c) 2012-2013 Google, Inc. +Copyright (c) 2012-2017 Joel Berger. +Copyright (c) 2017- Kenichi Ishigaki +Copyright 1987-2018, Larry Wall Perl +Copyright 1997 - 2001 Damian Conway. +Copyright 2001-2008 Barrie Slaymaker +Copyright 2006, William Hart. SIMPQS +Copyright 2006-2016 by Brian Cassidy +Copyright 2007-2008 Brandon L. Black +Copyright 2008-2009 by Brian Cassidy +Copyright 2009 - 2011 Jerome Quelin. +Copyright 2011 by Serguei Trouchelle +Copyright 2011-2017 by Dana Jacobsen +Copyright 2012-2013 by Dana Jacobsen +Copyright 2012-2016 by Dana Jacobsen +Copyright 2014 Christopher J. Madsen +Copyright 2014-2016 by Dana Jacobsen +Copyright MM-MMXVIII, John McNamara. +copyright (c) 1998 by Gabor Egressy. +copyright (c) 2001 by Damian Conway. +copyright (c) 2007 by Shawn M Moore. +copyright (c) 2008 by Shawn M Moore. +copyright (c) 2012-2017 Joel Berger. +copyright 2002 - 2007 Matt Sergeant. +(c) by Tels L +Copyright (c) 1996-2000 Andy Wardley. +Copyright (c) 1996-2001 Andy Wardley. +Copyright (c) 1996-2006 Andy Wardley. +Copyright (c) 1996-2007 Andy Wardley. +Copyright (c) 1996-2008 Andy Wardley. +Copyright (c) 1996-2013 Andy Wardley. +Copyright (c) 1996-2014 Andy Wardley. +Copyright (c) 1996-2015 Andy Wardley. +Copyright (c) 1997,1998 Michael Fuhr. +Copyright (c) 1997-2000 Michael Fuhr. +Copyright (c) 1997-2001 Michael Fuhr. +Copyright (c) 1997-2003 Andy Wardley. +Copyright (c) 1997-2007 Andy Wardley. +Copyright (c) 1998 by Jochen Wiedmann +Copyright (c) 1998-2008 Andy Wardley. +Copyright (c) 1999-2003 Joshua Chamas +Copyright (c) 2000,2001 Michael Fuhr. +Copyright (c) 2000-2007 Andy Wardley. +Copyright (c) 2001-2006 Ken Williams. +Copyright (c) 2001-2007 Andy Wardley. +Copyright (c) 2001-2008 Ken Williams. +Copyright (c) 2001-2008 Robin Berjon. +Copyright (c) 2001-2009 Andy Wardley. +Copyright (c) 2001-2011 Ken Williams. +Copyright (c) 2002 Tim Bunce Ireland. +Copyright (c) 2002,3,4 Sean M. Burke. +Copyright (c) 2002-2007 Andy Wardley. +Copyright (c) 2003-2005 Ken Williams. +Copyright (c) 2003-2014 Max Maischein +Copyright (c) 2006 by Steffen Mueller +Copyright (c) 2006, 2013 Google Inc.. +Copyright (c) 2007-2008 Martin Kutter +Copyright (c) 2009-2013 John McNamara +Copyright (c) 2010-2014 A. Sinan Unur +Copyright (c) 2010-2018 Sullivan Beck +Copyright (c) 2011-2015 Buddy Burden. +Copyright (c) 2011-2018 Sullivan Beck +Copyright (c) 2012 by Leon Timmermans +Copyright (c) 2013-2017 Jens Rehsack. +Copyright (c) 2014 by David A Golden. +Copyright (c) 2015 by Salvador FandiE +Copyright (c) 2017-2018, Reini Urban. +Copyright (c) 2018 by David A Golden. +Copyright 1990,2015 by Johan Vromans. +Copyright 1996-1998 Gurusamy Sarathy. +Copyright 1999-2000 Michael A. Chase. +Copyright 2001-2011 Jarkko Hietaniemi +Copyright 2006 - 2011 Benjamin Trott. +Copyright 2013 - 2017 by Jens Rehsack +Copyrights 1995-2018 by Mark Overmeer +Copyrights 2016-2018 by Mark Overmeer +Portions copyright 2007 David Golden. +copyright (c) 1994-2017 by Gisle Aas. +copyright (c) 1998 by Maurice Aubrey. +copyright (c) 2001-2017 by Gisle Aas. +copyright (c) 2002 - 2009 Jos Boumans +copyright (c) 2002-2017 by Gisle Aas. +copyright (c) 2004 by Ricardo SIGNES. +copyright (c) 2005 by Ricardo SIGNES. +copyright (c) 2006 by Ricardo Signes. +copyright (c) 2007 by Ricardo Signes. +copyright (c) 2010 by Ricardo Signes. +copyright (c) 2013 by Ricardo Signes. +copyright (c) 2015 by Ricardo SIGNES. +copyright (c) 2015 by Ricardo Signes. +copyright (c) 2017 by Ricardo Signes. +copyright (c) 2018 by Ricardo Signes. +(c) Copyright 1998-2007 by Mark Mielke +Copyright (c) 1994,1997,1998 Tim Bunce +Copyright (c) 1995-2011 Paul Marquess. +Copyright (c) 1995-2016 Paul Marquess. +Copyright (c) 1995-2018 Paul Marquess. +Copyright (c) 1997 Roderick Schertler. +Copyright (c) 1997,1999 Tim Bunce With +Copyright (c) 1997-2007, Damian Conway +Copyright (c) 1997-2015 Paul Marquess. +Copyright (c) 1998, Robert D. Cameron. +Copyright (c) 1998-2004 Sean M. Burke. +Copyright (c) 1999-2002 Marko Asplund. +Copyright (c) 1999-2004 Sean M. Burke. +Copyright (c) 2000 by James H. Turner. +Copyright (c) 2000, Vipul Ved Prakash. +Copyright (c) 2000-2006 Kawai Takanori +Copyright (c) 2000-2008 Takanori Kawai +Copyright (c) 2001, Vipul Ved Prakash. +Copyright (c) 2001-2004 Sean M. Burke. +Copyright (c) 2001-2011 Ian Robertson. +Copyright (c) 2002 Andreas Gustafsson. +Copyright (c) 2002,2011 Richard Clamp. +Copyright (c) 2002-2004 Sean M. Burke. +Copyright (c) 2002-2007 Sean M. Burke. +Copyright (c) 2002-2009 Richard Clamp. +Copyright (c) 2004-2009 by Jeff Zucker +Copyright (c) 2005 Aristotle Pagaltzis +Copyright (c) 2005-2018 Paul Marquess. +Copyright (c) 2006-2007 David Landgren +Copyright (c) 2009-2017 H.Merijn Brand +Copyright (c) 2011-2018 Paul Marquess. +Copyright (c) AEvar Arnfjord Bjarmason +Copyright 1995-1998, Lincoln D. Stein. +Copyright 2005-2010 by Steffen Mueller +Copyright 2006-2009 by Steffen Mueller +Copyright 2006-2010 by Steffen Mueller +Portions Copyright (c) 2002 Rob Brown. +copyright (c) 1996- by Andreas Koenig. +copyright (c) 2001 - 2007, Jos Boumans +copyright (c) 2003 Mark Jason Dominus. +copyright (c) 2005 by Curtis Ovid Poe. +copyright (c) 2008 by Florian Ragwitz. +copyright (c) 2008 by Leon Timmermans. +copyright (c) 2009 by Florian Ragwitz. +copyright (c) 2010 by Leon Timmermans. +copyright (c) 2012 by Leon Timmermans. +copyright (c) 2013 by Karen Etheridge. +copyright (c) 2013 by Leon Timmermans. +copyright (c) 2014 by Karen Etheridge. +copyright (c) 2014 by Leon Timmermans. +copyright (c) 2015 by Leon Timmermans. +copyright 1995-2005, Lincoln D. Stein. +copyright 1995-2007, Lincoln D. Stein. +copyright 1995-2010, Lincoln D. Stein. +parts copyright 2006 Stephen Steneker. +Copyright (c) 1995-98 Ilya Zakharevich. +Copyright (c) 1997,1998 Jochen Wiedmann +Copyright (c) 1998-2002 Ernesto Guisado +Copyright (c) 1999, Kenneth Albanowski. +Copyright (c) 2000-2001 Paul Kulchenko. +Copyright (c) 2000-2001, Damian Conway. +Copyright (c) 2000-2004 Paul Kulchenko. +Copyright (c) 2000-2005 Paul Kulchenko. +Copyright (c) 2000-2007 Paul Kulchenko. +Copyright (c) 2000-2008 James H. Turner +Copyright (c) 2000-2014, Damian Conway. +Copyright (c) 2001-2014, Damian Conway. +Copyright (c) 2002-2005 Peter Behroozi. +Copyright (c) 2003-2005 Allison Randal. +Copyright (c) 2006 by Philipp K. Janert +Copyright (c) 2006-2008 by Paul Fenwick +Copyright (c) 2007, Tim Bunce, Ireland. +Copyright (c) 2007-2011, Andy Armstrong +Copyright (c) 2007-2016 H.Merijn Brand. +Copyright (c) 2007-2018 H.Merijn Brand. +Copyright (c) 2009-2012 Daniel Stenberg +Copyright (c) 2010, Tim Bunce, Ireland. +Copyright (c) 2011 John Scoles. Canada. +Copyright (c) 2013-2015 Salvador FandiE +Copyright (c) 2016,2017 by Jens Rehsack +Copyright 1995 - 2013 by Andreas Koenig +Copyright 2010 Gisle Aas +Copyright 2015-2018 by Janek Schleicher +Parts Copyright (c) 2000-2004 Ned Konz. +Portions Copyright (c) 2014 Dick Franks +Portions copyright 2007, Joel Bernstein +copyright (c) 1998-2003 by Mark Mielke. +copyright (c) 2002 by Ilya Zakharevich. +copyright (c) 2004-2016 by Andy Lester. +copyright (c) 2015 by Christian Hansen. +copyright (c) 2016 by Christian Hansen. +parts copyright 2008 Wolfgang Sourdeau. +(c) JS Foundation and other contributors +COPYRIGHT (c) MM-MMXVIII, John McNamara. +Copyright (c) 1996, 1997 Malcolm Beattie +Copyright (c) 1998-2001 Jochen Wiedmann. +Copyright (c) 2000-2011 Adekunle Olonoh. +Copyright (c) 2000-2018 by Steve Hancock +Copyright (c) 2003,2004 Chris Reinhardt. +Copyright (c) 2004-2006 Peter Marschall. +Copyright (c) 2004-2011 Steffen Goeldner +Copyright (c) 2006-2007 by (Anno Siegel) +Copyright (c) 2006-2014 Steffen Ullrich. +Copyright (c) 2008, 2009 Florian Ragwitz +Copyright (c) 2009 Christopher Marshall. +Copyright (c) 2013-2014, 2016 Steve Hay. +Copyright 1995-1997,2002-2004 Gisle Aas. +Copyright 2001-2008 by Michael G Schwern +Copyright 2003 Matthew Simon Cavalletto. +Copyright 2004-2007, 2010 by Audrey Tang +Copyright 2007-2008 by Michael G Schwern +Copyright 2011-2017 Breno G. de Oliveira +Copyright 2011-2017 by Christian Hansen. +Copyright 2013-2017 by Christian Hansen. +Copyright 2015-2017 by Christian Hansen. +Portions Copyright (c) 2011 Dick Franks. +Portions Copyright (c) 2012 Dick Franks. +Portions Copyright (c) 2013 Dick Franks. +Portions Copyright (c) 2015 Dick Franks. +Portions Copyright (c) 2017 Dick Franks. +Portions Copyright 2006 Portugal Telecom +copyright (c) 2008 by John Napiorkowski. +copyright (c) 2014-2018 by Graham Ollis. +copyright (c) 2016 by chromatic@wgz.org. +parts copyright 2008 Francis J. Lacoste. +parts copyright 2009-2011 Jerome Quelin. +COPYRIGHT (c) 1995 Microsoft Corporation. +Copyright (c) 1994-2003 Tim Bunce Ireland +Copyright (c) 1994-2010 Tim Bunce Ireland +Copyright (c) 1994-2012 Tim Bunce Ireland +Copyright (c) 1995-2001, Raphael Manfredi +Copyright (c) 1996-2017 Gurusamy Sarathy. +Copyright (c) 1997-2002 Tim Bunce Ireland +Copyright (c) 1999-2000 by Marek Rouchal. +Copyright (c) 2000-2003 Stephen McCamant. +Copyright (c) 2001-2016 by Marek Rouchal. +Copyright (c) 2002-2005 Steffen Goeldner. +Copyright (c) 2003 - 2018 by Dave Rolsky. +Copyright (c) 2004 by the Perl 5 Porters. +Copyright (c) 2006-2009 by Steffen Muller +Copyright (c) 2009-2011,2017 Dick Franks. +Copyright (c) 2012 - 2017 by Dave Rolsky. +Copyright (c) 2016 - 2018 by Dave Rolsky. +Copyright (c) 2017, GoodData Corporation. +Copyright 2004, 2006, 2010 by Audrey Tang +Copyright 2010 by Makamaka Hannyaharamitu +Copyright 2011-2013 by Serguei Trouchelle +Copyright 2011-2014 by Serguei Trouchelle +Portions Copyright (c) 1997 Michael Fuhr. +Portions Copyright (c) 2001 Tony M Hoyle. +Portions Copyright (c) 2003 Olaf Kolkman. +Portions Copyright (c) 2005 Olaf Kolkman. +copyright (c) 2003 - 2018 by Dave Rolsky. +copyright (c) 2014, 2017 by Toby Inkster. +parts copyright 2006 - 2012 Adam Kennedy. +parts copyright 2007 - 2009 Adam Kennedy. +parts copyright 2008 - 2009 Adam Kennedy. +parts copyright 2008 - 2013 Adam Kennedy. +parts copyright 2010 - 2011 Adam Kennedy. +Copyright (c) 1994-2005 Tim Bunce, Ireland +Copyright (c) 1996, Kenneth J. Albanowski. +Copyright (c) 1998, 2002, 2003 Jon Orwant. +Copyright (c) 1998-2004 by Jochen Wiedmann +Copyright (c) 2000 - 2017 by David Rolsky. +Copyright (c) 2001,2002 Michael K. Neylon. +Copyright (c) 2002,2003 Tim Bunce Ireland. +Copyright (c) 2006-2007 Jarkko Hietaniemi. +Copyright (c) 2006-2009 by Steffen Mueller +Copyright (c) 2010-2018, Sebastian Riedel. +Copyright (c) 2011, 2012, 2013 Andrew Main +Copyright (c) 2012-2018 by Richard Simoes. +Portions Copyright (c) 1994-1997 Tim Bunce +Portions copyright 2006-2008 Adam Kennedy. +(c) (c) PS. Attributes PSPS EUR. Attributes +Additions copyright 1996 by Charles Bailey. +Copyright (c) 1994,1995,1996,1998 Tim Bunce +Copyright (c) 1994-2006 Tim Bunce. Ireland. +Copyright (c) 1994-2012 Tim Bunce. Ireland. +Copyright (c) 1998,1999 Kenneth Albanowski. +Copyright (c) 2000, 2003, 2004 Tim Jenness. +Copyright (c) 2000-2001, Vipul Ved Prakash. +Copyright (c) 2000-2008, Vipul Ved Prakash. +Copyright (c) 2001-2002 Michael G. Schwern. +Copyright (c) 2002 VeriSign, Mike Schiraldi +Copyright (c) 2004, 2008 Matthijs van Duin. +Copyright (c) 2005, 2006 by David B. Robins +Copyright (c) 2007, 2008, 2009 Matt S Trout +Copyright (c) 2008 by Larry Wall and others +Copyright (c) 2008-2009 Greg Sabino Mullane +Copyright (c) 2012 by Larry Wall and others +Copyright (c) 2014 by Larry Wall and others +Copyright (c) 2015 by Larry Wall and others +Copyright 1990-1992 RSA Data Security, Inc. +Copyright 1991-1992 RSA Data Security, Inc. +Copyright 2002, 2003, 2004 by Autrijus Tang +Copyright 2005 Ken Williams and Randy Sims. +Copyright 2013, Paul Fenwick +Copyright E Chris Williams and Jos Boumans. +Portions Copyright (c) 1997 Alan Citterman. +copyright (c) 2008 by Infinity Interactive. +copyrighted by the Free Software Foundation +Copyright (c) 1994-2018, Greg Sabino Mullane +Copyright (c) 1996-2009 David Muir Sharnoff. +Copyright (c) 2000 Lincoln D. Stein Slightly +Copyright (c) 2000, Tim Bunce, Thomas Lowery +Copyright (c) 2000, by Larry Wall and others +Copyright (c) 2002, ActiveState Corporation. +Copyright (c) 2004-14 by the Perl 5 Porters. +Copyright (c) 2005 Olaf Kolkman, NLnet Labs. +Copyright (c) 2007 Olaf Kolkman, NLnet Labs. +Copyright (c) 2007-2008, Tim Bunce, Ireland. +Copyright (c) 2008 Olaf Kolkman, NLnet Labs. +Copyright (c) 2009 Olaf Kolkman, NLnet Labs. +Copyright (c) 2011 - 2018 by Salvador FandiE +Copyright 1997, 2000, 2002, 2013 Jay Rogers. +Copyright 2006 by Infinity Interactive, Inc. +Portions Copyright (c) 2002 Jeffrey W. Baker +Portions Copyright (c) 2003 Chris Reinhardt. +Portions Copyright (c) 2007,2008 NLnet Labs. +Portions Copyright (c) 2007-2015 Dick Franks +Portions Copyright 1994 David Muir Sharnoff. +copyright (c) 1996 by Kenneth J. Albanowski. +copyright (c) 2013 by Tim Jenness and the UK +copyright (c) 2014 by Christopher J. Madsen. +portions Copyright (c) 1997-2004 Jeff Urlwin +Copyright (c) 1991-2, RSA Data Security, Inc. +Copyright (c) 1994-2000 by Bradford Appleton. +Copyright (c) 1996-2000 by Bradford Appleton. +Copyright (c) 1996-2002 Douglas E. Wegscheid. +Copyright (c) 1998-2000 by Bradford Appleton. +Copyright (c) 2002-2007 by D.H. aka PodMaster +Copyright (c) 2002-2014 by the Perl 5 Porters +Copyright (c) 2003-2008, 2012-2014 Steve Hay. +Copyright (c) 2008,2009 Larry Wall and others +Copyright (c) 2012 Willem Toorop, NLnet Labs. +Copyright 2004 - 2010 by Tassilo von Parseval +Portions Copyright (c) 1997-2001 Edmund Mergl +Portions Copyright (c) 2002-2009 Olaf Kolkman +Portions Copyright (c) 2007,2012 Dick Franks. +Portions Copyright (c) 2010,2012 Dick Franks. +Portions Copyright (c) 2011,2017 Dick Franks. +Portions Copyright (c) 2012,2015 Dick Franks. +Portions Copyright (c) 2012,2017 Dick Franks. +Portions Copyright (c) 2014,2015 Dick Franks. +Portions Copyright (c) 2014-2017 Dick Franks. +copyright (c) 2004, 2008 by Matthijs van Duin +parts copyright 2009 - 2013 Kenichi Ishigaki. +portions Copyright (c) 1997 Thomas K. Wenrich +COPYRIGHTS Benjamin Trott, ben@rhumba.pair.com +Copyright (c) 1996, 1997, 1998 Malcolm Beattie +Copyright (c) 1997 Jochen Wiedmann Am Eisteich +Copyright (c) 1997,1998,1999 Tim Bunce England +Copyright (c) 1999-2004 Igor Pavlov 2004-02-15 +Copyright (c) 2000 Lincoln D. Stein Formatting +Copyright (c) 2000,2001 Kawai Takanori. Japan. +Copyright (c) 2004,2007 by the Perl 5 Porters. +Copyright (c) 2004-2013 by the Perl 5 Porters. +Copyright (c) 2005-2013 by Adriano R. Ferreira +Copyright 2005-2013 by Makamaka Hannyaharamitu +Copyright 2005-2015 by Makamaka Hannyaharamitu +Copyright 2006-2011, 2014, 2016, 2018 Sisyphus +Copyright 2007-2011 by Makamaka Hannyaharamitu +Copyright 2007-2012 by Makamaka Hannyaharamitu +Copyright 2007-2014 by Makamaka Hannyaharamitu +Copyright 2007-2016 by Makamaka Hannyaharamitu +Copyright 2015 Michael LaGrasta and Dan Kogai. +Copyright Benjamin Trott, cpan@stupidfool.org. +Portions Copyright (c) 2003-2005 Rudolf Lippan +Portions Copyright (c) 2005-2007 Olaf Kolkman. +copyright (c) 2007 by Robert phaylon Sedlacek. +copyright (c) 2012 by Robert phaylon Sedlacek. +copyright (c) 2013-2014, 2017 by Toby Inkster. +copyright 2008-2009, Ash Berlin +parts copyright 2004 - 2005 Richard Soderberg. +(c) 1998-2007 (W3C) MIT, ERCIM, Keio University +(c) 1998-2008 (W3C) MIT, ERCIM, Keio University +Copyright (c) 1999,2001 by ZeeGee Software Inc. +Copyright (c) 2001 Canon Research Centre Europe +Copyright (c) 2004-2013, Marcus Holland-Moritz. +Copyright (c) 2015-2018 by Pali +Copyright (c) 2016-2017 by Pali +Copyright 1995-1999, 2001-2004, 2010 Gisle Aas. +Copyright 1997, 2000, 2002, 2013 by Jay Rogers. +Copyright 2000, Andrew Benham, adsb@bigfoot.com +Copyright 2001, Lincoln Stein +Copyright 2003, 2004, 2005, 2006 by Audrey Tang +Copyright 2004, 2005, 2006, 2007 by Audrey Tang +Portions Copyright 2006-2011 by Benjamin Trott. +copyright (c) 2014 by Dagfinn Ilmari Mannsaker. +portions copyright 2006, 2007 by Joel Bernstein +(c) Paul Evans, 2010-2015 leonerd@leonerd.org.uk +Copyright (c) 1991-1992, RSA Data Security, Inc. +Copyright (c) 1998 Graham Barr +Copyright (c) 2002 Graham Barr +Copyright (c) 2004 Cold Spring Harbor Laboratory +Copyright (c) 2004-2015 Best Practical Solutions +Copyright (c) 2005-2015 Makamaka Hannyaharamitu. +Copyright (c) 2007-2015 Makamaka Hannyaharamitu. +Copyright (c) 2008 Graham Barr +Copyright (c) 2008, 2010, 2013, 2014 Reini Urban +Copyright (c) 2015-2018 by Pali E pali@cpan.orgE +Copyright 1998 (c) Byron Brummer. Copyright 1998 +Copyright 2004 by Audrey Tang +Copyright 2009, 2010, 2011, 2012 Steffen Mueller +Portions Copyright (c) 1997-2003 Jochen Wiedmann +Portions Copyright (c) 2001 Jonathan M Gilligan. +copyright (c) 1998 Francois Desarmenien, France. +copyright (c) 2006 by Infinity Interactive, Inc. +copyright 2005 Fergal Daly +copyright Systemics Ltd http://www.systemics.com +portions Copyright (c) 2007-2014 Martin J. Evans +Copyright (c) 1989 Free Software Foundation, Inc. +Copyright (c) 1990-2011 by Larry Wall and others. +Copyright (c) 1990-2012 by Larry Wall and others. +Copyright (c) 1999 Tuomas J. Lukka +Copyright (c) 2001-2005 RIPE NCC, Olaf M. Kolkman +Copyright (c) 2007, 2011 by Larry Wall and others +Copyright (c) 2008 Marc Lehmann +Copyright (c) 2010, 2011 by Larry Wall and others +Copyright (c) Katholieke Universiteit Leuven 1996 +Copyright 1991 Bell Communications Research, Inc. +Copyright 2000 by Joe Smith +Copyright 2001 Abhijit Menon-Sen +Portions Copyright (c) 2002,2003 Chris Reinhardt. +Portions Copyright (c) 2002-2003 Chris Reinhardt. +Portions Copyright (c) 2002-2004 Chris Reinhardt. +Portions Copyright (c) 2004-2006 Alexey Stroganov +Portions Copyright (c) 2005 Robert Martin-Legene. +Copyright (c) 1995 Graham Barr & Nick Ing-Simmons. +Copyright (c) 1996-8 Graham Barr +Copyright (c) 1997-8 Graham Barr +Copyright (c) 1998-2000 Joshua Nathaniel Pritikin. +Copyright (c) 2001-2012, SADAHIRO Tomoyuki. Japan. +Copyright (c) 2001-2017, SADAHIRO Tomoyuki. Japan. +Copyright (c) 2004 Peter Marschall +Copyright (c) 2004-2017, SADAHIRO Tomoyuki. Japan. +Copyright 2000-2007 Michael Stevens, Andy Wardley. +Copyright 2005, 2006 by Infinity Interactive, Inc. +Portions Copyright (c) 2003,2006-2011 Dick Franks. +Portions Copyright (c) 2004-2013 Patrick Galbraith +copyright (c) 2004 by Simon Cozens and Casey West. +Copyright (c) 1998-2000 Larry Wall and Clark Cooper +Copyright (c) 1998-2004 Tom Hughes +Copyright (c) 1999, Tim Bunce, Phlip, Thomas Lowery +Copyright (c) 2000-2006 Paul Kulchenko, Byrne Reese +Copyright (c) 2002, 2003, 2006, 2007 Richard Clamp. +Copyright (c) 2002, Thomas Lowery, Steffen Goeldner +Copyright (c) 2003, Thomas Lowery, Steffen Goeldner +Copyright (c) 2007-2008 NLnet Labs, Olaf M. Kolkman +Copyright (c) 2010 by H.Merijn Brand & Jens Rehsack +Copyright (c) 2011 by Jonathan Yu +Copyright 1995-2017 Jean-loup Gailly and Mark Adler +Copyright 2001 Benjamin Trott, ben@rhumba.pair.com. +Copyright 2001 Benjamin Trott, cpan@stupidfool.org. +Copyright 2001-2006 Ken Williams. 2010 Matt S Trout +Copyright 2003 by Fergal Daly +Copyright 2004 Benjamin Trott, cpan@stupidfool.org. +Portions Copyright (c) 2005-2009 O.M, Kolkman, RIPE +copyright (c) 2015 by Simon Flack and David Golden. +copyright_holder E. Xavier Ample +Copyright (c) 1997-2001 Canon Research Centre Europe +Copyright (c) 1998 Canon Research Centre Europe Ltd. +Copyright (c) 2000-2012 Graham Barr +Copyright (c) 2005 Florian Ragwitz +Copyright (c) 2010-2011 Matt Trout and David Golden. +Copyright 2012 Kurt Starsinic +Copyright 2017 Marty Pauley +Portions Copyright (c) 2009 Olaf Kolkman, NLnet Labs +copyright (c) 2004 by Ken Williams, Leon Timmermans. +copyright (c) 2006 by Ken Williams, Leon Timmermans. +copyright (c) 2011 by Ken Williams, Leon Timmermans. +copyright (c) 2011 by Leon Timmermans, David Golden. +copyright (c) 2014 by Adam Kennedy and Contributors. +copyright (c) 2017 by Kent Fredric +Copyright (c) 1997-2003 Graham Barr +Copyright (c) 1997-2007 Graham Barr +Copyright (c) 1997-2009 Graham Barr +Copyright (c) 2000-2002 Graham Barr +Copyright (c) 2000-2005 Graham Barr +Copyright (c) 2004-2006 Graham Barr +Copyright (c) 2008-2018, Sebastian Riedel and others. +Copyright (c) 2010 by David Golden and Ricardo Signes +Copyright 1998, 1999, 2000, 2001, 2012 M. J. Dominus. +Portions Copyright (c) 2005 Olaf Kolkman, NLnet Labs. +Portions Copyright (c) 2006 Olaf Kolkman (NLnet Labs) +Copyright (c) 1996-2002,2005,2006 David Muir Sharnoff. +Copyright (c) 1996-2003 Sampo Kellomaki +Copyright (c) 2000-2007 Michael Stevens, Andy Wardley. +Copyright (c) 2001-2007 Nathan Wiger +Copyright (c) 2002-2018 Greg Sabino Mullane and others +Copyright (c) 2003-2018 Mark Shelor +Copyright (c) 2005 Mike McCauley +Copyright (c) 2007-2014 Dave Rolsky +Copyright (c) 2014 Paul Evans +Copyright 1999-2000 by Russ Allbery +Copyright 2000-2010, John McNamara, jmcnamara@cpan.org +Copyright 2000-2012, John McNamara, jmcnamara@cpan.org +Copyright 2000-2016, John McNamara, jmcnamara@cpan.org +Copyright 2000-2018, John McNamara, jmcnamara@cpan.org +Copyright 2004, 2010 by Audrey Tang +Copyright 2009, 2010, 2011, 2012, 2013 Steffen Mueller +copyright (c) 2004 by Adam Kennedy and Ricardo SIGNES. +copyright (c) 2010 by David Golden and Ricardo Signes. +Copyright (c) 2007-2016 H.Merijn Brand for PROCURA B.V. +Copyright (c) 2008, 2010, 2011 by Larry Wall and others +Copyright 1998 M-J. Dominus. (mjd-perl-diff@plover.com) +Copyright 2004-2014 by Christian Renz +Copyrights 1999-2018 by Mark Overmeer +Copyrights 2007-2018 by Mark Overmeer +copyright (c) 1997 - 2018 by Graham Barr & Dave Rolsky. +copyright (c) 2017 by Michael Schwern and David Golden. +Copyright (c) 2003-2004, 2012-2013 by the gtk2-perl team +Copyright (c) 2009-2013 by H.Merijn Brand & Jens Rehsack +Copyright (c) 2010 Simon Josefsson +Copyright (c) 2010-2013 by H.Merijn Brand & Jens Rehsack +Copyright (c) 2010-2013 by Jens Rehsack & H.Merijn Brand +Portions Copyright (c) 2005 Olaf M. Kolkman, NLnet Labs. +Copyright (c) 1997,1998 Canon Research Centre Europe Ltd. +Copyright (c) 1998-2000 Canon Research Centre Europe Ltd. +Copyright (c) 1998-2001 Canon Research Centre Europe Ltd. +Copyright (c) 1998-2003 Canon Research Centre Europe Ltd. +Copyright (c) 2000, 1996, 1991, 2012 O'Reilly Media, Inc. +Copyright (c) 2000-2016 Hajimu UMEMOTO +Copyright (c) 2002, 2003, 2004, 2012 Elizabeth Mattijsen. +Copyright (c) 2004-2009, Sara Golemon +Copyright (c) 2005-2006 Florian Ragwitz +Copyrights 2013-2018 by Mark Overmeer +Copyright 1999-2010, 2012-2018 Russ Allbery +copyright (c) 2015 by Michael G. Schwern and David Golden. +Copyright (c) 1996-2003 Sampo Kellomaki +Copyright (c) 1997-2010 Tom Christiansen, Nathan Torkington +Copyright (c) 1997-2013 Tom Christiansen, Nathan Torkington +Copyright (c) 2008 Martin Kutter (martin.kutter@fen-net.de) +Copyright 2000 Christian Lackas, Imperia Software Solutions +Copyright (c) 1995, 1996, 1997, 1998, and 1999 WIDE Project. +Copyright (c) 1998 - 2016, Daniel Stenberg, +Copyright (c) 2000-2007 Thierry-Michel Barral, Andy Wardley. +Copyright (c) 2014-2018 by David Pinkowitz +Copyright 1998, 1999, 2000, 2001, 2012 by Mark Jason Dominus +Copyright 2004, 2006, 2010 by Audrey Tang +Copyright 2006-2010, Andy Lester 2010-2015 David E. Wheeler. +copyright (c) 2002 by Per Einar Ellefsen +Copyright (c) 2000-2005, Damian Conway and Michael G Schwern. +Copyright (c) 1996, 2000, 2001, 2005, by Larry Wall and others +Copyright (c) 2000-2001 Paul Kulchenko (paulclinger@yahoo.com) +Copyright (c) 2000-2003 Paul Kulchenko (paulclinger@yahoo.com) +Copyright (c) 2000-2004 Paul Kulchenko (paulclinger@yahoo.com) +Copyright (c) 2000-2005 Paul Kulchenko (paulclinger@yahoo.com) +Copyright (c) 2000-2007 Paul Kulchenko (paulclinger@yahoo.com) +Copyright (c) 2001, Tim Bunce, Thomas Lowery, Steffen Goeldner +Copyright (c) 2004-2017 Jean-Louis Morel +Copyright (c) 2002, 2003, 2004, 2006, 2009, 2011 Richard Clamp. +Copyright (c) 2006-2008 John Scoles (The Pythian Group), Canada +Copyright 2007-2014 by Alexandr Ciornii, L +copyright (c) 2006, 2009 by Qindel Formacion y Servicios, S. L. +Copyright (c) 2006, 2007, 2009, 2010, 2011 Larry Wall and others +Copyright (c) 2006-2011 John Scoles (The Pythian Group). Canada. +Copyright (c) 2010 - 2016 by Rafael Kitover (rkitover@cpan.org). +Copyright 1998-2001, 2004, 2007 by Sean M. Burke and David Hand. +Copyright (c) 2005 - 2010 by David B. Robins (dbrobins@cpan.org). +Copyright (c) 1995, 1996 Systemics Ltd (http://www.systemics.com/) +Copyright (c) 2006-2010 Matt S. Trout +Copyright 2001, 2008, 2009, 2014, 2018 Russ Allbery +copyright (c) 1994 by the Regents of the University of California. +Copyright (c) 2002, 2003, 2005, 2006, 2007 by Larry Wall and others +Copyright (c) 2008, 2009, 2010, 2011, 2012, 2013 by Steffen Mueller +Portions (c) 1999 ActiveState Tool Corp, http://www.ActiveState.com +Copyright (c) 1995, 1996, 1997, 1998 Doug MacEachern and Jon Orwant. +Copyright (c) 1989, 1993 The Regents of the University of California. +Copyright (c) 2000-2002 Kawai Takanori and Nippon-RAD Co. OP Division +Copyright (c) 2006 Simon Wilkinson, Achim Grolms and Peter Marschall. +Copyright 2001, 2004, 2008, 2014, 2018 by Russ Allbery +Parts Copyright (c) 1999, 2001 W3Works, LLC (http://www.w3works.com/) +Copyright (c) 1984, 1989-1990, 2000-2013 Free Software Foundation, Inc. +Copyright (c) 1998-2000, 2002, 2003, 2004, 2005, 2006 Stephen McCamant. +Copyright Tim Bunce, Thomas K. Wenrich, Jeff Urlwin and Martin J. Evans +Parts Copyright (c) 1995, 1996 Systemics Ltd (http://www.systemics.com/) +Copyright (c) 1991, 1992, 1993, 2000, 2004, 2011 by Larry Wall and others +Copyright (c) 2002, 2003, 2004, 2005, 2006, 2007, 2008 Jarkko Hietaniemi. +Copyright (c) 2003- Rafael Martinez Torres +Copyright 2002-2014 by Ken Williams, David Golden and other contributors. +Copyright 2007,2008,2009,2010,2011,2012,2013,2014,2015,2016,2017 Vincent Pit +copyright (c) 2008 by Infinity Interactive, Inc. http://www.iinteractive.com. +Copyright (c) 2004, 2006, 2007, 2009, 2010, 2011, 2012, 2014, 2017 Andrew Main +Copyright 1999, 2001, 2004, 2006, 2008, 2009, 2018 Russ Allbery +copyright (c) 2008, 2009, 2010, 2011, 2012 by Leon Timmermans +Copyright (c) 1994-1999 Kenneth Albanowski. 2001-2005 Jonathan Stowe and others +Copyright 2003-2004, 2012-2013 by muppet, Ross McFarland, and the gtk2-perl team +copyright (c) 2018 by Jos Boumans, Ken Williams, Chris Williams and David Golden. +Copyright 1999-2001, 2004, 2006, 2008, 2010, 2012-2018 Russ Allbery +copyright (c) 2010 by David Golden, Ricardo Signes, Adam Kennedy and Contributors. +Copyright 1999, 2000, 2001, 2004, 2006, 2008, 2010, 2015 Russ Allbery +Copyright (c) 1997, 1998, 2000, 2001, 2005, 2006, 2007, 2011 by Larry Wall and others +Copyright (c) 1991, 1992, 1993, 1995, 1996, 1998, 2000, 2001, by Larry Wall and others +Copyright (c) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, by Larry Wall and others +Copyright 1999-2002, 2004, 2006, 2008-2009, 2012-2016, 2018 Russ Allbery +copyright 1998 The Perl Journal. It appears courtesy of Jon Orwant and The Perl Journal. +copyright 1999 The Perl Journal. It appears courtesy of Jon Orwant and The Perl Journal. +copyright 2000 The Perl Journal. It appears courtesy of Jon Orwant and The Perl Journal. +Copyright (c) 1997-2003 Jonathan Leffler, Jochen Wiedmann, Steffen Goeldner and Tim Bunce +Copyright (c) 1997-2006 Jonathan Leffler, Jochen Wiedmann, Steffen Goeldner and Tim Bunce +Copyright 1999, 2000, 2001, 2004, 2006, 2008, 2010, 2015, 2018 Russ Allbery +Copyright (c) 2000, 2001, 2002, 2005, 2006, 2007, 2009, 2010, 2011 by Larry Wall and others +Copyright (c) 2002, 2003, 2005, 2006, 2007, 2008, 2009, 2010, 2011 by Larry Wall and others +Copyright (c) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, by Larry Wall and others +Copyright 1999, 2001-2002, 2004, 2006, 2008-2009, 2014-2015, 2018 Russ Allbery +Copyright (c) 1998-2002 Graham Barr and 2001 Chris Ridd +Copyright (c) 1997-2006 by Gurusamy Sarathy and Jan Dubois +Copyright (c) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 by Larry Wall and others +Copyright (c) 1991, 1992, 1993, 1995, 1996, 1997, 1998, 1999, 2000, 2001, by Larry Wall and others +Copyright (c) 1991, 1992, 1993, 1999, 2001, 2002, 2003, 2004, 2005, 2007, by Larry Wall and others +Copyright (c) 1993, 1994, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2007, by Larry Wall and others +copyright (c) Charles Bailey, Tim Bunce, David Landgren, James Keenan and Richard Elberger 1995-2017. +Copyright (c) 1994, 1995, 1996, 1997, 1999, 2000, 2001, 2002, 2005, 2006, 2007 by Larry Wall and others +Copyright (c) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2006, 2007, 2008 by Larry Wall and others +Copyright (c) 1996, 1997, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, by Larry Wall and others +Copyright (c) 1993, 1994, 1996, 1997, 1999, 2000, 2001, 2003, 2005, 2006, 2007, 2008 by Larry Wall and others +Copyright (c) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 by Larry Wall and others +Copyright (c) 2003-2009 Graham Barr, Djamel Boudjerda, Paul Connolly, Julian Onions, Nexor and Yann Kerherve. +Copyright (c) 1993, 1994, 1995, 1996, 1997, 1999, 2000, 2001, 2002, 2003, 2006, 2007, by Larry Wall and others +Copyright (c) 2001, 2002, 2003, 2005, 2006, 2007, 2009, 2010, 2011 by Larry Wall, Nick Ing-Simmons, and others +Copyright (c) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1999, 2000, 2002, 2005, 2006, 2007, 2008 by Larry Wall and others +Copyright (c) 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006 by Larry Wall and others +Copyright (c) 1993, 1994, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2004, 2005, 2006, 2007, 2008 by Larry Wall and others +Copyright (c) 1994, 1995, 1996, 1997, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2016 by Larry Wall and others +Copyright (c) 2003-2009 Graham Barr, Djamel Boudjerda, Paul Connolly, Julian Onions, Nexor, Peter Marschall and Yann Kerherve. +Copyright (c) 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007 by Larry Wall and others +Copyright (c) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 by Larry Wall and others +Copyright (c) 1991, 1992, 1993, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2005, 2006, 2007, 2008, by Larry Wall and others +Copyright (c) 1991, 1992, 1993, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2005, 2006, 2007, 2008, by Larry Wall and others +Copyright (c) 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 by Larry Wall and others +Copyright (c) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, by Larry Wall and others +Copyright (c) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2005, 2006, 2007, by Larry Wall and others +Copyright (c) 1993, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, by Larry Wall and others +Copyright (c) 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 by Larry Wall and others +Copyright 1995-1998 Gisle Aas, 1999-2004 Sean M. Burke, 2005 Andy Lester, 2006 Pete Krawczyk, 2010 Jeff Fearn, 2012 Christopher J. Madsen. +Copyright 1996, 1997, 1998, 2000, 2001, 2002, 2005, 2006, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016 Russ Allbery +Copyright (c) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 by Larry Wall and others +Copyright (c) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1999, 2000, 2001, 2002, 2004, 2005, 2006, 2007, 2008, 2012 by Larry Wall and others +Copyright (c) 1991, 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 by Larry Wall and others +Copyright (c) 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 by Larry Wall and others +Copyright (c) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 by Larry Wall and others +Copyright (c) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 by Larry Wall and others +Copyright (c) 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2011, 2012, 2013 by Larry Wall and others +Copyright (c) 1998-2003 World Wide Web Consortium (Massachusetts Institute of Technology, European Research Consortium for Informatics and Mathematics, Keio University). +Copyright (c) 1998-2008 World Wide Web Consortium (Massachusetts Institute of Technology, European Research Consortium for Informatics and Mathematics, Keio University). + +GPL-1.0-or-later OR Artistic-1.0-Perl + +--------------------------------------------------------- + +--------------------------------------------------------- + +Microsoft.Windows.SDK.NET.Ref 10.0.26100.57 - LicenseRef-scancode-unknown + + +(c) Microsoft Corporation +Copyright (c) Microsoft Corporation + +LicenseRef-scancode-unknown + +--------------------------------------------------------- + +--------------------------------------------------------- + +CommunityToolkit.Mvvm 8.4.0 - MIT + + +Copyright (c) 2021 Sergio Pedri +Copyright (c) 2020 Michael Dietrich +Copyright (c) Microsoft Corporation +(c) .NET Foundation and Contributors +Copyright (c) 2009 - 2018 Laurent Bugnion +Copyright (c) .NET Foundation and Contributors +Copyright (c) 2017 Pedro Lamas, http://www.pedrolamas.com + +# .NET Community Toolkit + +Copyright © .NET Foundation and Contributors + +All rights reserved. + +## MIT License (MIT) + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +--------------------------------------------------------- + +--------------------------------------------------------- + +CommunityToolkit.WinUI.Animations 8.2.250402 - MIT + + +(c) .NET Foundation and Contributors +Copyright (c) .NET Foundation and Contributors + +# Windows Community Toolkit + +Copyright © .NET Foundation and Contributors + +All rights reserved. + +## MIT License (MIT) + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +--------------------------------------------------------- + +--------------------------------------------------------- + +CommunityToolkit.WinUI.Controls.SettingsControls 8.2.250402 - MIT + + +(c) .NET Foundation and Contributors +Copyright (c) .NET Foundation and Contributors + +# Windows Community Toolkit + +Copyright © .NET Foundation and Contributors + +All rights reserved. + +## MIT License (MIT) + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +--------------------------------------------------------- + +--------------------------------------------------------- + +Microsoft.Extensions.Hosting 9.0.4 - MIT + + +Copyright (c) 2021 +Copyright (c) Six Labors +(c) Microsoft Corporation +Copyright (c) 2022 FormatJS +Copyright (c) Andrew Arnott +Copyright 2019 LLVM Project +Copyright (c) 1998 Microsoft +Copyright 2018 Daniel Lemire +Copyright (c) .NET Foundation +Copyright (c) 2011, Google Inc. +Copyright (c) 2020 Dan Shechter +(c) 1997-2005 Sean Eron Anderson +Copyright (c) 2015 Andrew Gallant +Copyright (c) 2022, Wojciech Mula +Copyright (c) 2017 Yoshifumi Kawai +Copyright (c) 2022, Geoff Langdale +Copyright (c) 2005-2020 Rich Felker +Copyright (c) 2012-2021 Yann Collet +Copyright (c) Microsoft Corporation +Copyright (c) 2007 James Newton-King +Copyright (c) 1991-2022 Unicode, Inc. +Copyright (c) 2013-2017, Alfred Klomp +Copyright (c) 2018 Nemanja Mijailovic +Copyright 2012 the V8 project authors +Copyright (c) 1999 Lucent Technologies +Copyright (c) 2008-2016, Wojciech Mula +Copyright (c) 2011-2020 Microsoft Corp +Copyright (c) 2015-2017, Wojciech Mula +Copyright (c) 2015-2018, Wojciech Mula +Copyright (c) 2005-2007, Nick Galbreath +Copyright (c) 2015 The Chromium Authors +Copyright (c) 2018 Alexander Chermyanin +Copyright (c) The Internet Society 1997 +Copyright (c) 2004-2006 Intel Corporation +Copyright (c) 2011-2015 Intel Corporation +Copyright (c) 2013-2017, Milosz Krajewski +Copyright (c) 2016-2017, Matthieu Darbois +Copyright (c) The Internet Society (2003) +Copyright (c) .NET Foundation Contributors +(c) 1995-2024 Jean-loup Gailly and Mark Adler +Copyright (c) 2020 Mara Bos +Copyright (c) .NET Foundation and Contributors +Copyright (c) 2012 - present, Victor Zverovich +Copyright (c) 2006 Jb Evain (jbevain@gmail.com) +Copyright (c) 2008-2020 Advanced Micro Devices, Inc. +Copyright (c) 2019 Microsoft Corporation, Daan Leijen +Copyright (c) 2011 Novell, Inc (http://www.novell.com) +Copyright (c) 2015 Xamarin, Inc (http://www.xamarin.com) +Copyright (c) 2009, 2010, 2013-2016 by the Brotli Authors +Copyright (c) 2014 Ryan Juckett http://www.ryanjuckett.com +Copyright (c) 1990- 1993, 1996 Open Software Foundation, Inc. +Portions (c) International Organization for Standardization 1986 +Copyright (c) YEAR W3C(r) (MIT, ERCIM, Keio, Beihang) Disclaimers +Copyright (c) 2015 THL A29 Limited, a Tencent company, and Milo Yip +Copyright (c) 1980, 1986, 1993 The Regents of the University of California +Copyright 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018 The Regents of the University of California +Copyright (c) 1989 by Hewlett-Packard Company, Palo Alto, Ca. & Digital Equipment Corporation, Maynard, Mass + +The MIT License (MIT) + +Copyright (c) .NET Foundation and Contributors + +All rights reserved. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + +--------------------------------------------------------- + +--------------------------------------------------------- + +Microsoft.NETCore.App.Runtime.win-arm64 9.0.4 - MIT + + +Copyright (c) 2021 +Copyright (c) Six Labors +(c) Microsoft Corporation +Copyright (c) 2022 FormatJS +Copyright (c) Andrew Arnott +Copyright 2019 LLVM Project +Copyright (c) 1998 Microsoft +Copyright 2018 Daniel Lemire +Copyright (c) .NET Foundation +Copyright 1995-2022 Mark Adler +Copyright 1995-2024 Mark Adler +Copyright (c) 2011, Google Inc. +Copyright (c) 2020 Dan Shechter +(c) 1997-2005 Sean Eron Anderson +Copyright (c) 2015 Andrew Gallant +Copyright (c) 2022, Wojciech Mula +Copyright (c) 2017 Yoshifumi Kawai +Copyright (c) 2022, Geoff Langdale +Copyright (c) 2005-2020 Rich Felker +Copyright (c) 2012-2021 Yann Collet +Copyright (c) Microsoft Corporation +Copyright (c) 2007 James Newton-King +Copyright (c) 1991-2022 Unicode, Inc. +Copyright (c) 2013-2017, Alfred Klomp +Copyright (c) 2018 Nemanja Mijailovic +Copyright 2012 the V8 project authors +Copyright (c) 1999 Lucent Technologies +Copyright (c) 2008-2016, Wojciech Mula +Copyright (c) 2011-2020 Microsoft Corp +Copyright (c) 2015-2017, Wojciech Mula +Copyright (c) 2015-2018, Wojciech Mula +Copyright (c) 2005-2007, Nick Galbreath +Copyright (c) 2015 The Chromium Authors +Copyright (c) 2018 Alexander Chermyanin +Copyright (c) The Internet Society 1997 +Copyright (c) 2004-2006 Intel Corporation +Copyright (c) 2011-2015 Intel Corporation +Copyright (c) 2013-2017, Milosz Krajewski +Copyright (c) 2016-2017, Matthieu Darbois +Copyright (c) The Internet Society (2003) +Copyright (c) .NET Foundation Contributors +(c) 1995-2024 Jean-loup Gailly and Mark Adler +Copyright (c) 2020 Mara Bos +Copyright (c) .NET Foundation and Contributors +Copyright (c) 2012 - present, Victor Zverovich +Copyright (c) 2006 Jb Evain (jbevain@gmail.com) +Copyright (c) 2008-2020 Advanced Micro Devices, Inc. +Copyright (c) 2019 Microsoft Corporation, Daan Leijen +Copyright (c) 2011 Novell, Inc (http://www.novell.com) +Copyright (c) 2015 Xamarin, Inc (http://www.xamarin.com) +Copyright (c) 2009, 2010, 2013-2016 by the Brotli Authors +Copyright (c) 2014 Ryan Juckett http://www.ryanjuckett.com +Copyright 1995-2024 Jean-loup Gailly and Mark Adler Qkkbal +Copyright (c) 1990- 1993, 1996 Open Software Foundation, Inc. +Portions (c) International Organization for Standardization 1986 +Copyright (c) YEAR W3C(r) (MIT, ERCIM, Keio, Beihang) Disclaimers +Copyright (c) 2015 THL A29 Limited, a Tencent company, and Milo Yip +Copyright (c) 1980, 1986, 1993 The Regents of the University of California +Copyright 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018 The Regents of the University of California +Copyright (c) 1989 by Hewlett-Packard Company, Palo Alto, Ca. & Digital Equipment Corporation, Maynard, Mass + +The MIT License (MIT) + +Copyright (c) .NET Foundation and Contributors + +All rights reserved. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + +--------------------------------------------------------- + +--------------------------------------------------------- + +Microsoft.NETCore.App.Runtime.win-x64 9.0.4 - MIT + + +Copyright (c) 2021 +Copyright (c) Six Labors +(c) Microsoft Corporation +Copyright (c) 2022 FormatJS +Copyright (c) Andrew Arnott +Copyright 2019 LLVM Project +Copyright (c) 1998 Microsoft +Copyright 2018 Daniel Lemire +Copyright (c) .NET Foundation +Copyright 1995-2022 Mark Adler +Copyright 1995-2024 Mark Adler +Copyright (c) 2011, Google Inc. +Copyright (c) 2020 Dan Shechter +(c) 1997-2005 Sean Eron Anderson +Copyright (c) 2015 Andrew Gallant +Copyright (c) 2022, Wojciech Mula +Copyright (c) 2017 Yoshifumi Kawai +Copyright (c) 2022, Geoff Langdale +Copyright (c) 2005-2020 Rich Felker +Copyright (c) 2012-2021 Yann Collet +Copyright (c) Microsoft Corporation +Copyright (c) 2007 James Newton-King +Copyright (c) 1991-2022 Unicode, Inc. +Copyright (c) 2013-2017, Alfred Klomp +Copyright (c) 2018 Nemanja Mijailovic +Copyright 2012 the V8 project authors +Copyright (c) 1999 Lucent Technologies +Copyright (c) 2008-2016, Wojciech Mula +Copyright (c) 2011-2020 Microsoft Corp +Copyright (c) 2015-2017, Wojciech Mula +Copyright (c) 2015-2018, Wojciech Mula +Copyright (c) 2005-2007, Nick Galbreath +Copyright (c) 2015 The Chromium Authors +Copyright (c) 2018 Alexander Chermyanin +Copyright (c) The Internet Society 1997 +Copyright (c) 2004-2006 Intel Corporation +Copyright (c) 2011-2015 Intel Corporation +Copyright (c) 2013-2017, Milosz Krajewski +Copyright (c) 2016-2017, Matthieu Darbois +Copyright (c) The Internet Society (2003) +Copyright (c) .NET Foundation Contributors +(c) 1995-2024 Jean-loup Gailly and Mark Adler +Copyright (c) 2020 Mara Bos +Copyright (c) .NET Foundation and Contributors +Copyright (c) 2012 - present, Victor Zverovich +Copyright (c) 2006 Jb Evain (jbevain@gmail.com) +Copyright (c) 2008-2020 Advanced Micro Devices, Inc. +Copyright (c) 2019 Microsoft Corporation, Daan Leijen +Copyright (c) 2011 Novell, Inc (http://www.novell.com) +Copyright (c) 2015 Xamarin, Inc (http://www.xamarin.com) +Copyright (c) 2009, 2010, 2013-2016 by the Brotli Authors +Copyright (c) 2014 Ryan Juckett http://www.ryanjuckett.com +Copyright 1995-2024 Jean-loup Gailly and Mark Adler Qkkbal +Copyright (c) 1990- 1993, 1996 Open Software Foundation, Inc. +Portions (c) International Organization for Standardization 1986 +Copyright (c) YEAR W3C(r) (MIT, ERCIM, Keio, Beihang) Disclaimers +Copyright (c) 2015 THL A29 Limited, a Tencent company, and Milo Yip +Copyright (c) 1980, 1986, 1993 The Regents of the University of California +Copyright 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018 The Regents of the University of California +Copyright (c) 1989 by Hewlett-Packard Company, Palo Alto, Ca. & Digital Equipment Corporation, Maynard, Mass + +The MIT License (MIT) + +Copyright (c) .NET Foundation and Contributors + +All rights reserved. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + +--------------------------------------------------------- + +--------------------------------------------------------- + +Microsoft.Windows.ImplementationLibrary 1.0.250325.1 - MIT + + +(c) Microsoft 2025 +Copyright (c) Microsoft +(c) Microsoft Corporation +Copyright (c) Microsoft Corporation +Copyright (c) 2009-2014 by the contributors + + MIT License + + Copyright (c) Microsoft Corporation. All rights reserved. + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all + copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + SOFTWARE + + +--------------------------------------------------------- + +--------------------------------------------------------- + +Microsoft.Xaml.Behaviors.WinUI.Managed 3.0.0 - MIT + + +(c) Microsoft Corporation + +MIT License + +Copyright (c) + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +--------------------------------------------------------- + +--------------------------------------------------------- + +microsoft/gsl 0f6dbc9e2915ef5c16830f3fa3565738de2a9230 - MIT + + +Copyright 2008, Google Inc. +Copyright (c) 2015 Microsoft Corporation. + +Copyright (c) 2015 Microsoft Corporation. All rights reserved. + +This code is licensed under the MIT License (MIT). + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +of the Software, and to permit persons to whom the Software is furnished to do +so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + + +--------------------------------------------------------- + +--------------------------------------------------------- + +vswhere 3.1.7 - MIT + + +(c) 2023 GitHub, Inc. +(c) Microsoft Corporation +Copyright (c) by P.J. Plauger +Copyright (c) Microsoft Corporation + +MIT License + +Copyright (c) + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +--------------------------------------------------------- + +--------------------------------------------------------- + +WinUIEx 2.5.1 - MIT + + + +MIT License + +Copyright (c) + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +--------------------------------------------------------- + +--------------------------------------------------------- + +wix 5.0.2 - MS-RL + + +Copyright James Newton-King 2008 +Copyright UpdateUrl DisableModify +Copyright (c) Microsoft Corporation +(c) .NET Foundation and contributors +Copyright James Newton-King 2008 Json.NET +Copyright AssemblyDescription AssemblyProduct +Copyright (c) .NET Foundation and contributors + +Microsoft Reciprocal License (Ms-RL) + +This license governs use of the accompanying software. If you use the software, you accept this license. If you do not accept the license, do not use the software. + + 1. Definitions + + The terms "reproduce," "reproduction," "derivative works," and "distribution" have the same meaning here as under U.S. copyright law. + + A "contribution" is the original software, or any additions or changes to the software. + + A "contributor" is any person that distributes its contribution under this license. + + "Licensed patents" are a contributor's patent claims that read directly on its contribution. + + 2. Grant of Rights + + (A) Copyright Grant- Subject to the terms of this license, including the license conditions and limitations in section 3, each contributor grants you a non-exclusive, worldwide, royalty-free copyright license to reproduce its contribution, prepare derivative works of its contribution, and distribute its contribution or any derivative works that you create. + + (B) Patent Grant- Subject to the terms of this license, including the license conditions and limitations in section 3, each contributor grants you a non-exclusive, worldwide, royalty-free license under its licensed patents to make, have made, use, sell, offer for sale, import, and/or otherwise dispose of its contribution in the software or derivative works of the contribution in the software. + + 3. Conditions and Limitations + + (A) Reciprocal Grants- For any file you distribute that contains code from the software (in source code or binary format), you must provide recipients the source code to that file along with a copy of this license, which license will govern that file. You may license other files that are entirely your own work and do not contain code from the software under any terms you choose. + + (B) No Trademark License- This license does not grant you rights to use any contributors' name, logo, or trademarks. + + (C) If you bring a patent claim against any contributor over patents that you claim are infringed by the software, your patent license from such contributor to the software ends automatically. + + (D) If you distribute any portion of the software, you must retain all copyright, patent, trademark, and attribution notices that are present in the software. + + (E) If you distribute any portion of the software in source code form, you may do so only under this license by including a complete copy of this license with your distribution. If you distribute any portion of the software in compiled or object code form, you may only do so under a license that complies with this license. + + (F) The software is licensed "as-is." You bear the risk of using it. The contributors give no express warranties, guarantees, or conditions. You may have additional consumer rights under your local laws which this license cannot change. To the extent permitted under your local laws, the contributors exclude the implied warranties of merchantability, fitness for a particular purpose and non-infringement. + +--------------------------------------------------------- + diff --git a/README.md b/README.md index 4d9b6e2..4c0f746 100644 --- a/README.md +++ b/README.md @@ -1,72 +1,49 @@ -This repo is for: +# Welcome to the Windows Subsystem for Linux (WSL) repository -- Reporting of issues found within and when using Windows Subsystem for Linux. - Please read [CONTRIBUTING.md](https://github.com/Microsoft/WSL/blob/master/CONTRIBUTING.md) before making an issue submission +

+ WSL logo +

- > Do not open Github issues for Windows crashes (BSODs) or security issues. Please direct all Windows crashes and security issues to secure@microsoft.com. Issues with security vulnerabilities may be edited to hide the vulnerability details. +[Learn more about WSL](https://aka.ms/wsldocs) | [Downloads & Release notes](https://github.com/microsoft/WSL/releases) | [Contributing to WSL](./CONTRIBUTING.md) -- Surrounding discussions about the Windows Subsystem for Linux. +## About -## Reporting issues in Windows Console or WSL text rendering/user experience +Windows Subsystem for Linux (WSL) is a powerful way for you to run your Linux command-line tools, utilities and applications, all unmodified and directly on Windows without the overhead of a traditional virtual machine or dual boot setup. -Note that WSL distro's launch in the Windows Console (unless you have taken steps to launch a 3rd party console/terminal). Therefore, *please file UI/UX related issues in the [Windows Console issue tracker](https://github.com/microsoft/console)*. +You can install WSL right away by running this command inside of your Windows command line: -## Labels: +```powershell +wsl --install +``` -This is your best way to interact directly with the Windows Subsystem for Linux teams. We will be monitoring and responding to issues as best we can. Please attempt to avoid filing duplicates of open or closed items when possible. Issues may be tagged with with the following labels: +You can learn more about [best practices for setup](https://learn.microsoft.com/windows/wsl/setup/environment), [overviews of WSL](https://learn.microsoft.com/windows/wsl/about) and more at our [WSL documentation page](https://learn.microsoft.com/windows/wsl/). -- **bug** – The issue considered to be a bug internally by the dev team. This tag is generally for gaps in implemented (read: intended to be working) WSL behavior. Things marked with **bug** have a corresponding bug in on Microsoft’s internal bug tracking system. Example: "du -h reports wrong file size on DrvFs" [(#1894)](https://github.com/microsoft/WSL/issues/1894) +## Related repositories -- **feature** – Denotes something understood as not working and is not yet implemented. Example: "Cuda can not be installed" [(#327)](https://github.com/microsoft/WSL/issues/327) +WSL also has related open source repositories: -- **fixinbound** / **fixedinNNNN** – The bug or feature request originally submitted has been addressed in whole or in part. Related or ongoing bug or feature gaps should be opened as a new issue submission if one does not already exist. +- [microsoft/WSL2-Linux-Kernel](https://github.com/microsoft/WSL2-Linux-Kernel) - The Linux kernel shipped with WSL +- [microsoft/WSLg](https://github.com/microsoft/wslg) - Support for Linux GUI apps in WSL +- [microsoftdocs/wsl](https://github.com/microsoftdocs/wsl) - WSL documentation at aka.ms/wsldocs -- **duplicate** – The submission is substantially duplicative of an existing issue, and/or has the same underlying cause. +## Contributing -- **need-repro** – The issue submission is missing fields from the issue [template](https://github.com/microsoft/WSL/tree/master/.github/ISSUE_TEMPLATE), cannot be reproduced with the information provided, or is not actionable. +This project welcomes contributions of all types, including coding features / bug fixes, documentation fixes, design proposals and more. -- **discussion** / **question** – Submissions which are not a bug report or feature request. Example: Windows Subsystem for Linux is not open source [(#178)](https://github.com/Microsoft/WSL/issues/178) +We ask that before you start working on a contribution, please read our [Contributor's Guide](./CONTRIBUTING.md). -- **bydesign** / **linux-behavior** – Denotes that an issue that is considered working as intended or would behave analogously on a native Linux kernel. +For guidance on developing for WSL, please read the [developer docs](./doc/docs/dev-loop.md) for instructions on how to build WSL from source and details on its architecture. -- **console** – The submission should be directed to the [console issue tracker](https://github.com/microsoft/console/issues). +## Code of Conduct -- **documentation** – The submission should be directed to the [WSL documentation issue tracker](https://github.com/MicrosoftDocs/WSL). +This project has adopted the [Microsoft Open Source Code of Conduct](./CODE_OF_CONDUCT.md) -- **wsl2** - The issue relates specifically to WSL 2. +## Trademarks -- **fixed-in-wsl2** - The issue could be resolved by switching the distro to use the WSL 2 architecture. +This project may contain trademarks or logos for projects, products, or services. Authorized use of Microsoft trademarks or logos is subject to and must follow [Microsoft’s Trademark & Brand Guidelines](https://www.microsoft.com/legal/intellectualproperty/trademarks). Use of Microsoft trademarks or logos in modified versions of this project must not cause confusion or imply Microsoft sponsorship. Any use of third-party trademarks or logos are subject to those third-party’s policies. -Additional tags may be used to denote specific types of issues. +## Privacy and telemetry -- **9p-linux-file-access** - The issue is related to accessing Linux files from Windows. +The application logs basic diagnostic data (telemetry). For more information on privacy and what we collect, see our [data and privacy documentation](DATA_AND_PRIVACY.md). -## Closing: - -Issues may be closed by the original poster at any time. We will close issues if: -- The issue is not a bug or feature request -- The issue has been addressed -- The issue is a duplicate of another issue -- Discussions or questions that have ran their course - -### Microsoft Links: - -- [Microsoft Docs](https://docs.microsoft.com/en-us/windows/wsl/about) -- [Release Notes](https://docs.microsoft.com/en-us/windows/wsl/release-notes) -- [WSL Blog](https://blogs.msdn.microsoft.com/wsl) (Historical) -- [Command Line Blog](https://blogs.msdn.microsoft.com/commandline/) (Active) - -### Community Links: - -- Stack Overflow: https://stackoverflow.com/questions/tagged/wsl -- Ask Ubuntu: https://askubuntu.com/questions/tagged/wsl -- reddit: https://www.reddit.com/r/bashonubuntuonwindows -- List of programs that work and don't work - - https://github.com/ethanhs/WSL-Programs - - https://github.com/davatron5000/can-i-subsystem-it -- Awesome WSL: https://github.com/sirredbeard/Awesome-WSL -- Tips and guides for new bash users: https://github.com/abergs/ubuntuonwindows - -### Troubleshooting: - -Common troubleshooting issues and solutions are available on our [MSDN documentation](https://msdn.microsoft.com/en-us/commandline/wsl/troubleshooting). +The software may collect information about you and your use of the software and send it to Microsoft. Microsoft may use this information to provide services and improve our products and services. You may turn off the telemetry as described in the repository. There are also some features in the software that may enable you and Microsoft to collect data from users of your applications. If you use these features, you must comply with applicable law, including providing appropriate notices to users of your applications together with a copy of Microsoft’s privacy statement. Our privacy statement is located at https://go.microsoft.com/fwlink/?LinkID=824704. You can learn more about data collection and use in the help documentation and our privacy statement. Your use of the software operates as your consent to these practices. \ No newline at end of file diff --git a/SECURITY.md b/SECURITY.md index 869fdfe..132691a 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -38,4 +38,4 @@ We prefer all communications to be in English. Microsoft follows the principle of [Coordinated Vulnerability Disclosure](https://aka.ms/opensource/security/cvd). - + \ No newline at end of file diff --git a/SUPPORT.md b/SUPPORT.md new file mode 100644 index 0000000..bca2be3 --- /dev/null +++ b/SUPPORT.md @@ -0,0 +1,17 @@ +# Support + +## How to file issues and get help + +This project uses [GitHub Issues][gh-issue] to [track bugs][gh-bug] and [feature requests][gh-feature]. Please search the existing issues before filing new issues to avoid duplicates. For new issues, file your bug or +feature request as a new Issue. + +For general information on the Windows Subsystem for Linux, including help, tutorials, how-tos and reference guides, please view our [WSL documentation](https://docs.microsoft.com/windows/wsl/). + +## Microsoft Support Policy + +Technical Support for the use of WSL may also be available from Microsoft’s Customer Support Services (CSS). If you are a Premier or Unified Support customer, you may reach out to your account manager for further assistance. Otherwise, you may visit Microsoft’s [Support For Business site](https://support.serviceshub.microsoft.com/supportforbusiness/create) to [open a new support case for WSL](https://support.serviceshub.microsoft.com/supportforbusiness/create?sapid=9d5af292-506b-63ca-cb2c-7f4eaa380c56). + + +[gh-issue]: https://github.com/microsoft/WSL/issues/new/choose +[gh-bug]: https://github.com/microsoft/WSL/issues/new?assignees=&labels=&template=bug_report.md&title= +[gh-feature]: https://github.com/microsoft/WSL/issues/new?assignees=&labels=feature&template=feature_request.md&title= \ No newline at end of file diff --git a/UserConfig.cmake.sample b/UserConfig.cmake.sample new file mode 100644 index 0000000..540834f --- /dev/null +++ b/UserConfig.cmake.sample @@ -0,0 +1,36 @@ +# Sample user configuration + +message(STATUS "Loading user configuration") + +# # Uncomment to enable development packages (smaller, faster to install) +# # Note: system.vhd fails to mount if symlink / hardlink, so COPY is needed. +# set(WSL_DEV_BINARY_PATH "C:/wsldev") +# file(MAKE_DIRECTORY ${WSL_DEV_BINARY_PATH}) +# file(CREATE_LINK "${KERNEL_SOURCE_DIR}/bin/${TARGET_PLATFORM}/kernel" "${WSL_DEV_BINARY_PATH}/kernel" SYMBOLIC) +# file(COPY_FILE "${WSLG_SOURCE_DIR}/${TARGET_PLATFORM}/system.vhd" "${WSL_DEV_BINARY_PATH}/system.vhd" ONLY_IF_DIFFERENT) +# file(COPY_FILE "${KERNEL_SOURCE_DIR}/bin/${TARGET_PLATFORM}/modules.vhd" "${WSL_DEV_BINARY_PATH}/modules.vhd" ONLY_IF_DIFFERENT) +# file(CREATE_LINK "${MSRDC_SOURCE_DIR}/${TARGET_PLATFORM}/msrdc.exe" "${WSL_DEV_BINARY_PATH}/msrdc.exe" SYMBOLIC) +# file(CREATE_LINK "${WSLG_SOURCE_DIR}/wslg.rdp" "${WSL_DEV_BINARY_PATH}/wslg.rdp" SYMBOLIC) +# file(CREATE_LINK "${WSLG_SOURCE_DIR}/wslg_desktop.rdp" "${WSL_DEV_BINARY_PATH}/wslg_desktop.rdp" SYMBOLIC) +# file(CREATE_LINK "${MSRDC_SOURCE_DIR}/${TARGET_PLATFORM}/rdclientax.dll" "${WSL_DEV_BINARY_PATH}/rdclientax.dll" SYMBOLIC) +# file(CREATE_LINK "${MSRDC_SOURCE_DIR}/${TARGET_PLATFORM}/rdpnanoTransport.dll" "${WSL_DEV_BINARY_PATH}/rdpnanoTransport.dll" SYMBOLIC) +# file(CREATE_LINK "${MSRDC_SOURCE_DIR}/${TARGET_PLATFORM}/RdpWinStlHelper.dll" "${WSL_DEV_BINARY_PATH}/RdpWinStlHelper.dll" SYMBOLIC) +# file(CREATE_LINK "${MSAL_SOURCE_DIR}/${TARGET_PLATFORM}/msal.wsl.proxy.exe" "${WSL_DEV_BINARY_PATH}/msal.wsl.proxy.exe" SYMBOLIC) +# file(CREATE_LINK "${BIN}/wsldevicehost.dll" "${WSL_DEV_BINARY_PATH}/wsldevicehost.exe" SYMBOLIC) +# file(CREATE_LINK "${DIRECT3D_SOURCE_DIR}/lib/${TARGET_PLATFORM}" "${WSL_DEV_BINARY_PATH}/lib" SYMBOLIC) + +# foreach(LANG ${SUPPORTED_LANGS}) +# file(CREATE_LINK "${MSRDC_SOURCE_DIR}/${TARGET_PLATFORM}/${LANG}" "${WSL_DEV_BINARY_PATH}/${LANG}" SYMBOLIC) +# endforeach() + +# # Uncomment to skip building, packaging and installing wslsettings +# set(WSL_BUILD_WSL_SETTINGS false) + +# # Uncomment to generate a "thin" MSI package which builds and installs faster +# set(WSL_BUILD_THIN_PACKAGE true) + +# # Uncomment to install the package as part of the build +# set(WSL_POST_BUILD_COMMAND "powershell;./tools/deploy/deploy-to-host.ps1") + +# # Uncomment to reduce the verbosity of the appx package build +# set(WSL_SILENT_APPX_BUILD true) \ No newline at end of file diff --git a/cgmanifest.json b/cgmanifest.json new file mode 100644 index 0000000..2911f56 --- /dev/null +++ b/cgmanifest.json @@ -0,0 +1,35 @@ +{ + "version": 1, + "$schema": "https://json.schemastore.org/component-detection-manifest.json", + "registrations": [ + { + "component": { + "type": "git", + "git": { + "repositoryUrl": "https://github.com/microsoft/GSL", + "commitHash": "0f6dbc9e2915ef5c16830f3fa3565738de2a9230" + } + } + }, + { + "component": { + "type": "git", + "git": { + "repositoryUrl": "https://github.com/llvm/llvm-project", + "commitHash": "d32170dbd5b0d54436537b6b75beaf44324e0c28" + } + } + }, + { + "component": { + "type": "other", + "other": { + "name": "libarchive", + "version": "3.7.7", + "downloadUrl": "https://github.com/libarchive/libarchive/releases/download/v3.7.7/libarchive-3.7.7.tar.gz", + "hash": "sha1:918692098b11db61aff23684ab04f375e4a68f69" + } + } + } + ] +} \ No newline at end of file diff --git a/cloudtest/CMakeLists.txt b/cloudtest/CMakeLists.txt new file mode 100644 index 0000000..da072d0 --- /dev/null +++ b/cloudtest/CMakeLists.txt @@ -0,0 +1,39 @@ +set(OUT ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/cloudtest) +file(MAKE_DIRECTORY ${OUT}) + +if (${TARGET_PLATFORM} STREQUAL x64) + set(CLOUDTEST_IMAGES + "wsl-test-image-rs_prerelease-2025-01-30" + "wsl-test-image-win11-23h2-ent-2024-11-18" + "wsl-test-image-2022-datacenter-g2-2024-09-10" + "wsl-test-image-win10-22h2-ent-g2-2024-09-10") + + + set(CLOUDTEST_TEST_PACKAGES "Test_Packages_2024_02_27") + set(DUMPTOOL_DROP "DumpTool_X64_2025-01-27") +elseif (${TARGET_PLATFORM} STREQUAL arm64) + set(CLOUDTEST_IMAGES) +else() + message(FATAL_ERROR "Unsupported target platform: ${TARGET_PLATFORM}") +endif() + +# Passed down to test-setup.ps1 to determine if -AllowUnsigned should be passed to Add-AppxPackage +if (OFFICIAL_BUILD) + set(ALLOW_UNSIGNED_PACKAGE "0") +else() + set(ALLOW_UNSIGNED_PACKAGE "1") +endif() + +function(add_test_group image version) + set(DIR ${OUT}/${image}-wsl${version}) + + file(MAKE_DIRECTORY ${DIR}) + + configure_file(${CMAKE_CURRENT_SOURCE_DIR}/TestMap.xml.in ${DIR}/TestMap.xml) + configure_file(${CMAKE_CURRENT_SOURCE_DIR}/TestGroup.xml.in ${DIR}/TestGroup.xml) +endfunction() + +foreach(image ${CLOUDTEST_IMAGES}) + add_test_group("${image}" "1") + add_test_group("${image}" "2") +endforeach() diff --git a/cloudtest/TestGroup.xml.in b/cloudtest/TestGroup.xml.in new file mode 100644 index 0000000..7b2f093 --- /dev/null +++ b/cloudtest/TestGroup.xml.in @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + +