From patchwork Thu Dec 22 14:34:12 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Arnaldo Carvalho de Melo X-Patchwork-Id: 35812 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:e747:0:0:0:0:0 with SMTP id c7csp359494wrn; Thu, 22 Dec 2022 06:34:58 -0800 (PST) X-Google-Smtp-Source: AMrXdXu7LtrGnjEn3RWb0VLz0tgVZQh0JyT2EfvoQEy/qDnHqOc70zJd5+ouZejawoqkMtcCQ5Ue X-Received: by 2002:a05:6a20:b91c:b0:b2:4327:fa6c with SMTP id fe28-20020a056a20b91c00b000b24327fa6cmr5994643pzb.18.1671719697787; Thu, 22 Dec 2022 06:34:57 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1671719697; cv=none; d=google.com; s=arc-20160816; b=slSyDUwI8z0B0PrViIB3Bd+Ou/QL0kd6vkpCJPogZbb5a15FVl1PdCTQXxF+MTkgu/ lOgoWnRpJlUUkCJ2HUz0A/QUloX6vWn/4Ly4M0XgxIbvSNh6rG/6dAdH7qINPWjvtPPs XuwRFu+kf6Rpyn1BwbaM/RPK06D+jD1ClblsLt0r1oLFqnIKUB/PodPgEFtT6hE44fXj hwmDD4rvW6fQdeLMl2A9r1HF8fv6YJMbaWq+urKpMOkeK21fIezC8A+NJ6byLUO+WJEs 3mIoQ+IGVB3TCs59vhQRMf6En+QTR7bt364oQ39eI2PjT+yGcE9az2PI7hnXaOWayTUE wLfg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-disposition:mime-version:message-id :subject:cc:to:from:date:dkim-signature; bh=849zc2C1B+HNCvtzC1KMZy0w/RZq2lsoWRGrk3dAqCs=; b=07uJbFXGWlf34+dQob7z6GV2RacDKUXc2wRR/JIJauJlSVcbCi+oVfsHLuXmDT5A4e sicGe2oEMuGgwtu3tXYXCFr4lSNT+yw8hBsr141ATHTKWx/eaZdDUlBsudyU+/c9zrzy GMP6rOgrmTtLRFerrP97k68gkUzFouarxP8ri1uZPKRNEsMc22iBbnO8CPVftRN1u4tU uwPY4kvfaP5W9fy6CsH/ePIwWKr6fZCFIfm8fvXvH0bNCdKqOwlPlJflmWDi9qiXdarj oLz4JDJCNQkOQk6fjUAokQzfXUf40pRYBmKMnnPRng5fBmzCxowxCsb9L4RyCIi+VxEe ABjw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=gcCZUV4+; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id j25-20020a635519000000b0047875582864si938033pgb.263.2022.12.22.06.34.44; Thu, 22 Dec 2022 06:34:57 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=gcCZUV4+; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S235754AbiLVOe1 (ORCPT + 99 others); Thu, 22 Dec 2022 09:34:27 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:38436 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S235773AbiLVOeW (ORCPT ); Thu, 22 Dec 2022 09:34:22 -0500 Received: from dfw.source.kernel.org (dfw.source.kernel.org [139.178.84.217]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 6FAEF2CC8A for ; Thu, 22 Dec 2022 06:34:21 -0800 (PST) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id 0C51861BD1 for ; Thu, 22 Dec 2022 14:34:21 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 3701AC433D2; Thu, 22 Dec 2022 14:34:20 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1671719660; bh=poi7LVDy/UFsrTmGwq6lioam1cMDnvdsbKnL0S9SBbA=; h=Date:From:To:Cc:Subject:From; b=gcCZUV4+mkMTZ38H1tAJ0bggdr67WBovVWDPfZpB00FlIgoNbmIBMfrHqrBrHlVLP 0oGPYlTrWuQYBzzifWiriNkOFg7meCfgeEsd3C3LG5qtLyuaQvTYG4g4PZvjSaaMTQ lUA0PYW8O4DvfeBd/sRnLX0rwxtJo3pGUmqbfAlrEjF/nflv+VC1FL8MA/tMyFWo/6 WnzwrNFojGHXaCNiT39dCs3DimvN2xJ3chbMKWZIUCoG0pVANMUH+5mI24itYdmDWJ 2t07JMuhWmVI69GNr9At8zjd/sT9Jxm+MXeELyFskFHAYXvoCXgs72nuwi7/rL5Xk8 BFQqSgLYW8sRg== Received: by quaco.ghostprotocols.net (Postfix, from userid 1000) id 27B2340350; Thu, 22 Dec 2022 11:34:12 -0300 (-03) Date: Thu, 22 Dec 2022 11:34:12 -0300 From: Arnaldo Carvalho de Melo To: Khem Raj , Florian Fainelli Cc: Adrian Hunter , Fangrui Song , Ian Rogers , Jiri Olsa , John Keeping , Leo Yan , Michael Petlan , Namhyung Kim , Nathan Chancellor , Nick Desaulniers , Sedat Dilek , Linux Kernel Mailing List Subject: [PATCH 1/1 fyi] perf python: Fix splitting CC into compiler and options Message-ID: MIME-Version: 1.0 Content-Disposition: inline X-Spam-Status: No, score=-7.1 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_HI, SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1752925153917454842?= X-GMAIL-MSGID: =?utf-8?q?1752925153917454842?= Just fyi, I'm carrying this in the perf tools tree. - Arnaldo ---- Noticed this build failure on archlinux:base when building with clang: clang-14: error: optimization flag '-ffat-lto-objects' is not supported [-Werror,-Wignored-optimization-argument] In tools/perf/util/setup.py we check if clang supports that option, but since commit 3cad53a6f9cdbafa ("perf python: Account for multiple words in CC") this got broken as in the common case where CC="clang": >>> cc="clang" >>> print(cc.split()[0]) clang >>> option="-ffat-lto-objects" >>> print(str(cc.split()[1:]) + option) []-ffat-lto-objects >>> And then the Popen will call clang with that bogus option name that in turn will not produce the b"unknown argument" or b"is not supported" that this function uses to detect if the option is not available and thus later on clang will be called with an unknown/unsupported option. Fix it by looking if really there are options in the provided CC variable, and if so override 'cc' with the first token and append the options to the 'option' variable. Fixes: 3cad53a6f9cdbafa ("perf python: Account for multiple words in CC") Cc: Adrian Hunter Cc: Fangrui Song Cc: Florian Fainelli Cc: Ian Rogers Cc: Jiri Olsa Cc: John Keeping Cc: Khem Raj Cc: Leo Yan Cc: Michael Petlan Cc: Namhyung Kim Cc: Nathan Chancellor Cc: Nick Desaulniers Cc: Sedat Dilek Signed-off-by: Arnaldo Carvalho de Melo --- tools/perf/util/setup.py | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/tools/perf/util/setup.py b/tools/perf/util/setup.py index 4f265d0222c454e2..c294db713677c0c2 100644 --- a/tools/perf/util/setup.py +++ b/tools/perf/util/setup.py @@ -3,11 +3,20 @@ from subprocess import Popen, PIPE from re import sub cc = getenv("CC") -cc_is_clang = b"clang version" in Popen([cc.split()[0], "-v"], stderr=PIPE).stderr.readline() + +# Check if CC has options, as is the case in yocto, where it uses CC="cc --sysroot..." +cc_tokens = cc.split() +if len(cc_tokens) > 1: + cc = cc_tokens[0] + cc_options = " ".join([str(e) for e in cc_tokens[1:]]) + " " +else: + cc_options = "" + +cc_is_clang = b"clang version" in Popen([cc, "-v"], stderr=PIPE).stderr.readline() src_feature_tests = getenv('srctree') + '/tools/build/feature' def clang_has_option(option): - cc_output = Popen([cc.split()[0], str(cc.split()[1:]) + option, path.join(src_feature_tests, "test-hello.c") ], stderr=PIPE).stderr.readlines() + cc_output = Popen([cc, cc_options + option, path.join(src_feature_tests, "test-hello.c") ], stderr=PIPE).stderr.readlines() return [o for o in cc_output if ((b"unknown argument" in o) or (b"is not supported" in o))] == [ ] if cc_is_clang: