]> git.eshelyaron.com Git - emacs.git/commitdiff
Revert the --with-install-srcdir patch
authorPaul Eggert <eggert@cs.ucla.edu>
Tue, 28 Jan 2020 07:04:20 +0000 (23:04 -0800)
committerPaul Eggert <eggert@cs.ucla.edu>
Tue, 28 Jan 2020 07:17:10 +0000 (23:17 -0800)
Also, update description of debuginfo and sources to match
Debian and Red Hat more accurately, and move this sad tale
from INSTALL to etc/PROBLEMS which is a better home for it.
* Makefile.in (emacs_srcdir, install-c-src):
* configure.ac (emacs_srcdir, --with-install-srcdir):
* src/epaths.in (PATH_EMACS_SOURCE):
* src/lread.c (emacs-source-directory):
Remove.  All uses removed.
* lisp/emacs-lisp/find-func.el (find-function-C-source):
Do not worry about compressed C sources.
* src/lread.c: Do not include <dosname.h>.

INSTALL
Makefile.in
configure.ac
etc/NEWS
etc/PROBLEMS
lisp/emacs-lisp/find-func.el
lisp/startup.el
src/epaths.in
src/lread.c

diff --git a/INSTALL b/INSTALL
index 7a1b46872d47c7da453dbbc71a34930f2ff74289..f1ceb2c1bf84de68ff5bd13c807af2fc56138139 100644 (file)
--- a/INSTALL
+++ b/INSTALL
@@ -215,43 +215,6 @@ eg 'emacs25').  On Red Hat-based systems, the corresponding command is
 'dnf builddep emacs' (on older systems, use 'yum-builddep' instead).
 
 
-DEBUGGING AN INSTALLED EMACS
-
-* Installed Emacs source code
-
-Emacs typically installs a compressed copy of much of its source code,
-to make it easy for users to read Emacs source code via commands like
-M-x describe-function (C-h f) to display the definition of a function.
-This compressed copy ordinarily includes both the Elisp source code
-that Emacs is mostly written in, as well as the C source code for the
-core Emacs executable.
-
-* GNU/Linux source and debug packages
-
-Many GNU/Linux systems provide separate packages containing the
-sources and debug symbols of Emacs.  They can help you debug the
-installed Emacs on the C level.  The procedures for installing these
-packages depend on the GNU/Linux system that you use.
-
-Emacs debugging symbols are distributed by a debug package if one
-exists for your system.  On Debian-based systems, you can
-install a debug package of Emacs with a command like 'apt-get install
-emacs-dbg' (on older systems, replace 'emacs' with e.g. 'emacs25').
-On Red Hat-based systems, the corresponding command is 'dnf
-debuginfo-install emacs'; this may require adding the *-debuginfo
-repositories first, via 'dnf config-manager --set-enabled
-fedora-debuginfo updates-debuginfo'.
-
-Some systems also have an Emacs source package that is also helpful
-when debugging the installed Emacs.  To unpack an Emacs source package
-into the current directory on Debian-based systems, you can use a
-command like 'apt-get source emacs' (on older systems, replace 'emacs'
-with e.g. 'emacs25'); you may first need to add the appropriate
-'source' URIs to your sources.list.  On Red Hat-based systems,
-installing the debugging symbols automatically installs the
-corresponding source package in the appropriate location.
-
-
 DETAILED BUILDING AND INSTALLATION:
 
 (This is for a Unix or Unix-like system.  For GNUstep and macOS,
index adefa98fd026f217a7295616e1f9435c5285f231..2c82c49fba50b4417f11ce161a8bd6c2a6ef4ff4 100644 (file)
@@ -266,9 +266,6 @@ etcdir=@etcdir@
 # once.
 archlibdir=@archlibdir@
 
-# Where to install Emacs C source code, or empty if it is not installed.
-emacs_srcdir=@emacs_srcdir@
-
 # Where to put the etc/DOC file.
 etcdocdir=@etcdocdir@
 
@@ -377,7 +374,6 @@ epaths-force:
          -e 's;\(#.*PATH_BITMAPS\).*$$;\1 "${bitmapdir}";'             \
          -e 's;\(#.*PATH_X_DEFAULTS\).*$$;\1 "${x_default_search_path}";' \
          -e 's;\(#.*PATH_GAME\).*$$;\1 $(PATH_GAME);'                  \
-         -e 's;\(#.*PATH_EMACS_SOURCE\).*$$;\1 "${emacs_srcdir}";'     \
          -e 's;\(#.*PATH_DOC\).*$$;\1 "${etcdocdir}";') &&             \
        ${srcdir}/build-aux/move-if-change epaths.h.$$$$ src/epaths.h
 
@@ -465,7 +461,7 @@ $(srcdir)/configure: $(srcdir)/configure.ac $(srcdir)/m4/*.m4
 # ==================== Installation ====================
 
 .PHONY: install install-arch-dep install-arch-indep install-etcdoc install-info
-.PHONY: install-man install-c-src install-etc install-strip install-$(NTDIR)
+.PHONY: install-man install-etc install-strip install-$(NTDIR)
 .PHONY: uninstall uninstall-$(NTDIR)
 
 ## If we let lib-src do its own installation, that means we
@@ -572,8 +568,7 @@ set_installuser=for installuser in $${LOGNAME} $${USERNAME} $${USER} \
 ## work correctly, and therefore no idea when tar can be replaced.
 ## See also these comments from 2004 about cp -r working fine:
 ## https://lists.gnu.org/r/autoconf-patches/2004-11/msg00005.html
-install-arch-indep: lisp install-info install-man install-c-src \
-  $(INSTALL_ARCH_INDEP_EXTRA)
+install-arch-indep: lisp install-info install-man ${INSTALL_ARCH_INDEP_EXTRA}
        umask 022 && $(MKDIR_P) "$(DESTDIR)$(includedir)"
        $(INSTALL_DATA) src/emacs-module.h "$(DESTDIR)$(includedir)/emacs-module.h"
        -set ${COPYDESTS} ; \
@@ -705,28 +700,6 @@ install-man:
          ${GZIP_PROG} -9n "$(DESTDIR)${man1dir}/$${dest}" || true; \
        done
 
-install-c-src:
-ifneq (,$(emacs_srcdir))
-       -unset CDPATH; \
-       umask 022; $(MKDIR_P) "$(DESTDIR)$(emacs_srcdir)/src" && \
-       exp_sourcesrcdir=`cd "$(DESTDIR)$(emacs_srcdir)/src" && /bin/pwd` && \
-       [ "`cd $(srcdir)/src && /bin/pwd`" = "$$exp_sourcesrcdir" ] || { \
-         $(set_installuser); \
-         printf 'Copying compressed C sources to %s ...\n' \
-                "$(DESTDIR)$(emacs_srcdir)/src"; \
-         for file in `cd $(srcdir) && echo src/*.[cm]`; do \
-           installed_file="$(DESTDIR)$(emacs_srcdir)/$$file" && \
-           $(INSTALL_DATA) "$$file" "$$installed_file" && \
-           [ -z "$(GZIP_PROG)" ] || { \
-             rm -f "$$installed_file.gz" && \
-             $(GZIP_PROG) -9n "$$installed_file" && \
-             installed_file=$$installed_file.gz; \
-           } || exit; \
-           chown $$installuser "$$installed_file" || true; \
-         done; \
-       }
-endif
-
 ## Install those items from etc/ that need to end up elsewhere.
 
 ## If you prefer, choose "emacs22" at installation time.
index 4de83c6b2613188aeba96259b04754244e2620c6..27e44dacfb21657d5ba0ae355f11bea7287c06e3 100644 (file)
@@ -194,7 +194,6 @@ locallisppath='${datadir}/emacs/${version}/site-lisp:'\
 lisppath='${locallisppath}:${standardlisppath}'
 etcdir='${datadir}/emacs/${version}/etc'
 archlibdir='${libexecdir}/emacs/${version}/${configuration}'
-emacs_srcdir='${datadir}/emacs/${version}'
 etcdocdir='${datadir}/emacs/${version}/etc'
 gamedir='${localstatedir}/games/emacs'
 
@@ -541,15 +540,6 @@ elif test "${enableval}" != "yes"; then
   locallisppath=${enableval} locallisppathset=yes
 fi)
 
-AC_ARG_ENABLE([install-srcdir],
-  [AS_HELP_STRING([--disable-install-srcdir],
-     [do not install low-level Emacs source code useful for debugging.])],
-  [case $enableval in
-     yes) ;;
-     no) emacs_srcdir=;;
-     *) AC_MSG_ERROR([invalid install-srcdir]);;
-   esac])
-
 AC_ARG_ENABLE(checking,
 [AS_HELP_STRING([--enable-checking@<:@=LIST@:>@],
                [enable expensive checks.  With LIST,
@@ -2058,9 +2048,6 @@ if test "${HAVE_NS}" = yes; then
      dnl This one isn't really used, only archlibdir is.
      libexecdir="\${ns_appbindir}/libexec"
      archlibdir="\${ns_appbindir}/libexec"
-     case $emacs_srcdir in
-       ?*) emacs_srcdir="\${ns_appresdir}";;
-     esac
      etcdocdir="\${ns_appresdir}/etc"
      etcdir="\${ns_appresdir}/etc"
      dnl FIXME maybe set datarootdir instead.
@@ -5243,7 +5230,6 @@ AC_SUBST(lisppath)
 AC_SUBST(x_default_search_path)
 AC_SUBST(etcdir)
 AC_SUBST(archlibdir)
-AC_SUBST([emacs_srcdir])
 AC_SUBST(etcdocdir)
 AC_SUBST(bitmapdir)
 AC_SUBST(gamedir)
index 276b8f46e819064fa56b3b0f5ded96230d53680e..5395f2ccfb2f6ec28495aa89c9685c60cbb4bd14 100644 (file)
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -58,12 +58,6 @@ shaping, so 'configure' now recommends that combination.
 ** The ftx font backend driver has been removed.
 It was declared obsolete in Emacs 27.1.
 
----
-** Emacs now installs a copy of its C source code, used for debugging help.
-For example, pressing the first button in the *Help* buffer generated
-by 'C-h f car RET' now takes you to a copy of the C-language
-implementation of the function 'car'.
-
 \f
 * Startup Changes in Emacs 28.1
 
@@ -148,10 +142,6 @@ called when the function object is garbage-collected.  Use
 ** 'parse-time-string' can now parse ISO 8601 format strings,
 such as "2020-01-15T16:12:21-08:00".
 
-** The new variable 'emacs-source-directory' gives the location of
-a copy of the Emacs source code, which is now typically installed as a
-set of compressed source-code files.
-
 \f
 * Changes in Emacs 28.1 on Non-Free Operating Systems
 
index 9e4a631c729c5d0216926e5cea571f0f583a6fd3..4ce738d9a54d85e9f5575c3a60661d68bbc154c1 100644 (file)
@@ -318,6 +318,83 @@ element from LD_LIBRARY_PATH before starting emacs proper.
 Or you could recompile Emacs with an -Wl,-rpath option that
 gives the location of the correct libotf.
 
+* Problems when reading or debugging Emacs C code
+
+Because Emacs does not install a copy of its C source code, users
+normally cannot easily read that code via commands like 'M-x
+describe-function' (C-h f) that display the definition of a function.
+However, some GNU/Linux systems provide separate packages containing
+this source code which can get C-h f to work if you are willing to do
+some tinkering, and some systems also provide packages containing
+debug info, which when combined with the source can be used to debug
+Emacs at the C level.
+
+** Debian-based source and debuginfo
+
+On recent Debian-based systems, you can obtain and use a source
+package of Emacs as follows.
+
+*** Add the appropriate URI to /etc/apt/sources.list.
+
+To do this, become superuser and uncomment or add the appropriate
+'deb-src' line.  Details depend on the distribution.
+
+*** Execute a command like 'apt-get source emacs'.
+
+On older systems, append the top-level version number, e.g., 'apt-get
+source emacs25'.  The target directory for unpacking the source tree
+is the current directory.
+
+*** Set find-function-C-source-directory accordingly.
+
+Once you have installed the source package, for example at
+/home/myself/deb-src/emacs-26.3, add the following line to your
+startup file:
+
+     (setq find-function-C-source-directory
+           "/home/myself/deb-src/emacs-26.3/src/")
+
+The installation directory of the Emacs source package will contain
+the exact package name and version number of Emacs that is installed
+on your system.  If a new Emacs package is installed, the source
+package must be reinstalled as well, and the setting in your startup
+file must be updated.
+
+*** Debian-based debuginfo
+
+You can also install a debug package of Emacs with a command like
+'apt-get install emacs-dbg' (on older systems, 'apt-get install
+emacs25-dbg').  You need to arrange for GDB to find where you
+installed the source code, e.g., by using GDB's 'directory' command.
+
+** Red Hat-based source and debuginfo
+
+On recent Red Hat-based systems, you can install source and debug info
+via superuser commands like the following:
+
+  # Add the *-debuginfo repositories (exact command depends on system).
+  dnf config-manager --set-enabled fedora-debuginfo updates-debuginfo'
+
+  # Install Emacs source and debug info.
+  dnf install emacs-debugsource
+
+To get describe-function and similar commands to work, you can then
+add something like the following to your startup file:
+
+     (setq find-function-C-source-directory
+           "/usr/src/debug/emacs-26.3-1.fc31.x86_64/src/")
+
+However, the exact directory name will depend on the system, and you
+will need to both upgrade source and debug info when your system
+upgrades or patches Emacs, and change your startup file accordingly.
+
+** Source and debuginfo for other systems
+
+If your system follows neither the Debian nor the Red Hat patterns,
+you can obtain the source and debuginfo by obtaining the source code
+of Emacs, building Emacs with the appropriate debug flags enabled, and
+running the just-built Emacs.
+
 * General runtime problems
 
 ** Lisp problems
index be53324f1413c20162822bfb8c33098f5ea3172e..167ead3ce02bc9ca5b57fa68c1ad6cbc57933bf8 100644 (file)
@@ -219,10 +219,8 @@ LIBRARY should be a string (the name of the library)."
             (locate-file basename (list dir) (find-library-suffixes)))))))
 
 (defvar find-function-C-source-directory
-  (let ((dir (expand-file-name "src" emacs-source-directory)))
-    (if (file-accessible-directory-p dir) dir
-      (setq dir (expand-file-name "src" source-directory))
-      (if (file-accessible-directory-p dir) dir)))
+  (let ((dir (expand-file-name "src" source-directory)))
+    (if (file-accessible-directory-p dir) dir))
   "Directory where the C source files of Emacs can be found.
 If nil, do not try to find the source code of functions and variables
 defined in C.")
@@ -247,10 +245,7 @@ TYPE should be nil to find a function, or `defvar' to find a variable."
   (let ((dir (or find-function-C-source-directory
                  (read-directory-name "Emacs C source dir: " nil nil t))))
     (setq file (expand-file-name file dir))
-    (if (or (file-readable-p file)
-           (let ((file-gz (concat file ".gz")))
-             (and (file-readable-p file-gz)
-                  (setq file file-gz))))
+    (if (file-readable-p file)
         (if (null find-function-C-source-directory)
             (setq find-function-C-source-directory dir))
       (error "The C source file %s is not available"
index 676fb35e000b183253ba176e2c4f329bbc3ac482..1f545c6692277c51396283b4a171f3afc450ebd9 100644 (file)
@@ -623,8 +623,7 @@ It is the default value of the variable `top-level'."
                (set pathsym (mapcar (lambda (dir)
                                       (decode-coding-string dir coding t))
                                     path)))))
-       (dolist (filesym '(data-directory doc-directory emacs-source-directory
-                                         exec-directory
+       (dolist (filesym '(data-directory doc-directory exec-directory
                                          installation-directory
                                          invocation-directory invocation-name
                                          source-directory
index 554fdd7228ad5ee5f620c2afd77931e6e65203b2..3cadd160ecf960a4b2be515a9f85db837457bed3 100644 (file)
@@ -73,9 +73,5 @@ along with GNU Emacs.  If not, see <https://www.gnu.org/licenses/>.  */
 /* Where Emacs should store game score files.  */
 #define PATH_GAME "/usr/local/var/games/emacs"
 
-/* Where Emacs should look for its own installed source code,
-   or the empty string if the source code is not installed.  */
-#define PATH_EMACS_SOURCE "/usr/local/share/emacs"
-
 /* Where Emacs should look for the application default file. */
 #define PATH_X_DEFAULTS "/usr/lib/X11/%L/%T/%N%C%S:/usr/lib/X11/%l/%T/%N%C%S:/usr/lib/X11/%T/%N%C%S:/usr/lib/X11/%L/%T/%N%S:/usr/lib/X11/%l/%T/%N%S:/usr/lib/X11/%T/%N%S"
index 274491f0229a3f1b2df6c60fe0511539375b7650..69dd73912bc82e993af8aea9dd9b4b8333653e45 100644 (file)
@@ -44,7 +44,6 @@ along with GNU Emacs.  If not, see <https://www.gnu.org/licenses/>.  */
 #include "blockinput.h"
 #include "pdumper.h"
 #include <c-ctype.h>
-#include <dosname.h>
 #include <vla.h>
 
 #ifdef MSDOS
@@ -4993,18 +4992,11 @@ and is not meant for users to change.  */);
 
   DEFVAR_LISP ("source-directory", Vsource_directory,
               doc: /* Directory in which Emacs sources were found when Emacs was built.
-You cannot count on them to still be there!  Also see
-`emacs-source-directory'.  */);
+You cannot count on them to still be there!  */);
   Vsource_directory
     = Fexpand_file_name (build_string ("../"),
                         Fcar (decode_env_path (0, PATH_DUMPLOADSEARCH, 0)));
 
-  DEFVAR_LISP ("emacs-source-directory", Vemacs_source_directory,
-              doc: /* Directory where Emacs sources can be found.  */);
-  Vemacs_source_directory = (IS_ABSOLUTE_FILE_NAME (PATH_EMACS_SOURCE)
-                            ? build_string (PATH_EMACS_SOURCE)
-                            : Vsource_directory);
-
   DEFVAR_LISP ("preloaded-file-list", Vpreloaded_file_list,
               doc: /* List of files that were preloaded (when dumping Emacs).  */);
   Vpreloaded_file_list = Qnil;