GNU bug report logs - #44827
tests/channels.scm: Test failures building on Debian i386 or armhf with libgit2-dev 1.0.1

Previous Next

Package: guix;

Reported by: Vagrant Cascadian <vagrant <at> reproducible-builds.org>

Date: Mon, 23 Nov 2020 19:57:02 UTC

Severity: normal

To reply to this bug, email your comments to 44827 AT debbugs.gnu.org.

Toggle the display of automated, internal messages from the tracker.

View this report as an mbox folder, status mbox, maintainer mbox


Report forwarded to bug-guix <at> gnu.org:
bug#44827; Package guix. (Mon, 23 Nov 2020 19:57:02 GMT) Full text and rfc822 format available.

Acknowledgement sent to Vagrant Cascadian <vagrant <at> reproducible-builds.org>:
New bug report received and forwarded. Copy sent to bug-guix <at> gnu.org. (Mon, 23 Nov 2020 19:57:02 GMT) Full text and rfc822 format available.

Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Vagrant Cascadian <vagrant <at> reproducible-builds.org>
To: bug-guix <at> gnu.org
Subject: tests/channels.scm: Test failures building on Debian i386 or armhf
 with libgit2-dev 1.0.1
Date: Mon, 23 Nov 2020 11:55:45 -0800
[Message part 1 (text/plain, inline)]
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 <ludo+test-ecc <at> chbouib.org>" imported
gpg: Total number processed: 1
gpg:               imported: 1
gpg: key 771F49CBFAAE072D: "Ed Two-Fifty <ludo+test-ecc <at> chbouib.org>" 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 <charlie <at> example.org>" imported
gpg: Total number processed: 1
gpg:               imported: 1
gpg: key 82240EDCAB80DA83: "Charlie Guix <charlie <at> example.org>" 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
[signature.asc (application/pgp-signature, inline)]

Information forwarded to bug-guix <at> gnu.org:
bug#44827; Package guix. (Thu, 26 Nov 2020 21:46:02 GMT) Full text and rfc822 format available.

Message #8 received at 44827 <at> debbugs.gnu.org (full text, mbox):

From: Ludovic Courtès <ludo <at> gnu.org>
To: Vagrant Cascadian <vagrant <at> reproducible-builds.org>
Cc: 44827 <at> debbugs.gnu.org
Subject: Re: bug#44827: tests/channels.scm: Test failures building on Debian
 i386 or armhf with libgit2-dev 1.0.1
Date: Thu, 26 Nov 2020 22:45:32 +0100
Hi,

Vagrant Cascadian <vagrant <at> reproducible-builds.org> skribis:

> 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.

[...]

> actual-error:
> + (git-error
> +   #<<git-error> code: -1 message: "invalid version 0 on git_proxy_options" class: 3>)

This error is the sign of an ABI mismatch issue between Guile-Git and
libgit2 (like Guile-Git assuming a wrong layout for one of the C structs
exposed by libgit2).

Which version of Guile-Git are you using?  Do its tests pass?

In particular, Guile-Git 0.4.0 has this thing compile-time check to make
sure it matches the ABI of the underlying libgit2 version (0.28 or 1.0):

  https://gitlab.com/guile-git/guile-git/-/commit/2b4d077c6f55648f42af31ae783ca4d8c1c5f1de

So if you change libgit2 versions, you need to rebuild Guile-Git.

HTH,
Ludo’.




Information forwarded to bug-guix <at> gnu.org:
bug#44827; Package guix. (Fri, 27 Nov 2020 07:23:02 GMT) Full text and rfc822 format available.

Message #11 received at 44827 <at> debbugs.gnu.org (full text, mbox):

From: Vagrant Cascadian <vagrant <at> debian.org>
To: Ludovic Courtès <ludo <at> gnu.org>
Cc: 44827 <at> debbugs.gnu.org
Subject: Re: bug#44827: tests/channels.scm: Test failures building on Debian
 i386 or armhf with libgit2-dev 1.0.1
Date: Thu, 26 Nov 2020 23:22:24 -0800
[Message part 1 (text/plain, inline)]
On 2020-11-26, Ludovic Courtès wrote:
> Vagrant Cascadian <vagrant <at> reproducible-builds.org> skribis:
>
>> 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.
>
> [...]
>
>> actual-error:
>> + (git-error
>> +   #<<git-error> code: -1 message: "invalid version 0 on git_proxy_options" class: 3>)
>
> This error is the sign of an ABI mismatch issue between Guile-Git and
> libgit2 (like Guile-Git assuming a wrong layout for one of the C structs
> exposed by libgit2).
>
> Which version of Guile-Git are you using?  Do its tests pass?

0.4.0, tests passed when built against libgit2 0.28...


> In particular, Guile-Git 0.4.0 has this thing compile-time check to make
> sure it matches the ABI of the underlying libgit2 version (0.28 or 1.0):
>
>   https://gitlab.com/guile-git/guile-git/-/commit/2b4d077c6f55648f42af31ae783ca4d8c1c5f1de
>
> So if you change libgit2 versions, you need to rebuild Guile-Git.

Oh, this will be fun to keep track of in debian... :/ :)

Yeah, the guile-git was built with the older 0.28 version of libgit2-dev
(although also with all the architectures).

Interestingly enough, guix pull completely fails with the older
libgit2-dev version installed, but installing the new version it works
fine.

I'll build a newer guile-git version and force it to use the newer
libgit2-dev package, and see if that fixes the issues.

Then I'll have to come up with complicated versioned dependencies to
ensure it keeps working in Debian and it becomes detectable when it
needs to be rebuilt...


live well,
  vagrant
[signature.asc (application/pgp-signature, inline)]

Information forwarded to bug-guix <at> gnu.org:
bug#44827; Package guix. (Fri, 27 Nov 2020 10:04:01 GMT) Full text and rfc822 format available.

Message #14 received at 44827 <at> debbugs.gnu.org (full text, mbox):

From: Ludovic Courtès <ludo <at> gnu.org>
To: Vagrant Cascadian <vagrant <at> debian.org>
Cc: 44827 <at> debbugs.gnu.org
Subject: Re: bug#44827: tests/channels.scm: Test failures building on Debian
 i386 or armhf with libgit2-dev 1.0.1
Date: Fri, 27 Nov 2020 11:02:54 +0100
Hi,

Vagrant Cascadian <vagrant <at> debian.org> skribis:

> On 2020-11-26, Ludovic Courtès wrote:

[...]

>> In particular, Guile-Git 0.4.0 has this thing compile-time check to make
>> sure it matches the ABI of the underlying libgit2 version (0.28 or 1.0):
>>
>>   https://gitlab.com/guile-git/guile-git/-/commit/2b4d077c6f55648f42af31ae783ca4d8c1c5f1de
>>
>> So if you change libgit2 versions, you need to rebuild Guile-Git.
>
> Oh, this will be fun to keep track of in debian... :/ :)

Note that the problem is the same for packages written in C since it’s
an ABI change in libgit2.  (Except that in C perhaps you get a SONAME
mismatch at load time rather than an error at run time…)

> Yeah, the guile-git was built with the older 0.28 version of libgit2-dev
> (although also with all the architectures).
>
> Interestingly enough, guix pull completely fails with the older
> libgit2-dev version installed, but installing the new version it works
> fine.
>
> I'll build a newer guile-git version and force it to use the newer
> libgit2-dev package, and see if that fixes the issues.
>
> Then I'll have to come up with complicated versioned dependencies to
> ensure it keeps working in Debian and it becomes detectable when it
> needs to be rebuilt...

Heheh.  Let me know how it goes!

Thanks,
Ludo’.




Information forwarded to bug-guix <at> gnu.org:
bug#44827; Package guix. (Fri, 27 Nov 2020 22:22:01 GMT) Full text and rfc822 format available.

Message #17 received at 44827 <at> debbugs.gnu.org (full text, mbox):

From: Vagrant Cascadian <vagrant <at> debian.org>
To: Ludovic Courtès <ludo <at> gnu.org>
Cc: 44827 <at> debbugs.gnu.org
Subject: Re: bug#44827: tests/channels.scm: Test failures building on Debian
 i386 or armhf with libgit2-dev 1.0.1
Date: Fri, 27 Nov 2020 14:20:44 -0800
[Message part 1 (text/plain, inline)]
On 2020-11-27, Ludovic Courtès wrote:
> Vagrant Cascadian <vagrant <at> debian.org> skribis:
>> On 2020-11-26, Ludovic Courtès wrote:

>>> In particular, Guile-Git 0.4.0 has this thing compile-time check to make
>>> sure it matches the ABI of the underlying libgit2 version (0.28 or 1.0):
>>>
>>>   https://gitlab.com/guile-git/guile-git/-/commit/2b4d077c6f55648f42af31ae783ca4d8c1c5f1de
>>>
>>> So if you change libgit2 versions, you need to rebuild Guile-Git.
>>
>> Oh, this will be fun to keep track of in debian... :/ :)
>
> Note that the problem is the same for packages written in C since it’s
> an ABI change in libgit2.  (Except that in C perhaps you get a SONAME
> mismatch at load time rather than an error at run time…)
>
>> Yeah, the guile-git was built with the older 0.28 version of libgit2-dev
>> (although also with all the architectures).
>>
>> Interestingly enough, guix pull completely fails with the older
>> libgit2-dev version installed, but installing the new version it works
>> fine.
>>
>> I'll build a newer guile-git version and force it to use the newer
>> libgit2-dev package, and see if that fixes the issues.
>>
>> Then I'll have to come up with complicated versioned dependencies to
>> ensure it keeps working in Debian and it becomes detectable when it
>> needs to be rebuilt...
>
> Heheh.  Let me know how it goes!

Rebuilding guile-git against the newer libgit2 seems to resolve the
issues; the test suites passed on amd64, armhf, i386 (the only platforms
currently buildable on Debian).


live well,
  vagrant
[signature.asc (application/pgp-signature, inline)]

This bug report was last modified 4 years and 199 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.