Closed AbhinavMir closed 3 months ago
For anyone passing by, add the following to remappings.txt
at your project root as a temporary workaround:
@uniswap/v3-core/=lib/v3-core/
@uniswap/v3-periphery=lib/v3-periphery/
I am also facing a version issue when I install uniswap v3 into forge:
Error:
Found incompatible Solidity versions:
lib/forge-std/src/Script.sol >=0.6.2, <0.9.0
lib/forge-std/src/Base.sol >=0.6.2, <0.9.0
lib/forge-std/src/console.sol >=0.4.22, <0.9.0
lib/forge-std/src/console2.sol >=0.4.22, <0.9.0
lib/forge-std/src/StdChains.sol >=0.6.2, <0.9.0
lib/forge-std/src/StdCheats.sol >=0.6.2, <0.9.0
lib/forge-std/src/StdJson.sol >=0.6.0, <0.9.0
lib/forge-std/src/StdMath.sol >=0.6.2, <0.9.0
lib/forge-std/src/StdStorage.sol >=0.6.2, <0.9.0
lib/forge-std/src/StdUtils.sol >=0.6.2, <0.9.0
lib/forge-std/src/Vm.sol >=0.6.2, <0.9.0
lib/forge-std/src/Base.sol >=0.6.2, <0.9.0
lib/v3-periphery/contracts/interfaces/ISwapRouter.sol >=0.7.5
lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol ^0.8.0
lib/v3-periphery/contracts/V3Migrator.sol =0.7.6
lib/v3-periphery/contracts/libraries/TransferHelper.sol >=0.6.0
lib/v3-core/contracts/interfaces/IUniswapV3Factory.sol >=0.5.0
lib/v3-periphery/contracts/NonfungiblePositionManager.sol >=0.7.6
lib/v3-periphery/contracts/interfaces/INonfungiblePositionManager.sol >=0.7.5
lib/forge-std/src/StdStorage.sol >=0.6.2, <0.9.0
lib/forge-std/src/Vm.sol >=0.6.2, <0.9.0
lib/forge-std/src/Vm.sol >=0.6.2, <0.9.0
lib/forge-std/src/StdStorage.sol >=0.6.2, <0.9.0
lib/forge-std/src/Vm.sol >=0.6.2, <0.9.0
lib/forge-std/src/console2.sol >=0.4.22, <0.9.0
lib/forge-std/src/Vm.sol >=0.6.2, <0.9.0
lib/forge-std/src/Vm.sol >=0.6.2, <0.9.0
lib/forge-std/src/interfaces/IMulticall3.sol >=0.6.2, <0.9.0
lib/forge-std/src/Vm.sol >=0.6.2, <0.9.0
lib/v3-core/contracts/interfaces/callback/IUniswapV3SwapCallback.sol >=0.5.0
lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol ^0.8.0
lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol ^0.8.0
lib/openzeppelin-contracts/contracts/utils/Context.sol ^0.8.0
lib/v3-core/contracts/libraries/LowGasSafeMath.sol >=0.7.0
lib/v2-core/contracts/interfaces/IUniswapV2Pair.sol >=0.5.0
lib/v3-periphery/contracts/interfaces/INonfungiblePositionManager.sol >=0.7.5
lib/v3-periphery/contracts/libraries/TransferHelper.sol >=0.6.0
lib/v3-periphery/contracts/interfaces/IV3Migrator.sol >=0.7.5
lib/v3-periphery/contracts/base/PeripheryImmutableState.sol =0.7.6
lib/v3-periphery/contracts/base/Multicall.sol =0.7.6
lib/v3-periphery/contracts/base/SelfPermit.sol >=0.5.0
lib/v3-periphery/contracts/interfaces/external/IWETH9.sol =0.7.6
lib/v3-periphery/contracts/base/PoolInitializer.sol =0.7.6
lib/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol ^0.8.0
lib/v3-core/contracts/interfaces/IUniswapV3Pool.sol >=0.5.0
lib/v3-core/contracts/libraries/FixedPoint128.sol >=0.4.0
lib/v3-core/contracts/libraries/FullMath.sol >=0.4.0
lib/v3-periphery/contracts/interfaces/INonfungiblePositionManager.sol >=0.7.5
lib/v3-periphery/contracts/interfaces/INonfungibleTokenPositionDescriptor.sol >=0.5.0
lib/v3-periphery/contracts/libraries/PositionKey.sol >=0.5.0
lib/v3-periphery/contracts/libraries/PoolAddress.sol >=0.5.0
lib/v3-periphery/contracts/base/LiquidityManagement.sol =0.7.6
lib/v3-periphery/contracts/base/PeripheryImmutableState.sol =0.7.6
lib/v3-periphery/contracts/base/Multicall.sol =0.7.6
lib/v3-periphery/contracts/base/ERC721Permit.sol =0.7.6
lib/v3-periphery/contracts/base/PeripheryValidation.sol =0.7.6
lib/v3-periphery/contracts/base/SelfPermit.sol >=0.5.0
lib/v3-periphery/contracts/base/PoolInitializer.sol =0.7.6
lib/openzeppelin-contracts/contracts/token/ERC721/extensions/IERC721Metadata.sol ^0.8.0
lib/openzeppelin-contracts/contracts/token/ERC721/extensions/IERC721Enumerable.sol ^0.8.0
lib/v3-periphery/contracts/interfaces/IPoolInitializer.sol >=0.7.5
lib/v3-periphery/contracts/interfaces/IERC721Permit.sol >=0.7.5
lib/v3-periphery/contracts/interfaces/IPeripheryPayments.sol >=0.7.5
lib/v3-periphery/contracts/interfaces/IPeripheryImmutableState.sol >=0.5.0
lib/v3-periphery/contracts/libraries/PoolAddress.sol >=0.5.0
lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol ^0.8.0
lib/v3-periphery/contracts/interfaces/IMulticall.sol >=0.7.5
lib/v3-periphery/contracts/interfaces/ISelfPermit.sol >=0.7.5
lib/v3-periphery/contracts/interfaces/IPoolInitializer.sol >=0.7.5
lib/v3-periphery/contracts/interfaces/IPeripheryImmutableState.sol >=0.5.0
lib/v3-periphery/contracts/interfaces/IMulticall.sol >=0.7.5
lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol ^0.8.0
lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Permit.sol ^0.8.0
lib/v3-periphery/contracts/interfaces/ISelfPermit.sol >=0.7.5
lib/v3-periphery/contracts/interfaces/external/IERC20PermitAllowed.sol >=0.5.0
lib/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol ^0.8.0
lib/v3-core/contracts/interfaces/IUniswapV3Factory.sol >=0.5.0
lib/v3-core/contracts/interfaces/IUniswapV3Pool.sol >=0.5.0
lib/v3-periphery/contracts/base/PeripheryImmutableState.sol =0.7.6
lib/v3-periphery/contracts/interfaces/IPoolInitializer.sol >=0.7.5
lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolImmutables.sol >=0.5.0
lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolState.sol >=0.5.0
lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolDerivedState.sol >=0.5.0
lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolActions.sol >=0.5.0
lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolOwnerActions.sol >=0.5.0
lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolEvents.sol >=0.5.0
lib/v3-periphery/contracts/interfaces/INonfungiblePositionManager.sol >=0.7.5
lib/v3-core/contracts/interfaces/IUniswapV3Factory.sol >=0.5.0
lib/v3-core/contracts/interfaces/callback/IUniswapV3MintCallback.sol >=0.5.0
lib/v3-core/contracts/libraries/TickMath.sol >=0.5.0
lib/v3-periphery/contracts/libraries/PoolAddress.sol >=0.5.0
lib/v3-periphery/contracts/libraries/CallbackValidation.sol =0.7.6
lib/v3-periphery/contracts/libraries/LiquidityAmounts.sol >=0.5.0
lib/v3-periphery/contracts/base/PeripheryPayments.sol >=0.7.5
lib/v3-periphery/contracts/base/PeripheryImmutableState.sol =0.7.6
lib/openzeppelin-solidity/contracts/token/ERC721/ERC721.sol ^0.8.0
lib/openzeppelin-solidity/contracts/utils/Address.sol ^0.8.1
lib/v3-periphery/contracts/libraries/ChainId.sol >=0.7.0
lib/v3-periphery/contracts/interfaces/external/IERC1271.sol >=0.5.0
lib/v3-periphery/contracts/interfaces/IERC721Permit.sol >=0.7.5
lib/v3-periphery/contracts/base/BlockTimestamp.sol =0.7.6
lib/v3-periphery/contracts/base/BlockTimestamp.sol =0.7.6
lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol ^0.8.0
lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol ^0.8.0
lib/openzeppelin-solidity/contracts/token/ERC721/IERC721.sol ^0.8.0
lib/v3-core/contracts/interfaces/IUniswapV3Pool.sol >=0.5.0
lib/v3-periphery/contracts/libraries/PoolAddress.sol >=0.5.0
lib/v3-core/contracts/libraries/FullMath.sol >=0.4.0
lib/v3-core/contracts/libraries/FixedPoint96.sol >=0.4.0
lib/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol ^0.8.0
lib/v3-periphery/contracts/interfaces/IPeripheryPayments.sol >=0.7.5
lib/v3-periphery/contracts/interfaces/external/IWETH9.sol =0.7.6
lib/v3-periphery/contracts/libraries/TransferHelper.sol >=0.6.0
lib/v3-periphery/contracts/base/PeripheryImmutableState.sol =0.7.6
lib/openzeppelin-solidity/contracts/token/ERC721/IERC721.sol ^0.8.0
lib/openzeppelin-solidity/contracts/token/ERC721/IERC721Receiver.sol ^0.8.0
lib/openzeppelin-solidity/contracts/token/ERC721/extensions/IERC721Metadata.sol ^0.8.0
lib/openzeppelin-solidity/contracts/utils/Address.sol ^0.8.1
lib/openzeppelin-solidity/contracts/utils/Context.sol ^0.8.0
lib/openzeppelin-solidity/contracts/utils/Strings.sol ^0.8.0
lib/openzeppelin-solidity/contracts/utils/introspection/ERC165.sol ^0.8.0
lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol ^0.8.0
lib/openzeppelin-solidity/contracts/utils/introspection/IERC165.sol ^0.8.0
lib/openzeppelin-solidity/contracts/token/ERC721/IERC721.sol ^0.8.0
lib/openzeppelin-solidity/contracts/utils/math/Math.sol ^0.8.0
lib/openzeppelin-solidity/contracts/utils/math/SignedMath.sol ^0.8.0
lib/openzeppelin-solidity/contracts/utils/introspection/IERC165.sol ^0.8.0
Hi @AbhinavMir thanks for opening the issue
Automated remappings are a best guess, there is no planned integration of individual projects
As recommended by @0xc2a5
Add to your remappings (either in foundry.toml
or remappings.txt
)
@uniswap/v3-core/=lib/v3-core/
@uniswap/v3-periphery=lib/v3-periphery/
@dvncan make sure to install the 0.8
branch of Uniswap V3 as follows:
forge install uniswap/v3-core@0.8
forge install uniswap/v3-periphery@0.8
Component
Forge
Have you ensured that all of these are up to date?
What version of Foundry are you on?
forge 0.2.0
What command(s) is the bug in?
forge install / forge remappings
Operating System
Linux
Describe the bug
When I install
uniswap/v3-core
oruniswap/v3-periphery
, it gives me a wrong remapping candidate when I runforge remappings
.Example:
forge install @uniswap/v3-periphery
will give me the remapping ofv3-periphery/=lib/v3-periphery/contracts/
, which will cause compilations to fail due to incorrect dependency resolution.This results in basic examples from popular docs not running, causing friction.
Possible solutions could be hardcoding these in the CLI tool, or creating a DNS that allows to fetch both the module via original git repo + the correct remapping. I'd be down to help with either!
But first I probably need a sanity check on if this is an actual requirement or am I missing something haha
Cheers, Abhinav.