Skip to content

Commit 58811f1

Browse files
authored
Merge pull request #14678 from ethereum/fix-no-output-timeout-in-js-bytecode-report
Make JS version of bytecode report indicate progress on stdout to prevent CI timeouts
2 parents 90b046a + d668330 commit 58811f1

File tree

4 files changed

+34
-9
lines changed

4 files changed

+34
-9
lines changed

.circleci/config.yml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,6 @@ commands:
8888
steps:
8989
- run:
9090
name: Generate bytecode reports for the selected preset
91-
no_output_timeout: 30m
9291
command: |
9392
.circleci/parallel_bytecode_report.sh \
9493
"<< parameters.label >>" \

.circleci/parallel_bytecode_report.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,5 +75,5 @@ else
7575
# shellcheck disable=SC2035
7676
./prepare_report.js \
7777
--preset "$preset" \
78-
*.sol > "../bytecode-report-${label}-${preset}.txt"
78+
*.sol --report-file "../bytecode-report-${label}-${preset}.txt"
7979
fi

scripts/bytecodecompare/prepare_report.js

Lines changed: 32 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ function cleanString(string)
3232
let inputFiles = []
3333
let stripSMTPragmas = false
3434
let presets = []
35+
let reportFilePath = undefined
3536

3637
for (let i = 2; i < process.argv.length; ++i)
3738
{
@@ -45,10 +46,26 @@ for (let i = 2; i < process.argv.length; ++i)
4546
presets.push(process.argv[i + 1])
4647
++i;
4748
}
49+
else if (process.argv[i] === '--report-file')
50+
{
51+
if (reportFilePath !== undefined)
52+
throw Error("Option --report-file was specified multiple times.")
53+
54+
if (i + 1 === process.argv.length)
55+
throw Error("Option --report-file was used, but no file name given.")
56+
57+
reportFilePath = process.argv[i + 1]
58+
++i;
59+
}
4860
else
4961
inputFiles.push(process.argv[i])
5062
}
5163

64+
if (reportFilePath === undefined)
65+
throw Error("Use --report-file option to specify the report file path.")
66+
67+
let reportFile = fs.createWriteStream(reportFilePath, {flags : 'w'});
68+
5269
if (presets.length === 0)
5370
presets = ['legacy-no-optimize', 'legacy-optimize']
5471

@@ -113,8 +130,11 @@ for (const preset of presets)
113130
Object.keys(result['contracts']).length === 0 ||
114131
Object.keys(result['contracts']).every(file => Object.keys(result['contracts'][file]).length === 0)
115132
)
133+
{
116134
// NOTE: do not exit here because this may be run on source which cannot be compiled
117-
console.log(filename + ': <ERROR>')
135+
reportFile.write(filename + ': <ERROR>\n')
136+
process.stdout.write('E')
137+
}
118138
else
119139
for (const contractFile in result['contracts'])
120140
for (const contractName in result['contracts'][contractFile])
@@ -123,6 +143,12 @@ for (const preset of presets)
123143

124144
let bytecode = '<NO BYTECODE>'
125145
let metadata = '<NO METADATA>'
146+
let progressIndicator = '.'
147+
148+
if ('metadata' in contractResults && cleanString(contractResults.metadata) !== undefined)
149+
metadata = contractResults.metadata
150+
else
151+
progressIndicator = 'M'
126152

127153
if (
128154
'evm' in contractResults &&
@@ -131,12 +157,12 @@ for (const preset of presets)
131157
cleanString(contractResults.evm.bytecode.object) !== undefined
132158
)
133159
bytecode = cleanString(contractResults.evm.bytecode.object)
160+
else
161+
progressIndicator = 'B'
134162

135-
if ('metadata' in contractResults && cleanString(contractResults.metadata) !== undefined)
136-
metadata = contractResults.metadata
137-
138-
console.log(filename + ':' + contractName + ' ' + bytecode)
139-
console.log(filename + ':' + contractName + ' ' + metadata)
163+
reportFile.write(filename + ':' + contractName + ' ' + bytecode + '\n')
164+
reportFile.write(filename + ':' + contractName + ' ' + metadata + '\n')
165+
process.stdout.write(progressIndicator)
140166
}
141167
}
142168
}

scripts/solc-bin/bytecode_reports_for_modified_binaries.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -160,7 +160,7 @@ for binary_name in $platform_binaries; do
160160
"$solidity_version_and_commit"
161161

162162
# shellcheck disable=SC2035
163-
./prepare_report.js --strip-smt-pragmas *.sol > "${report_dir}/report-${binary_name}.txt"
163+
./prepare_report.js --strip-smt-pragmas *.sol --report-file "${report_dir}/report-${binary_name}.txt"
164164
else
165165
yul_optimizer_flags=()
166166
if [[ $solidity_version == 0.6.0 ]] || [[ $solidity_version == 0.6.1 ]]; then

0 commit comments

Comments
 (0)