package init
This commit is contained in:
parent
503ce7bb81
commit
14edb952ee
36
tre-CVE-2016-8859.patch
Normal file
36
tre-CVE-2016-8859.patch
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
diff -up tre-c2f5d130c91b1696385a6ae0b5bcfd5214bcc9ca/lib/tre-match-parallel.c.CVE-2016-8859 tre-c2f5d130c91b1696385a6ae0b5bcfd5214bcc9ca/lib/tre-match-parallel.c
|
||||||
|
--- tre-c2f5d130c91b1696385a6ae0b5bcfd5214bcc9ca/lib/tre-match-parallel.c.CVE-2016-8859 2014-02-28 19:55:36.000000000 +0100
|
||||||
|
+++ tre-c2f5d130c91b1696385a6ae0b5bcfd5214bcc9ca/lib/tre-match-parallel.c 2016-11-02 22:07:41.984468354 +0100
|
||||||
|
@@ -59,6 +59,9 @@ char *alloca ();
|
||||||
|
#ifdef HAVE_MALLOC_H
|
||||||
|
#include <malloc.h>
|
||||||
|
#endif /* HAVE_MALLOC_H */
|
||||||
|
+#ifdef HAVE_STDINT_H
|
||||||
|
+#include <stdint.h>
|
||||||
|
+#endif /* HAVE_STDINT_H */
|
||||||
|
|
||||||
|
#include "tre-internal.h"
|
||||||
|
#include "tre-match-utils.h"
|
||||||
|
@@ -153,7 +156,7 @@ tre_tnfa_run_parallel(const tre_tnfa_t *
|
||||||
|
everything in a single large block from the stack frame using alloca()
|
||||||
|
or with malloc() if alloca is unavailable. */
|
||||||
|
{
|
||||||
|
- int tbytes, rbytes, pbytes, xbytes, total_bytes;
|
||||||
|
+ size_t tbytes, rbytes, pbytes, xbytes, total_bytes;
|
||||||
|
char *tmp_buf;
|
||||||
|
/* Compute the length of the block we need. */
|
||||||
|
tbytes = sizeof(*tmp_tags) * num_tags;
|
||||||
|
@@ -168,11 +171,11 @@ tre_tnfa_run_parallel(const tre_tnfa_t *
|
||||||
|
#ifdef TRE_USE_ALLOCA
|
||||||
|
buf = alloca(total_bytes);
|
||||||
|
#else /* !TRE_USE_ALLOCA */
|
||||||
|
- buf = xmalloc((unsigned)total_bytes);
|
||||||
|
+ buf = xmalloc(total_bytes);
|
||||||
|
#endif /* !TRE_USE_ALLOCA */
|
||||||
|
if (buf == NULL)
|
||||||
|
return REG_ESPACE;
|
||||||
|
- memset(buf, 0, (size_t)total_bytes);
|
||||||
|
+ memset(buf, 0, total_bytes);
|
||||||
|
|
||||||
|
/* Get the various pointers within tmp_buf (properly aligned). */
|
||||||
|
tmp_tags = (void *)buf;
|
||||||
BIN
tre-c2f5d130c91b1696385a6ae0b5bcfd5214bcc9ca.tar.gz
Normal file
BIN
tre-c2f5d130c91b1696385a6ae0b5bcfd5214bcc9ca.tar.gz
Normal file
Binary file not shown.
21
tre-chicken.patch
Normal file
21
tre-chicken.patch
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
diff -up tre-0.8.0/python/setup.py.chicken tre-0.8.0/python/setup.py
|
||||||
|
--- tre-0.8.0/python/setup.py.chicken 2009-09-20 09:51:01.000000000 +0200
|
||||||
|
+++ tre-0.8.0/python/setup.py 2009-09-20 15:43:45.000000000 +0200
|
||||||
|
@@ -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
|
||||||
|
),
|
||||||
|
],
|
||||||
12
tre-issue37.patch
Normal file
12
tre-issue37.patch
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
diff -up tre-c2f5d130c91b1696385a6ae0b5bcfd5214bcc9ca/lib/tre-parse.c.issue37 tre-c2f5d130c91b1696385a6ae0b5bcfd5214bcc9ca/lib/tre-parse.c
|
||||||
|
--- tre-c2f5d130c91b1696385a6ae0b5bcfd5214bcc9ca/lib/tre-parse.c.issue37 2014-02-28 19:55:36.000000000 +0100
|
||||||
|
+++ tre-c2f5d130c91b1696385a6ae0b5bcfd5214bcc9ca/lib/tre-parse.c 2016-11-02 21:01:51.705351218 +0100
|
||||||
|
@@ -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]))
|
||||||
12
tre-issue50.patch
Normal file
12
tre-issue50.patch
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
diff -up tre-c2f5d130c91b1696385a6ae0b5bcfd5214bcc9ca/lib/tre-parse.c.issue50 tre-c2f5d130c91b1696385a6ae0b5bcfd5214bcc9ca/lib/tre-parse.c
|
||||||
|
--- tre-c2f5d130c91b1696385a6ae0b5bcfd5214bcc9ca/lib/tre-parse.c.issue50 2019-02-23 17:36:40.940463693 +0100
|
||||||
|
+++ tre-c2f5d130c91b1696385a6ae0b5bcfd5214bcc9ca/lib/tre-parse.c 2019-02-23 18:40:41.111544430 +0100
|
||||||
|
@@ -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",
|
||||||
10
tre-ldflags.patch
Normal file
10
tre-ldflags.patch
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
diff -up tre-c2f5d130c91b1696385a6ae0b5bcfd5214bcc9ca/tre.pc.in.ldflags tre-c2f5d130c91b1696385a6ae0b5bcfd5214bcc9ca/tre.pc.in
|
||||||
|
--- tre-c2f5d130c91b1696385a6ae0b5bcfd5214bcc9ca/tre.pc.in.ldflags 2014-02-28 19:55:36.000000000 +0100
|
||||||
|
+++ tre-c2f5d130c91b1696385a6ae0b5bcfd5214bcc9ca/tre.pc.in 2015-06-08 22:55:39.316078801 +0200
|
||||||
|
@@ -6,5 +6,5 @@ includedir=@includedir@
|
||||||
|
Name: TRE
|
||||||
|
Description: TRE regexp matching library
|
||||||
|
Version: @PACKAGE_VERSION@
|
||||||
|
-Libs: -L${libdir} -ltre @LDFLAGS@ @LIBINTL@ @LIBS@
|
||||||
|
+Libs: -L${libdir} -ltre @LIBINTL@ @LIBS@
|
||||||
|
Cflags: -I${includedir} @CPPFLAGS@
|
||||||
193
tre-python3.patch
Normal file
193
tre-python3.patch
Normal file
@ -0,0 +1,193 @@
|
|||||||
|
diff -up tre-c2f5d130c91b1696385a6ae0b5bcfd5214bcc9ca/python/example.py.py3 tre-c2f5d130c91b1696385a6ae0b5bcfd5214bcc9ca/python/example.py
|
||||||
|
--- tre-c2f5d130c91b1696385a6ae0b5bcfd5214bcc9ca/python/example.py.py3 2014-02-28 19:55:36.000000000 +0100
|
||||||
|
+++ tre-c2f5d130c91b1696385a6ae0b5bcfd5214bcc9ca/python/example.py 2019-02-24 00:13:35.372854041 +0100
|
||||||
|
@@ -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])
|
||||||
|
diff -up tre-c2f5d130c91b1696385a6ae0b5bcfd5214bcc9ca/python/tre-python.c.py3 tre-c2f5d130c91b1696385a6ae0b5bcfd5214bcc9ca/python/tre-python.c
|
||||||
|
--- tre-c2f5d130c91b1696385a6ae0b5bcfd5214bcc9ca/python/tre-python.c.py3 2014-02-28 19:55:36.000000000 +0100
|
||||||
|
+++ tre-c2f5d130c91b1696385a6ae0b5bcfd5214bcc9ca/python/tre-python.c 2019-02-24 00:13:35.373854053 +0100
|
||||||
|
@@ -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;
|
||||||
|
}
|
||||||
11
tre-tests.patch
Normal file
11
tre-tests.patch
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
diff -up tre-0.7.6/tests/agrep/run-tests.sh.tests tre-0.7.6/tests/agrep/run-tests.sh
|
||||||
|
--- tre-0.7.6/tests/agrep/run-tests.sh.tests 2009-03-11 10:44:44.000000000 +0100
|
||||||
|
+++ tre-0.7.6/tests/agrep/run-tests.sh 2009-08-22 20:20:15.885084058 +0200
|
||||||
|
@@ -2,6 +2,7 @@
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
+export LD_LIBRARY_PATH=$top_builddir/lib/.libs
|
||||||
|
agrep="$top_builddir/src/agrep"
|
||||||
|
|
||||||
|
echo "$builddir $top_builddir $srcdir"
|
||||||
110
tre.spec
Normal file
110
tre.spec
Normal file
@ -0,0 +1,110 @@
|
|||||||
|
%global commit c2f5d130c91b1696385a6ae0b5bcfd5214bcc9ca
|
||||||
|
%global shortcommit %(c=%{commit}; echo ${c:0:7})
|
||||||
|
Name: tre
|
||||||
|
Version: 0.8.0
|
||||||
|
Release: 1
|
||||||
|
License: BSD
|
||||||
|
Source0: https://github.com/laurikari/tre/archive/%{commit}/tre-%{commit}.tar.gz
|
||||||
|
Patch0: %{name}-chicken.patch
|
||||||
|
Patch1: %{name}-tests.patch
|
||||||
|
Patch2: %{name}-ldflags.patch
|
||||||
|
Patch3: %{name}-CVE-2016-8859.patch
|
||||||
|
Patch4: %{name}-issue37.patch
|
||||||
|
Patch5: %{name}-issue50.patch
|
||||||
|
Patch10: %{name}-python3.patch
|
||||||
|
Summary: POSIX compatible regexp library with approximate matching
|
||||||
|
URL: http://laurikari.net/tre/
|
||||||
|
BuildRequires: gettext-devel glibc-langpack-en libtool python3-devel glibc-all-langpacks
|
||||||
|
Requires: %{name}-common = %{version}-%{release}
|
||||||
|
%description
|
||||||
|
TRE is a lightweight, robust, and efficient POSIX compatible regexp
|
||||||
|
matching library with some exciting features such as approximate
|
||||||
|
matching.
|
||||||
|
|
||||||
|
%package common
|
||||||
|
Summary: Cross-platform files for use with the tre package
|
||||||
|
BuildArch: noarch
|
||||||
|
%description common
|
||||||
|
This package contains platform-agnostic files used by the TRE
|
||||||
|
library.
|
||||||
|
|
||||||
|
%package devel
|
||||||
|
Requires: tre = %{version}-%{release}
|
||||||
|
Summary: Development files for use with the tre package
|
||||||
|
%description devel
|
||||||
|
This package contains header files and static libraries for use when
|
||||||
|
building applications which use the TRE library.
|
||||||
|
|
||||||
|
%package -n python3-%{name}
|
||||||
|
Summary: Python bindings for the tre library
|
||||||
|
%{?python_provide:%python_provide python3-tre}
|
||||||
|
%description -n python3-%{name}
|
||||||
|
This package contains the python bindings for the TRE library.
|
||||||
|
|
||||||
|
%package -n agrep
|
||||||
|
Summary: Approximate grep utility
|
||||||
|
%description -n agrep
|
||||||
|
The agrep tool is similar to the commonly used grep utility, but agrep
|
||||||
|
can be used to search for approximate matches.
|
||||||
|
The agrep tool searches text input for lines (or records separated by
|
||||||
|
strings matching arbitrary regexps) that contain an approximate, or
|
||||||
|
fuzzy, match to a specified regexp, and prints the matching lines.
|
||||||
|
Limits can be set on how many errors of each kind are allowed, or
|
||||||
|
only the best matching lines can be output.
|
||||||
|
Unlike other agrep implementations, TRE agrep allows full POSIX
|
||||||
|
regexps of any length, any number of errors, and non-uniform costs.
|
||||||
|
|
||||||
|
%prep
|
||||||
|
%setup -q -n tre-%{commit}
|
||||||
|
%patch0 -p1 -b .chicken
|
||||||
|
%patch1 -p1 -b .tests
|
||||||
|
%patch2 -p1 -b .ldflags
|
||||||
|
%patch3 -p1 -b .CVE-2016-8859
|
||||||
|
%patch4 -p1 -b .issue37
|
||||||
|
%patch5 -p1 -b .issue50
|
||||||
|
%patch10 -p1
|
||||||
|
touch ChangeLog
|
||||||
|
autoreconf -vif
|
||||||
|
|
||||||
|
%build
|
||||||
|
%configure --disable-static --disable-rpath
|
||||||
|
%{__make} %{?_smp_mflags}
|
||||||
|
pushd python
|
||||||
|
%py3_build
|
||||||
|
popd
|
||||||
|
|
||||||
|
%install
|
||||||
|
%{__make} install DESTDIR=$RPM_BUILD_ROOT
|
||||||
|
pushd python
|
||||||
|
%py3_install
|
||||||
|
popd
|
||||||
|
rm $RPM_BUILD_ROOT%{_libdir}/*.la
|
||||||
|
%find_lang %{name}
|
||||||
|
|
||||||
|
%check
|
||||||
|
%{__make} check
|
||||||
|
%ldconfig_scriptlets
|
||||||
|
|
||||||
|
%files
|
||||||
|
%{_libdir}/libtre.so.*
|
||||||
|
|
||||||
|
%files common -f %{name}.lang
|
||||||
|
%doc AUTHORS ChangeLog LICENSE NEWS README THANKS TODO
|
||||||
|
%doc doc/*.html doc/*.css
|
||||||
|
|
||||||
|
%files devel
|
||||||
|
%{_libdir}/libtre.so
|
||||||
|
%{_libdir}/pkgconfig/*
|
||||||
|
%{_includedir}/*
|
||||||
|
|
||||||
|
%files -n python3-%{name}
|
||||||
|
%attr(0755,root,root) %{python3_sitearch}/tre.cpython-%{python3_version_nodots}*-%{_arch}-linux%{_gnu}.so
|
||||||
|
%{python3_sitearch}/tre-%{version}-py%{python3_version}.egg-info
|
||||||
|
|
||||||
|
%files -n agrep
|
||||||
|
%{_bindir}/agrep
|
||||||
|
%{_mandir}/man1/agrep.1*
|
||||||
|
|
||||||
|
%changelog
|
||||||
|
* Wed May 12 2021 zhangtao <zhangtao307@huawei.com> - 0.8.0-1
|
||||||
|
- package init
|
||||||
Loading…
x
Reference in New Issue
Block a user