unofficial mirror of guix-patches@gnu.org 
 help / color / mirror / code / Atom feed
* [bug#27893] [PATCH] gnu: julia: Work around some test failures related to libgit2.
@ 2017-08-01  0:14 Leo Famulari
  2017-08-01  9:46 ` Ludovic Courtès
  0 siblings, 1 reply; 5+ messages in thread
From: Leo Famulari @ 2017-08-01  0:14 UTC (permalink / raw)
  To: 27893

* gnu/packages/version-control.scm (libgit2-0.25): New variable.
* gnu/packages/julia.scm (julia)[inputs]: Replace LIBGIT2 with LIBGIT2-0.25.
* gnu/packages/patches/libgit2-use-after-free.patch: New file.
* gnu/local.mk (dist_patch_DATA): Add it.
---
 gnu/local.mk                                      |  1 +
 gnu/packages/julia.scm                            |  2 +-
 gnu/packages/patches/libgit2-use-after-free.patch | 24 +++++++++++++++++++++++
 gnu/packages/version-control.scm                  | 16 +++++++++++++++
 4 files changed, 42 insertions(+), 1 deletion(-)
 create mode 100644 gnu/packages/patches/libgit2-use-after-free.patch

diff --git a/gnu/local.mk b/gnu/local.mk
index 3fb8f168d..df8252b16 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -754,6 +754,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/libevent-2.1-dns-tests.patch		\
   %D%/packages/patches/libevent-2.1-skip-failing-test.patch	\
   %D%/packages/patches/libgit2-0.25.1-mtime-0.patch		\
+  %D%/packages/patches/libgit2-use-after-free.patch		\
   %D%/packages/patches/libgdata-fix-tests.patch			\
   %D%/packages/patches/libgdata-glib-duplicate-tests.patch	\
   %D%/packages/patches/libjxr-fix-function-signature.patch	\
diff --git a/gnu/packages/julia.scm b/gnu/packages/julia.scm
index f6df2817d..dd8ebce77 100644
--- a/gnu/packages/julia.scm
+++ b/gnu/packages/julia.scm
@@ -310,7 +310,7 @@
        ("libunwind" ,libunwind-for-julia)
        ("openlibm" ,openlibm)
        ("openspecfun" ,openspecfun)
-       ("libgit2" ,libgit2)
+       ("libgit2" ,libgit2-0.25) ; XXX Julia's libgit2 tests fail with libgit 0.26.0.
        ("fftw" ,fftw)
        ("fftwf" ,fftwf)
        ("fortran" ,gfortran)
diff --git a/gnu/packages/patches/libgit2-use-after-free.patch b/gnu/packages/patches/libgit2-use-after-free.patch
new file mode 100644
index 000000000..580af8781
--- /dev/null
+++ b/gnu/packages/patches/libgit2-use-after-free.patch
@@ -0,0 +1,24 @@
+This patch is taken from <https://github.com/libgit2/libgit2/pull/4122>;
+we need it to fix the use-after-free error in 'git_commit_extract_signature'
+reported at <https://github.com/libgit2/libgit2/issues/4118>.
+
+From ade0d9c658fdfc68d8046935f6908f033fe7a529 Mon Sep 17 00:00:00 2001
+From: Patrick Steinhardt <ps@pks.im>
+Date: Mon, 13 Feb 2017 13:46:17 +0100
+Subject: [PATCH 3/3] commit: avoid possible use-after-free
+
+diff --git a/src/commit.c b/src/commit.c
+index 89a4db1..05b70a9 100644
+--- a/src/commit.c
++++ b/src/commit.c
+@@ -766,8 +766,9 @@ int git_commit_extract_signature(git_buf *signature, git_buf *signed_data, git_r
+ 		if (git_buf_oom(signature))
+ 			goto oom;
+ 
++		error = git_buf_puts(signed_data, eol+1);
+ 		git_odb_object_free(obj);
+-		return git_buf_puts(signed_data, eol+1);
++		return error;
+ 	}
+ 
+ 	giterr_set(GITERR_OBJECT, "this commit is not signed");
diff --git a/gnu/packages/version-control.scm b/gnu/packages/version-control.scm
index 9667b2f3e..a161a9662 100644
--- a/gnu/packages/version-control.scm
+++ b/gnu/packages/version-control.scm
@@ -380,6 +380,22 @@ write native speed custom Git applications in any language with bindings.")
     ;; GPLv2 with linking exception
     (license license:gpl2)))
 
+(define-public libgit2-0.25
+  (package
+    (inherit libgit2)
+    (name "libgit2")
+    (version "0.25.1")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "https://github.com/libgit2/libgit2/"
+                                  "archive/v" version ".tar.gz"))
+              (file-name (string-append name "-" version ".tar.gz"))
+              (sha256
+               (base32
+                "1cdwcw38frc1wf28x5ppddazv9hywc718j92f3xa3ybzzycyds3s"))
+              (patches (search-patches "libgit2-use-after-free.patch"
+                                       "libgit2-0.25.1-mtime-0.patch"))))))
+
 (define-public git-crypt
   (package
     (name "git-crypt")
-- 
2.13.3

^ permalink raw reply related	[flat|nested] 5+ messages in thread

* [bug#27893] [PATCH] gnu: julia: Work around some test failures related to libgit2.
  2017-08-01  0:14 [bug#27893] [PATCH] gnu: julia: Work around some test failures related to libgit2 Leo Famulari
@ 2017-08-01  9:46 ` Ludovic Courtès
  2017-08-01 20:31   ` Leo Famulari
  2018-03-07 14:03   ` bug#27893: " Ludovic Courtès
  0 siblings, 2 replies; 5+ messages in thread
From: Ludovic Courtès @ 2017-08-01  9:46 UTC (permalink / raw)
  To: Leo Famulari; +Cc: 27893

[-- Attachment #1: Type: text/plain, Size: 485 bytes --]

Hi Leo,

Leo Famulari <leo@famulari.name> skribis:

> * gnu/packages/version-control.scm (libgit2-0.25): New variable.
> * gnu/packages/julia.scm (julia)[inputs]: Replace LIBGIT2 with LIBGIT2-0.25.
> * gnu/packages/patches/libgit2-use-after-free.patch: New file.
> * gnu/local.mk (dist_patch_DATA): Add it.

Sorry for not noticing the breakage!  I wonder if it would be
easier/safer to fix Julia than to keep the old libgit2.

Does this upstream commit fix the failures that you saw?


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: Type: text/x-patch, Size: 908 bytes --]

commit 782460f9bab4af35097c13c4dbab61cb263490b9
Author: Milan Bouchet-Valat <nalimilan@club.fr>
Date:   Tue Jul 11 10:02:32 2017 +0200

    Fix libgit2 test failure with system libgit2 and OpenSSL (#22722)
    
    The first letter of the error message is in lowercase in some systems,
    notably Fedora Rawhide with libgit2 0.26 and OpenSSL 1.1.0f.

diff --git a/test/libgit2.jl b/test/libgit2.jl
index d7e32d21a9..f5104e9ec7 100644
--- a/test/libgit2.jl
+++ b/test/libgit2.jl
@@ -1905,7 +1905,8 @@ mktempdir() do dir
                         deserialize(f)
                     end
                     @test err.code == LibGit2.Error.ECERTIFICATE
-                    @test startswith(err.msg, "The SSL certificate is invalid")
+                    @test startswith(lowercase(err.msg),
+                                     lowercase("The SSL certificate is invalid"))
 
                     rm(errfile)

[-- Attachment #3: Type: text/plain, Size: 12 bytes --]


Ludo’.

^ permalink raw reply related	[flat|nested] 5+ messages in thread

* [bug#27893] [PATCH] gnu: julia: Work around some test failures related to libgit2.
  2017-08-01  9:46 ` Ludovic Courtès
@ 2017-08-01 20:31   ` Leo Famulari
  2017-10-18 21:15     ` Ricardo Wurmus
  2018-03-07 14:03   ` bug#27893: " Ludovic Courtès
  1 sibling, 1 reply; 5+ messages in thread
From: Leo Famulari @ 2017-08-01 20:31 UTC (permalink / raw)
  To: Ludovic Courtès; +Cc: 27893

[-- Attachment #1: Type: text/plain, Size: 1228 bytes --]

On Tue, Aug 01, 2017 at 11:46:44AM +0200, Ludovic Courtès wrote:
> Hi Leo,
> 
> Leo Famulari <leo@famulari.name> skribis:
> 
> > * gnu/packages/version-control.scm (libgit2-0.25): New variable.
> > * gnu/packages/julia.scm (julia)[inputs]: Replace LIBGIT2 with LIBGIT2-0.25.
> > * gnu/packages/patches/libgit2-use-after-free.patch: New file.
> > * gnu/local.mk (dist_patch_DATA): Add it.
> 
> Sorry for not noticing the breakage!  I wonder if it would be
> easier/safer to fix Julia than to keep the old libgit2.
> 
> Does this upstream commit fix the failures that you saw?

The context of this patch actually doesn't exist in the Julia release.

Based on the very large number of changes to this test between releases,
my impression is that Julia is just not ready for libgit2 0.26.0, even
though there are some commits addressing libgit2 0.26.0 in Julia.

The thing is, I found this test failure building locally but on Hydra
there are different failures [0]. So, even if we fix this issue, we still
probably won't be offering a Julia substitute. Thus, I don't mind
carrying this libgit2-0.25 package privately for now.

[0]
Has anyone got the Julia test suite to pass at all? Spill the beans! :)

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

^ permalink raw reply	[flat|nested] 5+ messages in thread

* [bug#27893] [PATCH] gnu: julia: Work around some test failures related to libgit2.
  2017-08-01 20:31   ` Leo Famulari
@ 2017-10-18 21:15     ` Ricardo Wurmus
  0 siblings, 0 replies; 5+ messages in thread
From: Ricardo Wurmus @ 2017-10-18 21:15 UTC (permalink / raw)
  To: Leo Famulari; +Cc: 27893


Leo Famulari <leo@famulari.name> writes:

> Has anyone got the Julia test suite to pass at all? Spill the beans! :)

I have, repeatedly, but it’s been a while since I’ve built Julia
locally.  The tests are a bit memory-hungry if I recall correctly, but
they did pass on my workstation in the office.  I always made sure that
the tests pass and the few known failing tests were disabled.

About this patch: I’d prefer if this version of libgit were a private
variable in the julia module, just like libunwind-for-julia and
libuv-julia.

--
Ricardo

GPG: BCA6 89B6 3655 3801 C3C6  2150 197A 5888 235F ACAC
https://elephly.net

^ permalink raw reply	[flat|nested] 5+ messages in thread

* bug#27893: [PATCH] gnu: julia: Work around some test failures related to libgit2.
  2017-08-01  9:46 ` Ludovic Courtès
  2017-08-01 20:31   ` Leo Famulari
@ 2018-03-07 14:03   ` Ludovic Courtès
  1 sibling, 0 replies; 5+ messages in thread
From: Ludovic Courtès @ 2018-03-07 14:03 UTC (permalink / raw)
  To: Leo Famulari; +Cc: 27893-done

Hello,

ludo@gnu.org (Ludovic Courtès) skribis:

> Leo Famulari <leo@famulari.name> skribis:
>
>> * gnu/packages/version-control.scm (libgit2-0.25): New variable.
>> * gnu/packages/julia.scm (julia)[inputs]: Replace LIBGIT2 with LIBGIT2-0.25.
>> * gnu/packages/patches/libgit2-use-after-free.patch: New file.
>> * gnu/local.mk (dist_patch_DATA): Add it.
>
> Sorry for not noticing the breakage!  I wonder if it would be
> easier/safer to fix Julia than to keep the old libgit2.
>
> Does this upstream commit fix the failures that you saw?
>
> commit 782460f9bab4af35097c13c4dbab61cb263490b9
> Author: Milan Bouchet-Valat <nalimilan@club.fr>
> Date:   Tue Jul 11 10:02:32 2017 +0200
>
>     Fix libgit2 test failure with system libgit2 and OpenSSL (#22722)
>     
>     The first letter of the error message is in lowercase in some systems,
>     notably Fedora Rawhide with libgit2 0.26 and OpenSSL 1.1.0f.
>
> diff --git a/test/libgit2.jl b/test/libgit2.jl
> index d7e32d21a9..f5104e9ec7 100644
> --- a/test/libgit2.jl
> +++ b/test/libgit2.jl
> @@ -1905,7 +1905,8 @@ mktempdir() do dir
>                          deserialize(f)
>                      end
>                      @test err.code == LibGit2.Error.ECERTIFICATE
> -                    @test startswith(err.msg, "The SSL certificate is invalid")
> +                    @test startswith(lowercase(err.msg),
> +                                     lowercase("The SSL certificate is invalid"))

As it turns out, I later fixed this in a different way, having forgotten
about this discussion, in commit d40b5684c533e0188ffa213b20f2d3c88406d895.

Case closed!

Note that there are other issues discussed at
<https://bugs.gnu.org/30282>.

Ludo’.

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2018-03-07 14:04 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-08-01  0:14 [bug#27893] [PATCH] gnu: julia: Work around some test failures related to libgit2 Leo Famulari
2017-08-01  9:46 ` Ludovic Courtès
2017-08-01 20:31   ` Leo Famulari
2017-10-18 21:15     ` Ricardo Wurmus
2018-03-07 14:03   ` bug#27893: " Ludovic Courtès

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/guix.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).