Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 62CBBC61DA4 for ; Sat, 4 Feb 2023 13:04:31 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233295AbjBDNE3 convert rfc822-to-8bit (ORCPT ); Sat, 4 Feb 2023 08:04:29 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:56004 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233171AbjBDNE1 (ORCPT ); Sat, 4 Feb 2023 08:04:27 -0500 Received: from eu-smtp-delivery-151.mimecast.com (eu-smtp-delivery-151.mimecast.com [185.58.85.151]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 6AAA028846 for ; Sat, 4 Feb 2023 05:04:25 -0800 (PST) Received: from AcuMS.aculab.com (156.67.243.121 [156.67.243.121]) by relay.mimecast.com with ESMTP with both STARTTLS and AUTH (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id uk-mta-86-3jVmZkmhN5e2cWi5sxwtfw-1; Sat, 04 Feb 2023 13:04:21 +0000 X-MC-Unique: 3jVmZkmhN5e2cWi5sxwtfw-1 Received: from AcuMS.Aculab.com (10.202.163.6) by AcuMS.aculab.com (10.202.163.6) with Microsoft SMTP Server (TLS) id 15.0.1497.45; Sat, 4 Feb 2023 13:04:20 +0000 Received: from AcuMS.Aculab.com ([::1]) by AcuMS.aculab.com ([::1]) with mapi id 15.00.1497.045; Sat, 4 Feb 2023 13:04:20 +0000 From: David Laight To: 'Guillaume Tucker' , Guillaume Tucker , Shuah Khan , Gautam CC: "kernel@collabora.com" , "linux-kselftest@vger.kernel.org" , "linux-kernel@vger.kernel.org" , "kernelci@lists.linux.dev" Subject: RE: [PATCH] selftests: find echo binary to use -ne options Thread-Topic: [PATCH] selftests: find echo binary to use -ne options Thread-Index: AQHZN+PflpeLeEnGBkKgHYJRIoEYbK6+wYOg Date: Sat, 4 Feb 2023 13:04:19 +0000 Message-ID: <90ace4f466ee4f79bf2dd94c5830e57a@AcuMS.aculab.com> References: <20230203152603.11450-1-guillaume.tucker@collabora.com> In-Reply-To: <20230203152603.11450-1-guillaume.tucker@collabora.com> Accept-Language: en-GB, en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ms-exchange-transport-fromentityheader: Hosted x-originating-ip: [10.202.205.107] MIME-Version: 1.0 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: aculab.com Content-Language: en-US Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8BIT Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Guillaume Tucker > Sent: 03 February 2023 15:26 > > Find the actual echo binary using $(which echo) and use it for > formatted output with -ne. On some systems, the default echo command > doesn't handle the -e option and the output looks like this (arm64 > build): > > -ne Emit Tests for alsa > > -ne Emit Tests for amd-pstate > > -ne Emit Tests for arm64 Nack. There is no reason to suppose that /bin/echo is any different from the version of echo builtin to the shell that make uses. Not only that 'which' is a horrid shell script that is trying to emulate csh builtin. The bourne shell equivalent is 'type' and the posix one 'command'. In any case the portable way to fix this is to use printf. This is a well defined program and is bultin to all modern shells. David > > This is for example the case with the KernelCI Docker images > e.g. kernelci/gcc-10:x86-kselftest-kernelci. With the actual echo > binary (e.g. in /bin/echo), the output is formatted as expected (x86 > build this time): > > Emit Tests for alsa > Emit Tests for amd-pstate > Skipping non-existent dir: arm64 > > Only the install target is using "echo -ne" so keep the $ECHO variable > local to it. > > Reported-by: "kernelci.org bot" > Fixes: 3297a4df805d ("kselftests: Enable the echo command to print newlines in Makefile") > Signed-off-by: Guillaume Tucker > --- > tools/testing/selftests/Makefile | 5 +++-- > 1 file changed, 3 insertions(+), 2 deletions(-) > > diff --git a/tools/testing/selftests/Makefile b/tools/testing/selftests/Makefile > index 41b649452560..9619d0f3b2ff 100644 > --- a/tools/testing/selftests/Makefile > +++ b/tools/testing/selftests/Makefile > @@ -234,10 +234,11 @@ ifdef INSTALL_PATH > @# While building kselftest-list.text skip also non-existent TARGET dirs: > @# they could be the result of a build failure and should NOT be > @# included in the generated runlist. > + ECHO=`which echo`; \ > for TARGET in $(TARGETS); do \ > BUILD_TARGET=$$BUILD/$$TARGET; \ > - [ ! -d $(INSTALL_PATH)/$$TARGET ] && echo "Skipping non-existent dir: $$TARGET" && > continue; \ > - echo -ne "Emit Tests for $$TARGET\n"; \ > + [ ! -d $(INSTALL_PATH)/$$TARGET ] && $$ECHO "Skipping non-existent dir: $$TARGET" && > continue; \ > + $$ECHO -ne "Emit Tests for $$TARGET\n"; \ > $(MAKE) -s --no-print-directory OUTPUT=$$BUILD_TARGET COLLECTION=$$TARGET \ > -C $$TARGET emit_tests >> $(TEST_LIST); \ > done; > -- > 2.30.2 - Registered Address Lakeside, Bramley Road, Mount Farm, Milton Keynes, MK1 1PT, UK Registration No: 1397386 (Wales)