mirror of
				https://github.com/ethereum/solidity
				synced 2023-10-03 13:03:40 +00:00 
			
		
		
		
	Merge pull request #8131 from ethereum/python3
Use Python 3 instead of Python 2 (EOL'd)
This commit is contained in:
		
						commit
						8bd1e7045a
					
				| @ -1,41 +1,41 @@ | |||||||
| #!/usr/bin/env python | #!/usr/bin/env python3 | ||||||
| 
 | 
 | ||||||
| import sys | import sys | ||||||
| import glob | import glob | ||||||
| import subprocess | import subprocess | ||||||
| import json | import json | ||||||
| 
 | 
 | ||||||
| solc = sys.argv[1] | SOLC_BIN = sys.argv[1] | ||||||
| report = open("report.txt", "wb") | REPORT_FILE = open("report.txt", "wb") | ||||||
| 
 | 
 | ||||||
| for optimize in [False, True]: | for optimize in [False, True]: | ||||||
|     for f in sorted(glob.glob("*.sol")): |     for f in sorted(glob.glob("*.sol")): | ||||||
|         sources = {} |         sources = {} | ||||||
|         sources[f] = {'content': open(f, 'r').read()} |         sources[f] = {'content': open(f, 'r').read()} | ||||||
|         input = { |         input_json = { | ||||||
|             'language': 'Solidity', |             'language': 'Solidity', | ||||||
|             'sources': sources, |             'sources': sources, | ||||||
|             'settings': { |             'settings': { | ||||||
|                 'optimizer': { |                 'optimizer': { | ||||||
|                     'enabled': optimize |                     'enabled': optimize | ||||||
|                 }, |                 }, | ||||||
|                 'outputSelection': { '*': { '*': ['evm.bytecode.object', 'metadata'] } } |                 'outputSelection': {'*': {'*': ['evm.bytecode.object', 'metadata']}} | ||||||
|             } |             } | ||||||
|         } |         } | ||||||
|         args = [solc, '--standard-json'] |         args = [SOLC_BIN, '--standard-json'] | ||||||
|         if optimize: |         if optimize: | ||||||
|             args += ['--optimize'] |             args += ['--optimize'] | ||||||
|         proc = subprocess.Popen(args, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE) |         proc = subprocess.Popen(args, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE) | ||||||
|         (out, err) = proc.communicate(json.dumps(input)) |         (out, err) = proc.communicate(json.dumps(input_json)) | ||||||
|         try: |         try: | ||||||
|             result = json.loads(out.strip()) |             result = json.loads(out.strip()) | ||||||
|             for filename in sorted(result['contracts'].keys()): |             for filename in sorted(result['contracts'].keys()): | ||||||
|                 for contractName in sorted(result['contracts'][filename].keys()): |                 for contractName in sorted(result['contracts'][filename].keys()): | ||||||
|                     contractData = result['contracts'][filename][contractName] |                     contractData = result['contracts'][filename][contractName] | ||||||
|                     if 'evm' in contractData and 'bytecode' in contractData['evm']: |                     if 'evm' in contractData and 'bytecode' in contractData['evm']: | ||||||
|                         report.write(filename + ':' + contractName + ' ' + contractData['evm']['bytecode']['object'] + '\n') |                         REPORT_FILE.write(filename + ':' + contractName + ' ' + contractData['evm']['bytecode']['object'] + '\n') | ||||||
|                     else: |                     else: | ||||||
|                         report.write(filename + ':' + contractName + ' NO BYTECODE\n') |                         REPORT_FILE.write(filename + ':' + contractName + ' NO BYTECODE\n') | ||||||
|                     report.write(filename + ':' + contractName + ' ' + contractData['metadata'] + '\n') |                     REPORT_FILE.write(filename + ':' + contractName + ' ' + contractData['metadata'] + '\n') | ||||||
|         except KeyError: |         except KeyError: | ||||||
|             report.write(f + ": ERROR\n") |             REPORT_FILE.write(f + ": ERROR\n") | ||||||
|  | |||||||
| @ -76,7 +76,7 @@ Build-Depends: debhelper (>= 9.0.0), | |||||||
|                git, |                git, | ||||||
|                libgmp-dev, |                libgmp-dev, | ||||||
|                dh-python, |                dh-python, | ||||||
|                python |                python3 | ||||||
| Standards-Version: 3.9.6 | Standards-Version: 3.9.6 | ||||||
| Homepage: https://github.com/Z3Prover/z3 | Homepage: https://github.com/Z3Prover/z3 | ||||||
| Vcs-Git: git://github.com/Z3Prover/z3.git | Vcs-Git: git://github.com/Z3Prover/z3.git | ||||||
|  | |||||||
| @ -1,4 +1,4 @@ | |||||||
| #!/usr/bin/env python2 | #!/usr/bin/env python3 | ||||||
| # | # | ||||||
| # This script reads C++ or RST source files and writes all | # This script reads C++ or RST source files and writes all | ||||||
| # multi-line strings into individual files. | # multi-line strings into individual files. | ||||||
| @ -8,12 +8,9 @@ | |||||||
| 
 | 
 | ||||||
| import sys | import sys | ||||||
| import re | import re | ||||||
| import os |  | ||||||
| import hashlib |  | ||||||
| from os.path import join |  | ||||||
| 
 | 
 | ||||||
| def extract_test_cases(path): | def extract_test_cases(_path): | ||||||
|     lines = open(path, 'rb').read().splitlines() |     lines = open(_path, 'rb').read().splitlines() | ||||||
| 
 | 
 | ||||||
|     inside = False |     inside = False | ||||||
|     delimiter = '' |     delimiter = '' | ||||||
| @ -23,27 +20,24 @@ def extract_test_cases(path): | |||||||
|     test_name = '' |     test_name = '' | ||||||
| 
 | 
 | ||||||
|     for l in lines: |     for l in lines: | ||||||
|       if inside: |         if inside: | ||||||
|         if l.strip().endswith(')' + delimiter + '";'): |             if l.strip().endswith(')' + delimiter + '";'): | ||||||
|           open('%03d_%s.sol' % (ctr, test_name), 'wb').write(test) |                 open('%03d_%s.sol' % (ctr, test_name), 'wb').write(test) | ||||||
|           ctr += 1 |                 ctr += 1 | ||||||
|           inside = False |                 inside = False | ||||||
|           test = '' |                 test = '' | ||||||
|  |             else: | ||||||
|  |                 l = re.sub('^\t\t', '', l) | ||||||
|  |                 l = l.replace('\t', '        ') | ||||||
|  |                 test += l + '\n' | ||||||
|         else: |         else: | ||||||
|           l = re.sub('^\t\t', '', l) |             m = re.search(r'BOOST_AUTO_TEST_CASE\(([^(]*)\)', l.strip()) | ||||||
|           l = l.replace('\t', '    ') |             if m: | ||||||
|           test += l + '\n' |                 test_name = m.group(1) | ||||||
|       else: |             m = re.search(r'R"([^(]*)\($', l.strip()) | ||||||
|         m = re.search(r'BOOST_AUTO_TEST_CASE\(([^(]*)\)', l.strip()) |             if m: | ||||||
|         if m: |                 inside = True | ||||||
|           test_name = m.group(1) |                 delimiter = m.group(1) | ||||||
|         m = re.search(r'R"([^(]*)\($', l.strip()) |  | ||||||
|         if m: |  | ||||||
|           inside = True |  | ||||||
|           delimiter = m.group(1) |  | ||||||
| 
 |  | ||||||
| 
 | 
 | ||||||
| if __name__ == '__main__': | if __name__ == '__main__': | ||||||
|     path = sys.argv[1] |     extract_test_cases(sys.argv[1]) | ||||||
|     extract_test_cases(path) |  | ||||||
| 
 |  | ||||||
|  | |||||||
| @ -43,7 +43,6 @@ import os | |||||||
| import subprocess | import subprocess | ||||||
| import sys | import sys | ||||||
| 
 | 
 | ||||||
| 
 |  | ||||||
| def readDependencies(fname): | def readDependencies(fname): | ||||||
|     with open(fname) as f: |     with open(fname) as f: | ||||||
|         o = subprocess.Popen(['otool', '-L', fname], stdout=subprocess.PIPE) |         o = subprocess.Popen(['otool', '-L', fname], stdout=subprocess.PIPE) | ||||||
| @ -55,7 +54,7 @@ def readDependencies(fname): | |||||||
|                         command = "install_name_tool -change " + \ |                         command = "install_name_tool -change " + \ | ||||||
|                             library + " @executable_path/./" + \ |                             library + " @executable_path/./" + \ | ||||||
|                             os.path.basename(library) + " " + fname |                             os.path.basename(library) + " " + fname | ||||||
|                         print command |                         print(command) | ||||||
|                         os.system("chmod +w " + fname) |                         os.system("chmod +w " + fname) | ||||||
|                         os.system(command) |                         os.system(command) | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -1,4 +1,4 @@ | |||||||
| #!/usr/bin/env python2 | #!/usr/bin/env python3 | ||||||
| # | # | ||||||
| # This script reads C++ or RST source files and writes all | # This script reads C++ or RST source files and writes all | ||||||
| # multi-line strings into individual files. | # multi-line strings into individual files. | ||||||
| @ -13,7 +13,7 @@ import hashlib | |||||||
| from os.path import join, isfile | from os.path import join, isfile | ||||||
| 
 | 
 | ||||||
| def extract_test_cases(path): | def extract_test_cases(path): | ||||||
|     lines = open(path, 'rb').read().splitlines() |     lines = open(path, 'r').read().splitlines() | ||||||
| 
 | 
 | ||||||
|     inside = False |     inside = False | ||||||
|     delimiter = '' |     delimiter = '' | ||||||
| @ -43,7 +43,7 @@ def extract_docs_cases(path): | |||||||
|     tests = [] |     tests = [] | ||||||
| 
 | 
 | ||||||
|     # Collect all snippets of indented blocks |     # Collect all snippets of indented blocks | ||||||
|     for l in open(path, 'rb').read().splitlines(): |     for l in open(path, 'r').read().splitlines(): | ||||||
|         if l != '': |         if l != '': | ||||||
|             if not inside and l.startswith(' '): |             if not inside and l.startswith(' '): | ||||||
|                 # start new test |                 # start new test | ||||||
| @ -71,7 +71,8 @@ def write_cases(f, tests): | |||||||
|         # When code examples are extracted they indented by 8 spaces, which violates the style guide, |         # When code examples are extracted they indented by 8 spaces, which violates the style guide, | ||||||
|         # so before checking remove 4 spaces from each line. |         # so before checking remove 4 spaces from each line. | ||||||
|         remainder = re.sub(r'^ {4}', '', test, 0, re.MULTILINE) |         remainder = re.sub(r'^ {4}', '', test, 0, re.MULTILINE) | ||||||
|         open('test_%s_%s.sol' % (hashlib.sha256(test).hexdigest(), cleaned_filename), 'wb').write(remainder) |         sol_filename = 'test_%s_%s.sol' % (hashlib.sha256(test.encode("utf-8")).hexdigest(), cleaned_filename) | ||||||
|  |         open(sol_filename, 'w').write(remainder) | ||||||
| 
 | 
 | ||||||
| def extract_and_write(f, path): | def extract_and_write(f, path): | ||||||
|         if docs: |         if docs: | ||||||
|  | |||||||
| @ -49,7 +49,7 @@ cp $REPO_ROOT/build/solc/solc        $ZIP_TEMP_DIR | |||||||
| # being for kernel-level dylibs. | # being for kernel-level dylibs. | ||||||
| 
 | 
 | ||||||
| if [[ "$OSTYPE" == "darwin"* ]]; then | if [[ "$OSTYPE" == "darwin"* ]]; then | ||||||
|     python $REPO_ROOT/scripts/fix_homebrew_paths_in_standalone_zip.py $ZIP_TEMP_DIR |     python3 $REPO_ROOT/scripts/fix_homebrew_paths_in_standalone_zip.py $ZIP_TEMP_DIR | ||||||
| fi | fi | ||||||
| 
 | 
 | ||||||
| # And ZIP it all up, with a filename suffix passed in on the command-line. | # And ZIP it all up, with a filename suffix passed in on the command-line. | ||||||
|  | |||||||
| @ -12,7 +12,7 @@ for new_proof in $(git diff origin/develop --name-only test/formal/) | |||||||
| do | do | ||||||
| 	set +e | 	set +e | ||||||
| 	echo "Proving $new_proof..." | 	echo "Proving $new_proof..." | ||||||
| 	output=$(python "$new_proof") | 	output=$(python3 "$new_proof") | ||||||
| 	result=$? | 	result=$? | ||||||
| 	set -e | 	set -e | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -1,4 +1,4 @@ | |||||||
| #!/usr/bin/env python2 | #!/usr/bin/env python3 | ||||||
| # | # | ||||||
| # This script reads a syntaxTest file and writes all | # This script reads a syntaxTest file and writes all | ||||||
| # sources into their own files. If one source-name specifies subdirectories | # sources into their own files. If one source-name specifies subdirectories | ||||||
| @ -57,6 +57,6 @@ if __name__ == '__main__': | |||||||
|         srcString = "" |         srcString = "" | ||||||
|         for src in createdSources: |         for src in createdSources: | ||||||
|             srcString += src + ' ' |             srcString += src + ' ' | ||||||
|         print srcString |         print(srcString) | ||||||
|     else: |     else: | ||||||
|         sys.exit(1) |         sys.exit(1) | ||||||
|  | |||||||
| @ -1,4 +1,4 @@ | |||||||
| #!/usr/bin/env python2 | #!/usr/bin/env python3 | ||||||
| # | # | ||||||
| # This script is used to generate the list of bugs per compiler version | # This script is used to generate the list of bugs per compiler version | ||||||
| # from the list of bugs. | # from the list of bugs. | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user