diff --git a/xemacs-21.5.34-Xaw3D_I18N.patch b/xemacs-21.5.34-Xaw3D_I18N.patch new file mode 100644 index 0000000..ca96b8a --- /dev/null +++ b/xemacs-21.5.34-Xaw3D_I18N.patch @@ -0,0 +1,284 @@ +--- + configure | 146 +++++++++++++++++++++++++++++++++++++++++++++++++------- + configure.ac | 34 +++++++++++++ + lwlib/lwlib.h | 4 + + src/config.h.in | 1 + 4 files changed, 169 insertions(+), 16 deletions(-) + +--- configure ++++ configure 2015-05-12 14:39:29.545519118 +0000 +@@ -16754,6 +16754,49 @@ fi + + if test -n "$athena_lib" -a -n "$athena_h_path"; then + have_xaw=yes ++ have_athena_i18n=unset ++ if test "$athena_variant" = "Xaw3d"; then ++ save_libs_x=$libs_x ++ libs_x="-lXaw3d $libs_x" && if test "$verbose" = "yes"; then echo " Prepending \"-lXaw3d\" to \$libs_x"; fi ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for \"international\" resource in Xaw3d SimpleWidget" >&5 ++$as_echo_n "checking for \"international\" resource in Xaw3d SimpleWidget... " >&6; } ++ ++ if test "$cross_compiling" = yes; then : ++ { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 ++$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} ++as_fn_error $? "cannot run test program while cross compiling ++See \`config.log' for more details" "$LINENO" 5; } ++else ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext ++/* end confdefs.h. */ ++#include ++ #include ++ #undef XAW_INTERNATIONALIZATION ++ #include <$athena_h_path/Simple.h> ++ int main(int c, char **v) { ++ int i = simpleWidgetClass->core_class.num_resources; ++ while (i-- > 0) ++ if (!strcmp(simpleWidgetClass->core_class.resources[i].resource_name, ++ "international")) ++ exit(0); ++ exit(253);} ++_ACEOF ++if ac_fn_c_try_run "$LINENO"; then : ++ ./conftest dummy_arg; xaw_intl_status=$?; ++ if test "$xaw_intl_status" = "0"; then ++ have_athena_i18n=yes ++ else ++ have_athena_i18n=no ++ libs_x=$save_libs_x ++ fi ++fi ++rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ ++ conftest.$ac_objext conftest.beam conftest.$ac_ext ++fi ++ ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $have_athena_i18n" >&5 ++$as_echo "$have_athena_i18n" >&6; } ++ fi + else + have_xaw=no + fi +@@ -16962,6 +17005,10 @@ _ACEOF + if test "$athena_3d" = "yes"; then + $as_echo "#define HAVE_ATHENA_3D 1" >>confdefs.h + ++ if test "$have_athena_i18n" = "yes"; then ++ $as_echo "#define HAVE_ATHENA_I18N 1" >>confdefs.h ++ ++ fi + fi + ;; + esac +@@ -19610,14 +19657,18 @@ $as_echo "" >&6; } + $as_echo "#define HAVE_TTY 1" >>confdefs.h + + +- if test -z "$with_ncurses"; then +- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for tgetent in -lncurses" >&5 +-$as_echo_n "checking for tgetent in -lncurses... " >&6; } +-if ${ac_cv_lib_ncurses_tgetent+:} false; then : ++ cf_tgetent="" ++ if test -z "$with_ncurses"; then ++ with_ncurses=no; ++ for lib in tinfo ncurses ncursesw ; do ++ as_ac_Lib=`$as_echo "ac_cv_lib_$lib''_tgetent" | $as_tr_sh` ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for tgetent in -l$lib" >&5 ++$as_echo_n "checking for tgetent in -l$lib... " >&6; } ++if eval \${$as_ac_Lib+:} false; then : + $as_echo_n "(cached) " >&6 + else + ac_check_lib_save_LIBS=$LIBS +-LIBS="-lncurses $LIBS" ++LIBS="-l$lib $LIBS" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ + +@@ -19637,42 +19688,105 @@ return tgetent (); + } + _ACEOF + if ac_fn_c_try_link "$LINENO"; then : +- ac_cv_lib_ncurses_tgetent=yes ++ eval "$as_ac_Lib=yes" + else +- ac_cv_lib_ncurses_tgetent=no ++ eval "$as_ac_Lib=no" + fi + rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + LIBS=$ac_check_lib_save_LIBS + fi +-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ncurses_tgetent" >&5 +-$as_echo "$ac_cv_lib_ncurses_tgetent" >&6; } +-if test "x$ac_cv_lib_ncurses_tgetent" = xyes; then : +- with_ncurses=yes +-else +- with_ncurses=no ++eval ac_res=\$$as_ac_Lib ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 ++$as_echo "$ac_res" >&6; } ++if eval test \"x\$"$as_ac_Lib"\" = x"yes"; then : ++ with_ncurses=yes; cf_tgetent="$lib"; break + fi + ++ done + fi + if test "$with_ncurses" = "yes"; then ++ if test x$cf_tgetent = x ; then ++ for lib in tinfo ncurses ncursesw ; do ++ as_ac_Lib=`$as_echo "ac_cv_lib_$lib''_tgetent" | $as_tr_sh` ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for tgetent in -l$lib" >&5 ++$as_echo_n "checking for tgetent in -l$lib... " >&6; } ++if eval \${$as_ac_Lib+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ ac_check_lib_save_LIBS=$LIBS ++LIBS="-l$lib $LIBS" ++cat confdefs.h - <<_ACEOF >conftest.$ac_ext ++/* end confdefs.h. */ ++ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ ++#ifdef __cplusplus ++extern "C" ++#endif ++char tgetent (); ++int ++main () ++{ ++return tgetent (); ++ ; ++ return 0; ++} ++_ACEOF ++if ac_fn_c_try_link "$LINENO"; then : ++ eval "$as_ac_Lib=yes" ++else ++ eval "$as_ac_Lib=no" ++fi ++rm -f core conftest.err conftest.$ac_objext \ ++ conftest$ac_exeext conftest.$ac_ext ++LIBS=$ac_check_lib_save_LIBS ++fi ++eval ac_res=\$$as_ac_Lib ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 ++$as_echo "$ac_res" >&6; } ++if eval test \"x\$"$as_ac_Lib"\" = x"yes"; then : ++ cf_tgetent="$lib"; break ++fi ++ ++ done ++ fi + $as_echo "#define HAVE_NCURSES 1" >>confdefs.h + +- ac_fn_c_check_header_mongrel "$LINENO" "ncurses/curses.h" "ac_cv_header_ncurses_curses_h" "$ac_includes_default" ++ if test "$cf_tgetent" = ncursesw; then ++ $as_echo "#define HAVE_NCURSESW 1" >>confdefs.h ++ ++ ac_fn_c_check_header_mongrel "$LINENO" "ncursesw/curses.h" "ac_cv_header_ncursesw_curses_h" "$ac_includes_default" ++if test "x$ac_cv_header_ncursesw_curses_h" = xyes; then : ++ curses_h_file=ncursesw/curses.h ++fi ++ ++ ++ ac_fn_c_check_header_mongrel "$LINENO" "ncursesw/term.h" "ac_cv_header_ncursesw_term_h" "$ac_includes_default" ++if test "x$ac_cv_header_ncursesw_term_h" = xyes; then : ++ term_h_file=ncursesw/term.h ++fi ++ ++ ++ else ++ ac_fn_c_check_header_mongrel "$LINENO" "ncurses/curses.h" "ac_cv_header_ncurses_curses_h" "$ac_includes_default" + if test "x$ac_cv_header_ncurses_curses_h" = xyes; then : + curses_h_file=ncurses/curses.h + fi + + +- ac_fn_c_check_header_mongrel "$LINENO" "ncurses/term.h" "ac_cv_header_ncurses_term_h" "$ac_includes_default" ++ ac_fn_c_check_header_mongrel "$LINENO" "ncurses/term.h" "ac_cv_header_ncurses_term_h" "$ac_includes_default" + if test "x$ac_cv_header_ncurses_term_h" = xyes; then : + term_h_file=ncurses/term.h + fi + + ++ fi + extra_objs="$extra_objs terminfo.o" && if test "$verbose" = "yes"; then + echo " xemacs will be linked with \"terminfo.o\"" + fi +- LIBS="-lncurses $LIBS" && if test "$verbose" = "yes"; then echo " Prepending \"-lncurses\" to \$LIBS"; fi ++ LIBS="-l$cf_tgetent $LIBS" && if test "$verbose" = "yes"; then echo " Prepending \"-l$cf_tgetent\" to \$LIBS"; fi + + if test "$ac_cv_header_ncurses_curses_h" != "yes" ; then + save_c_switch_site="$c_switch_site" +--- configure.ac ++++ configure.ac 2015-05-12 00:00:00.000000000 +0000 +@@ -4028,6 +4028,37 @@ if test "$with_x11" = "yes" -a "$detect_ + dnl Do we actually have a usable Athena widget set? Please? + if test -n "$athena_lib" -a -n "$athena_h_path"; then + have_xaw=yes ++ have_athena_i18n=unset ++ dnl X.org at some point added .international to SimplePart, protected ++ dnl by #ifdef XAW_INTERNATIONALIZATION in Xaw3d (only?). Unfortunately, ++ dnl the distributed headers for Xaw3d don't set this to correspond to ++ dnl the distributed library. (pkg-config does, if present.) ++ if test "$athena_variant" = "Xaw3d"; then ++ save_libs_x=$libs_x ++ XE_PREPEND(-lXaw3d, libs_x) ++ dnl The test below was provided by Ralf Soergel. ++ AC_MSG_CHECKING([for "international" resource in Xaw3d SimpleWidget]) ++ ++ AC_TRY_RUN([#include ++ #include ++ #undef XAW_INTERNATIONALIZATION ++ #include <$athena_h_path/Simple.h> ++ int main(int c, char **v) { ++ int i = simpleWidgetClass->core_class.num_resources; ++ while (i-- > 0) ++ if (!strcmp(simpleWidgetClass->core_class.resources[i].resource_name, ++ "international")) ++ exit(0); ++ exit(253);}], ++ [./conftest dummy_arg; xaw_intl_status=$?; ++ if test "$xaw_intl_status" = "0"; then ++ have_athena_i18n=yes ++ else ++ have_athena_i18n=no ++ libs_x=$save_libs_x ++ fi]) ++ AC_MSG_RESULT([$have_athena_i18n]) ++ fi + else + have_xaw=no + fi +@@ -4163,6 +4194,9 @@ case "$all_widgets" in + + if test "$athena_3d" = "yes"; then + AC_DEFINE(HAVE_ATHENA_3D) ++ if test "$have_athena_i18n" = "yes"; then ++ AC_DEFINE(HAVE_ATHENA_I18N) ++ fi + fi + ;; + esac +--- lwlib/lwlib.h ++++ lwlib/lwlib.h 2015-05-12 00:00:00.000000000 +0000 +@@ -24,6 +24,10 @@ along with the Lucid Widget Library. If + #include + #include "xt-wrappers.h" + ++#ifdef HAVE_ATHENA_I18N ++#define XAW_INTERNATIONALIZATION 1 ++#endif ++ + #if defined (LWLIB_MENUBARS_LUCID) || defined (LWLIB_MENUBARS_MOTIF) || defined (LWLIB_MENUBARS_ATHENA) + #define NEED_MENUBARS + #endif +--- src/config.h.in ++++ src/config.h.in 2015-05-12 00:00:00.000000000 +0000 +@@ -860,6 +860,7 @@ things are arranged in config.h.in. In + #undef LWLIB_WIDGETS_MOTIF + #undef LWLIB_WIDGETS_ATHENA + #undef HAVE_ATHENA_3D ++#undef HAVE_ATHENA_I18N + + /* Other things that can be disabled by configure. */ + #undef HAVE_MENUBARS diff --git a/xemacs.changes b/xemacs.changes index 9832ebb..6107263 100644 --- a/xemacs.changes +++ b/xemacs.changes @@ -1,3 +1,9 @@ +------------------------------------------------------------------- +Tue May 12 14:48:57 UTC 2015 - werner@suse.de + +- Add patch xemacs-21.5.34-Xaw3D_I18N.patch to fix bsc#930170 with + xemacs segmentation fault on syntax highlighting + ------------------------------------------------------------------- Tue Feb 10 16:58:28 UTC 2015 - werner@suse.de diff --git a/xemacs.spec b/xemacs.spec index 3a31078..da64ec0 100644 --- a/xemacs.spec +++ b/xemacs.spec @@ -88,6 +88,8 @@ Patch53: xemacs-21.5.31-array.patch Patch56: xemacs-libpng15.patch Patch292811: bugzilla-292811-make-x-make-font-bold-italic-xft-work.patch Patch301352: bugzilla-301352-fix-wrong-incrementing-in-macros.patch +# PATCH-FIC-UPSTREAM bsc#930170 +Patch57: xemacs-21.5.34-Xaw3D_I18N.patch Requires(pre): permissions Requires: ctags Requires: efont-unicode @@ -176,6 +178,7 @@ echo Use xfs, that is XFontSet support for internationalized menubar. %patch56 -p1 %patch292811 -p1 %patch301352 -p1 +%patch57 -p0 %patch0 -p1 find lisp/ etc/ -name '*.elc' | xargs -r rm -f find . -name CVS -type d | xargs rm -rf