balancer-v2-monorepo icon indicating copy to clipboard operation
balancer-v2-monorepo copied to clipboard

Upgrade to Yarn 3 to support Node 16

Open mosinnik opened this issue 3 years ago • 6 comments

Try run tests from current master (commit a8dff26dc9485bb338e32b6fe0b532a72309427c) but got error:

$ yarn test
➤ YN0000: [@balancer-labs/balancer-js]:
➤ YN0000: [@balancer-labs/balancer-js]:
➤ YN0000: [@balancer-labs/balancer-js]:   sortTokens
➤ YN0000: [@balancer-labs/balancer-js]:     when provided only tokens
➤ YN0000: [@balancer-labs/balancer-js]:       when provided only ERC20s
➤ YN0000: [@balancer-labs/balancer-js]:         √ sorts the tokens in ascending order
➤ YN0000: [@balancer-labs/balancer-js]:       when provided a mix of ERC20s and ETH
➤ YN0000: [@balancer-labs/balancer-js]:         √ sorts ETH as if it were WETH
➤ YN0000: [@balancer-labs/balancer-js]:     when provided additional arrays
➤ YN0000: [@balancer-labs/balancer-js]:       √ sorts the tokens in ascending order
➤ YN0000: [@balancer-labs/balancer-js]:       √ maintains relative ordering with tokens array
➤ YN0000: [@balancer-labs/balancer-js]:
➤ YN0000: [@balancer-labs/balancer-js]:
➤ YN0000: [@balancer-labs/balancer-js]:   4 passing (25ms)
➤ YN0000: [@balancer-labs/balancer-js]:
➤ YN0000: [@balancer-labs/v2-deployments]: Running normal tests...
➤ YN0000: [@balancer-labs/v2-deployments]:
➤ YN0000: [@balancer-labs/v2-deployments]:
➤ YN0000: [@balancer-labs/v2-deployments]:   StablePoolFactory
➤ YN0000: [@balancer-labs/v2-deployments]:     with no previous deploy
➤ YN0000: [@balancer-labs/v2-deployments]:       when forced
➤ YN0000: [@balancer-labs/v2-deployments]:         √ deploys a stable pool factory (1161ms)
➤ YN0000: [@balancer-labs/v2-deployments]:       when not forced
➤ YN0000: [@balancer-labs/v2-deployments]:         √ deploys a stable pool factory (125ms)
➤ YN0000: [@balancer-labs/v2-deployments]:     with a previous deploy
➤ YN0000: [@balancer-labs/v2-deployments]:       when forced
➤ YN0000: [@balancer-labs/v2-deployments]:         √ re-deploys the stable pool factory (274ms)
➤ YN0000: [@balancer-labs/v2-deployments]:       when not forced
➤ YN0000: [@balancer-labs/v2-deployments]:         √ does not re-deploys the stable pool factory (58ms)
➤ YN0000: [@balancer-labs/v2-deployments]:
➤ YN0000: [@balancer-labs/v2-deployments]:   MetaStablePoolFactory
➤ YN0000: [@balancer-labs/v2-deployments]:     with no previous deploy
➤ YN0000: [@balancer-labs/v2-deployments]:       when forced
➤ YN0000: [@balancer-labs/v2-deployments]:         √ deploys a meta stable pool factory (652ms)
➤ YN0000: [@balancer-labs/v2-deployments]:       when not forced
➤ YN0000: [@balancer-labs/v2-deployments]:         √ deploys a meta stable pool factory (361ms)
➤ YN0000: [@balancer-labs/v2-deployments]:     with a previous deploy
➤ YN0000: [@balancer-labs/v2-deployments]:       when forced
➤ YN0000: [@balancer-labs/v2-deployments]:         √ re-deploys the meta stable pool factory (225ms)
➤ YN0000: [@balancer-labs/v2-deployments]:       when not forced
➤ YN0000: [@balancer-labs/v2-deployments]:         √ does not re-deploys the meta stable pool factory (150ms)
➤ YN0000: [@balancer-labs/v2-deployments]:
➤ YN0000: [@balancer-labs/v2-deployments]:
➤ YN0000: [@balancer-labs/v2-deployments]:   8 passing (3s)
➤ YN0000: [@balancer-labs/v2-deployments]:
➤ YN0000: [@balancer-labs/v2-asset-manager-utils]: Nothing to compile
➤ YN0000: [@balancer-labs/v2-asset-manager-utils]:
➤ YN0000: [@balancer-labs/v2-asset-manager-utils]:
➤ YN0000: [@balancer-labs/v2-asset-manager-utils]:   Aave Asset manager
➤ YN0000: [@balancer-labs/v2-asset-manager-utils]:     claimRewards
➤ YN0000: [@balancer-labs/v2-asset-manager-utils]:       1) "before each" hook: set up asset manager at step "Running shared before each or reverting" for "sends expected amount of stkAave to the rewards contract"
➤ YN0000: [@balancer-labs/v2-asset-manager-utils]:
➤ YN0000: [@balancer-labs/v2-asset-manager-utils]:   RebalancingRelayer
➤ YN0000: [@balancer-labs/v2-asset-manager-utils]:     vault
➤ YN0000: [@balancer-labs/v2-asset-manager-utils]:       2) "before each" hook: deploy relayer at step "Running shared before each or reverting" for "uses the given vault"
➤ YN0000: [@balancer-labs/v2-asset-manager-utils]:
➤ YN0000: [@balancer-labs/v2-asset-manager-utils]:   Rewards Asset manager
➤ YN0000: [@balancer-labs/v2-asset-manager-utils]:     deployment
➤ YN0000: [@balancer-labs/v2-asset-manager-utils]:       3) "before each" hook: set up asset manager at step "Running shared before each or reverting" for "different managers can be set for different tokens"
➤ YN0000: [@balancer-labs/v2-asset-manager-utils]:
➤ YN0000: [@balancer-labs/v2-asset-manager-utils]:
➤ YN0000: [@balancer-labs/v2-asset-manager-utils]:   0 passing (581ms)
➤ YN0000: [@balancer-labs/v2-asset-manager-utils]:   3 failing
➤ YN0000: [@balancer-labs/v2-asset-manager-utils]:
➤ YN0000: [@balancer-labs/v2-asset-manager-utils]:   1) Aave Asset manager
➤ YN0000: [@balancer-labs/v2-asset-manager-utils]:        "before each" hook: set up asset manager at step "Running shared before each or reverting" for "sends expected amount of stkAave to the rewards contract":
➤ YN0000: [@balancer-labs/v2-asset-manager-utils]:      HardhatError: HH700: Artifact for contract "TestToken" not found.
➤ YN0000: [@balancer-labs/v2-asset-manager-utils]:       at Artifacts._handleWrongArtifactForContractName (E:\git\balancer\balancer-v2-monorepo\node_modules\hardhat\src\internal\artifacts.ts:478:11)
➤ YN0000: [@balancer-labs/v2-asset-manager-utils]:       at Artifacts._getArtifactPathFromFiles (E:\git\balancer\balancer-v2-monorepo\node_modules\hardhat\src\internal\artifacts.ts:592:19)
➤ YN0000: [@balancer-labs/v2-asset-manager-utils]:       at Artifacts._getArtifactPath (E:\git\balancer\balancer-v2-monorepo\node_modules\hardhat\src\internal\artifacts.ts:275:17)
➤ YN0000: [@balancer-labs/v2-asset-manager-utils]:       at Artifacts.readArtifact (E:\git\balancer\balancer-v2-monorepo\node_modules\hardhat\src\internal\artifacts.ts:58:26)
➤ YN0000: [@balancer-labs/v2-asset-manager-utils]:       at Object.deploy (E:\git\balancer\balancer-v2-monorepo\pvt\helpers\src\contract.ts:31:20)
➤ YN0000: [@balancer-labs/v2-asset-manager-utils]:       at deployToken (E:\git\balancer\balancer-v2-monorepo\pvt\helpers\src\models\tokens\TokensDeployer.ts:33:18)
➤ YN0000: [@balancer-labs/v2-asset-manager-utils]:       at async Promise.all (index 0)
➤ YN0000: [@balancer-labs/v2-asset-manager-utils]:       at TokensDeployer.deploy (E:\git\balancer\balancer-v2-monorepo\pvt\helpers\src\models\tokens\TokensDeployer.ts:22:20)
➤ YN0000: [@balancer-labs/v2-asset-manager-utils]:       at setup (test\AaveATokenAssetManager.test.ts:24:18)
➤ YN0000: [@balancer-labs/v2-asset-manager-utils]:       at Context.<anonymous> (test\AaveATokenAssetManager.test.ts:112:27)
➤ YN0000: [@balancer-labs/v2-asset-manager-utils]:       at Context.<anonymous> (E:\git\balancer\balancer-v2-monorepo\pvt\common\sharedBeforeEach.ts:32:7)
➤ YN0000: [@balancer-labs/v2-asset-manager-utils]:
➤ YN0000: [@balancer-labs/v2-asset-manager-utils]:   2) RebalancingRelayer
➤ YN0000: [@balancer-labs/v2-asset-manager-utils]:        "before each" hook: deploy relayer at step "Running shared before each or reverting" for "uses the given vault":
➤ YN0000: [@balancer-labs/v2-asset-manager-utils]:      HardhatError: HH700: Artifact for contract "TestToken" not found.
➤ YN0000: [@balancer-labs/v2-asset-manager-utils]:       at Artifacts._handleWrongArtifactForContractName (E:\git\balancer\balancer-v2-monorepo\node_modules\hardhat\src\internal\artifacts.ts:478:11)
➤ YN0000: [@balancer-labs/v2-asset-manager-utils]:       at Artifacts._getArtifactPathFromFiles (E:\git\balancer\balancer-v2-monorepo\node_modules\hardhat\src\internal\artifacts.ts:592:19)
➤ YN0000: [@balancer-labs/v2-asset-manager-utils]:       at Artifacts._getArtifactPath (E:\git\balancer\balancer-v2-monorepo\node_modules\hardhat\src\internal\artifacts.ts:275:17)
➤ YN0000: [@balancer-labs/v2-asset-manager-utils]:       at Artifacts.readArtifact (E:\git\balancer\balancer-v2-monorepo\node_modules\hardhat\src\internal\artifacts.ts:58:26)
➤ YN0000: [@balancer-labs/v2-asset-manager-utils]:       at Object.deploy (E:\git\balancer\balancer-v2-monorepo\pvt\helpers\src\contract.ts:31:20)
➤ YN0000: [@balancer-labs/v2-asset-manager-utils]:       at TokensDeployer.deployToken (E:\git\balancer\balancer-v2-monorepo\pvt\helpers\src\models\tokens\TokensDeployer.ts:33:18)
➤ YN0000: [@balancer-labs/v2-asset-manager-utils]:       at Context.<anonymous> (test\RebalancingRelayer.test.ts:30:17)
➤ YN0000: [@balancer-labs/v2-asset-manager-utils]:       at Context.<anonymous> (E:\git\balancer\balancer-v2-monorepo\pvt\common\sharedBeforeEach.ts:32:7)
➤ YN0000: [@balancer-labs/v2-asset-manager-utils]:
➤ YN0000: [@balancer-labs/v2-asset-manager-utils]:   3) Rewards Asset manager
➤ YN0000: [@balancer-labs/v2-asset-manager-utils]:        "before each" hook: set up asset manager at step "Running shared before each or reverting" for "different managers can be set for different tokens":
➤ YN0000: [@balancer-labs/v2-asset-manager-utils]:      HardhatError: HH700: Artifact for contract "TestToken" not found.
➤ YN0000: [@balancer-labs/v2-asset-manager-utils]:       at Artifacts._handleWrongArtifactForContractName (E:\git\balancer\balancer-v2-monorepo\node_modules\hardhat\src\internal\artifacts.ts:478:11)
➤ YN0000: [@balancer-labs/v2-asset-manager-utils]:       at Artifacts._getArtifactPathFromFiles (E:\git\balancer\balancer-v2-monorepo\node_modules\hardhat\src\internal\artifacts.ts:592:19)
➤ YN0000: [@balancer-labs/v2-asset-manager-utils]:       at Artifacts._getArtifactPath (E:\git\balancer\balancer-v2-monorepo\node_modules\hardhat\src\internal\artifacts.ts:275:17)
➤ YN0000: [@balancer-labs/v2-asset-manager-utils]:       at Artifacts.readArtifact (E:\git\balancer\balancer-v2-monorepo\node_modules\hardhat\src\internal\artifacts.ts:58:26)
➤ YN0000: [@balancer-labs/v2-asset-manager-utils]:       at Object.deploy (E:\git\balancer\balancer-v2-monorepo\pvt\helpers\src\contract.ts:31:20)
➤ YN0000: [@balancer-labs/v2-asset-manager-utils]:       at deployToken (E:\git\balancer\balancer-v2-monorepo\pvt\helpers\src\models\tokens\TokensDeployer.ts:33:18)
➤ YN0000: [@balancer-labs/v2-asset-manager-utils]:       at async Promise.all (index 0)
➤ YN0000: [@balancer-labs/v2-asset-manager-utils]:       at TokensDeployer.deploy (E:\git\balancer\balancer-v2-monorepo\pvt\helpers\src\models\tokens\TokensDeployer.ts:22:20)
➤ YN0000: [@balancer-labs/v2-asset-manager-utils]:       at setup (test\RewardsAssetManager.test.ts:23:18)
➤ YN0000: [@balancer-labs/v2-asset-manager-utils]:       at Context.<anonymous> (test\RewardsAssetManager.test.ts:79:33)
➤ YN0000: [@balancer-labs/v2-asset-manager-utils]:       at Context.<anonymous> (E:\git\balancer\balancer-v2-monorepo\pvt\common\sharedBeforeEach.ts:32:7)
➤ YN0000: [@balancer-labs/v2-asset-manager-utils]:
➤ YN0000: [@balancer-labs/v2-asset-manager-utils]:
➤ YN0000: [@balancer-labs/v2-asset-manager-utils]:

Any suggestions how to fix this?

Win10, mingw64, node 16.13, npm 8.1.4, yarn 2.4.1. Same error when run tests under WSL.

Building output in win:

$ yarn build
➤ YN0000: [@balancer-labs/v2-deployments]: ../../pvt/common/setupTests.ts(7,32): error TS2307: Cannot find module '@balancer-labs/balancer-js' or its corresponding type declarations.
➤ YN0000: [@balancer-labs/balancer-js]:
➤ YN0000: [@balancer-labs/balancer-js]: src/index.ts → dist/index.umd.js, dist/index.js, dist/index.esm.js...
➤ YN0000: [@balancer-labs/balancer-js]: (!) Missing global variable names
➤ YN0000: [@balancer-labs/balancer-js]: Use output.globals to specify browser global variable names corresponding to external modules
➤ YN0000: [@balancer-labs/balancer-js]: @ethersproject/abi (guessing 'abi')
➤ YN0000: [@balancer-labs/balancer-js]: @ethersproject/constants (guessing 'constants')
➤ YN0000: [@balancer-labs/balancer-js]: @ethersproject/bignumber (guessing 'bignumber')
➤ YN0000: [@balancer-labs/balancer-js]: @ethersproject/bytes (guessing 'bytes')
➤ YN0000: [@balancer-labs/balancer-js]: @ethersproject/abstract-signer (guessing 'abstractSigner')
➤ YN0000: [@balancer-labs/balancer-js]: @ethersproject/address (guessing 'address')
➤ YN0000: [@balancer-labs/balancer-js]: created dist/index.umd.js, dist/index.js, dist/index.esm.js in 1.9s
➤ YN0000: [@balancer-labs/balancer-js]:
➤ YN0000: [@balancer-labs/balancer-js]: src/index.ts → dist/index.d.ts...
➤ YN0000: [@balancer-labs/balancer-js]: created dist/index.d.ts in 1.1s
➤ YN0000: [@balancer-labs/v2-asset-manager-utils]: Nothing to compile

mosinnik avatar Jan 25 '22 22:01 mosinnik

cause is yarn workspaces foreach --parallel it run building command only for first 3 workspaces (half of my 6 cores) and after that stopped. If use -j 18 it run build on all workspaces. Same to tests

mosinnik avatar Jan 26 '22 00:01 mosinnik

after some debugging found that running locked at https://github.com/yarnpkg/berry/blob/b8d16768d9397d2d814163b0dc70dbf3e5074fab/packages/plugin-workspace-tools/sources/commands/foreach.ts#L248-L249 . And it will never happen cause finish event never emitted on cli.run. (at least on win10 and wsl). But stdout and stderr streams ended, so wrapping by ifs it works now.

if(!stdout._writableState.ended) {
    await stdoutEnd;
}
if(!stderr._writableState.ended) {
    await stderrEnd;
}

But cleaning and restoring plugin-workspace-tools.cjs will lost my changes and need another workaround

mosinnik avatar Jan 26 '22 07:01 mosinnik

Hello @mosinnik, thanks for reporting this and the detailed description!

It seems like this is a bug in yarn's side (maybe on the plugin?) that is only present on Windows, which is why we haven't seen it ourselves (as we do all development in Unix machines).

Once all packages are built however, you should be able to run tests properly, so I'm closing the issue.

nventuro avatar Feb 02 '22 21:02 nventuro

not only windows, reproduced on ubuntu. Problem cause is in node 16

mosinnik avatar Feb 03 '22 07:02 mosinnik

@nventuro as mentioned in https://github.com/yarnpkg/berry/issues/4018 to work node 16 need to update yarn to newer version 3+. So reopen issue to fix it

mosinnik avatar Feb 08 '22 11:02 mosinnik

That'd be going from yarn v2 to v3, so I'd want to be careful about it. I'll try it out and report back.

nventuro avatar Feb 08 '22 15:02 nventuro

I've been working on this in the back burner.

As mentioned above, I can confirm the build script doesn't work with node 16 and yarn 2, so we should move to yarn 3. I still don't have everything 100% working, but I did manage to build and run most contracts / tests.

jubeira avatar Nov 14 '22 15:11 jubeira