Skip to content

Commit 59b2b75

Browse files
authored
Merge pull request #514 from garythung/master
SolcStandardJson: pass solc_env and solc_working_dir through to compilation
2 parents 20df04f + c526de8 commit 59b2b75

File tree

1 file changed

+15
-8
lines changed

1 file changed

+15
-8
lines changed

crytic_compile/platform/solc_standard_json.py

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,20 @@
44
import json
55
import logging
66
import os
7-
from pathlib import Path
87
import shutil
98
import subprocess
10-
from typing import TYPE_CHECKING, Dict, List, Optional, Union, Any
9+
from pathlib import Path
10+
from typing import TYPE_CHECKING, Any, Dict, List, Optional, Union
1111

1212
from crytic_compile.compilation_unit import CompilationUnit
1313
from crytic_compile.compiler.compiler import CompilerVersion
1414
from crytic_compile.platform.exceptions import InvalidCompilation
15-
from crytic_compile.platform.solc import Solc, get_version, is_optimized, relative_to_short
15+
from crytic_compile.platform.solc import (
16+
Solc,
17+
get_version,
18+
is_optimized,
19+
relative_to_short,
20+
)
1621
from crytic_compile.platform.types import Type
1722
from crytic_compile.utils.naming import convert_filename
1823

@@ -166,7 +171,6 @@ def run_solc_standard_json(
166171
" ".join(cmd),
167172
)
168173
try:
169-
170174
with subprocess.Popen(
171175
cmd,
172176
stdin=subprocess.PIPE,
@@ -176,7 +180,6 @@ def run_solc_standard_json(
176180
executable=shutil.which(cmd[0]),
177181
**additional_kwargs,
178182
) as process:
179-
180183
stdout_b, stderr_b = process.communicate(json.dumps(solc_input).encode("utf-8"))
181184
stdout, stderr = (
182185
stdout_b.decode(),
@@ -457,7 +460,7 @@ def compile(self, crytic_compile: "CryticCompile", **kwargs: Any) -> None:
457460
Args:
458461
crytic_compile (CryticCompile): Associated CryticCompile object
459462
**kwargs: optional arguments. Used: "solc", "solc_disable_warnings", "solc_args", "solc_working_dir",
460-
"solc_remaps"
463+
"solc_remaps", "solc_env"
461464
"""
462465

463466
solc: str = kwargs.get("solc", "solc")
@@ -466,13 +469,16 @@ def compile(self, crytic_compile: "CryticCompile", **kwargs: Any) -> None:
466469

467470
solc_remaps: Optional[Union[str, List[str]]] = kwargs.get("solc_remaps", None)
468471
solc_working_dir: Optional[str] = kwargs.get("solc_working_dir", None)
472+
solc_env: Optional[Dict] = kwargs.get("solc_env", None)
469473

470474
compilation_unit = CompilationUnit(crytic_compile, "standard_json")
471475

472476
compilation_unit.compiler_version = CompilerVersion(
473477
compiler="solc",
474-
version=get_version(solc, None),
475-
optimized=is_optimized(solc_arguments),
478+
version=get_version(solc, solc_env),
479+
optimized=is_optimized(solc_arguments)
480+
or self.to_dict().get("settings", {}).get("optimizer", {}).get("enabled", False),
481+
optimize_runs=self.to_dict().get("settings", {}).get("optimizer", {}).get("runs", None),
476482
)
477483

478484
add_optimization(
@@ -493,6 +499,7 @@ def compile(self, crytic_compile: "CryticCompile", **kwargs: Any) -> None:
493499
self.to_dict(),
494500
compilation_unit.compiler_version,
495501
solc_disable_warnings=solc_disable_warnings,
502+
working_dir=solc_working_dir,
496503
)
497504

498505
parse_standard_json_output(

0 commit comments

Comments
 (0)