Skip to main content

A catch-all compile-tool wrapper

Project description

canker

CI

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, and AS.
  • 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_PRELOAD to capture every exec in 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).

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

canker-0.0.12.tar.gz (17.3 kB view details)

Uploaded Source

File details

Details for the file canker-0.0.12.tar.gz.

File metadata

  • Download URL: canker-0.0.12.tar.gz
  • Upload date:
  • Size: 17.3 kB
  • Tags: Source
  • Uploaded using 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

File hashes

Hashes for canker-0.0.12.tar.gz
Algorithm Hash digest
SHA256 30af4874dfbf72fd755d44fe28cafb3b70bd2a80db490b43cbf6a6bfa69f2460
MD5 bb9ffdadea87d12a3737e4a9f0d56847
BLAKE2b-256 f3a37ebf402216845b8309e3fc8c57142908976e95009048b14202328373cdb3

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page