diff --git a/pkgs/by-name/gu/guile-git/0001-structs-Omit-free-field-from-config-entry-on-libgit2.patch b/pkgs/by-name/gu/guile-git/0001-structs-Omit-free-field-from-config-entry-on-libgit2.patch new file mode 100644 index 000000000000..ce3db57c0bf9 --- /dev/null +++ b/pkgs/by-name/gu/guile-git/0001-structs-Omit-free-field-from-config-entry-on-libgit2.patch @@ -0,0 +1,80 @@ +From cc70ed70b19a712babd834806d6fc700b20c020a Mon Sep 17 00:00:00 2001 +From: Emily +Date: Wed, 22 Jan 2025 23:25:51 +0000 +Subject: [PATCH 1/2] =?UTF-8?q?structs:=20Omit=20=E2=80=98free=E2=80=99=20?= + =?UTF-8?q?field=20from=20=E2=80=98%config-entry=E2=80=99=20on=20libgit2?= + =?UTF-8?q?=201.9+.?= +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +* configure.ac: Check for the ‘free’ field of ‘git_config_entry’. +* git/configuration.scm.in (%have-config-entry-free?): New variable. +* git/structs.scm (%config-entry): Omit ‘free’ field conditionally. +--- + configure.ac | 10 ++++++++++ + git/configuration.scm.in | 4 ++++ + git/structs.scm | 4 +++- + 3 files changed, 17 insertions(+), 1 deletion(-) + +diff --git a/configure.ac b/configure.ac +index b04ca6b..7f8f0b9 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -87,6 +87,16 @@ else + fi + AC_SUBST([HAVE_CONFIG_ENTRY_BACKEND_TYPE]) + ++dnl Does 'git_config_entry' have 'free'? Removed in 1.9. ++AC_CHECK_MEMBER([git_config_entry.free], [], [], ++ [[#include ]]) ++if test "x$ac_cv_member_git_config_entry_free" = "xyes"; then ++ HAVE_CONFIG_ENTRY_FREE="#true" ++else ++ HAVE_CONFIG_ENTRY_FREE="#false" ++fi ++AC_SUBST([HAVE_CONFIG_ENTRY_FREE]) ++ + dnl Does 'git_diff_options' have 'oid_type'? It's new in 1.7. + AC_CHECK_MEMBER([git_diff_options.oid_type], [], [], + [[#include ]]) +diff --git a/git/configuration.scm.in b/git/configuration.scm.in +index e10b195..864b9ff 100644 +--- a/git/configuration.scm.in ++++ b/git/configuration.scm.in +@@ -24,6 +24,7 @@ + %have-fetch-options-depth? + %have-diff-options-oid-type? + %have-config-entry-backend-type? ++ %have-config-entry-free? + %have-GIT_OPT_SET_SERVER_CONNECT_TIMEOUT? + %have-GIT_OPT_SET_HOMEDIR? + %have-GIT_OPT_SET_USER_AGENT_PRODUCT?)) +@@ -48,6 +49,9 @@ + (define %have-config-entry-backend-type? + @HAVE_CONFIG_ENTRY_BACKEND_TYPE@) + ++(define %have-config-entry-free? ++ @HAVE_CONFIG_ENTRY_FREE@) ++ + (define %have-GIT_OPT_SET_SERVER_CONNECT_TIMEOUT? + @HAVE_GIT_OPT_SET_SERVER_CONNECT_TIMEOUT@) + +diff --git a/git/structs.scm b/git/structs.scm +index beebd11..b35ae6d 100644 +--- a/git/structs.scm ++++ b/git/structs.scm +@@ -505,7 +505,9 @@ + '()) + (include-depth ,unsigned-int) + (level ,int) ;git_config_level_t +- (free ,(bs:pointer int)) ++ ,@(if %have-config-entry-free? ++ `(free ,(bs:pointer int)) ++ '()) + ,@(if %have-config-entry-backend-type? + '() + `((payload ,(bs:pointer int))))))) ;removed in 1.8 +-- +2.47.0 + diff --git a/pkgs/by-name/gu/guile-git/0002-structs-Add-update-refs-field-to-remote-callbacks-on.patch b/pkgs/by-name/gu/guile-git/0002-structs-Add-update-refs-field-to-remote-callbacks-on.patch new file mode 100644 index 000000000000..34de2004bb43 --- /dev/null +++ b/pkgs/by-name/gu/guile-git/0002-structs-Add-update-refs-field-to-remote-callbacks-on.patch @@ -0,0 +1,84 @@ +From 595b850c85f55592b94d2218a12084fd7050b508 Mon Sep 17 00:00:00 2001 +From: Emily +Date: Wed, 22 Jan 2025 23:55:45 +0000 +Subject: [PATCH 2/2] =?UTF-8?q?structs:=20Add=20=E2=80=98update-refs?= + =?UTF-8?q?=E2=80=99=20field=20to=20=E2=80=98%remote-callbacks=E2=80=99=20?= + =?UTF-8?q?on=20libgit2=201.9+.?= +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +* configure.ac: Check for the ‘update_refs’ field of +‘git_remote_callbacks’. +* git/configuration.scm.in (%have-remote-callbacks-update-refs?): New +variable. +* git/structs.scm (%remote-callbacks): Add ‘update-refs’ field +conditionally. +--- + configure.ac | 10 ++++++++++ + git/configuration.scm.in | 4 ++++ + git/structs.scm | 5 ++++- + 3 files changed, 18 insertions(+), 1 deletion(-) + +diff --git a/configure.ac b/configure.ac +index 7f8f0b9..a2575f4 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -107,6 +107,16 @@ else + fi + AC_SUBST([HAVE_DIFF_OPTIONS_OID_TYPE]) + ++dnl Does 'git_remote_callbacks' have 'update_refs'? New in 1.9. ++AC_CHECK_MEMBER([git_remote_callbacks.update_refs], [], [], ++ [[#include ]]) ++if test "x$ac_cv_member_git_remote_callbacks_update_refs" = "xyes"; then ++ HAVE_REMOTE_CALLBACKS_UPDATE_REFS="#true" ++else ++ HAVE_REMOTE_CALLBACKS_UPDATE_REFS="#false" ++fi ++AC_SUBST([HAVE_REMOTE_CALLBACKS_UPDATE_REFS]) ++ + dnl 'GIT_OPT_SET_SERVER_CONNECT_TIMEOUT' & co. are new in 1.7. + GUILE_GIT_CHECK_DECLARATION([GIT_OPT_SET_SERVER_CONNECT_TIMEOUT]) + +diff --git a/git/configuration.scm.in b/git/configuration.scm.in +index 864b9ff..1e82c24 100644 +--- a/git/configuration.scm.in ++++ b/git/configuration.scm.in +@@ -25,6 +25,7 @@ + %have-diff-options-oid-type? + %have-config-entry-backend-type? + %have-config-entry-free? ++ %have-remote-callbacks-update-refs? + %have-GIT_OPT_SET_SERVER_CONNECT_TIMEOUT? + %have-GIT_OPT_SET_HOMEDIR? + %have-GIT_OPT_SET_USER_AGENT_PRODUCT?)) +@@ -52,6 +53,9 @@ + (define %have-config-entry-free? + @HAVE_CONFIG_ENTRY_FREE@) + ++(define %have-remote-callbacks-update-refs? ++ @HAVE_REMOTE_CALLBACKS_UPDATE_REFS@) ++ + (define %have-GIT_OPT_SET_SERVER_CONNECT_TIMEOUT? + @HAVE_GIT_OPT_SET_SERVER_CONNECT_TIMEOUT@) + +diff --git a/git/structs.scm b/git/structs.scm +index b35ae6d..664a7c1 100644 +--- a/git/structs.scm ++++ b/git/structs.scm +@@ -670,7 +670,10 @@ type to 'specified for this to take effect." + (transport ,(bs:pointer uint8)) + (remote-ready ,(bs:pointer void)) + (payload ,(bs:pointer uint8)) +- (resolve-url ,(bs:pointer uint8))))) ++ (resolve-url ,(bs:pointer uint8)) ++ ,@(if %have-remote-callbacks-update-refs? ++ `((update-refs ,(bs:pointer uint8))) ++ '())))) + + (define-record-type + (%make-remote-callbacks bytestructure) +-- +2.47.0 + diff --git a/pkgs/by-name/gu/guile-git/package.nix b/pkgs/by-name/gu/guile-git/package.nix index d7ee5344530e..3765bc06f034 100644 --- a/pkgs/by-name/gu/guile-git/package.nix +++ b/pkgs/by-name/gu/guile-git/package.nix @@ -20,6 +20,11 @@ stdenv.mkDerivation rec { hash = "sha256-lFBoA1VBJRHcZkP3h2gnlXQrMjDFWS4jl9RlF8VVf/Q="; }; + patches = [ + ./0001-structs-Omit-free-field-from-config-entry-on-libgit2.patch + ./0002-structs-Add-update-refs-field-to-remote-callbacks-on.patch + ]; + strictDeps = true; nativeBuildInputs = [ autoreconfHook guile pkg-config texinfo