You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Update IAST propagation:
- IAST compliance: rename "Input info" to "Source."
- Migrate Source to CPP.
- Add new dependencies to the setup: CMake. We need these dependencies
to build IAST binary.
- Update the setup to use IAST CMakeList file.
- Vendorize [pybind11](https://pybind11.readthedocs.io/en/stable/).
This PR is part of a bigger one:
#6283
## Migrate Source to CPP
We're working in parallel to migrate all IAST code to CPP. That's why
this PR changed many things to work with C++. We migrate Source first to
validate C++ is working, and the main features come later.
## Update setup
Extend the `build_ext` command to build C++ binaries with CMake
following the [pybind11 recommendations](https://github.com/pybind/).
## Pybind11
We vendorize pybind11 to fix the build wheel files. Why do we use this
approach?
- If we add pybind11 as a dependency, we need to find the Python binary
in our CMakeList file. With that, the Macos ARM wheel build fails
because CMake found the wrong Python version:
```
ld: warning: ignoring file
/Library/Frameworks/Python.framework/Versions/3.8/lib/libpython3.8.dylib,
building for macOS-arm64
but attempting to link with a file built for macOS-x86_64
```
- Our first approach was to add pybind11 in `ddtrace/vendor` and link it
in `ddtrace/appsec/iast`, but it raised problems with Windows and
Alpine.
- Our second approach was to add it as a git submodule, but this change
forced us to update all CI steps. If we want to install ddtrace with
`pip install git@github...`, it raises errors with submodules.
## Checklist
- [x] Change(s) are motivated and described in the PR description.
- [x] Testing strategy is described if automated tests are not included
in the PR.
- [x] Risk is outlined (performance impact, potential for breakage,
maintainability, etc).
- [x] Change is maintainable (easy to change, telemetry, documentation).
- [x] [Library release note
guidelines](https://ddtrace.readthedocs.io/en/stable/contributing.html#Release-Note-Guidelines)
are followed.
- [x] Documentation is included (in-code, generated user docs, [public
corp docs](https://github.com/DataDog/documentation/)).
- [x] Backport labels are set (if
[applicable](../docs/contributing.rst#release-branch-maintenance))
## Reviewer Checklist
- [x] Title is accurate.
- [x] No unnecessary changes are introduced.
- [x] Description motivates each change.
- [x] Avoids breaking
[API](https://ddtrace.readthedocs.io/en/stable/versioning.html#interfaces)
changes unless absolutely necessary.
- [x] Testing strategy adequately addresses listed risk(s).
- [x] Change is maintainable (easy to change, telemetry, documentation).
- [x] Release note makes sense to a user of the library.
- [x] Reviewer has explicitly acknowledged and discussed the performance
implications of this PR as reported in the benchmarks PR comment.
- [x] Backport labels are set in a manner that is consistent with the
[release branch maintenance
policy](../docs/contributing.rst#release-branch-maintenance)
---------
Co-authored-by: Federico Mon <[email protected]>
Co-authored-by: Gabriele N. Tornetta <[email protected]>
Co-authored-by: Juanjo Alvarez Martinez <[email protected]>
0 commit comments