[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: 'build-use-chroot = true' leads to 'ERROR: In procedure system*: No
Re: 'build-use-chroot = true' leads to 'ERROR: In procedure system*: No such file or directory'
Sun, 16 Dec 2012 17:46:36 +0100
Gnus/5.130005 (Ma Gnus v0.5) Emacs/24.2 (gnu/linux)
Nikita Karetnikov <address@hidden> skribis:
> I'm getting the same error with the following command:
> # ./pre-inst-env guix-daemon --build-users-group=nixbld -C 0
>> An option is to replace /bin/sh by the statically-linked Bash that’s in
> Same error.
OK. Can you copy/paste the actual error, because I’m losing track. ;-)
>> Another one, which I think we’ll do, is to change gnu-build-system.scm
>> to either run (system* "/path/to/our/bash" "./configure" ...), or call
>> ‘patch-shebangs’ on ‘configure’.
> I don't know how to change the former, but I've tried the latter.
> (phases set-paths unpack patch patch-shebangs configure build check
> install strip)
> AFAICT, it changed the build order, but the same error appeared
I actually made this change I had in mind in commit d008415, in the
Currently many packages can be built in ‘core-updates’ in a chroot
without /bin. The only thing remaining to be fixed is execv* in glibc:
>> But more importantly, /bin/sh is likely to be a dynamically-linked
>> executable, linked against stuff from /lib, which is not in
>> ‘build-chroot-dirs’. Thus, it won’t run in the chroot.
> The following works.
> build-users-group = nixbld
> build-use-chroot = true
> build-chroot-dirs = /dev /proc /bin /lib
> Does it make sense? Will it help to catch impurities?
(Note that guix-daemon does *not* read nix.conf.)
Adding /bin and /lib means that many binaries beyond /bin/sh are leaked
into the build environment, which is workable, but not great.
If we can manage to build in chroots without /bin at all, that’ll be best.
If we cannot, then we’ll have to do that.
> ?: 0 [system* "test/run"]
> ERROR: In procedure system*:
> ERROR: In procedure system*: No such file or directory
Again that’s because /bin/sh is either missing from the chroot, or it’s
there but it’s a symlink whose target is missing, or it’s a
dynamically-linked binary and some of its requirements are missing.
Just try ‘ldd /bin/sh’. Everything listed there should be in the chroot.
> ('attr' builds fine on x86_64. )
>  http://hydra.nixos.org/job/gnu/guix-distro-master/attr-2.4.46
That’s because hydra.nixos.org runs NixOS; on NixOS /bin/sh is a symlink
to /nix/store/xxx-bash/bin/sh, and the chroot is setup with all the
dependencies of that path added to ‘build-chroot-dirs’.