~ruther/guix-local

11dddd8a3e559eff21b12db46d993b07b624ab15 — Ludovic Courtès 11 years ago b9156cc
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'.
2 files changed, 10 insertions(+), 5 deletions(-)

M gnu/system.scm
M gnu/system/linux.scm
M gnu/system.scm => gnu/system.scm +2 -3
@@ 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)

M gnu/system/linux.scm => gnu/system/linux.scm +8 -2
@@ 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)))