Remove some unnecessary scan-view files

This commit is contained in:
Tom Stellard 2020-12-18 23:29:25 +00:00
parent c631efb4f7
commit efa9dd65f1
3 changed files with 535 additions and 1 deletions

View File

@ -0,0 +1,224 @@
From 9d68d4554d903353a7d4599d2428bd479651eb40 Mon Sep 17 00:00:00 2001
From: Tom Stellard <tstellar@redhat.com>
Date: Tue, 9 Feb 2021 13:35:43 -0800
Subject: [PATCH] Partially Revert "scan-view: Remove Reporter.py and
associated AppleScript files"
This reverts some of commit dbb01536f6f49fa428f170e34466072ef439b3e9.
The Reporter module was still being used by the ScanView.py module and deleting
it caused scan-view to fail. This commit adds back Reporter.py but removes the
code the references the AppleScript files which were removed in
dbb01536f6f49fa428f170e34466072ef439b3e9.
Differential Revision: https://reviews.llvm.org/D96367
---
clang/tools/scan-view/CMakeLists.txt | 1 +
clang/tools/scan-view/share/Reporter.py | 183 ++++++++++++++++++++++++
2 files changed, 184 insertions(+)
create mode 100644 clang/tools/scan-view/share/Reporter.py
diff --git a/clang/tools/scan-view/CMakeLists.txt b/clang/tools/scan-view/CMakeLists.txt
index dd3d33439299..eccc6b83195b 100644
--- a/clang/tools/scan-view/CMakeLists.txt
+++ b/clang/tools/scan-view/CMakeLists.txt
@@ -5,6 +5,7 @@ set(BinFiles
set(ShareFiles
ScanView.py
+ Reporter.py
startfile.py
bugcatcher.ico)
diff --git a/clang/tools/scan-view/share/Reporter.py b/clang/tools/scan-view/share/Reporter.py
new file mode 100644
index 000000000000..31a14fb0cf74
--- /dev/null
+++ b/clang/tools/scan-view/share/Reporter.py
@@ -0,0 +1,183 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+
+"""Methods for reporting bugs."""
+
+import subprocess, sys, os
+
+__all__ = ['ReportFailure', 'BugReport', 'getReporters']
+
+#
+
+class ReportFailure(Exception):
+ """Generic exception for failures in bug reporting."""
+ def __init__(self, value):
+ self.value = value
+
+# Collect information about a bug.
+
+class BugReport(object):
+ def __init__(self, title, description, files):
+ self.title = title
+ self.description = description
+ self.files = files
+
+# Reporter interfaces.
+
+import os
+
+import email, mimetypes, smtplib
+from email import encoders
+from email.message import Message
+from email.mime.base import MIMEBase
+from email.mime.multipart import MIMEMultipart
+from email.mime.text import MIMEText
+
+#===------------------------------------------------------------------------===#
+# ReporterParameter
+#===------------------------------------------------------------------------===#
+
+class ReporterParameter(object):
+ def __init__(self, n):
+ self.name = n
+ def getName(self):
+ return self.name
+ def getValue(self,r,bugtype,getConfigOption):
+ return getConfigOption(r.getName(),self.getName())
+ def saveConfigValue(self):
+ return True
+
+class TextParameter (ReporterParameter):
+ def getHTML(self,r,bugtype,getConfigOption):
+ return """\
+<tr>
+<td class="form_clabel">%s:</td>
+<td class="form_value"><input type="text" name="%s_%s" value="%s"></td>
+</tr>"""%(self.getName(),r.getName(),self.getName(),self.getValue(r,bugtype,getConfigOption))
+
+class SelectionParameter (ReporterParameter):
+ def __init__(self, n, values):
+ ReporterParameter.__init__(self,n)
+ self.values = values
+
+ def getHTML(self,r,bugtype,getConfigOption):
+ default = self.getValue(r,bugtype,getConfigOption)
+ return """\
+<tr>
+<td class="form_clabel">%s:</td><td class="form_value"><select name="%s_%s">
+%s
+</select></td>"""%(self.getName(),r.getName(),self.getName(),'\n'.join(["""\
+<option value="%s"%s>%s</option>"""%(o[0],
+ o[0] == default and ' selected="selected"' or '',
+ o[1]) for o in self.values]))
+
+#===------------------------------------------------------------------------===#
+# Reporters
+#===------------------------------------------------------------------------===#
+
+class EmailReporter(object):
+ def getName(self):
+ return 'Email'
+
+ def getParameters(self):
+ return [TextParameter(x) for x in ['To', 'From', 'SMTP Server', 'SMTP Port']]
+
+ # Lifted from python email module examples.
+ def attachFile(self, outer, path):
+ # Guess the content type based on the file's extension. Encoding
+ # will be ignored, although we should check for simple things like
+ # gzip'd or compressed files.
+ ctype, encoding = mimetypes.guess_type(path)
+ if ctype is None or encoding is not None:
+ # No guess could be made, or the file is encoded (compressed), so
+ # use a generic bag-of-bits type.
+ ctype = 'application/octet-stream'
+ maintype, subtype = ctype.split('/', 1)
+ if maintype == 'text':
+ fp = open(path)
+ # Note: we should handle calculating the charset
+ msg = MIMEText(fp.read(), _subtype=subtype)
+ fp.close()
+ else:
+ fp = open(path, 'rb')
+ msg = MIMEBase(maintype, subtype)
+ msg.set_payload(fp.read())
+ fp.close()
+ # Encode the payload using Base64
+ encoders.encode_base64(msg)
+ # Set the filename parameter
+ msg.add_header('Content-Disposition', 'attachment', filename=os.path.basename(path))
+ outer.attach(msg)
+
+ def fileReport(self, report, parameters):
+ mainMsg = """\
+BUG REPORT
+---
+Title: %s
+Description: %s
+"""%(report.title, report.description)
+
+ if not parameters.get('To'):
+ raise ReportFailure('No "To" address specified.')
+ if not parameters.get('From'):
+ raise ReportFailure('No "From" address specified.')
+
+ msg = MIMEMultipart()
+ msg['Subject'] = 'BUG REPORT: %s'%(report.title)
+ # FIXME: Get config parameters
+ msg['To'] = parameters.get('To')
+ msg['From'] = parameters.get('From')
+ msg.preamble = mainMsg
+
+ msg.attach(MIMEText(mainMsg, _subtype='text/plain'))
+ for file in report.files:
+ self.attachFile(msg, file)
+
+ try:
+ s = smtplib.SMTP(host=parameters.get('SMTP Server'),
+ port=parameters.get('SMTP Port'))
+ s.sendmail(msg['From'], msg['To'], msg.as_string())
+ s.close()
+ except:
+ raise ReportFailure('Unable to send message via SMTP.')
+
+ return "Message sent!"
+
+class BugzillaReporter(object):
+ def getName(self):
+ return 'Bugzilla'
+
+ def getParameters(self):
+ return [TextParameter(x) for x in ['URL','Product']]
+
+ def fileReport(self, report, parameters):
+ raise NotImplementedError
+
+
+class RadarClassificationParameter(SelectionParameter):
+ def __init__(self):
+ SelectionParameter.__init__(self,"Classification",
+ [['1', 'Security'], ['2', 'Crash/Hang/Data Loss'],
+ ['3', 'Performance'], ['4', 'UI/Usability'],
+ ['6', 'Serious Bug'], ['7', 'Other']])
+
+ def saveConfigValue(self):
+ return False
+
+ def getValue(self,r,bugtype,getConfigOption):
+ if bugtype.find("leak") != -1:
+ return '3'
+ elif bugtype.find("dereference") != -1:
+ return '2'
+ elif bugtype.find("missing ivar release") != -1:
+ return '3'
+ else:
+ return '7'
+
+###
+
+def getReporters():
+ reporters = []
+ reporters.append(EmailReporter())
+ return reporters
+
--
2.27.0

View File

@ -0,0 +1,299 @@
From f962ce26b4bf716af29b9d4d05860d5fb81cee61 Mon Sep 17 00:00:00 2001
From: Tom Stellard <tstellar@redhat.com>
Date: Fri, 18 Dec 2020 23:16:26 +0000
Subject: [PATCH] scan-view: Remove Reporter.py and associated AppleScript
files
I'm not exactly sure what this is, but it appears to be a tool for reporting
internal issues at Apple. These files haven't been meaningfully updated in
12 years, and it doesn't seem like there is any reason to keep them in tree.
Differential Revision: https://reviews.llvm.org/D93565
---
clang/tools/scan-view/CMakeLists.txt | 3 -
clang/tools/scan-view/share/FileRadar.scpt | Bin 18418 -> 0 bytes
.../scan-view/share/GetRadarVersion.scpt | 0
clang/tools/scan-view/share/Reporter.py | 251 ------------------
4 files changed, 254 deletions(-)
delete mode 100644 clang/tools/scan-view/share/FileRadar.scpt
delete mode 100644 clang/tools/scan-view/share/GetRadarVersion.scpt
delete mode 100644 clang/tools/scan-view/share/Reporter.py
diff --git a/clang/tools/scan-view/CMakeLists.txt b/clang/tools/scan-view/CMakeLists.txt
index 22edb974bac7..dd3d33439299 100644
--- a/clang/tools/scan-view/CMakeLists.txt
+++ b/clang/tools/scan-view/CMakeLists.txt
@@ -5,10 +5,7 @@ set(BinFiles
set(ShareFiles
ScanView.py
- Reporter.py
startfile.py
- FileRadar.scpt
- GetRadarVersion.scpt
bugcatcher.ico)
if(CLANG_INSTALL_SCANVIEW)
diff --git a/clang/tools/scan-view/share/GetRadarVersion.scpt b/clang/tools/scan-view/share/GetRadarVersion.scpt
deleted file mode 100644
index e69de29bb2d1..000000000000
diff --git a/clang/tools/scan-view/share/Reporter.py b/clang/tools/scan-view/share/Reporter.py
deleted file mode 100644
index b1ff16142e27..000000000000
--- a/clang/tools/scan-view/share/Reporter.py
+++ /dev/null
@@ -1,251 +0,0 @@
-#!/usr/bin/env python
-# -*- coding: utf-8 -*-
-
-"""Methods for reporting bugs."""
-
-import subprocess, sys, os
-
-__all__ = ['ReportFailure', 'BugReport', 'getReporters']
-
-#
-
-class ReportFailure(Exception):
- """Generic exception for failures in bug reporting."""
- def __init__(self, value):
- self.value = value
-
-# Collect information about a bug.
-
-class BugReport(object):
- def __init__(self, title, description, files):
- self.title = title
- self.description = description
- self.files = files
-
-# Reporter interfaces.
-
-import os
-
-import email, mimetypes, smtplib
-from email import encoders
-from email.message import Message
-from email.mime.base import MIMEBase
-from email.mime.multipart import MIMEMultipart
-from email.mime.text import MIMEText
-
-#===------------------------------------------------------------------------===#
-# ReporterParameter
-#===------------------------------------------------------------------------===#
-
-class ReporterParameter(object):
- def __init__(self, n):
- self.name = n
- def getName(self):
- return self.name
- def getValue(self,r,bugtype,getConfigOption):
- return getConfigOption(r.getName(),self.getName())
- def saveConfigValue(self):
- return True
-
-class TextParameter (ReporterParameter):
- def getHTML(self,r,bugtype,getConfigOption):
- return """\
-<tr>
-<td class="form_clabel">%s:</td>
-<td class="form_value"><input type="text" name="%s_%s" value="%s"></td>
-</tr>"""%(self.getName(),r.getName(),self.getName(),self.getValue(r,bugtype,getConfigOption))
-
-class SelectionParameter (ReporterParameter):
- def __init__(self, n, values):
- ReporterParameter.__init__(self,n)
- self.values = values
-
- def getHTML(self,r,bugtype,getConfigOption):
- default = self.getValue(r,bugtype,getConfigOption)
- return """\
-<tr>
-<td class="form_clabel">%s:</td><td class="form_value"><select name="%s_%s">
-%s
-</select></td>"""%(self.getName(),r.getName(),self.getName(),'\n'.join(["""\
-<option value="%s"%s>%s</option>"""%(o[0],
- o[0] == default and ' selected="selected"' or '',
- o[1]) for o in self.values]))
-
-#===------------------------------------------------------------------------===#
-# Reporters
-#===------------------------------------------------------------------------===#
-
-class EmailReporter(object):
- def getName(self):
- return 'Email'
-
- def getParameters(self):
- return [TextParameter(x) for x in ['To', 'From', 'SMTP Server', 'SMTP Port']]
-
- # Lifted from python email module examples.
- def attachFile(self, outer, path):
- # Guess the content type based on the file's extension. Encoding
- # will be ignored, although we should check for simple things like
- # gzip'd or compressed files.
- ctype, encoding = mimetypes.guess_type(path)
- if ctype is None or encoding is not None:
- # No guess could be made, or the file is encoded (compressed), so
- # use a generic bag-of-bits type.
- ctype = 'application/octet-stream'
- maintype, subtype = ctype.split('/', 1)
- if maintype == 'text':
- fp = open(path)
- # Note: we should handle calculating the charset
- msg = MIMEText(fp.read(), _subtype=subtype)
- fp.close()
- else:
- fp = open(path, 'rb')
- msg = MIMEBase(maintype, subtype)
- msg.set_payload(fp.read())
- fp.close()
- # Encode the payload using Base64
- encoders.encode_base64(msg)
- # Set the filename parameter
- msg.add_header('Content-Disposition', 'attachment', filename=os.path.basename(path))
- outer.attach(msg)
-
- def fileReport(self, report, parameters):
- mainMsg = """\
-BUG REPORT
----
-Title: %s
-Description: %s
-"""%(report.title, report.description)
-
- if not parameters.get('To'):
- raise ReportFailure('No "To" address specified.')
- if not parameters.get('From'):
- raise ReportFailure('No "From" address specified.')
-
- msg = MIMEMultipart()
- msg['Subject'] = 'BUG REPORT: %s'%(report.title)
- # FIXME: Get config parameters
- msg['To'] = parameters.get('To')
- msg['From'] = parameters.get('From')
- msg.preamble = mainMsg
-
- msg.attach(MIMEText(mainMsg, _subtype='text/plain'))
- for file in report.files:
- self.attachFile(msg, file)
-
- try:
- s = smtplib.SMTP(host=parameters.get('SMTP Server'),
- port=parameters.get('SMTP Port'))
- s.sendmail(msg['From'], msg['To'], msg.as_string())
- s.close()
- except:
- raise ReportFailure('Unable to send message via SMTP.')
-
- return "Message sent!"
-
-class BugzillaReporter(object):
- def getName(self):
- return 'Bugzilla'
-
- def getParameters(self):
- return [TextParameter(x) for x in ['URL','Product']]
-
- def fileReport(self, report, parameters):
- raise NotImplementedError
-
-
-class RadarClassificationParameter(SelectionParameter):
- def __init__(self):
- SelectionParameter.__init__(self,"Classification",
- [['1', 'Security'], ['2', 'Crash/Hang/Data Loss'],
- ['3', 'Performance'], ['4', 'UI/Usability'],
- ['6', 'Serious Bug'], ['7', 'Other']])
-
- def saveConfigValue(self):
- return False
-
- def getValue(self,r,bugtype,getConfigOption):
- if bugtype.find("leak") != -1:
- return '3'
- elif bugtype.find("dereference") != -1:
- return '2'
- elif bugtype.find("missing ivar release") != -1:
- return '3'
- else:
- return '7'
-
-class RadarReporter(object):
- @staticmethod
- def isAvailable():
- # FIXME: Find this .scpt better
- path = os.path.join(os.path.dirname(__file__),'../share/scan-view/GetRadarVersion.scpt')
- try:
- p = subprocess.Popen(['osascript',path],
- stdout=subprocess.PIPE, stderr=subprocess.PIPE)
- except:
- return False
- data,err = p.communicate()
- res = p.wait()
- # FIXME: Check version? Check for no errors?
- return res == 0
-
- def getName(self):
- return 'Radar'
-
- def getParameters(self):
- return [ TextParameter('Component'), TextParameter('Component Version'),
- RadarClassificationParameter() ]
-
- def fileReport(self, report, parameters):
- component = parameters.get('Component', '')
- componentVersion = parameters.get('Component Version', '')
- classification = parameters.get('Classification', '')
- personID = ""
- diagnosis = ""
- config = ""
-
- if not component.strip():
- component = 'Bugs found by clang Analyzer'
- if not componentVersion.strip():
- componentVersion = 'X'
-
- 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] + [os.path.abspath(f) for f in report.files]
-# print >>sys.stderr, args
- try:
- p = subprocess.Popen(args, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
- except:
- raise ReportFailure("Unable to file radar (AppleScript failure).")
- data, err = p.communicate()
- res = p.wait()
-
- if res:
- raise ReportFailure("Unable to file radar (AppleScript failure).")
-
- try:
- values = eval(data)
- except:
- raise ReportFailure("Unable to process radar results.")
-
- # We expect (int: bugID, str: message)
- if len(values) != 2 or not isinstance(values[0], int):
- raise ReportFailure("Unable to process radar results.")
-
- bugID,message = values
- bugID = int(bugID)
-
- if not bugID:
- raise ReportFailure(message)
-
- return "Filed: <a href=\"rdar://%d/\">%d</a>"%(bugID,bugID)
-
-###
-
-def getReporters():
- reporters = []
- if RadarReporter.isAvailable():
- reporters.append(RadarReporter())
- reporters.append(EmailReporter())
- return reporters
-
--
2.26.2

View File

@ -4,7 +4,7 @@
%global min_ver 1 %global min_ver 1
%global patch_ver 0 %global patch_ver 0
%global rc_ver 2 %global rc_ver 2
%global baserelease 4 %global baserelease 5
%global clang_tools_binaries \ %global clang_tools_binaries \
%{_bindir}/clang-apply-replacements \ %{_bindir}/clang-apply-replacements \
@ -93,6 +93,8 @@ Patch13: 0001-Make-funwind-tables-the-default-for-all-archs.patch
Patch15: 0001-clang-Don-t-install-static-libraries.patch Patch15: 0001-clang-Don-t-install-static-libraries.patch
Patch16: 0001-clang-Fix-spurious-test-failure.patch Patch16: 0001-clang-Fix-spurious-test-failure.patch
Patch17: 0001-Driver-Prefer-gcc-toolchains-with-libgcc_s.so-when-n.patch Patch17: 0001-Driver-Prefer-gcc-toolchains-with-libgcc_s.so-when-n.patch
Patch18: 0001-scan-view-Remove-Reporter.py-and-associated-AppleScr.patch
Patch19: 0001-Partially-Revert-scan-view-Remove-Reporter.py-and-as.patch
BuildRequires: gcc BuildRequires: gcc
BuildRequires: gcc-c++ BuildRequires: gcc-c++
@ -275,6 +277,12 @@ pathfix.py -i %{__python3} -pn \
%patch15 -p2 -b .no-install-static %patch15 -p2 -b .no-install-static
%patch16 -p2 -b .test-fix2 %patch16 -p2 -b .test-fix2
%patch17 -p1 -b .check-gcc_s %patch17 -p1 -b .check-gcc_s
%patch18 -p2 -b .scan-view-remove-files
%patch19 -p2 -b .scan-view-remove-files-fix
# Patch does not support binary diffs from git so we have to manually delete
# this:
rm tools/scan-view/share/FileRadar.scpt
mv ../%{clang_tools_srcdir} tools/extra mv ../%{clang_tools_srcdir} tools/extra
@ -528,6 +536,9 @@ false
%endif %endif
%changelog %changelog
* Thu Feb 09 2021 Tom Stellard <tstellar@redhat.com> - 11.1.0-0.5.rc2
- Remove some unnecessary scan-view files
* Tue Jan 26 2021 Fedora Release Engineering <releng@fedoraproject.org> - 11.1.0-0.4.rc2 * Tue Jan 26 2021 Fedora Release Engineering <releng@fedoraproject.org> - 11.1.0-0.4.rc2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild - Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild