aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMaxim Cournoyer <maxim.cournoyer@gmail.com>2021-11-22 23:27:28 -0500
committerMaxim Cournoyer <maxim.cournoyer@gmail.com>2021-11-22 23:56:05 -0500
commitf42bc604547d9ee8e35fcd66d5db7786954cfac3 (patch)
tree38b7bb16f4f1b172ef2b599d07ffe84f528ba4fc
parent28c2e9642cd1eeeb2aa10856c9bf4a9dac6f0f0b (diff)
downloadguix-f42bc604547d9ee8e35fcd66d5db7786954cfac3.tar
guix-f42bc604547d9ee8e35fcd66d5db7786954cfac3.tar.gz
gnu: guile-git: Patch to support latest libgit2.
* gnu/packages/patches/guile-git-adjust-for-libgit2-1.2.0.patch: New file. * gnu/local.mk (dist_patch_DATA): Register it. * gnu/packages/guile.scm (guile-git)[source]: Use it.
-rw-r--r--gnu/local.mk1
-rw-r--r--gnu/packages/guile.scm4
-rw-r--r--gnu/packages/patches/guile-git-adjust-for-libgit2-1.2.0.patch78
3 files changed, 82 insertions, 1 deletions
diff --git a/gnu/local.mk b/gnu/local.mk
index 854b1b5d04..cf69842341 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1204,6 +1204,7 @@ dist_patch_DATA = \
%D%/packages/patches/guile-3.0-linux-syscalls.patch \
%D%/packages/patches/guile-fibers-destroy-peer-schedulers.patch \
%D%/packages/patches/guile-gdbm-ffi-support-gdbm-1.14.patch \
+ %D%/packages/patches/guile-git-adjust-for-libgit2-1.2.0.patch \
%D%/packages/patches/guile-present-coding.patch \
%D%/packages/patches/guile-rsvg-pkgconfig.patch \
%D%/packages/patches/guile-emacs-fix-configure.patch \
diff --git a/gnu/packages/guile.scm b/gnu/packages/guile.scm
index 941b718364..28887dd69f 100644
--- a/gnu/packages/guile.scm
+++ b/gnu/packages/guile.scm
@@ -792,7 +792,9 @@ type system, elevating types to first-class status.")
(file-name (git-file-name name version))
(sha256
(base32
- "11a51acibwi2hpaygmrpn6nwbr4lqalc87ihrgj3mhz6swbsk9n7"))))
+ "11a51acibwi2hpaygmrpn6nwbr4lqalc87ihrgj3mhz6swbsk9n7"))
+ (patches (search-patches
+ "guile-git-adjust-for-libgit2-1.2.0.patch"))))
(build-system gnu-build-system)
(arguments
`(#:make-flags '("GUILE_AUTO_COMPILE=0"))) ; to prevent guild warnings
diff --git a/gnu/packages/patches/guile-git-adjust-for-libgit2-1.2.0.patch b/gnu/packages/patches/guile-git-adjust-for-libgit2-1.2.0.patch
new file mode 100644
index 0000000000..436a11ad19
--- /dev/null
+++ b/gnu/packages/patches/guile-git-adjust-for-libgit2-1.2.0.patch
@@ -0,0 +1,78 @@
+diff --git a/configure.ac b/configure.ac
+index 107e6ca..20e9019 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -2,6 +2,7 @@ dnl Guile-Git --- GNU Guile bindings of libgit2
+ dnl Copyright © 2016-2018 Erik Edrosa <erik.edrosa@gmail.com>
+ dnl Copyright © 2017, 2019, 2020, 2021 Ludovic Courtès <ludo@gnu.org>
+ dnl Copyright © 2019 Mathieu Othacehe <m.othacehe@gmail.com>
++dnl Copyright © 2021 Maxim Cournoyer <maxim.cournoyer@gmail.com>
+ dnl
+ dnl This file is part of Guile-Git.
+ dnl
+@@ -43,15 +44,20 @@ AS_IF([test "x$LIBGIT2_LIBDIR" = "x"], [
+ ])
+ AC_SUBST([LIBGIT2_LIBDIR])
+
++dnl Does the 'git_remote_callbacks' struct have a 'remote_ready' field?
++dnl It was added in 1.2.0, obsoleting 'resolve_url'.
++AC_CHECK_MEMBER([git_remote_callbacks.remote_ready],
++ [HAVE_REMOTE_CALLBACKS_REMOTE_READY="#true"],
++ [HAVE_REMOTE_CALLBACKS_REMOTE_READY="#false"],
++ [[#include <git2.h>]])
++AC_SUBST([HAVE_REMOTE_CALLBACKS_REMOTE_READY])
++
+ dnl Does the 'git_remote_callbacks' struct have a 'resolve_url' field?
+ dnl It's missing in libgit2 0.28.5, added in 1.0.
+-AC_CHECK_MEMBER([git_remote_callbacks.resolve_url], [], [],
++AC_CHECK_MEMBER([git_remote_callbacks.resolve_url],
++ [HAVE_REMOTE_CALLBACKS_RESOLVE_URL="#true"],
++ [HAVE_REMOTE_CALLBACKS_RESOLVE_URL="#false"],
+ [[#include <git2.h>]])
+-if test "x$ac_cv_member_git_remote_callbacks_resolve_url" = "xyes"; then
+- HAVE_REMOTE_CALLBACKS_RESOLVE_URL="#true"
+-else
+- HAVE_REMOTE_CALLBACKS_RESOLVE_URL="#false"
+-fi
+ AC_SUBST([HAVE_REMOTE_CALLBACKS_RESOLVE_URL])
+
+ dnl Those binaries are required for ssh authentication tests.
+diff --git a/git/configuration.scm.in b/git/configuration.scm.in
+index c45f698..64c4360 100644
+--- a/git/configuration.scm.in
++++ b/git/configuration.scm.in
+@@ -19,11 +19,17 @@
+
+ (define-module (git configuration)
+ #:export (%libgit2
++ %have-remote-callbacks-remote-ready?
+ %have-remote-callbacks-resolve-url?))
+
+ (define %libgit2
+ "@LIBGIT2_LIBDIR@/libgit2")
+
++(define %have-remote-callbacks-remote-ready?
++ ;; True if the 'git_remote_callbacks' struct has a
++ ;; 'remote_ready' field.
++ @HAVE_REMOTE_CALLBACKS_REMOTE_READY@)
++
+ (define %have-remote-callbacks-resolve-url?
+ ;; True if the 'git_remote_callbacks' struct has a 'resolve_url' field.
+ @HAVE_REMOTE_CALLBACKS_RESOLVE_URL@)
+diff --git a/git/structs.scm b/git/structs.scm
+index ca51728..be3d050 100644
+--- a/git/structs.scm
++++ b/git/structs.scm
+@@ -637,6 +637,12 @@ type to 'specified for this to take effect."
+ (push-update-reference ,(bs:pointer uint8))
+ (push-negotiation ,(bs:pointer uint8))
+ (transport ,(bs:pointer uint8))
++
++ ;; Added in libgit2 1.2.0.
++ ,@(if %have-remote-callbacks-remote-ready?
++ `((remote-ready ,(bs:pointer uint8)))
++ '())
++
+ (payload ,(bs:pointer uint8))
+
+ ;; libgit2 1.0 added this field, which is missing from 0.28.5,