commit:     a3f65d09185af28df3c398593cfcf8e60b9c3f6e
Author:     Chloe Kudryavtsev <chloe.kudryavtsev <AT> gmail <DOT> com>
AuthorDate: Fri Sep 11 07:27:17 2015 +0000
Commit:     Anthony G. Basile <blueness <AT> gentoo <DOT> org>
CommitDate: Sat Sep 12 00:08:46 2015 +0000
URL:        https://gitweb.gentoo.org/proj/musl.git/commit/?id=a3f65d09

Fix libedit-20130712.3.1 build failure

- Musl currently does not define __STDC_ISO_10646__.
- __STDC_ISO_10646__  needs to be defined before anyting else.
- This is difficult to achieve without working with the compiler.
- Musl actually is __STDC_ISO_10646__ compliant.
- In the next production cycle (1.1.12), it is planned to add stdc-predef.h 
support.
As such, if musl is the ELIBC, and its version is under 1.1.12, we should 
define __STDC_ISO_10646__ manually.

 dev-libs/libedit/Manifest                          |   6 +
 .../libedit/files/libedit-20100424.3.0-bsd.patch   |  13 ++
 .../libedit-20110709.3.0-weak-reference.patch      |  20 ++
 .../libedit-20120311-3.0-el_fn_sh_complete.patch   | 258 +++++++++++++++++++++
 .../libedit/files/libedit-ncursesprivate.patch     |  13 ++
 dev-libs/libedit/libedit-20130712.3.1-r99.ebuild   |  52 +++++
 6 files changed, 362 insertions(+)

diff --git a/dev-libs/libedit/Manifest b/dev-libs/libedit/Manifest
new file mode 100644
index 0000000..409e542
--- /dev/null
+++ b/dev-libs/libedit/Manifest
@@ -0,0 +1,6 @@
+AUX libedit-20100424.3.0-bsd.patch 724 SHA256 
2226e17f65b2486c45964867a1ed4a699c1861089b7a1501bccc83d28bca6c45 SHA512 
67e0316db39b581b40dcfc15cfc308398d7865d29adc31e43159a30d8b94f50b486aa5da2a9599154138c1c8ae56fa9f6dca663eff174559f8896f50f973eefb
 WHIRLPOOL 
1eaff78933c8628e3c6796c5bfefff8771db8aa50cd1d7a0a68762b219613f50e2ffdc6afe317712038707d9ea8ef35a6661371d2ee098e301e914cf2eced0d8
+AUX libedit-20110709.3.0-weak-reference.patch 651 SHA256 
f4bbf2b49d158966b8ccb8556928b22af3690e7d91d5e3062842b6c9587641be SHA512 
6f905d4254be6a11a135315346e41579e30c496d7d28caef1daa89079574be081c092d653034fd89a1ce84495f1566ef85d50b274cb87b249b4706e954c40420
 WHIRLPOOL 
20cd81c562a4d9c054712ff0233ccd3c36f65e56e61061979b60f538e6add55298bba6f42025e1f2146f6d83d14e82cda10e298453b9ca0631c1a5f0fcea6bb8
+AUX libedit-20120311-3.0-el_fn_sh_complete.patch 7724 SHA256 
8fb2844923c3750c9b833ad4f9dfd15f78e0bb917b0d8fb98d3e0ffb7f1037fb SHA512 
c62490079ff73a14310c6840d379d950699cd178e5e4a15231a79ea06600ba7bb805630e032d5d49ea5479e4919514ee79b035bf7d00e20b6e8512c84920bba3
 WHIRLPOOL 
1d0737e628f663edf8734d93aec6e0d33ba8e17e4893be33805c731a343701106778979fcaa8ccb7d227b78402b1a715d78a7102178a6871392f421d40e8b17a
+AUX libedit-ncursesprivate.patch 497 SHA256 
e1fc9f5c3ffe5e5ba4117bc6b1c615e6f3e5ef82dfcebece16aaa5d571abb8a1 SHA512 
41175b20f7b925e347db008d5e8a535b8326cd2c010a67b9db3a59131fce77a7791b7940e7eea9d68e82dbd3731efaa503d4bd218d78b29f946152dd56bd9b14
 WHIRLPOOL 
df6b644fdaa70ec62997c2bd353ad757e6aafda7c17b4926ad3044d4f1d02deb379bd84946f5cea08c63eb4ba346752949f5b0a1577bc046dbbb4c4221fdf239
+DIST libedit-20130712-3.1.tar.gz 483857 SHA256 
5d9b1a9dd66f1fe28bbd98e4d8ed1a22d8da0d08d902407dcc4a0702c8d88a37 SHA512 
9fb3173a65ea2cd2ffa9af0666aa3e227b7d6be26f3e84f30ea3449b0c80fc5e91b618e939f7047bf885b96689ede93733f7eba614d4fdd1a4baff3f130b432e
 WHIRLPOOL 
550553af1cf3bbd863ef4ce86ef5fd7adf257a7f5946ad186a104c5920d0f58216c135d496d52fd2d6ad51a1fb954bb87719d731aa0eebf6980d1c15345d6034
+EBUILD libedit-20130712.3.1-r99.ebuild 1462 SHA256 
a2c7f48ebc2a7912afa6c671fb94995413b3c74eb69c3c8958fc8edd9462c9b2 SHA512 
2eb3850d32446fb8cfabbf2095ee6810090d915a857cd2cee7ffe788103afe5e537fa1d80680f50ad0402e9a4cebf4135a53846a062745975a163811bcd51523
 WHIRLPOOL 
23bf9c951a356747afd1c7c83589bc2a288e672998be49d180b2ba34460bad6f66c31b9997206a8dec0a3db5ddc5c2af29b4372801fa70720b3c954959d21cdc

diff --git a/dev-libs/libedit/files/libedit-20100424.3.0-bsd.patch 
b/dev-libs/libedit/files/libedit-20100424.3.0-bsd.patch
new file mode 100644
index 0000000..e230a76
--- /dev/null
+++ b/dev-libs/libedit/files/libedit-20100424.3.0-bsd.patch
@@ -0,0 +1,13 @@
+diff --git a/src/chartype.h b/src/chartype.h
+index c35825c..be5aac0 100644
+--- a/src/chartype.h
++++ b/src/chartype.h
+@@ -44,7 +44,7 @@
+  * supports non-BMP code points without requiring UTF-16, but nothing
+  * seems to actually advertise this properly, despite Unicode 3.1 having
+  * been around since 2001... */
+-#if !defined(__NetBSD__) && !defined(__sun) && !(defined(__APPLE__) && 
defined(__MACH__))
++#if !defined(__NetBSD__) && !defined(__sun) && !(defined(__APPLE__) && 
defined(__MACH__)) && !defined(__DragonFly__) && !defined(__FreeBSD__)
+ #ifndef __STDC_ISO_10646__
+ /* In many places it is assumed that the first 127 code points are ASCII
+  * compatible, so ensure wchar_t indeed does ISO 10646 and not some other

diff --git a/dev-libs/libedit/files/libedit-20110709.3.0-weak-reference.patch 
b/dev-libs/libedit/files/libedit-20110709.3.0-weak-reference.patch
new file mode 100644
index 0000000..a439959
--- /dev/null
+++ b/dev-libs/libedit/files/libedit-20110709.3.0-weak-reference.patch
@@ -0,0 +1,20 @@
+--- libedit-20110709-3.0/src/vi.c.old  2011-07-11 18:21:16.000000000 +0000
++++ libedit-20110709-3.0/src/vi.c      2011-07-11 18:24:29.000000000 +0000
+@@ -918,7 +918,7 @@
+  * NB: posix implies that we should enter insert mode, however
+  * this is against historical precedent...
+  */
+-#ifdef __weak_reference
++#if defined(__weak_reference) && defined(__NetBSD__)
+ __weakref_visible char *my_get_alias_text(const char *)
+     __weak_reference(get_alias_text);
+ #endif
+@@ -926,7 +926,7 @@
+ /*ARGSUSED*/
+ vi_alias(EditLine *el, Int c)
+ {
+-#ifdef __weak_reference
++#if defined(__weak_reference) && defined(__NetBSD__)
+       char alias_name[3];
+       char *alias_text;
+ 

diff --git 
a/dev-libs/libedit/files/libedit-20120311-3.0-el_fn_sh_complete.patch 
b/dev-libs/libedit/files/libedit-20120311-3.0-el_fn_sh_complete.patch
new file mode 100644
index 0000000..b0b157a
--- /dev/null
+++ b/dev-libs/libedit/files/libedit-20120311-3.0-el_fn_sh_complete.patch
@@ -0,0 +1,258 @@
+Port the el_fn_sh_complete from FreeBSD.
+This function is required by FreeBSD-9.0's sh.
+So that we can drop the bundled version in FreeBSD-9.0
+
+diff -uNr libedit-20120311-3.0/src/filecomplete.c 
libedit-20120311-3.0.freebsd/src/filecomplete.c
+--- libedit-20120311-3.0/src/filecomplete.c    2012-03-11 09:54:58.000000000 
+0000
++++ libedit-20120311-3.0.freebsd/src/filecomplete.c    2012-04-23 
12:14:25.000000000 +0000
+@@ -56,6 +56,9 @@
+ 
+ static const Char break_chars[] = { ' ', '\t', '\n', '"', '\\', '\'', '`', 
'@',
+     '$', '>', '<', '=', ';', '|', '&', '{', '(', '\0' };
++/* Tilde is deliberately omitted here, we treat it specially. */
++static const Char extra_quote_chars[] = { ')', '}', '*', '?', '[', '$', '\0' 
};
++
+ 
+ 
+ /********************************/
+@@ -411,10 +414,14 @@
+       char **(*attempted_completion_function)(const char *, int, int),
+       const Char *word_break, const Char *special_prefixes,
+       const char *(*app_func)(const char *), size_t query_items,
+-      int *completion_type, int *over, int *point, int *end)
++      int *completion_type, int *over, int *point, int *end,
++      const char *(*find_word_start_func)(const char *, const char *),
++      char *(*dequoting_func)(const char *),
++      char *(*quoting_func)(const char *))
+ {
+       const TYPE(LineInfo) *li;
+       Char *temp;
++      char *dequoted_temp;
+         char **matches;
+       const Char *ctemp;
+       size_t len;
+@@ -435,17 +442,28 @@
+ 
+       /* We now look backwards for the start of a filename/variable word */
+       li = FUN(el,line)(el);
++      if (find_word_start_func)
++              ctemp = 
ct_decode_string(find_word_start_func(ct_encode_string(li->buffer,&el->el_scratch),
 ct_encode_string(li->cursor,&el->el_scratch)),&el->el_scratch);
++      else {
+       ctemp = li->cursor;
+       while (ctemp > li->buffer
+           && !Strchr(word_break, ctemp[-1])
+           && (!special_prefixes || !Strchr(special_prefixes, ctemp[-1]) ) )
+               ctemp--;
++      }
+ 
+       len = (size_t)(li->cursor - ctemp);
+       temp = el_malloc((len + 1) * sizeof(*temp));
+       (void)Strncpy(temp, ctemp, len);
+       temp[len] = '\0';
+ 
++      if (dequoting_func) {
++              dequoted_temp = 
dequoting_func(ct_encode_string(temp,&el->el_scratch));
++              if (dequoted_temp == NULL)
++                      return retval;
++      } else
++              dequoted_temp = NULL;
++
+       /* these can be used by function called in completion_matches() */
+       /* or (*attempted_completion_function)() */
+       if (point != 0)
+@@ -456,14 +474,14 @@
+       if (attempted_completion_function) {
+               int cur_off = (int)(li->cursor - li->buffer);
+               matches = (*attempted_completion_function)(
+-                  ct_encode_string(temp, &el->el_scratch),
++                  dequoted_temp? dequoted_temp : ct_encode_string(temp, 
&el->el_scratch),
+                   cur_off - (int)len, cur_off);
+       } else
+               matches = 0;
+       if (!attempted_completion_function || 
+           (over != NULL && !*over && !matches))
+               matches = completion_matches(
+-                  ct_encode_string(temp, &el->el_scratch), complet_func);
++                  dequoted_temp? dequoted_temp : ct_encode_string(temp, 
&el->el_scratch), complet_func);
+ 
+       if (over != NULL)
+               *over = 0;
+@@ -478,9 +496,19 @@
+                * possible matches if there is possible completion.
+                */
+               if (matches[0][0] != '\0') {
++                      char *quoted_match;
++                      if (quoting_func) {
++                              quoted_match = quoting_func(matches[0]);
++                              if (quoted_match == NULL)
++                                      goto free_matches;
++                      } else
++                              quoted_match = NULL;
++
+                       el_deletestr(el, (int) len);
+                       FUN(el,insertstr)(el,
+-                          ct_decode_string(matches[0], &el->el_scratch));
++                          ct_decode_string(quoted_match? quoted_match : 
matches[0], &el->el_scratch));
++
++                      free(quoted_match);
+               }
+ 
+               if (what_to_do == '?')
+@@ -553,12 +581,14 @@
+                       retval = CC_NORM;
+               }
+ 
++free_matches:
+               /* free elements of array and the array itself */
+               for (i = 0; matches[i]; i++)
+                       el_free(matches[i]);
+               el_free(matches);
+               matches = NULL;
+       }
++      el_free(dequoted_temp);
+       el_free(temp);
+       return retval;
+ }
+@@ -572,5 +602,102 @@
+ {
+       return (unsigned char)fn_complete(el, NULL, NULL,
+           break_chars, NULL, NULL, (size_t)100,
+-          NULL, NULL, NULL, NULL);
++          NULL, NULL, NULL, NULL,
++          NULL, NULL, NULL);
++}
++
++static const char *
++sh_find_word_start(const char *buffer, const char *cursor)
++{
++      const char *word_start = buffer;
++
++      while (buffer < cursor) {
++              if (*buffer == '\\')
++                      buffer++;
++              else if (Strchr(break_chars, *buffer))
++                      word_start = buffer + 1;
++
++              buffer++;
++      }
++
++      return word_start;
++}
++
++
++static char *
++sh_quote(const char *str)
++{
++      const char *src;
++      int extra_len = 0;
++      char *quoted_str, *dst;
++
++      if (*str == '-' || *str == '+')
++              extra_len += 2;
++      for (src = str; *src != '\0'; src++)
++              if (Strchr(break_chars, *src) ||
++                  Strchr(extra_quote_chars, *src))
++                      extra_len++;
++
++      quoted_str = malloc(sizeof(*quoted_str) *
++          (strlen(str) + extra_len + 1));
++      if (quoted_str == NULL)
++              return NULL;
++
++      dst = quoted_str;
++      if (*str == '-' || *str == '+')
++              *dst++ = '.', *dst++ = '/';
++      for (src = str; *src != '\0'; src++) {
++              if (Strchr(break_chars, *src) ||
++                  Strchr(extra_quote_chars, *src))
++                      *dst++ = '\\';
++              *dst++ = *src;
++      }
++      *dst = '\0';
++
++      return quoted_str;
++}
++
++
++static char *
++sh_dequote(const char *str)
++{
++      char *dequoted_str, *dst;
++
++      /* save extra space to replace \~ with ./~ */
++      dequoted_str = malloc(sizeof(*dequoted_str) * (strlen(str) + 1 + 1));
++      if (dequoted_str == NULL)
++              return NULL;
++
++      dst = dequoted_str;
++
++      /* dequote \~ at start as ./~ */
++      if (*str == '\\' && str[1] == '~') {
++              str++;
++              *dst++ = '.';
++              *dst++ = '/';
++      }
++
++      while (*str) {
++              if (*str == '\\')
++                      str++;
++              if (*str)
++                      *dst++ = *str++;
++      }
++      *dst = '\0';
++
++      return dequoted_str;
++}
++
++
++/*
++ * completion function using sh quoting rules; for key binding
++ */
++/* ARGSUSED */
++unsigned char
++_el_fn_sh_complete(EditLine *el, int ch __attribute__((__unused__)))
++{
++      return (unsigned char)fn_complete(el, NULL, NULL,
++          break_chars, NULL, NULL, 100,
++          NULL, NULL, NULL, NULL,
++          sh_find_word_start, sh_dequote, sh_quote);
+ }
+diff -uNr libedit-20120311-3.0/src/filecomplete.h 
libedit-20120311-3.0.freebsd/src/filecomplete.h
+--- libedit-20120311-3.0/src/filecomplete.h    2010-04-22 19:13:17.000000000 
+0000
++++ libedit-20120311-3.0.freebsd/src/filecomplete.h    2012-04-23 
12:04:12.000000000 +0000
+@@ -35,7 +35,10 @@
+     char *(*)(const char *, int),
+     char **(*)(const char *, int, int),
+     const Char *, const Char *, const char *(*)(const char *), size_t,
+-    int *, int *, int *, int *);
++    int *, int *, int *, int *,
++    const char *(*)(const char *, const char *),
++    char *(*)(const char *),
++    char *(*)(const char *));
+ 
+ void fn_display_match_list(EditLine *, char **, size_t, size_t);
+ char *fn_tilde_expand(const char *);
+Binary files libedit-20120311-3.0/src/filecomplete.o and 
libedit-20120311-3.0.freebsd/src/filecomplete.o differ
+diff -uNr libedit-20120311-3.0/src/histedit.h 
libedit-20120311-3.0.freebsd/src/histedit.h
+--- libedit-20120311-3.0/src/histedit.h        2011-08-02 06:52:08.000000000 
+0000
++++ libedit-20120311-3.0.freebsd/src/histedit.h        2012-04-23 
11:44:33.000000000 +0000
+@@ -113,6 +113,7 @@
+ int            el_set(EditLine *, int, ...);
+ int            el_get(EditLine *, int, ...);
+ unsigned char _el_fn_complete(EditLine *, int);
++unsigned char _el_fn_sh_complete(EditLine *, int);
+ 
+ /*
+  * el_set/el_get parameters
+diff -ur libedit-20120311-3.0/src/readline.c 
libedit-20120311-3.0.freebsd/src/readline.c
+--- libedit-20120311-3.0/src/readline.c        2012-03-11 09:54:58.000000000 
+0000
++++ libedit-20120311-3.0.freebsd/src/readline.c        2012-04-23 
12:20:11.000000000 +0000
+@@ -1773,7 +1773,7 @@
+           _rl_completion_append_character_function,
+           (size_t)rl_completion_query_items,
+           &rl_completion_type, &rl_attempted_completion_over,
+-          &rl_point, &rl_end);
++          &rl_point, &rl_end, NULL, NULL, NULL);
+ 
+ 
+ }

diff --git a/dev-libs/libedit/files/libedit-ncursesprivate.patch 
b/dev-libs/libedit/files/libedit-ncursesprivate.patch
new file mode 100644
index 0000000..0af9b1b
--- /dev/null
+++ b/dev-libs/libedit/files/libedit-ncursesprivate.patch
@@ -0,0 +1,13 @@
+Index: libedit-20110709-3.0/libedit.pc.in
+===================================================================
+--- libedit-20110709-3.0.orig/libedit.pc.in
++++ libedit-20110709-3.0/libedit.pc.in
+@@ -7,6 +7,7 @@ Name: libedit
+ Description: command line editor library provides generic line editing, 
history, and tokenization functions.
+ Version: @VERSION@
+ Requires:
+-Libs: -L${libdir} -ledit @LIBS@
++Libs: -L${libdir} -ledit
++Libs.private: @LIBS@
+ Cflags: -I${includedir} -I${includedir}/editline
+ 

diff --git a/dev-libs/libedit/libedit-20130712.3.1-r99.ebuild 
b/dev-libs/libedit/libedit-20130712.3.1-r99.ebuild
new file mode 100644
index 0000000..d075abe
--- /dev/null
+++ b/dev-libs/libedit/libedit-20130712.3.1-r99.ebuild
@@ -0,0 +1,52 @@
+# Copyright 1999-2014 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI=5
+
+inherit eutils toolchain-funcs versionator base multilib-minimal flag-o-matic
+
+MY_PV=$(get_major_version)-$(get_after_major_version)
+MY_P=${PN}-${MY_PV}
+
+DESCRIPTION="BSD replacement for libreadline"
+HOMEPAGE="http://www.thrysoee.dk/editline/";
+SRC_URI="http://www.thrysoee.dk/editline/${MY_P}.tar.gz";
+
+LICENSE="BSD-2"
+SLOT="0"
+KEYWORDS="alpha amd64 arm arm64 hppa ia64 m68k ~mips ppc ppc64 s390 sh sparc 
x86 ~amd64-fbsd ~sparc-fbsd ~x86-fbsd ~x86-freebsd ~amd64-linux ~ia64-linux 
~x86-linux ~ppc-macos ~x64-macos ~x86-macos"
+IUSE="static-libs"
+
+DEPEND=">=sys-libs/ncurses-5.9-r3[static-libs?,${MULTILIB_USEDEP}]
+       !<=sys-freebsd/freebsd-lib-6.2_rc1"
+
+RDEPEND=${DEPEND}
+
+S="${WORKDIR}/${MY_P}"
+
+PATCHES=(
+       "${FILESDIR}/${PN}-ncursesprivate.patch"
+       "${FILESDIR}/${PN}-20100424.3.0-bsd.patch"
+       "${FILESDIR}/${PN}-20110709.3.0-weak-reference.patch"
+       "${FILESDIR}/${PN}-20120311-3.0-el_fn_sh_complete.patch"
+       )
+
+multilib_src_configure() {
+       [ $ELIBC == "musl" ] && has_version "<sys-libs/musl-1.1.12" && 
append-cppflags "-D__STDC_ISO_10646__=201103L"
+
+       ECONF_SOURCE="${S}" econf \
+               $(use_enable static-libs static) \
+               --enable-widec \
+               --enable-fast-install
+}
+
+multilib_src_install() {
+       emake DESTDIR="${D}" install
+       multilib_is_native_abi && gen_usr_ldscript -a edit
+}
+
+multilib_src_install_all() {
+       einstalldocs
+       prune_libtool_files --all
+}

Reply via email to