diff options
author | Ludovic Courtès <ludo@gnu.org> | 2015-03-10 18:07:48 +0100 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2015-03-10 18:07:48 +0100 |
commit | 11dddd8a3e559eff21b12db46d993b07b624ab15 (patch) | |
tree | 2dd1537f8d1cb34a72dcbf094620ae6df5afdf2a | |
parent | b9156ccc0882fb35fc6b3e109ed45c68a6d40fbf (diff) | |
download | guix-11dddd8a3e559eff21b12db46d993b07b624ab15.tar.gz guix-11dddd8a3e559eff21b12db46d993b07b624ab15.zip |
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'.
-rw-r--r-- | gnu/system.scm | 5 | ||||
-rw-r--r-- | gnu/system/linux.scm | 10 |
2 files changed, 10 insertions, 5 deletions
diff --git a/gnu/system.scm b/gnu/system.scm index a51b176640..1a0aee41eb 100644 --- a/gnu/system.scm +++ b/gnu/system.scm @@ -511,9 +511,8 @@ export ASPELL_CONF=\"dict-dir $HOME/.guix-profile/lib/aspell\" ((services (operating-system-services os)) (pam-services -> ;; Services known to PAM. - (delete-duplicates - (append (operating-system-pam-services os) - (append-map service-pam-services services)))) + (append (operating-system-pam-services os) + (append-map service-pam-services services))) (profile-drv (operating-system-profile os)) (skeletons (operating-system-skeletons os)) (/etc/hosts (or (operating-system-hosts-file os) 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))) |