time-machine error when leaping from version-1.2.0 to version-1.4.0

  • Done
  • quality assurance status badge
Details
4 participants
  • Thiago Jung Bauermann
  • Carl Dong
  • Ludovic Courtès
  • zimoun
Owner
unassigned
Submitted by
Carl Dong
Severity
important
C
C
Carl Dong wrote on 21 Dec 2021 02:28
(address . bug-guix@gnu.org)
5B18CBD8-9876-4B5F-920F-8DD421F67D6F@carldong.me
Hi all,

A fellow Bitcoin developer has submitted a patch bumping our time-machine to a commit on the version-1.4.0 branch for testing. While testing that change, a few developers encountered a bug in the time-machine script.

I’ve been able to distill it down to a reproducible form:

$ guix time-machine --branch=version-1.2.0 -- time-machine --commit=6dffced09ecda024e0884e352778c221ad066fd6 -- describe

The specific error that you get:
Toggle snippet (40 lines)
Updating channel 'guix' from Git repository at 'https://git.savannah.gnu.org/git/guix.git'...
Updating channel 'guix' from Git repository at 'https://git.savannah.gnu.org/git/guix.git'...
Backtrace:
In guix/store.scm:
2042:24 19 (run-with-store #<store-connection 256.99 7f0708266cd0> ?)
In guix/inferior.scm:
734:8 18 (_ _)
In guix/channels.scm:
876:2 17 (_ _)
836:2 16 (_ _)
In ./guix/monads.scm:
482:9 15 (_ _)
In guix/store.scm:
1876:8 14 (_ _)
In guix/channels.scm:
604:36 13 (_ #<store-connection 256.99 7f0708266cd0>)
657:11 12 (_)
In ice-9/eval.scm:
196:35 11 (_ #(#(#<directory (build-self) 7f070834c500>) "/gnu?" ?))
173:47 10 (_ #(#(#(#<directory (build-self) 7f070834c500>) # ?) ?))
213:37 9 (_ #(#(#(#<directory (build-self) 7f070834c500>) # ?) ?))
159:9 8 (_ #(#(#(#<directory (build-self) 7f070834c500>) # ?) ?))
159:9 7 (_ #(#(#(#<directory (build-self) 7f070834c500>) # ?) ?))
159:9 6 (_ #(#(#(#<directory (build-self) 7f070834c500>) # ?) ?))
In guix/modules.scm:
157:28 5 (module-closure _ #:select? _ #:dependencies _)
In guix/memoization.scm:
100:0 4 (_ #<hash-table 7f0710ddfc00 26/31> "/gnu/store/i88h59?" ?)
In ice-9/ports.scm:
445:17 3 (call-with-input-file _ _ #:binary _ #:encoding _ # _)
In guix/modules.scm:
69:4 2 (_ _)
In ice-9/boot-9.scm:
1669:16 1 (raise-exception _ #:continuable? _)
1669:16 0 (raise-exception _ #:continuable? _)

ice-9/boot-9.scm:1669:16: In procedure raise-exception:
Throw to key `match-error' with args `("match" "no matching pattern" (#:re-export-and-replace (delete) #:replace ((define-public* . define-public)) #:export (content-hash content-hash? content-hash-algorithm content-hash-value origin origin? this-origin origin-uri origin-method origin-hash origin-sha256 origin-file-name origin-actual-file-name origin-patches origin-patch-flags origin-patch-inputs origin-patch-guile origin-snippet origin-modules base32 base64 package package? this-package package-name package-upstream-name package-version package-full-name package-source package-build-system package-arguments package-inputs package-native-inputs package-propagated-inputs package-outputs package-native-search-paths package-search-paths package-replacement package-synopsis package-description package-license package-home-page package-supported-systems package-properties package-location package-definition-location hidden-package hidden-package? package-superseded deprecated-package package-field-location this-package-input this-package-native-input lookup-package-input lookup-package-native-input lookup-package-propagated-input lookup-package-direct-input prepend replace modify-inputs package-direct-sources package-transitive-sources package-direct-inputs package-transitive-inputs package-transitive-target-inputs package-transitive-native-inputs package-transitive-propagated-inputs package-transitive-native-search-paths package-transitive-supported-systems package-mapping package-input-rewriting package-input-rewriting/spec package-source-derivation package-derivation package-cross-derivation package-output package-grafts package-patched-vulnerabilities package-with-patches package-with-extra-patches package-with-c-toolchain package/inherit transitive-input-references %supported-systems %hurd-systems %cuirass-supported-systems supported-package? &package-error package-error? package-error-package &package-input-error package-input-error? package-error-invalid-input &package-cross-build-system-error package-cross-build-system-error? package->bag bag->derivation bag-direct-inputs bag-transitive-inputs bag-transitive-host-inputs bag-transitive-build-inputs bag-transitive-target-inputs package-development-inputs package-closure default-guile default-guile-derivation set-guile-for-build package-file package->derivation package->cross-derivation origin->derivation)))'.

Let me know if there’s any other information I can provide or if this is a dupe!

Cheers,
Carl Dong
Z
Z
zimoun wrote on 21 Dec 2021 02:56
86ee66sot2.fsf@gmail.com
Hi Carl,

On Mon, 20 Dec 2021 at 17:28, Carl Dong <contact@carldong.me> wrote:

Toggle quote (2 lines)
> $ guix time-machine --branch=version-1.2.0 -- time-machine --commit=6dffced09ecda024e0884e352778c221ad066fd6 -- describe

This works for me:

Toggle snippet (7 lines)
$ guix time-machine --branch=version-1.2.0 -- time-machine --commit=6dffced09ecda024e0884e352778c221ad066fd6 -- describe
Mise à jour du canal « guix » depuis le dépôt Git « https://git.savannah.gnu.org/git/guix.git »...
guix 6dffced
URL du dépôt : https://git.savannah.gnu.org/git/guix.git
commit : 6dffced09ecda024e0884e352778c221ad066fd6

But another commit does not work:

Toggle snippet (40 lines)
$ guix time-machine --branch=version-1.2.0 -- time-machine --commit=6786336 -- describe
Mise à jour du canal « guix » depuis le dépôt Git « https://git.savannah.gnu.org/git/guix.git »...
Backtrace:
In guix/store.scm:
2042:24 19 (run-with-store #<store-connection 256.99 7f272a3af820> …)
In guix/inferior.scm:
734:8 18 (_ _)
In guix/channels.scm:
876:2 17 (_ _)
836:2 16 (_ _)
In ./guix/monads.scm:
482:9 15 (_ _)
In guix/store.scm:
1876:8 14 (_ _)
In guix/channels.scm:
604:36 13 (_ #<store-connection 256.99 7f272a3af820>)
657:11 12 (_)
In ice-9/eval.scm:
196:35 11 (_ #(#(#<directory (build-self) 7f2731ea6e60>) "/gnu…" …))
173:47 10 (_ #(#(#(#<directory (build-self) 7f2731ea6e60>) # …) …))
213:37 9 (_ #(#(#(#<directory (build-self) 7f2731ea6e60>) # …) …))
159:9 8 (_ #(#(#(#<directory (build-self) 7f2731ea6e60>) # …) …))
159:9 7 (_ #(#(#(#<directory (build-self) 7f2731ea6e60>) # …) …))
159:9 6 (_ #(#(#(#<directory (build-self) 7f2731ea6e60>) # …) …))
In guix/modules.scm:
157:28 5 (module-closure _ #:select? _ #:dependencies _)
In guix/memoization.scm:
100:0 4 (_ #<hash-table 7f2732b93280 26/31> "/gnu/store/dljzmm…" …)
In ice-9/ports.scm:
445:17 3 (call-with-input-file _ _ #:binary _ #:encoding _ # _)
In guix/modules.scm:
69:4 2 (_ _)
In ice-9/boot-9.scm:
1669:16 1 (raise-exception _ #:continuable? _)
1669:16 0 (raise-exception _ #:continuable? _)

ice-9/boot-9.scm:1669:16: In procedure raise-exception:
Throw to key `match-error' with args `("match" "no matching pattern" (#:re-export-and-replace (delete) #:replace ((define-public* . define-public)) #:export (content-hash content-hash? content-hash-algorithm content-hash-value origin origin? this-origin origin-uri origin-method origin-hash origin-sha256 origin-file-name origin-actual-file-name origin-patches origin-patch-flags origin-patch-inputs origin-patch-guile origin-snippet origin-modules base32 base64 package package? this-package package-name package-upstream-name package-version package-full-name package-source package-build-system package-arguments package-inputs package-native-inputs package-propagated-inputs package-outputs package-native-search-paths package-search-paths package-replacement package-synopsis package-description package-license package-home-page package-supported-systems package-properties package-location package-definition-location hidden-package hidden-package? package-superseded deprecated-package package-field-location this-package-input this-package-native-input lookup-package-input lookup-package-native-input lookup-package-propagated-input lookup-package-direct-input prepend replace modify-inputs package-direct-sources package-transitive-sources package-direct-inputs package-transitive-inputs package-transitive-target-inputs package-transitive-native-inputs package-transitive-propagated-inputs package-transitive-native-search-paths package-transitive-supported-systems package-mapping package-input-rewriting package-input-rewriting/spec package-source-derivation package-derivation package-cross-derivation package-output package-grafts package-patched-vulnerabilities package-with-patches package-with-extra-patches package-with-c-toolchain package/inherit transitive-input-references %supported-systems %hurd-systems %cuirass-supported-systems supported-package? &package-error package-error? package-error-package &package-input-error package-input-error? package-error-invalid-input &package-cross-build-system-error package-cross-build-system-error? package->bag bag->derivation bag-direct-inputs bag-transitive-inputs bag-transitive-host-inputs bag-transitive-build-inputs bag-transitive-target-inputs package-development-inputs package-closure default-guile default-guile-derivation set-guile-for-build package-file package->derivation package->cross-derivation origin->derivation)))'.

Hum!

(Well I am surprised to not get twice “Updating channel 'guix'”.)


Cheers,
simon
T
T
Thiago Jung Bauermann wrote on 21 Dec 2021 14:54
(address . 52694@debbugs.gnu.org)
878rwe12ci.fsf@kolabnow.com
Hello,

zimoun <zimon.toutoune@gmail.com> writes:

Toggle quote (21 lines)
> Hi Carl,
>
> On Mon, 20 Dec 2021 at 17:28, Carl Dong <contact@carldong.me> wrote:
>
>> $ guix time-machine --branch=version-1.2.0 -- time-machine --commit=6dffced09ecda024e0884e352778c221ad066fd6 -- describe
>
> This works for me:
>
> $ guix time-machine --branch=version-1.2.0 -- time-machine --commit=6dffced09ecda024e0884e352778c221ad066fd6 -- describe
> Mise à jour du canal « guix » depuis le dépôt Git « https://git.savannah.gnu.org/git/guix.git »...
> guix 6dffced
> URL du dépôt : https://git.savannah.gnu.org/git/guix.git
> commit : 6dffced09ecda024e0884e352778c221ad066fd6
>
>
> But another commit does not work:
>
> $ guix time-machine --branch=version-1.2.0 -- time-machine --commit=6786336 -- describe
> Mise à jour du canal « guix » depuis le dépôt Git « https://git.savannah.gnu.org/git/guix.git »...
> Backtrace:

I don’t think this is a problem specific to time-machine. I ran into what
I belive to be the same issue a couple of days ago on Ubuntu, when I was
using its Guix 1.2.0 package to pull to the current version in master:

Toggle snippet (29 lines)
popigai: /usr/bin/guix --version
guix (GNU Guix) 1.2.0
Copyright (C) 2020 os autores do Guix
Licença GPLv3+: GNU GPLv3 ou posterior <http://gnu.org/licenses/gpl.html>
Esse é um software livre: você é livre para modificar ou redistribuí-lo.
NÃO HÁ GARANTIA, na máxima extensão permitida pela lei.
popigai: guix pull
Atualizando canal "guix" a partir do repositório Git "https://git.savannah.gnu.org/git/guix.git"...
Authenticating channel 'guix', commits 9edb3f6 to d627fba (28.728 new commits)...
Compilando a partir deste canal:
guix https://git.savannah.gnu.org/git/guix.git d627fba
Backtrace:
6 (apply-smob/1 #<catch-closure 7f5588926220>)
In ice-9/boot-9.scm:
705:2 5 (call-with-prompt _ _ #<procedure default-prompt-handle…>)
In ice-9/eval.scm:
619:8 4 (_ #(#(#<directory (guile-user) 7f558859c140>)))
In guix/ui.scm:
2117:12 3 (run-guix-command _ . _)
In ice-9/boot-9.scm:
829:9 2 (catch _ _ #<procedure 7f5588516280 at guix/ui.scm:702…> …)
829:9 1 (catch _ _ #<procedure 7f5588516298 at guix/ui.scm:842…> …)
829:9 0 (catch _ _ #<procedure 7f5585a460a8 at guix/scripts/pu…> …)

ice-9/boot-9.scm:829:9: In procedure catch:
Throw to key `match-error' with args `("match" "no matching pattern" (#:re-export-and-replace (delete) #:replace ((define-public* . define-public)) #:export (content-hash content-hash? content-hash-algorithm content-hash-value origin origin? this-origin origin-uri origin-method origin-hash origin-sha256 origin-file-name origin-actual-file-name origin-patches origin-patch-flags origin-patch-inputs origin-patch-guile origin-snippet origin-modules base32 base64 package package? this-package package-name package-upstream-name package-version package-full-name package-source package-build-system package-arguments package-inputs package-native-inputs package-propagated-inputs package-outputs package-native-search-paths package-search-paths package-replacement package-synopsis package-description package-license package-home-page package-supported-systems package-properties package-location package-definition-location hidden-package hidden-package? package-superseded deprecated-package package-field-location this-package-input this-package-native-input lookup-package-input lookup-package-native-input lookup-package-propagated-input lookup-package-direct-input prepend replace modify-inputs package-direct-sources package-transitive-sources package-direct-inputs package-transitive-inputs package-transitive-target-inputs package-transitive-native-inputs package-transitive-propagated-inputs package-transitive-native-search-paths package-transitive-supported-systems package-mapping package-input-rewriting package-input-rewriting/spec package-source-derivation package-derivation package-cross-derivation package-output package-grafts package-patched-vulnerabilities package-with-patches package-with-extra-patches package-with-c-toolchain package/inherit transitive-input-references %supported-systems %hurd-systems %cuirass-supported-systems supported-package? &package-error package-error? package-error-package &package-input-error package-input-error? package-error-invalid-input &package-cross-build-system-error package-cross-build-system-error? package->bag bag->derivation bag-direct-inputs bag-transitive-inputs bag-transitive-host-inputs bag-transitive-build-inputs bag-transitive-target-inputs package-development-inputs package-closure default-guile default-guile-derivation set-guile-for-build package-file package->derivation package->cross-derivation origin->derivation)))'.
popigai: (1)

My workaround was to first pull to the commit corresponding to v1.3.0 and
then using that version to pull to current master, which worked.

--
Thanks,
Thiago
L
L
Ludovic Courtès wrote on 22 Dec 2021 15:31
control message for bug #52694
(address . control@debbugs.gnu.org)
87zgos3e4d.fsf@gnu.org
severity 52694 important
quit
L
L
Ludovic Courtès wrote on 22 Dec 2021 23:26
Re: bug#52694: time-machine error when leaping from version-1.2.0 to version-1.4.0
(name . zimoun)(address . zimon.toutoune@gmail.com)
87zgosxome.fsf@gnu.org
Hello,

zimoun <zimon.toutoune@gmail.com> skribis:

Toggle quote (15 lines)
> In guix/modules.scm:
> 157:28 5 (module-closure _ #:select? _ #:dependencies _)
> In guix/memoization.scm:
> 100:0 4 (_ #<hash-table 7f2732b93280 26/31> "/gnu/store/dljzmm…" …)
> In ice-9/ports.scm:
> 445:17 3 (call-with-input-file _ _ #:binary _ #:encoding _ # _)
> In guix/modules.scm:
> 69:4 2 (_ _)
> In ice-9/boot-9.scm:
> 1669:16 1 (raise-exception _ #:continuable? _)
> 1669:16 0 (raise-exception _ #:continuable? _)
>
> ice-9/boot-9.scm:1669:16: In procedure raise-exception:
> Throw to key `match-error' with args `("match" "no matching pattern" (#:re-export-and-replace (delete) #:rep

This is because build-self.scm uses ‘source-module-closure’, the one
from 1.2.0 in this case, and that one did not recognize the
#:re-export-and-replace keyword now used by (guix packages).

Fixed in e89f767ce8990f4959616031e3c98fbfe92a008b, thanks!

Ludo’.
Closed
?
Your comment

This issue is archived.

To comment on this conversation send an email to 52694@debbugs.gnu.org

To respond to this issue using the mumi CLI, first switch to it
mumi current 52694
Then, you may apply the latest patchset in this issue (with sign off)
mumi am -- -s
Or, compose a reply to this issue
mumi compose
Or, send patches to this issue
mumi send-email *.patch