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 dnl Copyright © 2017, 2019, 2020, 2021 Ludovic Courtès dnl Copyright © 2019 Mathieu Othacehe +dnl Copyright © 2021 Maxim Cournoyer 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 ]]) +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 ]]) -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,