Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions conda_forge_tick/make_migrators.py
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,6 @@
)
from conda_forge_tick.migrators import (
AddNVIDIATools,
ArchRebuild,
CDTMigrator,
CombineV1ConditionsMigrator,
CondaForgeYAMLCleanup,
Expand All @@ -52,6 +51,7 @@
Jinja2VarsCleanup,
LibboostMigrator,
LicenseMigrator,
LinuxAarch64,
MigrationYaml,
Migrator,
MiniMigrator,
Expand Down Expand Up @@ -245,9 +245,9 @@ def add_arch_migrate(migrators: MutableSequence[Migrator], gx: nx.DiGraph) -> No
The list of migrators to run.

"""
with fold_log_lines("making aarch64+ppc64le migrator"):
with fold_log_lines("making aarch64 migrator"):
migrators.append(
ArchRebuild(
LinuxAarch64(
total_graph=gx,
pr_limit=PR_LIMIT,
),
Expand Down
2 changes: 1 addition & 1 deletion conda_forge_tick/migrators/__init__.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# flake8: noqa
from .arch import ArchRebuild, OSXArm, WinArm64
from .arch import ArchRebuild, LinuxAarch64, OSXArm, WinArm64
from .broken_rebuild import RebuildBroken
from .conda_forge_yaml_cleanup import CondaForgeYAMLCleanup
from .core import (
Expand Down
30 changes: 26 additions & 4 deletions conda_forge_tick/migrators/arch.py
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,11 @@ def _filter_stubby_and_ignored_nodes(graph, ignored_packages):


class ArchRebuild(GraphMigrator):
"""A Migrator that adds aarch64 and ppc64le builds to feedstocks."""
"""
A Migrator that adds aarch64 and ppc64le builds to feedstocks.

Note: Superseded by subclass LinuxAarch64Rebuild to skip ppc64le.
"""

allowed_schema_versions = {0, 1}
migrator_version = 1
Expand All @@ -86,6 +90,7 @@ class ArchRebuild(GraphMigrator):
"linux_aarch64": "default",
"linux_ppc64le": "default",
}
list_filename = "arch_rebuild.txt"

def __init__(
self,
Expand All @@ -100,7 +105,7 @@ def __init__(
if total_graph is not None:
if target_packages is None:
# We are constraining the scope of this migrator
target_packages = load_target_packages("arch_rebuild.txt")
target_packages = load_target_packages(self.list_filename)

outputs_lut = get_outputs_lut(total_graph, graph, effective_graph)

Expand Down Expand Up @@ -199,8 +204,8 @@ def pr_body(
body = super().pr_body(feedstock_ctx)
body = body.format(
dedent(
"""\
This feedstock is being rebuilt as part of the aarch64/ppc64le migration.
f"""\
This feedstock is being rebuilt as part of the {"/".join(list(self.arches))} migration.

**Feel free to merge the PR if CI is all green, but please don't close it
without reaching out the the ARM migrators first at <code>@</code>conda-forge/arm-arch.**
Expand All @@ -213,6 +218,23 @@ def remote_branch(self, feedstock_ctx: FeedstockContext) -> str:
return super().remote_branch(feedstock_ctx) + "_arch"


class LinuxAarch64(ArchRebuild):
"""A migrator to add linux-aarch64 to a feedstock."""

arches = {"linux_aarch64": "default"}
list_filename = "linux-aarch64.txt"

def __init__(self, *args, **kwargs):
kwargs.setdefault("name", "linux aarch64 addition")
super().__init__(*args, **kwargs)

def pr_title(self, feedstock_ctx: FeedstockContext) -> str:
return "Linux Aarch64 Migrator"

def remote_branch(self, feedstock_ctx: FeedstockContext) -> str:
return super().remote_branch(feedstock_ctx) + "_linuxaarch64"


class _CrossCompileRebuild(GraphMigrator):
"""A Migrator that adds arch platform builds to feedstocks."""

Expand Down
1 change: 1 addition & 0 deletions conda_forge_tick/models/pr_info.py
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,7 @@ class MigratorName(StrEnum):

VERSION = "Version"
ARCH_REBUILD = "ArchRebuild"
LINUX_AARCH64 = "LinuxAarch64Rebuild"
OSX_ARM = "OSXArm"
WIN_ARM64 = "WinArm64"
MIGRATION_YAML = "MigrationYaml"
Expand Down
4 changes: 2 additions & 2 deletions conda_forge_tick/status_report.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,8 @@
from conda_forge_tick.lazy_json_backends import LazyJson, get_all_keys_for_hashmap
from conda_forge_tick.make_migrators import load_migrators
from conda_forge_tick.migrators import (
ArchRebuild,
GraphMigrator,
LinuxAarch64,
MatplotlibBase,
MigrationYamlCreator,
Migrator,
Expand Down Expand Up @@ -505,7 +505,7 @@ def main(migrator_filter: str | list[str] | None = None) -> None:
paused_status[migrator_name] = f"{migrator.name} Migration Status"
elif (
mgconf.get("longterm", False)
or isinstance(migrator, ArchRebuild)
or isinstance(migrator, LinuxAarch64)
or isinstance(migrator, OSXArm)
or isinstance(migrator, WinArm64)
):
Expand Down
17 changes: 12 additions & 5 deletions tests/test_migrator_to_json.py
Original file line number Diff line number Diff line change
Expand Up @@ -222,12 +222,19 @@ def test_migrator_to_json_replacement():
assert dumps(migrator2.to_lazy_json_data()) == lzj_data


def test_migrator_to_json_arch():
@pytest.mark.parametrize(
"MigratorCls,name",
(
[conda_forge_tick.migrators.ArchRebuild, "aarch64andppc64leaddition"],
[conda_forge_tick.migrators.LinuxAarch64, "linuxaarch64addition"],
),
)
def test_migrator_to_json_arch(MigratorCls, name):
gx = nx.DiGraph()
gx.add_node("conda", reqs=["python"], payload={}, blah="foo")
gx.graph["outputs_lut"] = {}

migrator = conda_forge_tick.migrators.ArchRebuild(
migrator = MigratorCls(
target_packages=["python"],
pr_limit=5,
total_graph=gx,
Expand All @@ -238,14 +245,14 @@ def test_migrator_to_json_arch():
lzj_data = dumps(data)
print("lazy json data:\n", lzj_data)
assert data["__migrator__"] is True
assert data["class"] == "ArchRebuild"
assert data["name"] == "aarch64andppc64leaddition"
assert data["class"] == MigratorCls.__name__
assert data["name"] == name

migrator2 = make_from_lazy_json_data(loads(lzj_data))
assert [pgm.__class__.__name__ for pgm in migrator2.piggy_back_migrations] == [
pgm.__class__.__name__ for pgm in migrator.piggy_back_migrations
]
assert isinstance(migrator2, conda_forge_tick.migrators.ArchRebuild)
assert isinstance(migrator2, MigratorCls)
assert dumps(migrator2.to_lazy_json_data()) == lzj_data


Expand Down
Loading