176N/A# The contents of this file are subject to the terms of the
176N/A# Common Development and Distribution License (the "License").
176N/A# You may not use this file except in compliance with the License.
176N/A# See the License for the specific language governing permissions
176N/A# and limitations under the License.
176N/A# When distributing Covered Code, include this CDDL HEADER in each
176N/A# If applicable, add the following below this CDDL HEADER, with the
176N/A# fields enclosed by brackets "[]" replaced with your own identifying
176N/A# information: Portions Copyright [yyyy] [name of copyright owner]
3626N/A# Copyright (c) 2008, 2015, Oracle
and/or its affiliates. All rights reserved.
176N/ADESCRIPTION: GNU Emacs editor
176N/AThis file contains information about the emacs package within the Userland
176N/Aconsolidation. Along with the comments in the Makefile, it documents any
176N/Adeviations from standard Userland or emacs practice, as well as miscellaneous
176N/Ainformation needed to understand how this component is put together.
176N/A- We patch the following changes to the emacs sources:
3626N/A calc has a flaw that puts the X11 versions of emacs into a
3626N/A tight loop. This patch comes from the calc maintainer. The
3626N/A fix was applied to the GNU emacs "master" branch, in September
3626N/A 2014. It will be in version 25.1. We should be able to drop
3626N/A this patch when we upgrade to, or past, that release.
1406N/A The rgrep function uses the GNU-specific -path option to the
1406N/A find command. Change the default value for the find-program
4789N/A There is a bug in configure that causes it to believe that
4789N/A libjpeg on Solaris is not version 6b, and then to reject it:
4789N/A bug#20332: 24.5; With jpeg-6b configure says
4789N/A "WARNING: libjpeg found, bu
4789N/A This is the patch applied by Paul Eggert to the top of the
4789N/A emacs tree on 15 April 2015. We should be able to drop it in
4789N/A a COMPONENT_PREP_ACTION definition in the Makefile in order to get the
4789N/A configure script generated during the 'prep' phase. This must issue the
4789N/A same commands that would otherwise be generated by the emacs Makefile.
4789N/A To get those commands, comment out COMPONENT_PREP_ACTION, and do a
4789N/A 'gmake clobber; gmake build', capturing the output, and then look for
2134N/A- The emacs distribution used to have a subdirectory, src/s, which
2134N/A contained per-platform header files. We would apply the following
3855N/A patches. Please note that the contact information given in the comment
3855N/A in the first patch is no longer valid. Current information is found in
3855N/A the README file in the top level directory of this workspace:
2134N/A -#if 0 /* dldump does not handle all the extensions used by GNU ld. */
2134N/A + * Use the Solaris dldump() function to dump emacs, instead of
2134N/A + * the generic unexelf code.
2134N/A + * If you encounter a problem using dldump(), please consider sending
2134N/A + * a message to the OpenSolaris tools-linking mailing list:
2134N/A /* arch-tag: 71ea3857-89dc-4395-9623-77964e6ed3ca
2134N/A (do not change this comment) */
2134N/A /* This is not always necessary. Turned off at present for testers to
2134N/A identify any problems with gmalloc more accurately. */
2134N/A /* #define SYSTEM_MALLOC */
2134N/A /* There have problems reported with mmap at least on Solaris 2.6
2134N/A and 2.7. For simplicity, let's not use mmap for anything >= 2.5.
3855N/A These are now both handled by default by the configure process, and in fact,
3855N/A comments from the header files appear to have been carried over. With every
2134N/A update, we must verify that these settings stick and remain enabled.
2134N/A The information output at the end of the configure step verifies this:
2134N/A Configured for `x86_64-pc-solaris2.12'.
2134N/A Should Emacs use the GNU version of malloc? no
2134N/A (The GNU allocators don't work with this system configuration.)
2134N/A One could examine the configure script looking for the setting
2134N/A % pvs -nos emacs | grep dldump
176N/A- Emacs can be built as either 32-bit or 64-bit, depending on the target
176N/A machine. The benefit of a 64-bit emacs is that the size of the files it
176N/A can handle is not limited to 128MB, as it is with the 32-bit version.
176N/A run the 64-bit version if possible, and the 32-bit version otherwise. Note
176N/A that this was only done for the emacs binary itself, as there is no
176N/A technical need for 64-bit versions of the ancillary programs that come
176N/A with emacs (etags, emacsclient, etc).
176N/A Fortunately, the vast majority of the files in an emacs tree are identical,
176N/A regardless of the platform
and/or word size, which makes this particularly
176N/A With Solaris 11, all kernels are 64-bit, and we therefore do not need
176N/A the 32-bit executables. As such, we only supply 64-bit emacs binaries now,
176N/A builds necessary in half, and also the binary package size. It also
176N/A- There are three different toolkit options: None, Athena widgets
176N/A (aka Xaw, or lucid), and gtk. It would be nice to only support gtk,
176N/A but for purposes of minimization and user preference, we supply binaries
176N/A for all three. We follow the Linux model in this regard. The Xaw and no-X
176N/A versions are quite stable from release to release, so this isn't a large
4789N/A to exist, which will by default run the "best" version of emacs installed
4789N/A on the system. Older versions of Emacs for Solaris, dating back to the
4789N/A original integration into OpenSolaris, used a shell script that contained
4789N/A for EXE in emacs-gtk emacs-x emacs-nox; do
4789N/A is now an IPS mediated link. The admin can therefore use 'pkg set-mediator'
4789N/A to establish their preference. The mediator names are the same as those of
4789N/A the emacs binaries (emacs-gtk, emacs-x, emacs-nox). By default, the mediated
4789N/A link will give the same order as before (gtk, x, nox). The means by which
4789N/A this is achieved needs some explanation. The mediated options are by default
4789N/A priority, version, implementation-order, implementation
4789N/A Where "implementation" is sorted lexically. Lexical sorting puts emacs-gtk
4789N/A first, which is what we want, but it puts emacs-nox ahead of emacs-x. I
4789N/A played with setting the version or implementation-order values to achieve
4789N/A the desired sorting. This works, but as these are not real Emacs versions,
4789N/A the output from 'pkg mediator' is confusing. Instead, we set the priority
4789N/A of emacs-gtk and emacs-x to "vendor", and leave the priority of emacs-nox
4789N/A unspecified. Hence, emacs-gtk trumps emacs-x based on lexical sorting, and
4789N/A both of them trump emacs-nox based on priority.
2134N/A- In the past, we built emacs with gcc. The Makefile contained:
2134N/A # This code is built with gcc. The primary reason for this is that the
2134N/A # configure script has problems using a non-GNU cpp. I am not aware of
2134N/A # any reason Sun Studio could not be made to work, but simply made a
2134N/A With emacs 24.3, I removed this, and find that studio now builds
2134N/A emacs without issue. This is something that should be reverified
3855N/A- When updating to a new version, remember to ensure that the REQUIRED_PACKAGES
3855N/A lines in the Makefile are updated to match. Instructions can be found in the
3855N/A doc directory at the top of the userland workspace.
5078N/A This is currently complicated by additions not needed by the latest
5078N/A Solaris builds, which are added in order to be able to build this
5078N/A default branch on older releases of Solaris. Be careful in removing
5078N/A unnecessary REQUIRED_PACKAGES, as these additions are not tagged in a
5078N/A way that makes their purpose clear.
5078N/A- Emacs is currently configured to use GnuTLS 3 rather than version 2.
5078N/A As version 3 is temporarily installed in a non-default manner, this is
5078N/A achieved with the following additions to Makefile:
5078N/A # The configure script runs the pkg-config command. This allows it to
5078N/A # find the non-default GnuTLS v3 library.
176N/A- We deliver the following packages:
176N/A gnu-emacs - Everything you need to run emacs, except the
2134N/A gnu-emacs-gtk - Binary for the X11 version using the GTK toolkit.
2134N/A gnu-emacs-no-x11 - Pure tty emacs binary, built without
2134N/A any X11 linkage or other extra support (
i.e. D-bus). This
2134N/A is the most basic emacs possible, ideal for headless server
2134N/A gnu-emacs-x11 - Binary for the X11 version using the Athena
176N/A gnu-emacs-lisp - The compressed LISP files for which compiled
176N/A versions are delivered by gnu-emacs. These are only needed
176N/A for emacs developers and those who like to read source code.
176N/A The core gnu-emacs package is required by all of the other packages.
176N/A In turn, gnu-emacs requires at least one of the packages supplying an
176N/A emacs binary to be installed.
176N/A- We do not ship any
suid/sgid binaries for obvious security reasons.
176N/A this is that we do not install update-game-score as setuid, and
176N/A therefore the game files are not usable. This the same decision made
176N/A by Debian, among others.