* 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.
		
			
				
	
	
		
			78 lines
		
	
	
	
		
			2.9 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			78 lines
		
	
	
	
		
			2.9 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
| 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,
 |