summaryrefslogtreecommitdiff
path: root/tests/file-systems.scm
diff options
context:
space:
mode:
authorMaxim Cournoyer <maxim.cournoyer@gmail.com>2021-06-17 01:22:35 -0400
committerMaxim Cournoyer <maxim.cournoyer@gmail.com>2021-06-29 14:53:21 -0400
commit4f3bdc8f21657dbda857027b3ec8754dd4c7c67b (patch)
treec2a13dca9fdd301c8042696ea5f8f62dcfe43818 /tests/file-systems.scm
parent6b0e55cde901dd5f6eae72cee10723b7739cadf7 (diff)
downloadguix-patches-4f3bdc8f21657dbda857027b3ec8754dd4c7c67b.tar
guix-patches-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.scm7
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