Subject: tests/channels.scm: Test failures building on Debian i386 or armhf with libgit2-dev 1.0.1

From: Vagrant Cascadian <[email-masked]>
Date: Mon, 23 Nov 2020 11:55:45 -0800

Fun With More Debian packaging test suite failures...

Updating the build dependency to libgit2-dev >= 1.0.1 (which pulls in a
similar version to what guix is using) fixes test suite failures ... but
only on the amd64 architecture. The same tests pass Using an older
version of libgit2-dev (0.28). FWIW, this is building with guile-3.0.

The newer version of libgit2-dev introduces several test suite failures
on i386 (and armhf) architectures, but the tests work fine on
amd64. from tests/channels.log on i386:

test-name: latest-channel-instances #:validate-pull
location: /build/guix-M9TbTs/guix-1.2.0/tests/channels.scm:202
source:
+ (test-equal
+   "latest-channel-instances #:validate-pull"
+   'descendant
+   (let/ec
+     return
+     (with-temporary-git-repository
+       directory
+       '((add "a.txt" "A")
+         (commit "first commit")
+         (add "b.scm" "#t")
+         (commit "second commit"))
+       (with-repository
+         directory
+         repository
+         (let* ((commit1 (find-commit repository "first"))
+                (commit2 (find-commit repository "second"))
+                (spec (channel
+                        (url (string-append "file://" directory))
+                        (name 'foo)))
+                (new (channel
+                       (inherit spec)
+                       (commit (oid->string (commit-id commit2)))))
+                (old (channel
+                       (inherit spec)
+                       (commit (oid->string (commit-id commit1))))))
+           (define (validate-pull channel current commit relation)
+             (return
+               (and (eq? channel old)
+                    (string=?
+                      (oid->string (commit-id commit2))
+                      current)
+                    (string=?
+                      (oid->string (commit-id commit1))
+                      commit)
+                    relation)))
+           (with-store
+             store
+             (latest-channel-instances
+               store
+               (list old)
+               #:current-channels
+               (list new)
+               #:validate-pull
+               validate-pull)))))))
expected-value: descendant
actual-value: #f
actual-error:
+ (git-error
+   #<<git-error> code: -1 message: "invalid version 0 on git_proxy_options" class: 3>)
result: FAIL

test-name: channel-news, no news
location: /build/guix-M9TbTs/guix-1.2.0/tests/channels.scm:312
source:
+ (test-equal
+   "channel-news, no news"
+   '()
+   (with-temporary-git-repository
+     directory
+     '((add "a.txt" "A") (commit "the commit"))
+     (with-repository
+       directory
+       repository
+       (let ((channel
+               (channel
+                 (url (string-append "file://" directory))
+                 (name 'foo)))
+             (latest (reference-name->oid repository "HEAD")))
+         (channel-news-for-commit
+           channel
+           (oid->string latest))))))
expected-value: ()
actual-value: #f
actual-error:
+ (git-error
+   #<<git-error> code: -1 message: "invalid version 0 on git_proxy_options" class: 3>)
result: FAIL

test-name: latest-channel-instances, missing introduction for 'guix'
location: /build/guix-M9TbTs/guix-1.2.0/tests/channels.scm:413
source:
+ (test-assert
+   "latest-channel-instances, missing introduction for 'guix'"
+   (with-temporary-git-repository
+     directory
+     '((add "a.txt" "A")
+       (commit "first commit")
+       (add "b.scm" "#t")
+       (commit "second commit"))
+     (with-repository
+       directory
+       repository
+       (let* ((commit1 (find-commit repository "first"))
+              (commit2 (find-commit repository "second"))
+              (channel
+                (channel
+                  (url (string-append "file://" directory))
+                  (name 'guix))))
+         (guard (c ((formatted-message? c)
+                    (->bool
+ Initialized empty Git repository in /tmp/guix-directory.82hhlD/.git/
[master (root-commit) 936aa16] first commit
 1 file changed, 1 insertion(+)
 create mode 100644 a.txt
[master 6c20741] second commit
 1 file changed, 1 insertion(+)
 create mode 100644 b.scm
gpg: keybox '/tmp/guix-directory.RpLKeD/pubring.kbx' created
gpg: /tmp/guix-directory.RpLKeD/trustdb.gpg: trustdb created
gpg: key 771F49CBFAAE072D: public key "Ed Two-Fifty <[email-masked]>" imported
gpg: Total number processed: 1
gpg:               imported: 1
gpg: key 771F49CBFAAE072D: "Ed Two-Fifty <[email-masked]>" not changed
gpg: key 771F49CBFAAE072D: secret key imported
gpg: Total number processed: 1
gpg:              unchanged: 1
gpg:       secret keys read: 1
gpg:   secret keys imported: 1
gpg: key 82240EDCAB80DA83: public key "Charlie Guix <[email-masked]>" imported
gpg: Total number processed: 1
gpg:               imported: 1
gpg: key 82240EDCAB80DA83: "Charlie Guix <[email-masked]>" not changed
gpg: key 82240EDCAB80DA83: secret key imported
gpg: Total number processed: 1
gpg:              unchanged: 1
gpg:       secret keys read: 1
gpg:   secret keys imported: 1
Initialized empty Git repository in /tmp/guix-directory.Zkbh5G/.git/
[master (root-commit) d174761] first commit
 3 files changed, 12 insertions(+)
 create mode 100644 .guix-authorizations
 create mode 100644 .guix-channel
 create mode 100644 signer.key
[master 9c9c798] second commit
 1 file changed, 1 insertion(+)
 create mode 100644 random
                     (string-contains
+                        (formatted-message-string c)
+                        "introduction"))))
+                (with-store
+                  store
+                  (latest-channel-instances store (list channel))
+                  #f))))))
actual-value: #f
actual-error:
+ (git-error
+   #<<git-error> code: -1 message: "invalid version 0 on git_proxy_options" class: 3>)
result: FAIL

live well,
  vagrant