Go to:
Gentoo Home
Documentation
Forums
Lists
Bugs
Planet
Store
Wiki
Get Gentoo!
Gentoo's Bugzilla – Attachment 411630 Details for
Bug 560228
dev-libs/libedit: patch to build under musl (ISO10646)
Home
|
New
–
[Ex]
|
Browse
|
Search
|
Privacy Policy
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
Patch to ::musl to fix the issue described above
0001-Fix-libedit-20130712.3.1-build-failure.patch (text/plain), 16.43 KB, created by
toast+misc
on 2015-09-11 17:58:26 UTC
(
hide
)
Description:
Patch to ::musl to fix the issue described above
Filename:
MIME Type:
Creator:
toast+misc
Created:
2015-09-11 17:58:26 UTC
Size:
16.43 KB
patch
obsolete
>From 06bb0defe60b4fc191de0eeafaffa15ac974b935 Mon Sep 17 00:00:00 2001 >From: Chloe Kudryavtsev <chloe.kudryavtsev@gmail.com> >Date: Fri, 11 Sep 2015 07:27:17 +0000 >Subject: [PATCH] Fix libedit-20130712.3.1 build failure >Cc: musl@gentoo.org > >- 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(+) > create mode 100644 dev-libs/libedit/Manifest > create mode 100644 dev-libs/libedit/files/libedit-20100424.3.0-bsd.patch > create mode 100644 dev-libs/libedit/files/libedit-20110709.3.0-weak-reference.patch > create mode 100644 dev-libs/libedit/files/libedit-20120311-3.0-el_fn_sh_complete.patch > create mode 100644 dev-libs/libedit/files/libedit-ncursesprivate.patch > create mode 100644 dev-libs/libedit/libedit-20130712.3.1-r99.ebuild > >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 >+} >-- >2.4.6 >
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Raw
Actions:
View
Attachments on
bug 560228
: 411630