1+ from pathlib import Path
2+
3+ import yaml
4+
15from configuration .builders .base import GenericBuilder
2- from configuration .builders .sequences .foundry import dispatcher
6+ from configuration .builders .sequences .foundry import autobake , dispatcher
7+
8+ with open (Path (__file__ ).parent / "foundry.yaml" ) as f :
9+ _FOUNDRY_CONFIG = yaml .safe_load (f )
10+
11+ _SEQUENCE_BY_PACKAGE_TYPE = {
12+ "rpm" : autobake .rpm ,
13+ "deb" : autobake .deb ,
14+ }
15+
16+
17+ def foundry_scheduler_name (mariadb_version ):
18+ return f"foundry_{ mariadb_version .replace ('.' , '_' )} _scheduler"
19+
20+
21+ FOUNDRY_BUILDERS_BY_ARCH = {}
22+ # Builders grouped by (ops, os version), regardless of arch.
23+ FOUNDRY_BUILDERS_BY_PACKAGE = {}
24+ for package_config in _FOUNDRY_CONFIG ["packages" ]:
25+ ops = package_config ["ops" ]
26+ version = package_config ["version" ]
27+ package = f"{ ops } -{ version } "
28+ sequence_fn = _SEQUENCE_BY_PACKAGE_TYPE [package_config ["type" ]]
29+ for arch in package_config ["arch" ]:
30+ builder = GenericBuilder (
31+ name = f"foundry-{ arch } -{ ops } -{ version } " ,
32+ sequences = [sequence_fn ()],
33+ )
34+ FOUNDRY_BUILDERS_BY_ARCH .setdefault (arch , []).append (builder )
35+ FOUNDRY_BUILDERS_BY_PACKAGE .setdefault (package , []).append (builder )
36+
37+ # Supported MariaDB versions, and which packages get built for each one.
38+ # Configured in configuration/builders/definitions/foundry/foundry.yaml.
39+ FOUNDRY_MARIADB_VERSIONS = _FOUNDRY_CONFIG ["mariadb_versions" ]
40+ for packages in FOUNDRY_MARIADB_VERSIONS .values ():
41+ for package in packages :
42+ assert package in FOUNDRY_BUILDERS_BY_PACKAGE , f"Unknown foundry package: { package } "
343
444DISPATCHER_BUILDER = GenericBuilder (
545 name = "foundry-trigger-builders" ,
6- sequences = [dispatcher .trigger_foundry ()],
7- )
46+ sequences = [
47+ dispatcher .trigger_foundry (
48+ [
49+ (foundry_scheduler_name (version ), {"mariadb_version" : version })
50+ for version in FOUNDRY_MARIADB_VERSIONS
51+ ]
52+ )
53+ ],
54+ )
0 commit comments