From b53704a4517231aef2b11978a096dbad9bd9c29d Mon Sep 17 00:00:00 2001 From: sergesanspaille Date: Fri, 1 Feb 2019 06:40:38 +0000 Subject: [PATCH] 8.0.0rc1 --- .gitignore | 1 + ...read-handling-for-out-of-tree-builds.patch | 36 -- ...ixed-width-ops-in-mixed-sign-mul-wit.patch | 122 ------ ...format-diff.py-to-python3-using-2to3.patch | 52 --- ...-all-symbols.py-to-python3-using-2to.patch | 61 --- ...vert-scan-view-to-python3-using-2to3.patch | 411 ------------------ 0001-Don-t-prefer-python2.7.patch | 24 - ...Prefer-vendor-supplied-gcc-toolchain.patch | 120 ----- ...ck-so-lit-can-find-not-and-FileCheck.patch | 27 -- ...e-substitutions-for-clang-llvm-tools.patch | 73 ---- ...test-reorg.patch => 0002-gtest-reorg.patch | 16 +- clang.spec | 79 ++-- sources | 3 +- 13 files changed, 47 insertions(+), 978 deletions(-) delete mode 100644 0001-CMake-Fix-pthread-handling-for-out-of-tree-builds.patch delete mode 100644 0001-CodeGen-Handle-mixed-width-ops-in-mixed-sign-mul-wit.patch delete mode 100644 0001-Convert-clang-format-diff.py-to-python3-using-2to3.patch delete mode 100644 0001-Convert-run-find-all-symbols.py-to-python3-using-2to.patch delete mode 100644 0001-Convert-scan-view-to-python3-using-2to3.patch delete mode 100644 0001-Don-t-prefer-python2.7.patch delete mode 100644 0001-Driver-Prefer-vendor-supplied-gcc-toolchain.patch delete mode 100644 0001-lit.cfg-Add-hack-so-lit-can-find-not-and-FileCheck.patch delete mode 100644 0001-lit.cfg-Remove-substitutions-for-clang-llvm-tools.patch rename 0001-gtest-reorg.patch => 0002-gtest-reorg.patch (80%) diff --git a/.gitignore b/.gitignore index 455b19a..0a0cf3f 100644 --- a/.gitignore +++ b/.gitignore @@ -52,3 +52,4 @@ /clang-tools-extra-7.0.0.src.tar.xz /clang-tools-extra-7.0.1.src.tar.xz /cfe-7.0.1.src.tar.xz +/clang-tools-extra-8.0.0rc1.src.tar.xz diff --git a/0001-CMake-Fix-pthread-handling-for-out-of-tree-builds.patch b/0001-CMake-Fix-pthread-handling-for-out-of-tree-builds.patch deleted file mode 100644 index e6bb267..0000000 --- a/0001-CMake-Fix-pthread-handling-for-out-of-tree-builds.patch +++ /dev/null @@ -1,36 +0,0 @@ -From f5f712dfcac6ee99381c5aca212950276f1743e8 Mon Sep 17 00:00:00 2001 -From: Eric Fiselier -Date: Fri, 10 Feb 2017 01:59:20 +0000 -Subject: [PATCH] [CMake] Fix pthread handling for out-of-tree builds - -LLVM defines `PTHREAD_LIB` which is used by AddLLVM.cmake and various projects -to correctly link the threading library when needed. Unfortunately -`PTHREAD_LIB` is defined by LLVM's `config-ix.cmake` file which isn't installed -and therefore can't be used when configuring out-of-tree builds. This causes -such builds to fail since `pthread` isn't being correctly linked. - -This patch attempts to fix that problem by renaming and exporting -`LLVM_PTHREAD_LIB` as part of`LLVMConfig.cmake`. I renamed `PTHREAD_LIB` -because It seemed likely to cause collisions with downstream users of -`LLVMConfig.cmake`. - - -git-svn-id: https://llvm.org/svn/llvm-project/clang-tools-extra/trunk@294690 91177308-0d34-0410-b5e6-96231b3b80d8 ---- - include-fixer/plugin/CMakeLists.txt | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/include-fixer/plugin/CMakeLists.txt b/include-fixer/plugin/CMakeLists.txt -index 2799fd4..df792ea 100644 ---- a/include-fixer/plugin/CMakeLists.txt -+++ b/include-fixer/plugin/CMakeLists.txt -@@ -9,5 +9,5 @@ add_clang_library(clangIncludeFixerPlugin - clangParse - clangSema - clangTooling -- ${PTHREAD_LIB} -+ ${LLVM_PTHREAD_LIB} - ) --- -1.8.3.1 - diff --git a/0001-CodeGen-Handle-mixed-width-ops-in-mixed-sign-mul-wit.patch b/0001-CodeGen-Handle-mixed-width-ops-in-mixed-sign-mul-wit.patch deleted file mode 100644 index 4c07bad..0000000 --- a/0001-CodeGen-Handle-mixed-width-ops-in-mixed-sign-mul-wit.patch +++ /dev/null @@ -1,122 +0,0 @@ -From b9d6dba608ab50d2e4a1b0f2318a5d1b390fc702 Mon Sep 17 00:00:00 2001 -From: Vedant Kumar -Date: Tue, 18 Dec 2018 21:05:03 +0000 -Subject: [PATCH] [CodeGen] Handle mixed-width ops in mixed-sign - mul-with-overflow lowering - -The special lowering for __builtin_mul_overflow introduced in r320902 -fixed an ICE seen when passing mixed-sign operands to the builtin. - -This patch extends the special lowering to cover mixed-width, mixed-sign -operands. In a few common scenarios, calls to muloti4 will no longer be -emitted. - -This should address the latest comments in PR34920 and work around the -link failure seen in: - - https://bugzilla.redhat.com/show_bug.cgi?id=1657544 - -Testing: -- check-clang -- A/B output comparison with: https://gist.github.com/vedantk/3eb9c88f82e5c32f2e590555b4af5081 - -Differential Revision: https://reviews.llvm.org/D55843 - -git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@349542 91177308-0d34-0410-b5e6-96231b3b80d8 ---- - lib/CodeGen/CGBuiltin.cpp | 19 ++++++++++++++----- - test/CodeGen/builtins-overflow.c | 21 +++++++++++++++++++++ - 2 files changed, 35 insertions(+), 5 deletions(-) - -diff --git a/lib/CodeGen/CGBuiltin.cpp b/lib/CodeGen/CGBuiltin.cpp -index 0770c20..4303a7a 100644 ---- a/lib/CodeGen/CGBuiltin.cpp -+++ b/lib/CodeGen/CGBuiltin.cpp -@@ -1077,7 +1077,7 @@ static bool isSpecialMixedSignMultiply(unsigned BuiltinID, - WidthAndSignedness Op2Info, - WidthAndSignedness ResultInfo) { - return BuiltinID == Builtin::BI__builtin_mul_overflow && -- Op1Info.Width == Op2Info.Width && Op1Info.Width >= ResultInfo.Width && -+ std::max(Op1Info.Width, Op2Info.Width) >= ResultInfo.Width && - Op1Info.Signed != Op2Info.Signed; - } - -@@ -1098,11 +1098,20 @@ EmitCheckedMixedSignMultiply(CodeGenFunction &CGF, const clang::Expr *Op1, - const clang::Expr *UnsignedOp = Op1Info.Signed ? Op2 : Op1; - llvm::Value *Signed = CGF.EmitScalarExpr(SignedOp); - llvm::Value *Unsigned = CGF.EmitScalarExpr(UnsignedOp); -+ unsigned SignedOpWidth = Op1Info.Signed ? Op1Info.Width : Op2Info.Width; -+ unsigned UnsignedOpWidth = Op1Info.Signed ? Op2Info.Width : Op1Info.Width; -+ -+ // One of the operands may be smaller than the other. If so, [s|z]ext it. -+ if (SignedOpWidth < UnsignedOpWidth) -+ Signed = CGF.Builder.CreateSExt(Signed, Unsigned->getType(), "op.sext"); -+ if (UnsignedOpWidth < SignedOpWidth) -+ Unsigned = CGF.Builder.CreateZExt(Unsigned, Signed->getType(), "op.zext"); - - llvm::Type *OpTy = Signed->getType(); - llvm::Value *Zero = llvm::Constant::getNullValue(OpTy); - Address ResultPtr = CGF.EmitPointerWithAlignment(ResultArg); - llvm::Type *ResTy = ResultPtr.getElementType(); -+ unsigned OpWidth = std::max(Op1Info.Width, Op2Info.Width); - - // Take the absolute value of the signed operand. - llvm::Value *IsNegative = CGF.Builder.CreateICmpSLT(Signed, Zero); -@@ -1120,8 +1129,8 @@ EmitCheckedMixedSignMultiply(CodeGenFunction &CGF, const clang::Expr *Op1, - if (ResultInfo.Signed) { - // Signed overflow occurs if the result is greater than INT_MAX or lesser - // than INT_MIN, i.e when |Result| > (INT_MAX + IsNegative). -- auto IntMax = llvm::APInt::getSignedMaxValue(ResultInfo.Width) -- .zextOrSelf(Op1Info.Width); -+ auto IntMax = -+ llvm::APInt::getSignedMaxValue(ResultInfo.Width).zextOrSelf(OpWidth); - llvm::Value *MaxResult = - CGF.Builder.CreateAdd(llvm::ConstantInt::get(OpTy, IntMax), - CGF.Builder.CreateZExt(IsNegative, OpTy)); -@@ -1139,9 +1148,9 @@ EmitCheckedMixedSignMultiply(CodeGenFunction &CGF, const clang::Expr *Op1, - llvm::Value *Underflow = CGF.Builder.CreateAnd( - IsNegative, CGF.Builder.CreateIsNotNull(UnsignedResult)); - Overflow = CGF.Builder.CreateOr(UnsignedOverflow, Underflow); -- if (ResultInfo.Width < Op1Info.Width) { -+ if (ResultInfo.Width < OpWidth) { - auto IntMax = -- llvm::APInt::getMaxValue(ResultInfo.Width).zext(Op1Info.Width); -+ llvm::APInt::getMaxValue(ResultInfo.Width).zext(OpWidth); - llvm::Value *TruncOverflow = CGF.Builder.CreateICmpUGT( - UnsignedResult, llvm::ConstantInt::get(OpTy, IntMax)); - Overflow = CGF.Builder.CreateOr(Overflow, TruncOverflow); -diff --git a/test/CodeGen/builtins-overflow.c b/test/CodeGen/builtins-overflow.c -index 57f90eb..79a3186 100644 ---- a/test/CodeGen/builtins-overflow.c -+++ b/test/CodeGen/builtins-overflow.c -@@ -339,6 +339,27 @@ long long test_smulll_overflow(long long x, long long y) { - return result; - } - -+int test_mixed_sign_mul_overflow_sext_signed_op(int x, unsigned long long y) { -+// CHECK: @test_mixed_sign_mul_overflow_sext_signed_op -+// CHECK: [[SignedOp:%.*]] = sext i32 %0 to i64 -+// CHECK: [[IsNeg:%.*]] = icmp slt i64 [[SignedOp]], 0 -+ int result; -+ if (__builtin_mul_overflow(x, y, &result)) -+ return LongErrorCode; -+ return result; -+} -+ -+int test_mixed_sign_mul_overflow_zext_unsigned_op(long long x, unsigned y) { -+// CHECK: @test_mixed_sign_mul_overflow_zext_unsigned_op -+// CHECK: [[UnsignedOp:%.*]] = zext i32 %1 to i64 -+// CHECK: [[IsNeg:%.*]] = icmp slt i64 %0, 0 -+// CHECK: @llvm.umul.with.overflow.i64({{.*}}, i64 [[UnsignedOp]]) -+ int result; -+ if (__builtin_mul_overflow(x, y, &result)) -+ return LongErrorCode; -+ return result; -+} -+ - int test_mixed_sign_mull_overflow(int x, unsigned y) { - // CHECK: @test_mixed_sign_mull_overflow - // CHECK: [[IsNeg:%.*]] = icmp slt i32 [[Op1:%.*]], 0 --- -1.8.3.1 - diff --git a/0001-Convert-clang-format-diff.py-to-python3-using-2to3.patch b/0001-Convert-clang-format-diff.py-to-python3-using-2to3.patch deleted file mode 100644 index 2c15ece..0000000 --- a/0001-Convert-clang-format-diff.py-to-python3-using-2to3.patch +++ /dev/null @@ -1,52 +0,0 @@ -From a1bccf89a02accab69b359ef004faa95257333c0 Mon Sep 17 00:00:00 2001 -From: Tom Stellard -Date: Fri, 7 Sep 2018 18:27:16 +0000 -Subject: [PATCH] Convert clang-format-diff.py to python3 using 2to3 - ---- - tools/clang-format/clang-format-diff.py | 10 +++++----- - 1 file changed, 5 insertions(+), 5 deletions(-) - -diff --git a/tools/clang-format/clang-format-diff.py b/tools/clang-format/clang-format-diff.py -index ffa30e70dd..1525a3815c 100755 ---- a/tools/clang-format/clang-format-diff.py -+++ b/tools/clang-format/clang-format-diff.py -@@ -1,4 +1,4 @@ --#!/usr/bin/env python -+#!/usr/bin/python3 - # - #===- clang-format-diff.py - ClangFormat Diff Reformatter ----*- python -*--===# - # -@@ -27,7 +27,7 @@ import difflib - import re - import string - import subprocess --import StringIO -+import io - import sys - - -@@ -89,9 +89,9 @@ def main(): - ['-lines', str(start_line) + ':' + str(end_line)]) - - # Reformat files containing changes in place. -- for filename, lines in lines_by_file.iteritems(): -+ for filename, lines in lines_by_file.items(): - if args.i and args.verbose: -- print 'Formatting', filename -+ print('Formatting', filename) - command = [args.binary, filename] - if args.i: - command.append('-i') -@@ -109,7 +109,7 @@ def main(): - if not args.i: - with open(filename) as f: - code = f.readlines() -- formatted_code = StringIO.StringIO(stdout).readlines() -+ formatted_code = io.StringIO(stdout).readlines() - diff = difflib.unified_diff(code, formatted_code, - filename, filename, - '(before formatting)', '(after formatting)') --- -2.14.3 - diff --git a/0001-Convert-run-find-all-symbols.py-to-python3-using-2to.patch b/0001-Convert-run-find-all-symbols.py-to-python3-using-2to.patch deleted file mode 100644 index 620f80d..0000000 --- a/0001-Convert-run-find-all-symbols.py-to-python3-using-2to.patch +++ /dev/null @@ -1,61 +0,0 @@ -From 6430ef09aecb30bce588c2d7f35b2294d219c835 Mon Sep 17 00:00:00 2001 -From: Tom Stellard -Date: Mon, 26 Nov 2018 19:18:12 -0800 -Subject: [PATCH] Convert run-find-all-symbols.py to python3 using 2to3 - ---- - include-fixer/find-all-symbols/tool/run-find-all-symbols.py | 10 +++++----- - 1 file changed, 5 insertions(+), 5 deletions(-) - -diff --git a/include-fixer/find-all-symbols/tool/run-find-all-symbols.py b/include-fixer/find-all-symbols/tool/run-find-all-symbols.py -index 461d959..89a6cf5 100755 ---- a/include-fixer/find-all-symbols/tool/run-find-all-symbols.py -+++ b/include-fixer/find-all-symbols/tool/run-find-all-symbols.py -@@ -27,7 +27,7 @@ import argparse - import json - import multiprocessing - import os --import Queue -+import queue - import shutil - import subprocess - import sys -@@ -40,7 +40,7 @@ def find_compilation_database(path): - result = './' - while not os.path.isfile(os.path.join(result, path)): - if os.path.realpath(result) == '/': -- print 'Error: could not find compilation database.' -+ print('Error: could not find compilation database.') - sys.exit(1) - result += '../' - return os.path.realpath(result) -@@ -50,7 +50,7 @@ def MergeSymbols(directory, args): - """Merge all symbol files (yaml) in a given directaory into a single file.""" - invocation = [args.binary, '-merge-dir='+directory, args.saving_path] - subprocess.call(invocation) -- print 'Merge is finished. Saving results in ' + args.saving_path -+ print('Merge is finished. Saving results in ' + args.saving_path) - - - def run_find_all_symbols(args, tmpdir, build_path, queue): -@@ -96,7 +96,7 @@ def main(): - - try: - # Spin up a bunch of tidy-launching threads. -- queue = Queue.Queue(max_task) -+ queue = queue.Queue(max_task) - for _ in range(max_task): - t = threading.Thread(target=run_find_all_symbols, - args=(args, tmpdir, build_path, queue)) -@@ -116,7 +116,7 @@ def main(): - except KeyboardInterrupt: - # This is a sad hack. Unfortunately subprocess goes - # bonkers with ctrl-c and we start forking merrily. -- print '\nCtrl-C detected, goodbye.' -+ print('\nCtrl-C detected, goodbye.') - os.kill(0, 9) - - --- -1.8.3.1 - diff --git a/0001-Convert-scan-view-to-python3-using-2to3.patch b/0001-Convert-scan-view-to-python3-using-2to3.patch deleted file mode 100644 index 9384ce7..0000000 --- a/0001-Convert-scan-view-to-python3-using-2to3.patch +++ /dev/null @@ -1,411 +0,0 @@ -diff -r -u cfe-7.0.1.src.orig/tools/scan-view/bin/scan-view cfe-7.0.1.src/tools/scan-view/bin/scan-view ---- cfe-7.0.1.src.orig/tools/scan-view/bin/scan-view 2019-01-25 06:33:02.331385931 +0000 -+++ cfe-7.0.1.src/tools/scan-view/bin/scan-view 2019-01-25 06:34:16.207696772 +0000 -@@ -7,9 +7,9 @@ - import imp - import os - import posixpath --import thread -+import _thread - import time --import urllib -+import urllib.request, urllib.parse, urllib.error - import webbrowser - - # How long to wait for server to start. -@@ -27,7 +27,7 @@ - - def url_is_up(url): - try: -- o = urllib.urlopen(url) -+ o = urllib.request.urlopen(url) - except IOError: - return False - o.close() -@@ -35,7 +35,7 @@ - - - def start_browser(port, options): -- import urllib -+ import urllib.request, urllib.parse, urllib.error - import webbrowser - - url = 'http://%s:%d' % (options.host, port) -@@ -52,10 +52,10 @@ - sys.stderr.flush() - time.sleep(kSleepTimeout) - else: -- print >> sys.stderr, 'WARNING: Unable to detect that server started.' -+ print('WARNING: Unable to detect that server started.', file=sys.stderr) - - if options.debug: -- print >> sys.stderr, '%s: Starting webbrowser...' % sys.argv[0] -+ print('%s: Starting webbrowser...' % sys.argv[0], file=sys.stderr) - webbrowser.open(url) - - -@@ -69,9 +69,9 @@ - - import ScanView - try: -- print 'Starting scan-view at: http://%s:%d' % (options.host, -- port) -- print ' Use Ctrl-C to exit.' -+ print('Starting scan-view at: http://%s:%d' % (options.host, -+ port)) -+ print(' Use Ctrl-C to exit.') - httpd = ScanView.create_server((options.host, port), - options, root) - httpd.serve_forever() -@@ -80,9 +80,9 @@ - - - def port_is_open(port): -- import SocketServer -+ import socketserver - try: -- t = SocketServer.TCPServer((kDefaultHost, port), None) -+ t = socketserver.TCPServer((kDefaultHost, port), None) - except: - return False - t.server_close() -@@ -135,7 +135,7 @@ - # Kick off thread to wait for server and start web browser, if - # requested. - if args.startBrowser: -- t = thread.start_new_thread(start_browser, (port, args)) -+ t = _thread.start_new_thread(start_browser, (port, args)) - - run(port, args, args.root) - -diff -r -u cfe-7.0.1.src.orig/tools/scan-view/share/Reporter.py cfe-7.0.1.src/tools/scan-view/share/Reporter.py ---- cfe-7.0.1.src.orig/tools/scan-view/share/Reporter.py 2019-01-25 06:33:02.331385931 +0000 -+++ cfe-7.0.1.src/tools/scan-view/share/Reporter.py 2019-01-25 06:34:16.262697004 +0000 -@@ -80,7 +80,7 @@ - return 'Email' - - def getParameters(self): -- return map(lambda x:TextParameter(x),['To', 'From', 'SMTP Server', 'SMTP Port']) -+ return [TextParameter(x) for x in ['To', 'From', 'SMTP Server', 'SMTP Port']] - - # Lifted from python email module examples. - def attachFile(self, outer, path): -@@ -148,7 +148,7 @@ - return 'Bugzilla' - - def getParameters(self): -- return map(lambda x:TextParameter(x),['URL','Product']) -+ return [TextParameter(x) for x in ['URL','Product']] - - def fileReport(self, report, parameters): - raise NotImplementedError -@@ -211,7 +211,7 @@ - - script = os.path.join(os.path.dirname(__file__),'../share/scan-view/FileRadar.scpt') - args = ['osascript', script, component, componentVersion, classification, personID, report.title, -- report.description, diagnosis, config] + map(os.path.abspath, report.files) -+ report.description, diagnosis, config] + list(map(os.path.abspath, report.files)) - # print >>sys.stderr, args - try: - p = subprocess.Popen(args, stdout=subprocess.PIPE, stderr=subprocess.PIPE) -diff -r -u cfe-7.0.1.src.orig/tools/scan-view/share/ScanView.py cfe-7.0.1.src/tools/scan-view/share/ScanView.py ---- cfe-7.0.1.src.orig/tools/scan-view/share/ScanView.py 2019-01-25 06:33:02.331385931 +0000 -+++ cfe-7.0.1.src/tools/scan-view/share/ScanView.py 2019-01-25 06:34:16.423697681 +0000 -@@ -1,10 +1,10 @@ --import BaseHTTPServer --import SimpleHTTPServer -+import http.server -+import http.server - import os - import sys --import urllib, urlparse -+import urllib.request, urllib.parse, urllib.error, urllib.parse - import posixpath --import StringIO -+import io - import re - import shutil - import threading -@@ -13,7 +13,8 @@ - import itertools - - import Reporter --import ConfigParser -+import configparser -+import importlib - - ### - # Various patterns matched or replaced by server. -@@ -96,25 +97,25 @@ - result = None - try: - if self.server.options.debug: -- print >>sys.stderr, "%s: SERVER: submitting bug."%(sys.argv[0],) -+ print("%s: SERVER: submitting bug."%(sys.argv[0],), file=sys.stderr) - self.status = self.reporter.fileReport(self.report, self.parameters) - self.success = True - time.sleep(3) - if self.server.options.debug: -- print >>sys.stderr, "%s: SERVER: submission complete."%(sys.argv[0],) -- except Reporter.ReportFailure,e: -+ print("%s: SERVER: submission complete."%(sys.argv[0],), file=sys.stderr) -+ except Reporter.ReportFailure as e: - self.status = e.value -- except Exception,e: -- s = StringIO.StringIO() -+ except Exception as e: -+ s = io.StringIO() - import traceback -- print >>s,'Unhandled Exception
'
-+            print('Unhandled Exception
', file=s)
-             traceback.print_exc(e,file=s)
--            print >>s,'
' -+ print('
', file=s) - self.status = s.getvalue() - --class ScanViewServer(BaseHTTPServer.HTTPServer): -+class ScanViewServer(http.server.HTTPServer): - def __init__(self, address, handler, root, reporters, options): -- BaseHTTPServer.HTTPServer.__init__(self, address, handler) -+ http.server.HTTPServer.__init__(self, address, handler) - self.root = root - self.reporters = reporters - self.options = options -@@ -123,7 +124,7 @@ - self.load_config() - - def load_config(self): -- self.config = ConfigParser.RawConfigParser() -+ self.config = configparser.RawConfigParser() - - # Add defaults - self.config.add_section('ScanView') -@@ -155,44 +156,44 @@ - def halt(self): - self.halted = True - if self.options.debug: -- print >>sys.stderr, "%s: SERVER: halting." % (sys.argv[0],) -+ print("%s: SERVER: halting." % (sys.argv[0],), file=sys.stderr) - - def serve_forever(self): - while not self.halted: - if self.options.debug > 1: -- print >>sys.stderr, "%s: SERVER: waiting..." % (sys.argv[0],) -+ print("%s: SERVER: waiting..." % (sys.argv[0],), file=sys.stderr) - try: - self.handle_request() -- except OSError,e: -- print 'OSError',e.errno -+ except OSError as e: -+ print('OSError',e.errno) - - def finish_request(self, request, client_address): - if self.options.autoReload: - import ScanView -- self.RequestHandlerClass = reload(ScanView).ScanViewRequestHandler -- BaseHTTPServer.HTTPServer.finish_request(self, request, client_address) -+ self.RequestHandlerClass = importlib.reload(ScanView).ScanViewRequestHandler -+ http.server.HTTPServer.finish_request(self, request, client_address) - - def handle_error(self, request, client_address): - # Ignore socket errors - info = sys.exc_info() - if info and isinstance(info[1], socket.error): - if self.options.debug > 1: -- print >>sys.stderr, "%s: SERVER: ignored socket error." % (sys.argv[0],) -+ print("%s: SERVER: ignored socket error." % (sys.argv[0],), file=sys.stderr) - return -- BaseHTTPServer.HTTPServer.handle_error(self, request, client_address) -+ http.server.HTTPServer.handle_error(self, request, client_address) - - # Borrowed from Quixote, with simplifications. - def parse_query(qs, fields=None): - if fields is None: - fields = {} -- for chunk in filter(None, qs.split('&')): -+ for chunk in [_f for _f in qs.split('&') if _f]: - if '=' not in chunk: - name = chunk - value = '' - else: - name, value = chunk.split('=', 1) -- name = urllib.unquote(name.replace('+', ' ')) -- value = urllib.unquote(value.replace('+', ' ')) -+ name = urllib.parse.unquote(name.replace('+', ' ')) -+ value = urllib.parse.unquote(value.replace('+', ' ')) - item = fields.get(name) - if item is None: - fields[name] = [value] -@@ -200,20 +201,20 @@ - item.append(value) - return fields - --class ScanViewRequestHandler(SimpleHTTPServer.SimpleHTTPRequestHandler): -+class ScanViewRequestHandler(http.server.SimpleHTTPRequestHandler): - server_version = "ScanViewServer/" + __version__ - dynamic_mtime = time.time() - - def do_HEAD(self): - try: -- SimpleHTTPServer.SimpleHTTPRequestHandler.do_HEAD(self) -- except Exception,e: -+ http.server.SimpleHTTPRequestHandler.do_HEAD(self) -+ except Exception as e: - self.handle_exception(e) - - def do_GET(self): - try: -- SimpleHTTPServer.SimpleHTTPRequestHandler.do_GET(self) -- except Exception,e: -+ http.server.SimpleHTTPRequestHandler.do_GET(self) -+ except Exception as e: - self.handle_exception(e) - - def do_POST(self): -@@ -230,7 +231,7 @@ - if f: - self.copyfile(f, self.wfile) - f.close() -- except Exception,e: -+ except Exception as e: - self.handle_exception(e) - - def log_message(self, format, *args): -@@ -263,8 +264,8 @@ - - def handle_exception(self, exc): - import traceback -- s = StringIO.StringIO() -- print >>s, "INTERNAL ERROR\n" -+ s = io.StringIO() -+ print("INTERNAL ERROR\n", file=s) - traceback.print_exc(exc, s) - f = self.send_string(s.getvalue(), 'text/plain') - if f: -@@ -410,8 +411,8 @@ - - import startfile - if self.server.options.debug: -- print >>sys.stderr, '%s: SERVER: opening "%s"'%(sys.argv[0], -- file) -+ print('%s: SERVER: opening "%s"'%(sys.argv[0], -+ file), file=sys.stderr) - - status = startfile.open(file) - if status: -@@ -428,7 +429,7 @@ - data = self.load_crashes() - # Don't allow empty reports. - if not data: -- raise ValueError, 'No crashes detected!' -+ raise ValueError('No crashes detected!') - c = Context() - c.title = 'clang static analyzer failures' - -@@ -472,7 +473,7 @@ - # Check that this is a valid report. - path = posixpath.join(self.server.root, 'report-%s.html' % report) - if not posixpath.exists(path): -- raise ValueError, 'Invalid report ID' -+ raise ValueError('Invalid report ID') - keys = self.load_report(report) - c = Context() - c.title = keys.get('DESC','clang error (unrecognized') -@@ -501,7 +502,7 @@ - # report is None is used for crashes - try: - c = self.get_report_context(report) -- except ValueError, e: -+ except ValueError as e: - return self.send_error(400, e.message) - - title = c.title -@@ -544,7 +545,7 @@ - """%(r.getName(),display,r.getName(),options)) - reporterSelections = '\n'.join(reporterSelections) - reporterOptionsDivs = '\n'.join(reporterOptions) -- reportersArray = '[%s]'%(','.join([`r.getName()` for r in self.server.reporters])) -+ reportersArray = '[%s]'%(','.join([repr(r.getName()) for r in self.server.reporters])) - - if c.files: - fieldSize = min(5, len(c.files)) -@@ -647,9 +648,9 @@ - fields = {} - self.fields = fields - -- o = urlparse.urlparse(self.path) -+ o = urllib.parse.urlparse(self.path) - self.fields = parse_query(o.query, fields) -- path = posixpath.normpath(urllib.unquote(o.path)) -+ path = posixpath.normpath(urllib.parse.unquote(o.path)) - - # Split the components and strip the root prefix. - components = path.split('/')[1:] -@@ -690,8 +691,8 @@ - path = posixpath.join(self.server.root, relpath) - - if self.server.options.debug > 1: -- print >>sys.stderr, '%s: SERVER: sending path "%s"'%(sys.argv[0], -- path) -+ print('%s: SERVER: sending path "%s"'%(sys.argv[0], -+ path), file=sys.stderr) - return self.send_path(path) - - def send_404(self): -@@ -735,7 +736,7 @@ - mtime = self.dynamic_mtime - self.send_header("Last-Modified", self.date_time_string(mtime)) - self.end_headers() -- return StringIO.StringIO(s) -+ return io.StringIO(s) - - def send_patched_file(self, path, ctype): - # Allow a very limited set of variables. This is pretty gross. -diff -r -u cfe-7.0.1.src.orig/tools/scan-view/share/startfile.py cfe-7.0.1.src/tools/scan-view/share/startfile.py ---- cfe-7.0.1.src.orig/tools/scan-view/share/startfile.py 2019-01-25 06:33:02.331385931 +0000 -+++ cfe-7.0.1.src/tools/scan-view/share/startfile.py 2019-01-25 06:34:16.457697824 +0000 -@@ -70,7 +70,7 @@ - return not returncode - - def open(self, filename): -- if isinstance(filename, basestring): -+ if isinstance(filename, str): - cmdline = self.args + [filename] - else: - # assume it is a sequence -@@ -110,7 +110,7 @@ - # Platform support for Unix - else: - -- import commands -+ import subprocess - - # @WARNING: use the private API of the webbrowser module - from webbrowser import _iscommand -@@ -125,7 +125,7 @@ - def detect_kde_version(self): - kde_version = None - try: -- info = commands.getoutput('kde-config --version') -+ info = subprocess.getoutput('kde-config --version') - - for line in info.splitlines(): - if line.startswith('KDE'): -@@ -158,7 +158,7 @@ - desktop_environment = 'gnome' - else: - try: -- info = commands.getoutput('xprop -root _DT_SAVE_MODE') -+ info = subprocess.getoutput('xprop -root _DT_SAVE_MODE') - if ' = "xfce4"' in info: - desktop_environment = 'xfce' - except (OSError, RuntimeError): -@@ -189,7 +189,7 @@ - return _controllers[controller_name].open - - except KeyError: -- if _controllers.has_key('xdg-open'): -+ if 'xdg-open' in _controllers: - return _controllers['xdg-open'].open - else: - return webbrowser.open diff --git a/0001-Don-t-prefer-python2.7.patch b/0001-Don-t-prefer-python2.7.patch deleted file mode 100644 index 28ca4e0..0000000 --- a/0001-Don-t-prefer-python2.7.patch +++ /dev/null @@ -1,24 +0,0 @@ -From d13bd5108e3471cc6f6203ba1c0c0e67323bbb12 Mon Sep 17 00:00:00 2001 -From: Tom Stellard -Date: Wed, 5 Sep 2018 21:43:42 -0700 -Subject: [PATCH] Don't prefer python2.7 - ---- - CMakeLists.txt | 1 - - 1 file changed, 1 deletion(-) - -diff --git a/CMakeLists.txt b/CMakeLists.txt -index 52b8819..6f233fd 100644 ---- a/CMakeLists.txt -+++ b/CMakeLists.txt -@@ -109,7 +109,6 @@ if( CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR ) - set( CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib${LLVM_LIBDIR_SUFFIX} ) - - if(LLVM_INCLUDE_TESTS) -- set(Python_ADDITIONAL_VERSIONS 2.7) - include(FindPythonInterp) - if(NOT PYTHONINTERP_FOUND) - message(FATAL_ERROR --- -1.8.3.1 - diff --git a/0001-Driver-Prefer-vendor-supplied-gcc-toolchain.patch b/0001-Driver-Prefer-vendor-supplied-gcc-toolchain.patch deleted file mode 100644 index b9d0aee..0000000 --- a/0001-Driver-Prefer-vendor-supplied-gcc-toolchain.patch +++ /dev/null @@ -1,120 +0,0 @@ -From d84a971ba917569829b51fff6057e5fd0d85e402 Mon Sep 17 00:00:00 2001 -From: Tom Stellard -Date: Thu, 18 Jan 2018 02:57:51 +0000 -Subject: [PATCH] Driver: Prefer vendor supplied gcc toolchain - -Summary: -This patch fixes an issue on Fedora where if you had the x86_64 cross -compiler installed on your x86_64 system, then clang would use that compiler -as the default toolchain. This was happening because the cross compiler -is installed to /usr/lib/gcc/x86_64-linux-gnu/ and this directory comes before -the default compiler directory (/usr/lib/gcc/x86_64-redhat-linux/) in the search -list. - -This patch re-orders the search list so that vendor supplied gcc toolchains -are selected before toolchains with a generic target, which should prevent -these kind of issues on other OSes too. - -Subscribers: srhines, cfe-commits - -Differential Revision: https://reviews.llvm.org/D42608 ---- - lib/Driver/ToolChains/Gnu.cpp | 47 ++++++++++++++++++++++--------------------- - 1 file changed, 24 insertions(+), 23 deletions(-) - -diff --git a/lib/Driver/ToolChains/Gnu.cpp b/lib/Driver/ToolChains/Gnu.cpp -index 3755673..5a49a6e 100644 ---- a/lib/Driver/ToolChains/Gnu.cpp -+++ b/lib/Driver/ToolChains/Gnu.cpp -@@ -1811,18 +1811,19 @@ void Generic_GCC::GCCInstallationDetector::AddDefaultGCCPrefixes( - // lifetime or initialization issues. - static const char *const AArch64LibDirs[] = {"/lib64", "/lib"}; - static const char *const AArch64Triples[] = { -- "aarch64-none-linux-gnu", "aarch64-linux-gnu", "aarch64-redhat-linux", -- "aarch64-suse-linux"}; -+ "aarch64-redhat-linux", "aarch64-suse-linux", -+ "aarch64-none-linux-gnu", "aarch64-linux-gnu"}; - static const char *const AArch64beLibDirs[] = {"/lib"}; - static const char *const AArch64beTriples[] = {"aarch64_be-none-linux-gnu", - "aarch64_be-linux-gnu"}; - - static const char *const ARMLibDirs[] = {"/lib"}; - static const char *const ARMTriples[] = {"arm-linux-gnueabi"}; -- static const char *const ARMHFTriples[] = {"arm-linux-gnueabihf", -- "armv7hl-redhat-linux-gnueabi", -+ static const char *const ARMHFTriples[] = {"armv7hl-redhat-linux-gnueabi", - "armv6hl-suse-linux-gnueabi", -- "armv7hl-suse-linux-gnueabi"}; -+ "armv7hl-suse-linux-gnueabi", -+ "arm-linux-gnueabihf", -+ }; - static const char *const ARMebLibDirs[] = {"/lib"}; - static const char *const ARMebTriples[] = {"armeb-linux-gnueabi"}; - static const char *const ARMebHFTriples[] = { -@@ -1830,19 +1831,19 @@ void Generic_GCC::GCCInstallationDetector::AddDefaultGCCPrefixes( - - static const char *const X86_64LibDirs[] = {"/lib64", "/lib"}; - static const char *const X86_64Triples[] = { -- "x86_64-linux-gnu", "x86_64-unknown-linux-gnu", -- "x86_64-pc-linux-gnu", "x86_64-redhat-linux6E", -- "x86_64-redhat-linux", "x86_64-suse-linux", -- "x86_64-manbo-linux-gnu", "x86_64-linux-gnu", -- "x86_64-slackware-linux", "x86_64-unknown-linux", -- "x86_64-amazon-linux"}; -+ "x86_64-redhat-linux6E", "x86_64-redhat-linux", -+ "x86_64-suse-linux", "x86_64-slackware-linux", -+ "x86_64-manbo-linux-gnu", "x86_64-amazon-linux", -+ "x86_64-linux-gnu", "x86_64-unknown-linux-gnu", -+ "x86_64-pc-linux-gnu", "x86_64-linux-gnu", -+ "x86_64-unknown-linux"}; - static const char *const X32LibDirs[] = {"/libx32"}; - static const char *const X86LibDirs[] = {"/lib32", "/lib"}; - static const char *const X86Triples[] = { -- "i686-linux-gnu", "i686-pc-linux-gnu", "i486-linux-gnu", -- "i386-linux-gnu", "i386-redhat-linux6E", "i686-redhat-linux", -- "i586-redhat-linux", "i386-redhat-linux", "i586-suse-linux", -- "i486-slackware-linux", "i686-montavista-linux", "i586-linux-gnu"}; -+ "i386-redhat-linux6E", "i686-redhat-linux", "i586-redhat-linux", -+ "i386-redhat-linux", "i586-suse-linux", "i486-slackware-linux", -+ "i686-montavista-linux", "i686-linux-gnu", "i686-pc-linux-gnu", -+ "i486-linux-gnu", "i386-linux-gnu", "i586-linux-gnu"}; - - static const char *const MIPSLibDirs[] = {"/lib"}; - static const char *const MIPSTriples[] = {"mips-linux-gnu", "mips-mti-linux", -@@ -1864,16 +1865,16 @@ void Generic_GCC::GCCInstallationDetector::AddDefaultGCCPrefixes( - - static const char *const PPCLibDirs[] = {"/lib32", "/lib"}; - static const char *const PPCTriples[] = { -- "powerpc-linux-gnu", "powerpc-unknown-linux-gnu", "powerpc-linux-gnuspe", -- "powerpc-suse-linux", "powerpc-montavista-linuxspe"}; -+ "powerpc-suse-linux", "powerpc-montavista-linuxspe", -+ "powerpc-linux-gnu", "powerpc-unknown-linux-gnu", "powerpc-linux-gnuspe"}; - static const char *const PPC64LibDirs[] = {"/lib64", "/lib"}; - static const char *const PPC64Triples[] = { -- "powerpc64-linux-gnu", "powerpc64-unknown-linux-gnu", -- "powerpc64-suse-linux", "ppc64-redhat-linux"}; -+ "powerpc64-suse-linux", "ppc64-redhat-linux", -+ "powerpc64-linux-gnu", "powerpc64-unknown-linux-gnu"}; - static const char *const PPC64LELibDirs[] = {"/lib64", "/lib"}; - static const char *const PPC64LETriples[] = { -- "powerpc64le-linux-gnu", "powerpc64le-unknown-linux-gnu", -- "powerpc64le-suse-linux", "ppc64le-redhat-linux"}; -+ "powerpc64le-suse-linux", "ppc64le-redhat-linux", -+ "powerpc64le-linux-gnu", "powerpc64le-unknown-linux-gnu"}; - - static const char *const RISCV32LibDirs[] = {"/lib", "/lib32"}; - static const char *const RISCVTriples[] = {"riscv32-unknown-linux-gnu", -@@ -1889,8 +1890,8 @@ void Generic_GCC::GCCInstallationDetector::AddDefaultGCCPrefixes( - - static const char *const SystemZLibDirs[] = {"/lib64", "/lib"}; - static const char *const SystemZTriples[] = { -- "s390x-linux-gnu", "s390x-unknown-linux-gnu", "s390x-ibm-linux-gnu", -- "s390x-suse-linux", "s390x-redhat-linux"}; -+ "s390x-ibm-linux-gnu", "s390x-suse-linux", "s390x-redhat-linux", -+ "s390x-linux-gnu", "s390x-unknown-linux-gnu"}; - - - using std::begin; --- -1.8.3.1 - diff --git a/0001-lit.cfg-Add-hack-so-lit-can-find-not-and-FileCheck.patch b/0001-lit.cfg-Add-hack-so-lit-can-find-not-and-FileCheck.patch deleted file mode 100644 index 508434d..0000000 --- a/0001-lit.cfg-Add-hack-so-lit-can-find-not-and-FileCheck.patch +++ /dev/null @@ -1,27 +0,0 @@ -From 06cde370a44393d65bae7f61279900b5838b4a2c Mon Sep 17 00:00:00 2001 -From: Tom Stellard -Date: Tue, 23 Jan 2018 18:59:20 -0800 -Subject: [PATCH] lit.cfg: Add hack so lit can find not and FileCheck - ---- - test/lit.cfg.py | 3 +++ - 1 file changed, 3 insertions(+) - -diff --git a/test/lit.cfg.py b/test/lit.cfg.py -index 5323cfe..5b4184e 100644 ---- a/test/lit.cfg.py -+++ b/test/lit.cfg.py -@@ -39,7 +39,10 @@ config.test_source_root = os.path.dirname(__file__) - # test_exec_root: The root path where tests should be run. - config.test_exec_root = os.path.join(config.clang_obj_root, 'test') - -+old_llvm_tools_dir = llvm_config.config.llvm_tools_dir -+llvm_config.config.llvm_tools_dir = '/usr/lib@FEDORA_LLVM_LIB_SUFFIX@/llvm' - llvm_config.use_default_substitutions() -+llvm_config.config.llvm_tools_dir = old_llvm_tools_dir - - llvm_config.use_clang() - --- -1.8.3.1 - diff --git a/0001-lit.cfg-Remove-substitutions-for-clang-llvm-tools.patch b/0001-lit.cfg-Remove-substitutions-for-clang-llvm-tools.patch deleted file mode 100644 index a0ed70d..0000000 --- a/0001-lit.cfg-Remove-substitutions-for-clang-llvm-tools.patch +++ /dev/null @@ -1,73 +0,0 @@ -From c4d409e8481e402eb34739c6579bd9ffe383f3cd Mon Sep 17 00:00:00 2001 -From: Tom Stellard -Date: Fri, 16 Jun 2017 00:48:27 +0000 -Subject: [PATCH] lit.cfg: Remove substitutions for clang/llvm tools - -We were missing some subsitutions, for example 'not with no pipe, so -there was a mismatch where some tests would run tools using the full -path and others would search PATH for the tool. - -The new beahavior is that the lit tests will always search PATH for the -tool. This should not change the current functionality, because the -smae paths that were being used in substitutions are being added to -PATH. ---- - test/lit.cfg | 42 ------------------------------------------ - 1 file changed, 42 deletions(-) - -diff --git a/test/lit.cfg b/test/lit.cfg -index 7d8bebf..9ded96c 100644 ---- a/test/lit.cfg -+++ b/test/lit.cfg -@@ -303,48 +303,6 @@ config.substitutions.append( - (' %clang-cl ', - """*** invalid substitution, use '%clang_cl'. ***""") ) - --# For each occurrence of a clang tool name as its own word, replace it --# with the full path to the build directory holding that tool. This --# ensures that we are testing the tools just built and not some random --# tools that might happen to be in the user's PATH. --tool_dirs = os.path.pathsep.join((clang_tools_dir, llvm_tools_dir)) -- --# Regex assertions to reject neighbor hyphens/dots (seen in some tests). --# For example, don't match 'clang-check-' or '.clang-format'. --NoPreHyphenDot = r"(? -Date: Wed, 21 Mar 2018 07:17:00 -0700 -Subject: [PATCH] gtest reorg +From 1f26a0284925859b72ee520ce74452d77d822409 Mon Sep 17 00:00:00 2001 +From: serge-sans-paille +Date: Mon, 28 Jan 2019 19:12:27 +0000 +Subject: [PATCH 2/2] [PATCH] gtest reorg --- CMakeLists.txt | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt -index 2eee8e6..01d290f 100644 +index c2016a45ca..48ea3c3bb9 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt -@@ -142,12 +142,6 @@ Please install Python or specify the PYTHON_EXECUTABLE CMake variable.") +@@ -157,12 +157,6 @@ Please install Python or specify the PYTHON_EXECUTABLE CMake variable.") set(LLVM_UTILS_PROVIDED ON) set(CLANG_TEST_DEPS FileCheck count not) endif() @@ -24,7 +24,7 @@ index 2eee8e6..01d290f 100644 else() # Seek installed Lit. find_program(LLVM_LIT -@@ -477,7 +471,11 @@ endif() +@@ -507,7 +501,11 @@ endif() if( CLANG_INCLUDE_TESTS ) @@ -38,5 +38,5 @@ index 2eee8e6..01d290f 100644 list(APPEND CLANG_TEST_DEPS ClangUnitTests) list(APPEND CLANG_TEST_PARAMS -- -1.8.3.1 +2.19.2 diff --git a/clang.spec b/clang.spec index ff56379..b7dc87d 100644 --- a/clang.spec +++ b/clang.spec @@ -1,9 +1,9 @@ %global compat_build 0 -%global maj_ver 7 +%global maj_ver 8 %global min_ver 0 -%global patch_ver 1 -#%%global rc_ver 3 +%global patch_ver 0 +%global rc_ver 1 %global clang_tools_binaries \ %{_bindir}/clangd \ @@ -24,8 +24,8 @@ %{_bindir}/clang-check \ %{_bindir}/clang-cl \ %{_bindir}/clang-cpp \ + %{_bindir}/clang-extdef-mapping \ %{_bindir}/clang-format \ - %{_bindir}/clang-func-mapping \ %{_bindir}/clang-import-test \ %{_bindir}/clang-offload-bundler \ %{_bindir}/diagtool \ @@ -45,6 +45,7 @@ %global pkg_libdir %{install_libdir} %else %global pkg_name clang +%global install_prefix /usr %endif %if 0%{?fedora} || 0%{?rhel} > 7 @@ -53,6 +54,8 @@ %bcond_with python3 %endif +%global build_install_prefix %{buildroot}%{install_prefix} + %global clang_srcdir cfe-%{version}%{?rc_ver:rc%{rc_ver}}.src %global clang_tools_srcdir clang-tools-extra-%{version}%{?rc_ver:rc%{rc_ver}}.src @@ -68,23 +71,14 @@ Source0: http://%{?rc_ver:pre}releases.llvm.org/%{version}/%{?rc_ver:rc%{rc_ver} Source1: http://%{?rc_ver:pre}releases.llvm.org/%{version}/%{?rc_ver:rc%{rc_ver}}/%{clang_tools_srcdir}.tar.xz %endif -Patch0: 0001-lit.cfg-Add-hack-so-lit-can-find-not-and-FileCheck.patch -Patch2: 0001-Driver-Prefer-vendor-supplied-gcc-toolchain.patch -Patch4: 0001-gtest-reorg.patch -Patch5: 0001-Don-t-prefer-python2.7.patch -Patch6: 0001-Convert-clang-format-diff.py-to-python3-using-2to3.patch -Patch7: 0001-Convert-scan-view-to-python3-using-2to3.patch -#rhbz#1657544 -Patch8: 0001-CodeGen-Handle-mixed-width-ops-in-mixed-sign-mul-wit.patch +Patch4: 0002-gtest-reorg.patch Patch9: 0001-Fix-uninitialized-value-in-ABIArgInfo.patch Patch10: 0001-Workaround-GCC-9-bug-when-handling-bitfields.patch -# clang-tools-extra patches -Patch100: 0001-Convert-run-find-all-symbols.py-to-python3-using-2to.patch - BuildRequires: gcc BuildRequires: gcc-c++ BuildRequires: cmake +BuildRequires: ninja-build %if 0%{?compat_build} BuildRequires: llvm%{maj_ver}.%{min_ver}-devel = %{version} BuildRequires: llvm%{maj_ver}.%{min_ver}-static = %{version} @@ -109,7 +103,6 @@ BuildRequires: emacs BuildRequires: python3-lit %endif -BuildRequires: python2-rpm-macros BuildRequires: python3-sphinx BuildRequires: libatomic @@ -179,25 +172,27 @@ Requires: emacs-filesystem %description tools-extra A set of extra tools built using Clang's tooling API. -# Put git-clang-format in its own package, because it Requires git and python2 +# Put git-clang-format in its own package, because it Requires git # and we don't want to force users to install all those dependenices if they # just want clang. %package -n git-clang-format Summary: Integration of clang-format for git Requires: %{name}%{?_isa} = %{version}-%{release} Requires: git -Requires: python2 +Requires: python3 %description -n git-clang-format clang-format integration for git. -%package -n python2-clang -Summary: Python2 bindings for clang -Requires: %{name}-libs%{?_isa} = %{version}-%{release} -Requires: python2 -%description -n python2-clang + +%package -n python3-clang +Summary: Python3 bindings for clang +Requires: %{name}-libs%{?_isa} = %{version}-%{release} +Requires: python3 +%description -n python3-clang %{summary}. + %endif @@ -207,7 +202,6 @@ Requires: python2 %else %setup -T -q -b 1 -n %{clang_tools_srcdir} -%patch100 -p1 -b .find-all-symbols-py3 pathfix.py -i %{__python3} -pn \ clang-tidy/tool/*.py \ @@ -215,14 +209,9 @@ pathfix.py -i %{__python3} -pn \ %setup -q -n %{clang_srcdir} -%patch0 -p1 -b .lit-search-path -%patch2 -p1 -b .vendor-gcc %patch4 -p1 -b .gtest -%patch5 -p1 -b .no-python2 -%patch6 -p1 -b .clang-format-diff-py3 -%patch7 -p1 -b .scan-view-py3 -%patch8 -p1 -b .mul-overflow-fix %patch9 -p1 -b .abi-arginfo +%patch10 -p1 -b .bitfields mv ../%{clang_tools_srcdir} tools/extra @@ -249,7 +238,7 @@ cd _build %global optflags %(echo %{optflags} | sed 's/-g /-g1 /') %endif -%cmake .. \ +%cmake .. -G Ninja \ -DLLVM_LINK_LLVM_DYLIB:BOOL=ON \ -DCMAKE_BUILD_TYPE=RelWithDebInfo \ -DPYTHON_EXECUTABLE=%{__python3} \ @@ -258,7 +247,7 @@ cd _build -DCMAKE_INSTALL_PREFIX=%{install_prefix} \ -DCLANG_INCLUDE_TESTS:BOOL=OFF \ %else - -DLLVM_CONFIG:FILEPATH=/usr/bin/llvm-config-%{__isa_bits} \ + -DLLVM_TOOLS_BINARY_DIR=%{_libdir}/llvm \ -DCLANG_INCLUDE_TESTS:BOOL=ON \ -DLLVM_EXTERNAL_LIT=%{_bindir}/lit \ -DLLVM_MAIN_SRC_DIR=%{_datadir}/llvm/src \ @@ -281,13 +270,12 @@ cd _build -DSPHINX_WARNINGS_AS_ERRORS=OFF \ \ -DCLANG_BUILD_EXAMPLES:BOOL=OFF \ - -DCLANG_REPOSITORY_STRING="%{?fedora:Fedora}%{?rhel:Red Hat} %{version}-%{release}" \ - -DLIB_SUFFIX= + -DCLANG_REPOSITORY_STRING="%{?fedora:Fedora}%{?rhel:Red Hat} %{version}-%{release}" -make %{?_smp_mflags} +ninja -v %install -make install DESTDIR=%{buildroot} -C _build +DESTDIR=%{buildroot} ninja install -C _build %if 0%{?compat_build} @@ -304,8 +292,9 @@ mv %{buildroot}/%{install_includedir}/clang-c %{buildroot}/%{pkg_includedir}/ %else # install clang python bindings -mkdir -p %{buildroot}%{python2_sitelib}/clang/ -install -p -m644 bindings/python/clang/* %{buildroot}%{python2_sitelib}/clang/ +mkdir -p %{buildroot}%{python3_sitelib}/clang/ +install -p -m644 bindings/python/clang/* %{buildroot}%{python3_sitelib}/clang/ +%py_byte_compile %{__python3} %{buildroot}%{python3_sitelib}/clang # multilib fix %multilib_fix_c_header --file %{_includedir}/clang/Config/config.h @@ -327,6 +316,9 @@ rm -Rvf %{buildroot}%{_pkgdocdir} rm -vf %{buildroot}%{_datadir}/clang/bash-autocomplete.sh # Add clang++-{version} sylink +ln -s clang %{buildroot}%{_bindir}/clang++ +ln -s clang %{buildroot}%{_bindir}/clang-cl +ln -s clang %{buildroot}%{_bindir}/clang-cpp ln -s clang++ %{buildroot}%{_bindir}/clang++-%{maj_ver} # Create Manpage symlinks @@ -342,9 +334,8 @@ chmod u-x %{buildroot}%{_mandir}/man1/scan-build.1* %check %if !0%{?compat_build} # requires lit.py from LLVM utilities -cd _build # FIXME: Fix failing ARM tests -PATH=%{_libdir}/llvm:$PATH make %{?_smp_mflags} check-all || \ +PATH=%{_libdir}/llvm:$PATH ninja check-all -C _build || \ %ifarch %{arm} : %else @@ -417,11 +408,15 @@ false %files -n git-clang-format %{_bindir}/git-clang-format -%files -n python2-clang -%{python2_sitelib}/clang/ +%files -n python3-clang +%{python3_sitelib}/clang/ + %endif %changelog +* Sat Feb 09 2019 sguelton@redhat.com - 8.0.0-1.rc1 +- 8.0.0 Release candidate 1 + * Tue Feb 05 2019 sguelton@redhat.com - 7.0.1-6 - Update patch for Python3 port of scan-view diff --git a/sources b/sources index 9e7a3ed..fc0c329 100644 --- a/sources +++ b/sources @@ -1,2 +1 @@ -SHA512 (clang-tools-extra-7.0.1.src.tar.xz) = f0aa73217560f952261201e9049310e4a038bc5d4b4120a4c5d13a42aacfbbfe702f1891745755e1702269751d3df19237271caecba43c810a6f50d35494c798 -SHA512 (cfe-7.0.1.src.tar.xz) = df2f38153ebdc261bcfa6a569567f759bbb1a803192882a9d4eca55a47878166ac9057151a94ad341dc1281136547e4faa783a68070dfde2307b48cacd4b9194 +SHA512 (clang-tools-extra-8.0.0rc1.src.tar.xz) = 292a65f2b49a0d8c1be078755cc5df682f9dd91ffd66a19900c615b05619009e292d6f6bc3b5c917629d870dbd2b59b0c9b56e2298b281d810f82103de2ec26a