Skip to content

Commit 7748f5b

Browse files
jfrocheyvan-sraka
authored andcommitted
feat: use big-parallel to identify large packages
1 parent 5846309 commit 7748f5b

File tree

6 files changed

+36
-16
lines changed

6 files changed

+36
-16
lines changed

nix/ext/pg_graphql/default.nix

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -129,7 +129,7 @@ let
129129
lib.mapAttrs (name: value: build name value.hash value.rust value.pgrx) supportedVersions
130130
);
131131
in
132-
buildEnv {
132+
(buildEnv {
133133
name = pname;
134134
paths = packages;
135135
pathsToLink = [
@@ -177,4 +177,7 @@ buildEnv {
177177
version =
178178
"multi-" + lib.concatStringsSep "-" (map (v: lib.replaceStrings [ "." ] [ "-" ] v) versions);
179179
};
180-
}
180+
}).overrideAttrs
181+
(_: {
182+
requiredSystemFeatures = [ "big-parallel" ];
183+
})

nix/ext/pg_jsonschema/default.nix

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -130,7 +130,7 @@ let
130130
lib.mapAttrs (name: value: build name value.hash value.rust value.pgrx) supportedVersions
131131
);
132132
in
133-
pkgs.buildEnv {
133+
(pkgs.buildEnv {
134134
name = pname;
135135
paths = packages;
136136
pathsToLink = [
@@ -170,4 +170,7 @@ pkgs.buildEnv {
170170
version =
171171
"multi-" + lib.concatStringsSep "-" (map (v: lib.replaceStrings [ "." ] [ "-" ] v) versions);
172172
};
173-
}
173+
}).overrideAttrs
174+
(_: {
175+
requiredSystemFeatures = [ "big-parallel" ];
176+
})

nix/ext/postgis.nix

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -179,7 +179,7 @@ let
179179
};
180180
};
181181
in
182-
buildEnv {
182+
(buildEnv {
183183
name = pname;
184184
paths = packages;
185185

@@ -209,4 +209,7 @@ buildEnv {
209209
version =
210210
"multi-" + lib.concatStringsSep "-" (map (v: lib.replaceStrings [ "." ] [ "-" ] v) versions);
211211
};
212-
}
212+
}).overrideAttrs
213+
(_: {
214+
requiredSystemFeatures = [ "big-parallel" ];
215+
})

nix/ext/wrappers/default.nix

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -224,7 +224,7 @@ let
224224
lib.mapAttrs (name: value: build name value.hash value.rust value.pgrx) supportedVersions
225225
);
226226
in
227-
buildEnv {
227+
(buildEnv {
228228
name = pname;
229229
paths = packages;
230230
pathsToLink = [
@@ -309,4 +309,7 @@ buildEnv {
309309
version =
310310
"multi-" + lib.concatStringsSep "-" (map (v: lib.replaceStrings [ "." ] [ "-" ] v) versions);
311311
};
312-
}
312+
}).overrideAttrs
313+
(_: {
314+
requiredSystemFeatures = [ "big-parallel" ];
315+
})

nix/packages/github-matrix/github_matrix.py

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ class NixEvalJobsOutput(TypedDict):
3636
neededSubstitutes: NotRequired[List[Any]]
3737
outputs: NotRequired[Dict[str, str]]
3838
error: NotRequired[str]
39+
requiredSystemFeatures: NotRequired[List[str]]
3940

4041

4142
class RunsOnConfig(TypedDict):
@@ -174,11 +175,7 @@ def sort_pkgs_by_closures(jobs: List[NixEvalJobsOutput]) -> List[NixEvalJobsOutp
174175

175176
def is_large_pkg(pkg: NixEvalJobsOutput) -> bool:
176177
"""Determine if a package is considered large based on its attribute path."""
177-
RUST_EXTENSIONS = ["exts.wrappers", "exts.pg_jsonschema", "exts.pg_graphql"]
178-
LARGE_C_EXTENSION = ["exts.postgis"]
179-
return any(
180-
indicator in pkg["attr"] for indicator in RUST_EXTENSIONS + LARGE_C_EXTENSION
181-
)
178+
return "big-parallel" in pkg.get("requiredSystemFeatures", [])
182179

183180

184181
def is_kvm_pkg(pkg: NixEvalJobsOutput) -> bool:
@@ -198,7 +195,12 @@ def get_runner_for_package(pkg: NixEvalJobsOutput) -> RunsOnConfig | None:
198195
system = pkg["system"]
199196

200197
if is_kvm_pkg(pkg):
201-
return BUILD_RUNNER_MAP["self-hosted"].get(system)
198+
runConfig = BUILD_RUNNER_MAP["self-hosted"].get(system)
199+
if runConfig is None:
200+
raise ValueError(
201+
f"No self-hosted with kvm support available for system: {system}"
202+
)
203+
return runConfig
202204

203205
if is_large_pkg(pkg) and system in ("x86_64-linux", "aarch64-linux"):
204206
suffix = "-arm" if system == "aarch64-linux" else ""

nix/packages/github-matrix/tests/test_github_matrix.py

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@ def test_large_package_detection(self, attr: str, expected: bool):
5656
"drvPath": f"/nix/store/{attr}.drv",
5757
"name": attr.split(".")[-1],
5858
"system": "x86_64-linux",
59+
"requiredSystemFeatures": ["big-parallel"] if expected else [],
5960
}
6061
assert is_large_pkg(pkg) is expected
6162

@@ -96,8 +97,11 @@ def test_kvm_package_x86_64_linux(self):
9697
"system": "x86_64-linux",
9798
"requiredSystemFeatures": ["kvm"],
9899
}
99-
result = get_runner_for_package(pkg)
100-
assert result is None # x86_64-linux not in self-hosted map
100+
with pytest.raises(
101+
ValueError,
102+
match=r"No self-hosted with kvm support available for system: x86_64-linux",
103+
):
104+
get_runner_for_package(pkg)
101105

102106
def test_kvm_package_aarch64_linux(self):
103107
pkg: NixEvalJobsOutput = {
@@ -123,6 +127,7 @@ def test_large_package_x86_64_linux(self):
123127
"drvPath": "/nix/store/test.drv",
124128
"name": "postgis",
125129
"system": "x86_64-linux",
130+
"requiredSystemFeatures": ["big-parallel"],
126131
}
127132
result = get_runner_for_package(pkg)
128133
assert result == {"labels": ["blacksmith-32vcpu-ubuntu-2404"]}
@@ -135,6 +140,7 @@ def test_large_package_aarch64_linux(self):
135140
"drvPath": "/nix/store/test.drv",
136141
"name": "pg_graphql",
137142
"system": "aarch64-linux",
143+
"requiredSystemFeatures": ["big-parallel"],
138144
}
139145
result = get_runner_for_package(pkg)
140146
assert result == {"labels": ["blacksmith-32vcpu-ubuntu-2404-arm"]}

0 commit comments

Comments
 (0)