Hello, These patches implement what you suggested on IRC: not repeating entire manifest entries and their propagated inputs. This has a dramatic impact on the size of the ‘manifest’ file and on the memory and processing time to read it for the the use case you gave.
The second patch goes a tiny bit further by making the ‘search-paths’ and ‘propagated-inputs’ fields optional, shaving another ~10% on the size of ‘manifest’ in this example. The second patch should be squashed with the first one (so we don’t bump version formats a second time and duplicate code). It’s kinda optional because it doesn’t bring much compared to the first patch and causes a bit of extra complexity, but maybe it’s still worth keeping? Could you try this on your larger use cases and tell me how it goes? Thanks, Ludo’. Ludovic Courtès (3): tests: Augment profile collision test. profiles: Do not repeat entries in 'manifest' file. squash! profiles: Make all entry fields optional. guix/build/profiles.scm | 32 ++++++++-- guix/profiles.scm | 137 ++++++++++++++++++++++++++++++++-------- tests/profiles.scm | 52 ++++++++++++++- 3 files changed, 187 insertions(+), 34 deletions(-) base-commit: fed51b26141548a5bae349a5e1d8d6f681320f4f -- 2.36.1