[packages/calibre] upstream patch for fixing build with icu >= 68

atler atler at pld-linux.org
Sat Aug 14 22:17:37 CEST 2021


commit a117af9743dff7996d0c5e8dfd03f2528dcc0464
Author: Jan Palus <atler at pld-linux.org>
Date:   Sat Aug 14 22:16:38 2021 +0200

    upstream patch for fixing build with icu >= 68

 calibre.spec |   2 +
 icu68.patch  | 119 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 121 insertions(+)
---
diff --git a/calibre.spec b/calibre.spec
index 9d18245..a5a2df2 100644
--- a/calibre.spec
+++ b/calibre.spec
@@ -24,6 +24,7 @@ Patch1:		%{name}-locales.patch
 Patch2:		shebang-python-fix.patch
 Patch3:		desktop-integration.patch
 Patch4:		%{name}-env_module.patch
+Patch5:		icu68.patch
 %define		baeutifulsoup_ver 3.0.5
 %define		pil_ver 1.1.6
 %define		pyqt5_ver 5.3.1
@@ -186,6 +187,7 @@ Pakiet ten dostarcza uzupełnianie nazw dla calibre w powłoce zsh.
 %patch2 -p1
 %patch3 -p1
 %patch4 -p1
+%patch5 -p1
 
 # 64bit target build fix
 %{__sed} -i -e "s!'/usr/lib'!'%{_libdir}'!g" setup/build_environment.py
diff --git a/icu68.patch b/icu68.patch
new file mode 100644
index 0000000..61cee29
--- /dev/null
+++ b/icu68.patch
@@ -0,0 +1,119 @@
+From ca0aa5f6960c09e5cf5cb20249f895628fd97449 Mon Sep 17 00:00:00 2001
+From: Heiko Becker <heirecka at exherbo.org>
+Date: Sat, 5 Dec 2020 11:30:42 +0100
+Subject: [PATCH] Fix build with ICU >= 68
+
+ICU stopped defining the macros FALSE and TRUE in its headers with 68:
+https://github.com/unicode-org/icu/commit/c3fe7e09d844
+---
+ src/calibre/utils/icu.c     |  6 ++++--
+ src/calibre/utils/matcher.c | 18 ++++++++----------
+ 2 files changed, 12 insertions(+), 12 deletions(-)
+
+diff --git a/src/calibre/utils/icu.c b/src/calibre/utils/icu.c
+index 62d05de3101..36902dbdd25 100644
+--- a/src/calibre/utils/icu.c
++++ b/src/calibre/utils/icu.c
+@@ -1,5 +1,7 @@
+ #include "icu_calibre_utils.h"
+ 
++#include <stdbool.h>
++
+ #define UPPER_CASE 0
+ #define LOWER_CASE 1
+ #define TITLE_CASE 2
+@@ -238,14 +240,14 @@ icu_Collator_contains(icu_Collator *self, PyObject *args) {
+ 
+     a = python_to_icu(a_, &asz);
+     if (a == NULL) goto end;
+-    if (asz == 0) { found = TRUE; goto end; }
++    if (asz == 0) { found = true; goto end; }
+     b = python_to_icu(b_, &bsz);
+     if (b == NULL) goto end;
+ 
+     search = usearch_openFromCollator(a, asz, b, bsz, self->collator, NULL, &status);
+     if (U_SUCCESS(status)) {
+         pos = usearch_first(search, &status);
+-        if (pos != USEARCH_DONE) found = TRUE;
++        if (pos != USEARCH_DONE) found = true;
+     }
+ end:
+     if (search != NULL) usearch_close(search);
+diff --git a/src/calibre/utils/matcher.c b/src/calibre/utils/matcher.c
+index f38a7082cee..72715cc0ae3 100644
+--- a/src/calibre/utils/matcher.c
++++ b/src/calibre/utils/matcher.c
+@@ -9,15 +9,13 @@
+ #define NO_PYTHON_TO_ICU32
+ #include "icu_calibre_utils.h"
+ #include <float.h>
++#include <stdbool.h>
+ 
+ #ifdef _MSC_VER
+ // inline does not work with the visual studio C compiler
+ #define inline
+ #endif
+ 
+-typedef unsigned char bool;
+-#define TRUE 1
+-#define FALSE 0
+ #define MAX(x, y) ((x > y) ? x : y)
+ #define nullfree(x) if(x != NULL) free(x); x = NULL;
+ 
+@@ -240,10 +238,10 @@ static bool create_searches(UStringSearch **searches, UChar *haystack, int32_t h
+         U16_FWD_1(needle, i, needle_len);
+         if (pos == i) break;
+         searches[pos] = usearch_openFromCollator(needle + pos, i - pos, haystack, haystack_len, collator, NULL, &status);
+-        if (U_FAILURE(status)) { PyErr_SetString(PyExc_ValueError, u_errorName(status)); searches[pos] = NULL; return FALSE; }
++        if (U_FAILURE(status)) { PyErr_SetString(PyExc_ValueError, u_errorName(status)); searches[pos] = NULL; return false; }
+     }
+ 
+-    return TRUE;
++    return true;
+ }
+ 
+ static void free_searches(UStringSearch **searches, int32_t count) {
+@@ -259,14 +257,14 @@ static bool match(UChar **items, int32_t *item_lengths, uint32_t item_count, UCh
+     int32_t i = 0, maxhl = 0;
+     int32_t r = 0, *positions = NULL;
+     MatchInfo *matches = NULL;
+-    bool ok = FALSE;
++    bool ok = false;
+     MemoryItem ***memo = NULL;
+     int32_t needle_len = u_strlen(needle);
+     UStringSearch **searches = NULL;
+ 
+     if (needle_len <= 0 || item_count <= 0) {
+         for (i = 0; i < (int32_t)item_count; i++) match_results[i].score = 0.0;
+-        ok = TRUE;
++        ok = true;
+         goto end;
+     }
+ 
+@@ -289,7 +287,7 @@ static bool match(UChar **items, int32_t *item_lengths, uint32_t item_count, UCh
+ 
+     if (maxhl <= 0) {
+         for (i = 0; i < (int32_t)item_count; i++) match_results[i].score = 0.0;
+-        ok = TRUE;
++        ok = true;
+         goto end;
+     }
+ 
+@@ -308,7 +306,7 @@ static bool match(UChar **items, int32_t *item_lengths, uint32_t item_count, UCh
+         convert_positions(positions, final_positions + i * needle_char_len, matches[i].haystack, needle_char_len, needle_len, match_results[i].score);
+     }
+ 
+-    ok = TRUE;
++    ok = true;
+ end:
+     nullfree(positions);
+     nullfree(stack.items);
+@@ -401,7 +399,7 @@ static PyObject *
+ Matcher_calculate_scores(Matcher *self, PyObject *args) {
+     int32_t *final_positions = NULL, *p;
+     Match *matches = NULL;
+-    bool ok = FALSE;
++    bool ok = false;
+     uint32_t i = 0, needle_char_len = 0, j = 0;
+     PyObject *items = NULL, *score = NULL, *positions = NULL, *pneedle = NULL;
+     UChar *needle = NULL;
================================================================

---- gitweb:

http://git.pld-linux.org/gitweb.cgi/packages/calibre.git/commitdiff/a117af9743dff7996d0c5e8dfd03f2528dcc0464



More information about the pld-cvs-commit mailing list