summaryrefslogtreecommitdiff
path: root/gnu/system
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2015-03-10 18:07:48 +0100
committerLudovic Courtès <ludo@gnu.org>2015-03-10 18:07:48 +0100
commit11dddd8a3e559eff21b12db46d993b07b624ab15 (patch)
tree2dd1537f8d1cb34a72dcbf094620ae6df5afdf2a /gnu/system
parentb9156ccc0882fb35fc6b3e109ed45c68a6d40fbf (diff)
system: Don't compare <pam-service> objects with 'equal?'.
Fixes <http://bugs.gnu.org/20037>. Reported by 宋文武 <iyzsong@gmail.com> and Tomáš Čech. * gnu/system.scm (operating-system-etc-directory): Remove call to 'delete-duplicates'. * gnu/system/linux.scm (pam-services->directory)[builder]: Add call to 'delete-duplicates'.
Diffstat (limited to 'gnu/system')
-rw-r--r--gnu/system/linux.scm10
1 files changed, 8 insertions, 2 deletions
diff --git a/gnu/system/linux.scm b/gnu/system/linux.scm
index 8cddedf28e..aaaa8c6dee 100644
--- a/gnu/system/linux.scm
+++ b/gnu/system/linux.scm
@@ -100,13 +100,19 @@ dumped in /etc/pam.d/NAME, where NAME is the name of SERVICE."
services))))
(define builder
#~(begin
- (use-modules (ice-9 match))
+ (use-modules (ice-9 match)
+ (srfi srfi-1))
(mkdir #$output)
(for-each (match-lambda
((name file)
(symlink file (string-append #$output "/" name))))
- '#$(zip names files))))
+
+ ;; Since <pam-service> objects cannot be compared with
+ ;; 'equal?' since they contain gexps, which contain
+ ;; closures, use 'delete-duplicates' on the build-side
+ ;; instead. See <http://bugs.gnu.org/20037>.
+ (delete-duplicates '#$(zip names files)))))
(gexp->derivation "pam.d" builder)))