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'...