From c40ba0efc45d83cdcd008206bfe3515ebfa358bf Mon Sep 17 00:00:00 2001 From: Remi Collet Date: Mon, 23 Jun 2014 10:43:03 +0200 Subject: PHP 5.6: fix phpdbg with libedit https://bugs.php.net/67499 --- php-phpdbg.patch | 120 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ php56.spec | 12 +++--- 2 files changed, 127 insertions(+), 5 deletions(-) create mode 100644 php-phpdbg.patch diff --git a/php-phpdbg.patch b/php-phpdbg.patch new file mode 100644 index 0000000..5d791ac --- /dev/null +++ b/php-phpdbg.patch @@ -0,0 +1,120 @@ +diff -up sapi/phpdbg/config.m4.old sapi/phpdbg/config.m4 +--- sapi/phpdbg/config.m4.old 2014-06-23 09:42:29.381980030 +0200 ++++ sapi/phpdbg/config.m4 2014-06-23 09:20:13.948592684 +0200 +@@ -21,7 +21,7 @@ if test "$PHP_PHPDBG" != "no"; then + PHP_PHPDBG_CFLAGS="-D_GNU_SOURCE" + PHP_PHPDBG_FILES="phpdbg.c phpdbg_parser.c phpdbg_lexer.c phpdbg_prompt.c phpdbg_help.c phpdbg_break.c phpdbg_print.c phpdbg_bp.c phpdbg_opcode.c phpdbg_list.c phpdbg_utils.c phpdbg_info.c phpdbg_cmd.c phpdbg_set.c phpdbg_frame.c phpdbg_watch.c phpdbg_btree.c" + +- if test "$PHP_READLINE" != "no"; then ++ if test "$PHP_READLINE" != "no" -o "$PHP_LIBEDIT" != "no"; then + PHPDBG_EXTRA_LIBS="$PHP_READLINE_LIBS" + fi + +diff -up sapi/phpdbg/phpdbg_cmd.c.old sapi/phpdbg/phpdbg_cmd.c +--- sapi/phpdbg/phpdbg_cmd.c.old 2014-06-23 09:43:13.910158686 +0200 ++++ sapi/phpdbg/phpdbg_cmd.c 2014-06-23 09:35:30.571299456 +0200 +@@ -792,7 +792,7 @@ PHPDBG_API int phpdbg_stack_execute(phpd + PHPDBG_API char* phpdbg_read_input(char *buffered TSRMLS_DC) /* {{{ */ + { + char *cmd = NULL; +-#ifndef HAVE_LIBREADLINE ++#if !defined(HAVE_LIBREADLINE) && !defined(HAVE_LIBEDIT) + char buf[PHPDBG_MAX_CMD]; + #endif + char *buffer = NULL; +@@ -811,7 +811,7 @@ disconnect: + return NULL; + } + +-#ifndef HAVE_LIBREADLINE ++#if !defined(HAVE_LIBREADLINE) && !defined(HAVE_LIBEDIT) + if (!(PHPDBG_G(flags) & PHPDBG_IS_REMOTE)) { + if (!phpdbg_write("%s", phpdbg_get_prompt(TSRMLS_C))) { + goto disconnect; +@@ -850,7 +850,7 @@ readline: + + buffer = estrdup(cmd); + +-#ifdef HAVE_LIBREADLINE ++#if defined(HAVE_LIBREADLINE) || defined(HAVE_LIBEDIT) + if (!buffered && cmd && + !(PHPDBG_G(flags) & PHPDBG_IS_REMOTE)) { + free(cmd); +diff -up sapi/phpdbg/phpdbg.h.old sapi/phpdbg/phpdbg.h +--- sapi/phpdbg/phpdbg.h.old 2014-06-23 09:42:47.364052178 +0200 ++++ sapi/phpdbg/phpdbg.h 2014-06-23 09:22:20.941107800 +0200 +@@ -64,7 +64,7 @@ + # include "TSRM.h" + #endif + +-#ifdef HAVE_LIBREADLINE ++#if defined(HAVE_LIBREADLINE) || defined(HAVE_LIBEDIT) + # include + # include + #endif +diff -up sapi/phpdbg/phpdbg_prompt.c.old sapi/phpdbg/phpdbg_prompt.c +--- sapi/phpdbg/phpdbg_prompt.c.old 2014-06-23 09:43:04.216119792 +0200 ++++ sapi/phpdbg/phpdbg_prompt.c 2014-06-23 09:32:02.850463053 +0200 +@@ -732,6 +732,11 @@ PHPDBG_COMMAND(print) /* {{{ */ + #else + phpdbg_writeln("Readline\tno"); + #endif ++#ifdef HAVE_LIBEDIT ++ phpdbg_writeln("Libedit\t\tyes"); ++#else ++ phpdbg_writeln("Libedit\t\tno"); ++#endif + + phpdbg_writeln("Exec\t\t%s", PHPDBG_G(exec) ? PHPDBG_G(exec) : "none"); + phpdbg_writeln("Compiled\t%s", PHPDBG_G(ops) ? "yes" : "no"); +diff -up sapi/phpdbg/phpdbg_utils.c.old sapi/phpdbg/phpdbg_utils.c +--- sapi/phpdbg/phpdbg_utils.c.old 2014-06-23 09:43:20.690185888 +0200 ++++ sapi/phpdbg/phpdbg_utils.c 2014-06-23 09:58:37.075896488 +0200 +@@ -400,12 +400,16 @@ PHPDBG_API const char *phpdbg_get_prompt + } + + /* create cached prompt */ ++#ifdef HAVE_LIBREADLINE ++ /* TODO: libedit doesn't seems to support coloured prompt */ + if ((PHPDBG_G(flags) & PHPDBG_IS_COLOURED)) { + asprintf( + &PHPDBG_G(prompt)[1], "\033[%sm%s\033[0m ", + PHPDBG_G(colors)[PHPDBG_COLOR_PROMPT]->code, + PHPDBG_G(prompt)[0]); +- } else { ++ } else ++#endif ++ { + asprintf( + &PHPDBG_G(prompt)[1], "%s ", + PHPDBG_G(prompt)[0]); +diff -up sapi/phpdbg/phpdbg.h.orig sapi/phpdbg/phpdbg.h +--- sapi/phpdbg/phpdbg.h.orig 2014-06-23 10:10:19.674754095 +0200 ++++ sapi/phpdbg/phpdbg.h 2014-06-23 10:13:14.041460315 +0200 +@@ -64,10 +64,13 @@ + # include "TSRM.h" + #endif + +-#if defined(HAVE_LIBREADLINE) || defined(HAVE_LIBEDIT) ++#ifdef LIBREADLINE + # include + # include + #endif ++#ifdef HAVE_LIBEDIT ++# include ++#endif + + #include "phpdbg_lexer.h" + #include "phpdbg_cmd.h" +diff -up sapi/phpdbg/phpdbg_utils.c.orig sapi/phpdbg/phpdbg_utils.c +--- sapi/phpdbg/phpdbg_utils.c.orig 2014-06-23 10:10:13.224727967 +0200 ++++ sapi/phpdbg/phpdbg_utils.c 2014-06-23 10:12:41.309327759 +0200 +@@ -400,7 +400,7 @@ PHPDBG_API const char *phpdbg_get_prompt + } + + /* create cached prompt */ +-#ifdef HAVE_LIBREADLINE ++#ifndef HAVE_LIBEDIT + /* TODO: libedit doesn't seems to support coloured prompt */ + if ((PHPDBG_G(flags) & PHPDBG_IS_COLOURED)) { + asprintf( diff --git a/php56.spec b/php56.spec index aaad8bf..ef7014a 100644 --- a/php56.spec +++ b/php56.spec @@ -104,11 +104,8 @@ %else %global with_libgd 1 %endif -%if 0%{?fedora} < 17 && 0%{?rhel} < 7 + %global with_libzip 0 -%else -%global with_libzip 1 -%endif %global with_zip 0 %if 0%{?fedora} < 18 && 0%{?rhel} < 7 @@ -124,7 +121,7 @@ Summary: PHP scripting language for creating dynamic web sites Name: php Version: 5.6.0 %if 0%{?snapdate:1}%{?rcver:1} -Release: 0.13.%{?snapdate}%{?rcver}%{?dist} +Release: 0.14.%{?snapdate}%{?rcver}%{?dist} %else Release: 1%{?dist} %endif @@ -185,6 +182,7 @@ Patch47: php-5.4.9-phpinfo.patch Patch91: php-5.3.7-oci8conf.patch # Upstream fixes (100+) +Patch100: php-phpdbg.patch # Security fixes (200+) @@ -908,6 +906,7 @@ rm -rf ext/json %patch91 -p1 -b .remi-oci8 # upstream patches +%patch100 -p0 -b .libedit # security patches @@ -1912,6 +1911,9 @@ fi %changelog +* Mon Jun 23 2014 Remi Collet 5.6.0-0.14.RC1 +- fix phpdbg with libedit https://bugs.php.net/67499 + * Thu Jun 19 2014 Remi Collet 5.6.0-0.13.RC1 - php 5.6.0RC1 -- cgit