From 038c8fae32dd97fa2c69c0aa7d947e2fc4c90c77 Mon Sep 17 00:00:00 2001 From: "Alejandro R. Mosteo" Date: Sun, 10 Sep 2023 23:14:47 +0200 Subject: [PATCH] user-changes.md: Explain shared builds --- doc/user-changes.md | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/doc/user-changes.md b/doc/user-changes.md index c3e57fe61..ba5bb68a5 100644 --- a/doc/user-changes.md +++ b/doc/user-changes.md @@ -6,6 +6,37 @@ stay on top of `alr` new features. ## Release `2.0-dev` +### Enable shared dependencies by default + +PR [#1449](https://github.com/alire-project/alire/pull/1449) + +Pre-2.0, Alire worked always in "sandboxed" mode; that is, all source +dependencies were found under `/alire/cache`. This behavior can be +now enabled with `alr config --set dependencies.shared false`, locally or +globally. + +By default, post-2.0, Alire works in "shared" mode, where sources are +downloaded once (to `~/.cache/alire/releases`) and unique builds are created +(under `~/.cache/alire/builds`) for unique configurations. This should minimize +rebuilds across crate configurations and workspaces, and eliminate risks of +inconsistencies. + +Disk use is decreased by unique source downloads, but might be increased by +unique build configurations. Cache management and cleanup will be provided down +the road. The build cache can always be deleted to retrieve disk space, at the +cost of triggering rebuilds. + +Unique builds are identified by a build hash which takes into account the +following inputs for a given release: + +- Build profile +- Environment variables modified in the manifest +- GPR external variables declared or set +- Configuration variables declared or set +- Compiler version +- Vaue of `LIBRARY_TYPE` and `_LIBRARY_TYPE` variables. +- Hash of dependencies + ### Deprecation of `dependencies.dir` in favor of `dependencies.shared` PR [#1419](https://github.com/alire-project/alire/pull/1419)