Subject: bug#36828: 27.0.50; Uninstalled emacs shows installed documentation

From: Eli Zaretskii <[email-masked]>
Date: Sat, 26 Oct 2019 11:51:50 +0300

> From: Óscar Fuentes <[email-masked]>
> Cc: [email-masked],  [email-masked]
> Date: Sat, 26 Oct 2019 05:16:01 +0200
> 
> Sorry for the long delay.

I no longer remember the details from what I discovered back there, so
expect some repeated questions, mistakes, and confusion.  Apologies in
advance.

> >> >> M-x describe-function shows the docstrings of the Emacs I'm executing,
> >> >
> >> > How do you know?  What is the value of doc-directory?
> >> 
> >> /home/oscar/dev/emacs/stable/build/etc/
> >> 
> >> The installed version is in /usr/local.
> >
> > Hmm... then this is not the use case I had in mind, and some other
> > factor is at work here.  Your use case is supposed to be handled by
> > this fragment from init_callproc:
> 
> What follows is the result of a debug session for the chunk of code you
> indicated.
> 
>   if (data_dir == 0)
>     {
>       Lisp_Object tem, srcdir;
>       Lisp_Object lispdir = Fcar (decode_env_path (0, PATH_DUMPLOADSEARCH, 0));
> 
>       srcdir = Fexpand_file_name (build_string ("../src/"), lispdir);
> 
>       tem = Fexpand_file_name (build_string ("NEWS"), Vdata_directory);
> 
> Vdata_directory is "/usr/local/share/emacs/27.0.50/etc/"
> 
> tem is "/usr/local/share/emacs/27.0.50/etc/NEWS"
> 
> srcdir is "/home/oscar/dev/emacs/emacs/src/"

I note that the directories you show now are different from what you
reported back then: more place for confusion.

> Execution never enters this block, because srcdir !=
> Vinvocation_directory (because this is an out-of-source build) and
> "/usr/local/share/emacs/27.0.50/etc/NEWS" exists (because emacs was
> installed on the past).
> 
> 	  Lisp_Object newdir;
> 	  newdir = Fexpand_file_name (build_string ("../etc/"), lispdir);
> 	  tem = Fexpand_file_name (build_string ("NEWS"), newdir);
> 	  if (!NILP (Ffile_exists_p (tem)))
> 	    Vdata_directory = newdir;
> 	}
>     }
> 
> The code basically ignores the local, non-installed NEWS when there is
> an installed NEWS and we are executing from an out-of-source build tree.
> 
> I propose the reverse: unconditionally test for the non-installed NEWS and
> adjust Vdata_directory if it exists. Something like this (untested for
> the installed emacs case):

I'm not sure I understand the relevance of data-directory to the issue
at hand.  AFAIR you were talking about the Info documentation, but
that is looked up in configure-info-directory; see
Info-default-directory-list.  We only use data-directory for that in
the NS builds, which I believe is not your case.

If this all is due to the fact I pointed to this code, then either I
was mistaken (sorry!), or there's something I discovered back then,
but forgot in the meantime.

So I guess we need to back up a notch and see how all this is related
to Info manuals?  Or what else am I missing?