Hi Ludovic, [email protected] (Ludovic Courtès) writes:
> Hi Maxim, > > Maxim Cournoyer <[email protected]> skribis: > >> Unfortunately I cannot reproduce the problem on my side, although you seem >> to be >> right that this is caused by the `string-contains` not matching >> "/share/man/" in the manpage-path and returning #f... >> >> The only reason I'd suspect this could happen was if the `find-files` >> method (used io list all the files contained under >> "$manifest-inputs/share/man/") somehow returned bogus paths (I saw that >> this function has a "fail-on-error?" argument which is disabled by default). >> >> To help further troubleshoot this, could you please use the provided >> patch instead, where I inserted: >> >> >> (define (get-manpage-tail-path manpage-path) >> (let ((index (string-contains manpage-path "/share/man/"))) >> + (unless index >> + (error "Manual path doesn't contain \"/share/man/\":" >> + manpage-path)) >> (substring manpage-path (+ index (string-length >> "/share/man/"))))) >> >> (define (populate-manpages-collection-dir entries) >> >> to print the unexpectedly formed manpage-path. > > The problem happens with > "/gnu/store/rn3vri602z3jpwqnha0r5nwxi6v0qpnx-texlive-2016/share/man" (no > trailing slash): > > $ ls -l "/gnu/store/rn3vri602z3jpwqnha0r5nwxi6v0qpnx-texlive-2016/share/man" > lrwxrwxrwx 2 root root 70 Jan 1 1970 > /gnu/store/rn3vri602z3jpwqnha0r5nwxi6v0qpnx-texlive-2016/share/man -> > /gnu/store/8mhqravbd3pv7x1y2qfjlv0bdjchszn0-texlive-bin-2016/share/man > > ‘find-files’ uses ‘lstat’ by default, which means it does not follow > symlinks, and I guess that’s what’s happening here. Perhaps > ‘find-files’ needs to be called with #:stat stat to use ‘stat’ instead > of ‘lstat’? > > Thanks, > Ludo’. That's a good idea! Could you please try again with the new included patch? Here are the latest changes:
@@ -954,7 +954,8 @@ files for the fonts of the @var{manifest} entries."
(define build
#~(begin
(use-modules (guix build utils)
- (srfi srfi-1))
+ (srfi srfi-1)
+ (srfi srfi-26))
(define entries
(filter-map (lambda (directory)
@@ -977,7 +978,7 @@ files for the fonts of the @var{manifest} entries."
(string-drop manpage-path (+ index (string-length "/share/man/")))))
(define (populate-manpages-collection-dir entries)
- (let ((manpages (append-map find-files entries)))
+ (let ((manpages (append-map (cut find-files <> #:stat stat) entries)))
(for-each (lambda (manpage)
(let* ((dest-file (string-append
manpages-collection-dir "/"
@@ -1012,7 +1013,8 @@ files for the fonts of the @var{manifest} entries."
"-C" "man_db.conf"))))
(gexp->derivation "manual-database" build
- #:modules '((guix build utils))
+ #:modules '((guix build utils)
+ (srfi srfi-26))
#:local-build? #t))
(define %default-profile-hooks
I think we're closing in... :) Maxim
<<< message/external-body; name="~/src/guix/0001-profiles-Generate-database-file-for-manpages.patch"; access-type=local-file: Unrecognized >>>
signature.asc
Description: PGP signature
