unofficial mirror of bug-guix@gnu.org 
 help / color / mirror / code / Atom feed
* Integration of the Nix daemon
@ 2012-12-03 22:13 Ludovic Courtès
  2012-12-13 21:17 ` Ludovic Courtès
  0 siblings, 1 reply; 25+ messages in thread
From: Ludovic Courtès @ 2012-12-03 22:13 UTC (permalink / raw)
  To: bug-guix

Hi,

I just pushed a new ‘nix-integration’ branch.  The goal is to import the
subset of Nix that we need to run the daemon in Guix itself, so that 0.1
will hopefully be self-contained.

The branch adds a script to synchronize the code with upstream Nix
(think ‘gnulib-update’.)  It extends the build system to build that C++
code, and adds a little bit of glue code to put it all together.

There’s still some functionality missing.  In Nix it’s provided by a
bunch of hairy Perl scripts that nix-daemon calls, but I’d like to
rework that part in an attempt to honor a zero-Perl policy.  :-)

Comments welcome!

Ludo’.

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

* Re: Integration of the Nix daemon
  2012-12-03 22:13 Integration of the Nix daemon Ludovic Courtès
@ 2012-12-13 21:17 ` Ludovic Courtès
  2012-12-13 22:06   ` Andreas Enge
  2012-12-13 23:17   ` Andreas Enge
  0 siblings, 2 replies; 25+ messages in thread
From: Ludovic Courtès @ 2012-12-13 21:17 UTC (permalink / raw)
  To: bug-guix

Hello!

I just merged that branch in ‘master’.  So now, you need to run
‘./bootstrap’ (and not just autoreconf) to initialize the package.

So now, unless ‘--disable-daemon’ is passed, a ‘guix-daemon’ binary is
built from C++, mostly taken from upstream Nix.

Please report any problems.  :-)

Ludo’.

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

* Re: Integration of the Nix daemon
  2012-12-13 21:17 ` Ludovic Courtès
@ 2012-12-13 22:06   ` Andreas Enge
  2012-12-13 22:56     ` Ludovic Courtès
  2012-12-13 23:17   ` Andreas Enge
  1 sibling, 1 reply; 25+ messages in thread
From: Andreas Enge @ 2012-12-13 22:06 UTC (permalink / raw)
  To: bug-guix

[-- Attachment #1: Type: text/plain, Size: 427 bytes --]

Am Donnerstag, 13. Dezember 2012 schrieb Ludovic Courtès:
> So now, unless ‘--disable-daemon’ is passed, a ‘guix-daemon’ binary is
> built from C++, mostly taken from upstream Nix.

I also tried "--disable-daemon". It does not make and install the daemon,
but guix-package still tries to communicate with a socket in the
installation directory. So it does not cooperate with the nix-worker
anymore.

Andreas

[-- Attachment #2: Type: text/html, Size: 2369 bytes --]

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

* Re: Integration of the Nix daemon
  2012-12-13 22:06   ` Andreas Enge
@ 2012-12-13 22:56     ` Ludovic Courtès
  2012-12-13 23:10       ` Andreas Enge
  0 siblings, 1 reply; 25+ messages in thread
From: Ludovic Courtès @ 2012-12-13 22:56 UTC (permalink / raw)
  To: Andreas Enge; +Cc: bug-guix

Andreas Enge <andreas@enge.fr> skribis:

> Am Donnerstag, 13. Dezember 2012 schrieb Ludovic Courtès:
>> So now, unless ‘--disable-daemon’ is passed, a ‘guix-daemon’ binary is
>> built from C++, mostly taken from upstream Nix.
>
> I also tried "--disable-daemon". It does not make and install the daemon,
> but guix-package still tries to communicate with a socket in the
> installation directory. So it does not cooperate with the nix-worker
> anymore.

Yes: in that case, you should use --localstatedir to specify the place
where nix-worker has its data and socket.

I guess README should mention it.

Ludo’.

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

* Re: Integration of the Nix daemon
  2012-12-13 22:56     ` Ludovic Courtès
@ 2012-12-13 23:10       ` Andreas Enge
  2013-01-15 23:03         ` Ludovic Courtès
  0 siblings, 1 reply; 25+ messages in thread
From: Andreas Enge @ 2012-12-13 23:10 UTC (permalink / raw)
  To: Ludovic Courtès; +Cc: bug-guix

[-- Attachment #1: Type: text/plain, Size: 383 bytes --]

Am Donnerstag, 13. Dezember 2012 schrieb Ludovic Courtès:
> Yes: in that case, you should use --localstatedir to specify the place
> where nix-worker has its data and socket.
> 
> I guess README should mention it.

As well as
   guix-package --help
One more reason to not have guix-package connect to the daemon when the
options --help or --version are passed.

Andreas

[-- Attachment #2: Type: text/html, Size: 2603 bytes --]

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

* Re: Integration of the Nix daemon
  2012-12-13 21:17 ` Ludovic Courtès
  2012-12-13 22:06   ` Andreas Enge
@ 2012-12-13 23:17   ` Andreas Enge
  2012-12-14 10:07     ` Andreas Enge
  2012-12-14 10:12     ` Ludovic Courtès
  1 sibling, 2 replies; 25+ messages in thread
From: Andreas Enge @ 2012-12-13 23:17 UTC (permalink / raw)
  To: bug-guix

[-- Attachment #1: Type: text/plain, Size: 465 bytes --]

The command
   ./pre-inst-env guix-build hello
fails with

error: build failed: substituter `/usr/local/guix-
git/libexec/nix/substituters/download-using-manifests.pl' failed: error: 
executing `/usr/local/guix-git/libexec/nix/substituters/download-using-
manifests.pl': No such file or directory

We have by
find /usr/local/guix-git/libexec

/usr/local/guix-git/libexec
/usr/local/guix-git/libexec/guix
/usr/local/guix-git/libexec/guix/list-runtime-roots

Andreas

[-- Attachment #2: Type: text/html, Size: 2976 bytes --]

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

* Re: Integration of the Nix daemon
  2012-12-13 23:17   ` Andreas Enge
@ 2012-12-14 10:07     ` Andreas Enge
  2012-12-14 23:07       ` Ludovic Courtès
  2012-12-14 10:12     ` Ludovic Courtès
  1 sibling, 1 reply; 25+ messages in thread
From: Andreas Enge @ 2012-12-14 10:07 UTC (permalink / raw)
  To: bug-guix

[-- Attachment #1: Type: text/plain, Size: 1007 bytes --]

Am Freitag, 14. Dezember 2012 schrieb Andreas Enge:
> The command
>    ./pre-inst-env guix-build hello
> fails with
> 
> error: build failed: substituter `/usr/local/guix-
> git/libexec/nix/substituters/download-using-manifests.pl' failed: error:
> executing `/usr/local/guix-git/libexec/nix/substituters/download-using-
> manifests.pl': No such file or directory

As for nix-worker, it helps to call
   NIX_SUBSTITUTERS="" guix-daemon --build-users-group=nixbld
Could something be done globally about this?

The next error message is
@ build-started /nix/store/6q7s15hqyqxkxnxxx1d7jj2rm6q28ib9-module-
import.drv /nix/store/fdzwc7ss7zbpg60n5h2kpp98l8sbjx9f-module-import 
x86_64-linux /usr/local/guix-
git/var/log/nix/drvs/6q7s15hqyqxkxnxxx1d7jj2rm6q28ib9-module-import.drv.bz2
error: build failed: all build users are currently in use; consider 
creating additional users and adding them to the `nixbld' group

although I just started the guix daemon and there are 10 users in the
group nixbld. 

Andreas

[-- Attachment #2: Type: text/html, Size: 4679 bytes --]

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

* Re: Integration of the Nix daemon
  2012-12-13 23:17   ` Andreas Enge
  2012-12-14 10:07     ` Andreas Enge
@ 2012-12-14 10:12     ` Ludovic Courtès
  1 sibling, 0 replies; 25+ messages in thread
From: Ludovic Courtès @ 2012-12-14 10:12 UTC (permalink / raw)
  To: Andreas Enge; +Cc: bug-guix

Andreas Enge <andreas@enge.fr> skribis:

> The command
>    ./pre-inst-env guix-build hello
> fails with
>
> error: build failed: substituter `/usr/local/guix-
> git/libexec/nix/substituters/download-using-manifests.pl' failed: error: 
> executing `/usr/local/guix-git/libexec/nix/substituters/download-using-
> manifests.pl': No such file or directory

Ouch, right.

For now, ‘guix-daemon’ has to be run like this:

  NIX_SUBSTITUTERS="" guix-daemon &

I’ll change it to be the default, so the env. var. doesn’t need to be set.

That’s because I didn’t want to import Nix’s substituters (scripts that
download pre-compiled binaries), mostly because they’re written in Perl.

We need a replacement, of course, but perhaps after 0.1 is out.

Thanks,
Ludo’.

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

* Re: Integration of the Nix daemon
  2012-12-14 10:07     ` Andreas Enge
@ 2012-12-14 23:07       ` Ludovic Courtès
  2012-12-14 23:23         ` Andreas Enge
  0 siblings, 1 reply; 25+ messages in thread
From: Ludovic Courtès @ 2012-12-14 23:07 UTC (permalink / raw)
  To: Andreas Enge; +Cc: bug-guix

Hi!

Andreas Enge <andreas@enge.fr> skribis:

> Am Freitag, 14. Dezember 2012 schrieb Andreas Enge:
>> The command
>>    ./pre-inst-env guix-build hello
>> fails with
>> 
>> error: build failed: substituter `/usr/local/guix-
>> git/libexec/nix/substituters/download-using-manifests.pl' failed: error:
>> executing `/usr/local/guix-git/libexec/nix/substituters/download-using-
>> manifests.pl': No such file or directory
>
> As for nix-worker, it helps to call
>    NIX_SUBSTITUTERS="" guix-daemon --build-users-group=nixbld
> Could something be done globally about this?

Commit 335dd76 disables substituters.  We’ll re-enable them once it’s
actually (re)implemented.  :-)

> The next error message is
> @ build-started /nix/store/6q7s15hqyqxkxnxxx1d7jj2rm6q28ib9-module-
> import.drv /nix/store/fdzwc7ss7zbpg60n5h2kpp98l8sbjx9f-module-import 
> x86_64-linux /usr/local/guix-
> git/var/log/nix/drvs/6q7s15hqyqxkxnxxx1d7jj2rm6q28ib9-module-import.drv.bz2
> error: build failed: all build users are currently in use; consider 
> creating additional users and adding them to the `nixbld' group
>
> although I just started the guix daemon and there are 10 users in the
> group nixbld. 

Hmm, can you try running guix-daemon with the newly-added ‘--debug’
option?

TIA,
Ludo’.

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

* Re: Integration of the Nix daemon
  2012-12-14 23:07       ` Ludovic Courtès
@ 2012-12-14 23:23         ` Andreas Enge
  2012-12-14 23:29           ` Andreas Enge
  2012-12-15 14:26           ` Ludovic Courtès
  0 siblings, 2 replies; 25+ messages in thread
From: Andreas Enge @ 2012-12-14 23:23 UTC (permalink / raw)
  To: Ludovic Courtès; +Cc: bug-guix


[-- Attachment #1.1: Type: text/plain, Size: 1826 bytes --]

Am Samstag, 15. Dezember 2012 schrieb Ludovic Courtès:
> Commit 335dd76 disables substituters.  We’ll re-enable them once it’s
> actually (re)implemented.  :-)

Nice!

> > The next error message is
> > @ build-started /nix/store/6q7s15hqyqxkxnxxx1d7jj2rm6q28ib9-module-
> > import.drv /nix/store/fdzwc7ss7zbpg60n5h2kpp98l8sbjx9f-module-import
> > x86_64-linux /usr/local/guix-
> > git/var/log/nix/drvs/6q7s15hqyqxkxnxxx1d7jj2rm6q28ib9-module-import.dr
> > v.bz2 error: build failed: all build users are currently in use;
> > consider creating additional users and adding them to the `nixbld'
> > group
> > although I just started the guix daemon and there are 10 users in the
> > group nixbld.
> Hmm, can you try running guix-daemon with the newly-added ‘--debug’
> option?

Not much to see. Here is the output:
acquiring global GC lock `/usr/local/guix-git/var/nix/gc.lock'
acquiring read lock on `/usr/local/guix-git/var/nix/temproots/29720'
acquiring write lock on `/usr/local/guix-git/var/nix/temproots/29720'
downgrading to read lock on `/usr/local/guix-git/var/nix/temproots/29720'
... (the last two lines 1918 times)
the following derivations will be built:
    /nix/store/rqllv82x33mfqvma7zbj2kjdkxdqdwpx-hello-2.8.drv
...
@ build-started /nix/store/6q7s15hqyqxkxnxxx1d7jj2rm6q28ib9-module-
import.drv /nix/store/fdzwc7ss7zbpg60n5h2kpp98l8sbjx9f-module-import 
x86_64-linux /usr/local/guix-
git/var/log/nix/drvs/6q7s15hqyqxkxnxxx1d7jj2rm6q28ib9-module-import.drv.bz2
error: build failed: all build users are currently in use; consider 
creating additional users and adding them to the `nixbld' group

I deleted /usr/local/guix-git/var/ and tried again
   ./pre-inst-env guix-build hello

The result is more varied, I am attaching it in case it is of any use.

Andreas

[-- Attachment #1.2: Type: text/html, Size: 7679 bytes --]

[-- Attachment #2: output.bz2 --]
[-- Type: application/x-bzip, Size: 15087 bytes --]

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

* Re: Integration of the Nix daemon
  2012-12-14 23:23         ` Andreas Enge
@ 2012-12-14 23:29           ` Andreas Enge
  2012-12-15 14:48             ` Ludovic Courtès
  2012-12-15 14:26           ` Ludovic Courtès
  1 sibling, 1 reply; 25+ messages in thread
From: Andreas Enge @ 2012-12-14 23:29 UTC (permalink / raw)
  To: bug-guix

[-- Attachment #1: Type: text/plain, Size: 196 bytes --]

One more comment: The size of guix-daemon is 9 804 696, that of
nix-worker 691 834, and the entire directory nix/bin contains
only 5 312 kB. A bit suspicious. Do you have an explanation?

Andreas

[-- Attachment #2: Type: text/html, Size: 1399 bytes --]

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

* Re: Integration of the Nix daemon
  2012-12-14 23:23         ` Andreas Enge
  2012-12-14 23:29           ` Andreas Enge
@ 2012-12-15 14:26           ` Ludovic Courtès
  2012-12-15 20:25             ` Andreas Enge
  1 sibling, 1 reply; 25+ messages in thread
From: Ludovic Courtès @ 2012-12-15 14:26 UTC (permalink / raw)
  To: Andreas Enge; +Cc: bug-guix

Hi!

Andreas Enge <andreas@enge.fr> skribis:

> Not much to see.

Oh right.  Actually, can you instead try this:

  guix-build --verbosity=4 hello

(Yes, this is a brand new option.  :-))

On my machine ‘guix-build’ emits messages like:

  |   |   |   found build user `nixbld1'
  |   |   |   found build user `nixbld2'
  |   |   |   found build user `nixbld3'
  |   |   |   found build user `nixbld4'
  |   |   |   found build user `nixbld5'
  |   |   |   found build user `nixbld6'
  |   |   |   found build user `nixbld7'
  |   |   |   found build user `nixbld8'
  |   |   |   found build user `nixbld9'
  |   |   |   found build user `nixbld10'
  |   |   |   trying user `nixbld1'

Ludo’.

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

* Re: Integration of the Nix daemon
  2012-12-14 23:29           ` Andreas Enge
@ 2012-12-15 14:48             ` Ludovic Courtès
  2012-12-15 19:38               ` Andreas Enge
  0 siblings, 1 reply; 25+ messages in thread
From: Ludovic Courtès @ 2012-12-15 14:48 UTC (permalink / raw)
  To: Andreas Enge; +Cc: bug-guix

Andreas Enge <andreas@enge.fr> skribis:

> One more comment: The size of guix-daemon is 9 804 696, that of
> nix-worker 691 834, and the entire directory nix/bin contains
> only 5 312 kB. A bit suspicious. Do you have an explanation?

Running ‘strip --strip-debug guix-daemon’ makes it go from 10 MiB to
just 1 MiB (this is C++!).

Also, guix-daemon is statically-linked against the Nix libraries,
whereas nix-daemon is dynamically linked against them.  Here,
/path/to/nix/lib/nix weighs in at around 2 MiB.

Does that answer your question?

Ludo’.

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

* Re: Integration of the Nix daemon
  2012-12-15 14:48             ` Ludovic Courtès
@ 2012-12-15 19:38               ` Andreas Enge
  0 siblings, 0 replies; 25+ messages in thread
From: Andreas Enge @ 2012-12-15 19:38 UTC (permalink / raw)
  To: Ludovic Courtès; +Cc: bug-guix

[-- Attachment #1: Type: text/plain, Size: 486 bytes --]

Am Samstag, 15. Dezember 2012 schrieb Ludovic Courtès:
> Running ‘strip --strip-debug guix-daemon’ makes it go from 10 MiB to
> just 1 MiB (this is C++!).
> 
> Also, guix-daemon is statically-linked against the Nix libraries,
> whereas nix-daemon is dynamically linked against them.  Here,
> /path/to/nix/lib/nix weighs in at around 2 MiB.
> 
> Does that answer your question?

Okay, very well. I saw that both were dynamically linked and started
to wonder.

Andreas

[-- Attachment #2: Type: text/html, Size: 3000 bytes --]

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

* Re: Integration of the Nix daemon
  2012-12-15 14:26           ` Ludovic Courtès
@ 2012-12-15 20:25             ` Andreas Enge
  2012-12-15 22:59               ` Ludovic Courtès
  0 siblings, 1 reply; 25+ messages in thread
From: Andreas Enge @ 2012-12-15 20:25 UTC (permalink / raw)
  To: Ludovic Courtès; +Cc: bug-guix


[-- Attachment #1.1: Type: text/plain, Size: 4210 bytes --]

Am Samstag, 15. Dezember 2012 schrieb Ludovic Courtès:
> Oh right.  Actually, can you instead try this:
>   guix-build --verbosity=4 hello
> (Yes, this is a brand new option.  :-))
> On my machine ‘guix-build’ emits messages like:
>   |   |   |   found build user `nixbld1'
>   |   |   |   found build user `nixbld2'
>   |   |   |   found build user `nixbld3'
>   |   |   |   found build user `nixbld4'
>   |   |   |   found build user `nixbld5'
>   |   |   |   found build user `nixbld6'
>   |   |   |   found build user `nixbld7'
>   |   |   |   found build user `nixbld8'
>   |   |   |   found build user `nixbld9'
>   |   |   |   found build user `nixbld10'
>   |   |   |   trying user `nixbld1'

Yes, I see the same messages, then

|   |   |   trying user `nixbld1'
|   |   |   killing all processes running under uid `30001'
|   |   |   setting up chroot environment in 
`/nix/store/6q7s15hqyqxkxnxxx1d7jj2rm6q28ib9-module-import.drv.chroot'
|   |   |   executing builder `/nix/store/7ys18z66aih9dwzlwkj2jynk05a3xsds-
guile-bootstrap-2.0/bin/guile'
|   |   |   @ build-started /nix/store/6q7s15hqyqxkxnxxx1d7jj2rm6q28ib9-
module-import.drv /nix/store/fdzwc7ss7zbpg60n5h2kpp98l8sbjx9f-module-import 
x86_64-linux /usr/local/guix-
git/var/log/nix/drvs/6q7s15hqyqxkxnxxx1d7jj2rm6q28ib9-module-import.drv.bz2
|   |   building of `/nix/store/g1acby4isvypwrs141yl8wi9sr58wcr3-
gc-7.2alpha6.tar.gz.drv': all outputs substituted (maybe)
|   |   building of `/nix/store/2d4zra8i0j93qfvvbcxsd59fhphkgzfq-guile-
bootstrap-2.0.drv': created
|   |   building of `/nix/store/2d4zra8i0j93qfvvbcxsd59fhphkgzfq-guile-
bootstrap-2.0.drv': woken up
|   |   substitution of `/nix/store/davrb8rkw5q74y9j8b99jmq3ypm59pbc-
gc-7.2alpha6.tar.gz-guile-builder': created
|   |   substitution of `/nix/store/davrb8rkw5q74y9j8b99jmq3ypm59pbc-
gc-7.2alpha6.tar.gz-guile-builder': woken up
|   |   building of `/nix/store/2x28xlwzi66p0ydk6iwy008py9g7fg98-
perl-5.16.1.tar.gz.drv': all outputs substituted (maybe)
|   |   substitution of `/nix/store/aja3695yjwwm1zlwfqpfn4qi77s5mql1-
perl-5.16.1.tar.gz-guile-builder': created
|   |   substitution of `/nix/store/aja3695yjwwm1zlwfqpfn4qi77s5mql1-
perl-5.16.1.tar.gz-guile-builder': woken up
|   |   building of `/nix/store/imzn9c8knqvy65vxvm7b4w010xvx3qpi-module-
import.drv': trying to build
|   |   locking path `/nix/store/2psl4274zb67avwqhwa7d5afwjf8nk86-module-
import'
|   |   lock acquired on `/nix/store/2psl4274zb67avwqhwa7d5afwjf8nk86-
module-import.lock'
|   |   building path(s) `/nix/store/2psl4274zb67avwqhwa7d5afwjf8nk86-
module-import'
|   |   |   found build user `nixbld1'
|   |   |   found build user `nixbld2'
|   |   |   found build user `nixbld3'
|   |   |   found build user `nixbld4'
|   |   |   found build user `nixbld5'
|   |   |   found build user `nixbld6'
|   |   |   found build user `nixbld7'
|   |   |   found build user `nixbld8'
|   |   |   found build user `nixbld9'
|   |   |   found build user `nixbld10'
|   |   |   trying user `nixbld1'
|   |   |   trying user `nixbld2'
|   |   |   trying user `nixbld3'
|   |   |   trying user `nixbld4'
|   |   |   trying user `nixbld5'
|   |   |   trying user `nixbld6'
|   |   |   trying user `nixbld7'
|   |   |   trying user `nixbld8'
|   |   |   trying user `nixbld9'
|   |   |   trying user `nixbld10'
|   building of `/nix/store/rqllv82x33mfqvma7zbj2kjdkxdqdwpx-
hello-2.8.drv': goal destroyed

(lots of goal destroyed)

|   building of `/nix/store/hn55pz6ws2c26w8jbgmgzywmj9k6aghw-module-import-
compiled.drv': goal destroyed
|   killing all processes running under uid `30001'
|   recursively deleting path `/tmp/nix-build-module-import.drv-0'
|   recursively deleting path `/nix/store/6q7s15hqyqxkxnxxx1d7jj2rm6q28ib9-
module-import.drv.chroot'
|   lock released on `/nix/store/fdzwc7ss7zbpg60n5h2kpp98l8sbjx9f-module-
import.lock'
|   building of `/nix/store/6q7s15hqyqxkxnxxx1d7jj2rm6q28ib9-module-
import.drv': goal destroyed
error: build failed: all build users are currently in use; consider 
creating additional users and adding them to the `nixbld' group

The full output is attached.

Andreas

[-- Attachment #1.2: Type: text/html, Size: 14792 bytes --]

[-- Attachment #2: output.bz2 --]
[-- Type: application/x-bzip, Size: 21651 bytes --]

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

* Re: Integration of the Nix daemon
  2012-12-15 20:25             ` Andreas Enge
@ 2012-12-15 22:59               ` Ludovic Courtès
  2012-12-16 11:16                 ` Andreas Enge
  0 siblings, 1 reply; 25+ messages in thread
From: Ludovic Courtès @ 2012-12-15 22:59 UTC (permalink / raw)
  To: Andreas Enge; +Cc: bug-guix

Hi,

Andreas Enge <andreas@enge.fr> skribis:

> |   |   |   found build user `nixbld1'
> |   |   |   found build user `nixbld2'
> |   |   |   found build user `nixbld3'
> |   |   |   found build user `nixbld4'
> |   |   |   found build user `nixbld5'
> |   |   |   found build user `nixbld6'
> |   |   |   found build user `nixbld7'
> |   |   |   found build user `nixbld8'
> |   |   |   found build user `nixbld9'
> |   |   |   found build user `nixbld10'
> |   |   |   trying user `nixbld1'
> |   |   |   trying user `nixbld2'
> |   |   |   trying user `nixbld3'
> |   |   |   trying user `nixbld4'
> |   |   |   trying user `nixbld5'
> |   |   |   trying user `nixbld6'
> |   |   |   trying user `nixbld7'
> |   |   |   trying user `nixbld8'
> |   |   |   trying user `nixbld9'
> |   |   |   trying user `nixbld10'

First, guix-daemon is running as root, right?

That seems to suggest that there’s a lock on each of these.  What does
‘ls -l /nix/var/nix/userpool/’ report?

Can you also try running guix-daemon in strace, and then check then
fcntl(fd, F_SETLKW, _) calls for user locks?

TIA,
Ludo’.

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

* Re: Integration of the Nix daemon
  2012-12-15 22:59               ` Ludovic Courtès
@ 2012-12-16 11:16                 ` Andreas Enge
  2012-12-16 16:36                   ` Ludovic Courtès
  2012-12-17 21:16                   ` Ludovic Courtès
  0 siblings, 2 replies; 25+ messages in thread
From: Andreas Enge @ 2012-12-16 11:16 UTC (permalink / raw)
  To: Ludovic Courtès; +Cc: bug-guix

[-- Attachment #1: Type: text/plain, Size: 900 bytes --]

Am Samstag, 15. Dezember 2012 schrieb Ludovic Courtès:
> First, guix-daemon is running as root, right?

Yes, in a separate terminal as
   NIX_SUBSTITUTERS="" guix-daemon --build-users-group=nixbld

> That seems to suggest that there’s a lock on each of these.  What does
> ‘ls -l /nix/var/nix/userpool/’ report?

-rw------- 1 root root 0 Dez 10 23:30 30001

/etc/group contains a line
nixbld:!:30000:nixbld1,nixbld2,nixbld3,nixbld4,nixbld5,nixbld6,nixbld7,nixbld8,nixbld9,nixbld10

and /etc/passwd:
nixbld1:x:30001:65534:Nix build user 1:/var/empty:/noshell
...
nixbld10:x:30001:65534:Nix build user 10:/var/empty:/noshell

> Can you also try running guix-daemon in strace, and then check then
> fcntl(fd, F_SETLKW, _) calls for user locks?

I find none of these:
   strace ./pre-inst-env guix-build hello 2>&1 | grep fcntl | grep F_SETLKW
returns nothing.

Andreas

[-- Attachment #2: Type: text/html, Size: 5339 bytes --]

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

* Re: Integration of the Nix daemon
  2012-12-16 11:16                 ` Andreas Enge
@ 2012-12-16 16:36                   ` Ludovic Courtès
  2012-12-16 16:56                     ` Andreas Enge
  2012-12-17 21:16                   ` Ludovic Courtès
  1 sibling, 1 reply; 25+ messages in thread
From: Ludovic Courtès @ 2012-12-16 16:36 UTC (permalink / raw)
  To: Andreas Enge; +Cc: bug-guix

Hi,

Andreas Enge <andreas@enge.fr> skribis:

> Am Samstag, 15. Dezember 2012 schrieb Ludovic Courtès:

[...]

>> Can you also try running guix-daemon in strace, and then check then
>> fcntl(fd, F_SETLKW, _) calls for user locks?
>
> I find none of these:
>    strace ./pre-inst-env guix-build hello 2>&1 | grep fcntl | grep F_SETLKW

No, could you run guix-daemon in strace?

TIA,
Ludo’.

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

* Re: Integration of the Nix daemon
  2012-12-16 16:36                   ` Ludovic Courtès
@ 2012-12-16 16:56                     ` Andreas Enge
  2012-12-16 16:58                       ` Ludovic Courtès
  0 siblings, 1 reply; 25+ messages in thread
From: Andreas Enge @ 2012-12-16 16:56 UTC (permalink / raw)
  To: Ludovic Courtès; +Cc: bug-guix

[-- Attachment #1: Type: text/plain, Size: 2848 bytes --]

Am Sonntag, 16. Dezember 2012 schrieb Ludovic Courtès:
> No, could you run guix-daemon in strace?

Sorry, I did not read the message carefully enough. None of the
commands do appear.

Before executing "./pre-inst-env guix-build hello", the last lines of
output are
set_tid_address(0x7fa0b97469f0)         = 7696
set_robust_list(0x7fa0b9746a00, 0x18)   = 0
futex(0x7fffc31e130c, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, 
NULL, 7fa0b9746720) = -1 EAGAIN (Resource temporarily unavailable)
rt_sigaction(SIGRTMIN, {0x7fa0b80d7ad0, [], SA_RESTORER|SA_SIGINFO, 
0x7fa0b80e1030}, NULL, 8) = 0
rt_sigaction(SIGRT_1, {0x7fa0b80d7b60, [], SA_RESTORER|SA_RESTART|
SA_SIGINFO, 0x7fa0b80e1030}, NULL, 8) = 0
rt_sigprocmask(SIG_UNBLOCK, [RTMIN RT_1], NULL, 8) = 0
getrlimit(RLIMIT_STACK, {rlim_cur=8192*1024, rlim_max=RLIM_INFINITY}) = 0
brk(0)                                  = 0x14bb000
brk(0x14dc000)                          = 0x14dc000
futex(0x7fa0b8e149e4, FUTEX_WAKE_PRIVATE, 2147483647) = 0
futex(0x7fa0b8e149f0, FUTEX_WAKE_PRIVATE, 2147483647) = 0
chdir("/")                              = 0
rt_sigaction(SIGCHLD, {0x406d70, ~[RTMIN RT_1], SA_RESTORER, 
0x7fa0b83204f0}, {SIG_DFL, [], 0}, 8) = 0
socket(PF_FILE, SOCK_STREAM, 0)         = 3
lstat("/usr/local/guix-git/var/nix/daemon-socket", {st_mode=S_IFDIR|
S_ISGID|0755, st_size=4096, ...}) = 0
chdir("/usr/local/guix-git/var/nix/daemon-socket") = 0
unlink("/usr/local/guix-git/var/nix/daemon-socket/socket") = 0
umask(0111)                             = 022
bind(3, {sa_family=AF_FILE, path="./socket"}, 110) = 0
umask(022)                              = 0111
chdir("/")                              = 0
listen(3, 5)                            = 0
fcntl(3, F_GETFD)                       = 0
fcntl(3, F_SETFD, FD_CLOEXEC)           = 0
accept(3,

When starting the execution, only the following lines are printed:
          {sa_family=AF_FILE, NULL}, [2]) = 4
fcntl(4, F_GETFD)                       = 0
fcntl(4, F_SETFD, FD_CLOEXEC)           = 0
getsockopt(4, SOL_SOCKET, SO_PEERCRED, "\24\36\0\0\350\3\0\0\350\3\0\0", 
[12]) = 0
write(2, "accepted connection from pid 770"..., 44accepted connection from 
pid 7700, uid 1000
) = 44
clone(child_stack=0, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, 
child_tidptr=0x7fa0b97469f0) = 7701
close(4)                                = 0
accept(3, spurious SIGPOLL
spurious SIGPOLL
spurious SIGPOLL
spurious SIGPOLL
spurious SIGPOLL
2187 operations
0x7fffc31dff10, [110])        = ? ERESTARTSYS (To be restarted)
--- SIGCHLD (Child exited) @ 0 (0) ---
wait4(-1, NULL, WNOHANG, NULL)          = 7701
wait4(-1, NULL, WNOHANG, NULL)          = -1 ECHILD (No child processes)
rt_sigreturn(0xffffffffffffffff)        = -1 EINTR (Interrupted system 
call)
accept(3,

Andreas

[-- Attachment #2: Type: text/html, Size: 11504 bytes --]

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

* Re: Integration of the Nix daemon
  2012-12-16 16:56                     ` Andreas Enge
@ 2012-12-16 16:58                       ` Ludovic Courtès
  2012-12-16 17:33                         ` Andreas Enge
  0 siblings, 1 reply; 25+ messages in thread
From: Ludovic Courtès @ 2012-12-16 16:58 UTC (permalink / raw)
  To: Andreas Enge; +Cc: bug-guix

Andreas Enge <andreas@enge.fr> skribis:

> When starting the execution, only the following lines are printed:
>           {sa_family=AF_FILE, NULL}, [2]) = 4
> fcntl(4, F_GETFD)                       = 0
> fcntl(4, F_SETFD, FD_CLOEXEC)           = 0
> getsockopt(4, SOL_SOCKET, SO_PEERCRED, "\24\36\0\0\350\3\0\0\350\3\0\0", 
> [12]) = 0
> write(2, "accepted connection from pid 770"..., 44accepted connection from 
> pid 7700, uid 1000
> ) = 44
> clone(child_stack=0, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, 

Oh, actually since the daemon forks (last line above), you need -f:

  # strace -o log -f guix-daemon --build-users-group=nixbld

Ludo’.

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

* Re: Integration of the Nix daemon
  2012-12-16 16:58                       ` Ludovic Courtès
@ 2012-12-16 17:33                         ` Andreas Enge
  0 siblings, 0 replies; 25+ messages in thread
From: Andreas Enge @ 2012-12-16 17:33 UTC (permalink / raw)
  To: Ludovic Courtès; +Cc: bug-guix


[-- Attachment #1.1: Type: text/plain, Size: 306 bytes --]

Am Sonntag, 16. Dezember 2012 schrieb Ludovic Courtès:
> Oh, actually since the daemon forks (last line above), you need -f:
>   # strace -o log -f guix-daemon --build-users-group=nixbld

Okay, output attached.

Towards the end, there are lots of "unfinished" and "bad file descriptor".

Andreas

[-- Attachment #1.2: Type: text/html, Size: 2131 bytes --]

[-- Attachment #2: log.bz2 --]
[-- Type: application/x-bzip, Size: 64701 bytes --]

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

* Re: Integration of the Nix daemon
  2012-12-16 11:16                 ` Andreas Enge
  2012-12-16 16:36                   ` Ludovic Courtès
@ 2012-12-17 21:16                   ` Ludovic Courtès
  2012-12-17 21:48                     ` Andreas Enge
  1 sibling, 1 reply; 25+ messages in thread
From: Ludovic Courtès @ 2012-12-17 21:16 UTC (permalink / raw)
  To: Andreas Enge; +Cc: bug-guix

Hi Andreas,

Andreas Enge <andreas@enge.fr> skribis:

> and /etc/passwd:
> nixbld1:x:30001:65534:Nix build user 1:/var/empty:/noshell
> ...
> nixbld10:x:30001:65534:Nix build user 10:/var/empty:/noshell

It just occurred to me: here nixbld1 and nixbld10 have the same UID,
which is wrong.  Can you check whether the others have a different UID?

Here I have:

--8<---------------cut here---------------start------------->8---
nixbld1:x:30001:30000:Nix build user 1:/var/empty:/run/current-system/sw/sbin/nologin
nixbld2:x:30002:30000:Nix build user 2:/var/empty:/run/current-system/sw/sbin/nologin
nixbld3:x:30003:30000:Nix build user 3:/var/empty:/run/current-system/sw/sbin/nologin
nixbld4:x:30004:30000:Nix build user 4:/var/empty:/run/current-system/sw/sbin/nologin
nixbld5:x:30005:30000:Nix build user 5:/var/empty:/run/current-system/sw/sbin/nologin
nixbld6:x:30006:30000:Nix build user 6:/var/empty:/run/current-system/sw/sbin/nologin
nixbld7:x:30007:30000:Nix build user 7:/var/empty:/run/current-system/sw/sbin/nologin
nixbld8:x:30008:30000:Nix build user 8:/var/empty:/run/current-system/sw/sbin/nologin
nixbld9:x:30009:30000:Nix build user 9:/var/empty:/run/current-system/sw/sbin/nologin
nixbld10:x:30010:30000:Nix build user 10:/var/empty:/run/current-system/sw/sbin/nologin
--8<---------------cut here---------------end--------------->8---

You should fix it with something like:

  for b in `seq 1 10`; do usermod -u `expr 30000 + $b` nixbld$b ; done

Crossing fingers...

Ludo’.

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

* Re: Integration of the Nix daemon
  2012-12-17 21:16                   ` Ludovic Courtès
@ 2012-12-17 21:48                     ` Andreas Enge
  2012-12-17 22:25                       ` Ludovic Courtès
  0 siblings, 1 reply; 25+ messages in thread
From: Andreas Enge @ 2012-12-17 21:48 UTC (permalink / raw)
  To: Ludovic Courtès; +Cc: bug-guix

[-- Attachment #1: Type: text/plain, Size: 511 bytes --]

Am Montag, 17. Dezember 2012 schrieb Ludovic Courtès:
> It just occurred to me: here nixbld1 and nixbld10 have the same UID,
> which is wrong.  Can you check whether the others have a different UID?

Silly me! I think that was it, a simple copy-and-paste error. Sorry for
taking your time. Strangely enough, the same setting worked for the
nix daemon.

Did anything in the base system change? I find myself redownloading gcc
and so on. Or does the switch to guix-daemon trigger a rebuild?

Andreas

[-- Attachment #2: Type: text/html, Size: 2739 bytes --]

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

* Re: Integration of the Nix daemon
  2012-12-17 21:48                     ` Andreas Enge
@ 2012-12-17 22:25                       ` Ludovic Courtès
  0 siblings, 0 replies; 25+ messages in thread
From: Ludovic Courtès @ 2012-12-17 22:25 UTC (permalink / raw)
  To: Andreas Enge; +Cc: bug-guix

Andreas Enge <andreas@enge.fr> skribis:

> Am Montag, 17. Dezember 2012 schrieb Ludovic Courtès:
>> It just occurred to me: here nixbld1 and nixbld10 have the same UID,
>> which is wrong.  Can you check whether the others have a different UID?
>
> Silly me! I think that was it, a simple copy-and-paste error. Sorry for
> taking your time.

Good to know.  :-)

> Strangely enough, the same setting worked for the nix daemon.

Hmm, interesting.  We’d have to follow the logic in libstore/build.cc...

> Did anything in the base system change? I find myself redownloading gcc
> and so on. Or does the switch to guix-daemon trigger a rebuild?

Normally core packages didn’t change on ‘master’.

Thanks,
Ludo’.

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

* Re: Integration of the Nix daemon
  2012-12-13 23:10       ` Andreas Enge
@ 2013-01-15 23:03         ` Ludovic Courtès
  0 siblings, 0 replies; 25+ messages in thread
From: Ludovic Courtès @ 2013-01-15 23:03 UTC (permalink / raw)
  To: Andreas Enge; +Cc: bug-guix

Andreas Enge <andreas@enge.fr> skribis:

> As well as
>    guix-package --help
> One more reason to not have guix-package connect to the daemon when the
> options --help or --version are passed.

This is finally fixed, in commit c4d6453.

Thanks!

Ludo’.

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

end of thread, other threads:[~2013-01-15 23:03 UTC | newest]

Thread overview: 25+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-12-03 22:13 Integration of the Nix daemon Ludovic Courtès
2012-12-13 21:17 ` Ludovic Courtès
2012-12-13 22:06   ` Andreas Enge
2012-12-13 22:56     ` Ludovic Courtès
2012-12-13 23:10       ` Andreas Enge
2013-01-15 23:03         ` Ludovic Courtès
2012-12-13 23:17   ` Andreas Enge
2012-12-14 10:07     ` Andreas Enge
2012-12-14 23:07       ` Ludovic Courtès
2012-12-14 23:23         ` Andreas Enge
2012-12-14 23:29           ` Andreas Enge
2012-12-15 14:48             ` Ludovic Courtès
2012-12-15 19:38               ` Andreas Enge
2012-12-15 14:26           ` Ludovic Courtès
2012-12-15 20:25             ` Andreas Enge
2012-12-15 22:59               ` Ludovic Courtès
2012-12-16 11:16                 ` Andreas Enge
2012-12-16 16:36                   ` Ludovic Courtès
2012-12-16 16:56                     ` Andreas Enge
2012-12-16 16:58                       ` Ludovic Courtès
2012-12-16 17:33                         ` Andreas Enge
2012-12-17 21:16                   ` Ludovic Courtès
2012-12-17 21:48                     ` Andreas Enge
2012-12-17 22:25                       ` Ludovic Courtès
2012-12-14 10:12     ` Ludovic Courtès

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/guix.git

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