1
0
mirror of https://git.savannah.gnu.org/git/emacs.git synced 2025-01-11 16:08:13 +00:00

Simplify Solaris port

This should avoid some configuration confusion as exemplified
by Jeffrey Walton’s recent bug report (Bug#42675).
* configure.ac (opsys): Simplify Solaris configuration by
not worrying about Solaris 9 and earlier, as they are no
longer supported by the Solaris developers.  This should
support Walton’s ‘./configure --build=x86_64-sun-solaris’.
Instead of bothering with ‘opsys=sol2-6’ and ‘opsys=sol2-10’,
just use ‘opsys=solaris’.  All uses changed.
(emacs_check_sunpro_c): Remove unused var.
* doc/misc/tramp.texi (Remote programs):
* etc/MACHINES, etc/PROBLEMS:
Modernize PATH for Oracle Developer Studio.
* etc/PROBLEMS: Move Solaris-related problems to legacy area,
except those that are still relevant.
This commit is contained in:
Paul Eggert 2020-08-05 17:36:50 -07:00
parent 1a99697b4d
commit 155b2c8a8d
5 changed files with 110 additions and 132 deletions

View File

@ -748,44 +748,21 @@ case "${canonical}" in
opsys=aix4-2
;;
## Suns
*-sun-solaris* \
| i[3456]86-*-solaris2* | i[3456]86-*-sunos5* \
| x86_64-*-solaris2* | x86_64-*-sunos5*)
## Solaris
*-*-solaris* | *-*-sunos*)
case "${canonical}" in
i[3456]86-*-* ) ;;
amd64-*-*|x86_64-*-*) ;;
sparc* ) ;;
* ) unported=yes ;;
esac
case "${canonical}" in
*-sunos5.[1-9][0-9]* | *-solaris2.[1-9][0-9]* )
opsys=sol2-10
emacs_check_sunpro_c=yes
;;
*-sunos5.[1-5]* | *-solaris2.[1-5]* ) unported=yes ;;
## Note that Emacs 23.1's NEWS said the following would be dropped.
*-sunos5.6* | *-solaris2.6* )
opsys=sol2-6
RANLIB="ar -ts"
;;
## 5.7 EOL Aug 2008, 5.8 EOL Mar 2012.
*-sunos5.[7-9]* | *-solaris2.[7-9]* )
opsys=sol2-6
emacs_check_sunpro_c=yes
;;
esac
opsys=solaris
## Watch out for a compiler that we know will not work.
case "${canonical}" in
*-solaris* | *-sunos5* )
if [ "x$CC" = x/usr/ucb/cc ]; then
## /usr/ucb/cc doesn't work;
## we should find some other compiler that does work.
unset CC
fi
;;
*) ;;
esac
if [ "$CC" = /usr/ucb/cc ]; then
## /usr/ucb/cc doesn't work;
## we should find some other compiler that does work.
unset CC
fi
;;
## QNX Neutrino
@ -1476,14 +1453,11 @@ case "$opsys" in
mingw32)
UNEXEC_OBJ=unexw32.o
;;
sol2-10)
solaris)
# Use the Solaris dldump() function, called from unexsol.c, to dump
# emacs, instead of the generic ELF dump code found in unexelf.c.
# The resulting binary has a complete symbol table, and is better
# for debugging and other observability tools (debuggers, pstack, etc).
#
# It is likely that dldump() works with older Solaris too, but this has
# not been tested, so for now this change is for Solaris 10 or newer.
UNEXEC_OBJ=unexsol.o
;;
*)
@ -1586,7 +1560,7 @@ case "$opsys" in
qnxnto) LIBS_SYSTEM="-lsocket" ;;
sol2*) LIBS_SYSTEM="-lsocket -lnsl" ;;
solaris) LIBS_SYSTEM="-lsocket -lnsl" ;;
## Motif needs -lgen.
unixware) LIBS_SYSTEM="-lsocket -lnsl -lelf -lgen" ;;
@ -1647,7 +1621,7 @@ case $opsys in
SYSTEM_TYPE=berkeley-unix
;;
sol2* | unixware )
solaris | unixware )
SYSTEM_TYPE=usg-unix-v
;;
@ -2291,7 +2265,7 @@ system_malloc=yes
test $with_unexec = yes &&
case "$opsys" in
## darwin ld insists on the use of malloc routines in the System framework.
darwin | mingw32 | nacl | sol2-10) ;;
darwin | mingw32 | nacl | solaris) ;;
cygwin | qnxnto | freebsd)
hybrid_malloc=yes
system_malloc= ;;
@ -2427,7 +2401,7 @@ if test "$ac_cv_header_pthread_h" && test "$opsys" != "mingw32"; then
# need special flags to disable these optimizations. For example, the
# definition of 'errno' in <errno.h>.
case $opsys in
hpux* | sol*)
hpux* | solaris)
AC_DEFINE([_REENTRANT], 1,
[Define to 1 if your system requires this in multithreaded code.]);;
aix4-2)
@ -2557,7 +2531,7 @@ fail;
## inoue@ainet.or.jp says Solaris has a bug related to X11R6-style
## XIM support.
case "$opsys" in
sol2-*) : ;;
solaris) : ;;
*) AC_DEFINE(HAVE_X11R6_XIM, 1,
[Define if you have usable X11R6-style XIM support.])
;;
@ -4692,7 +4666,7 @@ if test "$USE_X_TOOLKIT" != "none"; then
fi
case $opsys in
sol2* | unixware )
solaris | unixware )
dnl Some SVr4s don't define NSIG in sys/signal.h for ANSI environments;
dnl instead, there's a system variable _sys_nsig. Unfortunately, we
dnl need the constant to dimension an array. So wire in the appropriate
@ -4705,7 +4679,7 @@ emacs_broken_SIGIO=no
case $opsys in
dnl SIGIO exists, but the feature doesn't work in the way Emacs needs.
hpux* | nacl | openbsd | sol2* | unixware )
hpux* | nacl | openbsd | solaris | unixware )
emacs_broken_SIGIO=yes
;;
@ -4754,7 +4728,7 @@ case $opsys in
esac
case $opsys in
gnu-* | sol2-10 )
gnu-* | solaris )
dnl FIXME Can't we test if this exists (eg /proc/$$)?
AC_DEFINE(HAVE_PROCFS, 1, [Define if you have the /proc filesystem.])
;;
@ -4883,7 +4857,7 @@ case $opsys in
AC_DEFINE(PTY_TTY_NAME_SPRINTF, [sprintf (pty_name, "/dev/pty/tty%c%x", c, i);])
;;
sol2* )
solaris )
dnl On SysVr4, grantpt(3) forks a subprocess, so do not use
dnl O_CLOEXEC when opening the pty, and keep the SIGCHLD handler
dnl from intercepting that death. If any child but grantpt's should die
@ -4893,7 +4867,7 @@ case $opsys in
;;
unixware )
dnl Comments are as per sol2*.
dnl Comments are as per solaris.
AC_DEFINE(PTY_OPEN, [fd = open (pty_name, O_RDWR | O_NONBLOCK)])
AC_DEFINE(PTY_TTY_NAME_SPRINTF, [{ char *ptsname (int), *ptyname; int grantpt_result; sigset_t blocked; sigemptyset (&blocked); sigaddset (&blocked, SIGCHLD); pthread_sigmask (SIG_BLOCK, &blocked, 0); grantpt_result = grantpt (fd); pthread_sigmask (SIG_UNBLOCK, &blocked, 0); if (grantpt_result == -1) fatal("could not grant slave pty"); if (unlockpt(fd) == -1) fatal("could not unlock slave pty"); if (!(ptyname = ptsname(fd))) fatal ("could not enable slave pty"); snprintf (pty_name, PTY_NAME_SIZE, "%s", ptyname); }])
;;
@ -4901,7 +4875,7 @@ esac
case $opsys in
sol2* | unixware )
solaris | unixware )
dnl This change means that we don't loop through allocate_pty too
dnl many times in the (rare) event of a failure.
AC_DEFINE(FIRST_PTY_LETTER, ['z'])
@ -4996,7 +4970,7 @@ if test x$GCC = xyes; then
AC_DEFINE(GC_SETJMP_WORKS, 1)
else
case $opsys in
aix* | dragonfly | freebsd | netbsd | openbsd | sol2* )
aix* | dragonfly | freebsd | netbsd | openbsd | solaris )
AC_DEFINE(GC_SETJMP_WORKS, 1)
;;
esac
@ -5043,7 +5017,7 @@ case $emacs_cv_func_sigsetjmp,$emacs_cv_alternate_stack,$opsys in
esac
case $opsys in
sol2* | unixware )
solaris | unixware )
dnl TIOCGPGRP is broken in SysVr4, so we can't send signals to PTY
dnl subprocesses the usual way. But TIOCSIGNAL does work for PTYs,
dnl and this is all we need.
@ -5053,7 +5027,7 @@ esac
case $opsys in
hpux* | sol2* )
hpux* | solaris )
dnl Used in xfaces.c.
AC_DEFINE(XOS_NEEDS_TIME_H, 1, [Compensate for a bug in Xos.h on
some systems, where it requires time.h.])
@ -5108,7 +5082,7 @@ case $opsys in
fi
;;
sol2*)
solaris)
AC_DEFINE(USG, [])
AC_DEFINE(USG5_4, [])
AC_DEFINE(SOLARIS2, [], [Define if the system is Solaris.])
@ -5173,7 +5147,7 @@ case $opsys in
reopen it in the child.])
;;
sol2-10)
solaris)
AC_DEFINE(_STRUCTURED_PROC, 1, [Needed for system_process_attributes
on Solaris.])
;;

View File

@ -2105,7 +2105,7 @@ To improve performance and accuracy of remote file access,
@file{/usr/bin}, which are reasonable for most hosts. To accommodate
differences in hosts and paths, for example, @file{/bin:/usr/bin} on
Debian GNU/Linux or
@file{/usr/xpg4/bin:/usr/ccs/bin:/usr/bin:/opt/SUNWspro/bin} on
@file{/usr/xpg4/bin:/usr/ccs/bin:/usr/bin:/opt/developerstudio12.6/bin} on
Solaris, @value{tramp} queries the remote host with @command{getconf
PATH} and updates the symbol @code{tramp-default-remote-path}.

View File

@ -81,25 +81,26 @@ the list at the end of this file.
** Solaris
On Solaris it is also possible to use either GCC or Solaris Studio
to build Emacs, by pointing ./configure to the right compiler:
On Solaris it is also possible to use either GCC or Oracle Developer
Studio to build Emacs, by pointing ./configure to the right compiler:
./configure CC='/usr/sfw/bin/gcc' # GCC
./configure CC='cc' # Solaris Studio
./configure # Defaults to 'gcc' if available.
./configure CC='cc' # Oracle Developer Studio
On Solaris, do not use /usr/ucb/cc. Use /opt/SUNWspro/bin/cc. Make
sure that /usr/ccs/bin and /opt/SUNWspro/bin are in your PATH before
/usr/ucb. (Most free software packages have the same requirement on
Solaris.) With this compiler, use '/opt/SUNWspro/bin/cc -E' as the
On Solaris, do not use /usr/ucb/cc. Use Oracle Developer Studio.
Make sure that /usr/ccs/bin and the Oracle Developer Studio bin
directory (e.g., /opt/developerstudio12.6/bin) are in your PATH
before /usr/ucb. (Most free software packages have the same
requirement on Solaris.) With this compiler, use 'cc -E' as the
preprocessor. If this inserts extra whitespace into its output (see
the PROBLEMS file) then add the option '-Xs'.
the PROBLEMS file), add the option '-Xs'.
To build a 64-bit Emacs (with larger maximum buffer size) on a
Solaris system which supports 64-bit executables, specify the -m64
Solaris system that defaults to 32-bit executables, specify the -m64
compiler option. For example:
./configure CC='/usr/sfw/bin/gcc -m64' # GCC
./configure CC='cc -m64' # Solaris Studio
./configure CC='gcc -m64' # GCC
./configure CC='cc -m64' # Oracle Developer Studio
* Obsolete platforms

View File

@ -2222,6 +2222,7 @@ We list bugs in current versions here. See also the section on legacy
systems.
*** On Solaris 10, Emacs crashes during the build process.
(This applies only with './configure --with-unexec=yes', which is rare.)
This was reported for Emacs 25.2 on i386-pc-solaris2.10 with Sun
Studio 12 (Sun C 5.9) and with Oracle Developer Studio 12.6 (Sun C
5.15), and intermittently for sparc-sun-solaris2.10 with Oracle
@ -2239,66 +2240,6 @@ Solaris. See Bug#26638.
This is a Solaris feature (at least on Intel x86 cpus). Type C-r
C-r C-t, to toggle whether C-x gets through to Emacs.
*** Problem with remote X server on Suns.
On a Sun, running Emacs on one machine with the X server on another
may not work if you have used the unshared system libraries. This
is because the unshared libraries fail to use YP for host name lookup.
As a result, the host name you specify may not be recognized.
*** Solaris 2.6: Emacs crashes with SIGBUS or SIGSEGV on Solaris after you delete a frame.
We suspect that this is a bug in the X libraries provided by
Sun. There is a report that one of these patches fixes the bug and
makes the problem stop:
105216-01 105393-01 105518-01 105621-01 105665-01 105615-02 105216-02
105667-01 105401-08 105615-03 105621-02 105686-02 105736-01 105755-03
106033-01 105379-01 105786-01 105181-04 105379-03 105786-04 105845-01
105284-05 105669-02 105837-01 105837-02 105558-01 106125-02 105407-01
Another person using a newer system (kernel patch level Generic_105181-06)
suspects that the bug was fixed by one of these more recent patches:
106040-07 SunOS 5.6: X Input & Output Method patch
106222-01 OpenWindows 3.6: filemgr (ff.core) fixes
105284-12 Motif 1.2.7: sparc Runtime library patch
*** Solaris 7 or 8: Emacs reports a BadAtom error (from X)
This happens when Emacs was built on some other version of Solaris.
Rebuild it on Solaris 8.
*** When using M-x dbx with the SparcWorks debugger, the 'up' and 'down'
commands do not move the arrow in Emacs.
You can fix this by adding the following line to '~/.dbxinit':
dbxenv output_short_file_name off
*** On Solaris, CTRL-t is ignored by Emacs when you use
the fr.ISO-8859-15 locale (and maybe other related locales).
You can fix this by editing the file:
/usr/openwin/lib/locale/iso8859-15/Compose
Near the bottom there is a line that reads:
Ctrl<t> <quotedbl> <Y> : "\276" threequarters
while it should read:
Ctrl<T> <quotedbl> <Y> : "\276" threequarters
Note the lower case <t>. Changing this line should make C-t work.
*** On Solaris, Emacs fails to set menu-bar-update-hook on startup, with error
"Error in menu-bar-update-hook: (error Point before start of properties)".
This seems to be a GCC optimization bug that occurs for GCC 4.1.2 (-g
and -g -O2) and GCC 4.2.3 (-g -O and -g -O2). You can fix this by
compiling with GCC 4.2.3 or CC 5.7, with no optimizations.
* Runtime problems specific to MS-Windows
** Emacs on Windows 9X requires UNICOWS.DLL
@ -2733,13 +2674,13 @@ Libxpm is available for macOS as part of the XQuartz project.
This indicates a mismatch between the C compiler and preprocessor that
configure is using. For example, on Solaris 10 trying to use
CC=/opt/SUNWspro/bin/cc (the Sun Studio compiler) together with
CPP=/usr/ccs/lib/cpp can result in errors of this form (you may also
see the error '"/usr/include/sys/isa_defs.h", line 500: undefined control').
CC=/opt/developerstudio12.6/bin/cc (the Oracle Developer Studio
compiler) together with CPP=/usr/lib/cpp can result in errors of
this form.
The solution is to tell configure to use the correct C preprocessor
for your C compiler (CPP="/opt/SUNWspro/bin/cc -E" in the above
example).
for your C compiler (CPP="/opt/developerstudio12.6/bin/cc -E" in the
above example).
** Compilation
@ -3110,7 +3051,69 @@ This section covers bugs reported on very old hardware or software.
If you are using hardware and an operating system shipped after 2000,
it is unlikely you will see any of these.
*** Solaris 2.x
** Solaris
*** Problem with remote X server on Suns.
On a Sun, running Emacs on one machine with the X server on another
may not work if you have used the unshared system libraries. This
is because the unshared libraries fail to use YP for host name lookup.
As a result, the host name you specify may not be recognized.
*** Solaris 2.6: Emacs crashes with SIGBUS or SIGSEGV on Solaris after you delete a frame.
We suspect that this is a bug in the X libraries provided by
Sun. There is a report that one of these patches fixes the bug and
makes the problem stop:
105216-01 105393-01 105518-01 105621-01 105665-01 105615-02 105216-02
105667-01 105401-08 105615-03 105621-02 105686-02 105736-01 105755-03
106033-01 105379-01 105786-01 105181-04 105379-03 105786-04 105845-01
105284-05 105669-02 105837-01 105837-02 105558-01 106125-02 105407-01
Another person using a newer system (kernel patch level Generic_105181-06)
suspects that the bug was fixed by one of these more recent patches:
106040-07 SunOS 5.6: X Input & Output Method patch
106222-01 OpenWindows 3.6: filemgr (ff.core) fixes
105284-12 Motif 1.2.7: sparc Runtime library patch
*** Solaris 7 or 8: Emacs reports a BadAtom error (from X)
This happens when Emacs was built on some other version of Solaris.
Rebuild it on Solaris 8.
*** When using M-x dbx with the SparcWorks debugger, the 'up' and 'down'
commands do not move the arrow in Emacs.
You can fix this by adding the following line to '~/.dbxinit':
dbxenv output_short_file_name off
*** On Solaris, CTRL-t is ignored by Emacs when you use
the fr.ISO-8859-15 locale (and maybe other related locales).
You can fix this by editing the file:
/usr/openwin/lib/locale/iso8859-15/Compose
Near the bottom there is a line that reads:
Ctrl<t> <quotedbl> <Y> : "\276" threequarters
while it should read:
Ctrl<T> <quotedbl> <Y> : "\276" threequarters
Note the lower case <t>. Changing this line should make C-t work.
*** On Solaris, Emacs fails to set menu-bar-update-hook on startup, with error
"Error in menu-bar-update-hook: (error Point before start of properties)".
This seems to be a GCC optimization bug that occurs for GCC 4.1.2 (-g
and -g -O2) and GCC 4.2.3 (-g -O and -g -O2). You can fix this by
compiling with GCC 4.2.3 or CC 5.7, with no optimizations.
*** Other legacy Solaris problems
**** Strange results from format %d in a few cases, on a Sun.

View File

@ -1014,8 +1014,8 @@ To undo the killing, the undo command can be used as normally."
(defvar dired-compress-file-suffixes
'(
;; "tar -zxf" isn't used because it's not available on the
;; Solaris10 version of tar. Solaris10 becomes obsolete in 2021.
;; Same thing on AIX 7.1.
;; Solaris 10 version of tar (obsolete in 2024?).
;; Same thing on AIX 7.1 (obsolete 2023?) and 7.2 (obsolete 2022?).
("\\.tar\\.gz\\'" "" "gzip -dc %i | tar -xf -")
("\\.tgz\\'" "" "gzip -dc %i | tar -xf -")
("\\.gz\\'" "" "gunzip")