The Global Cache

elba uses an internal global cache to store downloaded packages, build packages in a temporary clean directory, and store built packages for future re-use. The structure of the global cache looks like the following:

this directory is platform specific:
- Linux: ~/.cache/elba
- Windows: %LOCALAPPDATA%\elba
- macOS: /Users/<user>/Library/Caches/elba
|
|-- build
|   |-- a78bu877c78deadbeef...
|   +-- # snip
|-- indices
|   |-- d3237be53e69715112f...
|   +-- # snip
|-- src
|   |-- d2e4a311d3323b784ef...
|   +-- # snip
+-- tmp
    |-- a78bu877c78deadbeef...
    +-- # snip

Installed binaries

Binaries are special in that they get their own folder separate from the internal cache stuff. Ordinarily this is stored at ~/.elba/bin for all systems, but this can be controlled in the config, separate from the cache dir. Deleting the whole folder should be safe, but deleting individual binaries might not be; if you try to uninstall them later down the line, you might get an error.

Folder structure

build

This folder stores the binary (i.e. .ibc file) outputs of library builds. elba globally caches the builds of all dependencies to avoid having to rebuild the same library over and over across different projects. Each built version of a package gets its own hash which encapsulates the entire environment under which the package was built (package dependencies, etc.), ensuring reproducible builds. This emulates the Nix package manager in some respects.

This folder and its subfolders are safe to delete, although it may cause rebuilds of some packages.

indices

This folder stores the downloaded package indices as specified in elba’s configuration, with a hash corresponding to each different package index.

This folder and its subfolders are safe to delete; elba will redownload any needed indices on its next invocation.

src

This folder stores the downloaded sources of packages. elba globally caches these to avoid having to redownload the same files over and over again.

This folder and its subfolders are safe to delete, although it may cause having to redownload and rebuild some packages.

tmp

This folder is a temporary build directory for packages, and is more of an implementation detail than anything else. Folders correspond to build hashes for packages, and the internal structure of these folders mirrors the target/ directory of a local package build.

This folder and its subfolders can be safely deleted.

Cleaning the cache

…can be accomplished with the following invocation:

$ elba clean

Doing so clears the artifacts, build, indices, src, and tmp directories.