* $prefix/info -> $prefix/share/info
@ 2006-12-18 13:47 Bruno Haible
2006-12-18 20:21 ` Eli Zaretskii
2006-12-20 13:01 ` Richard Stallman
0 siblings, 2 replies; 8+ messages in thread
From: Bruno Haible @ 2006-12-18 13:47 UTC (permalink / raw)
Hi,
For several years already, the GNU coding standards and the Linux
Filesystem Hierarchy Standard specify that 'info' files should be installed
in $prefix/share/info rather than in $prefix/info. The rationale is and was
that 'info' files are not platform dependent.
Since autoconf-2.60 was released 6 months ago, it is easy to actually
implement this.
But Emacs-22.0.90 still installs into $prefix/info.
To follow the above cited standards, the following recipe can be used:
1) Regenerate the 'configure' file with autoconf-2.60 or -2.61. An
invocation of 'autoconf' is all that's needed.
2) Apply this patch. I've verified that with this patch, Emacs installs its
manuals into $prefix/share/info and that the info mode finds them there.
2006-12-17 Bruno Haible <bruno@clisp.org>
* INSTALL: Mention /usr/local/share/info instead of /usr/local/info.
* etc/emacs.1: Likewise.
* src/epaths.in (PATH_INFO): Likewise.
* nt/paths.h (PATH_INFO): Likewise.
* lisp/paths.el (Info-default-directory-list): Put "share/" before "",
before new info files will be installed in share/info.
* lisp/info.el (Info-default-dirs): Look in $prefix/share/info instead
of $prefix/info.
* lisp/w32-fns.el (w32-init-info): Likewise.
diff -r -c3 --exclude=configure emacs-22.0.90.orig/INSTALL emacs-22.0.90/INSTALL
*** emacs-22.0.90.orig/INSTALL 2006-07-09 22:52:09.000000000 +0200
--- emacs-22.0.90/INSTALL 2006-11-15 02:43:49.000000000 +0100
***************
*** 494,503 ****
useful for sites at which different kinds of machines
share the file system Emacs is installed on.
! `/usr/local/info' holds the on-line documentation for Emacs, known as
! "info files". Many other GNU programs are documented
! using info files as well, so this directory stands
! apart from the other, Emacs-specific directories.
`/usr/local/man/man1' holds the man pages for the programs installed
in `/usr/local/bin'.
--- 494,504 ----
useful for sites at which different kinds of machines
share the file system Emacs is installed on.
! `/usr/local/share/info' holds the on-line documentation for Emacs,
! known as "info files". Many other GNU programs are
! documented using info files as well, so this directory
! stands apart from the other, Emacs-specific
! directories.
`/usr/local/man/man1' holds the man pages for the programs installed
in `/usr/local/bin'.
***************
*** 523,530 ****
information on this.
8) Check the file `dir' in your site's info directory (usually
! /usr/local/info) to make sure that it has a menu entry for the Emacs
! info files.
9) If your system uses lock files to interlock access to mailer inbox files,
then you might need to make the movemail program setuid or setgid
--- 524,531 ----
information on this.
8) Check the file `dir' in your site's info directory (usually
! /usr/local/share/info) to make sure that it has a menu entry for the
! Emacs info files.
9) If your system uses lock files to interlock access to mailer inbox files,
then you might need to make the movemail program setuid or setgid
***************
*** 590,596 ****
installed on.
`infodir' indicates where to put the info files distributed with
! Emacs; it defaults to `/usr/local/info'.
`mandir' indicates where to put the man pages for Emacs and its
utilities (like `etags'); it defaults to
--- 591,597 ----
installed on.
`infodir' indicates where to put the info files distributed with
! Emacs; it defaults to `/usr/local/share/info'.
`mandir' indicates where to put the man pages for Emacs and its
utilities (like `etags'); it defaults to
diff -r -c3 --exclude=configure emacs-22.0.90.orig/etc/emacs.1 emacs-22.0.90/etc/emacs.1
*** emacs-22.0.90.orig/etc/emacs.1 2006-02-07 23:37:19.000000000 +0100
--- emacs-22.0.90/etc/emacs.1 2006-11-15 02:50:24.000000000 +0100
***************
*** 431,437 ****
manual is also included in the Emacs source distribution.
.PP
.SH FILES
! /usr/local/info - files for the Info documentation browser
(a subsystem of Emacs) to refer to. Currently not much of Unix
is documented here, but the complete text of the Emacs reference
manual is included in a convenient tree structured form.
--- 431,437 ----
manual is also included in the Emacs source distribution.
.PP
.SH FILES
! /usr/local/share/info - files for the Info documentation browser
(a subsystem of Emacs) to refer to. Currently not much of Unix
is documented here, but the complete text of the Emacs reference
manual is included in a convenient tree structured form.
diff -r -c3 --exclude=configure emacs-22.0.90.orig/lisp/info.el emacs-22.0.90/lisp/info.el
*** emacs-22.0.90.orig/lisp/info.el 2006-09-07 22:45:50.000000000 +0200
--- emacs-22.0.90/lisp/info.el 2006-11-15 03:17:11.000000000 +0100
***************
*** 463,474 ****
(expand-file-name "info/" installation-directory)
(if invocation-directory
(let ((infodir (expand-file-name
! "../info/"
invocation-directory)))
(if (file-exists-p infodir)
infodir
(setq infodir (expand-file-name
! "../../../info/"
invocation-directory))
(and (file-exists-p infodir)
infodir))))))
--- 463,474 ----
(expand-file-name "info/" installation-directory)
(if invocation-directory
(let ((infodir (expand-file-name
! "../share/info/"
invocation-directory)))
(if (file-exists-p infodir)
infodir
(setq infodir (expand-file-name
! "../../../share/info/"
invocation-directory))
(and (file-exists-p infodir)
infodir))))))
diff -r -c3 --exclude=configure emacs-22.0.90.orig/lisp/paths.el emacs-22.0.90/lisp/paths.el
*** emacs-22.0.90.orig/lisp/paths.el 2006-09-04 19:36:11.000000000 +0200
--- emacs-22.0.90/lisp/paths.el 2006-11-15 03:21:39.000000000 +0100
***************
*** 68,74 ****
(suffixes
;; Subdirectories in each directory tree that may contain info
;; directories.
! '("" "share/" "gnu/" "gnu/lib/" "gnu/lib/emacs/"
"emacs/" "lib/" "lib/emacs/"))
(standard-info-dirs
(apply #'nconc
--- 68,74 ----
(suffixes
;; Subdirectories in each directory tree that may contain info
;; directories.
! '("share/" "" "gnu/" "gnu/lib/" "gnu/lib/emacs/"
"emacs/" "lib/" "lib/emacs/"))
(standard-info-dirs
(apply #'nconc
***************
*** 81,87 ****
dirs
(prune-directory-list dirs config))))
prefixes))))
! ;; If $(prefix)/info is not one of the standard info directories,
;; they are probably installing an experimental version of Emacs,
;; so make sure that experimental version's Info files override
;; the ones in standard directories.
--- 81,87 ----
dirs
(prune-directory-list dirs config))))
prefixes))))
! ;; If $(prefix)/share/info is not one of the standard info directories,
;; they are probably installing an experimental version of Emacs,
;; so make sure that experimental version's Info files override
;; the ones in standard directories.
diff -r -c3 --exclude=configure emacs-22.0.90.orig/lisp/w32-fns.el emacs-22.0.90/lisp/w32-fns.el
*** emacs-22.0.90.orig/lisp/w32-fns.el 2006-02-07 23:37:28.000000000 +0100
--- emacs-22.0.90/lisp/w32-fns.el 2006-11-15 03:18:14.000000000 +0100
***************
*** 205,212 ****
;;; that configuration during build time is correct for runtime.
(defun w32-init-info ()
(let* ((instdir (file-name-directory invocation-directory))
! (dir1 (expand-file-name "../info/" instdir))
! (dir2 (expand-file-name "../../../info/" instdir)))
(if (file-exists-p dir1)
(setq Info-default-directory-list
(append Info-default-directory-list (list dir1)))
--- 205,212 ----
;;; that configuration during build time is correct for runtime.
(defun w32-init-info ()
(let* ((instdir (file-name-directory invocation-directory))
! (dir1 (expand-file-name "../share/info/" instdir))
! (dir2 (expand-file-name "../../../share/info/" instdir)))
(if (file-exists-p dir1)
(setq Info-default-directory-list
(append Info-default-directory-list (list dir1)))
diff -r -c3 --exclude=configure emacs-22.0.90.orig/lispintro/emacs-lisp-intro.texi emacs-22.0.90/lispintro/emacs-lisp-intro.texi
*** emacs-22.0.90.orig/lispintro/emacs-lisp-intro.texi 2006-08-24 21:12:48.000000000 +0200
--- emacs-22.0.90/lispintro/emacs-lisp-intro.texi 2006-11-15 02:58:08.000000000 +0100
***************
*** 88,94 ****
@c After creating the Info file, edit your Info `dir' file, if the
@c `dircategory' section below does not enable your system to
@c install the manual automatically.
! @c (The `dir' file is often in the `/usr/local/info/' directory.)
@c ================ How to Create an HTML file ================
--- 88,94 ----
@c After creating the Info file, edit your Info `dir' file, if the
@c `dircategory' section below does not enable your system to
@c install the manual automatically.
! @c (The `dir' file is often in the `/usr/local/share/info/' directory.)
@c ================ How to Create an HTML file ================
diff -r -c3 --exclude=configure emacs-22.0.90.orig/nt/paths.h emacs-22.0.90/nt/paths.h
*** emacs-22.0.90.orig/nt/paths.h 2006-02-07 23:37:40.000000000 +0100
--- emacs-22.0.90/nt/paths.h 2006-11-15 02:54:58.000000000 +0100
***************
*** 55,61 ****
/* Where the configuration process believes the info tree lives. The
lisp variable configure-info-directory gets its value from this
macro, and is then used to set the Info-default-directory-list. */
! /* #define PATH_INFO "/usr/local/info" */
#define PATH_INFO "C:/emacs/info"
/* arch-tag: f6d46f3c-e1e9-436b-8629-edcaf6597973
--- 55,61 ----
/* Where the configuration process believes the info tree lives. The
lisp variable configure-info-directory gets its value from this
macro, and is then used to set the Info-default-directory-list. */
! /* #define PATH_INFO "/usr/local/share/info" */
#define PATH_INFO "C:/emacs/info"
/* arch-tag: f6d46f3c-e1e9-436b-8629-edcaf6597973
diff -r -c3 --exclude=configure emacs-22.0.90.orig/src/epaths.in emacs-22.0.90/src/epaths.in
*** emacs-22.0.90.orig/src/epaths.in 2006-02-07 23:37:42.000000000 +0100
--- emacs-22.0.90/src/epaths.in 2006-11-15 02:56:16.000000000 +0100
***************
*** 52,58 ****
/* Where the configuration process believes the info tree lives. The
lisp variable configure-info-directory gets its value from this
macro, and is then used to set the Info-default-directory-list. */
! #define PATH_INFO "/usr/local/info"
/* Where Emacs should store game score files. */
#define PATH_GAME "/usr/local/var/games/emacs"
--- 52,58 ----
/* Where the configuration process believes the info tree lives. The
lisp variable configure-info-directory gets its value from this
macro, and is then used to set the Info-default-directory-list. */
! #define PATH_INFO "/usr/local/share/info"
/* Where Emacs should store game score files. */
#define PATH_GAME "/usr/local/var/games/emacs"
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: $prefix/info -> $prefix/share/info
2006-12-18 13:47 $prefix/info -> $prefix/share/info Bruno Haible
@ 2006-12-18 20:21 ` Eli Zaretskii
2006-12-20 14:24 ` Bruno Haible
2006-12-20 13:01 ` Richard Stallman
1 sibling, 1 reply; 8+ messages in thread
From: Eli Zaretskii @ 2006-12-18 20:21 UTC (permalink / raw)
Cc: emacs-devel
> From: Bruno Haible <bruno@clisp.org>
> Date: Mon, 18 Dec 2006 14:47:56 +0100
>
> For several years already, the GNU coding standards and the Linux
> Filesystem Hierarchy Standard specify that 'info' files should be installed
> in $prefix/share/info rather than in $prefix/info. The rationale is and was
> that 'info' files are not platform dependent.
>
> Since autoconf-2.60 was released 6 months ago, it is easy to actually
> implement this.
>
> But Emacs-22.0.90 still installs into $prefix/info.
>
> To follow the above cited standards, the following recipe can be used:
>
> 1) Regenerate the 'configure' file with autoconf-2.60 or -2.61. An
> invocation of 'autoconf' is all that's needed.
>
> 2) Apply this patch. I've verified that with this patch, Emacs installs its
> manuals into $prefix/share/info and that the info mode finds them there.
>
>
> 2006-12-17 Bruno Haible <bruno@clisp.org>
>
> * INSTALL: Mention /usr/local/share/info instead of /usr/local/info.
> * etc/emacs.1: Likewise.
> * src/epaths.in (PATH_INFO): Likewise.
> * nt/paths.h (PATH_INFO): Likewise.
> * lisp/paths.el (Info-default-directory-list): Put "share/" before "",
> before new info files will be installed in share/info.
> * lisp/info.el (Info-default-dirs): Look in $prefix/share/info instead
> of $prefix/info.
> * lisp/w32-fns.el (w32-init-info): Likewise.
Thanks, but the last change (to w32-fns.el) is not a good idea, since
invocation-directory there is not /usr/local/bin. So GNU standards
are not applicable to the w32 case, and the patch to that file just
wastes disk space (by creating an unneeded directory) and lengthens
file names without any visible benefits.
I have no opinion about the rest of the change.
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: $prefix/info -> $prefix/share/info
2006-12-18 20:21 ` Eli Zaretskii
@ 2006-12-20 14:24 ` Bruno Haible
2006-12-20 19:01 ` Eli Zaretskii
0 siblings, 1 reply; 8+ messages in thread
From: Bruno Haible @ 2006-12-20 14:24 UTC (permalink / raw)
Cc: emacs-devel
Eli Zaretskii wrote:
> the last change (to w32-fns.el) is not a good idea, since
> invocation-directory there is not /usr/local/bin. So GNU standards
> are not applicable to the w32 case, and the patch to that file just
> wastes disk space (by creating an unneeded directory) and lengthens
> file names without any visible benefits.
Well, if you think that Woe32 distributions of Emacs binaries should have
a different directory structure than Unix distributions of Emacs binaries,
and that users will like this, it's your choice. In this case, please
ignore the proposed patch to lisp/w32-fns.el.
Bruno
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: $prefix/info -> $prefix/share/info
2006-12-20 14:24 ` Bruno Haible
@ 2006-12-20 19:01 ` Eli Zaretskii
0 siblings, 0 replies; 8+ messages in thread
From: Eli Zaretskii @ 2006-12-20 19:01 UTC (permalink / raw)
Cc: emacs-devel
> From: Bruno Haible <bruno@clisp.org>
> Date: Wed, 20 Dec 2006 15:24:46 +0100
> Cc: emacs-devel@gnu.org
>
> Well, if you think that Woe32 distributions of Emacs binaries should have
> a different directory structure than Unix distributions of Emacs binaries,
> and that users will like this, it's your choice.
It doesn't matter much what I think ;-) The directory structure of an
installed Emacs on Windows is _already_ different, has been for quite
a while. It cannot be any other way, since Windows doesn't have the
Posix-standard /usr/ tree, nor the GNU-standard /usr/local/ tree.
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: $prefix/info -> $prefix/share/info
2006-12-18 13:47 $prefix/info -> $prefix/share/info Bruno Haible
2006-12-18 20:21 ` Eli Zaretskii
@ 2006-12-20 13:01 ` Richard Stallman
2006-12-20 14:24 ` Bruno Haible
1 sibling, 1 reply; 8+ messages in thread
From: Richard Stallman @ 2006-12-20 13:01 UTC (permalink / raw)
Cc: emacs-devel
Thanks for noticning this problem and working on it.
***************
*** 463,474 ****
(expand-file-name "info/" installation-directory)
(if invocation-directory
(let ((infodir (expand-file-name
! "../info/"
invocation-directory)))
(if (file-exists-p infodir)
infodir
(setq infodir (expand-file-name
! "../../../info/"
invocation-directory))
(and (file-exists-p infodir)
infodir))))))
--- 463,474 ----
(expand-file-name "info/" installation-directory)
(if invocation-directory
(let ((infodir (expand-file-name
! "../share/info/"
invocation-directory)))
(if (file-exists-p infodir)
infodir
(setq infodir (expand-file-name
! "../../../share/info/"
invocation-directory))
(and (file-exists-p infodir)
infodir))))))
I think that part is not correct. It assumes invocation-directory
will be /usr/local/SOMETHING, and that is not likely at all.
The same issue applies to the file w32-fns.el.
diff -r -c3 --exclude=configure emacs-22.0.90.orig/lisp/paths.el emacs-22.0.90/lisp/paths.el
*** emacs-22.0.90.orig/lisp/paths.el 2006-09-04 19:36:11.000000000 +0200
--- emacs-22.0.90/lisp/paths.el 2006-11-15 03:21:39.000000000 +0100
***************
*** 68,74 ****
(suffixes
;; Subdirectories in each directory tree that may contain info
;; directories.
! '("" "share/" "gnu/" "gnu/lib/" "gnu/lib/emacs/"
"emacs/" "lib/" "lib/emacs/"))
(standard-info-dirs
(apply #'nconc
--- 68,74 ----
(suffixes
;; Subdirectories in each directory tree that may contain info
;; directories.
! '("share/" "" "gnu/" "gnu/lib/" "gnu/lib/emacs/"
"emacs/" "lib/" "lib/emacs/"))
(standard-info-dirs
(apply #'nconc
What is the motive for this change?
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: $prefix/info -> $prefix/share/info
2006-12-20 13:01 ` Richard Stallman
@ 2006-12-20 14:24 ` Bruno Haible
2006-12-25 0:43 ` Richard Stallman
0 siblings, 1 reply; 8+ messages in thread
From: Bruno Haible @ 2006-12-20 14:24 UTC (permalink / raw)
Cc: emacs-devel
RMS wrote:
> ***************
> *** 463,474 ****
> (expand-file-name "info/" installation-directory)
> (if invocation-directory
> (let ((infodir (expand-file-name
> ! "../info/"
> invocation-directory)))
> (if (file-exists-p infodir)
> infodir
> (setq infodir (expand-file-name
> ! "../../../info/"
> invocation-directory))
> (and (file-exists-p infodir)
> infodir))))))
> --- 463,474 ----
> (expand-file-name "info/" installation-directory)
> (if invocation-directory
> (let ((infodir (expand-file-name
> ! "../share/info/"
> invocation-directory)))
> (if (file-exists-p infodir)
> infodir
> (setq infodir (expand-file-name
> ! "../../../share/info/"
> invocation-directory))
> (and (file-exists-p infodir)
> infodir))))))
>
> I think that part is not correct. It assumes invocation-directory
> will be /usr/local/SOMETHING, and that is not likely at all.
It doesn't look like that to me. The code either assumes that
the invocation-directory is 1 level under $prefix (such as $prefix/bin) or
3 levels under $prefix (such as $prefix/arch/x86/bin). In a normal install
from source on Unix, invocation-directory is actually $prefix/bin.
The proposed patch only changes the relative path of the infodir, relative
to $prefix.
> diff -r -c3 --exclude=configure emacs-22.0.90.orig/lisp/paths.el emacs-22.0.90/lisp/paths.el
> *** emacs-22.0.90.orig/lisp/paths.el 2006-09-04 19:36:11.000000000 +0200
> --- emacs-22.0.90/lisp/paths.el 2006-11-15 03:21:39.000000000 +0100
> ***************
> *** 68,74 ****
> (suffixes
> ;; Subdirectories in each directory tree that may contain info
> ;; directories.
> ! '("" "share/" "gnu/" "gnu/lib/" "gnu/lib/emacs/"
> "emacs/" "lib/" "lib/emacs/"))
> (standard-info-dirs
> (apply #'nconc
> --- 68,74 ----
> (suffixes
> ;; Subdirectories in each directory tree that may contain info
> ;; directories.
> ! '("share/" "" "gnu/" "gnu/lib/" "gnu/lib/emacs/"
> "emacs/" "lib/" "lib/emacs/"))
> (standard-info-dirs
> (apply #'nconc
>
> What is the motive for this change?
The purpose is to search $prefix/share/info/ before $prefix/info/. As many
packages start using autoconf >= 2.60, new manuals are installed into
$prefix/share/info/. A user who installs successive versions of a package
will thus have the old manual in $prefix/info/ and the newest manual in
$prefix/share/info/, and he wants to see the newest manual.
Bruno
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: $prefix/info -> $prefix/share/info
2006-12-20 14:24 ` Bruno Haible
@ 2006-12-25 0:43 ` Richard Stallman
2007-01-18 16:22 ` Chong Yidong
0 siblings, 1 reply; 8+ messages in thread
From: Richard Stallman @ 2006-12-25 0:43 UTC (permalink / raw)
Cc: emacs-devel
It doesn't look like that to me. The code either assumes that
the invocation-directory is 1 level under $prefix (such as $prefix/bin) or
3 levels under $prefix (such as $prefix/arch/x86/bin). In a normal install
from source on Unix, invocation-directory is actually $prefix/bin.
The proposed patch only changes the relative path of the infodir, relative
to $prefix.
Ok, you've convinced me.
Would someone please install that change, then ack?
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: $prefix/info -> $prefix/share/info
2006-12-25 0:43 ` Richard Stallman
@ 2007-01-18 16:22 ` Chong Yidong
0 siblings, 0 replies; 8+ messages in thread
From: Chong Yidong @ 2007-01-18 16:22 UTC (permalink / raw)
Richard Stallman <rms@gnu.org> writes:
> It doesn't look like that to me. The code either assumes that
> the invocation-directory is 1 level under $prefix (such as $prefix/bin) or
> 3 levels under $prefix (such as $prefix/arch/x86/bin). In a normal install
> from source on Unix, invocation-directory is actually $prefix/bin.
> The proposed patch only changes the relative path of the infodir, relative
> to $prefix.
>
> Ok, you've convinced me.
>
> Would someone please install that change, then ack?
Done.
^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2007-01-18 16:22 UTC | newest]
Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2006-12-18 13:47 $prefix/info -> $prefix/share/info Bruno Haible
2006-12-18 20:21 ` Eli Zaretskii
2006-12-20 14:24 ` Bruno Haible
2006-12-20 19:01 ` Eli Zaretskii
2006-12-20 13:01 ` Richard Stallman
2006-12-20 14:24 ` Bruno Haible
2006-12-25 0:43 ` Richard Stallman
2007-01-18 16:22 ` Chong Yidong
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/emacs.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).