From a2fb538dec7863c5e88e17b7a8a4a1ba79ef4a61 Mon Sep 17 00:00:00 2001 From: Wolf Vollprecht Date: Mon, 5 Aug 2024 17:35:57 +0200 Subject: [PATCH 1/2] update build number function from rbcc --- conda_forge_tick/migrators/core.py | 27 +++++++++++++++------------ environment.yml | 1 + 2 files changed, 16 insertions(+), 12 deletions(-) diff --git a/conda_forge_tick/migrators/core.py b/conda_forge_tick/migrators/core.py index 48f0c014b..609e27f18 100644 --- a/conda_forge_tick/migrators/core.py +++ b/conda_forge_tick/migrators/core.py @@ -6,10 +6,12 @@ import re import typing from typing import Any, List, Sequence, Set - +from pathlib import Path import dateutil.parser import networkx as nx +from rattler_build_conda_compat import modify_recipe + from conda_forge_tick.contexts import FeedstockContext from conda_forge_tick.lazy_json_backends import LazyJson from conda_forge_tick.make_graph import make_outputs_lut_from_graph @@ -566,19 +568,20 @@ def set_build_number(self, filename: str) -> None: Parameters ---------- filename : str - Path the the meta.yaml + Path to the recipe file (meta.yaml or recipe.yaml) """ - with open(filename) as f: - raw = f.read() - - new_myaml = update_build_number( - raw, - self.new_build_number, - build_patterns=self.build_patterns, - ) + path = Path(filename) + if path.name == "recipe.yaml": + new_myaml = modify_recipe.update_build_number(self.new_build_number) + else: + raw = path.read_text() - with open(filename, "w") as f: - f.write(new_myaml) + new_myaml = update_build_number( + raw, + self.new_build_number, + build_patterns=self.build_patterns, + ) + path.write_text(new_myaml) def new_build_number(self, old_number: int) -> int: """Determine the new build number to use. diff --git a/environment.yml b/environment.yml index c53960889..5d10191ea 100644 --- a/environment.yml +++ b/environment.yml @@ -46,6 +46,7 @@ dependencies: - python-graphviz - python-rapidjson - rattler-build + - rattler-build-conda-compat - requests - ruamel.yaml - ruamel.yaml.jinja2 From 6d50d68c5be56738ebc32048c5aca2bcd82a65d3 Mon Sep 17 00:00:00 2001 From: Wolf Vollprecht Date: Mon, 5 Aug 2024 17:45:47 +0200 Subject: [PATCH 2/2] add version bumping for v2 recipes --- conda_forge_tick/migrators/core.py | 4 ++-- conda_forge_tick/migrators/version.py | 34 +++++++++++++++++---------- 2 files changed, 24 insertions(+), 14 deletions(-) diff --git a/conda_forge_tick/migrators/core.py b/conda_forge_tick/migrators/core.py index 609e27f18..500f5a704 100644 --- a/conda_forge_tick/migrators/core.py +++ b/conda_forge_tick/migrators/core.py @@ -5,11 +5,11 @@ import logging import re import typing -from typing import Any, List, Sequence, Set from pathlib import Path +from typing import Any, List, Sequence, Set + import dateutil.parser import networkx as nx - from rattler_build_conda_compat import modify_recipe from conda_forge_tick.contexts import FeedstockContext diff --git a/conda_forge_tick/migrators/version.py b/conda_forge_tick/migrators/version.py index 9cf8b8186..65d4fd5f1 100644 --- a/conda_forge_tick/migrators/version.py +++ b/conda_forge_tick/migrators/version.py @@ -5,16 +5,17 @@ import random import typing import warnings +from pathlib import Path from typing import Any, List, Sequence import conda.exceptions import networkx as nx from conda.models.version import VersionOrder +from rattler_build_conda_compat import modify_recipe from conda_forge_tick.contexts import FeedstockContext from conda_forge_tick.migrators.core import Migrator from conda_forge_tick.models.pr_info import MigratorName -from conda_forge_tick.os_utils import pushd from conda_forge_tick.update_deps import get_dep_updates_and_hints from conda_forge_tick.update_recipe import update_version from conda_forge_tick.utils import get_keys_default, sanitize_string @@ -195,20 +196,29 @@ def migrate( ) -> "MigrationUidTypedDict": version = attrs["new_version"] - with open(os.path.join(recipe_dir, "meta.yaml")) as fp: - raw_meta_yaml = fp.read() + path = Path(recipe_dir) / "meta.yaml" + if not path.exists(): + path = Path(recipe_dir) / "recipe.yaml" + if not path.exists(): + raise FileNotFoundError( + f"Could not find meta.yaml or recipe.yaml in {recipe_dir}" + ) - updated_meta_yaml, errors = update_version( - raw_meta_yaml, - version, - hash_type=hash_type, - ) + if path.name == "recipe.yaml": + updated_meta_yaml = modify_recipe.update_version(path, version) + errors = [] + else: + raw_meta_yaml = path.read_text() + + updated_meta_yaml, errors = update_version( + raw_meta_yaml, + version, + hash_type=hash_type, + ) if len(errors) == 0 and updated_meta_yaml is not None: - with pushd(recipe_dir): - with open("meta.yaml", "w") as fp: - fp.write(updated_meta_yaml) - self.set_build_number("meta.yaml") + path.write_text(updated_meta_yaml) + self.set_build_number(str(path)) return super().migrate(recipe_dir, attrs) else: