From mboxrd@z Thu Jan 1 00:00:00 1970 From: Mark H Weaver Subject: Re: Pass --build= to native builds by default? Date: Sun, 04 Jan 2015 14:11:19 -0500 Message-ID: <87oaqeweco.fsf@netris.org> References: <87egrby6p8.fsf@netris.org> <87ppav8tot.fsf@gnu.org> <8761cny0o2.fsf@netris.org> <871tnby0hd.fsf@netris.org> <87bnme4iw3.fsf@gnu.org> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:43538) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Y7qZf-0001Eb-QJ for guix-devel@gnu.org; Sun, 04 Jan 2015 14:10:56 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Y7qZb-0002oi-KG for guix-devel@gnu.org; Sun, 04 Jan 2015 14:10:51 -0500 In-Reply-To: <87bnme4iw3.fsf@gnu.org> ("Ludovic \=\?utf-8\?Q\?Court\=C3\=A8s\=22'\?\= \=\?utf-8\?Q\?s\?\= message of "Sun, 04 Jan 2015 17:20:44 +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-bounces+gcggd-guix-devel=m.gmane.org@gnu.org To: Ludovic =?utf-8?Q?Court=C3=A8s?= Cc: guix-devel@gnu.org ludo@gnu.org (Ludovic Court=C3=A8s) writes: > Mark H Weaver skribis: > >> Mark H Weaver writes: >> >>> ludo@gnu.org (Ludovic Court=C3=A8s) writes: >>> >>>> Mark H Weaver skribis: >>>> >>>>> It turns out that on ARM systems, the result of 'config.guess' depends >>>>> on the result of 'uname -m'. In other words, details of the kernel (= and >>>>> perhaps processor?) on the build machine will determine the triplet of >>>>> our builds, which in turn may affect what set of instructions is used. >>>> >>>> Do you know how the =E2=80=98uname -m=E2=80=99 output is used in confi= g.guess? What >>>> does it return on ARM? >>> >>> The output of 'uname -m' becomes the first (cpu) component of the GNU >>> triplet. uname(1) gets its information from the kernel via the uname(2) >>> system call. The field returned by 'uname -m' is described as "Hardware >>> identifier". See . [...] >> I forgot to answer your second question. On my Novena, 'uname -m' >> returns "armv7l". The problem is this: I suspect that if the build >> machine has an armv8 processor, it will return something different like >> "armv8l". > > But how do the armv7 and armv8 ISAs differ? If it=E2=80=99s more like > additional SIMD extensions, then indeed it would make sense to use the > same name for both; but if there=E2=80=99s more than that, perhaps using > different triplets is the right thing? Using different triplets depending on the architecture revision of the CPU in the build machine? I thought we were aiming for deterministic builds. I may not have explained the issue clearly. Please let me try again. I don't see why it matters how the ISAs differ. The important point is that a build process may intentionally produce different build outputs when the triplet is armv8l-* vs armv7l-*. Even if we didn't care about deterministic builds, there's a more serious problem. Packages built for armv8l are free to use armv8 ISA extensions that do not work at all on an armv7l processor. As things stand now, we must ensure that none of our build machines implement ISA extensions beyond the baseline requirements we've chosen for armhf-linux. Mark