Subject: Re: bug#19140: dir-locals-collect-variables discrepancy in handling non-file buffers

From: Katsumi Yamaoka <[email-masked]>
Date: Mon, 19 Jan 2015 16:30:05 +0900

Hi Ivan,

On Tue, 30 Dec 2014 19:45:57 +0000, Ivan Shmakov <[email-masked]> wrote:

> 	Please consider the revised patch MIMEd.

> 	* lisp/files.el (dir-locals-collect-variables): Use
> 	default-directory in place of the file name while working on
> 	non-file buffers (as hack-dir-local-variables already does.)

After this change, I got to get unknown errors[1] when building
Ma Gnus.  To reproduce the same result, try the following in
the Emacs source tree:

% cd lisp/gnus
% emacs -batch -Q --eval FORM
where FORM is:
'(with-temp-buffer (let ((default-directory (expand-file-name ".")))
 (insert-file-contents "./auth-source.el") (hack-local-variables)))'

And you will see

(args-out-of-range "/DIR/emacs/lisp/gnus" 21 nil)

or something similar (where 21 is 1+ the number of letters of
the dir name).

The FORM above is what `custom-make-dependencies' does.  When
building Ma Gnus, `dir-locals-collect-variables' is called in
this way:
  dgnushack.el (dgnushack-make-cus-load)
    -> cus-dep.el (custom-make-dependencies)
       -> files.el (hack-local-variables)
          -> files.el (hack-dir-local-variables)
             -> files.el (dir-locals-collect-variables)

Before you changed `dir-locals-collect-variables', it returned
nil and `custom-make-dependencies' issued no error.  I guess
`custom-make-dependencies' expects the function in question to
return nil, otherwise it needs to be modified in some way.

Thanks.

[1]
% cd /Work/gnus
% ./configure
% make lick
cd lisp && make EMACS="emacs" lispdir="/usr/local/share/emacs/site-lisp/gnus" all
make[1]: Entering directory '/Work/gnus/lisp'
rm -f *.elc gnus-load.el auto-autoloads.* custom-load.*
lispdir="/usr/local/share/emacs/site-lisp/gnus" srcdir=. emacs -batch -q -no-site-file -l ./dgnushack.el -f dgnushack-make-cus-load .
Loading cus-dep...
Directory .
Directory-local variables error: (args-out-of-range "/Work/gnus/lisp" 16 nil)
Directory-local variables error: (args-out-of-range "/Work/gnus/lisp" 16 nil)
Directory-local variables error: (args-out-of-range "/Work/gnus/lisp" 16 nil)
Directory-local variables error: (args-out-of-range "/Work/gnus/lisp" 16 nil)
Directory-local variables error: (args-out-of-range "/Work/gnus/lisp" 16 nil)
Directory-local variables error: (args-out-of-range "/Work/gnus/lisp" 16 nil)
Directory-local variables error: (args-out-of-range "/Work/gnus/lisp" 16 nil)
Directory-local variables error: (args-out-of-range "/Work/gnus/lisp" 16 nil)
Directory-local variables error: (args-out-of-range "/Work/gnus/lisp" 16 nil)
Directory-local variables error: (args-out-of-range "/Work/gnus/lisp" 16 nil)
Directory-local variables error: (args-out-of-range "/Work/gnus/lisp" 16 nil)
Directory-local variables error: (args-out-of-range "/Work/gnus/lisp" 16 nil)
Directory-local variables error: (args-out-of-range "/Work/gnus/lisp" 16 nil)
Directory-local variables error: (args-out-of-range "/Work/gnus/lisp" 16 nil)
Directory-local variables error: (args-out-of-range "/Work/gnus/lisp" 16 nil)
Directory-local variables error: (args-out-of-range "/Work/gnus/lisp" 16 nil)
Directory-local variables error: (args-out-of-range "/Work/gnus/lisp" 16 nil)
Directory-local variables error: (args-out-of-range "/Work/gnus/lisp" 16 nil)
Directory-local variables error: (args-out-of-range "/Work/gnus/lisp" 16 nil)
Directory-local variables error: (args-out-of-range "/Work/gnus/lisp" 16 nil)
Directory-local variables error: (args-out-of-range "/Work/gnus/lisp" 16 nil)
Directory-local variables error: (args-out-of-range "/Work/gnus/lisp" 16 nil)
Directory-local variables error: (args-out-of-range "/Work/gnus/lisp" 16 nil)
Directory-local variables error: (args-out-of-range "/Work/gnus/lisp" 16 nil)
Directory-local variables error: (args-out-of-range "/Work/gnus/lisp" 16 nil)
Directory-local variables error: (args-out-of-range "/Work/gnus/lisp" 16 nil)
Directory-local variables error: (args-out-of-range "/Work/gnus/lisp" 16 nil)
Directory-local variables error: (args-out-of-range "/Work/gnus/lisp" 16 nil)
Directory-local variables error: (args-out-of-range "/Work/gnus/lisp" 16 nil)
Directory-local variables error: (args-out-of-range "/Work/gnus/lisp" 16 nil)
Directory-local variables error: (args-out-of-range "/Work/gnus/lisp" 16 nil)
Directory-local variables error: (args-out-of-range "/Work/gnus/lisp" 16 nil)
Directory-local variables error: (args-out-of-range "/Work/gnus/lisp" 16 nil)
Directory-local variables error: (args-out-of-range "/Work/gnus/lisp" 16 nil)
Directory-local variables error: (args-out-of-range "/Work/gnus/lisp" 16 nil)
Directory-local variables error: (args-out-of-range "/Work/gnus/lisp" 16 nil)
Directory-local variables error: (args-out-of-range "/Work/gnus/lisp" 16 nil)
Directory-local variables error: (args-out-of-range "/Work/gnus/lisp" 16 nil)
Directory-local variables error: (args-out-of-range "/Work/gnus/lisp" 16 nil)
Directory-local variables error: (args-out-of-range "/Work/gnus/lisp" 16 nil)
Directory-local variables error: (args-out-of-range "/Work/gnus/lisp" 16 nil)
Directory-local variables error: (args-out-of-range "/Work/gnus/lisp" 16 nil)
Directory-local variables error: (args-out-of-range "/Work/gnus/lisp" 16 nil)
Directory-local variables error: (args-out-of-range "/Work/gnus/lisp" 16 nil)
Directory-local variables error: (args-out-of-range "/Work/gnus/lisp" 16 nil)
Directory-local variables error: (args-out-of-range "/Work/gnus/lisp" 16 nil)
Directory-local variables error: (args-out-of-range "/Work/gnus/lisp" 16 nil)
Directory-local variables error: (args-out-of-range "/Work/gnus/lisp" 16 nil)
Directory-local variables error: (args-out-of-range "/Work/gnus/lisp" 16 nil)
Directory-local variables error: (args-out-of-range "/Work/gnus/lisp" 16 nil)
Directory-local variables error: (args-out-of-range "/Work/gnus/lisp" 16 nil)
Directory-local variables error: (args-out-of-range "/Work/gnus/lisp" 16 nil)
Directory-local variables error: (args-out-of-range "/Work/gnus/lisp" 16 nil)
Directory-local variables error: (args-out-of-range "/Work/gnus/lisp" 16 nil)
Directory-local variables error: (args-out-of-range "/Work/gnus/lisp" 16 nil)
Directory-local variables error: (args-out-of-range "/Work/gnus/lisp" 16 nil)
Directory-local variables error: (args-out-of-range "/Work/gnus/lisp" 16 nil)
Directory-local variables error: (args-out-of-range "/Work/gnus/lisp" 16 nil)
Directory-local variables error: (args-out-of-range "/Work/gnus/lisp" 16 nil)
Directory-local variables error: (args-out-of-range "/Work/gnus/lisp" 16 nil)
Directory-local variables error: (args-out-of-range "/Work/gnus/lisp" 16 nil)
Directory-local variables error: (args-out-of-range "/Work/gnus/lisp" 16 nil)
Directory-local variables error: (args-out-of-range "/Work/gnus/lisp" 16 nil)
Directory-local variables error: (args-out-of-range "/Work/gnus/lisp" 16 nil)
Directory-local variables error: (args-out-of-range "/Work/gnus/lisp" 16 nil)
Directory-local variables error: (args-out-of-range "/Work/gnus/lisp" 16 nil)
Directory-local variables error: (args-out-of-range "/Work/gnus/lisp" 16 nil)
Directory-local variables error: (args-out-of-range "/Work/gnus/lisp" 16 nil)
Directory-local variables error: (args-out-of-range "/Work/gnus/lisp" 16 nil)
Directory-local variables error: (args-out-of-range "/Work/gnus/lisp" 16 nil)
Directory-local variables error: (args-out-of-range "/Work/gnus/lisp" 16 nil)
Directory-local variables error: (args-out-of-range "/Work/gnus/lisp" 16 nil)
Directory-local variables error: (args-out-of-range "/Work/gnus/lisp" 16 nil)
Directory-local variables error: (args-out-of-range "/Work/gnus/lisp" 16 nil)
Directory-local variables error: (args-out-of-range "/Work/gnus/lisp" 16 nil)
Directory-local variables error: (args-out-of-range "/Work/gnus/lisp" 16 nil)
Directory-local variables error: (args-out-of-range "/Work/gnus/lisp" 16 nil)
Directory-local variables error: (args-out-of-range "/Work/gnus/lisp" 16 nil)
Directory-local variables error: (args-out-of-range "/Work/gnus/lisp" 16 nil)
Directory-local variables error: (args-out-of-range "/Work/gnus/lisp" 16 nil)
Directory-local variables error: (args-out-of-range "/Work/gnus/lisp" 16 nil)
Directory-local variables error: (args-out-of-range "/Work/gnus/lisp" 16 nil)
Directory-local variables error: (args-out-of-range "/Work/gnus/lisp" 16 nil)
Directory-local variables error: (args-out-of-range "/Work/gnus/lisp" 16 nil)
Directory-local variables error: (args-out-of-range "/Work/gnus/lisp" 16 nil)
Directory-local variables error: (args-out-of-range "/Work/gnus/lisp" 16 nil)
Directory-local variables error: (args-out-of-range "/Work/gnus/lisp" 16 nil)
Directory-local variables error: (args-out-of-range "/Work/gnus/lisp" 16 nil)
Directory-local variables error: (args-out-of-range "/Work/gnus/lisp" 16 nil)
Directory-local variables error: (args-out-of-range "/Work/gnus/lisp" 16 nil)
Directory-local variables error: (args-out-of-range "/Work/gnus/lisp" 16 nil)
Directory-local variables error: (args-out-of-range "/Work/gnus/lisp" 16 nil)
Directory-local variables error: (args-out-of-range "/Work/gnus/lisp" 16 nil)
Directory-local variables error: (args-out-of-range "/Work/gnus/lisp" 16 nil)
Directory-local variables error: (args-out-of-range "/Work/gnus/lisp" 16 nil)
Directory-local variables error: (args-out-of-range "/Work/gnus/lisp" 16 nil)
Directory-local variables error: (args-out-of-range "/Work/gnus/lisp" 16 nil)
Directory-local variables error: (args-out-of-range "/Work/gnus/lisp" 16 nil)
Directory-local variables error: (args-out-of-range "/Work/gnus/lisp" 16 nil)
Directory-local variables error: (args-out-of-range "/Work/gnus/lisp" 16 nil)
Directory-local variables error: (args-out-of-range "/Work/gnus/lisp" 16 nil)
Directory-local variables error: (args-out-of-range "/Work/gnus/lisp" 16 nil)
Directory-local variables error: (args-out-of-range "/Work/gnus/lisp" 16 nil)
Directory-local variables error: (args-out-of-range "/Work/gnus/lisp" 16 nil)
Directory-local variables error: (args-out-of-range "/Work/gnus/lisp" 16 nil)
Directory-local variables error: (args-out-of-range "/Work/gnus/lisp" 16 nil)
Directory-local variables error: (args-out-of-range "/Work/gnus/lisp" 16 nil)
Directory-local variables error: (args-out-of-range "/Work/gnus/lisp" 16 nil)
Directory-local variables error: (args-out-of-range "/Work/gnus/lisp" 16 nil)
Directory-local variables error: (args-out-of-range "/Work/gnus/lisp" 16 nil)
Directory-local variables error: (args-out-of-range "/Work/gnus/lisp" 16 nil)
Directory-local variables error: (args-out-of-range "/Work/gnus/lisp" 16 nil)
Directory-local variables error: (args-out-of-range "/Work/gnus/lisp" 16 nil)
Directory-local variables error: (args-out-of-range "/Work/gnus/lisp" 16 nil)
Directory-local variables error: (args-out-of-range "/Work/gnus/lisp" 16 nil)
Directory-local variables error: (args-out-of-range "/Work/gnus/lisp" 16 nil)
Directory-local variables error: (args-out-of-range "/Work/gnus/lisp" 16 nil)
Directory-local variables error: (args-out-of-range "/Work/gnus/lisp" 16 nil)
Directory-local variables error: (args-out-of-range "/Work/gnus/lisp" 16 nil)
Directory-local variables error: (args-out-of-range "/Work/gnus/lisp" 16 nil)
Directory-local variables error: (args-out-of-range "/Work/gnus/lisp" 16 nil)
Directory-local variables error: (args-out-of-range "/Work/gnus/lisp" 16 nil)
Directory-local variables error: (args-out-of-range "/Work/gnus/lisp" 16 nil)
Directory-local variables error: (args-out-of-range "/Work/gnus/lisp" 16 nil)
Directory-local variables error: (args-out-of-range "/Work/gnus/lisp" 16 nil)
Directory-local variables error: (args-out-of-range "/Work/gnus/lisp" 16 nil)
Directory-local variables error: (args-out-of-range "/Work/gnus/lisp" 16 nil)
Directory-local variables error: (args-out-of-range "/Work/gnus/lisp" 16 nil)
Directory-local variables error: (args-out-of-range "/Work/gnus/lisp" 16 nil)
Directory-local variables error: (args-out-of-range "/Work/gnus/lisp" 16 nil)
Directory-local variables error: (args-out-of-range "/Work/gnus/lisp" 16 nil)
Directory-local variables error: (args-out-of-range "/Work/gnus/lisp" 16 nil)
Directory-local variables error: (args-out-of-range "/Work/gnus/lisp" 16 nil)
Directory-local variables error: (args-out-of-range "/Work/gnus/lisp" 16 nil)
Directory-local variables error: (args-out-of-range "/Work/gnus/lisp" 16 nil)
Directory-local variables error: (args-out-of-range "/Work/gnus/lisp" 16 nil)
Directory-local variables error: (args-out-of-range "/Work/gnus/lisp" 16 nil)
Directory-local variables error: (args-out-of-range "/Work/gnus/lisp" 16 nil)
Directory-local variables error: (args-out-of-range "/Work/gnus/lisp" 16 nil)
Directory-local variables error: (args-out-of-range "/Work/gnus/lisp" 16 nil)
Directory-local variables error: (args-out-of-range "/Work/gnus/lisp" 16 nil)
Directory-local variables error: (args-out-of-range "/Work/gnus/lisp" 16 nil)
Directory-local variables error: (args-out-of-range "/Work/gnus/lisp" 16 nil)
Directory-local variables error: (args-out-of-range "/Work/gnus/lisp" 16 nil)
Directory-local variables error: (args-out-of-range "/Work/gnus/lisp" 16 nil)
Directory-local variables error: (args-out-of-range "/Work/gnus/lisp" 16 nil)
Directory-local variables error: (args-out-of-range "/Work/gnus/lisp" 16 nil)
Directory-local variables error: (args-out-of-range "/Work/gnus/lisp" 16 nil)
Directory-local variables error: (args-out-of-range "/Work/gnus/lisp" 16 nil)
Directory-local variables error: (args-out-of-range "/Work/gnus/lisp" 16 nil)
Directory-local variables error: (args-out-of-range "/Work/gnus/lisp" 16 nil)
Directory-local variables error: (args-out-of-range "/Work/gnus/lisp" 16 nil)
Directory-local variables error: (args-out-of-range "/Work/gnus/lisp" 16 nil)
Directory-local variables error: (args-out-of-range "/Work/gnus/lisp" 16 nil)
Directory-local variables error: (args-out-of-range "/Work/gnus/lisp" 16 nil)
Directory-local variables error: (args-out-of-range "/Work/gnus/lisp" 16 nil)
Directory-local variables error: (args-out-of-range "/Work/gnus/lisp" 16 nil)
Directory-local variables error: (args-out-of-range "/Work/gnus/lisp" 16 nil)
Directory-local variables error: (args-out-of-range "/Work/gnus/lisp" 16 nil)
Directory-local variables error: (args-out-of-range "/Work/gnus/lisp" 16 nil)
Directory-local variables error: (args-out-of-range "/Work/gnus/lisp" 16 nil)
Directory-local variables error: (args-out-of-range "/Work/gnus/lisp" 16 nil)
Generating cus-load.el...
Generating cus-load.el...done
lispdir="/usr/local/share/emacs/site-lisp/gnus" srcdir=. emacs -batch -q -no-site-file -l ./dgnushack.el -f dgnushack-make-auto-load .
lispdir="/usr/local/share/emacs/site-lisp/gnus" srcdir=. emacs -batch -q -no-site-file -l ./dgnushack.el -f dgnushack-make-load
Generating /Work/gnus/lisp/gnus-load.el...
Compiling /Work/gnus/lisp/gnus-load.el...
[...]