This project has been archived by its maintainers, and is no longer receiving any updates.
canker
canker is a catch-all compile tool wrapper.
Usage
$ pip3 install canker
$ eval $(canker-env --guess-wrapped)
$ export CANKER_ACTIONS="Record"
$ export CANKER_ACTION_RECORD="output=/tmp/demo.jsonl"
$ cd /your/project && make
$ cat /tmp/demo.jsonl
Goals
- Wrapping
CC,CXX,CPP,LD, andAS. - Providing a visitor-style API for each of the above, pre- and post-execution.
- Providing a nice set of default actions.
- Being as non-invasive as possible.
Anti-goals
- Using
LD_PRELOADto capture everyexecin a build system, a la Bear. - Supporting
cl.exe. - Detailed support for non C/C++ languages.
Contributing a new action
New canker actions are easy to write. For example, the following prints a message before every ld
invocation:
# src/canker/actions/printld.py
from canker.action import LDAction
class PrintLD(LDAction):
def before_run(self, tool):
print(f"ld was run with: {tool.args}")
# src/canker/actions/__init__.py
# bring PrintLD into canker.actions so that `CANKER_ACTIONS` can find it
from printld import PrintLD # noqa: F401
$ eval $(canker-env --guess-wrapped)
$ export CANKER_ACTIONS="PrintLD"
$ make
Check out canker's API documentation for more details, including the kinds of available actions.
The name?
My phone autocorrected "CMake" to "canker" once.
Canker is cognate with cancer, which is appropriate for both build systems and tools that instrument build systems (like canker does).
Metadata
Release files for canker 0.0.12
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| canker-0.0.12.tar.gz | 17.3 kB | Without provenance | Details for canker-0.0.12.tar.gz |
Release files / canker-0.0.12.tar.gz
| Download URL | canker-0.0.12.tar.gz |
|---|---|
| Size | 17.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
30af4874dfbf72fd755d44fe28cafb3b70bd2a80db490b43cbf6a6bfa69f2460
|
|
BLAKE2b-256 checksum How to use checksums |
f3a37ebf402216845b8309e3fc8c57142908976e95009048b14202328373cdb3
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/49.2.0 requests-toolbelt/0.9.1 tqdm/4.48.0 CPython/3.8.5
|
Security for canker 0.0.12
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.