diff --git a/cmake/ManageCodegenVenv.py b/cmake/ManageCodegenVenv.py index 33301ac83e936298dc2c71c0f50bac29e517798d..39701fc35b4f05349830acc38bfe0d42be7c94c8 100644 --- a/cmake/ManageCodegenVenv.py +++ b/cmake/ManageCodegenVenv.py @@ -18,7 +18,7 @@ class VenvState: main_requirements_file: str | None = None initialized: bool = False - user_requirements: list[str] = field(default_factory=list) + user_requirements: list[list[str]] = field(default_factory=list) user_requirements_hash: str | None = None @property @@ -95,8 +95,7 @@ def action_require(args): if not state.initialized: raise RuntimeError("Virtual environment is not initialized.") - for req in args.requirements: - state.user_requirements.append(req) + state.user_requirements.append(list(args.requirements)) def action_populate(args): @@ -105,7 +104,7 @@ def action_populate(args): with VenvState.lock(statefile) as state: h = hashlib.sha256() for req in state.user_requirements: - h.update(bytes(req, encoding="utf8")) + h.update(bytes(";".join(str(r) for r in req), encoding="utf8")) digest = h.hexdigest() if digest != state.user_requirements_hash: @@ -119,7 +118,7 @@ def action_populate(args): pip_args = [str(state.venv_python), "-m", "pip", "install"] for req in state.user_requirements: - install_args = pip_args.copy() + [req] + install_args = pip_args.copy() + req subprocess.run(install_args).check_returncode() state.user_requirements_hash = digest diff --git a/cmake/WalberlaCodegen.cmake b/cmake/WalberlaCodegen.cmake index ceafb3eb8497b77a9477bb58a392a1750d51d4e4..595f8678e224a57fff2d0a705058d1370fe57562 100644 --- a/cmake/WalberlaCodegen.cmake +++ b/cmake/WalberlaCodegen.cmake @@ -120,6 +120,7 @@ function(walberla_codegen_venv_require) COMMAND $CACHE{_WALBERLA_CODEGEN_VENV_INVOKE_MANAGER} require + -- ${ARGV} RESULT_VARIABLE _lastResult )