On 2019/11/28 10:54, Nathan Hartman wrote:
FYI I have made a list of all our Python scripts, categorized in a
very *preliminary* manner into one of three categories:
* Python 3 supported
* Python 3 not supported yet
* Not checked yet
It is preliminary because I've based my categorization on recent
discussions. The intention is to test and then put each script into
the correct category.
Thank you very much.
There are some Python scripts (or a template, or a generator)
which don't have '.py' file extension.
[[[
$ find . -name .svn -prune -or ! -name '*.py' -type f -print0 | xargs -0 egrep
-l '^#\!.*python' | sed -e 's/^\.\///'
tools/backup/hot-backup.py.in
tools/server-side/svnpubsub/svnpubsub.tac
tools/examples/SvnCLBrowse
contrib/hook-scripts/enforcer/enforcer
contrib/server-side/load_repo_with_mergesensitive_copy.sh
]]]
Those are categorized to "Not yet checked".
And there seems to be also some scripts calling Python
interpreter with -c option.
I roughly searched:
[[[
$ find . -name .svn -prune -or -type f -print0 | xargs -0 egrep -i
'(^|[^-])python.* -c'
./subversion/tests/cmdline/davautocheck.sh: REPLY=`$PYTHON -u -c "$prog"
"$@"`
./subversion/tests/cmdline/svnserveautocheck.sh: REPLY=`$PYTHON -u -c "$prog"
"$@"`
./subversion/tests/cmdline/svnserveautocheck.sh: $PYTHON -c 'import random;
print(random.randint(1024, 2**16-1))'
./build/ac-macros/swig.m4: $PYTHON -c 'import sys; sys.exit(0x3000000 >
sys.hexversion)' && \
./tools/buildbot/slaves/win32-xp-VS2005/svncheck.bat:python win-tests.py
%TEST_DIR%\%FS_TYPE% -f %FS_TYPE% -c -r
./tools/buildbot/slaves/win32-xp-VS2005/svncheck.bat:python win-tests.py
%TEST_DIR%\%FS_TYPE% -f %FS_TYPE% -c -r -u svn://localhost
./tools/buildbot/slaves/win32-xp-VS2005/svncheck.bat:python win-tests.py
%TEST_DIR%\%FS_TYPE% -f %FS_TYPE% -c -r --httpd-dir="%HTTPD_BIN_DIR%"
--httpd-port 1234
./tools/hook-scripts/mailer/tests/mailer-t1.sh:for rev in `python -c "print(\"
\".join(map(str, range(1,$youngest+1))))"`; do
./tools/dev/benchmarks/large_dirs/create_bigdir.sh: (jot - "$1" "$2" "1" 2>/dev/null || seq -s ' '
"$1" "$2" 2>/dev/null || python -c "for i in range($1,$2+1): print(i)")
./contrib/client-side/svnmerge/svnmerge-migrate-test.sh:SCRIPT_DIR=$(python -c "import os;
print os.path.abspath(\"`dirname $0`\")")
./INSTALL: C:>python win-tests.py -c -r -v
./INSTALL: C:>python win-tests.py -c -r -v -u http://localhost
./Makefile.in:COMPILE_SWIG_PY = $(LIBTOOL) $(LTFLAGS) --mode=compile
$(SWIG_PY_COMPILE) $(CPPFLAGS) $(LT_CFLAGS) -DSWIGPYTHON $(SWIG_PY_INCLUDES)
$(INCLUDES) -o $@ -c
./Makefile.in: $(PYTHON) -c 'import compileall; \
./Makefile.in:READLINK_PY=$(PYTHON) -c 'import sys,os;
print(os.path.realpath(sys.argv[1]))'
]]]
and got:
Python 3 Supported:
Makefile.in
build/ac-macros/swig.m4
subversion/tests/cmdline/davautocheck.sh
subversion/tests/cmdline/svnserveautocheck.sh
Python 3 not supported yet:
contrib/client-side/svnmerge/svnmerge-migrate-test.sh
Not Checked For Python 3 Yet:
tools/hook-scripts/mailer/tests/mailer-t1.sh
tools/dev/benchmarks/large_dirs/create_bigdir.sh
Since there are many scripts, I'm trying to find the "best" automated
way to determine which are compatible with Python 3.
I would prefer a static analysis method because I don't necessarily
have a use-case to run every single script.
So far I have installed pylint3 and played with it a bit.
I agree with your reason to prefer a static analysis method,
however I doubt that we can use automated tools that can detect
inappropriate bytes - str types handling, or valid usage of '/'
operator (,or some thing like that but I don't think of, right now).
If they can't, they can only detect which are incompatible with
Python 3 (and I guess not many scripts can be detected as
incompatible in this level, because it seems they were repeatedly
fixed toward Python 3 support).
My preliminary list follows...
If anyone happens to know (off the top of their head) that my
categorization of a script is incorrect, please let me know.
Once the list seems correct, I'll file an issue to help us keep track
of progress, and link to it from the "Known Issues" section of the
1.14 release notes as discussed here some days ago...
Here is updated list, with suggestion in mail
<1da0f265-6c6d-8044-1623-fedde5a57...@apache.org>.
List:
Python 3 Supported
==================
build/getversion.py
build/run_tests.py
build/transform_sql.py
build/generator/gen_win_dependencies.py
build/generator/gen_win.py
build/generator/gen_vcnet_vcproj.py
build/generator/swig/external_runtime.py
build/generator/swig/__init__.py
build/generator/swig/header_wrappers.py
build/generator/swig/checkout_swig_header.py
build/generator/util/__init__.py
build/generator/__init__.py
build/generator/extractor.py
build/generator/gen_make.py
build/generator/gen_base.py
build/generator/ezt.py
build/transform_config_hw.py
build/get-py-info.py
build/win32/make_dist.py
subversion/tests/cmdline/mod_authz_svn_tests.py
subversion/tests/cmdline/history_tests.py
subversion/tests/cmdline/dav_tests.py
subversion/tests/cmdline/input_validation_tests.py
subversion/tests/cmdline/log_tests.py
subversion/tests/cmdline/merge_automatic_tests.py
subversion/tests/cmdline/merge_reintegrate_tests.py
subversion/tests/cmdline/lock_tests.py
subversion/tests/cmdline/merge_tests.py
subversion/tests/cmdline/copy_tests.py
subversion/tests/cmdline/svnversion_tests.py
subversion/tests/cmdline/svneditor.py
subversion/tests/cmdline/basic_tests.py
subversion/tests/cmdline/svnlook_tests.py
subversion/tests/cmdline/prop_tests.py
subversion/tests/cmdline/merge_authz_tests.py
subversion/tests/cmdline/resolve_tests.py
subversion/tests/cmdline/revert_tests.py
subversion/tests/cmdline/svntest/tree.py
subversion/tests/cmdline/svntest/wc.py
subversion/tests/cmdline/svntest/testcase.py
subversion/tests/cmdline/svntest/actions.py
subversion/tests/cmdline/svntest/__init__.py
subversion/tests/cmdline/svntest/mergetrees.py
subversion/tests/cmdline/svntest/factory.py
subversion/tests/cmdline/svntest/deeptrees.py
subversion/tests/cmdline/svntest/sandbox.py
subversion/tests/cmdline/svntest/verify.py
subversion/tests/cmdline/svntest/objects.py
subversion/tests/cmdline/svntest/main.py
subversion/tests/cmdline/svntest/err.py
subversion/tests/cmdline/svnauthz_tests.py
subversion/tests/cmdline/schedule_tests.py
subversion/tests/cmdline/entries_tests.py
subversion/tests/cmdline/patch_tests.py
subversion/tests/cmdline/export_tests.py
subversion/tests/cmdline/iprop_tests.py
subversion/tests/cmdline/commit_tests.py
subversion/tests/cmdline/authz_tests.py
subversion/tests/cmdline/legacy/utf8_tests.py
subversion/tests/cmdline/move_tests.py
subversion/tests/cmdline/changelist_tests.py
subversion/tests/cmdline/mergeinfo_tests.py
subversion/tests/cmdline/redirect_tests.py
subversion/tests/cmdline/getopt_tests.py
subversion/tests/cmdline/shelf_tests.py
subversion/tests/cmdline/special_tests.py
subversion/tests/cmdline/svnsync_authz_tests.py
subversion/tests/cmdline/depth_tests.py
subversion/tests/cmdline/trans_tests.py
subversion/tests/cmdline/autoprop_tests.py
subversion/tests/cmdline/import_tests.py
subversion/tests/cmdline/merge_tree_conflict_tests.py
subversion/tests/cmdline/stat_tests.py
subversion/tests/cmdline/pegrev_parse_tests.py
subversion/tests/cmdline/svnrdump_tests.py
subversion/tests/cmdline/info_tests.py
subversion/tests/cmdline/switch_tests.py
subversion/tests/cmdline/externals_tests.py
subversion/tests/cmdline/svnadmin_tests.py
subversion/tests/cmdline/wc_tests.py
subversion/tests/cmdline/cat_tests.py
subversion/tests/cmdline/update_tests.py
subversion/tests/cmdline/mod_dav_svn_tests.py
subversion/tests/cmdline/upgrade_tests.py
subversion/tests/cmdline/iprop_authz_tests.py
subversion/tests/cmdline/blame_tests.py
subversion/tests/cmdline/svnmover_tests.py
subversion/tests/cmdline/svndumpfilter_tests.py
subversion/tests/cmdline/svnmucc_tests.py
subversion/tests/cmdline/svnfsfs_tests.py
subversion/tests/cmdline/svnsync_tests.py
subversion/tests/cmdline/tree_conflict_tests.py
subversion/tests/cmdline/checkout_tests.py
subversion/tests/cmdline/relocate_tests.py
subversion/tests/cmdline/diff_tests.py
subversion/bindings/swig/python/svn/wc.py
subversion/bindings/swig/python/svn/client.py
subversion/bindings/swig/python/svn/__init__.py
subversion/bindings/swig/python/svn/core.py
subversion/bindings/swig/python/svn/repos.py
subversion/bindings/swig/python/svn/fs.py
subversion/bindings/swig/python/svn/delta.py
subversion/bindings/swig/python/svn/diff.py
subversion/bindings/swig/python/svn/ra.py
subversion/bindings/swig/python/tests/auth.py
subversion/bindings/swig/python/tests/wc.py
subversion/bindings/swig/python/tests/checksum.py
subversion/bindings/swig/python/tests/setup_path.py
subversion/bindings/swig/python/tests/client.py
subversion/bindings/swig/python/tests/trac/__init__.py
subversion/bindings/swig/python/tests/trac/test.py
subversion/bindings/swig/python/tests/trac/versioncontrol/tests/__init__.py
subversion/bindings/swig/python/tests/trac/versioncontrol/tests/svn_fs.py
subversion/bindings/swig/python/tests/trac/versioncontrol/__init__.py
subversion/bindings/swig/python/tests/trac/versioncontrol/main.py
subversion/bindings/swig/python/tests/trac/versioncontrol/svn_fs.py
subversion/bindings/swig/python/tests/core.py
subversion/bindings/swig/python/tests/mergeinfo.py
subversion/bindings/swig/python/tests/utils.py
subversion/bindings/swig/python/tests/fs.py
subversion/bindings/swig/python/tests/typemap.py
subversion/bindings/swig/python/tests/delta.py
subversion/bindings/swig/python/tests/run_all.py
subversion/bindings/swig/python/tests/repository.py
subversion/bindings/swig/python/tests/pool.py
subversion/bindings/swig/python/tests/ra.py
subversion/bindings/swig/python/__init__.py
subversion/bindings/swig/include/proxy.py
gen-make.py
Makefile.in
build/ac-macros/swig.m4
subversion/tests/cmdline/davautocheck.sh
subversion/tests/cmdline/svnserveautocheck.sh
Python 3 Not Supported Yet
==========================
tools/server-side/fsfs-reshard.py
tools/server-side/svn-backup-dumps.py
tools/server-side/svnpredumpfilter.py
tools/server-side/svn_server_log_parse.py
tools/server-side/test_svn_server_log_parse.py
tools/hook-scripts/mailer/mailer.py
contrib/client-side/svnmerge/svnmerge-migrate-test.sh
Not Checked For Python 3 Yet
============================
tools/hook-scripts/log-police.py
tools/hook-scripts/persist-ephemeral-txnprops.py
tools/hook-scripts/mailer/tests/mailer-tweak.py
tools/hook-scripts/validate-extensions.py
tools/hook-scripts/control-chars.py
tools/hook-scripts/CVE-2017-9800-pre-commit.py
tools/hook-scripts/svnperms.py
tools/hook-scripts/validate-files.py
tools/hook-scripts/verify-po.py
tools/hook-scripts/svn2feed.py
tools/client-side/svn-viewspec.py
tools/client-side/mergeinfo-sanitizer.py
tools/client-side/server-version.py
tools/client-side/change-svn-wc-format.py
tools/client-side/svn-vendor.py
tools/client-side/svnviewspec_test.py
tools/dist/backport_tests_py.py
tools/dist/backport_tests.py
tools/dist/merge-approved-backports.py
tools/dist/changes-to-html.py
tools/dist/release.py
tools/dist/security/_gnupg.py
tools/dist/security/__init__.py
tools/dist/security/mailinglist.py
tools/dist/security/parser.py
tools/dist/security/adviser.py
tools/dist/security/mailer.py
tools/dist/backport/__init__.py
tools/dist/backport/status.py
tools/dist/backport/merger.py
tools/dist/advisory.py
tools/dist/backport_tests_pl.py
tools/dist/checksums.py
tools/dist/detect-conflicting-backports.py
tools/po/l10n-report.py
tools/examples/getfile.py
tools/examples/revplist.py
tools/examples/walk-config-auth.py
tools/examples/check-modified.py
tools/examples/geturl.py
tools/examples/putfile.py
tools/examples/svnlook.py
tools/examples/svnshell.py
tools/examples/blame.py
tools/examples/get-location-segments.py
tools/examples/dumpprops.py
tools/dev/graph-dav-servers.py
tools/dev/datecheck.py
tools/dev/gen-py-errors.py
tools/dev/normalize-dump.py
tools/dev/check-license.py
tools/dev/contribulyze.py
tools/dev/merge-graph.py
tools/dev/histogram.py
tools/dev/iz/find-fix.py
tools/dev/iz/ff2csv.py
tools/dev/scramble-tree.py
tools/dev/gen_junit_report.py
tools/dev/sbox-ospath.py
tools/dev/trails.py
tools/dev/wc-ng/count-progress.py
tools/dev/wc-ng/graph-data.py
tools/dev/wc-ng/bump-to-19.py
tools/dev/wc-ng/populate-pristine.py
tools/dev/mergegraph/save_as_sh.py
tools/dev/mergegraph/__init__.py
tools/dev/mergegraph/mergegraph.py
tools/dev/lock-check.py
tools/dev/wc-format.py
tools/dev/random-commits.py
tools/dev/analyze-svnlogs.py
tools/dev/mklog.py
tools/dev/find-control-statements.py
tools/dev/gen-javahl-errors.py
tools/dev/benchmarks/suite1/benchmark.py
tools/dev/benchmarks/RepoPerf/copy_repo.py
tools/dev/benchmarks/RepoPerf/win_repo_bench.py
tools/dev/mlpatch.py
tools/dev/which-error.py
tools/dev/find-bad-style.py
tools/dev/svn-merge-revs.py
tools/dev/verify-history.py
tools/dev/gdb-py/svndbg/__init__.py
tools/dev/gdb-py/svndbg/printers.py
tools/dev/log_revnum_change_asf.py
tools/dev/po-merge.py
tools/bdb/erase-all-text-data.py
tools/bdb/svn-bdb-view.py
tools/bdb/whatis-rep.py
tools/bdb/svnfs.py
tools/bdb/skel.py
tools/server-side/svnpubsub/svnwcsub.py
tools/server-side/svnpubsub/revprop-change-hook.py
tools/server-side/svnpubsub/daemonize.py
tools/server-side/svnpubsub/svnpubsub/server.py
tools/server-side/svnpubsub/svnpubsub/util.py
tools/server-side/svnpubsub/svnpubsub/client.py
tools/server-side/svnpubsub/svnpubsub/__init__.py
tools/server-side/svnpubsub/svntweet.py
tools/server-side/svnpubsub/watcher.py
tools/server-side/svnpubsub/commit-hook.py
tools/server-side/svnpubsub/irkerbridge.py
tools/server-side/svnpubsub/testserver.py
win-tests.py
contrib/hook-scripts/pre-lock-require-needs-lock.py
contrib/hook-scripts/case-insensitive.py
contrib/hook-scripts/remove-zombie-locks.py
contrib/hook-scripts/commit-block-joke.py
contrib/hook-scripts/pre-commit-check.py
contrib/hook-scripts/hook_toolbox.py
contrib/client-side/svn_apply_autoprops.py
contrib/client-side/svn-hgmerge.py
contrib/client-side/incremental-update.py
contrib/client-side/svn_export_empty_files.py
contrib/client-side/svn-merge-vendor.py
contrib/client-side/svnmerge/svnmerge-migrate-history.py
contrib/client-side/svnmerge/svnmerge_test.py
contrib/client-side/svnmerge/svnmerge.py
contrib/client-side/svnmerge/svnmerge-migrate-history-remotely.py
contrib/server-side/authz_svn_group.py
contrib/server-side/add-needs-lock.py
contrib/server-side/fsfsfixer/fixer/fix-rev.py
contrib/server-side/fsfsfixer/fixer/__init__.py
contrib/server-side/fsfsfixer/fixer/find_good_id.py
contrib/server-side/fsfsfixer/fixer/fixer_config.py
contrib/server-side/svn-tweak-author.py
contrib/server-side/fsfsverify.py
notes/move-tracking/path_pairs_to_eid_map.py
notes/directory-index/dirindex.py
notes/directory-index/logimport.py
.ycm_extra_conf.py
subversion/tests/manual/tree-conflicts-add-vs-add.py
tools/backup/hot-backup.py.in
tools/server-side/svnpubsub/svnpubsub.tac
tools/examples/SvnCLBrowse
contrib/hook-scripts/enforcer/enforcer
contrib/server-side/load_repo_with_mergesensitive_copy.sh
tools/hook-scripts/mailer/tests/mailer-t1.sh
tools/dev/benchmarks/large_dirs/create_bigdir.sh
Unmaintained
============
subversion/bindings/ctypes-python/test/localrepos.py
subversion/bindings/ctypes-python/test/wc.py
subversion/bindings/ctypes-python/test/setup_path.py
subversion/bindings/ctypes-python/test/remoterepos.py
subversion/bindings/ctypes-python/test/svntypes.py
subversion/bindings/ctypes-python/test/run_all.py
subversion/bindings/ctypes-python/setup.py
subversion/bindings/ctypes-python/examples/log.py
subversion/bindings/ctypes-python/examples/trunkify.py
subversion/bindings/ctypes-python/examples/mucc.py
subversion/bindings/ctypes-python/examples/example.py
subversion/bindings/ctypes-python/csvn/auth.py
subversion/bindings/ctypes-python/csvn/wc.py
subversion/bindings/ctypes-python/csvn/core/__init__.py
subversion/bindings/ctypes-python/csvn/ext/__init__.py
subversion/bindings/ctypes-python/csvn/ext/listmixin.py
subversion/bindings/ctypes-python/csvn/ext/callback_receiver.py
subversion/bindings/ctypes-python/csvn/__init__.py
subversion/bindings/ctypes-python/csvn/types.py
subversion/bindings/ctypes-python/csvn/repos.py
subversion/bindings/ctypes-python/csvn/txn.py
subversion/libsvn_subr/genctype.py
Cheers,
--
Yasuhito FUTATSUKI <futat...@yf.bsdclub.org>/<futat...@poem.co.jp>