From f5465c9dd27f0c526ada48d40894059cf6768f79 Mon Sep 17 00:00:00 2001 From: David Meister Date: Sat, 15 Aug 2026 12:47:06 +0000 Subject: [PATCH] docs: install section names the rain-sol-codegen dependency MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The Install section stated forge-std 1.16.1 was the only external requirement and gave a [dependencies] block listing only forge-std and rain-deploy. src/lib/LibRainDeploySnapshot.sol imports LibCodeGen and LibFs from rain-sol-codegen-0.1.6, and src/abstract/RainDeployVerifySnapshot.sol imports LibRainDeploySnapshot — an abstract the README's own example tells consumers to inherit. .soldeerignore strips foundry.toml, remappings.txt, soldeer.lock and dependencies/ from the published package and recursive_deps = false, so the consumer must declare and remap it itself. Following the README verbatim failed on the first forge build with an unresolved import. Closes https://github.com/rainlanguage/rain.deploy/issues/48 Co-Authored-By: Claude Opus 5 (1M context) --- README.md | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 88ccf44..2a649b0 100644 --- a/README.md +++ b/README.md @@ -320,23 +320,26 @@ Via [soldeer](https://soldeer.xyz): forge soldeer install rain-deploy~ ``` -**You also need `forge-std` 1.16.1**, remapped as `forge-std-1.16.1/`. The -published package deliberately ships only `src/` and `script/` — no -`remappings.txt`, no `soldeer.lock`, no `dependencies/` — so a consumer resolves -`forge-std` itself. The requirement is transitive rather than incidental: the -deployed contract imports nothing outside this package, but every abstract a -consumer inherits pulls forge-std in — `Script` via `RainDeployBroadcast`, -`Test` via `RainDeployVerifyBase`, and `Vm` via `LibRainDeploy` beneath both: +**You also need `forge-std` 1.16.1 and `rain-sol-codegen` 0.1.6**, remapped as +`forge-std-1.16.1/` and `rain-sol-codegen-0.1.6/`. The published package +deliberately ships only `src/` and `script/` — no `remappings.txt`, no +`soldeer.lock`, no `dependencies/` — so a consumer resolves both itself. The +requirement is transitive rather than incidental: the deployed contract imports +nothing outside this package, but every abstract a consumer inherits pulls them +in — `Script` via `RainDeployBroadcast`, `Test` via `RainDeployVerifyBase`, `Vm` +via `LibRainDeploy` beneath both, and `LibCodeGen`/`LibFs` via +`LibRainDeploySnapshot`, which `RainDeployVerifySnapshot` imports: ```toml [dependencies] forge-std = "1.16.1" +rain-sol-codegen = "0.1.6" rain-deploy = "" ``` -The version has to match: the import paths are version-qualified, which is -deliberate — it is what stops a consumer's incompatible `forge-std` from -silently satisfying these imports. +The versions have to match: the import paths are version-qualified, which is +deliberate — it is what stops a consumer's incompatible copy from silently +satisfying these imports. ## Develop