From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from lists.gentoo.org (pigeon.gentoo.org [208.92.234.80]) by finch.gentoo.org (Postfix) with ESMTP id 39FC8138C9D for ; Tue, 2 Jun 2015 17:43:00 +0000 (UTC) Received: from pigeon.gentoo.org (localhost [127.0.0.1]) by pigeon.gentoo.org (Postfix) with SMTP id 921A4E08DC; Tue, 2 Jun 2015 17:42:54 +0000 (UTC) Received: from smtp.gentoo.org (smtp.gentoo.org [140.211.166.183]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by pigeon.gentoo.org (Postfix) with ESMTPS id 2DF65E08DC for ; Tue, 2 Jun 2015 17:42:54 +0000 (UTC) Received: from oystercatcher.gentoo.org (oystercatcher.gentoo.org [148.251.78.52]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by smtp.gentoo.org (Postfix) with ESMTPS id E80C9340CCD for ; Tue, 2 Jun 2015 17:42:52 +0000 (UTC) Received: from localhost.localdomain (localhost [127.0.0.1]) by oystercatcher.gentoo.org (Postfix) with ESMTP id B471DA0C for ; Tue, 2 Jun 2015 17:42:50 +0000 (UTC) From: "Fabian Groffen" To: gentoo-commits@lists.gentoo.org Content-Transfer-Encoding: 8bit Content-type: text/plain; charset=UTF-8 Reply-To: gentoo-dev@lists.gentoo.org, "Fabian Groffen" Message-ID: <1433266897.e00665d14c50351c4c8cd08d60d7d4d625b0a18d.grobian@gentoo> Subject: [gentoo-commits] proj/portage:prefix commit in: pym/_emerge/ X-VCS-Repository: proj/portage X-VCS-Files: pym/_emerge/actions.py X-VCS-Directories: pym/_emerge/ X-VCS-Committer: grobian X-VCS-Committer-Name: Fabian Groffen X-VCS-Revision: e00665d14c50351c4c8cd08d60d7d4d625b0a18d X-VCS-Branch: prefix Date: Tue, 2 Jun 2015 17:42:50 +0000 (UTC) Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-Id: Gentoo Linux mail X-BeenThere: gentoo-commits@lists.gentoo.org X-Archives-Salt: 746c9ef8-075d-48a4-9acd-aff88349c1f4 X-Archives-Hash: 959fa29d33e4c663acffedf137f97f96 commit: e00665d14c50351c4c8cd08d60d7d4d625b0a18d Author: Fabian Groffen gentoo org> AuthorDate: Tue Jun 2 17:41:37 2015 +0000 Commit: Fabian Groffen gentoo org> CommitDate: Tue Jun 2 17:41:37 2015 +0000 URL: https://gitweb.gentoo.org/proj/portage.git/commit/?id=e00665d1 getgccversion: add support for Clang Since Gentoo Prefix for Mac OS X uses Clang as system compiler, portage picks up either gcc from the host, or complains no compiler is installed, which both are obviously not true. pym/_emerge/actions.py | 42 +++++++++++++++++++++++++++++++++++++++--- 1 file changed, 39 insertions(+), 3 deletions(-) diff --git a/pym/_emerge/actions.py b/pym/_emerge/actions.py index 047fa98..6910ac6 100644 --- a/pym/_emerge/actions.py +++ b/pym/_emerge/actions.py @@ -2362,14 +2362,25 @@ def getgccversion(chost): gcc_ver_command = ['gcc', '-dumpversion'] gcc_ver_prefix = 'gcc-' + clang_ver_command = ['clang', '--version'] + clang_ver_prefix = 'clang-' + + ubinpath = os.path.join('/', portage.const.EPREFIX, 'usr', 'bin') + gcc_not_found_error = red( "!!! No gcc found. You probably need to 'source /etc/profile'\n" + "!!! to update the environment of this terminal and possibly\n" + "!!! other terminals also.\n" ) + def getclangversion(output): + version = re.search('clang version ([0-9.]+) ', output) + if version: + return version.group(1) + return "unknown" + try: - proc = subprocess.Popen(["gcc-config", "-c"], + proc = subprocess.Popen([ubinpath + "/gcc-config", "-c"], stdout=subprocess.PIPE, stderr=subprocess.STDOUT) except OSError: myoutput = None @@ -2382,7 +2393,7 @@ def getgccversion(chost): try: proc = subprocess.Popen( - [chost + "-" + gcc_ver_command[0]] + gcc_ver_command[1:], + [ubinpath + "/" + chost + "-" + gcc_ver_command[0]] + gcc_ver_command[1:], stdout=subprocess.PIPE, stderr=subprocess.STDOUT) except OSError: myoutput = None @@ -2394,7 +2405,7 @@ def getgccversion(chost): return gcc_ver_prefix + myoutput try: - proc = subprocess.Popen(gcc_ver_command, + proc = subprocess.Popen([ubinpath + "/" + gcc_ver_command[0]] + gcc_ver_command[1:], stdout=subprocess.PIPE, stderr=subprocess.STDOUT) except OSError: myoutput = None @@ -2405,6 +2416,31 @@ def getgccversion(chost): if mystatus == os.EX_OK: return gcc_ver_prefix + myoutput + try: + proc = subprocess.Popen( + [ubinpath + "/" + chost + "-" + clang_ver_command[0]] + clang_ver_command[1:], + stdout=subprocess.PIPE, stderr=subprocess.STDOUT) + except OSError: + myoutput = None + mystatus = 1 + else: + myoutput = _unicode_decode(proc.communicate()[0]).rstrip("\n") + mystatus = proc.wait() + if mystatus == os.EX_OK: + return clang_ver_prefix + getclangversion(myoutput) + + try: + proc = subprocess.Popen([ubinpath + "/" + clang_ver_command[0]] + clang_ver_command[1:], + stdout=subprocess.PIPE, stderr=subprocess.STDOUT) + except OSError: + myoutput = None + mystatus = 1 + else: + myoutput = _unicode_decode(proc.communicate()[0]).rstrip("\n") + mystatus = proc.wait() + if mystatus == os.EX_OK: + return clang_ver_prefix + getclangversion(myoutput) + portage.writemsg(gcc_not_found_error, noiselevel=-1) return "[unavailable]"