From mboxrd@z Thu Jan 1 00:00:00 1970 From: ludo@gnu.org (Ludovic =?utf-8?Q?Court=C3=A8s?=) Subject: Re: Pass --build= to native builds by default? Date: Sun, 04 Jan 2015 21:18:40 +0100 Message-ID: <874ms62tb3.fsf@gnu.org> References: <87egrby6p8.fsf@netris.org> <87ppav8tot.fsf@gnu.org> <8761cny0o2.fsf@netris.org> <871tnby0hd.fsf@netris.org> <87bnme4iw3.fsf@gnu.org> <87oaqeweco.fsf@netris.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]:56021) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Y7rdQ-0002oT-Pr for guix-devel@gnu.org; Sun, 04 Jan 2015 15:18:49 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Y7rdJ-0006pq-A7 for guix-devel@gnu.org; Sun, 04 Jan 2015 15:18:48 -0500 Received: from hera.aquilenet.fr ([2a01:474::1]:54827) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Y7rdI-0006pO-S8 for guix-devel@gnu.org; Sun, 04 Jan 2015 15:18:41 -0500 In-Reply-To: <87oaqeweco.fsf@netris.org> (Mark H. Weaver's message of "Sun, 04 Jan 2015 14:11:19 -0500") 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: Mark H Weaver Cc: guix-devel@gnu.org Mark H Weaver skribis: > 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' depen= ds >>>>>> 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 use= d. >>>>> >>>>> Do you know how the =E2=80=98uname -m=E2=80=99 output is used in conf= ig.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 "Hardwa= re >>>> 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? [...] > 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-*. What I meant to say is that =E2=80=9Cx86_64=E2=80=9D is pretty vague and do= esn=E2=80=99t specify extensions, but GMP=E2=80=99s sophisticated config.guess is able to determi= ne the available extensions using /proc/cpuinfo and similar tricks. Yet, we=E2=80=99re fine calling all the variants =E2=80=9Cx86_64=E2=80=9D in pra= ctice. In fact, it may be that: personality (PER_LINUX32_3GB) on an armv8 machine enters pure armv7 mode. What does =E2=80=9Clinux32 uname -m=E2=80=9D return on armv8? > 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. OK, understood. Thanks, Ludo=E2=80=99.