Skip to content

Commit d71693d

Browse files
committed
feat: add mergeCompilationJobs and concurrency to build profile config
1 parent 6acdfa0 commit d71693d

File tree

3 files changed

+43
-10
lines changed

3 files changed

+43
-10
lines changed

v-next/hardhat/src/internal/builtin-plugins/solidity/build-system/build-system.ts

+23-4
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,10 @@ import debug from "debug";
3636
import pMap from "p-map";
3737

3838
import { FileBuildResultType } from "../../../../types/solidity/build-system.js";
39-
import { DEFAULT_BUILD_PROFILE, shouldMergeCompilationJobs } from "../build-profiles.js";
39+
import {
40+
DEFAULT_BUILD_PROFILE,
41+
shouldMergeCompilationJobs,
42+
} from "../build-profiles.js";
4043

4144
import {
4245
getArtifactsDeclarationFile,
@@ -139,6 +142,14 @@ export class SolidityBuildSystemImplementation implements SolidityBuildSystem {
139142
),
140143
);
141144

145+
const buildProfileName = options?.buildProfile ?? DEFAULT_BUILD_PROFILE;
146+
const buildProfile =
147+
this.#options.solidityConfig.profiles[buildProfileName];
148+
const concurrency =
149+
options?.concurrency ??
150+
buildProfile.concurrency ??
151+
this.#defaultConcurrency;
152+
142153
const runCompilationJobOptions: RunCompilationJobOptions = {
143154
quiet: options?.quiet,
144155
};
@@ -172,7 +183,7 @@ export class SolidityBuildSystemImplementation implements SolidityBuildSystem {
172183
};
173184
},
174185
{
175-
concurrency: options?.concurrency ?? this.#defaultConcurrency,
186+
concurrency,
176187
// An error when running the compiler is not a compilation failure, but
177188
// a fatal failure trying to run it, so we just throw on the first error
178189
stopOnError: true,
@@ -308,9 +319,12 @@ export class SolidityBuildSystemImplementation implements SolidityBuildSystem {
308319

309320
log(`Using build profile ${buildProfileName}`);
310321

322+
const buildProfile =
323+
this.#options.solidityConfig.profiles[buildProfileName];
324+
311325
const solcConfigSelector = new SolcConfigSelector(
312326
buildProfileName,
313-
this.#options.solidityConfig.profiles[buildProfileName],
327+
buildProfile,
314328
dependencyGraph,
315329
);
316330

@@ -334,7 +348,12 @@ export class SolidityBuildSystemImplementation implements SolidityBuildSystem {
334348
subgraphsWithConfig.push([configOrError, subgraph]);
335349
}
336350

337-
if (options?.mergeCompilationJobs ?? shouldMergeCompilationJobs(buildProfileName)) {
351+
const mergeCompilationJobs =
352+
options?.mergeCompilationJobs ??
353+
buildProfile?.mergeCompilationJobs ??
354+
shouldMergeCompilationJobs(buildProfileName);
355+
356+
if (mergeCompilationJobs) {
338357
log(`Merging compilation jobs`);
339358

340359
const mergedSubgraphsByConfig: Map<

v-next/hardhat/src/internal/builtin-plugins/solidity/config.ts

+4
Original file line numberDiff line numberDiff line change
@@ -282,6 +282,8 @@ function resolveSolidityConfig(
282282
},
283283
],
284284
overrides: {},
285+
mergeCompilationJobs: profile.mergeCompilationJobs,
286+
concurrency: profile.concurrency,
285287
};
286288
continue;
287289
}
@@ -304,6 +306,8 @@ function resolveSolidityConfig(
304306
},
305307
),
306308
),
309+
mergeCompilationJobs: profile.mergeCompilationJobs,
310+
concurrency: profile.concurrency,
307311
};
308312
}
309313

v-next/hardhat/src/internal/builtin-plugins/solidity/type-extensions.ts

+16-6
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,17 @@ declare module "../../../types/config.js" {
1515
settings?: any;
1616
}
1717

18+
export interface CommonSolcUserConfig {
19+
mergeCompilationJobs?: boolean;
20+
concurrency?: number;
21+
}
22+
1823
// eslint-disable-next-line @typescript-eslint/no-empty-interface -- This could be an extension point
19-
export interface SingleVersionSolcUserConfig extends SolcUserConfig {}
24+
export interface SingleVersionSolcUserConfig
25+
extends SolcUserConfig,
26+
CommonSolcUserConfig {}
2027

21-
export interface MultiVersionSolcUserConfig {
28+
export interface MultiVersionSolcUserConfig extends CommonSolcUserConfig {
2229
compilers: SolcUserConfig[];
2330
overrides?: Record<string, SolcUserConfig>;
2431
}
@@ -36,12 +43,13 @@ declare module "../../../types/config.js" {
3643
extends MultiVersionSolcUserConfig,
3744
CommonSolidityUserConfig {}
3845

46+
export type SolidityBuildProfileUserConfig =
47+
| SingleVersionSolcUserConfig
48+
| MultiVersionSolcUserConfig;
49+
3950
export interface BuildProfilesSolidityUserConfig
4051
extends CommonSolidityUserConfig {
41-
profiles: Record<
42-
string,
43-
SingleVersionSolcUserConfig | MultiVersionSolcUserConfig
44-
>;
52+
profiles: Record<string, SolidityBuildProfileUserConfig>;
4553
}
4654

4755
export interface HardhatUserConfig {
@@ -56,6 +64,8 @@ declare module "../../../types/config.js" {
5664
export interface SolidityBuildProfileConfig {
5765
compilers: SolcConfig[];
5866
overrides: Record<string, SolcConfig>;
67+
mergeCompilationJobs?: boolean;
68+
concurrency?: number;
5969
}
6070

6171
export interface SolidityConfig {

0 commit comments

Comments
 (0)