NetBSD Problem Report #54100
From tsutsui@ceres.dti.ne.jp Fri Apr 5 11:07:40 2019
Return-Path: <tsutsui@ceres.dti.ne.jp>
Received: from mail.netbsd.org (mail.netbsd.org [199.233.217.200])
(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
(Client CN "mail.NetBSD.org", Issuer "mail.NetBSD.org CA" (not verified))
by mollari.NetBSD.org (Postfix) with ESMTPS id B8C2F7A167
for <gnats-bugs@gnats.NetBSD.org>; Fri, 5 Apr 2019 11:07:40 +0000 (UTC)
Message-Id: <201904051107.x35B7ZVS003027@ceres.dti.ne.jp>
Date: Fri, 5 Apr 2019 20:07:35 +0900 (JST)
From: Izumi Tsutsui <tsutsui@ceres.dti.ne.jp>
Reply-To: tsutsui@ceres.dti.ne.jp
To: gnats-bugs@NetBSD.org
Cc: tsutsui@ceres.dti.ne.jp
Subject: _HOST_ARCH on NetBSD/amd64 returns 'uname -m' not 'uname -p'
X-Send-Pr-Version: 3.95
>Number: 54100
>Category: toolchain
>Synopsis: _HOST_ARCH on NetBSD/amd64 returns 'uname -m' not 'uname -p'
>Confidential: no
>Severity: non-critical
>Priority: medium
>Responsible: toolchain-manager
>State: open
>Class: sw-bug
>Submitter-Id: net
>Arrival-Date: Fri Apr 05 11:10:00 +0000 2019
>Last-Modified: Sun Jun 23 13:35:01 +0000 2019
>Originator: Izumi Tsutsui
>Release: NetBSD 8.0
>Organization:
>Environment:
System: NetBSD optiplex 8.0 NetBSD 8.0 (GENERIC) #0: Tue Jul 17 14:59:51 UTC 2018 mkrepro@mkrepro.NetBSD.org:/usr/src/sys/arch/amd64/compile/GENERIC amd64
Architecture: x86_64
Machine: amd64
>Description:
In <bsd.host.mk> ${_HOST_ARCH} for ${TOOLDIR} is
defined as the following:
---
.if !defined(HOST_OSTYPE)
_HOST_OSNAME!= uname -s
_HOST_OSREL!= uname -r
# For _HOST_ARCH, if uname -p fails, or prints "unknown", or prints
# something that does not look like an identifier, then use uname -m.
_HOST_ARCH!= uname -p 2>/dev/null
_HOST_ARCH:= ${HOST_ARCH:tW:C/.*[^-_A-Za-z0-9].*//:S/unknown//}
.if empty(_HOST_ARCH)
_HOST_ARCH!= uname -m
.endif
HOST_OSTYPE:= ${_HOST_OSNAME}-${_HOST_OSREL:C/\([^\)]*\)//g:[*]:C/ /_/g}-${_HOST_ARCH:C/\([^\)]*\)//g:[*]:C/ /_/g}
.MAKEOVERRIDES+= HOST_OSTYPE
.endif # !defined(HOST_OSTYPE)
---
So ${_HOST_ARCH} on NetBSD/amd64 should be "x86_64" as uname -p returns.
However on the NetBSD/amd64 host it returns "amd64".
>How-To-Repeat:
% uname -a
NetBSD optiplex 8.0 NetBSD 8.0 (GENERIC) #0: Tue Jul 17 14:59:51 UTC 2018 mkrepro@mkrepro.NetBSD.org:/usr/src/sys/arch/amd64/compile/GENERIC amd64
% uname -p
x86_64
% uname -m
amd64
% cat Makefile
.include <bsd.own.mk>
all:
@echo _HOST_ARCH is ${_HOST_ARCH}
@echo TOOLDIR is ${TOOLDIR}
% env USETOOLS=yes make all
_HOST_ARCH is amd64
TOOLDIR is /tooldir.NetBSD-8.0-amd64
%
>Fix:
Something wrong (triggered by underscore?) in the following definition?
> _HOST_ARCH:= ${HOST_ARCH:tW:C/.*[^-_A-Za-z0-9].*//:S/unknown//}
---
Izumi Tsutsui
>Audit-Trail:
From: Valery Ushakov <uwe@stderr.spb.ru>
To: gnats-bugs@netbsd.org
Cc:
Subject: Re: toolchain/54100: _HOST_ARCH on NetBSD/amd64 returns 'uname -m'
not 'uname -p'
Date: Fri, 7 Jun 2019 20:04:35 +0300
On Fri, Apr 05, 2019 at 11:10:01 +0000, Izumi Tsutsui wrote:
> >Synopsis: _HOST_ARCH on NetBSD/amd64 returns 'uname -m' not 'uname -p'
It does this everywhere, but almost everywhere they are the same,
unlike on amd64.
> Something wrong (triggered by underscore?) in the following definition?
> > _HOST_ARCH:= ${HOST_ARCH:tW:C/.*[^-_A-Za-z0-9].*//:S/unknown//}
Right, typo in the variable name in the right hand side. Make that
${_HOST_ARCH:...}
-uwe
From: Izumi Tsutsui <tsutsui@ceres.dti.ne.jp>
To: gnats-bugs@netbsd.org
Cc: tsutsui@ceres.dti.ne.jp
Subject: Re: toolchain/54100: _HOST_ARCH on NetBSD/amd64 returns 'uname -m'
not 'uname -p'
Date: Sun, 23 Jun 2019 15:18:47 +0900
uwe@ pointed out on source-changed-d@:
http://mail-index.netbsd.org/source-changes-d/2019/06/07/msg011379.html
> The problem with the PR is the typo in the variable name, missing
> leading underscore in
>
> _HOST_ARCH:= ${HOST_ARCH:...}
>
> note "HOST_ARCH" in the rhs, not "_HOST_ARCH".
Actually the following change fix the problem
(i.e. tooldir.NetBSD-8.1-x86_64 is created for tools):
---
Index: share/mk/bsd.host.mk
===================================================================
RCS file: /cvsroot/src/share/mk/bsd.host.mk,v
retrieving revision 1.4
diff -u -p -d -r1.4 bsd.host.mk
--- share/mk/bsd.host.mk 25 Feb 2018 18:53:23 -0000 1.4
+++ share/mk/bsd.host.mk 23 Jun 2019 06:13:26 -0000
@@ -49,7 +49,7 @@ _HOST_OSREL!= uname -r
# For _HOST_ARCH, if uname -p fails, or prints "unknown", or prints
# something that does not look like an identifier, then use uname -m.
_HOST_ARCH!= uname -p 2>/dev/null
-_HOST_ARCH:= ${HOST_ARCH:tW:C/.*[^-_A-Za-z0-9].*//:S/unknown//}
+_HOST_ARCH:= ${_HOST_ARCH:tW:C/.*[^-_A-Za-z0-9].*//:S/unknown//}
.if empty(_HOST_ARCH)
_HOST_ARCH!= uname -m
.endif
---
Is it okay to commit the diff?
Or should we keep bug compatibility for third party scripts?
---
Izumi Tsutsui
From: matthew green <mrg@eterna.com.au>
To: gnats-bugs@netbsd.org
Cc: toolchain-manager@netbsd.org, gnats-admin@netbsd.org,
netbsd-bugs@netbsd.org, tsutsui@ceres.dti.ne.jp
Subject: re: toolchain/54100: _HOST_ARCH on NetBSD/amd64 returns 'uname -m' not 'uname -p'
Date: Sun, 23 Jun 2019 22:23:00 +1000
> Is it okay to commit the diff?
> Or should we keep bug compatibility for third party scripts?
i would rather not bother with bug compat here -- the uname answers
for netbsd are treated special so i doubt it was ever used.
.mrg.
From: Izumi Tsutsui <tsutsui@ceres.dti.ne.jp>
To: mrg@eterna.com.au
Cc: gnats-bugs@netbsd.org, tsutsui@ceres.dti.ne.jp
Subject: Re: toolchain/54100: _HOST_ARCH on NetBSD/amd64 returns 'uname -m'
not 'uname -p'
Date: Sun, 23 Jun 2019 22:32:03 +0900
mrg@ wrote:
> > Is it okay to commit the diff?
> > Or should we keep bug compatibility for third party scripts?
>
> i would rather not bother with bug compat here -- the uname answers
> for netbsd are treated special so i doubt it was ever used.
I have to add the following lines to my local script to get
the default ${TOOLDIR}:
---
# tooldir settings
_HOST_OSNAME=`uname -s`
_HOST_OSREL=`uname -r`
_HOST_ARCH=`uname -p 2> /dev/null || uname -m`
# XXX see PR toolchain/54100
if [ "${_HOST_ARCH}"X = "x86_64X" ]; then
_HOST_ARCH=`uname -m`
fi
TOOLDIRNAME=tooldir.${_HOST_OSNAME}-${_HOST_OSREL}-${_HOST_ARCH}
---
I also wonder if we can share TOOLDIR among the same ${MACHINE_ARCH}
because there are many '.if ${MACHINE} == "foo"' conditionals in
src/tools/Makefile.
---
Izumi Tsutsui
(Contact us)
$NetBSD: query-full-pr,v 1.43 2018/01/16 07:36:43 maya Exp $
$NetBSD: gnats_config.sh,v 1.9 2014/08/02 14:16:04 spz Exp $
Copyright © 1994-2017
The NetBSD Foundation, Inc. ALL RIGHTS RESERVED.