Skip to main content

Fast first-time builds for charmcraft

Project description

charmcraftcache

Reinventing the wheel

Fast first-time builds for charmcraft—on a local machine or CI

Installation

Install pipx: https://pipx.pypa.io/stable/installation/

pipx install charmcraftcache

Usage

ccc add
ccc pack

For best results, add charm-strict-dependencies: true to your charmcraft.yaml.

How it works

Why are charmcraft builds slow?

Instead of downloading wheels from PyPI (which pip does by default), charmcraft builds Python package wheels from source (i.e. with pip install --no-binary).

Caching mechanism

charmcraft builds each charm base in a separate LXC container[^1]. Within each container, pip has an internal cache for wheels built from source & for HTTP responses.

charmcraft 2.5 moved the pip internal cache to the LXC host machine, so that one pip cache is used for all LXC containers. (This increases the chance of a cache hit—a faster build.)

However, charmcraft builds are still slow the first time the wheel is built. This happens on CI runners, when you update dependencies, use a new machine/VM, or contribute to a new charm.

charmcraftcache solves the slow first build.

charmcraftcache-hub maintains a list of charms. For each charm, every Python dependency is built from source & uploaded to a GitHub release.

ccc pack downloads these pre-built wheels to charmcraft's pip cache (and then runs charmcraft pack).

Isn't this just a worse version of PyPI?

Pretty much. The only difference is charmcraftcache-hub wheels are built from source on our runners, instead of built by the package maintainer.

[^1]: Unless --destructive-mode is enabled

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

charmcraftcache-0.3.6.tar.gz (11.4 kB view details)

Uploaded Source

Built Distribution

charmcraftcache-0.3.6-py3-none-any.whl (12.6 kB view details)

Uploaded Python 3

File details

Details for the file charmcraftcache-0.3.6.tar.gz.

File metadata

  • Download URL: charmcraftcache-0.3.6.tar.gz
  • Upload date:
  • Size: 11.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.1.1 CPython/3.12.5

File hashes

Hashes for charmcraftcache-0.3.6.tar.gz
Algorithm Hash digest
SHA256 a40e9cf9b4061a8248db4058ba882364ed724c25fcd18869f6d3f90d843c410a
MD5 906f860723d0f8ded9fb36aa4346bd1e
BLAKE2b-256 63ea55bf411fa8ac071ab1e3633f51f2414c0d41a8fad16b5cfaa3d88179ca75

See more details on using hashes here.

File details

Details for the file charmcraftcache-0.3.6-py3-none-any.whl.

File metadata

File hashes

Hashes for charmcraftcache-0.3.6-py3-none-any.whl
Algorithm Hash digest
SHA256 6d80dcf0bd51e5d63335e8ba2c7a93d9e34f7ed5f0ce6d6da83eb499c7716e85
MD5 0c64908cf88f227d8d37409c91a55aa3
BLAKE2b-256 9430afa7ffbe1ee87ef8e10cdab8e9a9ea5c9b8ee526258a6fcb7573798c9a9e

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