app-text/aspell: Fix building with Unicode support
authorMichał Kępień <github@kempniu.pl>
Wed, 7 Sep 2016 09:36:12 +0000 (11:36 +0200)
committerDavid Seifert <soap@gentoo.org>
Fri, 9 Sep 2016 21:01:39 +0000 (23:01 +0200)
* EAPI=6
* Use dep on sys-libs/ncurses using newly introduced IUSE="unicode"
* Made PATCHES -p1 compliant
* Fixed unicode handling by pulling in ncurses/ncursesw
  using PKG_CHECK_MODULES instead of automagic discovery
  in configure.ac
* Add missing '|| die' statements

Closes: https://github.com/gentoo/gentoo/pull/2269

Signed-off-by: David Seifert <soap@gentoo.org>
app-text/aspell/aspell-0.60.6.1-r4.ebuild [new file with mode: 0644]
app-text/aspell/files/aspell-0.60.5-solaris.patch
app-text/aspell/files/aspell-0.60.6-darwin-bundles.patch
app-text/aspell/files/aspell-0.60.6.1-clang.patch
app-text/aspell/files/aspell-0.60.6.1-unicode.patch [new file with mode: 0644]

diff --git a/app-text/aspell/aspell-0.60.6.1-r4.ebuild b/app-text/aspell/aspell-0.60.6.1-r4.ebuild
new file mode 100644 (file)
index 0000000..b040ac6
--- /dev/null
@@ -0,0 +1,90 @@
+# Copyright 1999-2016 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI=6
+
+inherit autotools flag-o-matic libtool toolchain-funcs
+
+DESCRIPTION="A spell checker replacement for ispell"
+HOMEPAGE="http://aspell.net/"
+SRC_URI="mirror://gnu/aspell/${P}.tar.gz"
+
+LICENSE="LGPL-2"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~x86 ~amd64-fbsd ~sparc-fbsd ~x86-fbsd ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x86-macos ~sparc-solaris ~x86-solaris"
+IUSE="nls unicode"
+
+PDEPEND="app-dicts/aspell-en"
+LANGS="af be bg br ca cs cy da de de-1901 el en eo es et fi fo fr ga gl he hr
+hu hy is it la lt nl no pl pt pt-BR ro ru sk sl sr sv uk vi"
+for lang in ${LANGS}; do
+       IUSE+=" l10n_${lang}"
+       # Need to keep linguas_* for now, since aspell uses gettext
+       IUSE+=" linguas_${lang/-/_}"
+       case ${lang} in
+               de-1901) dict="de-alt"  ;;
+               pt-BR)   dict="pt-br"   ;;
+               *)       dict="${lang}" ;;
+       esac
+       PDEPEND+=" l10n_${lang}? ( app-dicts/aspell-${dict} )"
+done
+unset dict lang LANGS
+
+# English dictionary 0.5 is incompatible with aspell-0.6
+RDEPEND="
+       sys-libs/ncurses:0=[unicode?]
+       nls? ( virtual/libintl )
+       !=app-dicts/aspell-en-0.5*
+"
+DEPEND="${RDEPEND}
+       virtual/pkgconfig
+       nls? ( sys-devel/gettext )
+"
+
+HTML_DOCS=( manual/aspell{,-dev}.html )
+PATCHES=(
+       "${FILESDIR}/${PN}-0.60.5-nls.patch"
+       "${FILESDIR}/${PN}-0.60.5-solaris.patch"
+       "${FILESDIR}/${PN}-0.60.6-darwin-bundles.patch"
+       "${FILESDIR}/${PN}-0.60.6.1-clang.patch"
+       # includes fix for bug #467602
+       "${FILESDIR}/${PN}-0.60.6.1-unicode.patch"
+)
+
+src_prepare() {
+       default
+
+       rm m4/lt* m4/libtool.m4 || die
+       eautoreconf
+       elibtoolize --reverse-deps
+
+       # Parallel install of libtool libraries doesn't always work.
+       # https://lists.gnu.org/archive/html/libtool/2011-03/msg00003.html
+       # This has to be after automake has run so that we don't clobber
+       # the default target that automake creates for us.
+       echo 'install-filterLTLIBRARIES: install-libLTLIBRARIES' >> Makefile.in || die
+}
+
+src_configure() {
+       econf \
+               $(use_enable nls) \
+               $(use_enable unicode) \
+               --disable-static \
+               --sysconfdir="${EPREFIX}"/etc/aspell
+}
+
+src_install() {
+       default
+
+       docinto examples
+       dodoc "${S}"/examples/*.c
+
+       # install ispell/aspell compatibility scripts
+       newbin scripts/ispell ispell-aspell
+       newbin scripts/spell spell-aspell
+
+       # we explicitly pass '--disable-static' to econf,
+       # hence we can delete .la files unconditionally
+       find "${D}" -name '*.la' -delete || die
+}
index fc1920a4f57ab9bbaed30280f6a5af861a66036e..1cfc5f3e6caad2d4e5b6928f6f50fc5330b86b42 100644 (file)
@@ -1,8 +1,8 @@
 * grobian@gentoo.org: on Solaris 10 _XOPEN_SOURCE_EXTENDED may not be
   defined when including wchar.h with g++
 
---- prog/check_funs.cpp
-+++ prog/check_funs.cpp
+--- a/prog/check_funs.cpp
++++ b/prog/check_funs.cpp
 @@ -18,10 +18,6 @@
  
  #include "settings.h"
index 39178587f685381c4b5e48ed17336d0e1633a895..84e05833d9d86b108c165debda6201b79676fe57 100644 (file)
@@ -5,8 +5,8 @@ Apple suggests using .bundle.  libtool on Gentoo generates .bundle files
 for modules on Darwin, so we need aspell to actually look for .bundle,
 not .so.
 
---- lib/new_filter.cpp
-+++ lib/new_filter.cpp
+--- a/lib/new_filter.cpp
++++ b/lib/new_filter.cpp
 @@ -458,11 +458,23 @@
        module->file.assign(option_file.str(), slash + 1 - option_file.str());
        //module->file += "lib";
index 76cfaa868e3186a50f3aa97d5ff6433b326491cf..8d3e62dcdf0b7c9fbd6b77d26e2cc561097fcf12 100644 (file)
@@ -1,6 +1,6 @@
 From https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=180565
---- interfaces/cc/aspell.h.orig        2011-07-02 17:53:27.000000000 -0400
-+++ interfaces/cc/aspell.h     2015-07-29 11:23:32.000000000 -0400
+--- a/interfaces/cc/aspell.h
++++ b/interfaces/cc/aspell.h
 @@ -237,6 +237,7 @@
  /******************************** errors ********************************/
  
@@ -17,8 +17,8 @@ From https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=180565
  
  
  /******************************* speller *******************************/
---- prog/aspell.cpp.orig       2011-07-04 05:13:58.000000000 -0400
-+++ prog/aspell.cpp    2015-07-29 11:22:57.000000000 -0400
+--- a/prog/aspell.cpp
++++ b/prog/aspell.cpp
 @@ -25,6 +25,7 @@
  # include <langinfo.h>
  #endif
@@ -35,8 +35,8 @@ From https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=180565
  #include "file_util.hpp"
  #include "fstream.hpp"
  #include "info.hpp"
---- prog/checker_string.hpp.orig       2011-07-02 17:09:09.000000000 -0400
-+++ prog/checker_string.hpp    2015-07-29 11:24:50.000000000 -0400
+--- a/prog/checker_string.hpp
++++ b/prog/checker_string.hpp
 @@ -6,6 +6,7 @@
  
  #include <stdio.h>
diff --git a/app-text/aspell/files/aspell-0.60.6.1-unicode.patch b/app-text/aspell/files/aspell-0.60.6.1-unicode.patch
new file mode 100644 (file)
index 0000000..8e1957c
--- /dev/null
@@ -0,0 +1,276 @@
+--- a/configure.ac
++++ b/configure.ac
+@@ -2,7 +2,7 @@
+ AC_CONFIG_SRCDIR(prog/aspell.cpp)
+ AC_CANONICAL_SYSTEM
+ AM_INIT_AUTOMAKE
+-AM_CONFIG_HEADER(gen/settings.h)
++AC_CONFIG_HEADERS([gen/settings.h])
+ AM_MAINTAINER_MODE
+@@ -52,14 +52,11 @@
+ AC_ARG_ENABLE(win32-relocatable,
+   [  --enable-win32-relocatable])
+-AC_ARG_ENABLE(curses,           
+-  AS_HELP_STRING([--enable-curses=LIBFILE],[cursor control library]))
++AC_ARG_ENABLE([curses],
++  AS_HELP_STRING([--enable-curses],[cursor control library]))
+-AC_ARG_ENABLE(curses-include,           
+-  [  --enable-curses-include=DIR])
+-
+-AC_ARG_ENABLE(wide-curses,
+-  AS_HELP_STRING([--disable-wide-curses],[disable wide char utf8 cursor control]))
++AC_ARG_ENABLE([unicode],
++  AS_HELP_STRING([--enable-unicode],[enable Unicode support]))
+ AC_ARG_ENABLE(regex,
+   [  --disable-regex])
+@@ -312,197 +309,18 @@
+   [AC_MSG_RESULT(no)]
+ )
+-AC_SUBST(CURSES_LIB)
+-AC_SUBST(CURSES_INCLUDE)
+-
+-if test "$enable_curses" != "no"
+-then
+-  use_curses=t
+-  case "$enable_curses" in
+-    yes | ""                     )                             ;;
+-    /* | *lib* | *.a | -l* | -L* ) CURSES_LIB="$enable_curses" ;;
+-    *                            ) CURSES_LIB=-l$enable_curses ;;
+-  esac
+-  case "$enable_curses_include" in
+-    yes | no | "")                                         ;;
+-    -I*          ) CURSES_INCLUDE="$enable_curses_include" ;;
+-    *            ) CURSES_INCLUDE=-I$enable_curses_include ;;
+-  esac
+-fi
+-
+-if test "$use_curses"
+-then
+-
+-  ORIG_LIBS="$LIBS"
+-  ORIG_CPPFLAGS="$CPPFLAGS"
+-  CPPFLAGS="$CURSES_INCLUDE $ORIG_CPPFLAGS"
+-
+-  if test -z "$CURSES_LIB"
+-  then
+-
+-    AC_MSG_CHECKING(for working curses library)
+-
+-    if test "$enable_wide_curses" != "no" -a -n "$have_mblen"
+-    then
+-      LIBS="-lncursesw $ORIG_LIBS"
+-      AC_TRY_LINK(
+-        [#include <ncursesw/curses.h>], [initscr()],
+-        [CURSES_LIB=-lncursesw
+-         AC_DEFINE(CURSES_HEADER, <ncursesw/curses.h>, [Defined to curses header file])
+-         AC_DEFINE(TERM_HEADER, <ncursesw/term.h>, [Defined to term header file])])
+-    fi
+-
+-    if test -z "$CURSES_LIB"
+-    then
+-      LIBS="-lncurses $ORIG_LIBS"
+-      AC_TRY_LINK(
+-        [#include <ncurses/curses.h>], [initscr()],
+-        [CURSES_LIB=-lncurses
+-         AC_DEFINE(CURSES_HEADER, <ncurses/curses.h>, [Defined to curses header file])
+-         AC_DEFINE(TERM_HEADER, <ncurses/term.h>, [Defined to term header file])],
+-        [
+-      LIBS="-lncurses $ORIG_LIBS"
+-      AC_TRY_LINK(
+-        [#include <ncurses.h>], [initscr()],
+-        [CURSES_LIB=-lncurses
+-         AC_DEFINE(CURSES_HEADER, <ncurses.h>, [Defined to curses header file])
+-         AC_DEFINE(TERM_HEADER, <term.h>, [Defined to term header file])],
+-        [
+-      LIBS="-lcurses $ORIG_LIBS"
+-      AC_TRY_LINK(
+-        [#include <curses.h>], [initscr()],
+-        [CURSES_LIB=-lcurses
+-         AC_DEFINE(CURSES_HEADER, <curses.h>, [Defined to curses header file])
+-         AC_DEFINE(TERM_HEADER, <term.h>, [Defined to term header file])],
+-        [
+-      LIBS="-lncurses $ORIG_LIBS"
+-      AC_TRY_LINK(
+-        [#include <curses.h>], [initscr()],
+-        [CURSES_LIB=-lncurses
+-         AC_DEFINE(CURSES_HEADER, <curses.h>, [Defined to curses header file])
+-         AC_DEFINE(TERM_HEADER, <term.h>, [Defined to term header file])],
+-      ) ]) ]) ])
+-    fi
+-
+-    if test -n "$CURSES_LIB"
+-    then
+-      AC_MSG_RESULT([found in $CURSES_LIB])
+-    else
+-      AC_MSG_RESULT([not found])
+-    fi
+-
+-  else
+-
+-    AC_DEFINE(CURSES_HEADER, <curses.h>, [Defined to curses header file])
+-    AC_DEFINE(TERM_HEADER, <term.h>, [Defined to term header file])
+-
+-  fi
+-
+-  if test -n "$CURSES_LIB"
+-  then
+-     LIBS="$CURSES_LIB $ORIG_LIBS"
+-
+-     if test "$enable_wide_curses" != "no"
+-     then
+-
+-       AC_MSG_CHECKING(for wide character support in curses libraray)
+-       if test -n "$have_mblen"
+-       then
+-         AC_TRY_LINK(
+-           [#include <wchar.h>
+-            #include CURSES_HEADER
+-           ],
+-           [wchar_t wch = 0;
+-            addnwstr(&wch, 1);],
+-           [AC_MSG_RESULT(yes)
+-            AC_DEFINE(HAVE_WIDE_CURSES, 1, [Defined if curses libraray includes wide character support])],
+-           [
+-
+-         AC_TRY_LINK(
+-           [#define _XOPEN_SOURCE_EXTENDED 1
+-            #include <wchar.h>
+-            #include CURSES_HEADER
+-           ],
+-           [wchar_t wch = 0;
+-            addnwstr(&wch, 1);],
+-           [AC_MSG_RESULT(yes)
+-            AC_DEFINE(HAVE_WIDE_CURSES, 1)
+-            AC_DEFINE(DEFINE_XOPEN_SOURCE_EXTENDED, 1, 
+-                      [Defined if _XOPEN_SOURCE_EXTENDED needs to be defined. 
+-                       (Can't define globally as that will cause problems with some systems)])
+-           ],
+-           [AC_MSG_RESULT(no)
+-            AC_MSG_WARN([Aspell will not be able to Display UTF-8 characters correctly.])])])
+-       else
+-         AC_MSG_RESULT([no, because "mblen" is not supported])
+-         AC_MSG_WARN([Aspell will not be able to Display UTF-8 characters correctly.])
+-       fi
+-
+-     fi
+- 
+-     AC_MSG_CHECKING(if standard curses include sequence will work)
+-     AC_TRY_LINK(
+-       [#ifdef DEFINE_XOPEN_SOURCE_EXTENDED
+-        #  define _XOPEN_SOURCE_EXTENDED 1
+-        #endif
+-        #include <termios.h>
+-      #include <unistd.h>
+-        #include CURSES_HEADER
+-      #include TERM_HEADER
+-       ],
+-       [tigetstr(const_cast<char *>("cup"));],
+-       [AC_MSG_RESULT(yes)
+-      AC_DEFINE(HAVE_LIBCURSES, 1, 
+-                  [Defined if the curses library is available])
+-      posix_termios=t
+-      AC_DEFINE(CURSES_INCLUDE_STANDARD, 1, 
+-                  [Defined if no special Workarounds are needed for Curses headers])],
+-       [AC_MSG_RESULT(no)
+-
+-     dnl else if
+-     AC_MSG_CHECKING(if curses workaround I will work)
+-     AC_TRY_LINK(
+-       [#ifdef DEFINE_XOPEN_SOURCE_EXTENDED
+-        #  define _XOPEN_SOURCE_EXTENDED 1
+-        #endif
+-        #include <termios.h>
+-      #include <unistd.h>
+-        #include CURSES_HEADER
+-      extern "C" {char * tigetstr(char * capname);}],
+-       [tigetstr(const_cast<char *>("cup"));],
+-       [AC_MSG_RESULT(yes)
+-      AC_DEFINE(HAVE_LIBCURSES, 1, [])
+-        posix_termios=t
+-      AC_DEFINE(CURSES_INCLUDE_WORKAROUND_1, 1, 
+-                  [Defined if special Wordaround I is need for Curses headers])],
+-       [AC_MSG_RESULT(no)
+-
+-     dnl else if
+-     AC_MSG_CHECKING(if curses without Unix stuff will work)
+-     AC_TRY_LINK(
+-       [#include CURSES_HEADER
+-       ],
+-       [initscr();],
+-       [AC_MSG_RESULT(yes)
+-      AC_DEFINE(HAVE_LIBCURSES, 1, [])
+-      AC_DEFINE(CURSES_ONLY, 1, 
+-                  [Defined if curses like POSIX Functions should be used])
+-        curses_only=t],
+-       [AC_MSG_RESULT(no)
+-
+-     dnl else
+-     use_curses=false
+-     CURSES_LIBS=""
+-     CURSES_INCLUDE=""
+-
+-     ]) ]) ])
+-
+-  fi
+-
+-  CPPFLAGS="$ORIG_CPPFLAGS"
+-  LIBS="$ORIG_LIBS"
+-
+-fi
++AS_IF([test "x$enable_curses" != "xno"],[
++  AS_IF([test "x$enable_unicode" != "xno"],
++    [AC_DEFINE([HAVE_WIDE_CURSES], [1], [Defined if curses library includes wide character support])
++     ncurses_library="ncursesw"],
++    [ncurses_library="ncurses"])
++
++  PKG_CHECK_MODULES([NCURSES], ["$ncurses_library"])
++
++  AC_DEFINE([HAVE_LIBCURSES], [1], [Defined if the curses library is available])
++  AC_DEFINE([CURSES_INCLUDE_STANDARD], [1], [Defined if no special Workarounds are needed for Curses headers])
++  posix_termios=t
++])
+ if test -z "$posix_termios" -a -z "$curses_only"
+ then
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -121,7 +121,7 @@
+ # Aspell Program
+ #
+-AM_CPPFLAGS += -DLOCALEDIR="$(localedir)"
++AM_CPPFLAGS += -DLOCALEDIR="$(localedir)" $(NCURSES_CFLAGS)
+ bin_PROGRAMS = word-list-compress aspell prezip-bin
+@@ -129,7 +129,7 @@
+ aspell_SOURCES = prog/aspell.cpp prog/check_funs.cpp prog/checker_string.cpp
+-aspell_LDADD = libaspell.la $(CURSES_LIB) $(LTLIBINTL)
++aspell_LDADD = libaspell.la $(NCURSES_LIBS) $(LTLIBINTL)
+ prezip_bin_SOURCES = prog/prezip.c
+--- a/prog/check_funs.cpp
++++ b/prog/check_funs.cpp
+@@ -62,11 +62,11 @@
+ #if HAVE_LIBCURSES
+-#include CURSES_HEADER
++#include <curses.h>
+ #if CURSES_INCLUDE_STANDARD
+-#include TERM_HEADER
++#include <term.h>
+ #elif CURSES_INCLUDE_WORKAROUND_1