diff options
author | Maxim Cournoyer <maxim.cournoyer@gmail.com> | 2021-06-17 01:22:35 -0400 |
---|---|---|
committer | Maxim Cournoyer <maxim.cournoyer@gmail.com> | 2021-06-29 14:53:21 -0400 |
commit | 4f3bdc8f21657dbda857027b3ec8754dd4c7c67b (patch) | |
tree | c2a13dca9fdd301c8042696ea5f8f62dcfe43818 /tests/file-systems.scm | |
parent | 6b0e55cde901dd5f6eae72cee10723b7739cadf7 (diff) | |
download | guix-4f3bdc8f21657dbda857027b3ec8754dd4c7c67b.tar guix-4f3bdc8f21657dbda857027b3ec8754dd4c7c67b.tar.gz |
pack: Prevent duplicate files in tar archives.
Tar translate duplicate files in the archive into hard links. These can cause
problems, as not every tool support them; for example dpkg doesn't.
* gnu/system/file-systems.scm (reduce-directories): New procedure.
(file-prefix?): Lift the restriction on file prefix. The procedure can be
useful for comparing relative file names. Adjust doc.
(file-name-depth): New procedure, extracted from ...
(btrfs-store-subvolume-file-name): ... here.
* guix/scripts/pack.scm (self-contained-tarball/builder): Use
reduce-directories.
* tests/file-systems.scm ("reduce-directories"): New test.
Diffstat (limited to 'tests/file-systems.scm')
-rw-r--r-- | tests/file-systems.scm | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/tests/file-systems.scm b/tests/file-systems.scm index 7f7c373884..80acb6d5b9 100644 --- a/tests/file-systems.scm +++ b/tests/file-systems.scm @@ -1,6 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2015, 2017 Ludovic Courtès <ludo@gnu.org> -;;; Copyright © 2020 Maxim Cournoyer <maxim.cournoyer@gmail.com> +;;; Copyright © 2020, 2021 Maxim Cournoyer <maxim.cournoyer@gmail.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -50,6 +50,11 @@ (device "/foo") (flags '(bind-mount read-only))))))))) +(test-equal "reduce-directories" + '("./opt/gnu/" "./opt/gnuism" "a/b/c") + (reduce-directories '("./opt/gnu/etc" "./opt/gnu/" "./opt/gnu/bin" + "./opt/gnu/lib/debug" "./opt/gnuism" "a/b/c" "a/b/c"))) + (test-assert "does not pull (guix config)" ;; This module is meant both for the host side and "build side", so make ;; sure it doesn't pull in (guix config), which depends on the user's |