components/emacs/README
branchs11-update
changeset 2856 47b35501403f
parent 2523 f99c0e9ebba7
child 3626 48d8d7ae6e0a
--- a/components/emacs/README	Wed Dec 18 10:04:53 2013 -0800
+++ b/components/emacs/README	Wed Dec 18 15:13:15 2013 -0700
@@ -22,7 +22,7 @@
 #
 
 NAME:             emacs
-VERSION:          23.4
+VERSION:          24.3
 DESCRIPTION:      GNU Emacs editor
 LICENSE:          GPLv3
 BUGTRAQ:          solaris/utility/emacs
@@ -36,40 +36,92 @@
 
 - We patch the following changes to the emacs sources:
 
-	sysmalloc.patch
-	    Use the system malloc instead of the built in one.
-
-	dldump.patch
-	    Use the native Solaris dldump() function (emacs/src/unexsol.c)
-	    to produce the dumped emacs, rather than the generic ELF
-	    code (emacs-xxx/src/unexelf.c).
-
-	xft.patch
-	    Patch configure script to provide necessary missing
-	    libraries for the GTK version of emacs.
-
-	eval_file_local_var.patch
-	    When the Emacs user option `enable-local-variables' is set to
-	    `:safe' (the default value is t), Emacs should automatically refuse
-	    to evaluate `eval' forms in file-local variable sections. See:
-
-		http://www.openwall.com/lists/oss-security/2012/08/13/1
-		http://www.openwall.com/lists/oss-security/2012/08/13/2
+	face_for_font.patch
+	    xdisp.c has a call to face_for_font(), a function that is
+	    only present when window system support is included, which is
+	    not the case for emacs-nox. This patch ifdefs the offending
+	    call away.
 
 	find.patch
 	    The rgrep function uses the GNU-specific -path option to the
 	    find command. Change the default value for the find-program
 	    variable in grep.el to use GNU find.
 
-	tty_startup_hang.patch
-	    Emacs 23.x has a latent bug that causes it to run the X11 input
-	    select code even when running without a window system via the
-	    -nw option. This worked because a variable in libglib.so used
-	    to be zero, but in newer versions of libglib.so it is not. The
-	    result is that 'emacs -nw' hangs on startup and has to be killed
-	    from another shell. This is fixed in eamcs 24.2. See:
+	gtkutil.patch
+	    This fixes a bug in emacs 24.3 in which a message like the
+	    following is emitted to stderr on startup if emacs was started
+	    with a specified geometry:
+
+	    (emacs:4090): Gtk-WARNING **: gtk_window_parse_geometry() called
+	    on a window with no visible children; the window should be set up
+	    before gtk_window_parse_geometry() is called.
+
+	    This was fixed upstream: 
+
+	        https://bugzilla.redhat.com/show_bug.cgi?id=929353
+		http://bzr.savannah.gnu.org/lh/emacs/trunk/revision/111078
+
+- The emacs distribution used to have a subdirectory, src/s, which
+  contained per-platform header files. We would apply the following
+  patches:
+
+    sol2-6.h: Enable the use of the native Solaris dldump()
 
-		http://debbugs.gnu.org/cgi/bugreport.cgi?bug=9754
+        --- sol2-6.h.~1~        2011-10-17 19:20:46.000000000 -0600
+        +++ sol2-6.h    2013-09-23 13:34:26.683033182 -0600
+        @@ -2,10 +2,17 @@
+         
+         #include "sol2-5.h"
+         
+        -#if 0 /* dldump does not handle all the extensions used by GNU ld.  */
+        +/*
+        + * Use the Solaris dldump() function to dump emacs, instead of
+        + * the generic unexelf code.
+        + *
+        + * If you encounter a problem using dldump(), please consider sending
+        + * a message to the OpenSolaris tools-linking mailing list:
+        + *      http://mail.opensolaris.org/mailman/listinfo/tools-linking
+        + */
+        +
+         #undef UNEXEC
+         #define UNEXEC unexsol.o
+        -#endif
+         
+         /* arch-tag: 71ea3857-89dc-4395-9623-77964e6ed3ca
+            (do not change this comment) */
+
+    sol2-5.h: Use the system malloc instead of the GNU malloc:
+
+        --- sol2-5.h.~1~        2011-10-17 19:20:46.000000000 -0600
+        +++ sol2-5.h    2013-09-23 13:34:26.732656398 -0600
+        @@ -17,6 +17,7 @@
+         /* This is not always necessary.  Turned off at present for testers to
+            identify any problems with gmalloc more accurately.  */
+         /* #define SYSTEM_MALLOC */
+        +#define SYSTEM_MALLOC
+         
+         /* There have problems reported with mmap at least on Solaris 2.6
+            and 2.7.  For simplicity, let's not use mmap for anything >= 2.5.
+
+  These are both handled by default by the configure process, and in fact,
+  comments from the header file appear to have been carried over. With every
+  update, we must verify that these settings stick and remain enabled.
+
+    System Malloc:
+    The information output at the end of the configure step verifies this:
+
+        Configured for `x86_64-pc-solaris2.12'.
+	...
+          Should Emacs use the GNU version of malloc?             no
+            (The GNU allocators don't work with this system configuration.)
+
+    dldump:
+    One could examine the configure script looking for the setting
+    "UNEXEC_OBJ=unexsol.o", but it seems easier/better to simply examine
+    the final executable:
+
+        % pvs -nos emacs | grep dldump
+        emacs - libc.so.1 (SUNW_1.22): dldump;
 
 - Emacs can be built as either 32-bit or 64-bit, depending on the target
   machine. The benefit of a 64-bit emacs is that the size of the files it
@@ -98,17 +150,34 @@
   versions are quite stable from release to release, so this isn't a large
   burden.
 
+- In the past, we built emacs with gcc. The Makefile contained:
+
+    # This code is built with gcc. The primary reason for this is that the
+    # configure script has problems using a non-GNU cpp. I am not aware of
+    # any reason Sun Studio could not be made to work, but simply made a
+    # cost/benefit decision not to pursue it at this time
+    COMPILER =      gcc
+
+  With emacs 24.3, I removed this, and find that studio now builds
+  emacs without issue. This is something that should be reverified
+  with each update.
+
+- Remember to update resolve.deps when updating to a new version,
+  as dependencies can change. Instructions are on the Userland website.
+
 - We deliver the following packages:
 
 	gnu-emacs - Everything you need to run emacs, except the
 	    emacs binaries.
 
-	gnu-emacs-gtk - Binaries for the X11 version using the GTK toolkit.
+	gnu-emacs-gtk - Binary for the X11 version using the GTK toolkit.
 
-	gnu-emacs-no-x11 - Pure tty emacs binaries, built without
-	    any X11 linkage. Ideal for headless server systems.
+	gnu-emacs-no-x11 - Pure tty emacs binary, built without
+	    any X11 linkage or other extra support (i.e. D-bus). This
+	    is the most basic emacs possible, ideal for headless server
+	    systems.
 
-	gnu-emacs-x11 - Binaries for the X11 version using the Athena
+	gnu-emacs-x11 - Binary for the X11 version using the Athena
 	    widget (Xaw) toolkit.
 
 	gnu-emacs-lisp - The compressed LISP files for which compiled