diff options
author | Andrew Clemons <andrew.clemons@gmail.com> | 2017-06-12 16:01:53 +0100 |
---|---|---|
committer | Willy Sudiarto Raharjo <willysr@slackbuilds.org> | 2017-06-15 18:35:54 +0700 |
commit | 0a5a84f7dcd3d9feae3819e4a9026ffb723e8843 (patch) | |
tree | 19d33001d4db2747ce4a26d6e235aabffa9b51fc | |
parent | cfa0c5034e90ed10ae1a7d07e2053f3be3e37ead (diff) | |
download | slackbuilds-0a5a84f7dcd3d9feae3819e4a9026ffb723e8843.tar.gz |
libraries/libreadline-java: Build with getline & optional editline.
Signed-off-by: David Spencer <idlemoor@slackbuilds.org>
6 files changed, 216 insertions, 31 deletions
diff --git a/libraries/libreadline-java/README b/libraries/libreadline-java/README index c17cb90e56..601f1c25b9 100644 --- a/libraries/libreadline-java/README +++ b/libraries/libreadline-java/README @@ -1,2 +1,5 @@ Java Readline is a JNI wrapper for the GNU readline or the editline command line libraries. + +libedit is an optional dependency which is auto-detected. If found, editline +support will be built into the package. diff --git a/libraries/libreadline-java/clang.patch b/libraries/libreadline-java/clang.patch deleted file mode 100644 index eb4d18831a..0000000000 --- a/libraries/libreadline-java/clang.patch +++ /dev/null @@ -1,24 +0,0 @@ -diff -ru libreadline-java-0.8.0.orig/src/native/Makefile libreadline-java-0.8.0/src/native/Makefile ---- libreadline-java-0.8.0.orig/src/native/Makefile 2003-01-07 10:14:35.000000000 +0000 -+++ libreadline-java-0.8.0/src/native/Makefile 2014-01-05 22:00:43.569763351 +0000 -@@ -51,7 +51,7 @@ - ifeq (cygwin,$(WIN32)) - JavaGetline_LIBS = -lcygwin - endif --CC = gcc -+#CC = gcc - OBJ_EXT := o - LIB_PRE := lib - LIB_EXT := so -diff -ru libreadline-java-0.8.0.orig/src/native/org_gnu_readline_Readline.c libreadline-java-0.8.0/src/native/org_gnu_readline_Readline.c ---- libreadline-java-0.8.0.orig/src/native/org_gnu_readline_Readline.c 2003-01-07 10:14:35.000000000 +0000 -+++ libreadline-java-0.8.0/src/native/org_gnu_readline_Readline.c 2014-01-05 22:10:54.306920519 +0000 -@@ -430,7 +430,7 @@ - jtext = (*jniEnv)->NewStringUTF(jniEnv,text); - - if (jniMethodId == 0) { -- return; -+ return 0; - } - - completion = (*jniEnv)->CallObjectMethod(jniEnv, jniObject, diff --git a/libraries/libreadline-java/libreadline-java.SlackBuild b/libraries/libreadline-java/libreadline-java.SlackBuild index 1d22a3d55b..682e74888d 100644 --- a/libraries/libreadline-java/libreadline-java.SlackBuild +++ b/libraries/libreadline-java/libreadline-java.SlackBuild @@ -24,7 +24,7 @@ PRGNAM=libreadline-java VERSION=${VERSION:-0.8.0} -BUILD=${BUILD:-1} +BUILD=${BUILD:-2} TAG=${TAG:-_SBo} if [ -z "$ARCH" ]; then @@ -64,14 +64,22 @@ tar xvf $CWD/$PRGNAM-$VERSION-src.tar.gz cd $PRGNAM-$VERSION # allow building with clang -patch -p1 < $CWD/clang.patch +patch -p1 < $CWD/patches/8cf1b175458acd54cf2f4c2eee166dd8cdfe5e80.patch +sed -i 's/^CC/#CC/' src/native/Makefile + +# fix collision with getline(3) +patch -p1 < $CWD/patches/8f1e8f8357c48088f72952860ede68f54dc61d8e.patch + +# fix building against newer libedit +patch -p1 < $CWD/patches/c87604b44853663b6d101088db8f894aa4cfb6e3.patch # make build respect our CFLAGS -sed -i -e "s/-fPIC -DPOSIX/$SLKCFLAGS/" src/native/Makefile +sed -i -e "s/\(-fPIC -DPOSIX\)/\1 $SLKCFLAGS/" src/native/Makefile -# allow running on anything >= jdk1.4 -sed -i -e "s/JC_FLAGS =/JC_FLAGS = -target 1.5 -source 1.5/" Makefile +# allow running on anything >= jdk1.6 +sed -i -e "s/JC_FLAGS =/JC_FLAGS = -target 1.6 -source 1.6/" Makefile +# fix building docs with JDK8 sed -i -e 's/\(-version -author org.gnu.readline\)/\1 -Xdoclint:none/' Makefile chown -R root:root . @@ -81,12 +89,18 @@ find -L . \ \( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \ -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \; +T_LIBS="JavaReadline JavaGetline" + +if pkg-config --exists libedit ; then + T_LIBS="$T_LIBS JavaEditline" +fi + for target in jar build-native apidoc ; do - make "$target" + make "$target" T_LIBS="$T_LIBS" done install -Dm644 $PRGNAM.jar $PKG/usr/share/java/$PRGNAM.jar -install -Dm644 libJavaReadline.so $PKG/usr/lib$LIBDIRSUFFIX/libJavaReadline.so +find . -name '*.so' | xargs -n1 -I xx install -Dm644 xx $PKG/usr/lib$LIBDIRSUFFIX/xx find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | grep ELF \ | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true diff --git a/libraries/libreadline-java/patches/8cf1b175458acd54cf2f4c2eee166dd8cdfe5e80.patch b/libraries/libreadline-java/patches/8cf1b175458acd54cf2f4c2eee166dd8cdfe5e80.patch new file mode 100644 index 0000000000..108e9d95fb --- /dev/null +++ b/libraries/libreadline-java/patches/8cf1b175458acd54cf2f4c2eee166dd8cdfe5e80.patch @@ -0,0 +1,50 @@ +From 8cf1b175458acd54cf2f4c2eee166dd8cdfe5e80 Mon Sep 17 00:00:00 2001 +From: Andrew Clemons <andrew.clemons@gmail.com> +Date: Sat, 10 Jun 2017 15:38:14 +1200 +Subject: [PATCH] Fix compilation with clang + +--- + src/native/Makefile | 9 ++++----- + src/native/org_gnu_readline_Readline.c | 12 ++++++------ + 2 files changed, 10 insertions(+), 11 deletions(-) + +diff --git a/src/native/org_gnu_readline_Readline.c b/src/native/org_gnu_readline_Readline.c +index 2877a16..1cf8493 100644 +--- a/src/native/org_gnu_readline_Readline.c ++++ b/src/native/org_gnu_readline_Readline.c +@@ -341,7 +341,7 @@ JNIEXPORT void JNICALL Java_org_gnu_readline_Readline_initReadlineImpl + } + + /* -------------------------------------------------------------------------- */ +-/* Reset readline's internal states and terminal. ++/* Reset readline's internal states and terminal. */ + /* -------------------------------------------------------------------------- */ + + #ifndef JavaGetline +@@ -356,7 +356,7 @@ JNIEXPORT void JNICALL Java_org_gnu_readline_Readline_cleanupReadlineImpl + + + /* -------------------------------------------------------------------------- */ +-/* Report, if we have a terminal ++/* Report, if we have a terminal */ + /* -------------------------------------------------------------------------- */ + + #ifndef JavaGetline +@@ -666,7 +666,7 @@ const char *java_completer(char *text, int state) { + jtext = (*jniEnv)->NewStringUTF(jniEnv,text); + + if (jniMethodId == 0) { +- return; ++ return ((const char *) NULL); + } + + completion = (*jniEnv)->CallObjectMethod(jniEnv, jniObject, +@@ -721,7 +721,7 @@ JNIEXPORT void JNICALL Java_org_gnu_readline_Readline_setCompleterImpl + #endif + + /* -------------------------------------------------------------------------- */ +-/* Returns rl_line_buffer ++/* Returns rl_line_buffer */ + /* -------------------------------------------------------------------------- */ + + #ifndef JavaGetline diff --git a/libraries/libreadline-java/patches/8f1e8f8357c48088f72952860ede68f54dc61d8e.patch b/libraries/libreadline-java/patches/8f1e8f8357c48088f72952860ede68f54dc61d8e.patch new file mode 100644 index 0000000000..a7ff0efdb0 --- /dev/null +++ b/libraries/libreadline-java/patches/8f1e8f8357c48088f72952860ede68f54dc61d8e.patch @@ -0,0 +1,117 @@ +From 8f1e8f8357c48088f72952860ede68f54dc61d8e Mon Sep 17 00:00:00 2001 +From: Andrew Clemons <andrew.clemons@gmail.com> +Date: Sat, 10 Jun 2017 19:28:41 +1200 +Subject: [PATCH] Fix collision with getline(3). + +--- + src/native/getline.c | 16 ++++++++-------- + src/native/getline.h | 6 +++--- + 2 files changed, 11 insertions(+), 11 deletions(-) + +diff --git a/src/native/getline.c b/src/native/getline.c +index f9b3304..58e26e3 100644 +--- a/src/native/getline.c ++++ b/src/native/getline.c +@@ -41,7 +41,7 @@ char* rl_readline_name; + + /********************* exported interface ********************************/ + +-char *getline(); /* read a line of input */ ++char *get_line(); /* read a line of input */ + void gl_setwidth(); /* specify width of screen */ + void gl_histadd(); /* adds entries to hist */ + void gl_strwidth(); /* to bind gl_strlen */ +@@ -387,7 +387,7 @@ gl_init() + hist_init(); + } + if (isatty(0) == 0 || isatty(1) == 0) +- gl_error("\n*** Error: getline(): not interactive, use stdio.\n"); ++ gl_error("\n*** Error: get_line(): not interactive, use stdio.\n"); + gl_char_init(); + gl_init_done = 1; + } +@@ -414,7 +414,7 @@ int w; + } + + char * +-getline(prompt) ++get_line(prompt) + char *prompt; + { + int c, loc, tmp; +@@ -585,7 +585,7 @@ int c; + int i; + + if (gl_cnt >= BUF_SIZE - 1) +- gl_error("\n*** Error: getline(): input buffer overflow\n"); ++ gl_error("\n*** Error: get_line(): input buffer overflow\n"); + if (gl_overwrite == 0 || gl_pos == gl_cnt) { + for (i=gl_cnt; i >= gl_pos; i--) + gl_buf[i+1] = gl_buf[i]; +@@ -608,7 +608,7 @@ gl_yank() + if (len > 0) { + if (gl_overwrite == 0) { + if (gl_cnt + len >= BUF_SIZE - 1) +- gl_error("\n*** Error: getline(): input buffer overflow\n"); ++ gl_error("\n*** Error: get_line(): input buffer overflow\n"); + for (i=gl_cnt; i >= gl_pos; i--) + gl_buf[i+len] = gl_buf[i]; + for (i=0; i < len; i++) +@@ -617,7 +617,7 @@ gl_yank() + } else { + if (gl_pos + len > gl_cnt) { + if (gl_pos + len >= BUF_SIZE - 1) +- gl_error("\n*** Error: getline(): input buffer overflow\n"); ++ gl_error("\n*** Error: get_line(): input buffer overflow\n"); + gl_buf[gl_pos + len] = 0; + } + for (i=0; i < len; i++) +@@ -657,7 +657,7 @@ gl_newline() + int loc = gl_width - 5; /* shifts line back to start position */ + + if (gl_cnt >= BUF_SIZE - 1) +- gl_error("\n*** Error: getline(): input buffer overflow\n"); ++ gl_error("\n*** Error: get_line(): input buffer overflow\n"); + if (gl_out_hook) { + change = gl_out_hook(gl_buf); + len = strlen(gl_buf); +@@ -916,7 +916,7 @@ char *buf; + char *p = buf; + int len; + +- /* in case we call gl_histadd() before we call getline() */ ++ /* in case we call gl_histadd() before we call get_line() */ + if (gl_init_done < 0) { /* -1 only on startup */ + hist_init(); + gl_init_done = 0; +diff --git a/src/native/getline.h b/src/native/getline.h +index a10bb47..e8dc8b2 100644 +--- a/src/native/getline.h ++++ b/src/native/getline.h +@@ -9,7 +9,7 @@ + + extern char* rl_readline_name; /* unused by getline */ + #define add_history(buffer) gl_histadd(buffer) +-#define readline(buffer) getline(buffer) ++#define readline(buffer) get_line(buffer) + #define clear_history() hist_init() + #define using_history() hist_init() + +@@ -18,7 +18,7 @@ extern char* rl_readline_name; /* unused by getline */ + + typedef size_t (*gl_strwidth_proc)(char *); + +-char *getline(char *); /* read a line of input */ ++char *get_line(char *); /* read a line of input */ + void gl_setwidth(int); /* specify width of screen */ + void gl_histadd(char *); /* adds entries to hist */ + void gl_strwidth(gl_strwidth_proc); /* to bind gl_strlen */ +@@ -30,7 +30,7 @@ extern int (*gl_tab_hook)(char *, int, int *); + + #else /* not __STDC__ */ + +-char *getline(); ++char *get_line(); + void gl_setwidth(); + void gl_histadd(); + void gl_strwidth(); diff --git a/libraries/libreadline-java/patches/c87604b44853663b6d101088db8f894aa4cfb6e3.patch b/libraries/libreadline-java/patches/c87604b44853663b6d101088db8f894aa4cfb6e3.patch new file mode 100644 index 0000000000..16acc2cd43 --- /dev/null +++ b/libraries/libreadline-java/patches/c87604b44853663b6d101088db8f894aa4cfb6e3.patch @@ -0,0 +1,25 @@ +From c87604b44853663b6d101088db8f894aa4cfb6e3 Mon Sep 17 00:00:00 2001 +From: Andrew Clemons <andrew.clemons@gmail.com> +Date: Sat, 10 Jun 2017 16:10:00 +1200 +Subject: [PATCH] Fix building against new libedit + +--- + src/native/org_gnu_readline_Readline.c | 4 ---- + 1 file changed, 4 deletions(-) + +diff --git a/src/native/org_gnu_readline_Readline.c b/src/native/org_gnu_readline_Readline.c +index 1cf8493..edc246c 100644 +--- a/src/native/org_gnu_readline_Readline.c ++++ b/src/native/org_gnu_readline_Readline.c +@@ -708,11 +708,7 @@ JNIEXPORT void JNICALL Java_org_gnu_readline_Readline_setCompleterImpl + rl_completion_entry_function = NULL; + return; + } +-#ifdef JavaEditline +- rl_completion_entry_function = (CPFunction *) java_completer; +-#else + rl_completion_entry_function = (rl_compentry_func_t *) java_completer; +-#endif + } + else { + rl_completion_entry_function = NULL; |