From f0c35f03261f4d19dc4852b407ed0d5cdeafc818 Mon Sep 17 00:00:00 2001 From: Alejandro R Mosteo Date: Tue, 17 Oct 2023 11:23:57 +0200 Subject: [PATCH] Enable shared dependencies by default (#1449) * Set shared dependencies as the default * user-changes.md: Explain shared builds --- doc/user-changes.md | 31 +++++++++++++++++++++++++++++ src/alire/alire-config-builtins.ads | 2 +- 2 files changed, 32 insertions(+), 1 deletion(-) diff --git a/doc/user-changes.md b/doc/user-changes.md index 971b282ed..5553e5990 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 + ### Automatic index updates PR [#1447](https://github.com/alire-project/alire/pull/1447) diff --git a/src/alire/alire-config-builtins.ads b/src/alire/alire-config-builtins.ads index befaf089c..f53175cc6 100644 --- a/src/alire/alire-config-builtins.ads +++ b/src/alire/alire-config-builtins.ads @@ -17,7 +17,7 @@ package Alire.Config.Builtins is Dependencies_Shared : constant Builtin := New_Builtin (Key => "dependencies.shared", - Def => False, + Def => True, Help => "When true, dependencies are downloaded and built in a shared " & "location inside the global cache. When false, "