diff options
author | 2022-03-15 14:06:07 +0100 | |
---|---|---|
committer | 2022-03-21 23:06:07 +0100 | |
commit | 93098055bb06d347ab414c6ff4f948c7ee9ea367 (patch) | |
tree | 472b6d91051bafa016046cbdf06da600757dfd2a /dev-libs | |
parent | media-video/dvdrip: Stabilize 0.98.11-r5 x86, #831130 (diff) | |
download | gentoo-93098055bb06d347ab414c6ff4f948c7ee9ea367.tar.gz gentoo-93098055bb06d347ab414c6ff4f948c7ee9ea367.tar.bz2 gentoo-93098055bb06d347ab414c6ff4f948c7ee9ea367.zip |
dev-libs/tre: add 0.8.0_p20210321
Closes: https://bugs.gentoo.org/296813
Closes: https://github.com/gentoo/gentoo/pull/24577
Signed-off-by: Patrice Clement <monsieurp@gentoo.org>
Signed-off-by: Alessandro Barbieri <lssndrbarbieri@gmail.com>
Diffstat (limited to 'dev-libs')
-rw-r--r-- | dev-libs/tre/Manifest | 1 | ||||
-rw-r--r-- | dev-libs/tre/files/0.8.0-CVE-2016-8559.patch | 7 | ||||
-rw-r--r-- | dev-libs/tre/files/0.8.0-pkgcfg.patch | 2 | ||||
-rw-r--r-- | dev-libs/tre/files/tre-chicken.patch | 20 | ||||
-rw-r--r-- | dev-libs/tre/files/tre-issue37.patch | 11 | ||||
-rw-r--r-- | dev-libs/tre/files/tre-issue50.patch | 11 | ||||
-rw-r--r-- | dev-libs/tre/files/tre-issue55-part1.patch | 28 | ||||
-rw-r--r-- | dev-libs/tre/files/tre-issue55-part2.patch | 11 | ||||
-rw-r--r-- | dev-libs/tre/files/tre-python3.patch | 191 | ||||
-rw-r--r-- | dev-libs/tre/files/tre-tests.patch | 10 | ||||
-rw-r--r-- | dev-libs/tre/metadata.xml | 5 | ||||
-rw-r--r-- | dev-libs/tre/tre-0.8.0_p20210321.ebuild | 112 |
12 files changed, 400 insertions, 9 deletions
diff --git a/dev-libs/tre/Manifest b/dev-libs/tre/Manifest index 84c1c6408081..92f10ffb9446 100644 --- a/dev-libs/tre/Manifest +++ b/dev-libs/tre/Manifest @@ -1 +1,2 @@ DIST tre-0.8.0.tar.bz2 380714 BLAKE2B b2af6e805e9e19fd69debf2f881ddfb591317f69db4e29a04e1899eb69100b8ac7744f86fa438530509ca2ee8aa1d346d416c6391f13247cd9398f4c59c2ed85 SHA512 db7465993e0d25eee8e52f974427b8a040234cf0f017769eb94ee88bc6261821336aad7f762bfa82db7e2212d8449bc221592586f061c528a59a550773cbc263 +DIST tre-0.8.0_p20210321.tar.gz 146294 BLAKE2B d740bd0e99f50f5e4d8105f5260e43a81b6af9857a21e386e437ab8d48a9e0de23eae03e96cf6b9f4d2d37f72d0fa73ef7343086271ea80f166bdba3f04475a9 SHA512 950c81f681970fc737cfdd6815445f05a018fc742b964cea3ce19f0249c677dd715ece4ff8e543fa9f3fd23b503eafa00aea00dbae063af9bc7e08dc1bc33aed diff --git a/dev-libs/tre/files/0.8.0-CVE-2016-8559.patch b/dev-libs/tre/files/0.8.0-CVE-2016-8559.patch index 39ceae016446..923dbfbf3a2a 100644 --- a/dev-libs/tre/files/0.8.0-CVE-2016-8559.patch +++ b/dev-libs/tre/files/0.8.0-CVE-2016-8559.patch @@ -12,13 +12,6 @@ type, size_t, rather than int. also improve comments, use calloc in place of malloc+memset, and remove bogus casts. ---- - src/regex/regexec.c | 23 ++++++++++++++++++----- - 1 file changed, 18 insertions(+), 5 deletions(-) - -Note: patch was modified to apply to tre, parts were taken from -https://github.com/laurikari/tre/issues/37 - --- a/lib/tre-match-parallel.c +++ b/lib/tre-match-parallel.c @@ -59,6 +59,7 @@ diff --git a/dev-libs/tre/files/0.8.0-pkgcfg.patch b/dev-libs/tre/files/0.8.0-pkgcfg.patch index 82f803504282..7952619c9616 100644 --- a/dev-libs/tre/files/0.8.0-pkgcfg.patch +++ b/dev-libs/tre/files/0.8.0-pkgcfg.patch @@ -1,8 +1,6 @@ tre.pc.in | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) -diff --git a/tre.pc.in b/tre.pc.in -index fdc45fa..b8d0676 100644 --- a/tre.pc.in +++ b/tre.pc.in @@ -6,5 +6,5 @@ includedir=@includedir@ diff --git a/dev-libs/tre/files/tre-chicken.patch b/dev-libs/tre/files/tre-chicken.patch new file mode 100644 index 000000000000..6047f9ae80d3 --- /dev/null +++ b/dev-libs/tre/files/tre-chicken.patch @@ -0,0 +1,20 @@ +--- a/python/setup.py ++++ b/python/setup.py +@@ -10,7 +10,8 @@ import shutil + + version = "0.8.0" + data_files = [] +-include_dirs = ["../lib"] ++include_dirs = ["../include"] ++library_dirs = ["../lib/.libs"] + libraries = ["tre"] + + if sys.platform == "win32": +@@ -31,6 +32,7 @@ setup(name = "tre", + sources = ["tre-python.c"], + define_macros = [("HAVE_CONFIG_H", None)], + include_dirs = include_dirs, ++ library_dirs = library_dirs, + libraries = libraries + ), + ], diff --git a/dev-libs/tre/files/tre-issue37.patch b/dev-libs/tre/files/tre-issue37.patch new file mode 100644 index 000000000000..43b0cded7d26 --- /dev/null +++ b/dev-libs/tre/files/tre-issue37.patch @@ -0,0 +1,11 @@ +--- a/lib/tre-parse.c ++++ b/lib/tre-parse.c +@@ -1480,6 +1480,8 @@ tre_parse(tre_parse_ctx_t *ctx) + ctx->re++; + while (ctx->re_end - ctx->re >= 0) + { ++ if (i == sizeof(tmp)) ++ return REG_EBRACE; + if (ctx->re[0] == CHAR_RBRACE) + break; + if (tre_isxdigit(ctx->re[0])) diff --git a/dev-libs/tre/files/tre-issue50.patch b/dev-libs/tre/files/tre-issue50.patch new file mode 100644 index 000000000000..f233953ce28f --- /dev/null +++ b/dev-libs/tre/files/tre-issue50.patch @@ -0,0 +1,11 @@ +--- a/lib/tre-parse.c ++++ b/lib/tre-parse.c +@@ -1341,7 +1341,7 @@ tre_parse(tre_parse_ctx_t *ctx) + + case CHAR_RPAREN: /* end of current subexpression */ + if ((ctx->cflags & REG_EXTENDED && depth > 0) +- || (ctx->re > ctx->re_start ++ || (!(ctx->cflags & REG_EXTENDED) && ctx->re > ctx->re_start + && *(ctx->re - 1) == CHAR_BACKSLASH)) + { + DPRINT(("tre_parse: empty: '%.*" STRF "'\n", diff --git a/dev-libs/tre/files/tre-issue55-part1.patch b/dev-libs/tre/files/tre-issue55-part1.patch new file mode 100644 index 000000000000..8e12cf683030 --- /dev/null +++ b/dev-libs/tre/files/tre-issue55-part1.patch @@ -0,0 +1,28 @@ +--- a/lib/tre-parse.c ++++ b/lib/tre-parse.c +@@ -582,16 +582,23 @@ + tre_parse_int(const tre_char_t **regex, const tre_char_t *regex_end) + { + int num = -1; ++ int overflow = 0; + const tre_char_t *r = *regex; + while (r < regex_end && *r >= L'0' && *r <= L'9') + { + if (num < 0) + num = 0; +- num = num * 10 + *r - L'0'; ++ if (num <= (INT_MAX - 9) / 10) { ++ num = num * 10 + *r - L'0'; ++ } else { ++ /* This digit could cause an integer overflow. We do not return ++ * directly; instead, consume all remaining digits. */ ++ overflow = 1; ++ } + r++; + } + *regex = r; +- return num; ++ return overflow ? -1 : num; + } + + diff --git a/dev-libs/tre/files/tre-issue55-part2.patch b/dev-libs/tre/files/tre-issue55-part2.patch new file mode 100644 index 000000000000..b28a7a5f4901 --- /dev/null +++ b/dev-libs/tre/files/tre-issue55-part2.patch @@ -0,0 +1,11 @@ +--- a/lib/tre-parse.c ++++ b/lib/tre-parse.c +@@ -641,7 +641,7 @@ tre_parse_bound(tre_parse_ctx_t *ctx, tre_ast_node_t **result) + } + + /* Check that the repeat counts are sane. */ +- if ((max >= 0 && min > max) || max > RE_DUP_MAX) ++ if ((max >= 0 && min > max) || max > RE_DUP_MAX || min > RE_DUP_MAX) + return REG_BADBR; + + diff --git a/dev-libs/tre/files/tre-python3.patch b/dev-libs/tre/files/tre-python3.patch new file mode 100644 index 000000000000..b3068519e1dd --- /dev/null +++ b/dev-libs/tre/files/tre-python3.patch @@ -0,0 +1,191 @@ +--- a/python/example.py ++++ b/python/example.py +@@ -1,7 +1,7 @@ + import tre + + fz = tre.Fuzzyness(maxerr = 3) +-print fz ++print (fz) + + pt = tre.compile("Don(ald( Ervin)?)? Knuth", tre.EXTENDED) + data = """ +@@ -16,5 +16,5 @@ typefaces. + m = pt.search(data, fz) + + if m: +- print m.groups() +- print m[0] ++ print (m.groups()) ++ print (m[0]) +--- a/python/tre-python.c ++++ b/python/tre-python.c +@@ -86,9 +86,9 @@ TreFuzzyness_repr(PyObject *obj) + TreFuzzynessObject *self = (TreFuzzynessObject*)obj; + PyObject *o; + +- o = PyString_FromFormat("%s(delcost=%d,inscost=%d,maxcost=%d,subcost=%d," ++ o = PyUnicode_FromFormat("%s(delcost=%d,inscost=%d,maxcost=%d,subcost=%d," + "maxdel=%d,maxerr=%d,maxins=%d,maxsub=%d)", +- self->ob_type->tp_name, self->ap.cost_del, ++ Py_TYPE(self)->tp_name, self->ap.cost_del, + self->ap.cost_ins, self->ap.max_cost, + self->ap.cost_subst, self->ap.max_del, + self->ap.max_err, self->ap.max_ins, +@@ -118,8 +118,7 @@ static PyMemberDef TreFuzzyness_members[ + }; + + static PyTypeObject TreFuzzynessType = { +- PyObject_HEAD_INIT(NULL) +- 0, /* ob_size */ ++ PyVarObject_HEAD_INIT(NULL, 0) + TRE_MODULE ".Fuzzyness", /* tp_name */ + sizeof(TreFuzzynessObject), /* tp_basicsize */ + 0, /* tp_itemsize */ +@@ -193,7 +192,7 @@ PyTreMatch_groups(TreMatchObject *self, + } + + static PyObject * +-PyTreMatch_groupi(PyObject *obj, int gn) ++PyTreMatch_groupi(PyObject *obj, Py_ssize_t gn) + { + TreMatchObject *self = (TreMatchObject*)obj; + PyObject *result; +@@ -220,7 +219,7 @@ PyTreMatch_group(TreMatchObject *self, P + PyObject *result; + long gn; + +- gn = PyInt_AsLong(grpno); ++ gn = PyLong_AsLong(grpno); + + if (PyErr_Occurred()) + return NULL; +@@ -277,8 +276,7 @@ static PySequenceMethods TreMatch_as_seq + }; + + static PyTypeObject TreMatchType = { +- PyObject_HEAD_INIT(NULL) +- 0, /* ob_size */ ++ PyVarObject_HEAD_INIT(NULL, 0) + TRE_MODULE ".Match", /* tp_name */ + sizeof(TreMatchObject), /* tp_basicsize */ + 0, /* tp_itemsize */ +@@ -380,8 +378,8 @@ PyTrePattern_search(TrePatternObject *se + } + else + { +- targ = PyString_AsString(pstring); +- tlen = PyString_Size(pstring); ++ targ = PyBytes_AsString(pstring); ++ tlen = PyBytes_Size(pstring); + + rc = tre_reganexec(&self->rgx, targ, tlen, &mo->am, fz->ap, eflags); + } +@@ -433,8 +431,7 @@ PyTrePattern_dealloc(TrePatternObject *s + } + + static PyTypeObject TrePatternType = { +- PyObject_HEAD_INIT(NULL) +- 0, /* ob_size */ ++ PyVarObject_HEAD_INIT(NULL, 0) + TRE_MODULE ".Pattern", /* tp_name */ + sizeof(TrePatternObject), /* tp_basicsize */ + 0, /* tp_itemsize */ +@@ -467,7 +464,7 @@ static PyTypeObject TrePatternType = { + }; + + static TrePatternObject * +-newTrePatternObject() ++newTrePatternObject(void) + { + TrePatternObject *self; + +@@ -482,7 +479,7 @@ static PyObject * + PyTre_ncompile(PyObject *self, PyObject *args) + { + TrePatternObject *rv; +- PyUnicodeObject *upattern = NULL; ++ PyObject *upattern = NULL; + char *pattern = NULL; + int pattlen; + int cflags = 0; +@@ -537,9 +534,8 @@ static PyMethodDef tre_methods[] = { + { NULL, NULL } + }; + +-static char *tre_doc = +-"Python module for TRE library\n\nModule exports " +-"the only function: compile"; ++ ++#define tre_doc "Python module for TRE library\n\nModule exports the only function: compile" + + static struct _tre_flags { + char *name; +@@ -556,40 +552,57 @@ static struct _tre_flags { + { NULL, 0 } + }; + ++ ++static struct PyModuleDef moduledef = { ++ PyModuleDef_HEAD_INIT, ++ TRE_MODULE ".Module", /* m_name */ ++ tre_doc, /* m_doc */ ++ -1, /* m_size */ ++ tre_methods, /* m_methods */ ++ NULL, /* m_reload */ ++ NULL, /* m_traverse */ ++ NULL, /* m_clear */ ++ NULL, /* m_free */ ++}; ++ ++ + PyMODINIT_FUNC +-inittre(void) ++PyInit_tre(void) + { + PyObject *m; + struct _tre_flags *fp; + + if (PyType_Ready(&TreFuzzynessType) < 0) +- return; ++ return NULL; + if (PyType_Ready(&TreMatchType) < 0) +- return; ++ return NULL; + if (PyType_Ready(&TrePatternType) < 0) +- return; ++ return NULL; + + /* Create the module and add the functions */ +- m = Py_InitModule3(TRE_MODULE, tre_methods, tre_doc); ++ ++ m = PyModule_Create (&moduledef); ++ + if (m == NULL) +- return; ++ return NULL; + + Py_INCREF(&TreFuzzynessType); + if (PyModule_AddObject(m, "Fuzzyness", (PyObject*)&TreFuzzynessType) < 0) +- return; ++ return NULL; + Py_INCREF(&TreMatchType); + if (PyModule_AddObject(m, "Match", (PyObject*)&TreMatchType) < 0) +- return; ++ return NULL; + Py_INCREF(&TrePatternType); + if (PyModule_AddObject(m, "Pattern", (PyObject*)&TrePatternType) < 0) +- return; ++ return NULL; + ErrorObject = PyErr_NewException(TRE_MODULE ".Error", NULL, NULL); + Py_INCREF(ErrorObject); + if (PyModule_AddObject(m, "Error", ErrorObject) < 0) +- return; ++ return NULL; + + /* Insert the flags */ + for (fp = tre_flags; fp->name != NULL; fp++) + if (PyModule_AddIntConstant(m, fp->name, fp->val) < 0) +- return; ++ return NULL; ++ return m; + } diff --git a/dev-libs/tre/files/tre-tests.patch b/dev-libs/tre/files/tre-tests.patch new file mode 100644 index 000000000000..c39ff9fb268d --- /dev/null +++ b/dev-libs/tre/files/tre-tests.patch @@ -0,0 +1,10 @@ +--- tre-0.7.6/tests/agrep/run-tests.sh.tests ++++ tre-0.7.6/tests/agrep/run-tests.sh +@@ -2,6 +2,7 @@ + + set -e + ++export LD_LIBRARY_PATH=$top_builddir/lib/.libs + agrep="$top_builddir/src/agrep" + + echo "$builddir $top_builddir $srcdir" diff --git a/dev-libs/tre/metadata.xml b/dev-libs/tre/metadata.xml index 4d02215649f9..f77edd54bfa6 100644 --- a/dev-libs/tre/metadata.xml +++ b/dev-libs/tre/metadata.xml @@ -8,4 +8,9 @@ <upstream> <remote-id type="github">laurikari/tre</remote-id> </upstream> + <use> + <flag name="agrep">Build agrep tool</flag> + <flag name="alloca">Enable if you want TRE to use alloca() instead of malloc() when allocating memory needed for regexec operations</flag> + <flag name="approx">Enable the approximate matching functionality</flag> + </use> </pkgmetadata> diff --git a/dev-libs/tre/tre-0.8.0_p20210321.ebuild b/dev-libs/tre/tre-0.8.0_p20210321.ebuild new file mode 100644 index 000000000000..15ab1ee38acf --- /dev/null +++ b/dev-libs/tre/tre-0.8.0_p20210321.ebuild @@ -0,0 +1,112 @@ +# Copyright 1999-2022 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +COMMIT="6092368aabdd0dbb0fbceb2766a37b98e0ff6911" +PYTHON_COMPAT=( python3_{8..10} pypy3 ) + +inherit autotools distutils-r1 + +DESCRIPTION="Lightweight, robust, and efficient POSIX compliant regexp matching library" +HOMEPAGE=" + https://laurikari.net/tre/ + https://github.com/laurikari/tre +" +SRC_URI="https://github.com/laurikari/tre/archive/${COMMIT}.tar.gz -> ${P}.tar.gz" +S="${WORKDIR}/${PN}-${COMMIT}" + +LICENSE="BSD-2" +SLOT="0" +KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~mips ~ppc ~ppc64 ~riscv ~sparc ~x86 ~amd64-linux ~x86-linux ~x86-solaris" +IUSE="+agrep +alloca +approx debug nls profile python" + +RDEPEND=" + agrep? ( + !app-text/agrep + !dev-ruby/amatch + !app-misc/glimpse + ) + python? ( ${PYTHON_DEPS} ) +" +DEPEND=" + ${RDEPEND} + nls? ( sys-devel/gettext ) +" +BDEPEND="virtual/pkgconfig" + +REQUIRED_USE=" + agrep? ( approx ) + python? ( ${PYTHON_REQUIRED_USE} ) +" + +PATCHES=( + "${FILESDIR}/0.8.0-pkgcfg.patch" + "${FILESDIR}/0.8.0-CVE-2016-8559.patch" + "${FILESDIR}/${PN}-chicken.patch" + "${FILESDIR}/${PN}-issue37.patch" + "${FILESDIR}/${PN}-issue50.patch" + "${FILESDIR}/${PN}-issue55-part1.patch" + "${FILESDIR}/${PN}-issue55-part2.patch" + "${FILESDIR}/${PN}-python3.patch" + "${FILESDIR}/${PN}-tests.patch" +) + +src_prepare() { + default + eautoreconf +} + +src_configure() { + local myconf=( + --disable-static + --disable-system-abi + --enable-multibyte + --enable-wchar + $(use_enable agrep) + $(use_enable approx) + $(use_enable debug) + $(use_enable nls) + $(use_enable profile) + $(use_with alloca) + ) + econf "${myconf[@]}" +} + +src_test() { + if locale -a | grep -iq en_US.iso88591; then + emake -j1 check + else + ewarn "If you like to run the test," + ewarn "please make sure en_US.ISO-8859-1 is installed." + die "en_US.ISO-8859-1 locale is missing" + fi +} + +src_compile() { + default + if use python; then + pushd "python" || die + python_foreach_impl distutils-r1_python_compile + popd || die + fi +} + +src_install() { + local HTML_DOCS=( doc/*.{css,html} ) + + default + use python && python_foreach_impl python_install +} + +pkg_postinst() { + ewarn "app-misc/glimpse, app-text/agrep and this package all provide agrep." + ewarn "If this causes any unforeseen incompatibilities please file a bug" + ewarn "on https://bugs.gentoo.org." +} + +python_install() { + pushd "python" || die + distutils-r1_python_install + popd || die +} |