diff options
Diffstat (limited to 'wayland/imv')
-rwxr-xr-x | wayland/imv/build | 17 | ||||
-rw-r--r-- | wayland/imv/checksums | 3 | ||||
-rw-r--r-- | wayland/imv/depends | 11 | ||||
-rw-r--r-- | wayland/imv/meta | 3 | ||||
-rw-r--r-- | wayland/imv/patches/0001-support-libgrapheme.patch | 129 | ||||
-rw-r--r-- | wayland/imv/patches/0002-console-update-libgrapheme-API-to-version-1.patch | 39 | ||||
-rw-r--r-- | wayland/imv/patches/0003-console-update-libgrapheme-API-to-version-2.0.0.patch | 38 | ||||
-rw-r--r-- | wayland/imv/sources | 2 | ||||
-rw-r--r-- | wayland/imv/version | 1 |
9 files changed, 243 insertions, 0 deletions
diff --git a/wayland/imv/build b/wayland/imv/build new file mode 100755 index 00000000..3217d9ad --- /dev/null +++ b/wayland/imv/build @@ -0,0 +1,17 @@ +#!/bin/sh -e + +export DESTDIR="$1" + +clsed '/^directory =/s/=.*/= inih/' subprojects/inih.wrap + +cl-meson \ + -Dlibjpeg=enabled \ + -Dlibpng=enabled \ + -Dlibtiff=enabled \ + -Dlibrsvg="$(cpt l -C librsvg enabled disabled)" \ + -Dunicode=grapheme \ + -Dwindows=wayland \ + . output + +ninja -C output +ninja -C output install diff --git a/wayland/imv/checksums b/wayland/imv/checksums new file mode 100644 index 00000000..b4136788 --- /dev/null +++ b/wayland/imv/checksums @@ -0,0 +1,3 @@ +%BLAKE3 +bbcc11b702ed9554ddc460f629b3ed39be0395aaf1f8d6ead2d2cb32780c4f14 v4.4.0.tar.gz +3f3775e97c033b812a8a45c1587d6003fff54c99b64102ec366fe2e86f649e9b r52.tar.gz diff --git a/wayland/imv/depends b/wayland/imv/depends new file mode 100644 index 00000000..2427b84e --- /dev/null +++ b/wayland/imv/depends @@ -0,0 +1,11 @@ +cairo +glib +libgrapheme +libjpeg-turbo +libpng +libxkbcommon +mesa +meson make +pango +tiff +wayland diff --git a/wayland/imv/meta b/wayland/imv/meta new file mode 100644 index 00000000..3850de6a --- /dev/null +++ b/wayland/imv/meta @@ -0,0 +1,3 @@ +description: Image viewer for Wayland +license: MIT +maintainer: Cem Keylan <cem@carbslinux.org> diff --git a/wayland/imv/patches/0001-support-libgrapheme.patch b/wayland/imv/patches/0001-support-libgrapheme.patch new file mode 100644 index 00000000..693a8921 --- /dev/null +++ b/wayland/imv/patches/0001-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/patches/0002-console-update-libgrapheme-API-to-version-1.patch b/wayland/imv/patches/0002-console-update-libgrapheme-API-to-version-1.patch new file mode 100644 index 00000000..d92eaef2 --- /dev/null +++ b/wayland/imv/patches/0002-console-update-libgrapheme-API-to-version-1.patch @@ -0,0 +1,39 @@ +From 3e76c68e6de460e0b49402962eee47555e2711ce Mon Sep 17 00:00:00 2001 +From: Cem Keylan <cem@ckyln.com> +Date: Wed, 22 Dec 2021 18:45:43 +0100 +Subject: [PATCH imv] console: update libgrapheme API to version 1 + +--- +libgrapheme has recently seen its first release, along with some API +changes. I have updated the functions to match the current API. The +dedicated page for the library is now on +<https://libs.suckless.org/libgrapheme>. + + src/console.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/src/console.c b/src/console.c +index 323383f..9db18e7 100644 +--- a/src/console.c ++++ b/src/console.c +@@ -52,7 +52,7 @@ static size_t next_char(char *buffer, size_t position) + return result; + #elif defined(IMV_USE_GRAPHEME) + if (buffer[position] != 0) { +- return position + grapheme_bytelen(buffer + position); ++ return position + grapheme_next_character_break(buffer + position, SIZE_MAX); + } else { + return position; + } +@@ -85,7 +85,7 @@ static size_t prev_char(char *buffer, size_t position) + size_t result = 0; + size_t step; + do { +- step = grapheme_bytelen(buffer + result); ++ step = grapheme_next_character_break(buffer + result, SIZE_MAX); + if (result + step >= position) + break; + result += step; +-- +2.34.1 + diff --git a/wayland/imv/patches/0003-console-update-libgrapheme-API-to-version-2.0.0.patch b/wayland/imv/patches/0003-console-update-libgrapheme-API-to-version-2.0.0.patch new file mode 100644 index 00000000..3afdf52d --- /dev/null +++ b/wayland/imv/patches/0003-console-update-libgrapheme-API-to-version-2.0.0.patch @@ -0,0 +1,38 @@ +From 10ddb6571e811be121ed62d5725ddaf40e3923dc Mon Sep 17 00:00:00 2001 +From: Cem Keylan <cem@ckyln.com> +Date: Fri, 7 Oct 2022 13:03:15 +0200 +Subject: [PATCH] console: update libgrapheme API to version 2.0.0 + +libgrapheme recently saw its second major version which was "refactored +for correctness and conformance"[1]. + +[1]: http://lists.suckless.org/news/2210/0036.html +--- + src/console.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/src/console.c b/src/console.c +index 9db18e7..22803e1 100644 +--- a/src/console.c ++++ b/src/console.c +@@ -52,7 +52,7 @@ static size_t next_char(char *buffer, size_t position) + return result; + #elif defined(IMV_USE_GRAPHEME) + if (buffer[position] != 0) { +- return position + grapheme_next_character_break(buffer + position, SIZE_MAX); ++ return position + grapheme_next_character_break_utf8(buffer + position, SIZE_MAX); + } else { + return position; + } +@@ -85,7 +85,7 @@ static size_t prev_char(char *buffer, size_t position) + size_t result = 0; + size_t step; + do { +- step = grapheme_next_character_break(buffer + result, SIZE_MAX); ++ step = grapheme_next_character_break_utf8(buffer + result, SIZE_MAX); + if (result + step >= position) + break; + result += step; +-- +2.38.0 + diff --git a/wayland/imv/sources b/wayland/imv/sources new file mode 100644 index 00000000..267de77d --- /dev/null +++ b/wayland/imv/sources @@ -0,0 +1,2 @@ +https://git.sr.ht/~exec64/imv/archive/v4.4.0.tar.gz +https://github.com/benhoyt/inih/archive/r52.tar.gz subprojects/inih diff --git a/wayland/imv/version b/wayland/imv/version new file mode 100644 index 00000000..2ee55c7f --- /dev/null +++ b/wayland/imv/version @@ -0,0 +1 @@ +4.4.0 1 |