SPDX-FileCopyrightText: 2022 fosslinux SPDX-License-Identifier: PSF-2.0 We are building Python 3 using Python 2 as our bootstrap. But makeunicodedata has been converted to Python 3. We need to convert back, particularly print statements, and writing to files. We only apply this to the first build. --- Tools/unicode/makeunicodedata.py 2012-04-10 09:25:37.000000000 +1000 +++ Tools/unicode/makeunicodedata.py 2022-07-13 14:13:37.864821008 +1000 @@ -67,7 +67,7 @@ def maketables(trace=0): - print("--- Reading", UNICODE_DATA % "", "...") + print "--- Reading", UNICODE_DATA % "", "..." version = "" unicode = UnicodeData(UNICODE_DATA % version, @@ -76,15 +76,15 @@ DERIVED_CORE_PROPERTIES % version, DERIVEDNORMALIZATION_PROPS % version) - print(len(list(filter(None, unicode.table))), "characters") + print len(list(filter(None, unicode.table))), "characters" for version in old_versions: - print("--- Reading", UNICODE_DATA % ("-"+version), "...") + print "--- Reading", UNICODE_DATA % ("-"+version) + "..." old_unicode = UnicodeData(UNICODE_DATA % ("-"+version), COMPOSITION_EXCLUSIONS % ("-"+version), EASTASIAN_WIDTH % ("-"+version), DERIVED_CORE_PROPERTIES % ("-"+version)) - print(len(list(filter(None, old_unicode.table))), "characters") + print len(list(filter(None, old_unicode.table))), "characters" merge_old_version(version, unicode, old_unicode) makeunicodename(unicode, trace) @@ -103,7 +103,7 @@ FILE = "Modules/unicodedata_db.h" - print("--- Preparing", FILE, "...") + print "--- Preparing", FILE, "..." # 1) database properties @@ -214,92 +214,90 @@ l = comp_last[l] comp_data[f*total_last+l] = char - print(len(table), "unique properties") - print(len(decomp_prefix), "unique decomposition prefixes") - print(len(decomp_data), "unique decomposition entries:", end=' ') - print(decomp_size, "bytes") - print(total_first, "first characters in NFC") - print(total_last, "last characters in NFC") - print(len(comp_pairs), "NFC pairs") + print len(table), "unique properties" + print len(decomp_prefix), "unique decomposition prefixes" + print len(decomp_data), "unique decomposition entries:", + print decomp_size, "bytes" + print total_first, "first characters in NFC" + print total_last, "last characters in NFC" + print len(comp_pairs), "NFC pairs" - print("--- Writing", FILE, "...") + print "--- Writing", FILE, "..." fp = open(FILE, "w") - print("/* this file was generated by %s %s */" % (SCRIPT, VERSION), file=fp) - print(file=fp) - print('#define UNIDATA_VERSION "%s"' % UNIDATA_VERSION, file=fp) - print("/* a list of unique database records */", file=fp) - print("const _PyUnicode_DatabaseRecord _PyUnicode_Database_Records[] = {", file=fp) + fp.write("/* this file was generated by %s %s */\n\n" % (SCRIPT, VERSION)) + fp.write('#define UNIDATA_VERSION "%s"\n' % UNIDATA_VERSION) + fp.write("/* a list of unique database records */\n") + fp.write("const _PyUnicode_DatabaseRecord _PyUnicode_Database_Records[] = {\n") for item in table: - print(" {%d, %d, %d, %d, %d, %d}," % item, file=fp) - print("};", file=fp) - print(file=fp) - - print("/* Reindexing of NFC first characters. */", file=fp) - print("#define TOTAL_FIRST",total_first, file=fp) - print("#define TOTAL_LAST",total_last, file=fp) - print("struct reindex{int start;short count,index;};", file=fp) - print("static struct reindex nfc_first[] = {", file=fp) + fp.write(" {%d, %d, %d, %d, %d, %d},\n" % item) + fp.write("};\n\n") + + fp.write("/* Reindexing of NFC first characters. */\n") + fp.write("#define TOTAL_FIRST %d \n" % total_first) + fp.write("#define TOTAL_LAST %d \n" % total_last) + fp.write("struct reindex{int start;short count,index;};\n") + fp.write("static struct reindex nfc_first[] = {\n") for start,end in comp_first_ranges: - print(" { %d, %d, %d}," % (start,end-start,comp_first[start]), file=fp) - print(" {0,0,0}", file=fp) - print("};\n", file=fp) - print("static struct reindex nfc_last[] = {", file=fp) + fp.write(" { %d, %d, %d},\n" % (start,end-start,comp_first[start])) + fp.write(" {0,0,0}\n") + fp.write("};\n") + fp.write("static struct reindex nfc_last[] = {\n") for start,end in comp_last_ranges: - print(" { %d, %d, %d}," % (start,end-start,comp_last[start]), file=fp) - print(" {0,0,0}", file=fp) - print("};\n", file=fp) + fp.write(" { %d, %d, %d},\n" % (start,end-start,comp_last[start])) + fp.write(" {0,0,0}\n") + fp.write("};\n") # FIXME: the following tables could be made static, and # the support code moved into unicodedatabase.c - print("/* string literals */", file=fp) - print("const char *_PyUnicode_CategoryNames[] = {", file=fp) + fp.write("/* string literals */") + fp.write("const char *_PyUnicode_CategoryNames[] = {") for name in CATEGORY_NAMES: - print(" \"%s\"," % name, file=fp) - print(" NULL", file=fp) - print("};", file=fp) + fp.write(" \"%s\",\n" % name) + fp.write(" NULL\n") + fp.write("};\n") - print("const char *_PyUnicode_BidirectionalNames[] = {", file=fp) + fp.write("const char *_PyUnicode_BidirectionalNames[] = {\n") for name in BIDIRECTIONAL_NAMES: - print(" \"%s\"," % name, file=fp) - print(" NULL", file=fp) - print("};", file=fp) + fp.write(" \"%s\",\n" % name) + fp.write(" NULL\n") + fp.write("};\n") - print("const char *_PyUnicode_EastAsianWidthNames[] = {", file=fp) + fp.write("const char *_PyUnicode_EastAsianWidthNames[] = {\n") for name in EASTASIANWIDTH_NAMES: - print(" \"%s\"," % name, file=fp) - print(" NULL", file=fp) - print("};", file=fp) + fp.write(" \"%s\",\n" % name) + fp.write(" NULL\n") + fp.write("};\n") - print("static const char *decomp_prefix[] = {", file=fp) + fp.write("static const char *decomp_prefix[] = {\n") for name in decomp_prefix: - print(" \"%s\"," % name, file=fp) - print(" NULL", file=fp) - print("};", file=fp) + fp.write(" \"%s\",\n" % name) + fp.write(" NULL\n") + fp.write("};\n") # split record index table index1, index2, shift = splitbins(index, trace) - print("/* index tables for the database records */", file=fp) - print("#define SHIFT", shift, file=fp) + fp.write("/* index tables for the database records */\n") + fp.write("#define SHIFT %d\n" % shift) Array("index1", index1).dump(fp, trace) Array("index2", index2).dump(fp, trace) # split decomposition index table index1, index2, shift = splitbins(decomp_index, trace) - print("/* decomposition data */", file=fp) + fp.write("/* decomposition data */\n") Array("decomp_data", decomp_data).dump(fp, trace) - print("/* index tables for the decomposition data */", file=fp) - print("#define DECOMP_SHIFT", shift, file=fp) + fp.write("/* index tables for the decomposition data */\n") + fp.write("#define DECOMP_SHIFT %d\n" % shift) Array("decomp_index1", index1).dump(fp, trace) Array("decomp_index2", index2).dump(fp, trace) index, index2, shift = splitbins(comp_data, trace) - print("/* NFC pairs */", file=fp) - print("#define COMP_SHIFT", shift, file=fp) + fp.write("/* NFC pairs */\n") + fp.write("#define COMP_SHIFT %d\n" % shift) Array("comp_index", index).dump(fp, trace) Array("comp_data", index2).dump(fp, trace) @@ -316,30 +314,30 @@ index[i] = cache[record] = len(records) records.append(record) index1, index2, shift = splitbins(index, trace) - print("static const change_record change_records_%s[] = {" % cversion, file=fp) + fp.write("static const change_record change_records_%s[] = {\n" % cversion) for record in records: - print("\t{ %s }," % ", ".join(map(str,record)), file=fp) - print("};", file=fp) - Array("changes_%s_index" % cversion, index1).dump(fp, trace) - Array("changes_%s_data" % cversion, index2).dump(fp, trace) - print("static const change_record* get_change_%s(Py_UCS4 n)" % cversion, file=fp) - print("{", file=fp) - print("\tint index;", file=fp) - print("\tif (n >= 0x110000) index = 0;", file=fp) - print("\telse {", file=fp) - print("\t\tindex = changes_%s_index[n>>%d];" % (cversion, shift), file=fp) - print("\t\tindex = changes_%s_data[(index<<%d)+(n & %d)];" % \ - (cversion, shift, ((1<= 0x110000) index = 0;\n") + fp.write("\telse {\n") + fp.write("\t\tindex = changes_%s_index[n>>%d];\n" % (cversion, shift)) + fp.write("\t\tindex = changes_%s_data[(index<<%d)+(n & %d)];\n" % \ + (cversion, shift, ((1< 0 - print(short, "short indexes in lexicon") + print short, "short indexes in lexicon" # statistics n = 0 for i in range(short): n = n + len(wordlist[i][1]) - print(n, "short indexes in phrasebook") + print n, "short indexes in phrasebook" # pick the most commonly used words, and sort the rest on falling # length (to maximize overlap) @@ -592,29 +590,29 @@ codehash = Hash("code", data, 47) - print("--- Writing", FILE, "...") + print "--- Writing", FILE, "..." fp = open(FILE, "w") - print("/* this file was generated by %s %s */" % (SCRIPT, VERSION), file=fp) - print(file=fp) - print("#define NAME_MAXLEN", 256, file=fp) - print(file=fp) - print("/* lexicon */", file=fp) + fp.write("/* this file was generated by %s %s */\n" % (SCRIPT, VERSION)) + fp.write("\n") + fp.write("#define NAME_MAXLEN 256") + fp.write("\n") + fp.write("/* lexicon */\n") Array("lexicon", lexicon).dump(fp, trace) Array("lexicon_offset", lexicon_offset).dump(fp, trace) # split decomposition index table offset1, offset2, shift = splitbins(phrasebook_offset, trace) - print("/* code->name phrasebook */", file=fp) - print("#define phrasebook_shift", shift, file=fp) - print("#define phrasebook_short", short, file=fp) + fp.write("/* code->name phrasebook */\n") + fp.write("#define phrasebook_shift %d\n" % shift) + fp.write("#define phrasebook_short %d\n" % short) Array("phrasebook", phrasebook).dump(fp, trace) Array("phrasebook_offset1", offset1).dump(fp, trace) Array("phrasebook_offset2", offset2).dump(fp, trace) - print("/* name->code dictionary */", file=fp) + fp.write("/* name->code dictionary */\n") codehash.dump(fp, trace) fp.close() @@ -868,7 +866,7 @@ else: raise AssertionError("ran out of polynomials") - print(size, "slots in hash table") + print size, "slots in hash table" table = [None] * size @@ -900,7 +898,7 @@ if incr > mask: incr = incr ^ poly - print(n, "collisions") + print n, "collisions" self.collisions = n for i in range(len(table)): @@ -931,8 +929,6 @@ def dump(self, file, trace=0): # write data to file, as a C array size = getsize(self.data) - if trace: - print(self.name+":", size*len(self.data), "bytes", file=sys.stderr) file.write("static ") if size == 1: file.write("unsigned char") @@ -980,12 +976,6 @@ """ import sys - if trace: - def dump(t1, t2, shift, bytes): - print("%d+%d bins at shift %d; %d bytes" % ( - len(t1), len(t2), shift, bytes), file=sys.stderr) - print("Size of original table:", len(t)*getsize(t), \ - "bytes", file=sys.stderr) n = len(t)-1 # last valid index maxshift = 0 # the most we can shift n and still have something left if n > 0: @@ -993,7 +983,7 @@ n >>= 1 maxshift += 1 del n - bytes = sys.maxsize # smallest total size so far + bytes_size = 2**31 - 1 # smallest total size so far t = tuple(t) # so slices can be dict keys for shift in range(maxshift + 1): t1 = [] @@ -1010,15 +1000,10 @@ t1.append(index >> shift) # determine memory size b = len(t1)*getsize(t1) + len(t2)*getsize(t2) - if trace > 1: - dump(t1, t2, shift, b) - if b < bytes: + if b < bytes_size: best = t1, t2, shift - bytes = b + bytes_size = b t1, t2, shift = best - if trace: - print("Best:", end=' ', file=sys.stderr) - dump(t1, t2, shift, bytes) if __debug__: # exhaustively verify that the decomposition is correct mask = ~((~0) << shift) # i.e., low-bit mask of shift bits --- Lib/token.py 2012-04-10 09:25:36.000000000 +1000 +++ Lib/token.py 2022-07-13 14:13:37.893821468 +1000 @@ -93,11 +93,7 @@ outFileName = "Lib/token.py" if len(args) > 1: outFileName = args[1] - try: - fp = open(inFileName) - except IOError as err: - sys.stdout.write("I/O error: %s\n" % str(err)) - sys.exit(1) + fp = open(inFileName) lines = fp.read().split("\n") fp.close() prog = re.compile( @@ -114,7 +110,7 @@ # load the output skeleton from the target: try: fp = open(outFileName) - except IOError as err: + except IOError: sys.stderr.write("I/O error: %s\n" % str(err)) sys.exit(2) format = fp.read().split("\n") @@ -131,7 +127,7 @@ format[start:end] = lines try: fp = open(outFileName, 'w') - except IOError as err: + except IOError: sys.stderr.write("I/O error: %s\n" % str(err)) sys.exit(4) fp.write("\n".join(format))