rsadowski noted that a simple version bump is not enough.
Using 2to3 for a few simple conversions is all it takes to fully switch.
Regardless of our python version, this port also requires shebang
adjustments, which are handled now as well.
Built and packaged on sparc64 without Pyhon 2 installed.
FWIW, attached is the output of `make fake' to show what 2to3 does.
OK?
Index: Makefile
===================================================================
RCS file: /cvs/ports/devel/clang-tools-extra/Makefile,v
retrieving revision 1.2
diff -u -p -r1.2 Makefile
--- Makefile 22 Mar 2020 15:23:38 -0000 1.2
+++ Makefile 22 Mar 2020 16:42:36 -0000
@@ -17,7 +17,7 @@ COMMENT= Clang extra tools
LLVM_V = 8.0.1
DISTNAME = llvm-${LLVM_V}.src
PKGNAME= clang-tools-extra-${LLVM_V}
-REVISION= 0
+REVISION= 1
CATEGORIES = devel
@@ -41,6 +41,7 @@ COMPILER = base-clang ports-gcc
MODULES = devel/cmake \
lang/python
+MODPY_VERSION = ${MODPY_DEFAULT_VERSION_3}
RUN_DEPENDS = devel/llvm
@@ -88,6 +89,8 @@ pre-configure:
-@ln -s ${MODPY_BIN} ${WRKDIR}/bin/python
post-install:
+ find ${PREFIX}/share/clang -type f -name \*.py -exec ${MODPY_BIN_ADJ}
{} +
+ 2to3 -w -n ${PREFIX}/share/clang
${MODPY_BIN} ${MODPY_LIBDIR}/compileall.py \
${PREFIX}/share/clang
Index: pkg/PLIST
===================================================================
RCS file: /cvs/ports/devel/clang-tools-extra/pkg/PLIST,v
retrieving revision 1.1.1.1
diff -u -p -r1.1.1.1 PLIST
--- pkg/PLIST 6 Nov 2019 10:07:56 -0000 1.1.1.1
+++ pkg/PLIST 22 Mar 2020 16:24:04 -0000
@@ -8,43 +8,44 @@
@bin bin/clangd
@bin bin/find-all-symbols
@bin bin/modularize
-lib/libclangApplyReplacements.a
-lib/libclangChangeNamespace.a
-lib/libclangDaemon.a
-lib/libclangDoc.a
-lib/libclangIncludeFixer.a
-lib/libclangIncludeFixerPlugin.a
-lib/libclangMove.a
-lib/libclangQuery.a
-lib/libclangReorderFields.a
-lib/libclangTidy.a
-lib/libclangTidyAbseilModule.a
-lib/libclangTidyAndroidModule.a
-lib/libclangTidyBoostModule.a
-lib/libclangTidyBugproneModule.a
-lib/libclangTidyCERTModule.a
-lib/libclangTidyCppCoreGuidelinesModule.a
-lib/libclangTidyFuchsiaModule.a
-lib/libclangTidyGoogleModule.a
-lib/libclangTidyHICPPModule.a
-lib/libclangTidyLLVMModule.a
-lib/libclangTidyMPIModule.a
-lib/libclangTidyMiscModule.a
-lib/libclangTidyModernizeModule.a
-lib/libclangTidyObjCModule.a
-lib/libclangTidyPerformanceModule.a
-lib/libclangTidyPlugin.a
-lib/libclangTidyPortabilityModule.a
-lib/libclangTidyReadabilityModule.a
-lib/libclangTidyUtils.a
-lib/libclangTidyZirconModule.a
-lib/libfindAllSymbols.a
+@static-lib lib/libclangApplyReplacements.a
+@static-lib lib/libclangChangeNamespace.a
+@static-lib lib/libclangDaemon.a
+@static-lib lib/libclangDoc.a
+@static-lib lib/libclangIncludeFixer.a
+@static-lib lib/libclangIncludeFixerPlugin.a
+@static-lib lib/libclangMove.a
+@static-lib lib/libclangQuery.a
+@static-lib lib/libclangReorderFields.a
+@static-lib lib/libclangTidy.a
+@static-lib lib/libclangTidyAbseilModule.a
+@static-lib lib/libclangTidyAndroidModule.a
+@static-lib lib/libclangTidyBoostModule.a
+@static-lib lib/libclangTidyBugproneModule.a
+@static-lib lib/libclangTidyCERTModule.a
+@static-lib lib/libclangTidyCppCoreGuidelinesModule.a
+@static-lib lib/libclangTidyFuchsiaModule.a
+@static-lib lib/libclangTidyGoogleModule.a
+@static-lib lib/libclangTidyHICPPModule.a
+@static-lib lib/libclangTidyLLVMModule.a
+@static-lib lib/libclangTidyMPIModule.a
+@static-lib lib/libclangTidyMiscModule.a
+@static-lib lib/libclangTidyModernizeModule.a
+@static-lib lib/libclangTidyObjCModule.a
+@static-lib lib/libclangTidyPerformanceModule.a
+@static-lib lib/libclangTidyPlugin.a
+@static-lib lib/libclangTidyPortabilityModule.a
+@static-lib lib/libclangTidyReadabilityModule.a
+@static-lib lib/libclangTidyUtils.a
+@static-lib lib/libclangTidyZirconModule.a
+@static-lib lib/libfindAllSymbols.a
+share/clang/${MODPY_PYCACHE}/
+share/clang/${MODPY_PYCACHE}clang-include-fixer.${MODPY_PYC_MAGIC_TAG}pyc
+share/clang/${MODPY_PYCACHE}clang-tidy-diff.${MODPY_PYC_MAGIC_TAG}pyc
+share/clang/${MODPY_PYCACHE}run-clang-tidy.${MODPY_PYC_MAGIC_TAG}pyc
+share/clang/${MODPY_PYCACHE}run-find-all-symbols.${MODPY_PYC_MAGIC_TAG}pyc
share/clang/clang-include-fixer.el
share/clang/clang-include-fixer.py
-share/clang/clang-include-fixer.pyc
share/clang/clang-tidy-diff.py
-share/clang/clang-tidy-diff.pyc
share/clang/run-clang-tidy.py
-share/clang/run-clang-tidy.pyc
share/clang/run-find-all-symbols.py
-share/clang/run-find-all-symbols.pyc
===> Faking installation for clang-tools-extra-8.0.1p1
[0/1] cd
/usr/ports/pobj/clang-tools-extra-8.0.1/build-sparc64/tools/clang/tools/extra
&& /usr/local/bin/cmake -P cmake_install.cmake
-- Install configuration: "Release"
-- Installing:
/usr/ports/pobj/clang-tools-extra-8.0.1/fake-sparc64/usr/local/lib/libclangApplyReplacements.a
-- Installing:
/usr/ports/pobj/clang-tools-extra-8.0.1/fake-sparc64/usr/local/bin/clang-apply-replacements
-- Up-to-date:
/usr/ports/pobj/clang-tools-extra-8.0.1/fake-sparc64/usr/local/bin/clang-apply-replacements
-- Installing:
/usr/ports/pobj/clang-tools-extra-8.0.1/fake-sparc64/usr/local/lib/libclangReorderFields.a
-- Installing:
/usr/ports/pobj/clang-tools-extra-8.0.1/fake-sparc64/usr/local/bin/clang-reorder-fields
-- Installing:
/usr/ports/pobj/clang-tools-extra-8.0.1/fake-sparc64/usr/local/bin/modularize
-- Up-to-date:
/usr/ports/pobj/clang-tools-extra-8.0.1/fake-sparc64/usr/local/bin/modularize
-- Installing:
/usr/ports/pobj/clang-tools-extra-8.0.1/fake-sparc64/usr/local/lib/libclangTidy.a
-- Installing:
/usr/ports/pobj/clang-tools-extra-8.0.1/fake-sparc64/usr/local/lib/libclangTidyAndroidModule.a
-- Installing:
/usr/ports/pobj/clang-tools-extra-8.0.1/fake-sparc64/usr/local/lib/libclangTidyAbseilModule.a
-- Installing:
/usr/ports/pobj/clang-tools-extra-8.0.1/fake-sparc64/usr/local/lib/libclangTidyBoostModule.a
-- Installing:
/usr/ports/pobj/clang-tools-extra-8.0.1/fake-sparc64/usr/local/lib/libclangTidyBugproneModule.a
-- Installing:
/usr/ports/pobj/clang-tools-extra-8.0.1/fake-sparc64/usr/local/lib/libclangTidyCERTModule.a
-- Installing:
/usr/ports/pobj/clang-tools-extra-8.0.1/fake-sparc64/usr/local/lib/libclangTidyCppCoreGuidelinesModule.a
-- Installing:
/usr/ports/pobj/clang-tools-extra-8.0.1/fake-sparc64/usr/local/lib/libclangTidyFuchsiaModule.a
-- Installing:
/usr/ports/pobj/clang-tools-extra-8.0.1/fake-sparc64/usr/local/lib/libclangTidyGoogleModule.a
-- Installing:
/usr/ports/pobj/clang-tools-extra-8.0.1/fake-sparc64/usr/local/lib/libclangTidyHICPPModule.a
-- Installing:
/usr/ports/pobj/clang-tools-extra-8.0.1/fake-sparc64/usr/local/lib/libclangTidyLLVMModule.a
-- Installing:
/usr/ports/pobj/clang-tools-extra-8.0.1/fake-sparc64/usr/local/lib/libclangTidyMiscModule.a
-- Installing:
/usr/ports/pobj/clang-tools-extra-8.0.1/fake-sparc64/usr/local/lib/libclangTidyModernizeModule.a
-- Installing:
/usr/ports/pobj/clang-tools-extra-8.0.1/fake-sparc64/usr/local/lib/libclangTidyMPIModule.a
-- Installing:
/usr/ports/pobj/clang-tools-extra-8.0.1/fake-sparc64/usr/local/lib/libclangTidyObjCModule.a
-- Installing:
/usr/ports/pobj/clang-tools-extra-8.0.1/fake-sparc64/usr/local/lib/libclangTidyPerformanceModule.a
-- Installing:
/usr/ports/pobj/clang-tools-extra-8.0.1/fake-sparc64/usr/local/lib/libclangTidyPlugin.a
-- Installing:
/usr/ports/pobj/clang-tools-extra-8.0.1/fake-sparc64/usr/local/lib/libclangTidyPortabilityModule.a
-- Installing:
/usr/ports/pobj/clang-tools-extra-8.0.1/fake-sparc64/usr/local/lib/libclangTidyReadabilityModule.a
-- Installing:
/usr/ports/pobj/clang-tools-extra-8.0.1/fake-sparc64/usr/local/bin/clang-tidy
-- Installing:
/usr/ports/pobj/clang-tools-extra-8.0.1/fake-sparc64/usr/local/share/clang/clang-tidy-diff.py
-- Installing:
/usr/ports/pobj/clang-tools-extra-8.0.1/fake-sparc64/usr/local/share/clang/run-clang-tidy.py
-- Installing:
/usr/ports/pobj/clang-tools-extra-8.0.1/fake-sparc64/usr/local/lib/libclangTidyUtils.a
-- Installing:
/usr/ports/pobj/clang-tools-extra-8.0.1/fake-sparc64/usr/local/lib/libclangTidyZirconModule.a
-- Installing:
/usr/ports/pobj/clang-tools-extra-8.0.1/fake-sparc64/usr/local/lib/libclangChangeNamespace.a
-- Installing:
/usr/ports/pobj/clang-tools-extra-8.0.1/fake-sparc64/usr/local/bin/clang-change-namespace
-- Installing:
/usr/ports/pobj/clang-tools-extra-8.0.1/fake-sparc64/usr/local/lib/libclangDoc.a
-- Installing:
/usr/ports/pobj/clang-tools-extra-8.0.1/fake-sparc64/usr/local/lib/libclangQuery.a
-- Installing:
/usr/ports/pobj/clang-tools-extra-8.0.1/fake-sparc64/usr/local/bin/clang-query
-- Installing:
/usr/ports/pobj/clang-tools-extra-8.0.1/fake-sparc64/usr/local/lib/libclangMove.a
-- Installing:
/usr/ports/pobj/clang-tools-extra-8.0.1/fake-sparc64/usr/local/lib/libclangDaemon.a
-- Installing:
/usr/ports/pobj/clang-tools-extra-8.0.1/fake-sparc64/usr/local/bin/clangd
-- Installing:
/usr/ports/pobj/clang-tools-extra-8.0.1/fake-sparc64/usr/local/lib/libclangIncludeFixer.a
-- Installing:
/usr/ports/pobj/clang-tools-extra-8.0.1/fake-sparc64/usr/local/lib/libclangIncludeFixerPlugin.a
-- Installing:
/usr/ports/pobj/clang-tools-extra-8.0.1/fake-sparc64/usr/local/bin/clang-include-fixer
-- Up-to-date:
/usr/ports/pobj/clang-tools-extra-8.0.1/fake-sparc64/usr/local/bin/clang-include-fixer
-- Installing:
/usr/ports/pobj/clang-tools-extra-8.0.1/fake-sparc64/usr/local/share/clang/clang-include-fixer.el
-- Installing:
/usr/ports/pobj/clang-tools-extra-8.0.1/fake-sparc64/usr/local/share/clang/clang-include-fixer.py
-- Installing:
/usr/ports/pobj/clang-tools-extra-8.0.1/fake-sparc64/usr/local/lib/libfindAllSymbols.a
-- Installing:
/usr/ports/pobj/clang-tools-extra-8.0.1/fake-sparc64/usr/local/bin/find-all-symbols
-- Installing:
/usr/ports/pobj/clang-tools-extra-8.0.1/fake-sparc64/usr/local/share/clang/run-find-all-symbols.py
find /usr/ports/pobj/clang-tools-extra-8.0.1/fake-sparc64/usr/local/share/clang
-type f -name \*.py -exec perl -pi -e '$. == 1 && s|^.*env
+python.*$|#!/usr/local/bin/python3.7|;' -e '$. == 1 &&
s|^.*bin/python.*$|#!/usr/local/bin/python3.7|;' -e 'close ARGV if eof;' {} +
2to3 -w -n
/usr/ports/pobj/clang-tools-extra-8.0.1/fake-sparc64/usr/local/share/clang
RefactoringTool: Skipping optional fixer: buffer
RefactoringTool: Skipping optional fixer: idioms
RefactoringTool: Skipping optional fixer: set_literal
RefactoringTool: Skipping optional fixer: ws_comma
RefactoringTool: Refactored
/usr/ports/pobj/clang-tools-extra-8.0.1/fake-sparc64/usr/local/share/clang/clang-include-fixer.py
---
/usr/ports/pobj/clang-tools-extra-8.0.1/fake-sparc64/usr/local/share/clang/clang-include-fixer.py
(original)
+++
/usr/ports/pobj/clang-tools-extra-8.0.1/fake-sparc64/usr/local/share/clang/clang-include-fixer.py
(refactored)
@@ -77,7 +77,7 @@
except Exception:
# Show a new prompt on invalid option instead of aborting so that users
# don't need to wait for another include-fixer run.
- print >> sys.stderr, "Invalid option:", res
+ print("Invalid option:", res, file=sys.stderr)
return GetUserSelection(message, headers, maximum_suggested_headers)
return headers[idx - 1]
@@ -150,7 +150,7 @@
if query_mode:
symbol = get_symbol_under_cursor()
if len(symbol) == 0:
- print "Skip querying empty symbol."
+ print("Skip querying empty symbol.")
return
command = [binary, "-stdin", "-query-symbol="+get_symbol_under_cursor(),
"-db=" + args.db, "-input=" + args.input,
@@ -161,13 +161,13 @@
"-input=" + args.input, vim.current.buffer.name]
stdout, stderr = execute(command, text)
if stderr:
- print >> sys.stderr, "Error while running clang-include-fixer: " + stderr
+ print("Error while running clang-include-fixer: " + stderr,
file=sys.stderr)
return
include_fixer_context = json.loads(stdout)
query_symbol_infos = include_fixer_context["QuerySymbolInfos"]
if not query_symbol_infos:
- print "The file is fine, no need to add a header."
+ print("The file is fine, no need to add a header.")
return
symbol = query_symbol_infos[0]["RawIdentifier"]
# The header_infos is already sorted by include-fixer.
@@ -183,7 +183,7 @@
unique_headers.append(header)
if not unique_headers:
- print "Couldn't find a header for {0}.".format(symbol)
+ print("Couldn't find a header for {0}.".format(symbol))
return
try:
@@ -198,9 +198,9 @@
include_fixer_context["HeaderInfos"] = inserted_header_infos
InsertHeaderToVimBuffer(include_fixer_context, text)
- print "Added #include {0} for {1}.".format(selected, symbol)
+ print("Added #include {0} for {1}.".format(selected, symbol))
except Exception as error:
- print >> sys.stderr, error.message
+ print(error.message, file=sys.stderr)
return
RefactoringTool: Refactored
/usr/ports/pobj/clang-tools-extra-8.0.1/fake-sparc64/usr/local/share/clang/clang-tidy-diff.py
---
/usr/ports/pobj/clang-tools-extra-8.0.1/fake-sparc64/usr/local/share/clang/clang-tidy-diff.py
(original)
+++
/usr/ports/pobj/clang-tools-extra-8.0.1/fake-sparc64/usr/local/share/clang/clang-tidy-diff.py
(refactored)
@@ -133,7 +133,7 @@
command.append('-quiet')
if args.build_path is not None:
command.append('-p=%s' % args.build_path)
- command.extend(lines_by_file.keys())
+ command.extend(list(lines_by_file.keys()))
for arg in args.extra_arg:
command.append('-extra-arg=%s' % arg)
for arg in args.extra_arg_before:
RefactoringTool: Refactored
/usr/ports/pobj/clang-tools-extra-8.0.1/fake-sparc64/usr/local/share/clang/run-clang-tidy.py
---
/usr/ports/pobj/clang-tools-extra-8.0.1/fake-sparc64/usr/local/share/clang/run-clang-tidy.py
(original)
+++
/usr/ports/pobj/clang-tools-extra-8.0.1/fake-sparc64/usr/local/share/clang/run-clang-tidy.py
(refactored)
@@ -34,7 +34,7 @@
http://clang.llvm.org/docs/HowToSetupToolingForLLVM.html
"""
-from __future__ import print_function
+
import argparse
import glob
@@ -53,7 +53,7 @@
is_py2 = sys.version[0] == '2'
if is_py2:
- import Queue as queue
+ import queue as queue
else:
import queue as queue
RefactoringTool: Refactored
/usr/ports/pobj/clang-tools-extra-8.0.1/fake-sparc64/usr/local/share/clang/run-find-all-symbols.py
---
/usr/ports/pobj/clang-tools-extra-8.0.1/fake-sparc64/usr/local/share/clang/run-find-all-symbols.py
(original)
+++
/usr/ports/pobj/clang-tools-extra-8.0.1/fake-sparc64/usr/local/share/clang/run-find-all-symbols.py
(refactored)
@@ -27,7 +27,7 @@
import json
import multiprocessing
import os
-import Queue
+import queue
import shutil
import subprocess
import sys
@@ -40,7 +40,7 @@
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 @@
"""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 @@
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 @@
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)
RefactoringTool: Files that were modified:
RefactoringTool:
/usr/ports/pobj/clang-tools-extra-8.0.1/fake-sparc64/usr/local/share/clang/clang-include-fixer.py
RefactoringTool:
/usr/ports/pobj/clang-tools-extra-8.0.1/fake-sparc64/usr/local/share/clang/clang-tidy-diff.py
RefactoringTool:
/usr/ports/pobj/clang-tools-extra-8.0.1/fake-sparc64/usr/local/share/clang/run-clang-tidy.py
RefactoringTool:
/usr/ports/pobj/clang-tools-extra-8.0.1/fake-sparc64/usr/local/share/clang/run-find-all-symbols.py
/usr/local/bin/python3.7 /usr/local/lib/python3.7/compileall.py
/usr/ports/pobj/clang-tools-extra-8.0.1/fake-sparc64/usr/local/share/clang
Listing
'/usr/ports/pobj/clang-tools-extra-8.0.1/fake-sparc64/usr/local/share/clang'...
Compiling
'/usr/ports/pobj/clang-tools-extra-8.0.1/fake-sparc64/usr/local/share/clang/clang-include-fixer.py'...
Compiling
'/usr/ports/pobj/clang-tools-extra-8.0.1/fake-sparc64/usr/local/share/clang/clang-tidy-diff.py'...
Compiling
'/usr/ports/pobj/clang-tools-extra-8.0.1/fake-sparc64/usr/local/share/clang/run-clang-tidy.py'...
Compiling
'/usr/ports/pobj/clang-tools-extra-8.0.1/fake-sparc64/usr/local/share/clang/run-find-all-symbols.py'...