34 information needed to understand how this component is put together. |
34 information needed to understand how this component is put together. |
35 |
35 |
36 |
36 |
37 - We patch the following changes to the emacs sources: |
37 - We patch the following changes to the emacs sources: |
38 |
38 |
39 sysmalloc.patch |
39 face_for_font.patch |
40 Use the system malloc instead of the built in one. |
40 xdisp.c has a call to face_for_font(), a function that is |
41 |
41 only present when window system support is included, which is |
42 dldump.patch |
42 not the case for emacs-nox. This patch ifdefs the offending |
43 Use the native Solaris dldump() function (emacs/src/unexsol.c) |
43 call away. |
44 to produce the dumped emacs, rather than the generic ELF |
|
45 code (emacs-xxx/src/unexelf.c). |
|
46 |
|
47 xft.patch |
|
48 Patch configure script to provide necessary missing |
|
49 libraries for the GTK version of emacs. |
|
50 |
|
51 eval_file_local_var.patch |
|
52 When the Emacs user option `enable-local-variables' is set to |
|
53 `:safe' (the default value is t), Emacs should automatically refuse |
|
54 to evaluate `eval' forms in file-local variable sections. See: |
|
55 |
|
56 http://www.openwall.com/lists/oss-security/2012/08/13/1 |
|
57 http://www.openwall.com/lists/oss-security/2012/08/13/2 |
|
58 |
44 |
59 find.patch |
45 find.patch |
60 The rgrep function uses the GNU-specific -path option to the |
46 The rgrep function uses the GNU-specific -path option to the |
61 find command. Change the default value for the find-program |
47 find command. Change the default value for the find-program |
62 variable in grep.el to use GNU find. |
48 variable in grep.el to use GNU find. |
63 |
49 |
64 tty_startup_hang.patch |
50 gtkutil.patch |
65 Emacs 23.x has a latent bug that causes it to run the X11 input |
51 This fixes a bug in emacs 24.3 in which a message like the |
66 select code even when running without a window system via the |
52 following is emitted to stderr on startup if emacs was started |
67 -nw option. This worked because a variable in libglib.so used |
53 with a specified geometry: |
68 to be zero, but in newer versions of libglib.so it is not. The |
|
69 result is that 'emacs -nw' hangs on startup and has to be killed |
|
70 from another shell. This is fixed in eamcs 24.2. See: |
|
71 |
54 |
72 http://debbugs.gnu.org/cgi/bugreport.cgi?bug=9754 |
55 (emacs:4090): Gtk-WARNING **: gtk_window_parse_geometry() called |
|
56 on a window with no visible children; the window should be set up |
|
57 before gtk_window_parse_geometry() is called. |
|
58 |
|
59 This was fixed upstream: |
|
60 |
|
61 https://bugzilla.redhat.com/show_bug.cgi?id=929353 |
|
62 http://bzr.savannah.gnu.org/lh/emacs/trunk/revision/111078 |
|
63 |
|
64 - The emacs distribution used to have a subdirectory, src/s, which |
|
65 contained per-platform header files. We would apply the following |
|
66 patches: |
|
67 |
|
68 sol2-6.h: Enable the use of the native Solaris dldump() |
|
69 |
|
70 --- sol2-6.h.~1~ 2011-10-17 19:20:46.000000000 -0600 |
|
71 +++ sol2-6.h 2013-09-23 13:34:26.683033182 -0600 |
|
72 @@ -2,10 +2,17 @@ |
|
73 |
|
74 #include "sol2-5.h" |
|
75 |
|
76 -#if 0 /* dldump does not handle all the extensions used by GNU ld. */ |
|
77 +/* |
|
78 + * Use the Solaris dldump() function to dump emacs, instead of |
|
79 + * the generic unexelf code. |
|
80 + * |
|
81 + * If you encounter a problem using dldump(), please consider sending |
|
82 + * a message to the OpenSolaris tools-linking mailing list: |
|
83 + * http://mail.opensolaris.org/mailman/listinfo/tools-linking |
|
84 + */ |
|
85 + |
|
86 #undef UNEXEC |
|
87 #define UNEXEC unexsol.o |
|
88 -#endif |
|
89 |
|
90 /* arch-tag: 71ea3857-89dc-4395-9623-77964e6ed3ca |
|
91 (do not change this comment) */ |
|
92 |
|
93 sol2-5.h: Use the system malloc instead of the GNU malloc: |
|
94 |
|
95 --- sol2-5.h.~1~ 2011-10-17 19:20:46.000000000 -0600 |
|
96 +++ sol2-5.h 2013-09-23 13:34:26.732656398 -0600 |
|
97 @@ -17,6 +17,7 @@ |
|
98 /* This is not always necessary. Turned off at present for testers to |
|
99 identify any problems with gmalloc more accurately. */ |
|
100 /* #define SYSTEM_MALLOC */ |
|
101 +#define SYSTEM_MALLOC |
|
102 |
|
103 /* There have problems reported with mmap at least on Solaris 2.6 |
|
104 and 2.7. For simplicity, let's not use mmap for anything >= 2.5. |
|
105 |
|
106 These are both handled by default by the configure process, and in fact, |
|
107 comments from the header file appear to have been carried over. With every |
|
108 update, we must verify that these settings stick and remain enabled. |
|
109 |
|
110 System Malloc: |
|
111 The information output at the end of the configure step verifies this: |
|
112 |
|
113 Configured for `x86_64-pc-solaris2.12'. |
|
114 ... |
|
115 Should Emacs use the GNU version of malloc? no |
|
116 (The GNU allocators don't work with this system configuration.) |
|
117 |
|
118 dldump: |
|
119 One could examine the configure script looking for the setting |
|
120 "UNEXEC_OBJ=unexsol.o", but it seems easier/better to simply examine |
|
121 the final executable: |
|
122 |
|
123 % pvs -nos emacs | grep dldump |
|
124 emacs - libc.so.1 (SUNW_1.22): dldump; |
73 |
125 |
74 - Emacs can be built as either 32-bit or 64-bit, depending on the target |
126 - Emacs can be built as either 32-bit or 64-bit, depending on the target |
75 machine. The benefit of a 64-bit emacs is that the size of the files it |
127 machine. The benefit of a 64-bit emacs is that the size of the files it |
76 can handle is not limited to 128MB, as it is with the 32-bit version. |
128 can handle is not limited to 128MB, as it is with the 32-bit version. |
77 |
129 |
96 but for purposes of minimization and user preference, we supply binaries |
148 but for purposes of minimization and user preference, we supply binaries |
97 for all three. We follow the Linux model in this regard. The Xaw and no-X |
149 for all three. We follow the Linux model in this regard. The Xaw and no-X |
98 versions are quite stable from release to release, so this isn't a large |
150 versions are quite stable from release to release, so this isn't a large |
99 burden. |
151 burden. |
100 |
152 |
|
153 - In the past, we built emacs with gcc. The Makefile contained: |
|
154 |
|
155 # This code is built with gcc. The primary reason for this is that the |
|
156 # configure script has problems using a non-GNU cpp. I am not aware of |
|
157 # any reason Sun Studio could not be made to work, but simply made a |
|
158 # cost/benefit decision not to pursue it at this time |
|
159 COMPILER = gcc |
|
160 |
|
161 With emacs 24.3, I removed this, and find that studio now builds |
|
162 emacs without issue. This is something that should be reverified |
|
163 with each update. |
|
164 |
|
165 - Remember to update resolve.deps when updating to a new version, |
|
166 as dependencies can change. Instructions are on the Userland website. |
|
167 |
101 - We deliver the following packages: |
168 - We deliver the following packages: |
102 |
169 |
103 gnu-emacs - Everything you need to run emacs, except the |
170 gnu-emacs - Everything you need to run emacs, except the |
104 emacs binaries. |
171 emacs binaries. |
105 |
172 |
106 gnu-emacs-gtk - Binaries for the X11 version using the GTK toolkit. |
173 gnu-emacs-gtk - Binary for the X11 version using the GTK toolkit. |
107 |
174 |
108 gnu-emacs-no-x11 - Pure tty emacs binaries, built without |
175 gnu-emacs-no-x11 - Pure tty emacs binary, built without |
109 any X11 linkage. Ideal for headless server systems. |
176 any X11 linkage or other extra support (i.e. D-bus). This |
|
177 is the most basic emacs possible, ideal for headless server |
|
178 systems. |
110 |
179 |
111 gnu-emacs-x11 - Binaries for the X11 version using the Athena |
180 gnu-emacs-x11 - Binary for the X11 version using the Athena |
112 widget (Xaw) toolkit. |
181 widget (Xaw) toolkit. |
113 |
182 |
114 gnu-emacs-lisp - The compressed LISP files for which compiled |
183 gnu-emacs-lisp - The compressed LISP files for which compiled |
115 versions are delivered by gnu-emacs. These are only needed |
184 versions are delivered by gnu-emacs. These are only needed |
116 for emacs developers and those who like to read source code. |
185 for emacs developers and those who like to read source code. |