~ruther/guix-local

34cfeca84e62b92e4f2b32c5bf33fe4982253f48 — Sergei Trofimovich 8 years ago 2ca9f51
gnu: libgit2: Fix Clar test framework.

This commit reverts 'patch' hack introduced in
a48a1071a686b250bf8b7982ca0ce8dda1d93c61 and fixes bug in the Clar test
framework.

Patch is proposed to Clar upstream as
<https://github.com/vmg/clar/pull/78>.

* gnu/local.mk: Add libgit2-0.25.1-mtime-0.patch.
* gnu/packages/patches/libgit2-0.25.1-mtime-0.patch: New file.
* gnu/packages/version-control.scm (libgit2)[arguments]:
Remove 'apply-patch' phase.
[inputs]: Remove "patch".
[source]: Add 'patches' field.

Signed-off-by: Sergei Trofimovich <slyfox@inbox.ru>
Signed-off-by: Ludovic Courtès <ludo@gnu.org>
M gnu/local.mk => gnu/local.mk +1 -0
@@ 729,6 729,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/libextractor-ffmpeg-3.patch		\
  %D%/packages/patches/libgit2-0.25.1-mtime-0.patch		\
  %D%/packages/patches/libgit2-use-after-free.patch		\
  %D%/packages/patches/libjxr-fix-function-signature.patch	\
  %D%/packages/patches/libjxr-fix-typos.patch			\

A gnu/packages/patches/libgit2-0.25.1-mtime-0.patch => gnu/packages/patches/libgit2-0.25.1-mtime-0.patch +14 -0
@@ 0,0 1,14 @@
The Clar test framework has a bug whereby it skips the parsing phase
on files with mtime=0.

Reported upstream at <https://github.com/vmg/clar/pull/78>.

diff --git a/tests/generate.py b/tests/generate.py
index b639c8f..111ca41 100644
--- a/tests/generate.py
+++ b/tests/generate.py
@@ -63,3 +63,3 @@ class Module(object):
 
-        self.mtime = 0
+        self.mtime = None # Guix sets all file mtimes to '0'
         self.enabled = True

M gnu/packages/version-control.scm => gnu/packages/version-control.scm +4 -14
@@ 336,7 336,9 @@ everything from small to very large projects with speed and efficiency.")
              (file-name (string-append name "-" version ".tar.gz"))
              (sha256
               (base32
                "1cdwcw38frc1wf28x5ppddazv9hywc718j92f3xa3ybzzycyds3s"))))
                "1cdwcw38frc1wf28x5ppddazv9hywc718j92f3xa3ybzzycyds3s"))
              (patches (search-patches "libgit2-use-after-free.patch"
                                       "libgit2-0.25.1-mtime-0.patch"))))
    (build-system cmake-build-system)
    (arguments
     `(#:phases


@@ 349,25 351,13 @@ everything from small to very large projects with speed and efficiency.")
               (("/bin/cp") (which "cp"))
               (("/bin/rm") (which "rm")))
             #t))
         (add-after 'unpack 'apply-patch
           (lambda* (#:key inputs #:allow-other-keys)
             ;; XXX: For some reason adding the patch in 'patches', which
             ;; leads to a new tarball with all timestamps reset and ordering
             ;; by name (slightly different file order compared to the
             ;; original tarball) leads to an obscure Python error while
             ;; running 'generate.py':
             ;;   'Module' object has no attribute 'callbacks'
             ;; Thus, apply the patch here, which minimizes disruption.
             (let ((patch (assoc-ref inputs "patch")))
               (zero? (system* "patch" "-p1" "--force" "--input" patch)))))
         ;; Run checks more verbosely.
         (replace 'check
           (lambda _ (zero? (system* "./libgit2_clar" "-v" "-Q")))))))
    (inputs
     `(("libssh2" ,libssh2)
       ("libcurl" ,curl)
       ("python" ,python-wrapper)
       ("patch" ,(search-patch "libgit2-use-after-free.patch"))))
       ("python" ,python-wrapper)))
    (native-inputs
     `(("pkg-config" ,pkg-config)))
    (propagated-inputs