guix-play/guix
Ludovic Courtès 5a7cb59648
deduplication: Detect holes and create sparse files.
This reduces disk usage of sparse files that are substituted such as
Guile object files (ELF files).  As of Guile 3.0.9, .go files are sparse
due to ELF sections being aligned on 64 KiB boundaries.

This reduces disk usage reported by “du -sh” by 9% for the ‘guix’
package, by 23% for ‘guile’, and by 35% for ‘guile-git’.

* guix/store/deduplication.scm (hole-size, find-holes): New procedures.
(tee)[seekable?]: New variable.
[read!]: Add case when SEEKABLE? is true.
* tests/store-deduplication.scm (cartesian-product): New procedure.
("copy-file/deduplicate, sparse files (holes: ~a/~a/~a)"): New test set.

Change-Id: Iad2ab7830dcb1220e2026f4a127a6c718afa8964
2024-05-25 16:44:42 +02:00
..
build build: qt-utils: Use QML_IMPORT_PATH2 for Qt 5 (fixup). 2024-04-06 11:42:56 -04:00
build-system guix: Update Bioconductor version to 3.19. 2024-05-08 12:53:14 +02:00
import import/elpa: Add proper file-name to origin. 2024-05-22 15:21:09 +08:00
platforms guix: Add xtensa-ath9k-elf platform. 2024-04-17 12:13:02 +02:00
scripts environment: Fix type error with ‘-C’ when ‘getpwuid’ fails. 2024-05-25 15:10:11 +02:00
store deduplication: Detect holes and create sparse files. 2024-05-25 16:44:42 +02:00
tests
android-repo-download.scm
avahi.scm
base16.scm
base32.scm
base64.scm
build-system.scm
bzr-download.scm download: Honor ‘GUIX_DOWNLOAD_METHODS’ environment variable. 2024-03-09 18:55:50 +01:00
cache.scm
channels.scm guix: channels: Handle single case with authenticating message. 2024-05-13 09:11:05 +01:00
ci.scm
colors.scm
combinators.scm
config.scm.in build: Add dependency on Git. 2023-09-26 17:36:58 +02:00
cpio.scm
cpu.scm cpu: Enable tuning for i686-linux. 2024-03-07 13:04:27 +02:00
cve.scm
cvs-download.scm download: Honor ‘GUIX_DOWNLOAD_METHODS’ environment variable. 2024-03-09 18:55:50 +01:00
d3.v3.js
deprecation.scm deprecation: Fix docstring typo. 2023-12-22 17:47:15 +01:00
derivations.scm Autoload (gcrypt hash). 2024-04-15 22:36:42 +02:00
describe.scm describe: Try harder to find the ‘guix pull’ profile. 2024-03-19 17:02:14 +01:00
diagnostics.scm
discovery.scm Autoload (guix build syscalls). 2024-04-15 22:36:42 +02:00
docker.scm guix: docker: Build layered images. 2024-01-08 21:04:44 +03:00
download.scm guix: Delay loading of (gnutls). 2024-04-15 22:36:42 +02:00
elf.scm
ftp-client.scm
gexp.scm gexp: Add #:guile parameter to ‘gexp->file’ and ‘scheme-file’. 2024-04-08 00:05:48 +02:00
git-authenticate.scm
git-download.scm download: Honor ‘GUIX_DOWNLOAD_METHODS’ environment variable. 2024-03-09 18:55:50 +01:00
git.scm Autoload (gcrypt hash). 2024-04-15 22:36:42 +02:00
glob.scm
gnu-maintenance.scm gnu-maintenance: Support URI list of mixed mirrors, HTTP URLs. 2023-09-11 23:39:13 -04:00
gnupg.scm
grafts.scm grafts: Use the right locale package. 2023-12-03 23:55:08 +01:00
graph.js
graph.scm graph: Add GraphML backend. 2023-08-25 14:24:43 +02:00
hash.scm
hg-download.scm download: Honor ‘GUIX_DOWNLOAD_METHODS’ environment variable. 2024-03-09 18:55:50 +01:00
http-client.scm
i18n.scm
inferior.scm time-machine: Make target commit check cheaper. 2023-11-05 23:23:23 +01:00
ipfs.scm
least-authority.scm least-authority: Add support for changing UIDs/GIDs before exec. 2023-12-22 00:31:41 +01:00
licenses.scm
lint.scm lint: archival: Trigger “Save Code Now” for VCSes other than Git. 2024-03-09 18:55:49 +01:00
man-db.scm
memoization.scm
modules.scm
monad-repl.scm monad-repl: Add REPL commands to inspect package arguments. 2023-12-04 22:26:38 +01:00
monads.scm
nar.scm Autoload (guix build syscalls). 2024-04-15 22:36:42 +02:00
narinfo.scm
openpgp.scm
packages.scm packages: ‘sanitize-inputs’ does not add labels when unnecessary. 2024-05-05 12:06:23 +02:00
pki.scm
platform.scm guix: platform: Add platform-rust-target. 2023-12-11 13:50:48 +02:00
profiles.scm Merge remote-tracking branch 'savannah/master' into gnome-team 2024-03-20 14:54:26 +00:00
profiling.scm
progress.scm tests: Import (guix build syscalls) when (guix build store-copy) is used. 2023-11-25 16:29:25 +01:00
quirks.scm
read-print.scm guix: import: Optionally import necessary yanked crates. 2024-01-09 09:38:38 +02:00
records.scm records: Do not inline the constructor. 2024-05-04 19:14:24 +02:00
remote.scm
repl.scm
rpm.scm
scripts.scm Autoload (guix build syscalls). 2024-04-15 22:36:42 +02:00
search-paths.scm search-paths: Add GCC search paths. 2023-10-04 23:30:41 -04:00
self.scm Use po4a-minimal for guix. 2024-05-13 12:01:49 +01:00
serialization.scm
sets.scm
ssh.scm ssh: ‘open-ssh-session’ displays the port number upon error. 2024-04-04 15:48:47 +02:00
status.scm
store.scm store: Add with-store/non-blocking. 2024-05-13 19:31:17 +01:00
substitutes.scm
svn-download.scm svn-download: Add dependency on tar+gzip for SWH retrieval. 2024-05-01 17:26:18 +02:00
swh.scm swh: ‘lookup-origin-revision’ handles branches pointing to directories. 2024-03-09 18:55:49 +01:00
tests.scm
transformations.scm transformations: Add support for rust. 2024-03-10 12:50:13 +02:00
ui.scm ui: Delay use of (guix build syscalls). 2024-04-15 22:36:42 +02:00
upstream.scm upstream: update-package-inputs: Sort extra inputs. 2024-02-19 11:44:47 +01:00
utils.scm utils: Don’t re-export ‘call-with-temporary-output-file’. 2024-04-15 22:36:42 +02:00
workers.scm