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

Reply via email to