3.7.1 bump

This commit is contained in:
Petr Písař 2019-08-16 12:08:47 +02:00
parent 245fc04929
commit ca57e0a891
14 changed files with 505 additions and 239 deletions

1
.gitignore vendored
View File

@ -1 +1,2 @@
recode-3.6.tar.gz recode-3.6.tar.gz
/recode-3.7.1.tar.gz

View File

@ -1,11 +0,0 @@
--- recode-3.6/lib/gettext.c.orig 2005-03-07 12:18:30.000000000 +0100
+++ recode-3.6/lib/gettext.c 2005-03-07 12:23:14.000000000 +0100
@@ -1668,8 +1668,6 @@
# if !defined HAVE_GETCWD
char *getwd ();
# define getcwd(buf, max) getwd (buf)
-# else
-char *getcwd ();
# endif
# ifndef HAVE_STPCPY
static char *stpcpy PARAMS ((char *dest, const char *src));

View File

@ -0,0 +1,109 @@
From 1f041f1a47cb9862bcc26dc9a2273529eb7b9e31 Mon Sep 17 00:00:00 2001
From: perl-Git-CPAN-Patch Owner <perl-Git-CPAN-Patch-owner@fedoraproject.org>
Date: Fri, 16 Aug 2019 12:43:18 +0200
Subject: [PATCH] Port other tests to Python 3
---
tests/pytest | 8 ++++----
tests/t50_methods.py | 8 ++++----
tests/t90_bigauto.py | 4 ++--
3 files changed, 10 insertions(+), 10 deletions(-)
diff --git a/tests/pytest b/tests/pytest
index 4489592..8e39d2a 100755
--- a/tests/pytest
+++ b/tests/pytest
@@ -41,7 +41,7 @@ least one such failed test, the return status of this program is non-zero.
__metaclass__ = type
import inspect, os, sys, time, traceback
-from StringIO import StringIO
+from io import StringIO
# How many displayable characters in an output line.
WIDTH = 79
@@ -155,7 +155,7 @@ class Main:
else:
text = u' ' + text
write(text + u'\n')
- except Exit, exception:
+ except Exit as exception:
if not self.verbose:
write(u'\n')
write(u'\n* %s *\n' % str(exception))
@@ -270,7 +270,7 @@ class Main:
if minimum is not None:
collection.append((minimum, name, objet, False))
elif name.startswith(u'test_') and inspect.isfunction(objet):
- code = objet.func_code
+ code = objet.__code__
collection.append((code.co_firstlineno, name, objet,
bool(code.co_flags & 32)))
if not collection:
@@ -316,7 +316,7 @@ class Main:
# FIXME: Should likely do class setup here.
try:
for counter, arguments in enumerate(function()):
- collection.append((prefix + u'/' + unicode(counter + 1),
+ collection.append((prefix + u'/' + str(counter + 1),
arguments[0], arguments[1:]))
except Skipped:
return
diff --git a/tests/t50_methods.py b/tests/t50_methods.py
index 66da2e6..f0d5b6f 100644
--- a/tests/t50_methods.py
+++ b/tests/t50_methods.py
@@ -5,7 +5,7 @@ from __main__ import py
import os, sys
input_name = '%s/../COPYING' % os.path.dirname(sys.argv[0])
-input = file(input_name, 'rb').read()
+input = open(input_name, 'rb').read()
def test_1():
@@ -65,7 +65,7 @@ def validate(request, sequence, mode):
command = ('$R --quiet --force --sequence=%s < %s %s'
'| $R --quiet --force --sequence=%s %s..%s'
% (sequence, input_name, request, sequence, after, before))
- print command
+ print(command)
output = common.external_output(command)
elif mode == 'squash':
file(common.run.work, 'wb').write(input)
@@ -74,8 +74,8 @@ def validate(request, sequence, mode):
command2 = ('$R --quiet --force --sequence=%s %s..%s %s'
% (sequence, after, before, common.run.work))
- print command1
- print command2
+ print(command1)
+ print(command2)
common.external_output(command1)
common.external_output(command2)
output = file(common.run.work, 'rb').read()
diff --git a/tests/t90_bigauto.py b/tests/t90_bigauto.py
index 861cce6..46d4cd4 100644
--- a/tests/t90_bigauto.py
+++ b/tests/t90_bigauto.py
@@ -57,7 +57,7 @@ class Test:
# consider as a single test, one "before" against all "after"s.
# However, without a Recode module, we do not know how many
# "before"s exist, and the skip count is then rather small.
- print before
+ print(before)
for after in self.charsets:
if after is not before:
request = Recode.Request(self.outer)
@@ -97,7 +97,7 @@ class Report:
line = readline()
if line:
if len(line[:-lensep].split(':', 1)) != 2:
- print '*', line,
+ print('*', line)
type, shrunk_to = line[:-lensep].split(':', 1)
if type == 'Shrunk to':
steps = self.get_steps(shrunk_to)
--
2.23.0.rc2

View File

@ -0,0 +1,40 @@
From 170857800f2a84b4cdb8fefe9a698efe5509837a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= <ppisar@redhat.com>
Date: Fri, 16 Aug 2019 09:29:54 +0200
Subject: [PATCH] Rename coliding hash functions
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Ported from Fedora recode patch:
commit 5cd1d43a39e4679ed265efcdf4bdc3da517e3de5 (tag: recode-3_6-16)
Author: Bill Nottingham <notting@fedoraproject.org>
Date: Fri May 27 02:52:25 2005 +0000
auto-import recode-3.6-16 on branch devel from recode-3.6-16.src.rpm
Signed-off-by: Petr Písař <ppisar@redhat.com>
---
lib/hash.h | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/lib/hash.h b/lib/hash.h
index 562f5e6..65d967e 100644
--- a/lib/hash.h
+++ b/lib/hash.h
@@ -24,6 +24,11 @@
#ifndef HASH_H_
# define HASH_H_
+#define hash_lookup recode_hash_lookup
+#define hash_delete recode_hash_delete
+#define hash_free recode_hash_free
+#define hash_insert recode_hash_insert
+
# include <stdio.h>
# include <stdbool.h>
--
2.21.0

View File

@ -0,0 +1,220 @@
From 98a1eff200a60d81f404b2874db24a88ee2a592f Mon Sep 17 00:00:00 2001
From: Shlomi Fish <shlomif@shlomifish.org>
Date: Tue, 25 Jun 2019 12:23:39 +0300
Subject: [PATCH] python 3 compatibility.
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
See https://github.com/rrthomas/recode/issues/15 .
Petr Pisar: Ported to 3.7.1 from py3-take2 branch of
<https://github.com/shlomif/recode>:
commit 04aefb26fa080c8e9d6ba7a136a8ae263727fba8
Author: Shlomi Fish <shlomif@shlomifish.org>
Date: Tue Jun 25 12:23:39 2019 +0300
Signed-off-by: Petr Písař <ppisar@redhat.com>
---
tables.py | 59 +++++++++++++++++++++++++++++++++++--------------------
1 file changed, 38 insertions(+), 21 deletions(-)
diff --git a/tables.py b/tables.py
index 2604dfe..51752a6 100755
--- a/tables.py
+++ b/tables.py
@@ -43,6 +43,16 @@ When `-F' and `-n' are used, process Alain's tables.
import re, sys
+def to_unicode(s):
+ import six
+ if isinstance(s, six.text_type):
+ return s
+ try:
+ s = six.text_type(s, 'utf-8')
+ except UnicodeDecodeError as err:
+ s = six.text_type(s, 'utf-8', 'ignore')
+ return s
+
# Character constants.
REPLACEMENT_CHARACTER = 0xFFFD
NOT_A_CHARACTER = 0xFFFF
@@ -127,7 +137,7 @@ class Main:
self.mnemonics = Mnemonics()
self.mnemonics.digest_mnemonics_ds(input)
break
- if input.match('Network Working Group +K\. Simonsen$'):
+ if input.match('Network Working Group +K\\. Simonsen$'):
if (self.charnames
and self.charnames.do_sources
and not French_option):
@@ -201,12 +211,15 @@ class Charnames(Options):
def digest_french(self, input):
self.preset_french()
- fold_table = range(256)
- for before, after in map(
- None,
+ fold_table = list(range(256))
+ def myord(c):
+ if isinstance(c, int):
+ return c
+ return ord(c)
+ for before, after in zip(
u'ABCDEFGHIJKLMNOPQRSTUVWXYZÀÂÇÈÉÊÎÏÑÔÖÛ'.encode('ISO-8859-1'),
u'abcdefghijklmnopqrstuvwxyzàâçèéêîïñôöû'.encode('ISO-8859-1')):
- fold_table[ord(before)] = ord(after)
+ fold_table[myord(before)] = myord(after)
folding = ''.join(map(chr, fold_table))
ignorables = (
u'<commande>'.encode('ISO-8859-1'),
@@ -314,6 +327,8 @@ class Charnames(Options):
if len(text) > self.max_length:
self.max_length = len(text)
for word in text.split():
+ word = to_unicode(word)
+ assert isinstance(word, str)
self.code_map[word] = self.code_map.get(word, 0) + 1
def presort_word(self, word):
@@ -334,18 +349,18 @@ class Charnames(Options):
# the second cycling faster from 1 to 255.
if run.verbose:
sys.stdout.write(' sorting words...')
- pairs = map(self.presort_word, self.code_map.keys())
+ pairs = list(map(self.presort_word, self.code_map.keys()))
pairs.sort()
- words = map(lambda pair: pair[1], pairs)
+ words = list(map(lambda pair: pair[1], pairs))
pairs = None
if run.verbose:
sys.stdout.write(' %d of them\n' % len(words))
count = len(words)
- singles = (255 * 255 - count) / 254
+ singles = (255 * 255 - count) // 254
# Transmit a few values for further usage by the C code.
if run.verbose:
sys.stdout.write(' sorting names...')
- ucs2_table = self.charname_map.keys()
+ ucs2_table = list(self.charname_map.keys())
ucs2_table.sort()
if run.verbose:
sys.stdout.write(' %d of them\n' % len(ucs2_table))
@@ -366,12 +381,14 @@ class Charnames(Options):
word = words[counter]
write(' %-28s/* \\%0.3o */\n'
% ('"%s",' % re.sub('"', r'\"', word), char1))
+ assert isinstance(word, str)
self.code_map[words[counter]] = char1
char1 += 1
for counter in range(singles, count):
word = words[counter]
write(' %-28s/* \\%0.3o\\%0.3o */\n'
% ('"%s",' % re.sub('"', r'\"', word, 1), char1, char2))
+ assert isinstance(word, str)
self.code_map[words[counter]] = 256 * char1 + char2
if char2 == 255:
char1 += 1
@@ -397,7 +414,7 @@ class Charnames(Options):
if code < 256:
write('\\%0.3o' % code)
else:
- write('\\%0.3o\\%0.3o' % (code / 256, code % 256))
+ write('\\%0.3o\\%0.3o' % (code // 256, code % 256))
else:
sys.stdout.write('??? %s\n' % word)
write('"},\n')
@@ -540,7 +557,7 @@ class Mnemonics(Options):
continue
if len(line) == 3:
continue
- if input.begins(' \.\.\.'):
+ if input.begins(' \\.\\.\\.'):
continue
if line == ' Presentation forms\n':
continue
@@ -667,7 +684,7 @@ class Mnemonics(Options):
'static const struct entry table[TABLE_LENGTH] =\n'
' {\n')
count = 0
- indices = self.mnemonic_map.keys()
+ indices = list(self.mnemonic_map.keys())
indices.sort()
for ucs2 in indices:
text = self.mnemonic_map[ucs2]
@@ -681,7 +698,7 @@ class Mnemonics(Options):
'static const unsigned short inverse[TABLE_LENGTH] =\n'
' {')
count = 0
- keys = inverse_map.keys()
+ keys = list(inverse_map.keys())
keys.sort()
for text in keys:
if count % 10 == 0:
@@ -744,7 +761,7 @@ class Strips(Options):
def digest_rfc1345(self, input):
self.init_write_data()
# Informal canonical order of presentation.
- CHARSET, REM, ALIAS, ESC, BITS, CODE = range(6)
+ CHARSET, REM, ALIAS, ESC, BITS, CODE = list(range(6))
charset = None
skip = False
while True:
@@ -956,7 +973,7 @@ class Strips(Options):
if input.search('\032'):
# Old MS-DOS C-z !!
break
- match = input.match('0x([0-9A-F]+)\t0x([0-9A-F]+)\t\#')
+ match = input.match('0x([0-9A-F]+)\t0x([0-9A-F]+)\t#')
if match:
self.table[int(match.group(1), 16)] = int(match.group(2), 16)
else:
@@ -1125,7 +1142,7 @@ class Strips(Options):
write = Output('fr-%s' % self.TEXINFO, noheader=True).write
else:
write = Output(self.TEXINFO, noheader=True).write
- charsets = self.remark_map.keys()
+ charsets = list(self.remark_map.keys())
charsets.sort()
for charset in charsets:
write('\n'
@@ -1161,12 +1178,12 @@ class Input:
def __init__(self, name):
self.name = name
- self.input = file(name)
+ self.input = open(name, "rb")
self.line_count = 0
sys.stdout.write("Reading %s\n" % name)
def readline(self):
- self.line = self.input.readline()
+ self.line = to_unicode(self.input.readline())
self.line_count += 1
return self.line
@@ -1184,16 +1201,16 @@ class Input:
return self.line[:len(text)] == text
def match(self, pattern):
- return re.match(pattern, self.line)
+ return re.match(pattern, to_unicode(self.line))
def search(self, pattern):
- return re.search(pattern, self.line)
+ return re.search(pattern, to_unicode(self.line))
class Output:
def __init__(self, name, noheader=False):
self.name = name
- self.write = file(name, 'w').write
+ self.write = open(name, 'w').write
sys.stdout.write("Writing %s\n" % name)
if not noheader:
self.write("""\
--
2.21.0

View File

@ -1,22 +0,0 @@
--- recode-3.6.orig/configure.in 2001-01-03 16:50:54.000000000 +0100
+++ recode-3.6/configure.in 2012-07-23 14:15:28.000000000 +0200
@@ -15,7 +15,7 @@
AM_PROG_LIBTOOL
AC_ISC_POSIX
-AM_C_PROTOTYPES
+dnl AM_C_PROTOTYPES
AC_C_CONST
AC_C_INLINE
ad_AC_PROG_FLEX
--- recode-3.6.orig/src/Makefile.am 2000-12-06 17:36:12.000000000 +0100
+++ recode-3.6/src/Makefile.am 2012-07-23 14:47:07.000000000 +0200
@@ -17,7 +17,7 @@
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
# 02111-1307, USA.
-AUTOMAKE_OPTIONS = gnits ansi2knr
+AUTOMAKE_OPTIONS = gnits
bin_PROGRAMS = recode
lib_LTLIBRARIES = librecode.la
man_MANS = recode.1

View File

@ -1,11 +0,0 @@
--- src/recodext.h.orig 2008-01-16 13:15:39.000000000 +0100
+++ src/recodext.h 2008-01-16 13:16:47.000000000 +0100
@@ -218,7 +218,7 @@
enum recode_symbol_type type : 3;
/* Non zero if this one should be ignored. */
- bool ignore : 2;
+ bool ignore : 1;
};
struct recode_surface_list

View File

@ -1,16 +0,0 @@
--- recode-3.6-orig/m4/flex.m4 2000-06-28 16:39:06.000000000 +0200
+++ recode-3.6/m4/flex.m4 2010-07-07 12:23:49.000000000 +0200
@@ -8,11 +8,8 @@
dnl Look for flex or missing, then run AC_PROG_LEX and AC_DECL_YYTEXT
AC_DEFUN(ad_AC_PROG_FLEX,
[AC_CHECK_PROGS(LEX, flex, missing)
-if test "$LEX" = missing; then
+AS_IF([test "$LEX" = missing], [
LEX="\$(top_srcdir)/$ac_aux_dir/missing flex"
LEX_OUTPUT_ROOT=lex.yy
AC_SUBST(LEX_OUTPUT_ROOT)dnl
-else
- AC_PROG_LEX
- AC_DECL_YYTEXT
-fi])
+])])

View File

@ -1,12 +0,0 @@
diff -up recode-3.6/src/names.c.printf recode-3.6/src/names.c
--- recode-3.6/src/names.c.printf 2000-12-06 20:41:29.000000000 +0100
+++ recode-3.6/src/names.c 2013-12-18 12:48:42.578052395 +0100
@@ -892,7 +892,7 @@ list_concise_charset (RECODE_OUTER outer
if (ucs2 >= 0)
printf (format, code);
else if (mnemonic || counter2 != 112)
- printf (blanks);
+ printf ("%s", blanks);
if (mnemonic)
printf (counter2 == 112 ? " %s\n" : " %-3s", mnemonic);

View File

@ -1,51 +0,0 @@
diff -u -r recode-3.6.orig/src/common.h recode-3.6/src/common.h
--- recode-3.6.orig/src/common.h 2000-06-28 20:40:15.000000000 +0200
+++ recode-3.6/src/common.h 2017-10-03 13:52:09.904644383 +0200
@@ -56,13 +56,14 @@
# define RETSIGTYPE void
#endif
-#if DIFF_HASH
-# ifdef HAVE_LIMITS_H
-# include <limits.h>
-# endif
-# ifndef CHAR_BIT
-# define CHAR_BIT 8
-# endif
+#ifdef HAVE_LIMITS_H
+# include <limits.h>
+#endif
+#ifndef CHAR_BIT
+# define CHAR_BIT 8
+#endif
+#ifndef PATH_MAX
+# define PATH_MAX 4096
#endif
/* Some systems do not define EXIT_*, even with STDC_HEADERS. */
diff -u -r recode-3.6.orig/src/main.c recode-3.6/src/main.c
--- recode-3.6.orig/src/main.c 2000-12-06 20:44:59.000000000 +0100
+++ recode-3.6/src/main.c 2017-10-03 14:32:51.274017940 +0200
@@ -847,7 +847,7 @@
for (; optind < argc; optind++)
{
const char *input_name;
- char output_name[200]; /* FIXME: dangerous limit */
+ char output_name[PATH_MAX];
FILE *file;
struct stat file_stat;
struct utimbuf file_utime;
@@ -871,7 +871,12 @@
/* FIXME: Scott Schwartz <schwartz@bio.cse.psu.edu> writes:
"There's no reason to think that that name is unique." */
-
+ // To avoid overflows, the size of the array pointed by destination (output_name)
+ // shall be long enough to contain the same C string as source
+ // (including the terminating null character).
+ if (strlen(input_name) >= PATH_MAX) {
+ error (EXIT_FAILURE, 0, "input_name reach the PATH_MAX limit");
+ }
strcpy (output_name, input_name);
#if DOSWIN_OR_OS2
for (cursor = output_name + strlen (output_name);

View File

@ -1,68 +0,0 @@
--- recode-3.6.orig/src/libiconv.c
+++ recode-3.6/src/libiconv.c
@@ -1,5 +1,5 @@
/* Conversion of files between different charsets and surfaces.
- Copyright © 1999, 2000 Free Software Foundation, Inc.
+ Copyright © 1999, 2000, 2001 Free Software Foundation, Inc.
Contributed by François Pinard <pinard@iro.umontreal.ca>, 1999,
and Bruno Haible <haible@clisp.cons.org>, 2000.
@@ -195,12 +195,17 @@
memcpy() doesn't do here, because the regions might overlap.
memmove() isn't worth it, because we rarely have to move more
than 12 bytes. */
- if (input > input_buffer && input_left > 0)
+ cursor = input_buffer;
+ if (input_left > 0)
{
- cursor = input_buffer;
- do
- *cursor++ = *input++;
- while (--input_left > 0);
+ if (input > input_buffer)
+ {
+ do
+ *cursor++ = *input++;
+ while (--input_left > 0);
+ }
+ else
+ cursor += input_left;
}
}
--- recode-3.6.orig/src/request.c
+++ recode-3.6/src/request.c
@@ -1073,7 +1073,7 @@
if (task->output.cursor + 4 >= task->output.limit)
{
RECODE_OUTER outer = task->request->outer;
- size_t old_size = task->output.limit - task->output.buffer;
+ size_t old_size = task->output.cursor - task->output.buffer;
size_t new_size = task->output.cursor + 4 - task->output.buffer;
/* FIXME: Rethink about how the error should be reported. */
--- recode-3.6.orig/src/task.c
+++ recode-3.6/src/task.c
@@ -1198,6 +1198,8 @@
else
success = transform_mere_copy (subtask);
+ task->output = subtask->output;
+
if (subtask->input.name && *subtask->input.name)
fclose (subtask->input.file);
if (subtask->output.name && *subtask->output.name)
--- recode-3.6.orig/src/hash.h
+++ recode-3.6/src/hash.h
@@ -21,6 +21,11 @@
/* Make sure USE_OBSTACK is defined to 1 if you want the allocator to use
obstacks instead of malloc, and recompile `hash.c' with same setting. */
+#define hash_lookup recode_hash_lookup
+#define hash_delete recode_hash_delete
+#define hash_free recode_hash_free
+#define hash_insert recode_hash_insert
+
#ifndef PARAMS
# if PROTOTYPES || __STDC__
# define PARAMS(Args) Args

2
recode.rpmlintrc Normal file
View File

@ -0,0 +1,2 @@
from Config import *
addFilter("spelling-error .* iconv");

View File

@ -1,84 +1,169 @@
Summary: Conversion between character sets and surfaces # Use valgrind in tests. Very slow. Some leaks in Python.
Name: recode %bcond_with recode_enables_valgrind_test
Version: 3.6 # Use Python3 for tests. Not yet fully ported.
Release: 50%{?dist} %bcond_with recode_enables_python3_test
License: GPLv2+
Url: http://recode.progiciels-bpi.ca/
Source: http://recode.progiciels-bpi.ca/archives/recode-%{version}.tar.gz
Patch0: recode.patch
Patch1: recode-3.6-getcwd.patch
Patch2: recode-bool-bitfield.patch
Patch3: recode-flex-m4.patch
Patch4: recode-automake.patch
Patch5: recode-format-security.patch
Patch6: recode-longfilename.patch
Name: recode
Version: 3.7.1
Release: 1%{?dist}
Summary: Conversion between character sets and surfaces
# COPYING: GPLv3 text
# COPYING-LIB: LGPLv2 text
# doc/recode.info: OFSFDL
# doc/recode.texi: OFSFDL
# lib/error.h: GPLv3+
# lib/strerror-override.c: GPLv3+
# lib/vasnprintf.c: GPLv3+
# src/ansellat1.l: BSD
# src/lat1asci.c: GPLv3+
# src/merged.c: BSD
# src/recode.h: LGPLv3+
# src/ucs.c: LGPLv3+
## Not in any binary package
# build-aux/bootstrap.in: MIT or GPLv3+ (bundled gnulib-modules/bootstrap)
# build-aux/compile: GPLv2+ with exceptions
# build-aux/config.guess: GPLv3+ with exceptions
# build-aux/config.rpath: FSFULLR
# build-aux/config.sub: GPLv3+ with exceptions
# build-aux/depcomp: GPLv2+ with exceptions
# build-aux/extract-trace: MIT or GPLv3+ (bundled gnulib-modules/bootstrap)
# build-aux/funclib.sh: MIT or GPLv3+ (bundled gnulib-modules/bootstrap)
# build-aux/inline-source: MIT or GPLv3+ (bundled gnulib-modules/bootstrap)
# build-aux/install-sh: MIT
# build-aux/ltmain.sh: GPLv2+ with exceptions and GPLv3+ with exceptions
# and GPLv3+
# build-aux/mdate-sh: GPLv2+ with exceptions
# build-aux/missing: GPLv2+ with exceptions
# build-aux/options-parser: MIT or GPLv3+ (bundled gnulib-modules/bootstrap)
# build-aux/texinfo.tex: GPLv3+ with exceptions
# config.rpath: FSFULLR
# configure: FSFUL and GPLv2+ with exceptions
# doc/Makefile.am: GPLv3+
# doc/Makefile.in: FSFULLR and GPLv3+
# doc/texinfo.tex: GPLv2+ with exceptions
# INSTALL: FSFAP
# ltconfig: GPLv2+ with exceptions
# Makefile.am: GPLv3+
# m4/gettext.m4: FSFULLR
# m4/gnulib-cache.m4: GPLv3+ with exceptions
# m4/libtool.m4: GPLv2+ with exceptions and FSFUL
# m4/mbstate_t.m4: FSFULLR
# m4/minmax.m4: FSFULLR
# m4/ssize_t.m4: FSFULLR
# m4/sys_stat_h.m4: FSFULLR
# tables.py: GPLv3+
# tests/Makefile.am: GPLv3+
# tests/Makefile.in: FSFULLR and GPLv3+
# tests/Recode.pyx: GPLv3+
License: GPLv3+ and LGPLv3+ and BSD and OFSFDL
URL: https://github.com/rrthomas/recode
Source: %{url}/releases/download/v%{version}/recode-%{version}.tar.gz
# Make internal hash function identifiers unique
Patch0: recode-3.7.1-Rename-coliding-hash-functions.patch
# 1/2 Adapt tests to Python3, unfinished,
# <https://github.com/rrthomas/recode/issues/15>
Patch1: recode-3.7.1-python-3-compatibility.patch
# 2/2 Adapt tests to Python3, unfinished,
# <https://github.com/rrthomas/recode/issues/15>
Patch2: recode-3.7.1-Port-other-tests-to-Python-3.patch
BuildRequires: autoconf
BuildRequires: automake
BuildRequires: coreutils
BuildRequires: gcc
BuildRequires: gettext-devel
# help2man not used
BuildRequires: make
BuildRequires: libtool BuildRequires: libtool
BuildRequires: texinfo BuildRequires: texinfo
# Tests:
%if %{with recode_enables_python3_test}
BuildRequires: python3-devel
%else
BuildRequires: python2-devel
%endif
%if %{with recode_enables_valgrind_test}
# Optional tests:
BuildRequires: valgrind
%endif
%description %description
The `recode' converts files between character sets and usages. The recode tool and library convert files between character sets and usages.
It recognizes or produces nearly 150 different character sets It recognizes or produces over 200 different character sets (or about 300 if
and is able to transliterate files between almost any pair. When exact combined with an iconv library) and transliterates files between almost any
transliteration are not possible, it may get rid of the offending pair. When exact transliteration are not possible, it gets rid of the
characters or fall back on approximations. Most RFC 1345 character sets offending characters or falls back on approximations.
are supported.
%package devel %package devel
Summary: Header files for development using recode Summary: Header files for development using recode library
# Header files are LGPLv3+
License: LGPLv3+
Requires: %{name}%{?_isa} = %{version}-%{release} Requires: %{name}%{?_isa} = %{version}-%{release}
%description devel %description devel
The `recode' library converts files between character sets and usages. This package provides deader files for recode library.
The library recognizes or produces nearly 150 different character sets
and is able to transliterate files between almost any pair. When exact
transliteration are not possible, it may get rid of the offending
characters or fall back on approximations. Most RFC 1345 character sets
are supported.
%prep %prep
%setup -q %setup -q
%patch0 -p1 %patch0 -p1
%patch1 -p1 -b .getcwd %if %{with recode_enables_python3_test}
%patch2 -p0 %patch1 -p1
%patch3 -p1 %patch2 -p1
%patch4 -p1 %endif
%patch5 -p1 autoreconf -fi
%patch6 -p1
rm m4/libtool.m4
rm acinclude.m4
%build %build
autoreconf -fiv %if %{with recode_enables_python3_test}
%configure --disable-static export PYTHON=%{__python3}
make %{?_smp_mflags} %else
export PYTHON=%{__python2}
%endif
%configure \
--without-dmalloc \
--disable-gcc-warnings \
--enable-largefile \
--enable-nls \
--disable-rpath \
--enable-shared \
--disable-static \
%if %{with recode_enables_valgrind_test}
--enable-valgrind-tests
%else
--disable-valgrind-tests
%endif
%{make_build}
%check %check
make check make check
%install %install
%makeinstall %{make_install}
%find_lang %{name} %find_lang %{name}
# remove unpackaged file from the buildroot # remove unpackaged file from the buildroot
rm -f $RPM_BUILD_ROOT%{_infodir}/dir rm -r $RPM_BUILD_ROOT%{_infodir}/dir
# remove libtool archives # remove libtool archives
rm -f $RPM_BUILD_ROOT%{_libdir}/*.la rm $RPM_BUILD_ROOT%{_libdir}/*.la
%files -f %{name}.lang %files -f %{name}.lang
%doc AUTHORS COPYING* ChangeLog NEWS README THANKS TODO %license COPYING COPYING-LIB
# Changelog is not helpful
%doc AUTHORS NEWS README THANKS TODO
%{_mandir}/*/* %{_mandir}/*/*
%{_infodir}/recode.info* %{_infodir}/recode.info*
%{_bindir}/* %{_bindir}/*
%{_libdir}/*.so.0* %{_libdir}/librecode.so.0
%{_libdir}/librecode.so.0.*
%files devel %files devel
%{_libdir}/*.so %{_libdir}/*.so
%{_includedir}/* %{_includedir}/*
%changelog %changelog
* Fri Aug 16 2019 Petr Pisar <ppisar@redhat.com> - 3.7.1-1
- 3.7.1 bump (bug #1379055)
- License changed to GPLv3+ and LGPLv3+ and BSD and OFSFDL
* Fri Jul 26 2019 Fedora Release Engineering <releng@fedoraproject.org> - 3.6-50 * Fri Jul 26 2019 Fedora Release Engineering <releng@fedoraproject.org> - 3.6-50
- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild - Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild

View File

@ -1 +1 @@
be3f40ad2e93dae5cd5f628264bf1877 recode-3.6.tar.gz SHA512 (recode-3.7.1.tar.gz) = 3cb067fb7e1b0ec89c47e7177cb172bc8253042780101f6d8cb1de7bc0873d2af217e7b04a33ac23bdb8ffd41e43eac767307c4bd8a94355c188d5013f177b04