public inbox for gentoo-commits@lists.gentoo.org
 help / color / mirror / Atom feed
From: "Mike Frysinger" <vapier@gentoo.org>
To: gentoo-commits@lists.gentoo.org
Subject: [gentoo-commits] repo/gentoo:master commit in: dev-libs/libpcre/files/, dev-libs/libpcre/
Date: Mon, 20 Mar 2017 07:48:09 +0000 (UTC)	[thread overview]
Message-ID: <1489996081.ef1e0f46ae56483d3b5695108e684a887bab4d33.vapier@gentoo> (raw)

commit:     ef1e0f46ae56483d3b5695108e684a887bab4d33
Author:     Mike Frysinger <vapier <AT> gentoo <DOT> org>
AuthorDate: Mon Mar 20 07:44:52 2017 +0000
Commit:     Mike Frysinger <vapier <AT> gentoo <DOT> org>
CommitDate: Mon Mar 20 07:48:01 2017 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=ef1e0f46

dev-libs/libpcre: add upstream fixes for pcregrep & jit compiler #609592

 dev-libs/libpcre/files/libpcre-8.40-jit-else.patch | 68 +++++++++++++++
 .../files/libpcre-8.40-pcregrep-multiline-1.patch  | 69 ++++++++++++++++
 .../files/libpcre-8.40-pcregrep-multiline-2.patch  | 25 ++++++
 dev-libs/libpcre/libpcre-8.40-r1.ebuild            | 96 ++++++++++++++++++++++
 4 files changed, 258 insertions(+)

diff --git a/dev-libs/libpcre/files/libpcre-8.40-jit-else.patch b/dev-libs/libpcre/files/libpcre-8.40-jit-else.patch
new file mode 100644
index 00000000000..d347a7f5e1e
--- /dev/null
+++ b/dev-libs/libpcre/files/libpcre-8.40-jit-else.patch
@@ -0,0 +1,68 @@
+https://bugs.gentoo.org/609592
+https://bugs.exim.org/show_bug.cgi?id=2035
+
+From 7ddfbe9d0b9f43402f8043e940172a318cc407c6 Mon Sep 17 00:00:00 2001
+From: Zoltan Herczeg <hzmester@freemail.hu>
+Date: Tue, 14 Feb 2017 08:48:18 +0000
+Subject: [PATCH] Fix a missing else in the JIT compiler reported by
+ 'idaifish'.
+
+git-svn-id: svn://vcs.exim.org/pcre/code/trunk@1680 2f5784b3-3f2a-0410-8824-cb99058d5e15
+---
+ ChangeLog             | 2 ++
+ pcre_jit_compile.c    | 2 +-
+ testdata/testinput12  | 2 ++
+ testdata/testoutput12 | 2 ++
+ 4 files changed, 7 insertions(+), 1 deletion(-)
+
+diff --git a/ChangeLog b/ChangeLog
+index 373ee8422ef5..d813935539bd 100644
+--- a/ChangeLog
++++ b/ChangeLog
+@@ -15,6 +15,8 @@ mode with --only-matching matched several lines, it restarted scanning at the
+ next line instead of moving on to the end of the matched string, which can be 
+ several lines after the start.
+ 
++3.  Fix a missing else in the JIT compiler reported by 'idaifish'.
++
+ 
+ Version 8.40 11-January-2017
+ ----------------------------
+diff --git a/pcre_jit_compile.c b/pcre_jit_compile.c
+index c301f05d5e3f..6ef8e48ff5e8 100644
+--- a/pcre_jit_compile.c
++++ b/pcre_jit_compile.c
+@@ -8110,7 +8110,7 @@ if (opcode == OP_COND || opcode == OP_SCOND)
+ 
+     if (*matchingpath == OP_FAIL)
+       stacksize = 0;
+-    if (*matchingpath == OP_RREF)
++    else if (*matchingpath == OP_RREF)
+       {
+       stacksize = GET2(matchingpath, 1);
+       if (common->currententry == NULL)
+diff --git a/testdata/testinput12 b/testdata/testinput12
+index 944be6943f5e..89ed4564bcd4 100644
+--- a/testdata/testinput12
++++ b/testdata/testinput12
+@@ -104,4 +104,6 @@ and a couple of things that are different with JIT. --/
+ /(.|.)*?bx/
+     aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabax
+ 
++/((?(?!))x)(?'name')(?1)/S++
++
+ /-- End of testinput12 --/
+diff --git a/testdata/testoutput12 b/testdata/testoutput12
+index 87911086f498..7632c4e58013 100644
+--- a/testdata/testoutput12
++++ b/testdata/testoutput12
+@@ -201,4 +201,6 @@ No match, mark = m (JIT)
+     aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabax
+ Error -8 (match limit exceeded)
+ 
++/((?(?!))x)(?'name')(?1)/S++
++
+ /-- End of testinput12 --/
+-- 
+2.12.0
+

diff --git a/dev-libs/libpcre/files/libpcre-8.40-pcregrep-multiline-1.patch b/dev-libs/libpcre/files/libpcre-8.40-pcregrep-multiline-1.patch
new file mode 100644
index 00000000000..f15968dfe98
--- /dev/null
+++ b/dev-libs/libpcre/files/libpcre-8.40-pcregrep-multiline-1.patch
@@ -0,0 +1,69 @@
+From 5be027b624bc866702808abadfe5f99360414086 Mon Sep 17 00:00:00 2001
+From: Philip Hazel <ph10@cam.ac.uk>
+Date: Fri, 10 Feb 2017 17:47:34 +0000
+Subject: [PATCH] Correct fix for pcre2grep multiline with --only-matching.
+
+git-svn-id: svn://vcs.exim.org/pcre/code/trunk@1678 2f5784b3-3f2a-0410-8824-cb99058d5e15
+---
+ ChangeLog    |  5 +++++
+ configure.ac |  6 +++---
+ pcregrep.c   | 20 +++++++++++++++-----
+ 3 files changed, 23 insertions(+), 8 deletions(-)
+
+diff --git a/ChangeLog b/ChangeLog
+index ab4e053e601e..373ee8422ef5 100644
+--- a/ChangeLog
++++ b/ChangeLog
+@@ -10,6 +10,11 @@ Version 8.41
+ 1.  Fixed typo in CMakeLists.txt (wrong number of arguments for 
+ PCRE_STATIC_RUNTIME (affects MSVC only).
+ 
++2. Issue 1 for 8.40 below was not correctly fixed. If pcregrep in multiline 
++mode with --only-matching matched several lines, it restarted scanning at the 
++next line instead of moving on to the end of the matched string, which can be 
++several lines after the start.
++
+ 
+ Version 8.40 11-January-2017
+ ----------------------------
+diff --git a/pcregrep.c b/pcregrep.c
+index fd2a67622baa..2070c057e4a0 100644
+--- a/pcregrep.c
++++ b/pcregrep.c
+@@ -1804,11 +1804,6 @@ while (ptr < endptr)
+         if (line_buffered) fflush(stdout);
+         rc = 0;                      /* Had some success */
+ 
+-        /* If the current match ended past the end of the line (only possible
+-        in multiline mode), we are done with this line. */
+-
+-        if ((unsigned int)offsets[1] > linelength) goto END_ONE_MATCH;
+-
+         startoffset = offsets[1];    /* Restart after the match */
+         if (startoffset <= oldstartoffset)
+           {
+@@ -1818,6 +1813,21 @@ while (ptr < endptr)
+           if (utf8)
+             while ((matchptr[startoffset] & 0xc0) == 0x80) startoffset++;
+           }
++
++        /* If the current match ended past the end of the line (only possible
++        in multiline mode), we must move on to the line in which it did end
++        before searching for more matches. */                                
++                                                          
++        while (startoffset > (int)linelength)
++          {                                                                  
++          matchptr = ptr += linelength + endlinelength;                      
++          filepos += (int)(linelength + endlinelength);                        
++          linenumber++;                    
++          startoffset -= (int)(linelength + endlinelength);
++          t = end_of_line(ptr, endptr, &endlinelength);
++          linelength = t - ptr - endlinelength;
++          }              
++
+         goto ONLY_MATCHING_RESTART;
+         }
+       }
+-- 
+2.12.0
+

diff --git a/dev-libs/libpcre/files/libpcre-8.40-pcregrep-multiline-2.patch b/dev-libs/libpcre/files/libpcre-8.40-pcregrep-multiline-2.patch
new file mode 100644
index 00000000000..63ad51cd104
--- /dev/null
+++ b/dev-libs/libpcre/files/libpcre-8.40-pcregrep-multiline-2.patch
@@ -0,0 +1,25 @@
+From 8b0fdf16e57ce9a653a0a03c39f6cc061e8122e8 Mon Sep 17 00:00:00 2001
+From: Philip Hazel <ph10@cam.ac.uk>
+Date: Sun, 12 Feb 2017 13:28:11 +0000
+Subject: [PATCH] Fix bug in most recent fix for multiline pcre2grep.
+
+git-svn-id: svn://vcs.exim.org/pcre/code/trunk@1679 2f5784b3-3f2a-0410-8824-cb99058d5e15
+---
+ pcregrep.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/pcregrep.c b/pcregrep.c
+index 2070c057e4a0..3cd70eeb4261 100644
+--- a/pcregrep.c
++++ b/pcregrep.c
+@@ -1826,6 +1826,7 @@ while (ptr < endptr)
+           startoffset -= (int)(linelength + endlinelength);
+           t = end_of_line(ptr, endptr, &endlinelength);
+           linelength = t - ptr - endlinelength;
++          length = (size_t)(endptr - ptr); 
+           }              
+ 
+         goto ONLY_MATCHING_RESTART;
+-- 
+2.12.0
+

diff --git a/dev-libs/libpcre/libpcre-8.40-r1.ebuild b/dev-libs/libpcre/libpcre-8.40-r1.ebuild
new file mode 100644
index 00000000000..bf1be7c573f
--- /dev/null
+++ b/dev-libs/libpcre/libpcre-8.40-r1.ebuild
@@ -0,0 +1,96 @@
+# Copyright 1999-2017 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="5"
+
+inherit eutils multilib libtool flag-o-matic toolchain-funcs multilib-minimal
+
+DESCRIPTION="Perl-compatible regular expression library"
+HOMEPAGE="http://www.pcre.org/"
+MY_P="pcre-${PV/_rc/-RC}"
+if [[ ${PV} != *_rc* ]] ; then
+	# Only the final releases are available here.
+	SRC_URI="mirror://sourceforge/pcre/${MY_P}.tar.bz2
+		ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/${MY_P}.tar.bz2"
+else
+	SRC_URI="ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/Testing/${MY_P}.tar.bz2"
+fi
+
+LICENSE="BSD"
+SLOT="3"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~x86 ~ppc-aix ~x64-cygwin ~amd64-fbsd ~sparc-fbsd ~x86-fbsd ~amd64-linux ~arm-linux ~x86-linux ~ppc-macos ~x64-macos ~x86-macos ~m68k-mint ~sparc-solaris ~sparc64-solaris ~x64-solaris ~x86-solaris"
+IUSE="bzip2 +cxx +jit libedit pcre16 pcre32 +readline +recursion-limit static-libs unicode zlib"
+REQUIRED_USE="readline? ( !libedit )
+	libedit? ( !readline )"
+
+RDEPEND="bzip2? ( app-arch/bzip2 )
+	zlib? ( sys-libs/zlib )
+	libedit? ( dev-libs/libedit )
+	readline? ( sys-libs/readline:0= )"
+DEPEND="${RDEPEND}
+	virtual/pkgconfig"
+RDEPEND="${RDEPEND}
+	abi_x86_32? (
+		!<=app-emulation/emul-linux-x86-baselibs-20131008-r2
+		!app-emulation/emul-linux-x86-baselibs[-abi_x86_32(-)]
+	)"
+
+S=${WORKDIR}/${MY_P}
+
+MULTILIB_CHOST_TOOLS=(
+	/usr/bin/pcre-config
+)
+
+PATCHES=(
+	"${FILESDIR}"/${P}-pcregrep-multiline-{1,2}.patch
+	"${FILESDIR}"/${P}-jit-else.patch #609592
+)
+
+src_prepare() {
+	epatch "${PATCHES[@]}"
+	sed -i -e "s:-lpcre ::" libpcrecpp.pc.in || die
+	elibtoolize
+}
+
+multilib_src_configure() {
+	ECONF_SOURCE="${S}" econf \
+		--with-match-limit-recursion=$(usex recursion-limit 8192 MATCH_LIMIT) \
+		$(multilib_native_use_enable bzip2 pcregrep-libbz2) \
+		$(use_enable cxx cpp) \
+		$(use_enable jit) $(use_enable jit pcregrep-jit) \
+		$(use_enable pcre16) \
+		$(use_enable pcre32) \
+		$(multilib_native_use_enable libedit pcretest-libedit) \
+		$(multilib_native_use_enable readline pcretest-libreadline) \
+		$(use_enable static-libs static) \
+		$(use_enable unicode utf) $(use_enable unicode unicode-properties) \
+		$(multilib_native_use_enable zlib pcregrep-libz) \
+		--enable-pcre8 \
+		--enable-shared \
+		--htmldir="${EPREFIX}"/usr/share/doc/${PF}/html \
+		--docdir="${EPREFIX}"/usr/share/doc/${PF}
+}
+
+multilib_src_compile() {
+	emake V=1 $(multilib_is_native_abi || echo "bin_PROGRAMS=")
+}
+
+multilib_src_install() {
+	emake \
+		DESTDIR="${D}" \
+		$(multilib_is_native_abi || echo "bin_PROGRAMS= dist_html_DATA=") \
+		install
+	gen_usr_ldscript -a pcre
+}
+
+multilib_src_install_all() {
+	prune_libtool_files
+}
+
+pkg_preinst() {
+	preserve_old_lib /$(get_libdir)/libpcre.so.0
+}
+
+pkg_postinst() {
+	preserve_old_lib_notify /$(get_libdir)/libpcre.so.0
+}


             reply	other threads:[~2017-03-20  7:48 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-03-20  7:48 Mike Frysinger [this message]
  -- strict thread matches above, loose matches on Subject: below --
2023-08-03 19:08 [gentoo-commits] repo/gentoo:master commit in: dev-libs/libpcre/files/, dev-libs/libpcre/ Sam James
2020-02-13 10:20 Lars Wendler
2019-04-10  6:19 Lars Wendler
2019-04-10  5:06 Lars Wendler
2018-03-21  7:05 Lars Wendler
2017-01-17 16:23 Lars Wendler
2016-06-14 18:39 Lars Wendler
2016-04-02 20:51 Mike Frysinger

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1489996081.ef1e0f46ae56483d3b5695108e684a887bab4d33.vapier@gentoo \
    --to=vapier@gentoo.org \
    --cc=gentoo-commits@lists.gentoo.org \
    --cc=gentoo-dev@lists.gentoo.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox