From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?utf-8?Q?Ludovic_Court=C3=A8s?= Subject: Re: Qemu binfmt on foreign distro Date: Sat, 23 Nov 2019 19:10:36 +0100 Message-ID: <875zja1n1f.fsf@gnu.org> References: <87wobt1rb8.fsf@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Return-path: Received: from eggs.gnu.org ([2001:470:142:3::10]:41320) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iYZri-00022v-SB for guix-devel@gnu.org; Sat, 23 Nov 2019 13:10:39 -0500 In-Reply-To: <87wobt1rb8.fsf@gmail.com> (Mathieu Othacehe's message of "Thu, 21 Nov 2019 11:01:31 +0100") List-Id: "Development of GNU Guix and the GNU System distribution." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-devel-bounces+gcggd-guix-devel=m.gmane.org@gnu.org Sender: "Guix-devel" To: Mathieu Othacehe Cc: guix-devel Hi, Mathieu Othacehe skribis: > On a foreign distro, one can install QEMU and setup the binfmt mechanism > (installing binfmt-support and qemu-user-static packages on > Ubuntu). However, without the proper --chroot-directory arguments passed > to guix-daemon, all binaries execution relying on binfmt will throw > ENOENT from within the guix-daemon. Yes, so what? :-) Commit 7bf2a70a4ffd976d50638d3b9f2ec409763157df expects ENOEXEC in this case, and a meaningful error message is provided when that happens. How did you get ENOENT? Was it because you had installed qemu/binfmt support from the host distro, and thus /usr/bin/qemu-whatever wasn=E2=80=99t found? > So I can see two solutions here: > > * Remove --system argument support for guix on foreign distributions > (except when using this argument does not require binfmt support, 32 > bits build on a 64 bits machine). > > * Provide some kind of script that generates the correct guix-daemon > command line, enabling binfmt support on foreign distros. > > Anyhow, the current behaviour where guix build --system=3D... fails > misteriously because of an ENOENT error on a foreign distro is not > acceptable in my opinion. How does it fail exactly, and what do you have in /proc/sys/fs/binfmt_misc? On Guix System, I get the expected behavior: --8<---------------cut here---------------start------------->8--- $ sudo herd stop qemu-binfmt Service qemu-binfmt has been stopped. $ guix build -s aarch64-linux hello --check La jena derivo estos konstruata: /gnu/store/3j4nj1y86szk6ibaqp4yc09m2p1xmkr5-hello-2.10.drv building /gnu/store/3j4nj1y86szk6ibaqp4yc09m2p1xmkr5-hello-2.10.drv... @ unsupported-platform /gnu/store/3j4nj1y86szk6ibaqp4yc09m2p1xmkr5-hello-2.= 10.drv aarch64-linux while setting up the build environment: a `aarch64-linux' is required to bu= ild `/gnu/store/3j4nj1y86szk6ibaqp4yc09m2p1xmkr5-hello-2.10.drv', but I am = a `x86_64-linux' builder for `/gnu/store/3j4nj1y86szk6ibaqp4yc09m2p1xmkr5-hello-2.10.drv' fa= iled with exit code 1 build of /gnu/store/3j4nj1y86szk6ibaqp4yc09m2p1xmkr5-hello-2.10.drv failed View build log at '/var/log/guix/drvs/3j/4nj1y86szk6ibaqp4yc09m2p1xmkr5-hel= lo-2.10.drv.bz2'. guix build: error: build of `/gnu/store/3j4nj1y86szk6ibaqp4yc09m2p1xmkr5-he= llo-2.10.drv' failed --8<---------------cut here---------------end--------------->8--- Thanks, Ludo=E2=80=99.