@@ -0,0 +1,121 @@
|
||||
From 5d9f1bc6d010e6b4c6a21af8a39b90922f89a82c Mon Sep 17 00:00:00 2001
|
||||
From: Colomban Wendling <ban@herbesfolles.org>
|
||||
Date: Sun, 5 Jun 2022 23:22:59 +0200
|
||||
Subject: [PATCH] git-changebar: Add support for libgit2 1.4
|
||||
|
||||
The buffer API changed a lot in libgit2 1.4, so compatibility is a bit
|
||||
nastier than one could hope for.
|
||||
|
||||
Fixes #1164.
|
||||
---
|
||||
git-changebar/src/gcb-plugin.c | 76 ++++++++++++++++++++++++----------
|
||||
1 file changed, 54 insertions(+), 22 deletions(-)
|
||||
|
||||
diff --git a/git-changebar/src/gcb-plugin.c b/git-changebar/src/gcb-plugin.c
|
||||
index bee8c865c..76208cd00 100644
|
||||
--- a/git-changebar/src/gcb-plugin.c
|
||||
+++ b/git-changebar/src/gcb-plugin.c
|
||||
@@ -219,30 +219,19 @@ static const struct {
|
||||
};
|
||||
|
||||
|
||||
-/* workaround https://github.com/libgit2/libgit2/pull/3187 */
|
||||
-static int
|
||||
-gcb_git_buf_grow (git_buf *buf,
|
||||
- size_t target_size)
|
||||
-{
|
||||
- if (buf->asize == 0) {
|
||||
- if (target_size == 0) {
|
||||
- target_size = buf->size;
|
||||
- }
|
||||
- if ((target_size & 7) == 0) {
|
||||
- target_size++;
|
||||
- }
|
||||
- }
|
||||
- return git_buf_grow (buf, target_size);
|
||||
-}
|
||||
-#define git_buf_grow gcb_git_buf_grow
|
||||
-
|
||||
static void
|
||||
buf_zero (git_buf *buf)
|
||||
{
|
||||
if (buf) {
|
||||
buf->ptr = NULL;
|
||||
buf->size = 0;
|
||||
+#if ! CHECK_LIBGIT2_VERSION(1, 4)
|
||||
buf->asize = 0;
|
||||
+#else
|
||||
+ /* we don't really need this field, but the documentation states that all
|
||||
+ * fields should be set to 0, so fill it as well */
|
||||
+ buf->reserved = 0;
|
||||
+#endif
|
||||
}
|
||||
}
|
||||
|
||||
@@ -256,6 +245,52 @@ clear_cached_blob_contents (void)
|
||||
G_blob_contents_tag = 0;
|
||||
}
|
||||
|
||||
+/* similar to old git_blob_filtered_content() but makes sure the caller owns
|
||||
+ * the data in the output buffer -- and uses a boolean return */
|
||||
+static gboolean
|
||||
+get_blob_contents (git_buf *out,
|
||||
+ git_blob *blob,
|
||||
+ const char *as_path,
|
||||
+ int check_for_binary_data)
|
||||
+{
|
||||
+/* libgit2 1.4 changed buffer API quite a bit */
|
||||
+#if ! CHECK_LIBGIT2_VERSION(1, 4)
|
||||
+ gboolean success = TRUE;
|
||||
+
|
||||
+ if (git_blob_filtered_content (out, blob, as_path,
|
||||
+ check_for_binary_data) != 0)
|
||||
+ return FALSE;
|
||||
+
|
||||
+ /* Workaround for https://github.com/libgit2/libgit2/pull/3187
|
||||
+ * We want to own the buffer, which git_buf_grow(buf, 0) was supposed to do,
|
||||
+ * but there is a corner case where it doesn't do what it should and
|
||||
+ * truncates the buffer contents, so we fix this manually. */
|
||||
+ if (out->asize == 0) {
|
||||
+ size_t target_size = out->size;
|
||||
+ if ((target_size & 7) == 0) {
|
||||
+ target_size++;
|
||||
+ }
|
||||
+ success = (git_buf_grow (out, target_size) == 0);
|
||||
+ }
|
||||
+
|
||||
+ return success;
|
||||
+#else /* libgit2 >= 1.4 */
|
||||
+ /* Here we can assume we will always get a buffer we own (at least as of
|
||||
+ * 2022-06-05 it is the case), so there's no need for a pendent to the
|
||||
+ * previous git_buf_grow() shenanigans.
|
||||
+ * This code path does the same as the older git_blob_filtered_content()
|
||||
+ * but with non-deprecated API */
|
||||
+ git_blob_filter_options opts = GIT_BLOB_FILTER_OPTIONS_INIT;
|
||||
+
|
||||
+ if (check_for_binary_data)
|
||||
+ opts.flags |= GIT_BLOB_FILTER_CHECK_FOR_BINARY;
|
||||
+ else
|
||||
+ opts.flags &= ~GIT_BLOB_FILTER_CHECK_FOR_BINARY;
|
||||
+
|
||||
+ return git_blob_filter(out, blob, as_path, &opts) == 0;
|
||||
+#endif
|
||||
+}
|
||||
+
|
||||
/* get the file blob for @relpath at HEAD */
|
||||
static gboolean
|
||||
repo_get_file_blob_contents (git_repository *repo,
|
||||
@@ -279,11 +314,8 @@ repo_get_file_blob_contents (git_repository *repo,
|
||||
git_blob *blob;
|
||||
|
||||
if (git_blob_lookup (&blob, repo, git_tree_entry_id (entry)) == 0) {
|
||||
- if (git_blob_filtered_content (contents, blob, relpath,
|
||||
- check_for_binary_data) == 0 &&
|
||||
- git_buf_grow (contents, 0) == 0) {
|
||||
- success = TRUE;
|
||||
- }
|
||||
+ success = get_blob_contents (contents, blob, relpath,
|
||||
+ check_for_binary_data);
|
||||
git_blob_free (blob);
|
||||
}
|
||||
git_tree_entry_free (entry);
|
||||
@@ -0,0 +1,46 @@
|
||||
From 668f5d07eef16e227402eab09141c738b315d94b Mon Sep 17 00:00:00 2001
|
||||
From: Colomban Wendling <ban@herbesfolles.org>
|
||||
Date: Sun, 5 Jun 2022 23:11:20 +0200
|
||||
Subject: [PATCH] git-changebar: Simplify libgit2 version checks
|
||||
|
||||
Introduce a custom macro for libgit2 version checks for them to be both
|
||||
easier to read and write.
|
||||
---
|
||||
git-changebar/src/gcb-plugin.c | 14 +++++++++++---
|
||||
1 file changed, 11 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/git-changebar/src/gcb-plugin.c b/git-changebar/src/gcb-plugin.c
|
||||
index f8ce20cd6..bee8c865c 100644
|
||||
--- a/git-changebar/src/gcb-plugin.c
|
||||
+++ b/git-changebar/src/gcb-plugin.c
|
||||
@@ -32,11 +32,19 @@
|
||||
#include <geany.h>
|
||||
#include <document.h>
|
||||
|
||||
-#if ! defined (LIBGIT2_VER_MINOR) || ( (LIBGIT2_VER_MAJOR == 0) && (LIBGIT2_VER_MINOR < 22) )
|
||||
+#ifdef LIBGIT2_VER_MINOR
|
||||
+# define CHECK_LIBGIT2_VERSION(MAJOR, MINOR) \
|
||||
+ ((LIBGIT2_VER_MAJOR == (MAJOR) && LIBGIT2_VER_MINOR >= (MINOR)) || \
|
||||
+ LIBGIT2_VER_MAJOR > (MAJOR))
|
||||
+#else /* ! defined(LIBGIT2_VER_MINOR) */
|
||||
+# define CHECK_LIBGIT2_VERSION(MAJOR, MINOR) 0
|
||||
+#endif
|
||||
+
|
||||
+#if ! CHECK_LIBGIT2_VERSION(0, 22)
|
||||
# define git_libgit2_init git_threads_init
|
||||
# define git_libgit2_shutdown git_threads_shutdown
|
||||
#endif
|
||||
-#if ! defined (LIBGIT2_VER_MINOR) || ( (LIBGIT2_VER_MAJOR == 0) && (LIBGIT2_VER_MINOR < 23) )
|
||||
+#if ! CHECK_LIBGIT2_VERSION(0, 23)
|
||||
/* 0.23 added @p binary_cb */
|
||||
# define git_diff_buffers(old_buffer, old_len, old_as_path, \
|
||||
new_buffer, new_len, new_as_path, options, \
|
||||
@@ -45,7 +53,7 @@
|
||||
new_buffer, new_len, new_as_path, options, \
|
||||
file_cb, hunk_cb, line_cb, payload)
|
||||
#endif
|
||||
-#if ! defined (LIBGIT2_VER_MINOR) || ( (LIBGIT2_VER_MAJOR == 0) && (LIBGIT2_VER_MINOR < 28) )
|
||||
+#if ! CHECK_LIBGIT2_VERSION(0, 28)
|
||||
# define git_buf_dispose git_buf_free
|
||||
# define git_error_last giterr_last
|
||||
#endif
|
||||
@@ -36,6 +36,8 @@
|
||||
<Dependency>webkit2gtk-devel</Dependency>
|
||||
</BuildDependencies>
|
||||
<Patches>
|
||||
<Patch level="1">Add_support_for_libgit2_1_4.patch</Patch>
|
||||
<Patch level="1">Simplify_libgit2_version_checks.patch</Patch>
|
||||
<!-- <Patch level="1">missing.patch</Patch> -->
|
||||
</Patches>
|
||||
</Source>
|
||||
@@ -77,7 +79,7 @@
|
||||
|
||||
<History>
|
||||
<Update release="8">
|
||||
<Date>2021-10-15</Date>
|
||||
<Date>2022-10-07</Date>
|
||||
<Version>1.38</Version>
|
||||
<Comment>Version bump.</Comment>
|
||||
<Name>fury</Name>
|
||||
|
||||
@@ -40,7 +40,7 @@
|
||||
<Dependency>pulseaudio-libs-devel</Dependency>
|
||||
<Dependency>lz4-devel</Dependency>
|
||||
<!--Dependency>qt5-wayland-devel</Dependency>
|
||||
<Dependency>kwayland-devel</Dependency-->
|
||||
<Dependency>kwayland-devel</Dependency-->
|
||||
<Dependency>libtg_owt-devel</Dependency>
|
||||
<Dependency>xcb-util-keysyms-devel</Dependency>
|
||||
<Dependency>jemalloc-devel</Dependency>
|
||||
@@ -50,7 +50,7 @@
|
||||
<Dependency>llvm-clang-devel</Dependency>
|
||||
<Dependency>abseil-cpp-devel</Dependency>
|
||||
<Dependency>pipewire-devel</Dependency>
|
||||
<Dependency>kcoreaddons-devel</Dependency>
|
||||
<Dependency>kcoreaddons-devel</Dependency>
|
||||
</BuildDependencies>
|
||||
<Patches>
|
||||
<!-- <Patch level="1">tdesktop.patch</Patch> -->
|
||||
@@ -79,6 +79,7 @@
|
||||
<Dependency>qt5-base</Dependency>
|
||||
<Dependency>libtg_owt</Dependency>
|
||||
<Dependency>gdk-pixbuf</Dependency>
|
||||
<Dependency>kcoreaddons</Dependency>
|
||||
<Dependency>libjpeg-turbo</Dependency>
|
||||
<Dependency>qt5-imageformats</Dependency>
|
||||
<Dependency>libdbusmenu-qt</Dependency>
|
||||
@@ -94,9 +95,9 @@
|
||||
<Dependency>libsigc++</Dependency>
|
||||
<Dependency>libXdamage</Dependency>
|
||||
<Dependency>libXcomposite</Dependency>
|
||||
<Dependency>jemalloc</Dependency>
|
||||
<Dependency>abseil-cpp</Dependency>
|
||||
<Dependency>pipewire</Dependency>
|
||||
<Dependency>jemalloc</Dependency>
|
||||
<Dependency>abseil-cpp</Dependency>
|
||||
<Dependency>pipewire</Dependency>
|
||||
</RuntimeDependencies>
|
||||
<Files>
|
||||
<Path fileType="executable">/usr/bin</Path>
|
||||
|
||||
@@ -14,8 +14,8 @@
|
||||
<Description>
|
||||
MuPDF is a lightweight open source software framework for viewing and converting PDF, XPS, and E-book documents.
|
||||
</Description>
|
||||
<Archive sha1sum="8e34f541742e0eaedc3034c7d6d9b732cec4c465" type="targz">
|
||||
https://mupdf.com/downloads/archive/mupdf-1.20.0-source.tar.gz
|
||||
<Archive sha1sum="c516b7f0799ac9975969025edaa1386bfbef1f13" type="targz">
|
||||
https://mupdf.com/downloads/archive/mupdf-1.20.3-source.tar.gz
|
||||
</Archive>
|
||||
<BuildDependencies>
|
||||
<Dependency>zlib-devel</Dependency>
|
||||
@@ -90,6 +90,13 @@
|
||||
</Package>
|
||||
|
||||
<History>
|
||||
<Update release="12">
|
||||
<Date>2022-10-07</Date>
|
||||
<Version>1.20.3</Version>
|
||||
<Comment>Version bump.</Comment>
|
||||
<Name>fury</Name>
|
||||
<Email>uglyside@yandex.ru</Email>
|
||||
</Update>
|
||||
<Update release="11">
|
||||
<Date>2022-07-06</Date>
|
||||
<Version>1.20.0</Version>
|
||||
|
||||
Reference in New Issue
Block a user