Skip to content

Conversation

@carterbox
Copy link

@carterbox carterbox commented Feb 18, 2025

Following up our discussion in the Conda Community meeting, I've outlined 1 and a part of specific recipe workflows/use cases which might be supported by the cache feature.

Maybe you or @h-vetinari have an additional motivating cases that I'm aware of that don't fall into these categories?

@carterbox carterbox force-pushed the specific-motivating-cases branch from 94e4825 to a1019f4 Compare February 18, 2025 21:43

### Dividing a single package variant into modular chunks

Some packages have a monolithic build system but have optional components at runtime. The most common example of this case is splitting a package into development, runtime libraries, and runtime tools; the `dav1d-feedstock` is an example of this. `dav1d-dev` contains the developer artifacts: package config files and headers. `dav1d` contains the command line utility of the same name. `libdav1d7` contains the shared libraries that other packages link to dynamically at runtime. The artifacts in these packages cannot be built separately or doing so would result in redundant work, so the package is built all together, installed to the PREFIX, then split into the output packages.
Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is the primary case that I would use the cache for.


### Reusing cached build artifacts to build multiple variants

I've heard that instead of building package from scratch for each python version, some maintainers try to rebuild multiple variants of a package from a cached working directory. This might be useful if upstream hasn't designed their build system to build C and Python APIs separately.
Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is the case which I feel that you may be writing for. It's a bit nebulous to me, and I don't do it, so I'm uncertain about how to best support it (if at all).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant