Hi Maxim, Maxim Cournoyer <maxim.courno...@gmail.com> skribis:
> l...@gnu.org (Ludovic Courtès) writes: > >> Hi Maxim, >> >> Maxim Cournoyer <maxim.courno...@gmail.com> 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 The attachment is missing from your message (it’s marked as “message/external-body”, which AIUI means that it would just look for a same-named file on the recipient’s machine.) Could you resend it? :-) Thanks, Ludo’.