unofficial mirror of help-guix@gnu.org 
 help / color / mirror / Atom feed
* Channel details of profile generation
@ 2020-12-28 17:52 Phil
  2020-12-30 13:41 ` zimoun
  0 siblings, 1 reply; 9+ messages in thread
From: Phil @ 2020-12-28 17:52 UTC (permalink / raw)
  To: help-guix

Hi all,

I've been writing a script that given a date/time and a profile will
return the details of that profile at that date/time, including the
channels used to create the profile.

Initially I though this would be as easy as:

guix pull -p my-profile -l

But this seems to crash:

________________________________

blah@phil:~$ guix pull -p my-profile -l
\Generation 1   Dec 22 2020 17:24:53\
  my-test-repo 1.49-3.f08de71
\Generation 2   Dec 22 2020 17:50:28\
  guix 13d532a
    repository URL: https://git.savannah.gnu.org/git/guix.git
    branch: master
    commit: \13d532a91178be7b6919b85685b150f941116dfc\
  foo-packages 8fc6134
    repository URL: ssh://git@localgit:7999/foo/foo-packages.git
    branch: master
    commit: 3dc613449f59ba8a8fdc35cadb7667ddaaf7fd9b
Backtrace:
          11 (primitive-load "/home/blah/.config/guix/current/bin/…")
In guix/ui.scm:
  2127:12 10 (run-guix-command _ . _)
In ice-9/boot-9.scm:
  1736:10  9 (with-exception-handler _ _ #:unwind? _ # _)
  1731:15  8 (with-exception-handler #<procedure 7fa030b82b40 at ic…> …)
  1731:15  7 (with-exception-handler #<procedure 7fa030b82b10 at ic…> …)
  1731:15  6 (with-exception-handler #<procedure 7fa030c46390 at ic…> …)
In guix/scripts/pull.scm:
    636:4  5 (_)
In guix/memoization.scm:
    100:0  4 (_ #<hash-table 7fa030b4c780 0/31> "guix-profiles/py-t…" …)
In guix/scripts/pull.scm:
   538:21  3 (_)
In guix/inferior.scm:
    256:2  2 (inferior-available-packages #f)
   251:13  1 (send-inferior-request (defined? (quote #)) #f)
In ice-9/boot-9.scm:
  1669:16  0 (raise-exception _ #:continuable? _)

ice-9/boot-9.scm:1669:16: In procedure raise-exception:
In procedure struct-vtable: Wrong type argument in position 1 (expecting struct): #f
blah@phil:~$ 

________________________________


This was a bit unexpected as you can call 'guix describe' with a profile
(although you only get channel infomation if you leave off the -p switch).


So instead I decided to write my own script.

I've left how I work out the generation running on a given profile at a
given datetime - but this is easy enough to do (look for nearest
generation-time less than the provided datetime).

Armed with this, the following looked like a good starting place:

(display-profile-content my-profile generation-number)

With me providing a profile and generation I want details on.

There are 2 versions of the display-profile-content function; one in
(guix ui) and one in (guix scripts describe).


https://github.com/guix-mirror/guix/blob/d482569c2289647e666228cad238552b18f09410/guix/scripts/describe.scm#L232
https://github.com/guix-mirror/guix/blob/d482569c2289647e666228cad238552b18f09410/guix/ui.scm#L1947

The ui.scm version doesn't have the details I want, but the describe.scm
one looked promising.

However the match sequence in display-profile-content in describe.scm is
looking for 'source not 'provenance - which if I look at the manifest
under the profile won't match?  Also it only seemed to match against the
first 'repository - which is no good if a private channel is used by the profile.

So whilst display-profile-content correctly displays information from
display-generation, the for-each over the manifest entries doesn't
yield any url/branch/commit info - at least for what I want to do.

I also looked at the profile-channels function but drew a blank there
too.

The code at describe.scm was close enough that I could fairly easily
repurpose it (see below).

However my questions are:

Os there not already a cannonical way to do this in Guix?  If yes, what is it?

If no is my approach below sane, or is what I'm trying to achieve
ill-conceived in any way?

Finally, what's the intended difference between 'source and 'provenance?

To my mind - If a profile generation has a manifest which contains
branch/commit details of the branches packages were created with - it
seems reasonable and useful to report that information?

Thanks,
Phil.

________________________________


(format #t "~%~%Package/Channel Details:~%")
(define my-manifest
  (manifest-entries
   (profile-manifest (generation-file-name my-profile generation-number))))

(for-each (lambda (entry)
            (format #t "  ~a ~a~%"
                    (manifest-entry-name entry)
                    (manifest-entry-version entry))
            (match (assq 'provenance (manifest-entry-properties entry))
              (('provenance ('repository ('version 0)
                                         ('url url)
                                         ('branch branch)
                                         ('commit commit)
                                         _ ...) ...)
               (let ((repo-triples (zip url branch commit)))
                 (map (lambda (triple)
                        (apply format
                               (append (list #t "     URL: ~a~%     Branch: ~a~%     Commit: ~a~%~%") triple))) repo-triples)))
              (_ #f))) (reverse my-manifest))


________________________________



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

* Re: Channel details of profile generation
  2020-12-28 17:52 Channel details of profile generation Phil
@ 2020-12-30 13:41 ` zimoun
  2021-01-04 17:29   ` Phil
  0 siblings, 1 reply; 9+ messages in thread
From: zimoun @ 2020-12-30 13:41 UTC (permalink / raw)
  To: Phil, help-guix

Hi,

On Mon, 28 Dec 2020 at 17:52, Phil <phil@beadling.co.uk> wrote:

> guix pull -p my-profile -l
>
> But this seems to crash:

I am surprised.

> blah@phil:~$ guix pull -p my-profile -l
> \Generation 1   Dec 22 2020 17:24:53\
>   my-test-repo 1.49-3.f08de71
> \Generation 2   Dec 22 2020 17:50:28\
>   guix 13d532a
>     repository URL: https://git.savannah.gnu.org/git/guix.git
>     branch: master
>     commit: \13d532a91178be7b6919b85685b150f941116dfc\
>   foo-packages 8fc6134
>     repository URL: ssh://git@localgit:7999/foo/foo-packages.git
>     branch: master
>     commit: 3dc613449f59ba8a8fdc35cadb7667ddaaf7fd9b
> Backtrace:
>           11 (primitive-load "/home/blah/.config/guix/current/bin/…")
> In guix/ui.scm:
>   2127:12 10 (run-guix-command _ . _)
> In ice-9/boot-9.scm:
>   1736:10  9 (with-exception-handler _ _ #:unwind? _ # _)
>   1731:15  8 (with-exception-handler #<procedure 7fa030b82b40 at ic…> …)
>   1731:15  7 (with-exception-handler #<procedure 7fa030b82b10 at ic…> …)
>   1731:15  6 (with-exception-handler #<procedure 7fa030c46390 at ic…> …)
> In guix/scripts/pull.scm:
>     636:4  5 (_)
> In guix/memoization.scm:
>     100:0  4 (_ #<hash-table 7fa030b4c780 0/31> "guix-profiles/py-t…" …)
> In guix/scripts/pull.scm:
>    538:21  3 (_)
> In guix/inferior.scm:
>     256:2  2 (inferior-available-packages #f)
>    251:13  1 (send-inferior-request (defined? (quote #)) #f)
> In ice-9/boot-9.scm:
>   1669:16  0 (raise-exception _ #:continuable? _)
>
> ice-9/boot-9.scm:1669:16: In procedure raise-exception:
> In procedure struct-vtable: Wrong type argument in position 1 (expecting struct): #f

Could you share how you generated the profile ’my-profile’?


> Os there not already a cannonical way to do this in Guix?  If yes,
> what is it?

Well, I am missing what you want to achieve.

> If no is my approach below sane, or is what I'm trying to achieve
> ill-conceived in any way?

The profile used by ’pull’, by default ~/.config/guix/current, is
somehow special compared to other profiles as ~/.guix-profile.


> Finally, what's the intended difference between 'source and
> 'provenance?

Compare:

    cat ~/.config/guix/current/manifest | grep -E '(source|provenance)'
    cat ~/.guix-profile/manifest        | grep -E '(source|provenance)'

It is my understanding and maybe someone will correct me: 'source is the
“properties“ tracking the channels from where the “pull” comes and
'provenance is the “properties” tracking the channel from where the
packages come from.

Well, 'source is used by “guix describe” but 'provenance is not used––it
is by “guix pack --save-provenance” but that’s another story.


> To my mind - If a profile generation has a manifest which contains
> branch/commit details of the branches packages were created with - it
> seems reasonable and useful to report that information?

Report where?

Hope that helps,
simon


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

* Re: Channel details of profile generation
  2020-12-30 13:41 ` zimoun
@ 2021-01-04 17:29   ` Phil
  2021-01-05 17:01     ` zimoun
  0 siblings, 1 reply; 9+ messages in thread
From: Phil @ 2021-01-04 17:29 UTC (permalink / raw)
  To: zimoun; +Cc: help-guix

Hi Simon,

I'll specifically elaborate on the guix pull error in this e-mail, I
follow-up on other items later (apologies my first e-mail as perhaps too
busy!).

zimoun writes:

> Hi,
>
> On Mon, 28 Dec 2020 at 17:52, Phil <phil@beadling.co.uk> wrote:
>
>> guix pull -p my-profile -l
>>
>> But this seems to crash:
>
> I am surprised.


> Could you share how you generated the profile ’my-profile’?
>

Yes - the issue here appears to be the inclusion of a package from a
private channel in the manifest.

If I create a manifest only using Guix packages - everything looks OK - eg:

ubuntu@test-image:~/guix-manifests$ cat test-manifest.scm 
(packages->manifest
 (list (specification->package "python@3.8.2")))
    

ubuntu@test-image:~/guix-manifests$ guix package -m test-manifest.scm -p ~/guix-profiles/test-profile
The following package will be installed:
   python 3.8.2

The following derivation will be built:
   /gnu/store/yd7093md8q5xa1s3zn3nwmh9qcpnwpjr-profile.drv

building CA certificate bundle...
building fonts directory...
building directory of Info manuals...
building database for manual pages...
building profile with 1 package...
hint: Consider setting the necessary environment variables by running:

     GUIX_PROFILE="/home/ubuntu/guix-profiles/test-profile"
     . "$GUIX_PROFILE/etc/profile"

Alternately, see `guix package --search-paths -p "/home/ubuntu/guix-profiles/test-profile"'.

ubuntu@test-image:~/guix-manifests$ GUIX_PROFILE="/home/ubuntu/guix-profiles/test-profile"
ubuntu@test-image:~/guix-manifests$ . "$GUIX_PROFILE/etc/profile"

ubuntu@test-image:~/guix-manifests$ guix pull -p ~/guix-profiles/test-profile -l
\Generation 1   Jan 04 2021 17:00:58\   (current)
  python 3.8.2
ubuntu@test-image:~/guix-manifests$


But if I now also add a package from my private channel to the manifest:


ubuntu@test-image:~/guix-manifests$ cat test-manifest-2.scm 
(packages->manifest
 (list (specification->package "python@3.8.2")
       (@ (py-test-pkg) py-test-pkg-develop)))



ubuntu@test-image:~/guix-manifests$ guix package -m test-manifest-2.scm -p ~/guix-profiles/test-profile
The following packages will be installed:
   py-test-pkg 4.72-0.2aa0874
   python       3.8.2

updating checkout of 'ssh://git@my-bitbucket/foo/py-test-pkg.git'...
retrieved commit 2aa08749a7b7ab7995f9cdb7bb1842e9889a09d
substitute: updating substitutes from 'http://my-substitutes:8080'... 100.0%
substitute: updating substitutes from 'https://ci.guix.gnu.org'... 100.0%
The following derivation will be built:
   /gnu/store/qw745mdvy81ym9mwnx4khxafg2spclyw-py-test-pkg-4.72-0.2aa0874.drv

building /gnu/store/qw745mdvy81ym9mwnx4khxafg2spclyw-py-test-pkg-4.72-0.2aa0874.drv...
The following derivation will be built:
   /gnu/store/d0bzs0aly5bjy6lhwc7asc4m4s2lxlki-profile.drv

building CA certificate bundle...
building fonts directory...
building directory of Info manuals...
building database for manual pages...
building profile with 2 packages...


It installs OK but the same guix pull comamnd now fails:


ubuntu@test-image:~/guix-manifests$ guix pull -p ~/guix-profiles/test-profile -l
\Generation 1   Jan 04 2021 17:00:58\
  python 3.8.2
\Generation 2   Jan 04 2021 17:03:48\   (current)
  py-test-pkg 4.72-0.2aa0874
  python 3.8.2
Backtrace:
          11 (primitive-load "/home/ubuntu/.config/guix/current/bin/…")
In guix/ui.scm:
  2127:12 10 (run-guix-command _ . _)
In ice-9/boot-9.scm:
  1736:10  9 (with-exception-handler _ _ #:unwind? _ # _)
  1731:15  8 (with-exception-handler #<procedure 7f1e86b4f900 at ic…> …)
  1731:15  7 (with-exception-handler #<procedure 7f1e86b4f8d0 at ic…> …)
  1731:15  6 (with-exception-handler #<procedure 7f1e8877d480 at ic…> …)
In guix/scripts/pull.scm:
    636:4  5 (_)
In guix/memoization.scm:
    100:0  4 (_ #<hash-table 7f1e86b141c0 0/31> "/home/ubuntu/guix-…" …)
In guix/scripts/pull.scm:
   538:21  3 (_)
In guix/inferior.scm:
    256:2  2 (inferior-available-packages #f)
   251:13  1 (send-inferior-request (defined? (quote #)) #f)
In ice-9/boot-9.scm:
  1669:16  0 (raise-exception _ #:continuable? _)

ice-9/boot-9.scm:1669:16: In procedure raise-exception:
In procedure struct-vtable: Wrong type argument in position 1 (expecting struct): #f
ubuntu@test-image:~/guix-manifests$


Despite this the test package did install correctly (py-test-pkg
installs module example_project):

ubuntu@test-image:~/guix-manifests$ which python3
/home/ubuntu/guix-profiles/test-profile/bin/python3
ubuntu@test-image:~/guix-manifests$ python3 -m example_project --myparam testing
The parameter was: testing



> Hope that helps,
> simon



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

* Re: Channel details of profile generation
  2021-01-04 17:29   ` Phil
@ 2021-01-05 17:01     ` zimoun
  2021-01-09 13:34       ` Phil
  0 siblings, 1 reply; 9+ messages in thread
From: zimoun @ 2021-01-05 17:01 UTC (permalink / raw)
  To: Phil; +Cc: help-guix

Hi,

On Mon, 4 Jan 2021 at 18:29, Phil <phil@beadling.co.uk> wrote:

> > Could you share how you generated the profile ’my-profile’?
>
> Yes - the issue here appears to be the inclusion of a package from a
> private channel in the manifest.
>
> If I create a manifest only using Guix packages - everything looks OK - eg:
>
> ubuntu@test-image:~/guix-manifests$ cat test-manifest.scm
> (packages->manifest
>  (list (specification->package "python@3.8.2")))

[...]

> ubuntu@test-image:~/guix-manifests$ guix package -m test-manifest.scm -p ~/guix-profiles/test-profile

[...]

> ubuntu@test-image:~/guix-manifests$ guix pull -p ~/guix-profiles/test-profile -l
> \Generation 1   Jan 04 2021 17:00:58\   (current)
>   python 3.8.2

As I explained in the previous email, even if both are profiles, they
are not the same.  Basically, "guix pull" is for
"~/.config/guix/current" which is somehow special.  Therefore, I do
not know what you want to achieve with "guix pull -p
~/guix-profiles/test-profile -l".  Maybe, what you want is instead:
""guix package -p ~/guix-profiles/test-profile -l".  Otherwise, could
you explain which result you are expecting whatever the command to
use?


> But if I now also add a package from my private channel to the manifest:
>
> ubuntu@test-image:~/guix-manifests$ cat test-manifest-2.scm
> (packages->manifest
>  (list (specification->package "python@3.8.2")
>        (@ (py-test-pkg) py-test-pkg-develop)))

This looks weird to me.  For example, I have 2 channels:

--8<---------------cut here---------------start------------->8---
$ guix describe
Generation 99   Jan 05 2021 16:56:39    (current)
  guix-science cf87b05
    repository URL: https://github.com/guix-science/guix-science.git
    branch: master
    commit: cf87b0501c4a38b96edf41025a27bf1cb91f521a
  guix 957f0c4
    repository URL: https://git.savannah.gnu.org/git/guix.git
    branch: master
    commit: 957f0c40327ce00f53db22737e3775ce616ac258
--8<---------------cut here---------------end--------------->8---

and let consider this package from the extra channel:

--8<---------------cut here---------------start------------->8---
$ guix show python-nose-exclude | recsel -p location
location: guix-science/packages/jupyter.scm:71:2
--8<---------------cut here---------------end--------------->8---

then my manifest.scm file contains:

--8<---------------cut here---------------start------------->8---
$ cat /tmp/my-manifest.scm
(specifications->manifest
 (list
  "python"
  "python-nose-exclude"))
--8<---------------cut here---------------end--------------->8---

and "guix package -m /tmp/my-manifest.scm -p /tmp/test-profile" does the job

--8<---------------cut here---------------start------------->8---
$ guix package -p /tmp/test-profile -l
Generation 1    Jan 05 2021 16:58:40    (current)
  python-nose-exclude   0.5.0   out     /gnu/store/...-python-nose-exclude-0.5.0
  python        3.8.2   out     /gnu/store/...-python-3.8.2
--8<---------------cut here---------------end--------------->8---

And even "guix pull -p /tmp/test-profile -l" works.  Now, I replace
the manifest to only contain the package hello.

--8<---------------cut here---------------start------------->8---
$ guix package -p /tmp/test-profile -l
Generation 1    Jan 05 2021 16:58:40
  python-nose-exclude   0.5.0   out
/gnu/store/k3n4qxakw4rjjg81sfkaxcgln5xhaj3r-python-nose-exclude-0.5.0
  python        3.8.2   out
/gnu/store/9h5pjxj879y9rzy04m1v9835l4fblw95-python-3.8.2

Generation 2    Jan 05 2021 17:05:29    (current)
 + hello        2.10    out
/gnu/store/a462kby1q51ndvxdv3b6p0rsixxrgx1h-hello-2.10
 - python       3.8.2   out
/gnu/store/9h5pjxj879y9rzy04m1v9835l4fblw95-python-3.8.2
 - python-nose-exclude  0.5.0   out
/gnu/store/k3n4qxakw4rjjg81sfkaxcgln5xhaj3r-python-nose-exclude-0.5.0
--8<---------------cut here---------------end--------------->8---

Then, I re-use the 2 pythons packages, re-upgrade the profile and then:

--8<---------------cut here---------------start------------->8---
$ guix pull -p /tmp/test-profile -l
Generation 1    Jan 05 2021 16:58:40
  python-nose-exclude 0.5.0
  python 3.8.2
Generation 2    Jan 05 2021 17:05:29
  hello 2.10
Generation 3    Jan 05 2021 16:58:40    (current)
  python-nose-exclude 0.5.0
  python 3.8.2
--8<---------------cut here---------------end--------------->8---



> ubuntu@test-image:~/guix-manifests$ guix pull -p ~/guix-profiles/test-profile -l

Even if I am not sure to understand what you want to do, I am not able
to reproduce.  With /tmp/my-manifest-{1,2}.scm containing:

--8<---------------cut here---------------start------------->8---
(specifications->manifest (list "python"))
--8<---------------cut here---------------end--------------->8---

--8<---------------cut here---------------start------------->8---
(specifications->manifest (list "python" "python-nose-exclude"))
--8<---------------cut here---------------end--------------->8---

I get:

--8<---------------cut here---------------start------------->8---
$ guix package -p /tmp/foo -m /tmp/my-manifest-1.scm
The following package will be installed:
   python 3.8.2

$ guix package -p /tmp/foo -m /tmp/my-manifest-2.scm
The following packages will be installed:
   python              3.8.2
   python-nose-exclude 0.5.0

$ guix pull -p /tmp/foo -l
Generation 1    Jan 05 2021 17:47:34
  python 3.8.2
Generation 2    Jan 05 2021 17:58:22    (current)
  python-nose-exclude 0.5.0
  python 3.8.2
--8<---------------cut here---------------end--------------->8---


All the best,
simon


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

* Re: Channel details of profile generation
  2021-01-05 17:01     ` zimoun
@ 2021-01-09 13:34       ` Phil
  2021-01-11 17:34         ` zimoun
  0 siblings, 1 reply; 9+ messages in thread
From: Phil @ 2021-01-09 13:34 UTC (permalink / raw)
  To: zimoun; +Cc: help-guix

Hi,

Thanks again for your help. Below I've split the question into PART 1 -
which what I originally asked, and PART 2 - which is trying to resolve
the backtrace seen using 'guix pull' that so far only I've reproduced.

PART 2 is a bit of a rabbit-hole and I don't come back with any
definitive answers - I recognize that my use of 'guix pull' was probably
inappropriate, so my only interest here now is I don't think that any
command should give a backtrace or hang indefinitely - even if I'm
asking it a stupid question.

So I'd like to understand why, and if needs be fix the code.  I
demonstrate below this is possible (at least on my use of on foreign distro
Ubuntu 18.04).  Apologies if my response it somewhat over-detailed!

The short answer to PART 2, I think, is probably don't use 'guix pull -p
profile -l' apart from on special guix profiles, but that doesn't
explain the backtrace.

zimoun writes:

PART 1:

> As I explained in the previous email, even if both are profiles, they
> are not the same.  Basically, "guix pull" is for
> "~/.config/guix/current" which is somehow special.  Therefore, I do
> not know what you want to achieve with "guix pull -p
> ~/guix-profiles/test-profile -l".  Maybe, what you want is instead:
> ""guix package -p ~/guix-profiles/test-profile -l".  Otherwise, could
> you explain which result you are expecting whatever the command to
> use?
>

Yep - I've muddled this a bit, so I'm going to try an explain from the
beginning what I'm trying to achieve.

Given a date/time and a profile, it should be possible not only to tell
me what generation of that profile was active at that date/time, but
also the corresponding commit ids on the heads of each channels used to
source the packages.

So my tool works like this - and, I believe, the output is correct and
methodology sane:


--8<---------------cut here---------------start------------->8---

ubuntu@test-image:~$ guix repl -- profile-generation-on-datetime.scm 2020-12-24T12:00:00 guix-profiles/py-test-pkg-profile

Profile Dir: guix-profiles/py-test-pkg-profile-39-link

\Generation 39  Dec 24 2020 11:24:23\

Package/Channel Details:
  py-test-pkg 1.53
     URL: https://git.savannah.gnu.org/git/guix.git
     Branch: master
     Commit: 13d532a91178be7b6919b85685b150f941116dfc

     URL: ssh://git@bbserver:7799/ea/guix-packages.git
     Branch: master
     Commit: ad21880272356219a9e33888cd0c237c8ece02d3

  python 3.8.2
     URL: https://git.savannah.gnu.org/git/guix.git
     Branch: master
     Commit: 13d532a91178be7b6919b85685b150f941116dfc

--8<---------------cut here---------------end--------------->8---

Now, ignoring the date/time logic, all my tool is doing is returning the
Package/Channel Details (via the profile manifest) as per above - when
provided with a profile and a generation number.

--8<---------------cut here---------------start------------->8---

(define my-manifest
  (manifest-entries
   (profile-manifest (generation-file-name my-profile generation-number))))

--8<---------------cut here---------------end--------------->8---

The command you suggested can also recover the details of 'Generation
39' like the below:


--8<---------------cut here---------------start------------->8---

ubuntu@test-image:~$ guix package -p ~/guix-profiles/py-test-pkg-profile -l | grep -A4 'Generation 39' 
Generation 39   Dec 24 2020 11:24:23
 + py-test-pkg 1.53    out     /gnu/store/1s9v8psy6pi404pfv51b14i1w11agy2i-py-test-pkg-1.53
 - py-test-pkg 1.52-3.45acac9  out     /gnu/store/ncwm84b3ax5n6y374043di54q47ar6w9-py-test-pkg-1.52-3.45acac9

Generation 40   Dec 24 2020 13:55:09

--8<---------------cut here---------------end--------------->8---

However this only provides the package diff rather than the absolute package
list, and more importantly (to me) it doesn't report the channel commit ids
used to create the generation as available from manifest-entries.


***This is the crux of my original question - can I get the commit id data
supplied by my script for a given profile/generation, from the command
line using already available guix tools?***

(I think the answer to this is - no you cannot do it from the command line)

The follow-up question was - if not, is my script's approach sane?

(I think/hope this answer to this - is yes, my approach is reasonable/sane)

Hopefully that bit is clearer now :-)


PART 2:

Separately I, probably incorrectly, thought that I might be able to use some
incantation of 'guix pull -l' to achieve the same ends as my script,
given pull's output does seem to include the channel commit ids.

The surprise was that not so much that 'guix pull -l' didn't do what I
was hoping (it was a shot in the dark), but that it crashed, rather than
exiting gracefully.  Now originally this was put down to
junk-in/junk-out - i.e. me providing a standard package profile to a
command expecting the 'special' guix profile. However as you've shown
below - this is not the case - in your attempt to recreate my error 'guix pull'
behaved well despite my dubious command use! 

>
> Even if I am not sure to understand what you want to do, I am not able
> to reproduce.  With /tmp/my-manifest-{1,2}.scm containing:
>
> $ guix package -p /tmp/foo -m /tmp/my-manifest-2.scm
> The following packages will be installed:
>    python              3.8.2
>    python-nose-exclude 0.5.0
>
> $ guix pull -p /tmp/foo -l
> Generation 1    Jan 05 2021 17:47:34
>   python 3.8.2
> Generation 2    Jan 05 2021 17:58:22    (current)
>   python-nose-exclude 0.5.0
>   python 3.8.2

I can't argue with this - I need to do some more digging here to see why
my use of guix pull is barfing, there are some differences between your
test and mine - for example the use of the ssh protocol in the second
channel, so the 2 tests are not identical, but as you see below I run
into issues replicating even with the guix-science channel.

I have tried a more detailed test below - my channels.scm now contains
guix, guix-science, and my private channel.

I do a guix pull to get the following:

--8<---------------cut here---------------start------------->8---
Building from these channels:
  guix-science https://github.com/guix-science/guix-science.git  cf87b05
  guix-packages ssh://git@bbserver:7799/ea/guix-packages.git    55312da
  guix      https://git.savannah.gnu.org/git/guix.git   13d532a
--8<---------------cut here---------------end--------------->8---

I will now create a new profile and use 'guix package' to install 3
manifests to it, after each install I'll list the contents with 'guix
package' and 'guix pull':

--8<---------------cut here---------------start------------->8---
$ cat my-manifest-?.scm
(specifications->manifest (list "python"))
(specifications->manifest (list "python" "python-nose-exclude"))
(specifications->manifest (list "python" "python-nose-exclude" "py-test-pkg"))
--8<---------------cut here---------------end--------------->8---

First manifest installs python without issue:

--8<---------------cut here---------------start------------->8---
$ guix package -m my-manifest-1.scm -p /tmp/test-profile
The following package will be installed:
   python 3.8.2

$ guix package -p /tmp/test-profile -l
\Generation 1   Jan 09 2021 11:39:07\   (current)
  python        3.8.2   out     /gnu/store/9h5pjxj879y9rzy04m1v9835l4fblw95-python-3.8.2

$ guix pull -p /tmp/test-profile -l
\Generation 1   Jan 09 2021 11:39:07\   (current)
  python 3.8.2
--8<---------------cut here---------------end--------------->8---

Second manifest - installs without issue BUT 'guix pull' now hangs after
producing the right output requiring me to ctrl-c out of it:

--8<---------------cut here---------------start------------->8---
$ guix package -m my-manifest-2.scm -p /tmp/test-profile
The following packages will be installed:
   python              3.8.2
   python-nose-exclude 0.5.0

$ guix package -p /tmp/test-profile -l                  
\Generation 1   Jan 09 2021 11:39:07\
  python        3.8.2   out     /gnu/store/9h5pjxj879y9rzy04m1v9835l4fblw95-python-3.8.2

\Generation 2   Jan 09 2021 11:43:58\   (current)
 + python-nose-exclude  0.5.0   out     /gnu/store/k3n4qxakw4rjjg81sfkaxcgln5xhaj3r-python-nose-exclude-0.5.0

$ guix pull -p /tmp/test-profile -l                     
\Generation 1   Jan 09 2021 11:39:07\
  python 3.8.2
\Generation 2   Jan 09 2021 11:43:58\   (current)
  python-nose-exclude 0.5.0
  python 3.8.2
^C <-- It's hanging here so I exit with ctrl-c
--8<---------------cut here---------------end--------------->8---

Third manifest - installs fine but 'guix pull' produces same result as
second manifest:

--8<---------------cut here---------------start------------->8---
$ guix package -m my-manifest-3.scm -p /tmp/test-profile
The following packages will be installed:
   py-test-pkg        1.65-1.e4c466a
   python              3.8.2
   python-nose-exclude 0.5.0

$ guix package -p /tmp/test-profile -l                  
\Generation 1   Jan 09 2021 11:39:07\
  python        3.8.2   out     /gnu/store/9h5pjxj879y9rzy04m1v9835l4fblw95-python-3.8.2

\Generation 2   Jan 09 2021 11:43:58\
 + python-nose-exclude  0.5.0   out     /gnu/store/k3n4qxakw4rjjg81sfkaxcgln5xhaj3r-python-nose-exclude-0.5.0

\Generation 3   Jan 09 2021 12:00:11\   (current)
 + py-test-pkg 1.65-1.e4c466a  out     /gnu/store/vz138cjpkv2m0d1xpq16g6f7ch2c8s86-py-test-pkg-1.65-1.e4c466a

$ guix pull -p /tmp/test-profile -l                     
\Generation 1   Jan 09 2021 11:39:07\
  python 3.8.2
\Generation 2   Jan 09 2021 11:43:58\
  python-nose-exclude 0.5.0
  python 3.8.2
^C
--8<---------------cut here---------------end--------------->8---

Finally just to recreate the original error I create a fourth manifest
in a new profile - but everything works fine now!

--8<---------------cut here---------------start------------->8---
$ cat my-manifest-4.scm 
(specifications->manifest (list "python" "py-test-pkg"))

$ guix package -m my-manifest-4.scm -p /tmp/test-profile2
The following packages will be installed:
   py-test-pkg 1.65-1.e4c466a
   python       3.8.2

$ guix package -p /tmp/test-profile2 -l
\Generation 1   Jan 09 2021 12:06:49\   (current)
  py-test-pkg  1.65-1.e4c466a  out     /gnu/store/vz138cjpkv2m0d1xpq16g6f7ch2c8s86-py-test-pkg-1.65-1.e4c466a
  python        3.8.2   out     /gnu/store/9h5pjxj879y9rzy04m1v9835l4fblw95-python-3.8.2

$ guix pull -p /tmp/test-profile2 -l                     
\Generation 1   Jan 09 2021 12:06:49\   (current)
  py-test-pkg 1.65-1.e4c466a
  python 3.8.2
--8<---------------cut here---------------end--------------->8---


So I try creating a second generation and this doesn't barf, it halts
just like the guix-science example and requires a ctrl-c.  This somewhat
suggests that the 'ssh' repo isn't the sole cause of the issue - the
issue is something to do with outputting a second generation - this is
the common thread in every test I've done.

--8<---------------cut here---------------start------------->8---
$ guix remove python -p /tmp/test-profile2
The following package will be removed:
   python 3.8.2

$ guix package -p /tmp/test-profile2 -l   
\Generation 1   Jan 09 2021 12:06:49\
  py-test-pkg  1.65-1.e4c466a  out     /gnu/store/vz138cjpkv2m0d1xpq16g6f7ch2c8s86-py-test-pkg-1.65-1.e4c466a
  python        3.8.2   out     /gnu/store/9h5pjxj879y9rzy04m1v9835l4fblw95-python-3.8.2

\Generation 2   Jan 09 2021 12:11:16\   (current)
 - python       3.8.2   out     /gnu/store/9h5pjxj879y9rzy04m1v9835l4fblw95-python-3.8.2

$ guix pull -p /tmp/test-profile2 -l      
\Generation 1   Jan 09 2021 12:06:49\
  py-test-pkg 1.65-1.e4c466a
  python 3.8.2
\Generation 2   Jan 09 2021 12:11:16\   (current)
  py-test-pkg 1.65-1.e4c466a
^C
--8<---------------cut here---------------end--------------->8---


Finally I tried pulling the latest version of guix to check the issue
was still current - same result was seen.

--8<---------------cut here---------------start------------->8---
$ guix pull --commit=0fab032ae3849a8827b4ccf40d7a8f70090b4255 
Updating channel 'guix' from Git repository at 'https://git.savannah.gnu.org/git/guix.git'...
Authenticating channel 'guix', commits 9edb3f6 to 0fab032 (1,047 new commits)...
--8<---------------cut here---------------end--------------->8---


Here's the final bit of the strace from the last output to stdout to the
'guix pull' hanging:

--8<---------------cut here---------------start------------->8---
write(1, "  py-test-pkg 1.65-1.e4c466a\n", 30  py-test-pkg 1.65-1.e4c466a
) = 30
stat("/gnu/store/ar2hw6xc1ipskrqf9nc3nz2mc780phgd-guix-module-union/share/guile/site/3.0/guix/inferior.scm", {st_mode=S_IFREG|0444, st_size=30370, ...}) = 0
stat("/gnu/store/ar2hw6xc1ipskrqf9nc3nz2mc780phgd-guix-module-union/lib/guile/3.0/site-ccache/guix/inferior.go", {st_mode=S_IFREG|0444, st_size=333037, ...}) = 0
openat(AT_FDCWD, "/gnu/store/ar2hw6xc1ipskrqf9nc3nz2mc780phgd-guix-module-union/lib/guile/3.0/site-ccache/guix/inferior.go", O_RDONLY|O_CLOEXEC) = 14
lseek(14, 0, SEEK_END)                  = 333037
mmap(NULL, 333037, PROT_READ, MAP_PRIVATE, 14, 0) = 0x7f3e8e605000
close(14)                               = 0
mprotect(0x7f3e8e635000, 89200, PROT_READ|PROT_WRITE) = 0
pipe([14, 15])                          = 0
fstat(14, {st_mode=S_IFIFO|0600, st_size=0, ...}) = 0
fstat(15, {st_mode=S_IFIFO|0600, st_size=0, ...}) = 0
pipe([16, 17])                          = 0
fstat(16, {st_mode=S_IFIFO|0600, st_size=0, ...}) = 0
fstat(17, {st_mode=S_IFIFO|0600, st_size=0, ...}) = 0
prlimit64(0, RLIMIT_NOFILE, NULL, {rlim_cur=1024, rlim_max=1024*1024}) = 0
clone(child_stack=NULL, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, child_tidptr=0x7f3e9faae3d0) = 15339
close(15)                               = 0
close(16)                               = 0
read(14, "", 16384)                     = 0
close(14)                               = 0
close(17)                               = 0
wait4(15339, [{WIFEXITED(s) && WEXITSTATUS(s) == 127}], 0, NULL) = 15339
stat("/gnu/store/ar2hw6xc1ipskrqf9nc3nz2mc780phgd-guix-module-union/share/guile/site/3.0/guix/repl.scm", {st_mode=S_IFREG|0444, st_size=4925, ...}) = 0
pipe([14, 15])                          = 0
fstat(14, {st_mode=S_IFIFO|0600, st_size=0, ...}) = 0
fstat(15, {st_mode=S_IFIFO|0600, st_size=0, ...}) = 0
pipe([16, 17])                          = 0
fstat(16, {st_mode=S_IFIFO|0600, st_size=0, ...}) = 0
fstat(17, {st_mode=S_IFIFO|0600, st_size=0, ...}) = 0
prlimit64(0, RLIMIT_NOFILE, NULL, {rlim_cur=1024, rlim_max=1024*1024}) = 0
clone(child_stack=NULL, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, child_tidptr=0x7f3e9faae3d0) = 15340
close(15)                               = 0
close(16)                               = 0
read(14, "(repl-version 0 1 1)\n", 16384) = 21
write(17, "(() repl-version 0 1 1)\n", 24) = 24
write(17, "(use-modules (guix))\n", 21) = 21
read(14, 
--8<---------------cut here---------------end--------------->8---


When killing the halted process:

ab+ 16058 16046  0 12:35 pts/3    00:00:00 guile -L /tmp/test-profile2-1-link/share/guile/site/3.0 -C /tmp/test-profile2-1-link/share/guile/site/3.0 -C /tmp/test-profile2-1-link/lib/guile/3.0/site-ccache -c (begin (primitive-load "/gnu/store/ar2hw6xc1ipskrqf9nc3nz2mc780phgd-guix-module-union/share/guile/site/3.0/guix/repl.scm") ((@ (guix repl) machine-repl)))
kill 16058

I get:

--8<---------------cut here---------------start------------->8---
read(14, "", 16384)                     = 0
--- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=16057, si_uid=1002, si_status=127, si_utime=0, si_stime=0} ---
close(14)                               = 0
close(17)                               = 0
wait4(16057, [{WIFEXITED(s) && WEXITSTATUS(s) == 127}], 0, NULL) = 16057
stat("/gnu/store/ar2hw6xc1ipskrqf9nc3nz2mc780phgd-guix-module-union/share/guile/site/3.0/guix/repl.scm", {st_mode=S_IFREG|0444, st_size=4925, ...}) = 0
pipe([14, 15])                          = 0
fstat(14, {st_mode=S_IFIFO|0600, st_size=0, ...}) = 0
fstat(15, {st_mode=S_IFIFO|0600, st_size=0, ...}) = 0
pipe([16, 17])                          = 0
fstat(16, {st_mode=S_IFIFO|0600, st_size=0, ...}) = 0
fstat(17, {st_mode=S_IFIFO|0600, st_size=0, ...}) = 0
prlimit64(0, RLIMIT_NOFILE, NULL, {rlim_cur=1024, rlim_max=1024*1024}) = 0
clone(child_stack=NULL, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, child_tidptr=0x7fb63c0093d0) = 16058
close(15)                               = 0
close(16)                               = 0
read(14, "(repl-version 0 1 1)\n", 16384) = 21
write(17, "(() repl-version 0 1 1)\n", 24) = 24
write(17, "(use-modules (guix))\n", 21) = 21
read(14, "", 16384)                     = 0
write(2, "Backtrace:\n", 11Backtrace:
)            = 11
futex(0x7fb63c773648, FUTEX_WAKE_PRIVATE, 2147483647) = 0
write(2, "          11 (primitive-load \"/h"..., 74          11 (primitive-load "/home/ubuntu/.config/guix/curre…")
) = 74
write(2, "In guix/ui.scm:\n", 16In guix/ui.scm:
)       = 16
mmap(0x7fb62ad12000, 65536, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fb62ace0000
write(2, "  2154:12 10 (run-guix-command _"..., 38  2154:12 10 (run-guix-command _ . _)
) = 38
write(2, "In ice-9/boot-9.scm:\n", 21In ice-9/boot-9.scm
--8<---------------cut here---------------end--------------->8---

I'm running out of steam a bit here but both this error in ui.scm@2154
and the original backtrace I posted ui.scm@2127 come from the
run-guix-command function on attempting a primitive-load of, I assume,
the current guix script.




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

* Re: Channel details of profile generation
  2021-01-09 13:34       ` Phil
@ 2021-01-11 17:34         ` zimoun
  2021-01-12 19:16           ` Phil
  0 siblings, 1 reply; 9+ messages in thread
From: zimoun @ 2021-01-11 17:34 UTC (permalink / raw)
  To: Phil; +Cc: help-guix

Hi,

On Sat, 09 Jan 2021 at 13:34, Phil <phil@beadling.co.uk> wrote:

> Given a date/time and a profile, it should be possible not only to tell
> me what generation of that profile was active at that date/time, but
> also the corresponding commit ids on the heads of each channels used to
> source the packages.

Yes.  It is already possible because the information is in the file
’<profile>/manifest’.  However, there is no tooling to do that easily
yet.  Maybe an option ’--export-manifest’ is coming… ;-)

http://logs.guix.gnu.org/guix-hpc/2021-01-11.log


> So my tool works like this - and, I believe, the output is correct and
> methodology sane:
>
> --8<---------------cut here---------------start------------->8---
>
> ubuntu@test-image:~$ guix repl -- profile-generation-on-datetime.scm 2020-12-24T12:00:00 guix-profiles/py-test-pkg-profile
>
> Profile Dir: guix-profiles/py-test-pkg-profile-39-link
>
> \Generation 39  Dec 24 2020 11:24:23\
>
> Package/Channel Details:
>   py-test-pkg 1.53
>      URL: https://git.savannah.gnu.org/git/guix.git
>      Branch: master
>      Commit: 13d532a91178be7b6919b85685b150f941116dfc
>
>      URL: ssh://git@bbserver:7799/ea/guix-packages.git
>      Branch: master
>      Commit: ad21880272356219a9e33888cd0c237c8ece02d3
>
>   python 3.8.2
>      URL: https://git.savannah.gnu.org/git/guix.git
>      Branch: master
>      Commit: 13d532a91178be7b6919b85685b150f941116dfc
>
> --8<---------------cut here---------------end--------------->8---

Cool!

> Now, ignoring the date/time logic, all my tool is doing is returning the
> Package/Channel Details (via the profile manifest) as per above - when
> provided with a profile and a generation number.

Yes.


> ***This is the crux of my original question - can I get the commit id data
> supplied by my script for a given profile/generation, from the command
> line using already available guix tools?***

Not yet.


> (I think the answer to this is - no you cannot do it from the command line)
>
> The follow-up question was - if not, is my script's approach sane?

It seems.  From my understanding after a quick look.


> PART 2:
>
> Separately I, probably incorrectly, thought that I might be able to use some
> incantation of 'guix pull -l' to achieve the same ends as my script,
> given pull's output does seem to include the channel commit ids.

Well, it’s what I have tried to explain. :-)


> I can't argue with this - I need to do some more digging here to see why
> my use of guix pull is barfing, there are some differences between your
> test and mine - for example the use of the ssh protocol in the second
> channel, so the 2 tests are not identical, but as you see below I run
> into issues replicating even with the guix-science channel.

Do you mean issues when replicating my example with only the channels
guix and guix-science?


> --8<---------------cut here---------------start------------->8---
> $ guix package -m my-manifest-2.scm -p /tmp/test-profile
> The following packages will be installed:
>    python              3.8.2
>    python-nose-exclude 0.5.0
>
> $ guix package -p /tmp/test-profile -l                  
> \Generation 1   Jan 09 2021 11:39:07\
>   python        3.8.2   out     /gnu/store/9h5pjxj879y9rzy04m1v9835l4fblw95-python-3.8.2
>
> \Generation 2   Jan 09 2021 11:43:58\   (current)
>  + python-nose-exclude  0.5.0   out     /gnu/store/k3n4qxakw4rjjg81sfkaxcgln5xhaj3r-python-nose-exclude-0.5.0
>
> $ guix pull -p /tmp/test-profile -l                     
> \Generation 1   Jan 09 2021 11:39:07\
>   python 3.8.2
> \Generation 2   Jan 09 2021 11:43:58\   (current)
>   python-nose-exclude 0.5.0
>   python 3.8.2
> ^C <-- It's hanging here so I exit with ctrl-c
> --8<---------------cut here---------------end--------------->8---

By hanging, do you mean “you were not enough patient“? or “after several
minutes” (10-20min), it was not finished yet?



> Here's the final bit of the strace from the last output to stdout to the
> 'guix pull' hanging:
>
> --8<---------------cut here---------------start------------->8---
> write(1, "  py-test-pkg 1.65-1.e4c466a\n", 30  py-test-pkg 1.65-1.e4c466a

[...]

> read(14, 
> --8<---------------cut here---------------end--------------->8---

Thank for the details.  Well, does it fail or is it slow?


> I'm running out of steam a bit here but both this error in ui.scm@2154
> and the original backtrace I posted ui.scm@2127 come from the
> run-guix-command function on attempting a primitive-load of, I assume,
> the current guix script.

The bracktrace is a fail.  But I am not able to reproduce.
For your experiment, I do not know if it is failure or slowness.


All the best,
simon



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

* Re: Channel details of profile generation
  2021-01-11 17:34         ` zimoun
@ 2021-01-12 19:16           ` Phil
  2021-01-13 14:28             ` Phil
  2021-01-13 20:15             ` zimoun
  0 siblings, 2 replies; 9+ messages in thread
From: Phil @ 2021-01-12 19:16 UTC (permalink / raw)
  To: zimoun; +Cc: help-guix

Hi,

Thanks - I think the original question is answered now - however I am
curious over why only I can reproduce issues with the incorrect use of
'guix pull'.  It's tempting to say it's just undefined behaviour and
move on with my life, but I've done a bit more digging....


* This appears to have nothing to do with defined channels - I have now
  removed the channel.scm completely and can still reproduce the
  problem.
* The problem occurs whenever 'guix pull -l' is called incorrectly on a
  standard profile which has > 1 generation in it.
* There are 2 outcomes I've observed so far - a) a backtrace is given,
  or b) the command halts for at least 27 minutes in what appears to be
  a frozen state (but could just be very slow).


When I sent my first e-mail about this issue I showed the backtrace as
per a) above.  I have now tried the experiment on a completely different
server and I can reproduce a), that is, I can create a profile
containing 1 package in 1st generation, and use 'guix pull -l' OK.

Then if I install another package for the 2nd generation I get the
backtrace occurring (see below).

However - I cannot reproduce b) myself on another machine, that is, I cannot
reproduce the freezing of 'guix pull -l' apart from on one specific
server.  Instead I get the backtrace.

Perhaps the problem is specific to running Guix on Ubuntu 18.04 as all
my servers run this?



ubuntu@foobar:~$ guix pull -p /tmp/test-profile-only-guix-3 -l
\Generation 1   Jan 12 2021 18:51:57\
  python 3.8.2
\Generation 2   Jan 12 2021 18:52:19\   (current)
  python 3.8.2
  python-numpy 1.17.3
Backtrace:
          11 (primitive-load "/home/ubuntu/.config/guix/curre…")
In guix/ui.scm:
  2154:12 10 (run-guix-command _ . _)
In ice-9/boot-9.scm:
  1736:10  9 (with-exception-handler _ _ #:unwind? _ # _)
  1731:15  8 (with-exception-handler #<procedure 7f757a497390 at ic…> …)
  1731:15  7 (with-exception-handler #<procedure 7f757a497360 at ic…> …)
  1731:15  6 (with-exception-handler #<procedure 7f757a49f9c0 at ic…> …)
In guix/scripts/pull.scm:
    636:4  5 (_)
In guix/memoization.scm:
    100:0  4 (_ #<hash-table 7f757a499fa0 0/31> "/tmp/test-profile-…" …)
In guix/scripts/pull.scm:
   538:21  3 (_)
In guix/inferior.scm:
    256:2  2 (inferior-available-packages #f)
   251:13  1 (send-inferior-request (defined? (quote #)) #f)
In ice-9/boot-9.scm:
  1669:16  0 (raise-exception _ #:continuable? _)

ice-9/boot-9.scm:1669:16: In procedure raise-exception:
In procedure struct-vtable: Wrong type argument in position 1 (expecting struct): #f



A few more comments inline.


zimoun writes:

> yet.  Maybe an option ’--export-manifest’ is coming… ;-)
>
> http://logs.guix.gnu.org/guix-hpc/2021-01-11.log

Cool - thanks for pointer.

> Do you mean issues when replicating my example with only the channels
> guix and guix-science?

I've actually reduced this down to no channel.scm file (so only default
guix channel), and picking 2 packages in guix - eg python and python-numpy.

>
> By hanging, do you mean “you were not enough patient“? or “after several
> minutes” (10-20min), it was not finished yet?

I've waited up to 27 mins with no change.

> Thank for the details.  Well, does it fail or is it slow?

When run with only 1 generation the command returns immediately, so if
it is slow, then there's a marked degrading of performance from
generation 1 -> 2.  My guess is it's hanging not slow - but it is a
guess.


>
>
>> I'm running out of steam a bit here but both this error in ui.scm@2154
>> and the original backtrace I posted ui.scm@2127 come from the
>> run-guix-command function on attempting a primitive-load of, I assume,
>> the current guix script.
>
> The bracktrace is a fail.  But I am not able to reproduce.
> For your experiment, I do not know if it is failure or slowness.

To be clear the backtrace only failed once I killed the process (after
waiting several minutes as discussed above).  My hope was by killing it
the strace might show something illuminating.




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

* Re: Channel details of profile generation
  2021-01-12 19:16           ` Phil
@ 2021-01-13 14:28             ` Phil
  2021-01-13 20:15             ` zimoun
  1 sibling, 0 replies; 9+ messages in thread
From: Phil @ 2021-01-13 14:28 UTC (permalink / raw)
  To: zimoun, help-guix

Just to add - I repeated the 'guix pull' experiments in the original
e-mail on Guix System using a VirtualBox and I could not reproduce
either the hanging or backtrace issues described.

So whatever the issue is it's limited to foreign OS use of Guix - but
does seem to be repeatable on Ubuntu 18.04 (at least the backtrace is).

This may explain why Simon could not reproduce?

Phil writes:

> Hi,
>
> Thanks - I think the original question is answered now - however I am
> curious over why only I can reproduce issues with the incorrect use of
> 'guix pull'.  It's tempting to say it's just undefined behaviour and
> move on with my life, but I've done a bit more digging....


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

* Re: Channel details of profile generation
  2021-01-12 19:16           ` Phil
  2021-01-13 14:28             ` Phil
@ 2021-01-13 20:15             ` zimoun
  1 sibling, 0 replies; 9+ messages in thread
From: zimoun @ 2021-01-13 20:15 UTC (permalink / raw)
  To: Phil; +Cc: help-guix

Hi,
On Tue, 12 Jan 2021 at 19:16, Phil <phil@beadling.co.uk> wrote:

> Then if I install another package for the 2nd generation I get the
> backtrace occurring (see below).

I cannot reproduce this.  However, I note that it is what I consider as
slow: ~15s to display.


> Perhaps the problem is specific to running Guix on Ubuntu 18.04 as all
> my servers run this?

Hum?  I do not know.  Do you have the same configuration (PATH etc.) on
your servers (which have the issue) and on your other machine (which has
not).

What does

  $ which guix

say?

>> Do you mean issues when replicating my example with only the channels
>> guix and guix-science?
>
> I've actually reduced this down to no channel.scm file (so only default
> guix channel), and picking 2 packages in guix - eg python and
> python-numpy.

--8<---------------cut here---------------start------------->8---
$ guix package -i python -p /tmp/test-profile -v 0
Le paquet suivant sera installé :
   python 3.8.2

conseil : Pensez à paramétrer les variables d'environnement nécessaires en lançant :

     GUIX_PROFILE="/tmp/test-profile"
     . "$GUIX_PROFILE/etc/profile"

Autrement, regardez `guix package --search-paths -p "/tmp/test-profile"'.

$ guix package -i python-numpy -p /tmp/test-profile -v 0
Le paquet suivant sera installé :
   python-numpy 1.17.3

conseil : Pensez à paramétrer les variables d'environnement nécessaires en lançant :

     GUIX_PROFILE="/tmp/test-profile"
     . "$GUIX_PROFILE/etc/profile"

Autrement, regardez `guix package --search-paths -p "/tmp/test-profile"'.

$ time guix pull -p /tmp/test-profile -l
Génération 1    13 janv. 2021 21:04:10
  python 3.8.2
Génération 2    13 janv. 2021 21:04:29  (actuelle)
  python 3.8.2
  python-numpy 1.17.3

real    0m5,989s
user    0m14,709s
sys     0m0,572s
--8<---------------cut here---------------end--------------->8---



All the best,
simon


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

end of thread, other threads:[~2021-01-13 20:19 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-12-28 17:52 Channel details of profile generation Phil
2020-12-30 13:41 ` zimoun
2021-01-04 17:29   ` Phil
2021-01-05 17:01     ` zimoun
2021-01-09 13:34       ` Phil
2021-01-11 17:34         ` zimoun
2021-01-12 19:16           ` Phil
2021-01-13 14:28             ` Phil
2021-01-13 20:15             ` zimoun

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