aboutsummaryrefslogtreecommitdiff
path: root/guix/docker.scm
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2021-02-08 22:23:09 +0100
committerLudovic Courtès <ludo@gnu.org>2021-02-08 23:50:35 +0100
commit18a4882e3029a084d2f0c63d9d0148682a854546 (patch)
tree9d55ad63a78597abd9dd891c90337a01644b0c46 /guix/docker.scm
parent7c1a30f563b001202d6df5e566c5db54fe7d3625 (diff)
downloadguix-18a4882e3029a084d2f0c63d9d0148682a854546.tar
guix-18a4882e3029a084d2f0c63d9d0148682a854546.tar.gz
docker: Pass '--hard-dereference' to 'tar' to ensure reproducible builds.
Reported by zimoun at <https://lists.gnu.org/archive/html/guix-devel/2021-02/msg00053.html>. * guix/docker.scm (%tar-determinism-options): Add '--hard-dereference'. Co-authored-by: zimoun <zimon.toutoune@gmail.com>
Diffstat (limited to 'guix/docker.scm')
-rw-r--r--guix/docker.scm11
1 files changed, 9 insertions, 2 deletions
diff --git a/guix/docker.scm b/guix/docker.scm
index 97ac6d982b..889aaeacb5 100644
--- a/guix/docker.scm
+++ b/guix/docker.scm
@@ -1,6 +1,6 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2017 Ricardo Wurmus <rekado@elephly.net>
-;;; Copyright © 2017, 2018, 2019 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2017, 2018, 2019, 2021 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2018 Chris Marusich <cmmarusich@gmail.com>
;;;
;;; This file is part of GNU Guix.
@@ -113,7 +113,14 @@ Return a version of TAG that follows these rules."
(define %tar-determinism-options
;; GNU tar options to produce archives deterministically.
'("--sort=name" "--mtime=@1"
- "--owner=root:0" "--group=root:0"))
+ "--owner=root:0" "--group=root:0"
+
+ ;; When 'build-docker-image' is passed store items, the 'nlink' of the
+ ;; files therein leads tar to store hard links instead of actual copies.
+ ;; However, the 'nlink' count depends on deduplication in the store; it's
+ ;; an "implicit input" to the build process. '--hard-dereference'
+ ;; eliminates it.
+ "--hard-dereference"))
(define directive-file
;; Return the file or directory created by a 'evaluate-populate-directive'