diff --git a/.github/workflows/install-dependencies/action.yml b/.github/workflows/install-dependencies/action.yml index 10552af919..df05f3bdea 100644 --- a/.github/workflows/install-dependencies/action.yml +++ b/.github/workflows/install-dependencies/action.yml @@ -1,78 +1,89 @@ --- -name: Install Dependencies -description: Ensures an action has the appropiate non .NET dependencies installed - -inputs: - rust: - description: 'Install rust toolchain ("true" or "false")' - required: false - default: "false" - azure: - description: 'Install azure functions tool chain ("true" or "false")' - required: false - default: "false" - tc-cloud: - description: 'Bootstrap TestContainers Cloud (TOKEN or "false")' - required: false - default: "false" - -runs: - using: "composite" - steps: - # RUST - - name: Rustup - if: "${{ inputs.rust == 'true' }}" - shell: bash - run: rustup default 1.69.0 - - # - name: Cargo make - # if: "${{ inputs.rust == 'true' }}" - # shell: bash - # run: cargo install --force cargo-make - - - name: Install cargo-make using cache - if: "${{ inputs.rust == 'true' }}" - uses: baptiste0928/cargo-install@v3 - with: - crate: cargo-make - version: "^0.36.8" - - - uses: Swatinem/rust-cache@v2 - if: "${{ inputs.rust == 'true' }}" - with: - cache-targets: "false" - cache-all-crates: "true" - + name: Install Dependencies + description: Ensures an action has the appropiate non .NET dependencies installed + + inputs: + rust: + description: 'Install rust toolchain ("true" or "false")' + required: false + default: "false" + azure: + description: 'Install azure functions tool chain ("true" or "false")' + required: false + default: "false" + tc-cloud: + description: 'Bootstrap TestContainers Cloud (TOKEN or "false")' + required: false + default: "false" - # AZURE - - name: 'Linux: Azure functions core tools' - if: "${{ inputs.azure == 'true' && runner.os == 'Linux' }}" - shell: bash - run: | - wget -q https://packages.microsoft.com/config/ubuntu/20.04/packages-microsoft-prod.deb - sudo dpkg -i packages-microsoft-prod.deb - sudo apt-get update - sudo apt-get install azure-functions-core-tools-4 + runs: + using: "composite" + steps: + # ZIG + - name: Zig + if: "${{ inputs.rust == 'true' && runner.os == 'Linux' }}" + shell: bash + run: sudo snap install zig --beta --classic + + # RUST + - name: Rustup + if: "${{ inputs.rust == 'true' }}" + shell: bash + run: rustup default 1.79.0 + + # - name: Cargo make + # if: "${{ inputs.rust == 'true' }}" + # shell: bash + # run: cargo install --force cargo-make + + - name: Install cargo-make using cache + if: "${{ inputs.rust == 'true' }}" + uses: baptiste0928/cargo-install@v3 + with: + crate: cargo-make + version: "^0.36.8" + + - name: Install cargo zigbuild + if: "${{ inputs.rust == 'true' && runner.os == 'Linux' }}" + shell: bash + run: cargo install --force cargo-zigbuild + + - uses: Swatinem/rust-cache@v2 + if: "${{ inputs.rust == 'true' }}" + with: + cache-targets: "false" + cache-all-crates: "true" + + # AZURE + - name: 'Linux: Azure functions core tools' + if: "${{ inputs.azure == 'true' && runner.os == 'Linux' }}" + shell: bash + run: | + wget -q https://packages.microsoft.com/config/ubuntu/20.04/packages-microsoft-prod.deb + sudo dpkg -i packages-microsoft-prod.deb + sudo apt-get update + sudo apt-get install azure-functions-core-tools-4 + + - name: 'Windows: Azure functions core tools' + if: "${{ inputs.azure == 'true' && runner.os == 'Windows' }}" + shell: cmd + run: choco install azure-functions-core-tools -y --no-progress -r --version 4.0.4829 - - name: 'Windows: Azure functions core tools' - if: "${{ inputs.azure == 'true' && runner.os == 'Windows' }}" - shell: cmd - run: choco install azure-functions-core-tools -y --no-progress -r --version 4.0.4829 - - # TEST CONTAINERS CLOUD - # If no PR event or if a PR event that's caused by a non-fork and non dependabot actor - - name: Setup TestContainers Cloud Client - if: | - inputs.tc-cloud != 'false' - && (github.event_name != 'pull_request' - || (github.event_name == 'pull_request' - && github.event.pull_request.head.repo.fork == false - && github.actor != 'dependabot[bot]' - ) - ) - uses: atomicjar/testcontainers-cloud-setup-action@c335bdbb570ec7c48f72c7d450c077f0a002293e # v1.3.0 - with: - token: ${{ inputs.tc-cloud }} - - - + # TEST CONTAINERS CLOUD + # If no PR event or if a PR event that's caused by a non-fork and non dependabot actor + - name: Setup TestContainers Cloud Client + if: | + inputs.tc-cloud != 'false' + && (github.event_name != 'pull_request' + || (github.event_name == 'pull_request' + && github.event.pull_request.head.repo.fork == false + && github.actor != 'dependabot[bot]' + ) + ) + uses: atomicjar/testcontainers-cloud-setup-action@c335bdbb570ec7c48f72c7d450c077f0a002293e # v1.3.0 + with: + token: ${{ inputs.tc-cloud }} + + + + \ No newline at end of file diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index b3a24839d4..ce9e9c06c2 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -15,18 +15,22 @@ feedback and ideas are always welcome. ### .NET source In order to build the .NET source code, you'll need - * [.NET 6.0 or later](https://dotnet.microsoft.com/download/dotnet/6.0) + * [.NET 8.0 or later](https://dotnet.microsoft.com/download/dotnet/8.0) * **If** you're running on Windows **and** also wish to build projects that target .NET Framework, -you'll need a minimum of .NET Framework 4.6.1 installed. +you'll need a minimum of .NET Framework 4.6.2 installed. You can use any IDE that supports .NET development, and you can use any OS that is supported by .NET. ### Rust source -In order to build the CLR profiler source code, you'll need - * [Rust 1.54 or later](https://www.rust-lang.org/tools/install) +In order to build the CLR profiler source code, you'll need: + * [Rust 1.79 or later](https://www.rust-lang.org/tools/install) * [Cargo make](https://github.com/sagiegurari/cargo-make#installation) + On Linux, you will also require: + * [Cargo zigbuild](https://github.com/rust-cross/cargo-zigbuild) + * [Zig](https://github.com/ziglang/zig) + You can use any IDE that supports Rust development; we typically use [CLion](https://www.jetbrains.com/clion/) with the [Rust plugin](https://plugins.jetbrains.com/plugin/8182-rust/docs), or [VS Code](https://code.visualstudio.com/) diff --git a/Makefile.toml b/Makefile.toml index 20bcfe1ae5..1a86393645 100644 --- a/Makefile.toml +++ b/Makefile.toml @@ -35,6 +35,14 @@ description = "Builds CLR Profiler for release" # loader assembly is embedded in the profiler dependencies = ["build-loader"] +[tasks.build-release-linux] +description = "Builds CLR Profiler for release against a known version of glibc" +install_crate = false +toolchain = "${CARGO_MAKE_RUST_DEFAULT_TOOLCHAIN}" +args = ["zigbuild", "--release", "--target", "x86_64-unknown-linux-gnu.2.14", "@@split(CARGO_MAKE_CARGO_BUILD_TEST_FLAGS, )"] +# loader assembly is embedded in the profiler +dependencies = ["build-loader"] + [tasks.build-integrations] description = "Builds Managed Profiler .NET integrations" command = "dotnet" @@ -83,7 +91,7 @@ cargo expand --manifest-path src/profiler/elastic_apm_profiler/Cargo.toml --colo [tasks.set-profiler-env] private = true -env = { "CORECLR_PROFILER_PATH" = "${CARGO_MAKE_WORKING_DIRECTORY}/target/release/libelastic_apm_profiler.so" } +env = { "CORECLR_PROFILER_PATH" = "${CARGO_MAKE_WORKING_DIRECTORY}/target/x86_64-unknown-linux-gnu/release/release/libelastic_apm_profiler.so" } [tasks.set-profiler-env.mac] env = { "CORECLR_PROFILER_PATH" = "${CARGO_MAKE_WORKING_DIRECTORY}/target/release/libelastic_apm_profiler.dylib" } diff --git a/build/scripts/Build.fs b/build/scripts/Build.fs index 58af804bfa..e6f9954fb8 100644 --- a/build/scripts/Build.fs +++ b/build/scripts/Build.fs @@ -186,20 +186,20 @@ module Build = @ ["--"; "RunConfiguration.CollectSourceInformation=true"] DotNet.ExecWithTimeout command (TimeSpan.FromMinutes 30) - - + /// Builds the CLR profiler and supporting .NET managed assemblies let BuildProfiler () = dotnet "build" (Paths.ProfilerProjFile "Elastic.Apm.Profiler.Managed") - Cargo.Exec [ "make"; "build-release"; "--disable-check-for-update"] - + if isWindows then Cargo.Exec [ "make"; "build-release"; "--disable-check-for-update"] + else Cargo.Exec [ "make"; "build-release-linux"; "--disable-check-for-update"] + /// Publishes all projects with framework versions - let Publish targets = + let Publish targets = let projs = match targets with | Some t -> t | None -> allSrcProjects - + projs |> Seq.map getAllTargetFrameworks |> Seq.iter (fun (proj, frameworks) -> @@ -290,7 +290,6 @@ module Build = // include version in the zip file name ZipFile.CreateFromDirectory(agentDir.FullName, Paths.BuildOutput versionedName + ".zip") - let ProfilerIntegrations () = DotNet.Exec ["run"; "--project"; Paths.ProfilerProjFile "Elastic.Apm.Profiler.IntegrationsGenerator"; "--" "-i"; Paths.SrcProfiler "Elastic.Apm.Profiler.Managed/bin/Release/netstandard2.0/Elastic.Apm.Profiler.Managed.dll" @@ -299,20 +298,25 @@ module Build = /// Creates versioned elastic_apm_profiler.zip file containing all components needed for profiler auto-instrumentation let ProfilerZip () = let name = "elastic_apm_profiler" + let directory = Paths.BuildOutput name + + if Directory.Exists(directory) then + Directory.Delete(directory, true) + let currentAssemblyVersion = Versioning.CurrentVersion.FileVersion let versionedName = let os = if RuntimeInformation.IsOSPlatform(OSPlatform.Windows) then "win-x64" - else "linux-x64" + else "linux-x64" sprintf "%s_%s-%s" name (currentAssemblyVersion.ToString()) os - let profilerDir = Paths.BuildOutput name |> DirectoryInfo + let profilerDir = directory |> DirectoryInfo profilerDir.Create() - + seq { Paths.SrcProfiler "Elastic.Apm.Profiler.Managed/integrations.yml" "target/release/elastic_apm_profiler.dll" - "target/release/libelastic_apm_profiler.so" + "target/x86_64-unknown-linux-gnu/release/libelastic_apm_profiler.so" Paths.SrcProfiler "elastic_apm_profiler/NOTICE" Paths.SrcProfiler "elastic_apm_profiler/README" "LICENSE" @@ -321,12 +325,13 @@ module Build = |> Seq.filter (fun file -> file.Exists) |> Seq.iter (fun file -> let destination = Path.combine profilerDir.FullName file.Name - let newFile = file.CopyTo(destination, true) + let newFile = file.CopyTo(destination, true) if newFile.Name = "README" then File.applyReplace (fun s -> s.Replace("${VERSION}", sprintf "%i.%i" currentAssemblyVersion.Major currentAssemblyVersion.Minor)) newFile.FullName ) - + Directory.GetDirectories((Paths.BuildOutput "Elastic.Apm.Profiler.Managed"), "*", SearchOption.TopDirectoryOnly) + |> Array.filter (fun dir -> isWindows || not (dir.EndsWith("net462"))) |> Seq.map DirectoryInfo |> Seq.iter (fun sourceDir -> copyDllsAndPdbs (profilerDir.CreateSubdirectory(sourceDir.Name)) sourceDir) @@ -335,8 +340,4 @@ module Build = if File.exists zip then printf $"%s{zip} already exists on disk" File.delete zip - ZipFile.CreateFromDirectory(profilerDir.FullName, zip) - - - - \ No newline at end of file + ZipFile.CreateFromDirectory(profilerDir.FullName, zip) \ No newline at end of file diff --git a/docs/setup-auto-instrumentation.asciidoc b/docs/setup-auto-instrumentation.asciidoc index ca5e49b77e..8ddb05955b 100644 --- a/docs/setup-auto-instrumentation.asciidoc +++ b/docs/setup-auto-instrumentation.asciidoc @@ -16,7 +16,7 @@ This approach works with the following |=== | 2.+^|**Operating system** -|**Architecture** |**Windows** |**Linux** +|**Architecture** |**Windows** |**Linux** ** |x64 @@ -33,7 +33,11 @@ This approach works with the following _* Due to binding issues introduced by Microsoft, we recommend at least .NET Framework 4.7.2 for best compatibility._ -NOTE: The Profiler based agent only supports 64-bit applications. 32-bit applications aren't supported. +_** Minimum GLIBC version 2.14._ + +NOTE: The profiler-based agent only supports 64-bit applications. 32-bit applications aren't supported. + +NOTE: The profiler-based agent does not current support ARM. It instruments the following assemblies: diff --git a/src/instrumentations/Elastic.Apm.MongoDb/LICENSE b/src/instrumentations/Elastic.Apm.MongoDb/LICENSE index ad5f27ac60..950d224c10 100644 --- a/src/instrumentations/Elastic.Apm.MongoDb/LICENSE +++ b/src/instrumentations/Elastic.Apm.MongoDb/LICENSE @@ -1,208 +1,208 @@ -Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright 2018 Elasticsearch BV - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - -========== -Elastic.Apm.MongoDb ----------- - -The code for Elastic.Apm.MongoDb is based on the elastic-apm-mongo project by Vadim Hatsura (@vhatsura), -licensed under the Apache 2.0 License. https://github.com/vhatsura/elastic-apm-mongo +Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2018 Elasticsearch BV + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + +========== +Elastic.Apm.MongoDb +---------- + +The code for Elastic.Apm.MongoDb is based on the elastic-apm-mongo project by Vadim Hatsura (@vhatsura), +licensed under the Apache 2.0 License. https://github.com/vhatsura/elastic-apm-mongo diff --git a/src/profiler/elastic_apm_profiler/Cargo.toml b/src/profiler/elastic_apm_profiler/Cargo.toml index 61c594288d..b5e1e8551e 100644 --- a/src/profiler/elastic_apm_profiler/Cargo.toml +++ b/src/profiler/elastic_apm_profiler/Cargo.toml @@ -14,7 +14,7 @@ c_vec = "2.0.0" com = { version = "0.6.0", features = ["production"] } hex = "0.4.3" log = "0.4.14" -log4rs = { version = "1.0.0", default_features = false, features = ["console_appender", "rolling_file_appender", "compound_policy", "size_trigger", "fixed_window_roller"] } +log4rs = { version = "1.0.0", default-features = false, features = ["console_appender", "rolling_file_appender", "compound_policy", "size_trigger", "fixed_window_roller"] } num-derive = "0.3" num-traits = "0.2" once_cell = "1.8.0" diff --git a/test/profiler/Elastic.Apm.Profiler.Managed.Tests/ProfiledApplication.cs b/test/profiler/Elastic.Apm.Profiler.Managed.Tests/ProfiledApplication.cs index 274ed38586..354fecad57 100644 --- a/test/profiler/Elastic.Apm.Profiler.Managed.Tests/ProfiledApplication.cs +++ b/test/profiler/Elastic.Apm.Profiler.Managed.Tests/ProfiledApplication.cs @@ -55,7 +55,9 @@ protected ProfiledApplication(string projectName, params string[] folders) else profilerFile = "libelastic_apm_profiler.dylib"; - _profilerPath = Path.Combine(SolutionPaths.Root, "target", "release", profilerFile); + _profilerPath = TestEnvironment.IsLinux ? + Path.Combine(SolutionPaths.Root, "target", "x86_64-unknown-linux-gnu/release", "release", profilerFile) : + Path.Combine(SolutionPaths.Root, "target", "release", profilerFile); if (!File.Exists(_profilerPath)) {