* [Buildroot] [PATCH 1/2] package/pcre2: add JIT support option @ 2019-02-15 23:20 Artem Panfilov 2019-02-15 23:20 ` [Buildroot] [PATCH 2/2] package/php: fix how external PCRE2 JIT is enabled Artem Panfilov 2019-04-13 19:54 ` [Buildroot] [PATCH 1/2] package/pcre2: add JIT support option Thomas Petazzoni 0 siblings, 2 replies; 4+ messages in thread From: Artem Panfilov @ 2019-02-15 23:20 UTC (permalink / raw) To: buildroot Add JIT support option. Signed-off-by: Artem Panfilov <panfilov.artyom@gmail.com> --- package/pcre2/Config.in | 8 ++++++++ package/pcre2/pcre2.mk | 6 ++++++ 2 files changed, 14 insertions(+) diff --git a/package/pcre2/Config.in b/package/pcre2/Config.in index bb576c75a1..007dd960c6 100644 --- a/package/pcre2/Config.in +++ b/package/pcre2/Config.in @@ -23,4 +23,12 @@ config BR2_PACKAGE_PCRE2_32 This option builds the 32-bits pcre2 library, i.e 'libpcre2-32' +config BR2_PACKAGE_PCRE2_JIT + bool "enable JIT support" + depends on BR2_i386 || BR2_x86_64 || BR2_arm || BR2_armeb || \ + BR2_aarch64 || BR2_mips || BR2_mipsel || \ + BR2_mips64 || BR2_mips64el || BR2_powerpc || BR2_sparc + help + This option enables JIT support + endif diff --git a/package/pcre2/pcre2.mk b/package/pcre2/pcre2.mk index ee3cacb9aa..6d103c2b9b 100644 --- a/package/pcre2/pcre2.mk +++ b/package/pcre2/pcre2.mk @@ -16,6 +16,12 @@ PCRE2_CONF_OPTS += --enable-pcre2-8 PCRE2_CONF_OPTS += $(if $(BR2_PACKAGE_PCRE2_16),--enable-pcre2-16,--disable-pcre2-16) PCRE2_CONF_OPTS += $(if $(BR2_PACKAGE_PCRE2_32),--enable-pcre2-32,--disable-pcre2-32) +ifeq ($(BR2_PACKAGE_PCRE2_JIT),y) +PCRE2_CONF_OPTS += --enable-jit +else +PCRE2_CONF_OPTS += --disable-jit +endif + # disable fork usage if not available ifeq ($(BR2_USE_MMU),) PCRE2_CONF_OPTS += --disable-pcre2grep-callout -- 2.19.1 ^ permalink raw reply related [flat|nested] 4+ messages in thread
* [Buildroot] [PATCH 2/2] package/php: fix how external PCRE2 JIT is enabled 2019-02-15 23:20 [Buildroot] [PATCH 1/2] package/pcre2: add JIT support option Artem Panfilov @ 2019-02-15 23:20 ` Artem Panfilov 2019-04-13 19:58 ` Thomas Petazzoni 2019-04-13 19:54 ` [Buildroot] [PATCH 1/2] package/pcre2: add JIT support option Thomas Petazzoni 1 sibling, 1 reply; 4+ messages in thread From: Artem Panfilov @ 2019-02-15 23:20 UTC (permalink / raw) To: buildroot When the external PCRE2 library is used, PHP JIT option is enabled based on architecture. If the external library was compiled without JIT support runtime will fail. When I call "php -m" command, I have the following error message: PHP Fatal error: Unable to start pcre module in Unknown on line 0 Signed-off-by: Artem Panfilov <panfilov.artyom@gmail.com> --- ...0006-pcre2-tweak-pcre2-jit-detection.patch | 41 +++++++++++++++++++ package/php/php.mk | 7 ++++ 2 files changed, 48 insertions(+) create mode 100644 package/php/0006-pcre2-tweak-pcre2-jit-detection.patch diff --git a/package/php/0006-pcre2-tweak-pcre2-jit-detection.patch b/package/php/0006-pcre2-tweak-pcre2-jit-detection.patch new file mode 100644 index 0000000000..492abf008b --- /dev/null +++ b/package/php/0006-pcre2-tweak-pcre2-jit-detection.patch @@ -0,0 +1,41 @@ +diff --git a/ext/pcre/config0.m4 b/ext/pcre/config0.m4 +index b9542f0113..f4c66a8369 100644 +--- a/ext/pcre/config0.m4 ++++ b/ext/pcre/config0.m4 +@@ -53,35 +53,7 @@ PHP_ARG_WITH(pcre-jit,,[ --with-pcre-jit Enable PCRE JIT functionality + AC_DEFINE(HAVE_PCRE, 1, [ ]) + + if test "$PHP_PCRE_JIT" != "no"; then +- AC_MSG_CHECKING([for JIT support in PCRE2]) +- AC_RUN_IFELSE([ +- AC_LANG_SOURCE([[ +- #include <pcre2.h> +- #include <stdlib.h> +- int main(void) { +- uint32_t have_jit; +- pcre2_config_8(PCRE2_CONFIG_JIT, &have_jit); +- return !have_jit; +- } +- ]])], [ +- AC_MSG_RESULT([yes]) +- AC_DEFINE(HAVE_PCRE_JIT_SUPPORT, 1, []) +- ], +- [ +- AC_MSG_RESULT([no]) +- ], +- [ +- AC_CANONICAL_HOST +- case $host_cpu in +- arm*|i[34567]86|x86_64|mips*|powerpc*|sparc) +- AC_MSG_RESULT([yes]) +- AC_DEFINE(HAVE_PCRE_JIT_SUPPORT, 1, []) +- ;; +- *) +- AC_MSG_RESULT([no]) +- ;; +- esac +- ]) ++ AC_DEFINE(HAVE_PCRE_JIT_SUPPORT, 1, []) + fi + + PHP_NEW_EXTENSION(pcre, php_pcre.c, no,, -DZEND_ENABLE_STATIC_TSRMLS_CACHE=1) diff --git a/package/php/php.mk b/package/php/php.mk index 061b2f2609..eb6907972b 100644 --- a/package/php/php.mk +++ b/package/php/php.mk @@ -246,6 +246,13 @@ PHP_POST_CONFIGURE_HOOKS += PHP_DISABLE_VALGRIND ifeq ($(BR2_PACKAGE_PCRE2),y) PHP_CONF_OPTS += --with-pcre-regex=$(STAGING_DIR)/usr PHP_DEPENDENCIES += pcre2 + +ifeq ($(BR2_PACKAGE_PCRE2_JIT),y) +PHP_CONF_OPTS += --with-pcre-jit +else +PHP_CONF_OPTS += --without-pcre-jit +endif + else # The bundled pcre library is not configurable through ./configure options, # and by default is configured to be thread-safe, so it wants pthreads. So -- 2.19.1 ^ permalink raw reply related [flat|nested] 4+ messages in thread
* [Buildroot] [PATCH 2/2] package/php: fix how external PCRE2 JIT is enabled 2019-02-15 23:20 ` [Buildroot] [PATCH 2/2] package/php: fix how external PCRE2 JIT is enabled Artem Panfilov @ 2019-04-13 19:58 ` Thomas Petazzoni 0 siblings, 0 replies; 4+ messages in thread From: Thomas Petazzoni @ 2019-04-13 19:58 UTC (permalink / raw) To: buildroot Hello Artem, On Sat, 16 Feb 2019 02:20:59 +0300 Artem Panfilov <panfilov.artyom@gmail.com> wrote: > When the external PCRE2 library is used, PHP JIT option is enabled > based on architecture. If the external library was compiled without > JIT support runtime will fail. > > When I call "php -m" command, I have the following error message: > PHP Fatal error: Unable to start pcre module in Unknown on line 0 > > Signed-off-by: Artem Panfilov <panfilov.artyom@gmail.com> Thanks for this patch. See some comments below. > diff --git a/package/php/0006-pcre2-tweak-pcre2-jit-detection.patch b/package/php/0006-pcre2-tweak-pcre2-jit-detection.patch > new file mode 100644 > index 0000000000..492abf008b > --- /dev/null > +++ b/package/php/0006-pcre2-tweak-pcre2-jit-detection.patch > @@ -0,0 +1,41 @@ > +diff --git a/ext/pcre/config0.m4 b/ext/pcre/config0.m4 We need all patches to have a Signed-off-by and a description. Also, since PHP is maintained under Git upstream I believe, the patch should be generated by Git format-patch. > +index b9542f0113..f4c66a8369 100644 > +--- a/ext/pcre/config0.m4 > ++++ b/ext/pcre/config0.m4 > +@@ -53,35 +53,7 @@ PHP_ARG_WITH(pcre-jit,,[ --with-pcre-jit > Enable PCRE JIT functionality > + AC_DEFINE(HAVE_PCRE, 1, [ ]) > + > + if test "$PHP_PCRE_JIT" != "no"; then > +- AC_MSG_CHECKING([for JIT support in PCRE2]) > +- AC_RUN_IFELSE([ > +- AC_LANG_SOURCE([[ > +- #include <pcre2.h> > +- #include <stdlib.h> > +- int main(void) { > +- uint32_t have_jit; > +- pcre2_config_8(PCRE2_CONFIG_JIT, &have_jit); > +- return !have_jit; > +- } > +- ]])], [ > +- AC_MSG_RESULT([yes]) > +- AC_DEFINE(HAVE_PCRE_JIT_SUPPORT, 1, []) > +- ], > +- [ > +- AC_MSG_RESULT([no]) > +- ], > +- [ > +- AC_CANONICAL_HOST > +- case $host_cpu in > +- arm*|i[34567]86|x86_64|mips*|powerpc*|sparc) > +- AC_MSG_RESULT([yes]) > +- AC_DEFINE(HAVE_PCRE_JIT_SUPPORT, 1, []) > +- ;; > +- *) > +- AC_MSG_RESULT([no]) > +- ;; > +- esac > +- ]) > ++ AC_DEFINE(HAVE_PCRE_JIT_SUPPORT, 1, []) This change is not really great, as it cannot be contributed upstream. Better approaches would be * Add an autoconf cache variable (https://www.gnu.org/software/autoconf/manual/autoconf-2.69/html_node/Caching-Results.html) that allows to preseed the fact that the pcre2 library is built with JIT support, and therefore avoid the AC_TRY_RUN check. This is fully backward compatible. * Change the semantic of the option. If --with-pcre-jit is passed, assume it is available. Only if it is *not* passed do the AC_TRY_RUN check. However, this is changing a bit the semantic of the option. So perhaps the cache variable is the least annoying solution. Could you have a look at implementing this ? Thanks a lot! Thomas -- Thomas Petazzoni, CTO, Bootlin Embedded Linux and Kernel engineering https://bootlin.com ^ permalink raw reply [flat|nested] 4+ messages in thread
* [Buildroot] [PATCH 1/2] package/pcre2: add JIT support option 2019-02-15 23:20 [Buildroot] [PATCH 1/2] package/pcre2: add JIT support option Artem Panfilov 2019-02-15 23:20 ` [Buildroot] [PATCH 2/2] package/php: fix how external PCRE2 JIT is enabled Artem Panfilov @ 2019-04-13 19:54 ` Thomas Petazzoni 1 sibling, 0 replies; 4+ messages in thread From: Thomas Petazzoni @ 2019-04-13 19:54 UTC (permalink / raw) To: buildroot On Sat, 16 Feb 2019 02:20:58 +0300 Artem Panfilov <panfilov.artyom@gmail.com> wrote: > Add JIT support option. > > Signed-off-by: Artem Panfilov <panfilov.artyom@gmail.com> > --- > package/pcre2/Config.in | 8 ++++++++ > package/pcre2/pcre2.mk | 6 ++++++ > 2 files changed, 14 insertions(+) Applied to master, thanks. Thomas -- Thomas Petazzoni, CTO, Bootlin Embedded Linux and Kernel engineering https://bootlin.com ^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2019-04-13 19:58 UTC | newest] Thread overview: 4+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2019-02-15 23:20 [Buildroot] [PATCH 1/2] package/pcre2: add JIT support option Artem Panfilov 2019-02-15 23:20 ` [Buildroot] [PATCH 2/2] package/php: fix how external PCRE2 JIT is enabled Artem Panfilov 2019-04-13 19:58 ` Thomas Petazzoni 2019-04-13 19:54 ` [Buildroot] [PATCH 1/2] package/pcre2: add JIT support option Thomas Petazzoni
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.