DynamoRIO / DynamoRIO/dynamorio
Simplify packaging of DynamoRIO
- Dominant language
- C
- Stars
- 3.2k
- Forks
- 629
- Avg merge
- 2d 15h
- Merged PRs (30d)
- 31
Description
**Add a pointer to any prior users list discussion.**
This issue is a follow up of the discussion started in #5152.
**Is your feature request related to a problem? Please describe.**
Currently, packaging of DynamoRIO for OS distributions like Debian is not possible (without patches) due to a list of incompatibilities. The following list should help to keep track of the current status and changes that will be required.
**Describe the solution you'd like**
The following aspects should be changed:
- CMake
- [x] Add support for install-relocation via DESTDIR env variable #5152
- [ ] libdynamorio-dev: Make CMake scripts of DynamoRIO work with system install paths
- [ ] libdynamorio-dev: Make export targets relocatable (make LIBDIR / BINDIR configurable via cache variable)
- drrun
- [x] rework injection logic to support other directory structures as well (e.g. `/usr/lib//dynamorio.so`, config in `/etc/dynamorio`, etc...)
- #5548
- #5443
- [ ] Find installed dynamorio tools / clients via conf.d style integration (each new client drops a file in `/etc/dynamorio/tools.d/`). This makes it possible for third-party tools that are packaged as well to easily integrate into DR.
- Libraries
- [x] Check if the `libdynamorio.so` needs the execution bit or if there are other strategies. Installing a library with execution bit set is discouraged or even forbidden for some distros. (It is required!)
- [ ] Add SO version, describing ABI compatibility
- [x] Do not rely on checked-in binaries (like elftc). These should always be built from the sources (e.g. via externalProject). Xref #4422
- [x] fix build errors around dwarf2 when building in chroot Xref https://github.com/DynamoRIO/dynamorio/issues/5153#issuecomment-1573528227
**Describe alternatives you've considered**
It is possible to work around some limitations (like expected directory layout of drrun) by using wrappers and ignoring checks. However, this is neither a clean solution, nor sustainable.
**Additional context**
- Debian policies: https://www.debian.org/doc/debian-policy/index.html
- Debian guide ["How do I add a new package to the archive?"](https://wiki.debian.org/DebianMentorsFaq#How_do_I_add_a_new_package_to_the_archive.3F)
- please note, I'm not a Debian "sponsor", so I cannot integrate that directly
Contributor guide
Assessment
This issue has not been assessed yet.