diff options
Diffstat (limited to 'wayland')
-rwxr-xr-x | wayland/imv/build | 3 | ||||
-rw-r--r-- | wayland/imv/checksums | 3 | ||||
-rw-r--r-- | wayland/imv/patches/support-libgrapheme.patch | 129 | ||||
-rw-r--r-- | wayland/imv/sources | 3 | ||||
-rw-r--r-- | wayland/imv/version | 2 |
5 files changed, 137 insertions, 3 deletions
diff --git a/wayland/imv/build b/wayland/imv/build index 2f31ec4b..1d28baa4 100755 --- a/wayland/imv/build +++ b/wayland/imv/build @@ -1,5 +1,7 @@ #!/bin/sh -e +patch -p1 < support-libgrapheme.patch + export DESTDIR="$1" cl-meson \ @@ -7,6 +9,7 @@ cl-meson \ -Dlibpng=enabled \ -Dlibtiff=enabled \ -Dlibrsvg="$(cpt l -C librsvg enabled disabled)" \ + -Dunicode=grapheme \ -Dwindows=wayland \ . output diff --git a/wayland/imv/checksums b/wayland/imv/checksums index 67387d90..572c61f5 100644 --- a/wayland/imv/checksums +++ b/wayland/imv/checksums @@ -1,3 +1,4 @@ %BLAKE3 -3075afde1318718b3ffd0fea0b34a47f048178abfe0ba490b4d0e52416410f1d imv-5a3d696.tar.gz +7071d65f47ef703423e22ddf8330879a146989dfa0d598a5eb231087d65dcb64 v4.3.0.tar.gz 3f3775e97c033b812a8a45c1587d6003fff54c99b64102ec366fe2e86f649e9b r52.tar.gz +2ad333e1c8f277be3961bede9696a9c111636f63a8797b17b8780a6fb4c1e483 support-libgrapheme.patch diff --git a/wayland/imv/patches/support-libgrapheme.patch b/wayland/imv/patches/support-libgrapheme.patch new file mode 100644 index 00000000..693a8921 --- /dev/null +++ b/wayland/imv/patches/support-libgrapheme.patch @@ -0,0 +1,129 @@ +From a83304d4d673aae6efed51da1986bd7315a4d642 Mon Sep 17 00:00:00 2001 +From: Cem Keylan <cem@ckyln.com> +Date: Tue, 7 Dec 2021 14:40:57 +0100 +Subject: [PATCH] Add support for libgrapheme as an icu replacement + +--- + meson.build | 11 ++++++++++- + meson_options.txt | 8 ++++++++ + src/console.c | 28 ++++++++++++++++++++++++++++ + 3 files changed, 46 insertions(+), 1 deletion(-) + +diff --git a/meson.build b/meson.build +index 7cf64b5..26ee0a1 100644 +--- a/meson.build ++++ b/meson.build +@@ -38,6 +38,15 @@ else + target_single_ws = false + endif + ++_unicode = get_option('unicode') ++if _unicode == 'icu' ++ unicode_lib = dependency('icu-io') ++ add_project_arguments('-DIMV_USE_ICU', language: 'c') ++elif _unicode == 'grapheme' ++ unicode_lib = cc.find_library('grapheme') ++ add_project_arguments('-DIMV_USE_GRAPHEME', language: 'c') ++endif ++ + gl_dep = dependency('gl', required: false) + if not gl_dep.found() + # libglvnd fallback for pure-wayland systems +@@ -49,7 +58,7 @@ deps_for_imv = [ + gl_dep, + dependency('threads'), + dependency('xkbcommon'), +- dependency('icu-io'), ++ unicode_lib, + dependency('inih', fallback : ['inih', 'inih_dep']), + m_dep, + ] +diff --git a/meson_options.txt b/meson_options.txt +index 389b7fd..c13ef7a 100644 +--- a/meson_options.txt ++++ b/meson_options.txt +@@ -8,6 +8,14 @@ option('windows', + description : 'window system to use' + ) + ++# Unicode backend - default is ICU ++option('unicode', ++ type: 'combo', ++ value: 'icu', ++ choices : ['icu', 'grapheme'], ++ description : 'unicode library to use' ++) ++ + option('test', + type : 'feature', + description : 'enable tests' +diff --git a/src/console.c b/src/console.c +index 073274f..323383f 100644 +--- a/src/console.c ++++ b/src/console.c +@@ -6,8 +6,15 @@ + #include <ctype.h> + #include <stdlib.h> + #include <string.h> ++ ++#ifdef IMV_USE_ICU + #include <unicode/utext.h> + #include <unicode/ubrk.h> ++#endif ++ ++#ifdef IMV_USE_GRAPHEME ++#include <grapheme.h> ++#endif + + struct imv_console { + char *buffer; +@@ -25,6 +32,7 @@ struct imv_console { + /* Iterates forwards over characters in a UTF-8 string */ + static size_t next_char(char *buffer, size_t position) + { ++ #if defined(IMV_USE_ICU) + size_t result = position; + UErrorCode status = U_ZERO_ERROR; + UText *ut = utext_openUTF8(NULL, buffer, -1, &status); +@@ -42,11 +50,19 @@ static size_t next_char(char *buffer, size_t position) + utext_close(ut); + assert(U_SUCCESS(status)); + return result; ++ #elif defined(IMV_USE_GRAPHEME) ++ if (buffer[position] != 0) { ++ return position + grapheme_bytelen(buffer + position); ++ } else { ++ return position; ++ } ++ #endif + } + + /* Iterates backwards over characters in a UTF-8 string */ + static size_t prev_char(char *buffer, size_t position) + { ++ #if defined(IMV_USE_ICU) + size_t result = position; + UErrorCode status = U_ZERO_ERROR; + UText *ut = utext_openUTF8(NULL, buffer, -1, &status); +@@ -64,6 +80,18 @@ static size_t prev_char(char *buffer, size_t position) + utext_close(ut); + assert(U_SUCCESS(status)); + return result; ++ ++ #elif defined(IMV_USE_GRAPHEME) ++ size_t result = 0; ++ size_t step; ++ do { ++ step = grapheme_bytelen(buffer + result); ++ if (result + step >= position) ++ break; ++ result += step; ++ } while (step > 0); ++ return result; ++ #endif + } + + static void add_to_history(struct list *history, const char *line) +-- +2.32.0 + diff --git a/wayland/imv/sources b/wayland/imv/sources index 13cfa27d..85c6a33b 100644 --- a/wayland/imv/sources +++ b/wayland/imv/sources @@ -1,2 +1,3 @@ -https://git.carbslinux.org/forks/imv/snapshot/imv-5a3d696.tar.gz +https://git.sr.ht/~exec64/imv/archive/v4.3.0.tar.gz https://github.com/benhoyt/inih/archive/r52.tar.gz subprojects/inih +patches/support-libgrapheme.patch diff --git a/wayland/imv/version b/wayland/imv/version index 1fa6c9ae..c413e251 100644 --- a/wayland/imv/version +++ b/wayland/imv/version @@ -1 +1 @@ -4.3.0 1 +4.3.0 2 |