1 NAME: emacs 2 VERSION: 23.1 3 DESCRIPTION: GNU Emacs editor 4 LICENSE: GPLv3 5 PACKAGE: SUNWgnu-emacs SUNWgnu-emacs-el SUNWgnu-emacs-gtk SUNWgnu-emacs-nox SUNWgnu-emacs-x 6 PROJECT_URL: http://www.gnu.org/software/emacs/ 7 SOURCE_DOWNLOAD: http://ftp.gnu.org/pub/gnu/emacs/emacs-23.1.tar.gz 8 SUPPORT: Community 9 BUGTRAQ: solaris/utility/emacs 10 OSR: 13016 11 COMMENTS: 12 - This code is built with gcc. The primary reason for this 13 is that the configure script has problems using a non-GNU 14 cpp. I am not aware of any reason Sun Studio could not be 15 made to work, but simply made a cost/benefit decision not to 16 pursue it at this time. 17 18 - I have made the following changes to the emacs sources: 19 20 buffer_menu.patch 21 Fixes an issue with GTK and the Buffers menu where the 22 menu contents is not updated to show the current buffers 23 and instead shows a stale list. I based these patches 24 on the official ones applied to the emacs development branch: 25 26 http://lists.gnu.org/archive/html/emacs-diffs/2009-09/msg00039.html 27 28 src/s/sol2-5.h 29 Use the system malloc instead of the built in one 30 31 src/s/sol2-6.h 32 Use the native Solaris dldump() function (emacs/src/unexsol.c) 33 to produce the dumped emacs, rather than the generic ELF 34 code (emacs-22.1/src/unexelf.c). 35 36 - Typically, emacs is built as either 32-bit or 64-bit, 37 depending on the target machine. The benefit of a 64-bit 38 emacs is that the size of the files it can handle is not 39 limited to 128MB, as it is with the 32-bit version. 40 41 For Solaris, we build both versions, using /usr/lib/isaexec 42 to run the 64-bit version if possible, and the 32-bit version 43 otherwise. Note that this is only done for the emacs binary 44 itself, as there is no technical need for 64-bit versions of 45 the ancillary programs that come with emacs (etags, 46 emacsclient, etc). 47 48 Fortunately, the vast majority of the files in an 49 emacs tree are identical, regardless of the platform 50 and/or word size, which makes this particularly easy to 51 do. 52 53 We create usr/lib/isaexec in our local proto, as well as the 54 files in usr/bin that link to it. This is done to allow testing 55 from the local proto. These files are not delivered to the real 56 proto. They are created on the users machine by the packaging system. 57 58 - There are three different toolkit options: None, Athena widgets 59 (aka Xaw, or lucid), and gtk. 60 61 - We deliver the following packages, in package cluster SUNWCgnu-emacs: 62 63 SUNWgnu-emacs - This contains the core emacs distribution, 64 minus the emacs binaries. 65 SUNWgnu-emacs-gtk - Binaries for the X11 version using the 66 GTK widget toolkit. 67 SUNWgnu-emacs-nox - Pure tty emacs binaries, built without 68 any X11 linkage. 69 SUNWgnu-emacs-x - Binaries for the X11 version using the 70 Athena widget (Xaw) toolkit. 71 SUNWgnu-emacs-el - The compressed LISP files for which compiled 72 versions are delivered by SUNWgnu-emacs. 73 74 SUNWgnu-emacs is required by the other packages. 75 76 Note that earlier versions (22.1) of SUNWgnu-emacs-gtk did not 77 deliver sparcv9 binaries, as there were unresolved GTK issues. 78 This appears to be solved in emacs 23, and we now deliver the 79 sparcv9 binaries. 80 81 - The emacs Makefile install rule does more than copy files around. 82 It runs emacs in batch mode to generate compiled lisp files, 83 compresses uncompiled lisp files, and performs other arbitrary 84 actions we'd rather not have to duplicate. 85 86 The problem is that the install rule is intended to install the files 87 in their final location, whereas we want to deliver them into the proto 88 area, package them, and then have the packages eventually install them. 89 If we configure the makefile to point at the proto, the results will 90 be wrong at runtime (emacs is aware of its installation location). 91 92 My solution to this is as follows: 93 94 - Makefile.sfw configures emacs for its final installation 95 location, causing the binaries and lisp code to contain 96 the proper final paths. 97 98 - Makefile.sfw runs the emacs makefile install rule to populate 99 a local proto directory by overriding the Make variables 100 used to place the files. 101 102 - install-sfw copies the files from the local proto directory 103 into the workspace proto. 104 105 - Packing then proceeds as usual 106 107 When upgrading the version of emacs, you should be careful to test 108 and ensure that this trick still works. Also, different versions of 109 emacs are likely to have a slightly different list of files that are 110 delivered and packaged. The best way to determine this is to change 111 PREFIX in install-sfw to an empty scratch directory, run it, and then 112 examine the files that are installed there. 113 114 - To produce the Solaris emacs packages, we need to build the 115 emacs tree multiple times, using slightly different options 116 each time. The build_emacs script is used to encapsulate this 117 process. 118 119 - We do not install the files under /var/games/emacs. The reason for 120 this is that we do not install update-game-score as setuid, and 121 therefore the game files are not usable. This the same decision made 122 by Debian, among others. 123