diff --git a/python/private/whl_target_platforms.bzl b/python/private/whl_target_platforms.bzl index 08177ca1b..bee795732 100644 --- a/python/private/whl_target_platforms.bzl +++ b/python/private/whl_target_platforms.bzl @@ -46,63 +46,6 @@ _OS_PREFIXES = { "win": "windows", } # buildifier: disable=unsorted-dict-items -def _whl_priority(value): - """Return a value for sorting whl lists. - - TODO @aignas 2024-03-29: In the future we should create a repo for each - repo that matches the abi and then we could have config flags for the - preference of `any` wheels or `sdist` or `manylinux` vs `musllinux` or - `universal2`. Ideally we use `select` statements in the hub repo to do - the selection based on the config, but for now this is the best way to - get this working for the host platform. - - In the future the right thing would be to have `bool_flag` or something - similar to be able to have select statements that does the right thing: - * select whls vs sdists. - * select manylinux vs musllinux - * select universal2 vs arch-specific whls - - All of these can be expressed as configuration settings and included in the - select statements in the `whl` repo. This means that the user can configure - for a particular target what they need. - - Returns a 4-tuple where the items are: - * bool - is it an 'any' wheel? True if it is. - * bool - is it an 'universal' wheel? True if it is. (e.g. macos universal2 wheels) - * int - the minor plaform version (e.g. osx os version, libc version) - * int - the major plaform version (e.g. osx os version, libc version) - """ - if "." in value: - value, _, _ = value.partition(".") - - if "any" == value: - return (True, False, 0, 0) - - if "linux" in value: - os, _, tail = value.partition("_") - if os == "linux": - # If the platform tag starts with 'linux', then return something less than what 'any' returns - minor = 0 - major = 0 - else: - major, _, tail = tail.partition("_") # We don't need to use that because it's the same for all candidates now - minor, _, _ = tail.partition("_") - - return (False, os == "linux", int(minor), int(major)) - - if "mac" in value or "osx" in value: - _, _, tail = value.partition("_") - major, _, tail = tail.partition("_") - minor, _, _ = tail.partition("_") - - return (False, "universal2" in value, int(minor), int(major)) - - if not "win" in value: - fail("BUG: only windows, linux and mac platforms are supported, but got: {}".format(value)) - - # Windows does not have multiple wheels for the same target platform - return (False, False, 0, 0) - def select_whls(*, whls, want_python_version = "3.0", want_abis = [], want_platforms = [], logger = None): """Select a subset of wheels suitable for target platforms from a list. @@ -203,46 +146,6 @@ def select_whls(*, whls, want_python_version = "3.0", want_abis = [], want_platf for key, v in candidates.items() ] -def select_whl(*, whls, want_platform): - """Select a suitable wheel from a list. - - Args: - whls(list[struct]): A list of candidates. - want_platform(str): The target platform. - - Returns: - None or a struct with `url`, `sha256` and `filename` attributes for the - selected whl. If no match is found, None is returned. - """ - if not whls: - return None - - # TODO @aignas 2024-05-23: once we do the selection in the hub repo using - # an actual select, then this function will be the one that is used within - # the repository context instead of `select_whl`. - whls = select_whls( - whls = whls, - want_python_version = "", - want_platforms = [want_platform], - ) - - candidates = { - parse_whl_name(w.filename).platform_tag: w - for w in whls - # TODO @aignas 2024-06-01: to be addressed in #1837, where we add the necessary - # config settings. - if "musllinux_" not in w.filename - } - - target_whl_platform = sorted( - candidates.keys(), - key = _whl_priority, - ) - if not target_whl_platform: - return None - - return candidates[target_whl_platform[0]] - def whl_target_platforms(platform_tag, abi_tag = ""): """Parse the wheel abi and platform tags and return (os, cpu) tuples. diff --git a/tests/private/whl_target_platforms/select_whl_tests.bzl b/tests/private/whl_target_platforms/select_whl_tests.bzl index ebd2b263f..59e9d7791 100644 --- a/tests/private/whl_target_platforms/select_whl_tests.bzl +++ b/tests/private/whl_target_platforms/select_whl_tests.bzl @@ -15,7 +15,7 @@ "" load("@rules_testing//lib:test_suite.bzl", "test_suite") -load("//python/private:whl_target_platforms.bzl", "select_whl", "select_whls") # buildifier: disable=bzl-visibility +load("//python/private:whl_target_platforms.bzl", "select_whls") # buildifier: disable=bzl-visibility WHL_LIST = [ "pkg-0.0.1-cp311-cp311-macosx_10_9_universal2.whl", @@ -79,11 +79,6 @@ def _match(env, got, *want_filenames): # Check that we pass the original structs env.expect.that_str(got[0].other).equals("dummy") -def _select_whl(**kwargs): - """A small wrapper to make the tests more DRY.""" - got_single = select_whl(**kwargs) - return [got_single] if got_single else [] - def _select_whls(whls, **kwargs): return select_whls( whls = [ @@ -214,8 +209,6 @@ def _test_match_abi_and_not_py_version(env): "pkg-0.0.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", "pkg-0.0.1-cp37-cp37m-musllinux_1_1_x86_64.whl", ) - got = _select_whl(whls = got, want_platform = "linux_x86_64") - _match(env, got, "pkg-0.0.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl") _tests.append(_test_match_abi_and_not_py_version) @@ -228,8 +221,6 @@ def _test_select_filename_with_many_tags(env): "pkg-0.0.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", "pkg-0.0.1-cp39-cp39-musllinux_1_1_i686.whl", ) - got = _select_whl(whls = got, want_platform = "linux_x86_32") - _match(env, got, "pkg-0.0.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl") _tests.append(_test_select_filename_with_many_tags) @@ -247,8 +238,6 @@ def _test_osx_prefer_arch_specific(env): "pkg-0.0.1-cp311-cp311-macosx_10_9_universal2.whl", "pkg-0.0.1-cp311-cp311-macosx_10_9_x86_64.whl", ) - got = _select_whl(whls = got, want_platform = "osx_x86_64") - _match(env, got, "pkg-0.0.1-cp311-cp311-macosx_10_9_x86_64.whl") got = _select_whls(whls = WHL_LIST, want_abis = ["cp311"], want_platforms = ["osx_aarch64"], want_python_version = "3.11") _match( @@ -257,8 +246,6 @@ def _test_osx_prefer_arch_specific(env): "pkg-0.0.1-cp311-cp311-macosx_10_9_universal2.whl", "pkg-0.0.1-cp311-cp311-macosx_11_0_arm64.whl", ) - got = _select_whl(whls = got, want_platform = "osx_aarch64") - _match(env, got, "pkg-0.0.1-cp311-cp311-macosx_11_0_arm64.whl") _tests.append(_test_osx_prefer_arch_specific) @@ -270,8 +257,6 @@ def _test_osx_fallback_to_universal2(env): got, "pkg-0.0.1-cp311-cp311-macosx_10_9_universal2.whl", ) - got = _select_whl(whls = got, want_platform = "osx_aarch64") - _match(env, got, "pkg-0.0.1-cp311-cp311-macosx_10_9_universal2.whl") _tests.append(_test_osx_fallback_to_universal2) @@ -286,8 +271,6 @@ def _test_prefer_manylinux_wheels(env): "pkg-0.0.1-cp39-abi3-any.whl", "pkg-0.0.1-py3-none-any.whl", ) - got = _select_whl(whls = got, want_platform = "linux_x86_64") - _match(env, got, "pkg-0.0.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl") _tests.append(_test_prefer_manylinux_wheels)