app-editors/xemacs: drop 21.5.35-r9, 21.5.35-r10

Signed-off-by: Mats Lidell <matsl@gentoo.org>
This commit is contained in:
Mats Lidell 2025-10-20 15:10:08 +02:00
parent 47864b6810
commit ae8d0cdf6a
No known key found for this signature in database
GPG Key ID: 377034660A5828DE
13 changed files with 0 additions and 1335 deletions

View File

@ -1,5 +1,2 @@
DIST NeXT_XEmacs.tar.gz 39571 BLAKE2B 7abf17627ec34e6b0d0edde444028c46dca6d703cfa208a8a1eaf30e2fc2543b953c9a9582c3d55bd5b37e746f45c03ebfc408a0d965606e45d5f4adb9148dea SHA512 611ddbbf5be3d2274e7f76be7f8200c6c7f3cba917efcc24e73685aa5f61c94237e6e48ce66f2d59ee4b74862e686f3ea7a29cf006717d5d0674db24d243d566
DIST xemacs-21.5.35-info-handle-compress.patch.xz 7852 BLAKE2B 61b8d3a7d63d76311cdbb10153101ea8546ff5e4c8d6345750e44b7e80dfe7afb280dfa847097163fcb92888e5abd837c1a932170a3c362de7a523fc019269f5 SHA512 6c83a4b739075c6da88ba56b84b8521ceb1f34dc71ea51b7fbdb992b459794a3f479ea7db5df777d6497291e2eed8e33809edf5d7572822007f599cdd57955f8
DIST xemacs-21.5.35-ootags-boolint.patch.xz 7660 BLAKE2B 9567cebeea7828dd7a207e627c4a21d49ef129ea7cf92defde67c068aab6694d0c7f70d90648b9177cea8b6ea3fc3734e1f65f1821b5e4c820df507bb6d6835b SHA512 f43656a5e4c9781e2250fca7f8750bbc131223f4a252dfdfc6315e06ac578974877ac0bbc695f957ade5a7960c4257b090ee34199965110da28851e58986e985
DIST xemacs-21.5.35.tar.gz 16403617 BLAKE2B efab8d3d984ec2223913b09ff1abc9f2df187fb5b8c2ccf99fcfc60c86369f4411cffd48b03532d53329bd5b3d3149271a445da4c0a3cd7bdc2834021b1297b3 SHA512 e592af6ffbb6f95299039de28f59ee770bf62f54a15b1358b9d1059ed25dcb410c01dcf6e88c1d2196d54f0c6902f309d709fe003accee82e516023fa4363019
DIST xemacs-21.5.36.tar.gz 16486681 BLAKE2B e7105dd64c49c73f2914e071707b5ec098f0c1a8a7ea7afce6785bc9f966c02e7ed9b7d8a021a3f153a65521135f90ffabcab9af66f2929fdacf5b51056bcc1b SHA512 42e1bc4283038e6829549c4bf78ff034e94f869cd038a3a28fe48b19a623b358e733e98b4c58b5c53ae7613a2d5da64f9796bb1c794a503e83f7706c4b8123f1

View File

@ -1,191 +0,0 @@
Don't segfault when calling #'center-to-window-pos and friends, -batch
Patch backported from master branch
https://foss.heptapod.net/xemacs/xemacs/-/issues/6
commit 578daa839db83c84fc7ebbc4bf809ff66fd492f5
Author: Aidan Kehoe <kehoea@parhasard.net>
Date: Tue Jan 21 16:15:47 2025 +0000
Don't segfault when calling #'center-to-window-pos and friends, -batch
--- xemacs-21.5.35/src/indent.c
+++ xemacs-21.5.35/src/indent.c
@@ -642,6 +642,15 @@ Bytebpos
vmotion (struct window *w, Bytebpos orig, Charcount vtarget,
Charcount *ret_vpos)
{
+ if (!redisplayable_window_p (w))
+ {
+ if (ret_vpos)
+ {
+ *ret_vpos = 0;
+ }
+ return orig;
+ }
+
return vmotion_1 (w, orig, vtarget, ret_vpos, NULL);
}
@@ -671,6 +680,11 @@ vertical_motion_1 (Lisp_Object lines, Li
w = XWINDOW (window);
+ if (!redisplayable_window_p (w))
+ {
+ return Qzero;
+ }
+
orig = selected ? BYTE_BUF_PT (XBUFFER (w->buffer))
: marker_byte_position (w->pointm[CURRENT_DISP]);
--- xemacs-21.5.35/src/window.c
+++ xemacs-21.5.35/src/window.c
@@ -402,6 +402,12 @@ allocate_window (void)
return obj;
}
#undef INIT_DISP_VARIABLE
+
+Boolint
+redisplayable_window_p (struct window *w)
+{
+ return !FRAME_STREAM_P (XFRAME (WINDOW_FRAME (w)));
+}
/************************************************************************/
/* Window mirror structure */
@@ -1491,11 +1497,19 @@ POS defaults to point in WINDOW's buffer
(pos, window, partially))
{
struct window *w = decode_window (window);
- Bytebpos top = marker_byte_position (w->start[CURRENT_DISP]);
- struct buffer *buf = XBUFFER (w->buffer);
- Bytebpos posint = get_buffer_pos_byte (buf, pos,
- GB_ALLOW_PAST_ACCESSIBLE |
- GB_ALLOW_NIL | GB_NO_ERROR_IF_BAD);
+ Bytebpos top, posint;
+ struct buffer *buf;
+
+ if (!redisplayable_window_p (w))
+ {
+ return Qnil;
+ }
+
+ top = marker_byte_position (w->start[CURRENT_DISP]);
+ buf = XBUFFER (w->buffer);
+ posint = get_buffer_pos_byte (buf, pos,
+ GB_ALLOW_PAST_ACCESSIBLE | GB_ALLOW_NIL
+ | GB_NO_ERROR_IF_BAD);
if (posint < top || posint > BYTE_BUF_ZV (buf))
return Qnil;
@@ -1659,6 +1673,12 @@ is non-nil, do not include space occupie
line_start_cache_dynarr *cache;
window = wrap_window (w);
+
+ if (!redisplayable_window_p (w))
+ {
+ return Qzero;
+ }
+
start = marker_byte_position (w->start[CURRENT_DISP]);
hlimit = WINDOW_TEXT_HEIGHT (w);
eobuf = BYTE_BUF_ZV (XBUFFER (w->buffer));
@@ -1903,11 +1923,11 @@ e.g. if the window's current buffer has
struct window *w = decode_window (window);
Bytebpos eoll;
- if (NILP (guarantee) || in_display)
+ if (NILP (guarantee) || !redisplayable_window_p (w) || in_display)
{
struct buffer *b = window_display_buffer (w);
- if (in_display ||
+ if (in_display || !redisplayable_window_p (w) ||
(BUFFER_LIVE_P (b) && EQ (wrap_buffer (b), window_buffer (w))))
{
return Fmarker_position (w->end_pos[CURRENT_DISP]);
@@ -3341,7 +3361,7 @@ value is reasonable when this function i
window start is outside the visible portion (as might happen when
the display is not current, due to typeahead). */
if (start_pos >= BYTE_BUF_BEGV (b) && start_pos <= BYTE_BUF_ZV (b)
- && !MINI_WINDOW_P (w))
+ && !MINI_WINDOW_P (w) && redisplayable_window_p (w))
{
Bytebpos new_start
= start_with_line_at_pixpos
@@ -4628,6 +4648,11 @@ window_scroll (Lisp_Object window, Lisp_
struct display_line* dl;
Boolint unchain_point = 0;
struct gcpro gcpro1;
+
+ if (!redisplayable_window_p (w))
+ {
+ return;
+ }
if (selected)
point = b->point_marker;
@@ -5127,6 +5152,11 @@ If WINDOW is nil, the selected window is
Bytebpos opoint = BYTE_BUF_PT (b);
Bytebpos startp;
+ if (!redisplayable_window_p (w))
+ {
+ return Qnil;
+ }
+
if (NILP (n))
startp = start_with_line_at_pixpos (w, opoint, window_half_pixpos (w));
else
@@ -5491,14 +5521,20 @@ get_current_pixel_pos (Lisp_Object windo
{
int first_line, i;
Bytebpos point;
+ struct buffer *buf;
if (NILP (pos))
{
pos = Fwindow_point (wrap_window (*w));
}
- point = get_buffer_pos_byte (window_display_buffer (*w), pos,
- GB_NO_ERROR_IF_BAD);
+ buf = window_display_buffer (*w);
+ if (buf == NULL)
+ {
+ return 0;
+ }
+
+ point = get_buffer_pos_byte (buf, pos, GB_NO_ERROR_IF_BAD);
/* If the window has a modeline, ignore it for our purposes, POS can't
be over it. Start examining the display lines from 1. */
@@ -5552,7 +5588,7 @@ a new frame, use the following instead:
*/
(window, pos))
{
- struct window* w;
+ struct window *w = decode_window (window);
struct display_line *dl;
struct rune* rb;
@@ -5575,7 +5611,7 @@ use the following instead:
*/
(window, pos))
{
- struct window* w;
+ struct window *w = decode_window (window);
struct display_line *dl;
struct rune* rb;
--- xemacs-21.5.35/src/window.h
+++ xemacs-21.5.35/src/window.h
@@ -152,6 +152,7 @@ int buffer_window_mru (struct window *w)
void check_frame_size (struct frame *frame, int *cols, int *rows);
int frame_pixsize_valid_p (struct frame *frame, int width, int height);
struct window *decode_window (Lisp_Object window);
+Boolint redisplayable_window_p (struct window *w);
struct window *find_window_by_pixel_pos (int pix_x, int pix_y, Lisp_Object win);
void free_window_mirror (struct window_mirror *mir);

View File

@ -1,73 +0,0 @@
diff -r 3761ed745bc6 configure.ac
--- a/configure.ac Sat Mar 02 17:26:00 2024 +0100
+++ b/configure.ac Fri Mar 08 22:25:23 2024 +0100
@@ -2192,7 +2192,6 @@
compiler_version=""
gcc_compiler_specs=""
-libc_version=""
AC_MSG_CHECKING([for compiler version information])
@@ -2255,53 +2254,6 @@
fi
AC_MSG_RESULT([$compiler_version])
-AC_MSG_CHECKING(for standard C library version information)
-
-case "$ac_cv_build" in
- *-*-linux*)
- dnl #### who would ever _not_ be running the distro's libc?
- dnl Maybe it would be better to get/augment this info with ldd?
- if test -f /etc/redhat-release ; then
- libc_version=`rpm -q glibc`
- elif test -f /etc/debian_version ; then
- libc_version=`dpkg-query --showformat='${version}' --show libc6`
- libc_version="GNU libc $libc_version (Debian)"
- dnl need SuSE et al checks here...
- fi
- dnl #### Tested on Debian, does this actually work elsewhere? ;-)
- if test -z "$libc_version"; then
- libc_version=`ls /lib/libc-*.so | sed -e 's,/lib/libc-\(.*\)\.so,\1,'`
- fi
- ;;
-
- *-*-aix*)
- libc_version="bos.rte.libc `lslpp -Lqc bos.rte.libc | cut -f3 -d:`"
- ;;
-
- *-*-solaris*)
- libc=`pkginfo -l SUNWcsl | grep VERSION: | awk '{print $2}'`
- libc_version="SUNWcsl $libc"
-
- ;;
-
- mips-sgi-irix*)
- libc_version="IRIX libc `uname -sRm`"
- ;;
-
- alpha*-dec-osf*)
- dnl Another ugly case
- (cd /usr/.smdb.;
- libc_version=` grep -h libc.so *.inv | awk '$9 == "f" {print $12}' | tr '\n' ','`
- )
- ;;
-esac
-
-dnl Awww, shucks.
-if test -z "libc_version"; then
- libc_version="detection failed (please report this)"
-fi
-AC_MSG_RESULT([$libc_version])
-
dnl ---------------------------------------------------------
dnl These directories are used to search for include subdirs.
dnl ---------------------------------------------------------
@@ -6122,7 +6074,6 @@
echo " WARNING: CC and XEMACS_CC mismatched; check CFLAGS carefully."
fi
fi
-echo " libc version: $libc_version"
echo " Relocating allocator for buffers: $with_rel_alloc"
echo "
Package Search (a 'root' contains '{xemacs,mule,site}-packages'):"

View File

@ -1,42 +0,0 @@
diff --git a/configure.ac b/configure.ac
--- a/configure.ac
+++ b/configure.ac
@@ -3792,8 +3792,7 @@
XE_PREPEND("$libpath_xpm", LDFLAGS)
AC_MSG_CHECKING(for Xpm - no older than 3.4f)
xe_check_libs="$libname_xpm"
- AC_RUN_IFELSE([AC_LANG_SOURCE([#define XPM_NUMBERS
-#include <X11/xpm.h>
+ AC_RUN_IFELSE([AC_LANG_SOURCE([#include <X11/xpm.h>
int main(int c, char **v) {
return c == 1 ? 0 :
XpmIncludeVersion != XpmLibraryVersion() ? 1 :
@@ -3831,7 +3830,7 @@
XE_PREPEND("$incpath_xpm", XE_CFLAGS)
AC_MSG_CHECKING([for "FOR_MSW" xpm])
xe_check_libs="$libname_xpm"
- AC_LINK_IFELSE([AC_LANG_PROGRAM([],[XpmCreatePixmapFromData();])],
+ AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <X11/xpm.h>],[XpmCreatePixmapFromData(0, 0, 0, 0, 0, 0);])],
[xpm_for_msw=no],
[xpm_for_msw=yes])
xe_check_libs=
@@ -4620,9 +4619,7 @@
AC_CACHE_VAL(emacs_cv_localtime_cache,
[if test "$ac_cv_func_tzset" = "yes"; then
AC_RUN_IFELSE([AC_LANG_SOURCE([#include <time.h>
-#if STDC_HEADERS
-# include <stdlib.h>
-#endif
+#include <stdlib.h>
extern char **environ;
unset_TZ ()
{
@@ -4733,6 +4730,8 @@
void *alloca ();
#endif /* C_ALLOCA */
#endif /* !defined (alloca) */
+#include <string.h>
+#include <stdlib.h>
void
f1 (double a, void *ptr, int b)

View File

@ -1,63 +0,0 @@
# HG changeset patch
# User Aidan Kehoe <kehoea@parhasard.net>
# Date 1739950047 0
# Wed Feb 19 07:27:27 2025 +0000
# Node ID 10e8e0fb778fdfcace7e2257d1f1cd0a74446e66
# Parent b2a7a1a58d1fba872a100db28ba45ddc6239cfeb
Delay calls to FcInit() at startup until an XFT font is actually opened.
src/ChangeLog addition:
2025-02-19 Aidan Kehoe <kehoea@parhasard.net>
Delay calls to FcInit() until
lwlib-fonts.c:xft_open_font_by_name() or
fontcolor-xlike-inc.c:xft_find_charset_font(), avoiding updating
out-of-tree cache files at build time, something Gentoo does not
like. Thank you for the bug report, Mats Lidell.
* emacs.c (main_1):
Remove the call to reinit_vars_of_font_mgr() here.
* font-mgr.c (reinit_vars_of_font_mgr): Removed. All it did was
call FcInit() basically directly after pdump_load(), for which
there is no need, reasonable to delay until we open an X11 device.
* symsinit.h:
Remove its declaration.
diff -r b2a7a1a58d1f -r 10e8e0fb778f src/emacs.c
--- a/src/emacs.c Wed Feb 19 06:13:45 2025 +0000
+++ b/src/emacs.c Wed Feb 19 07:27:27 2025 +0000
@@ -2235,9 +2235,6 @@
#if defined (HAVE_MENUBARS) || defined (HAVE_SCROLLBARS) || defined (HAVE_X_DIALOGS) || defined (HAVE_TOOLBARS)
reinit_vars_of_gui_x ();
#endif
-#ifdef HAVE_XFT
- reinit_vars_of_font_mgr ();
-#endif
#endif /* HAVE_X_WINDOWS */
reinit_vars_of_mule_coding ();
diff -r b2a7a1a58d1f -r 10e8e0fb778f src/font-mgr.c
--- a/src/font-mgr.c Wed Feb 19 06:13:45 2025 +0000
+++ b/src/font-mgr.c Wed Feb 19 07:27:27 2025 +0000
@@ -1439,9 +1439,4 @@
Vxlfd_font_name_regexp = make_xlfd_font_regexp();
}
-void
-reinit_vars_of_font_mgr (void)
-{
- FcInit ();
-}
-
+/* font-mgr.c ends here */
diff -r b2a7a1a58d1f -r 10e8e0fb778f src/symsinit.h
--- a/src/symsinit.h Wed Feb 19 06:13:45 2025 +0000
+++ b/src/symsinit.h Wed Feb 19 07:27:27 2025 +0000
@@ -419,7 +419,6 @@
void vars_of_font_lock (void);
void reinit_vars_of_font_lock (void);
void vars_of_font_mgr (void);
-void reinit_vars_of_font_mgr (void);
void vars_of_frame (void);
void vars_of_frame_gtk (void);
void vars_of_frame_mswindows (void);

View File

@ -1,17 +0,0 @@
changeset: 7634:770d869450ea
parent: 7632:c35cdc528fff
user: Mats Lidell <mats.lidell@lidells.se>
date: Sat Mar 22 23:19:55 2025 +0100
summary: Make xemacs.desktop Category consistent with GNU Emacs
diff -r c35cdc528fff -r 770d869450ea etc/xemacs.desktop
--- a/etc/xemacs.desktop Thu Mar 20 09:40:30 2025 +0000
+++ b/etc/xemacs.desktop Sat Mar 22 23:19:55 2025 +0100
@@ -30,5 +30,5 @@
Icon=xemacs
Type=Application
Terminal=false
-Categories=Application;Utility;TextEditor;
+Categories=Development;TextEditor;
StartupWMClass=XEmacs

View File

@ -1,24 +0,0 @@
changeset: 7521:ce06831b299c
parent: 7519:fb35ba719d24
user: Aidan Kehoe <kehoea@parhasard.net>
date: Thu Oct 17 09:01:54 2024 +0100
summary: configure.ac: No longer use XE_PROTECT_LINKER_FLAGS on LDFLAGS.
diff -r fb35ba719d24 -r ce06831b299c configure.ac
--- a/configure.ac Mon Oct 14 19:18:08 2024 +0100
+++ b/configure.ac Thu Oct 17 09:01:54 2024 +0100
@@ -2155,8 +2155,12 @@
XE_PROTECT_LINKER_FLAGS(ld_switch_system)
XE_PROTECT_LINKER_FLAGS(ld_switch_machine)
XE_PROTECT_LINKER_FLAGS(ld_switch_site)
-XE_PROTECT_LINKER_FLAGS(LDFLAGS)
XE_PROTECT_LINKER_FLAGS(ld_call_shared)
+dnl No longer do this for LDFLAGS, since that interacts poorly with link time
+dnl optimization. Unclear if XE_PROTECT_LINKER_FLAGS() is still needed in
+dnl general, it was introduced for GCC versions in the 90s and things have
+dnl changed, but unlikely to be an issue with the other flags. See
+dnl https://bugs.gentoo.org/940327 for a relevant bug report.
dnl Add s&m-determined objects to link line
test -n "$objects_machine" && XE_ADD_OBJS($objects_machine)

View File

@ -1,67 +0,0 @@
# HG changeset patch
# User Aidan Kehoe <kehoea@parhasard.net>
# Date 1727073391 -3600
# Mon Sep 23 07:36:31 2024 +0100
# Node ID 00eb7276ebb1a22e20e6f6b9b5247b196b44f3f1
# Parent d40990b854cf32198aea31eae0d60ce91ce0f4f7
Avoid misaligned coding systems objects in the dump file,
src/ChangeLog addition:
2024-09-22 Aidan Kehoe <kehoea@parhasard.net>
* file-coding.c:
* file-coding.c (aligned_sizeof_coding_system): New.
* file-coding.c (allocate_coding_system): Use it.
Avoid misaligned coding systems objects in the dump file,
previously addressed for lstreams, specifiers, opaque data in
Martin Buchholz's change of 2001-01-24. Approach taken the same as
that for specifiers.
* file-coding.c (struct convert_eol_coding_system):
Remove a dummy integer no longer needed.
[Changelog patch removed]
diff -r d40990b854cf -r 00eb7276ebb1 src/file-coding.c
--- a/src/file-coding.c Mon Sep 23 08:03:15 2024 +0100
+++ b/src/file-coding.c Mon Sep 23 07:36:31 2024 +0100
@@ -312,11 +312,18 @@
MAYBE_XCODESYSMETH (obj, finalize, (obj));
}
+inline static Bytecount
+aligned_sizeof_coding_system (Bytecount type_specific_size)
+{
+ return MAX_ALIGN_SIZE (offsetof (Lisp_Coding_System, data)
+ + type_specific_size);
+}
+
static Bytecount
sizeof_coding_system (Lisp_Object obj)
{
const Lisp_Coding_System *p = XCODING_SYSTEM (obj);
- return offsetof (Lisp_Coding_System, data) + p->methods->extra_data_size;
+ return aligned_sizeof_coding_system (p->methods->extra_data_size);
}
static const struct memory_description coding_system_methods_description_1[]
@@ -835,7 +842,7 @@
Bytecount data_size,
Lisp_Object name)
{
- Bytecount total_size = offsetof (Lisp_Coding_System, data) + data_size;
+ Bytecount total_size = aligned_sizeof_coding_system (data_size);
Lisp_Object obj = ALLOC_SIZED_LISP_OBJECT (total_size, coding_system);
Lisp_Coding_System *codesys = XCODING_SYSTEM (obj);
@@ -3951,10 +3958,6 @@
struct convert_eol_coding_system
{
enum eol_type subtype;
- int dummy; /* On some architectures (eg ia64) the portable dumper can
- produce unaligned access errors without this field. Probably
- because the combined structure of this structure and
- Lisp_Coding_System is not properly aligned. */
};
#define CODING_SYSTEM_CONVERT_EOL_SUBTYPE(codesys) \

View File

@ -1,124 +0,0 @@
diff --git a/tests/automated/mule-tests.el b/tests/automated/mule-tests.el
--- a/tests/automated/mule-tests.el
+++ b/tests/automated/mule-tests.el
@@ -85,14 +85,15 @@
(insert string)
(assert (equal (buffer-string) string))))))
-(when (compiled-function-p (symbol-function 'test-chars))
- ;; Run #'test-chars in byte-compiled mode only.
- (test-chars t
- ;; unicode-internal has a value of #x40000000, (expt 2 30), for
- ;; char-code-limit and even re-writing the above to avoid
- ;; allocating the list and the string means I run out of memory
- ;; when I attempt to run this.
- (min char-code-limit #x200000)))
+;; Crashes XEmacs ...
+;; (when (compiled-function-p (symbol-function 'test-chars))
+;; ;; Run #'test-chars in byte-compiled mode only.
+;; (test-chars t
+;; ;; unicode-internal has a value of #x40000000, (expt 2 30), for
+;; ;; char-code-limit and even re-writing the above to avoid
+;; ;; allocating the list and the string means I run out of memory
+;; ;; when I attempt to run this.
+;; (min char-code-limit #x200000)))
(defun unicode-code-point-to-utf-8-string (code-point)
"Convert a Unicode code point to the equivalent UTF-8 string.
@@ -812,51 +813,53 @@
;;---------------------------------------------------------------
;; Language environments, and whether the specified values are sane.
;;---------------------------------------------------------------
- (loop
- for language in (mapcar #'car language-info-alist)
- with language-input-method = nil
- with native-coding-system = nil
- with original-language-environment = current-language-environment
- do
- ;; s-l-e can call #'require, which says "Loading ..."
- (Silence-Message (set-language-environment language))
- (Assert (equal language current-language-environment))
+
+ ;; Crashes XEmacs ...
+ ;; (loop
+ ;; for language in (mapcar #'car language-info-alist)
+ ;; with language-input-method = nil
+ ;; with native-coding-system = nil
+ ;; with original-language-environment = current-language-environment
+ ;; do
+ ;; ;; s-l-e can call #'require, which says "Loading ..."
+ ;; (Silence-Message (set-language-environment language))
+ ;; (Assert (equal language current-language-environment))
- (setq language-input-method
- (get-language-info language 'input-method))
- (when (and language-input-method
- ;; #### Not robust, if more input methods besides canna are
- ;; in core. The intention of this is that if *any* of the
- ;; packages' input methods are available, we check that *all*
- ;; of the language environments' input methods actually
- ;; exist, which goes against the spirit of non-monolithic
- ;; packages. But I don't have a better approach to this.
- (> (length input-method-alist) 1))
- (Assert (assoc language-input-method input-method-alist))
- (Skip-Test-Unless
- (assoc language-input-method input-method-alist)
- "input method unavailable"
- (format "check that IM %s can be activated" language-input-method)
- ;; s-i-m can load files.
- (Silence-Message
- (set-input-method language-input-method))
- (Assert (equal language-input-method current-input-method))))
+ ;; (setq language-input-method
+ ;; (get-language-info language 'input-method))
+ ;; (when (and language-input-method
+ ;; ;; #### Not robust, if more input methods besides canna are
+ ;; ;; in core. The intention of this is that if *any* of the
+ ;; ;; packages' input methods are available, we check that *all*
+ ;; ;; of the language environments' input methods actually
+ ;; ;; exist, which goes against the spirit of non-monolithic
+ ;; ;; packages. But I don't have a better approach to this.
+ ;; (> (length input-method-alist) 1))
+ ;; (Assert (assoc language-input-method input-method-alist))
+ ;; (Skip-Test-Unless
+ ;; (assoc language-input-method input-method-alist)
+ ;; "input method unavailable"
+ ;; (format "check that IM %s can be activated" language-input-method)
+ ;; ;; s-i-m can load files.
+ ;; (Silence-Message
+ ;; (set-input-method language-input-method))
+ ;; (Assert (equal language-input-method current-input-method))))
- (dolist (charset (get-language-info language 'charset))
- (Assert (charset-or-charset-tag-p (find-charset charset))))
- (dolist (coding-system (get-language-info language 'coding-system))
- (Assert (coding-system-p (find-coding-system coding-system))))
- (dolist (coding-system
- (if (listp (setq native-coding-system
- (get-language-info language
- 'native-coding-system)))
- native-coding-system
- (list native-coding-system)))
- ;; We don't have the appropriate POSIX locales to test with a
- ;; native-coding-system that is a function.
- (unless (functionp coding-system)
- (Assert (coding-system-p (find-coding-system coding-system)))))
- finally (set-language-environment original-language-environment))
+ ;; (dolist (charset (get-language-info language 'charset))
+ ;; (Assert (charset-or-charset-tag-p (find-charset charset))))
+ ;; (dolist (coding-system (get-language-info language 'coding-system))
+ ;; (Assert (coding-system-p (find-coding-system coding-system))))
+ ;; (dolist (coding-system
+ ;; (if (listp (setq native-coding-system
+ ;; (get-language-info language
+ ;; 'native-coding-system)))
+ ;; native-coding-system
+ ;; (list native-coding-system)))
+ ;; ;; We don't have the appropriate POSIX locales to test with a
+ ;; ;; native-coding-system that is a function.
+ ;; (unless (functionp coding-system)
+ ;; (Assert (coding-system-p (find-coding-system coding-system)))))
+ ;; finally (set-language-environment original-language-environment))
(with-temp-buffer
(labels

View File

@ -1,179 +0,0 @@
# HG changeset patch
# User Aidan Kehoe <kehoea@parhasard.net>
# Date 1727074995 -3600
# Mon Sep 23 08:03:15 2024 +0100
# Node ID d40990b854cf32198aea31eae0d60ce91ce0f4f7
# Parent d3dfe7ea1c31cc619bf8416e04c5466927d9c6f5
Avoid passing an int among Lisp_Object va_args, specifier instantiate methods.
src/ChangeLog addition:
2024-09-08 Aidan Kehoe <kehoea@parhasard.net>
* fontcolor.c (color_instantiate):
* fontcolor.c (font_instantiate):
* fontcolor.c (face_boolean_instantiate):
* fontcolor.c (face_background_placement_instantiate):
* glyphs.c (image_instantiate):
* specifier.c (specifier_instance_from_inst_list):
* specifier.h (struct specifier_methods):
Avoid passing an int among the Lisp_Object va_args of the
specifier instantiate methods, this is not portable behaviour,
thank you clang and -fsanitize=undefined.
[Changelog patch removed]
diff -r d3dfe7ea1c31 -r d40990b854cf src/fontcolor.c
--- a/src/fontcolor.c Mon Sep 23 08:01:37 2024 +0100
+++ b/src/fontcolor.c Mon Sep 23 08:03:15 2024 +0100
@@ -1380,7 +1380,7 @@
static Lisp_Object
color_instantiate (Lisp_Object specifier, Lisp_Object UNUSED (matchspec),
Lisp_Object domain, Lisp_Object instantiator,
- Lisp_Object depth, int no_fallback)
+ Lisp_Object depth, Lisp_Object no_fallback)
{
/* When called, we're inside of call_with_suspended_errors(),
so we can freely error. */
@@ -1436,7 +1436,7 @@
(Fget_face (XVECTOR_DATA (instantiator)[0]),
COLOR_SPECIFIER_FACE_PROPERTY
(XCOLOR_SPECIFIER (specifier)),
- domain, ERROR_ME, no_fallback, depth));
+ domain, ERROR_ME, !NILP (no_fallback), depth));
case 2:
return (FACE_PROPERTY_INSTANCE_1
@@ -1653,7 +1653,7 @@
font_instantiate (Lisp_Object UNUSED (specifier),
Lisp_Object USED_IF_MULE (matchspec),
Lisp_Object domain, Lisp_Object instantiator,
- Lisp_Object depth, int no_fallback)
+ Lisp_Object depth, Lisp_Object no_fallback)
{
/* When called, we're inside of call_with_suspended_errors(),
so we can freely error. */
@@ -1766,13 +1766,15 @@
match_inst = face_property_matching_instance
(Fget_face (XVECTOR_DATA (instantiator)[0]), Qfont,
- charset, domain, ERROR_ME, no_fallback, depth, STAGE_INITIAL);
+ charset, domain, ERROR_ME, !NILP (no_fallback),
+ depth, STAGE_INITIAL);
if (UNBOUNDP(match_inst))
{
match_inst = face_property_matching_instance
(Fget_face (XVECTOR_DATA (instantiator)[0]), Qfont,
- charset, domain, ERROR_ME, no_fallback, depth, STAGE_FINAL);
+ charset, domain, ERROR_ME, !NILP (no_fallback), depth,
+ STAGE_FINAL);
}
return match_inst;
@@ -1868,7 +1870,7 @@
face_boolean_instantiate (Lisp_Object specifier,
Lisp_Object UNUSED (matchspec),
Lisp_Object domain, Lisp_Object instantiator,
- Lisp_Object depth, int no_fallback)
+ Lisp_Object depth, Lisp_Object no_fallback)
{
/* When called, we're inside of call_with_suspended_errors(),
so we can freely error. */
@@ -1895,7 +1897,7 @@
retval = (FACE_PROPERTY_INSTANCE_1
(Fget_face (XVECTOR_DATA (instantiator)[0]),
- prop, domain, ERROR_ME, no_fallback, depth));
+ prop, domain, ERROR_ME, !NILP (no_fallback), depth));
if (instantiator_len == 3 && !NILP (XVECTOR_DATA (instantiator)[2]))
retval = NILP (retval) ? Qt : Qnil;
@@ -2015,7 +2017,7 @@
Lisp_Object domain,
Lisp_Object instantiator,
Lisp_Object depth,
- int no_fallback)
+ Lisp_Object no_fallback)
{
/* When called, we're inside of call_with_suspended_errors(),
so we can freely error. */
@@ -2027,7 +2029,7 @@
return FACE_PROPERTY_INSTANCE_1
(Fget_face (XVECTOR_DATA (instantiator)[0]),
- Qbackground_placement, domain, ERROR_ME, no_fallback, depth);
+ Qbackground_placement, domain, ERROR_ME, !NILP (no_fallback), depth);
}
else
ABORT (); /* Eh? */
diff -r d3dfe7ea1c31 -r d40990b854cf src/glyphs.c
--- a/src/glyphs.c Mon Sep 23 08:01:37 2024 +0100
+++ b/src/glyphs.c Mon Sep 23 08:03:15 2024 +0100
@@ -3179,7 +3179,7 @@
static Lisp_Object
image_instantiate (Lisp_Object specifier, Lisp_Object UNUSED (matchspec),
Lisp_Object domain, Lisp_Object instantiator,
- Lisp_Object depth, int no_fallback)
+ Lisp_Object depth, Lisp_Object no_fallback)
{
Lisp_Object glyph = IMAGE_SPECIFIER_ATTACHEE (XIMAGE_SPECIFIER (specifier));
int dest_mask = XIMAGE_SPECIFIER_ALLOWED (specifier);
@@ -3218,7 +3218,7 @@
assert (XVECTOR_LENGTH (instantiator) == 3);
return (FACE_PROPERTY_INSTANCE
(Fget_face (XVECTOR_DATA (instantiator)[2]),
- Qbackground_pixmap, domain, no_fallback, depth));
+ Qbackground_pixmap, domain, !NILP (no_fallback), depth));
}
else
{
diff -r d3dfe7ea1c31 -r d40990b854cf src/specifier.c
--- a/src/specifier.c Mon Sep 23 08:01:37 2024 +0100
+++ b/src/specifier.c Mon Sep 23 08:03:15 2024 +0100
@@ -2862,8 +2862,8 @@
if (HAS_SPECMETH_P (sp, instantiate))
val = call_with_suspended_errors
((lisp_fn_t) RAW_SPECMETH (sp, instantiate),
- Qunbound, Qspecifier, ERROR_ME_WARN, 5, specifier,
- matchspec, domain, val, depth, no_fallback);
+ Qunbound, Qspecifier, ERROR_ME_WARN, 6, specifier,
+ matchspec, domain, val, depth, no_fallback ? Qt : Qnil);
if (!UNBOUNDP (val))
{
@@ -2911,8 +2911,8 @@
if (HAS_SPECMETH_P (sp, instantiate))
val = call_with_suspended_errors
((lisp_fn_t) RAW_SPECMETH (sp, instantiate),
- Qunbound, Qspecifier, errb, 5, specifier,
- matchspec, domain, val, depth, no_fallback);
+ Qunbound, Qspecifier, errb, 6, specifier,
+ matchspec, domain, val, depth, no_fallback ? Qt : Qnil);
if (!UNBOUNDP (val))
{
diff -r d3dfe7ea1c31 -r d40990b854cf src/specifier.h
--- a/src/specifier.h Mon Sep 23 08:01:37 2024 +0100
+++ b/src/specifier.h Mon Sep 23 08:03:15 2024 +0100
@@ -147,8 +147,9 @@
name specifier_instance) to avoid creating "external"
specification loops.
- NO_FALLBACK indicates that the method should not try the fallbacks
- (and thus simply return Qunbound) in case of a failure to instantiate.
+ NO_FALLBACK non-nil indicates that the method should not try the
+ fallbacks (and thus simply return Qunbound) in case of a failure to
+ instantiate.
This method must presume that both INSTANTIATOR and MATCHSPEC are
already validated by the corresponding validate_* methods, and
@@ -165,7 +166,7 @@
Lisp_Object domain,
Lisp_Object instantiator,
Lisp_Object depth,
- int no_fallback);
+ Lisp_Object no_fallback);
/* Going-to-add method: Called when an instantiator is about
to be added to a specifier. This function can specify

View File

@ -1,23 +0,0 @@
diff -r 22f2684b1b82 configure.ac
--- a/configure.ac Mon Sep 23 16:24:03 2024 +0100
+++ b/configure.ac Sat Sep 28 14:09:56 2024 +0200
@@ -2518,16 +2518,16 @@
dnl We need a recent version of makeinfo
AC_MSG_CHECKING([for makeinfo >= 4.12])
MAKEINFO=
-for prog in `which -a makeinfo`; do
+if prog=`command -v makeinfo`
+then
mi_verstr=[`$prog --version | sed -n '1s/^.* \([0-9][0-9.]*\)$/\1/p'`]
mi_major=`echo $mi_verstr | cut -d. -f1`
mi_minor=`echo $mi_verstr | cut -d. -f2`
if test "$mi_major" -gt 4 || ( test "$mi_major" -eq 4 && test "$mi_minor" -gt 11 );
then
MAKEINFO=$prog
- break
fi
-done
+fi
if test -z $MAKEINFO; then
AC_MSG_RESULT([no])
AC_MSG_WARN([Found Makeinfo $mi_verstr. 4.12 or later required.])

View File

@ -1,265 +0,0 @@
# Copyright 1999-2025 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
# Note: xemacs currently does not work with position independent code
# so the build forces the use of the -no-pie option
EAPI=8
inherit flag-o-matic xdg-utils desktop autotools
DESCRIPTION="highly customizable open source text editor and application development system"
HOMEPAGE="https://www.xemacs.org/"
SRC_URI="http://ftp.xemacs.org/pub/xemacs/xemacs-$(ver_cut 1-2)/${P}.tar.gz
https://dev.gentoo.org/~matsl/${P}-ootags-boolint.patch.xz
https://dev.gentoo.org/~matsl/${P}-info-handle-compress.patch.xz
neXt? ( http://www.malfunction.de/afterstep/files/NeXT_XEmacs.tar.gz )"
LICENSE="GPL-3+"
SLOT="0"
KEYWORDS="~alpha ~amd64 ~arm64 ~hppa ~ppc ~ppc64 ~riscv ~sparc ~x86"
IUSE="alsa debug gif gpm pop postgres ldap xface nas X jpeg tiff png motif xft xim athena neXt Xaw3d gdbm berkdb +bignum"
X_DEPEND="x11-libs/libXt x11-libs/libXmu x11-libs/libXext x11-misc/xbitmaps"
RDEPEND="
berkdb? ( >=sys-libs/db-4:= )
gdbm? ( >=sys-libs/gdbm-1.8.3:=[berkdb(+)] )
>=sys-libs/zlib-1.1.4
>=dev-libs/openssl-0.9.6:0=
>=media-libs/audiofile-0.2.3
gpm? ( >=sys-libs/gpm-1.19.6 )
postgres? ( dev-db/postgresql:= )
ldap? ( net-nds/openldap:= )
alsa? ( media-libs/alsa-lib )
nas? ( media-libs/nas )
X? ( $X_DEPEND !Xaw3d? ( !neXt? ( x11-libs/libXaw ) ) )
motif? ( >=x11-libs/motif-2.3:0[xft=] )
athena? ( x11-libs/libXaw )
Xaw3d? ( x11-libs/libXaw3d[unicode(+)] )
xft? ( media-libs/freetype:2 x11-libs/libXft x11-libs/libXrender >=media-libs/fontconfig-2.5.0 )
neXt? ( x11-libs/neXtaw )
xface? ( media-libs/compface )
tiff? ( media-libs/tiff:= )
png? ( >=media-libs/libpng-1.2:0 )
jpeg? ( media-libs/libjpeg-turbo:= )
>=sys-libs/ncurses-5.2:=
>=app-eselect/eselect-emacs-1.15
bignum? ( dev-libs/openssl )"
DEPEND="${RDEPEND}
virtual/pkgconfig"
BDEPEND="sys-apps/texinfo"
PDEPEND="app-xemacs/xemacs-base
app-xemacs/mule-base"
src_unpack() {
default_src_unpack
}
src_prepare() {
use neXt && cp "${WORKDIR}"/NeXT.XEmacs/xemacs-icons/* "${S}"/etc/toolbar/
find "${S}"/lisp -name '*.elc' -exec rm {} \; || die
eapply "${FILESDIR}/${P}-configure.patch"
eapply "${FILESDIR}/${P}-mule-tests.patch"
eapply "${FILESDIR}/${P}-configure-libc-version.patch"
eapply "${FILESDIR}/${P}-which.patch"
eapply "${FILESDIR}/${P}-misalignment.patch"
eapply "${FILESDIR}/${P}-va_args.patch"
eapply "${FILESDIR}/${P}-linker-flags.patch"
eapply "${WORKDIR}/${P}-ootags-boolint.patch"
eapply "${FILESDIR}/${P}-unknown-command-test.patch"
eapply "${WORKDIR}/${P}-info-handle-compress.patch"
eapply "${FILESDIR}/${P}-batch-segfault.patch"
eapply "${FILESDIR}/${P}-delay-fcinit-until-needed.patch"
eapply "${FILESDIR}/${P}-desktop.patch"
eapply_user
eautoconf
# Some binaries and man pages are installed under suffixed names
# to avoid collions with their GNU Emacs counterparts (see below).
# Fix internal filename references.
sed -i -e 's/exec gnuclient/&-xemacs/' lib-src/gnudoit || die
sed -i -e '/^\.so/s/etags/&-xemacs/' etc/ctags.1 || die
sed -i -e '/^\.so/s/gnuserv/&-xemacs/' etc/gnu{client,doit,attach}.1 || die
}
src_configure() {
local myconf=""
# bug #639642
test-flags -no-pie >/dev/null && append-flags -no-pie
filter-flags -pie
if use X; then
myconf="${myconf} --with-widgets=athena"
myconf="${myconf} --with-dialogs=athena"
myconf="${myconf} --with-menubars=lucid"
myconf="${myconf} --with-scrollbars=lucid"
if use motif ; then
myconf="--with-widgets=motif"
myconf="${myconf} --with-dialogs=motif"
myconf="${myconf} --with-scrollbars=motif"
myconf="${myconf} --with-menubars=lucid"
fi
if use athena or use Xaw3d ; then
myconf="--with-scrollbars=athena"
fi
if use Xaw3d; then
myconf="${myconf} --with-athena=3d"
elif use neXt; then
myconf="${myconf} --with-athena=next"
else
myconf="${myconf} --with-athena=xaw"
fi
myconf="${myconf} $(use_with tiff )"
myconf="${myconf} $(use_with png )"
myconf="${myconf} $(use_with jpeg )"
myconf="${myconf} $(use_with xface )"
use xft && myconf="${myconf} --with-xft=emacs,tabs,menubars,gauges" ||
myconf="${myconf} --with-xft=no"
else
myconf="${myconf}
--without-x
--without-xpm
--without-dragndrop
--with-xft=no
--with-gif=no"
fi
if use xim ; then
if use motif ; then
myconf="${myconf} --with-xim=motif"
else
myconf="${myconf} --with-xim=xlib"
fi
else
myconf="${myconf} --with-xim=no"
fi
myconf="${myconf} --without-wnn"
# This determines the type of sounds we are playing
local soundconf="native"
# This determines how these sounds should be played
use nas && soundconf="${soundconf},nas"
use alsa && soundconf="${soundconf},alsa"
myconf="${myconf} --with-sound=${soundconf}"
if use gdbm || use berkdb ; then
use gdbm && mydb="gdbm"
use berkdb && mydb="${mydb},berkdb"
myconf="${myconf} --with-database=${mydb}"
else
myconf="${myconf} --without-database"
fi
if use debug ; then
myconf="${myconf} --with-debug"
# bug #924339
append-flags -fno-strict-aliasing
else
myconf="${myconf} --with-optimization --with-cflags-debugging="
fi
use bignum && myconf="${myconf} --with-bignum=openssl" ||
myconf="${myconf} --with-bignum=no"
econf ${myconf} \
$(use_with gif ) \
$(use_with gpm ) \
$(use_with postgres postgresql ) \
$(use_with ldap ) \
$(use_with pop ) \
--prefix=/usr \
--with-mule \
--with-unicode-internal \
--without-canna \
--with-ncurses \
--with-msw=no \
--with-mail-locking=flock \
--with-site-lisp=yes \
--with-site-modules=yes \
--enable-option-checking=no \
--with-last-packages=/usr/lib/xemacs
}
src_compile() {
emake EMACSLOADPATH="${S}"/lisp
}
src_install() {
emake prefix="${ED}"/usr \
mandir="${ED}"/usr/share/man/man1 \
infodir="${ED}"/usr/share/info \
libdir="${ED}"/usr/$(get_libdir) \
datadir="${ED}"/usr/share \
install
# Rename some applications installed in bin so that it is clear
# which application installed them and so that conflicting
# packages (emacs) can't clobber the actual applications.
# Addresses bug #62991.
for i in b2m ctags etags gnuclient gnudoit gnuattach; do
mv "${ED}"/usr/bin/${i} "${ED}"/usr/bin/${i}-xemacs || die "mv ${i} failed"
done
# rename man pages
for i in ctags etags gnuserv gnuclient gnudoit gnuattach; do
mv "${ED}"/usr/share/man/man1/${i}{,-xemacs}.1 || die "mv ${i}.1 failed"
done
# install base packages directories
dodir /usr/lib/xemacs/xemacs-packages/
dodir /usr/lib/xemacs/site-packages/
dodir /usr/lib/xemacs/site-modules/
dodir /usr/lib/xemacs/site-lisp/
dodir /usr/lib/xemacs/mule-packages
# remove extraneous info files
cd "${ED}"/usr/share/info
rm -f dir info.info texinfo* termcap* standards*
cd "${S}"
dodoc CHANGES-* ChangeLog INSTALL Installation PROBLEMS README*
domenu "${S}"/etc/${PN}.desktop
newicon "${S}"/etc/${PN}-icon.xpm ${PN}.xpm
}
pkg_postinst() {
eselect emacs update ifunset
eselect gnuclient update ifunset
xdg_desktop_database_update
einfo "If you are upgrading from XEmacs 21.4 you should note the following"
einfo "incompatibilities:"
einfo "- Mule-UCS is no longer supported due to proper UTF-8 support in XEmacs 21.5"
einfo "- The X resource class has changed from Emacs to XEmacs,"
einfo " settings in your .Xdefaults file should be updated accordingly."
if use xft;
then
einfo "You have enabled Xft font support. Xft requires font names to be provided"
einfo "in a different way, so you may need to adjust your .Xdefaults accordingly."
fi
}
pkg_postrm() {
eselect emacs update ifunset
eselect gnuclient update ifunset
xdg_desktop_database_update
}

View File

@ -1,264 +0,0 @@
# Copyright 1999-2025 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
# Note: xemacs currently does not work with position independent code
# so the build forces the use of the -no-pie option
EAPI=8
inherit flag-o-matic xdg-utils desktop autotools
DESCRIPTION="highly customizable open source text editor and application development system"
HOMEPAGE="https://www.xemacs.org/"
SRC_URI="http://ftp.xemacs.org/pub/xemacs/xemacs-$(ver_cut 1-2)/${P}.tar.gz
https://dev.gentoo.org/~matsl/${P}-ootags-boolint.patch.xz
https://dev.gentoo.org/~matsl/${P}-info-handle-compress.patch.xz
neXt? ( http://www.malfunction.de/afterstep/files/NeXT_XEmacs.tar.gz )"
LICENSE="GPL-3+"
SLOT="0"
KEYWORDS="~alpha amd64 arm64 ~hppa ppc ppc64 ~riscv ~sparc x86"
IUSE="alsa debug gif gpm pop postgres ldap xface nas X jpeg tiff png motif xft xim athena neXt Xaw3d gdbm berkdb +bignum"
X_DEPEND="x11-libs/libXt x11-libs/libXmu x11-libs/libXext x11-misc/xbitmaps"
RDEPEND="
berkdb? ( >=sys-libs/db-4:= )
gdbm? ( >=sys-libs/gdbm-1.8.3:=[berkdb(+)] )
>=sys-libs/zlib-1.1.4
>=dev-libs/openssl-0.9.6:0=
>=media-libs/audiofile-0.2.3
gpm? ( >=sys-libs/gpm-1.19.6 )
postgres? ( dev-db/postgresql:= )
ldap? ( net-nds/openldap:= )
alsa? ( media-libs/alsa-lib )
nas? ( media-libs/nas )
X? ( $X_DEPEND !Xaw3d? ( !neXt? ( x11-libs/libXaw ) ) )
motif? ( >=x11-libs/motif-2.3:0[xft=] )
athena? ( x11-libs/libXaw )
Xaw3d? ( x11-libs/libXaw3d[unicode(+)] )
xft? ( media-libs/freetype:2 x11-libs/libXft x11-libs/libXrender >=media-libs/fontconfig-2.5.0 )
neXt? ( x11-libs/neXtaw )
xface? ( media-libs/compface )
tiff? ( media-libs/tiff:= )
png? ( >=media-libs/libpng-1.2:0 )
jpeg? ( media-libs/libjpeg-turbo:= )
>=sys-libs/ncurses-5.2:=
>=app-eselect/eselect-emacs-1.15
bignum? ( dev-libs/openssl )"
DEPEND="${RDEPEND}
virtual/pkgconfig"
BDEPEND="sys-apps/texinfo"
PDEPEND="app-xemacs/xemacs-base
app-xemacs/mule-base"
src_unpack() {
default_src_unpack
}
src_prepare() {
use neXt && cp "${WORKDIR}"/NeXT.XEmacs/xemacs-icons/* "${S}"/etc/toolbar/
find "${S}"/lisp -name '*.elc' -exec rm {} \; || die
eapply "${FILESDIR}/${P}-configure.patch"
eapply "${FILESDIR}/${P}-mule-tests.patch"
eapply "${FILESDIR}/${P}-configure-libc-version.patch"
eapply "${FILESDIR}/${P}-which.patch"
eapply "${FILESDIR}/${P}-misalignment.patch"
eapply "${FILESDIR}/${P}-va_args.patch"
eapply "${FILESDIR}/${P}-linker-flags.patch"
eapply "${WORKDIR}/${P}-ootags-boolint.patch"
eapply "${FILESDIR}/${P}-unknown-command-test.patch"
eapply "${WORKDIR}/${P}-info-handle-compress.patch"
eapply "${FILESDIR}/${P}-batch-segfault.patch"
eapply "${FILESDIR}/${P}-delay-fcinit-until-needed.patch"
eapply "${FILESDIR}/${P}-desktop.patch"
eapply_user
eautoconf
# Some binaries and man pages are installed under suffixed names
# to avoid collions with their GNU Emacs counterparts (see below).
# Fix internal filename references.
sed -i -e 's/exec gnuclient/&-xemacs/' lib-src/gnudoit || die
sed -i -e '/^\.so/s/etags/&-xemacs/' etc/ctags.1 || die
sed -i -e '/^\.so/s/gnuserv/&-xemacs/' etc/gnu{client,doit,attach}.1 || die
}
src_configure() {
local myconf=""
# bug #639642
test-flags -no-pie >/dev/null && append-flags -no-pie
filter-flags -pie
if use X; then
myconf="${myconf} --with-widgets=athena"
myconf="${myconf} --with-dialogs=athena"
myconf="${myconf} --with-menubars=lucid"
myconf="${myconf} --with-scrollbars=lucid"
if use motif ; then
myconf="--with-widgets=motif"
myconf="${myconf} --with-dialogs=motif"
myconf="${myconf} --with-scrollbars=motif"
myconf="${myconf} --with-menubars=lucid"
fi
if use athena or use Xaw3d ; then
myconf="--with-scrollbars=athena"
fi
if use Xaw3d; then
myconf="${myconf} --with-athena=3d"
elif use neXt; then
myconf="${myconf} --with-athena=next"
else
myconf="${myconf} --with-athena=xaw"
fi
myconf="${myconf} $(use_with tiff )"
myconf="${myconf} $(use_with png )"
myconf="${myconf} $(use_with jpeg )"
myconf="${myconf} $(use_with xface )"
use xft && myconf="${myconf} --with-xft=emacs,tabs,menubars,gauges" ||
myconf="${myconf} --with-xft=no"
else
myconf="${myconf}
--without-x
--without-xpm
--without-dragndrop
--with-xft=no
--with-gif=no"
fi
if use xim ; then
if use motif ; then
myconf="${myconf} --with-xim=motif"
else
myconf="${myconf} --with-xim=xlib"
fi
else
myconf="${myconf} --with-xim=no"
fi
myconf="${myconf} --without-wnn"
# This determines the type of sounds we are playing
local soundconf="native"
# This determines how these sounds should be played
use nas && soundconf="${soundconf},nas"
use alsa && soundconf="${soundconf},alsa"
myconf="${myconf} --with-sound=${soundconf}"
if use gdbm || use berkdb ; then
use gdbm && mydb="gdbm"
use berkdb && mydb="${mydb},berkdb"
myconf="${myconf} --with-database=${mydb}"
else
myconf="${myconf} --without-database"
fi
if use debug ; then
myconf="${myconf} --with-debug"
# bug #924339
append-flags -fno-strict-aliasing
else
myconf="${myconf} --with-optimization --with-cflags-debugging="
fi
use bignum && myconf="${myconf} --with-bignum=openssl" ||
myconf="${myconf} --with-bignum=no"
econf ${myconf} \
$(use_with gif ) \
$(use_with gpm ) \
$(use_with postgres postgresql ) \
$(use_with ldap ) \
$(use_with pop ) \
--prefix=/usr \
--with-mule \
--with-unicode-internal \
--without-canna \
--with-ncurses \
--with-msw=no \
--with-mail-locking=flock \
--with-site-lisp=yes \
--with-site-modules=yes \
--enable-option-checking=no \
--with-last-packages=/usr/lib/xemacs
}
src_compile() {
emake EMACSLOADPATH="${S}"/lisp
}
src_install() {
emake prefix="${ED}"/usr \
mandir="${ED}"/usr/share/man/man1 \
infodir="${ED}"/usr/share/info \
libdir="${ED}"/usr/$(get_libdir) \
datadir="${ED}"/usr/share \
install
# Rename some applications installed in bin so that it is clear
# which application installed them and so that conflicting
# packages (emacs) can't clobber the actual applications.
# Addresses bug #62991.
for i in b2m ctags etags gnuclient gnudoit gnuattach; do
mv "${ED}"/usr/bin/${i} "${ED}"/usr/bin/${i}-xemacs || die "mv ${i} failed"
done
# rename man pages
for i in ctags etags gnuserv gnuclient gnudoit gnuattach; do
mv "${ED}"/usr/share/man/man1/${i}{,-xemacs}.1 || die "mv ${i}.1 failed"
done
# install base packages directories
dodir /usr/lib/xemacs/xemacs-packages/
dodir /usr/lib/xemacs/site-packages/
dodir /usr/lib/xemacs/site-modules/
dodir /usr/lib/xemacs/site-lisp/
dodir /usr/lib/xemacs/mule-packages
# remove extraneous info files
cd "${ED}"/usr/share/info
rm -f dir info.info texinfo* termcap* standards*
cd "${S}"
dodoc CHANGES-* ChangeLog INSTALL Installation PROBLEMS README*
newicon "${S}"/etc/${PN}-icon.xpm ${PN}.xpm
}
pkg_postinst() {
eselect emacs update ifunset
eselect gnuclient update ifunset
xdg_desktop_database_update
einfo "If you are upgrading from XEmacs 21.4 you should note the following"
einfo "incompatibilities:"
einfo "- Mule-UCS is no longer supported due to proper UTF-8 support in XEmacs 21.5"
einfo "- The X resource class has changed from Emacs to XEmacs,"
einfo " settings in your .Xdefaults file should be updated accordingly."
if use xft;
then
einfo "You have enabled Xft font support. Xft requires font names to be provided"
einfo "in a different way, so you may need to adjust your .Xdefaults accordingly."
fi
}
pkg_postrm() {
eselect emacs update ifunset
eselect gnuclient update ifunset
xdg_desktop_database_update
}