fix: Support running git-[im,ex]port-patches with Python3 too (#32303)

* script: Python3 compatibility for utf8 conversion

The unicode() method has been renamed to str() in Python3,
add a wrapper around it to support running against both versions.

* script: don't require python2 for git-[import,export]-patches

The scripts work just fine with python3 too, so use the generic
python executable as the script interpreter.
Most setups don't even require or provide python 2 anymore,
so this saves one from having to install it just for the scripts.
This commit is contained in:
Romain Pokrzywka 2022-01-10 15:47:55 -06:00 коммит произвёл GitHub
Родитель 746927c972
Коммит 483808a8cf
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: 4AEE18F83AFDEB23
3 изменённых файлов: 11 добавлений и 3 удалений

Просмотреть файл

@ -1,4 +1,4 @@
#!/usr/bin/env python2
#!/usr/bin/env python
import argparse
import sys

Просмотреть файл

@ -1,4 +1,4 @@
#!/usr/bin/env python2
#!/usr/bin/env python
import argparse
import sys

Просмотреть файл

@ -229,6 +229,14 @@ def remove_patch_filename(patch):
force_keep_next_line = l.startswith('Subject: ')
def to_utf8(patch):
"""Python 2/3 compatibility: unicode has been renamed to str in Python3"""
if sys.version_info[0] >= 3:
return str(patch, "utf-8")
else:
return unicode(patch, "utf-8")
def export_patches(repo, out_dir, patch_range=None, dry_run=False):
if patch_range is None:
patch_range, num_patches = guess_base_commit(repo)
@ -250,7 +258,7 @@ def export_patches(repo, out_dir, patch_range=None, dry_run=False):
for patch in patches:
filename = get_file_name(patch)
filepath = posixpath.join(out_dir, filename)
existing_patch = unicode(io.open(filepath, 'rb').read(), "utf-8")
existing_patch = to_utf8(io.open(filepath, 'rb').read())
formatted_patch = join_patch(patch)
if formatted_patch != existing_patch:
bad_patches.append(filename)