Skip to content
Draft
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
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@ spec:
- name: build-platforms
value:
- linux/x86_64
- linux-m2xlarge/arm64
- name: dockerfile
Comment on lines 36 to 40
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Verification agent

🧩 Analysis chain

Confirm platform key is valid in Konflux and in the generator (avoid drift).

The new entry uses linux-m2xlarge/arm64. Past convention here is linux/x86_64 (not linux/amd64). Please verify that Konflux accepts linux-m2xlarge/arm64 (vs a possible linux/arm64) and that scripts/generate_pull_request_pipelineruns.py has been updated so this autogen file won’t be overwritten back to single-arch.

If your Konflux expects plain linux/arm64, apply:

   - name: build-platforms
     value:
     - linux/x86_64
-    - linux-m2xlarge/arm64
+    - linux/arm64

Run to confirm repo-wide conventions and generator support:


🏁 Script executed:

#!/usr/bin/env bash
set -euo pipefail
echo "Occurrences of linux-m2xlarge/arm64:"
rg -n "linux-m2xlarge/arm64" -g ".tekton/**" -S || true
echo
echo "Other arm64 platform spellings in pipelines:"
rg -n "linux.?/arm64" -g ".tekton/**" -S | sed 's/^/  /' || true
echo
echo "Check generator declares/validates build-platforms including arm64:"
rg -n "build-platforms|platforms|arm64|x86_64" scripts/generate_pull_request_pipelineruns.py -S -C3 || true

Length of output: 2487


Replace linux-m2xlarge/arm64 with linux/arm64 — generator requires linux/arm64

scripts/generate_pull_request_pipelineruns.py defines allowed build_platforms (includes "linux/arm64") and populates the build-platforms param from that list; "linux-m2xlarge/arm64" will not be recognized and may be overwritten.

File: .tekton/odh-pipeline-runtime-pytorch-llmcompressor-cuda-py312-ubi9-pull-request.yaml (lines 36–40)

  - name: build-platforms
    value:
    - linux/x86_64
-   - linux-m2xlarge/arm64
+   - linux/arm64
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
- name: build-platforms
value:
- linux/x86_64
- linux-m2xlarge/arm64
- name: dockerfile
- name: build-platforms
value:
- linux/x86_64
- linux/arm64
- name: dockerfile
🤖 Prompt for AI Agents
.tekton/odh-pipeline-runtime-pytorch-llmcompressor-cuda-py312-ubi9-pull-request.yaml
lines 36-40: the build-platforms list contains "linux-m2xlarge/arm64" which is
not in the generator's allowed platforms and will be ignored/overwritten; change
that entry to "linux/arm64" so it matches
scripts/generate_pull_request_pipelineruns.py allowed build_platforms and the
generator can populate the param correctly.

value: runtimes/pytorch+llmcompressor/ubi9-python-3.12/Dockerfile.cuda
- name: path-context
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@ spec:
- name: build-platforms
value:
- linux/x86_64
- linux-m2xlarge/arm64
- name: dockerfile
value: jupyter/pytorch+llmcompressor/ubi9-python-3.12/Dockerfile.cuda
- name: path-context
Expand Down
3 changes: 3 additions & 0 deletions jupyter/datascience/ubi9-python-3.12/pylock.toml
Original file line number Diff line number Diff line change
Expand Up @@ -118,6 +118,7 @@ wheels = [{ url = "https://files.pythonhosted.org/packages/fb/76/641ae3715086764
[[packages]]
name = "annotated-types"
version = "0.7.0"
marker = "platform_machine != 's390x'"
sdist = { url = "https://files.pythonhosted.org/packages/ee/67/531ea369ba64dcff5ec9c3402f9f51bf748cec26dde048a2f973a4eea7f5/annotated_types-0.7.0.tar.gz", upload-time = 2024-05-20T21:33:25Z, size = 16081, hashes = { sha256 = "aff07c09a53a08bc8cfccb9c85b05f1aa9a2a6f23728d790723543408344ce89" } }
wheels = [{ url = "https://files.pythonhosted.org/packages/78/b6/6307fbef88d9b5ee7421e68d78a9f162e0da4900bc5f5793f6d3d0e34fb8/annotated_types-0.7.0-py3-none-any.whl", upload-time = 2024-05-20T21:33:24Z, size = 13643, hashes = { sha256 = "1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53" } }]

Comment on lines 118 to 124
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🛠️ Refactor suggestion

Do not hand-edit pylock.toml; move the s390x marker to pyproject.toml and re-lock.

pylock.toml is uv-generated. Manual edits will be overwritten and break determinism. Put the platform marker in the source pyproject.toml (on the driving dependency) and regenerate the lock.

Apply this diff here (revert the manual edit):

 marker = "platform_machine != 's390x'"

Then update the corresponding pyproject.toml, for example:

# in jupyter/datascience/ubi9-python-3.12/pyproject.toml
[project.dependencies]
# If pydantic drives annotated-types:
pydantic = { version = ">=2,<3", markers = "platform_machine != 's390x'" }

Regenerate:

  • uv lock --locked-python 3.12
  • Commit the refreshed pylock.toml

I can draft the exact pyproject.toml changes once you confirm which top-level deps pull in annotated-types here.

Expand Down Expand Up @@ -2777,6 +2778,7 @@ wheels = [{ url = "https://files.pythonhosted.org/packages/6a/c0/ec2b1c8712ca690
[[packages]]
name = "pydantic-core"
version = "2.33.2"
marker = "platform_machine != 's390x'"
sdist = { url = "https://files.pythonhosted.org/packages/ad/88/5f2260bdfae97aabf98f1778d43f69574390ad787afb646292a638c923d4/pydantic_core-2.33.2.tar.gz", upload-time = 2025-04-23T18:33:52Z, size = 435195, hashes = { sha256 = "7cb8bc3605c29176e1b105350d2e6474142d7c1bd1d9327c4a9bdb46bf827acc" } }
wheels = [
{ url = "https://files.pythonhosted.org/packages/e5/92/b31726561b5dae176c2d2c2dc43a9c5bfba5d32f96f8b4c0a600dd492447/pydantic_core-2.33.2-cp310-cp310-macosx_10_12_x86_64.whl", upload-time = 2025-04-23T18:30:43Z, size = 2028817, hashes = { sha256 = "2b3d326aaef0c0399d9afffeb6367d5e26ddc24d351dbc9c636840ac355dc5d8" } },
Expand Down Expand Up @@ -3802,6 +3804,7 @@ wheels = [{ url = "https://files.pythonhosted.org/packages/18/67/36e9267722cc04a
[[packages]]
name = "typing-inspection"
version = "0.4.1"
marker = "platform_machine != 's390x'"
sdist = { url = "https://files.pythonhosted.org/packages/f8/b1/0c11f5058406b3af7609f121aaa6b609744687f1d158b3c3a5bf4cc94238/typing_inspection-0.4.1.tar.gz", upload-time = 2025-05-21T18:55:23Z, size = 75726, hashes = { sha256 = "6ae134cc0203c33377d43188d4064e9b357dba58cff3185f22924610e70a9d28" } }
wheels = [{ url = "https://files.pythonhosted.org/packages/17/69/cd203477f944c353c31bade965f880aa1061fd6bf05ded0726ca845b6ff7/typing_inspection-0.4.1-py3-none-any.whl", upload-time = 2025-05-21T18:55:22Z, size = 14552, hashes = { sha256 = "389055682238f53b04f7badcb49b989835495a96700ced5dab2d8feae4b26f51" } }]

Expand Down
43 changes: 31 additions & 12 deletions runtimes/pytorch/ubi9-python-3.12/pylock.toml
Original file line number Diff line number Diff line change
Expand Up @@ -278,6 +278,7 @@ wheels = [{ url = "https://files.pythonhosted.org/packages/e5/48/1549795ba7742c9
[[packages]]
name = "cffi"
version = "2.0.0"
marker = "python_full_version < '3.14' or platform_python_implementation != 'PyPy'"
sdist = { url = "https://files.pythonhosted.org/packages/eb/56/b1ba7935a17738ae8453301356628e8147c79dbb825bcbc73dc7401f9846/cffi-2.0.0.tar.gz", upload-time = 2025-09-08T23:24:04Z, size = 523588, hashes = { sha256 = "44d1b5909021139fe36001ae048dbdde8214afa20200eda0f64c068cac5d5529" } }
wheels = [
{ url = "https://files.pythonhosted.org/packages/93/d7/516d984057745a6cd96575eea814fe1edd6646ee6efd552fb7b0921dec83/cffi-2.0.0-cp310-cp310-macosx_10_13_x86_64.whl", upload-time = 2025-09-08T23:22:08Z, size = 184283, hashes = { sha256 = "0cf2d91ecc3fcc0625c2c530fe004f82c110405f101548512cce44322fa8ac44" } },
Expand Down Expand Up @@ -2385,7 +2386,7 @@ wheels = [{ url = "https://files.pythonhosted.org/packages/47/8d/d529b5d697919ba
[[packages]]
name = "pycparser"
version = "2.23"
marker = "implementation_name != 'PyPy'"
marker = "(python_full_version < '3.14' and implementation_name != 'PyPy') or (implementation_name != 'PyPy' and platform_python_implementation != 'PyPy')"
sdist = { url = "https://files.pythonhosted.org/packages/fe/cf/d2d3b9f5699fb1e4615c8e32ff220203e43b248e1dfcc6736ad9057731ca/pycparser-2.23.tar.gz", upload-time = 2025-09-09T13:23:47Z, size = 173734, hashes = { sha256 = "78816d4f24add8f10a06d6f05b4d424ad9e96cfebf68a4ddc99c65c0720d00c2" } }
wheels = [{ url = "https://files.pythonhosted.org/packages/a0/e3/59cd50310fc9b59512193629e1984c1f95e5c8ae6e5d8c69532ccc65a7fe/pycparser-2.23-py3-none-any.whl", upload-time = 2025-09-09T13:23:46Z, size = 118140, hashes = { sha256 = "e5c6e8d3fbad53479cab09ac03729e0a9faf2bee3db8208a550daf5af81a5934" } }]

Expand Down Expand Up @@ -2618,18 +2619,35 @@ wheels = [

[[packages]]
name = "pynacl"
version = "1.5.0"
sdist = { url = "https://files.pythonhosted.org/packages/a7/22/27582568be639dfe22ddb3902225f91f2f17ceff88ce80e4db396c8986da/PyNaCl-1.5.0.tar.gz", upload-time = 2022-01-07T22:05:41Z, size = 3392854, hashes = { sha256 = "8ac7448f09ab85811607bdd21ec2464495ac8b7c66d146bf545b0f08fb9220ba" } }
version = "1.6.0"
sdist = { url = "https://files.pythonhosted.org/packages/06/c6/a3124dee667a423f2c637cfd262a54d67d8ccf3e160f3c50f622a85b7723/pynacl-1.6.0.tar.gz", upload-time = 2025-09-10T23:39:22Z, size = 3505641, hashes = { sha256 = "cb36deafe6e2bce3b286e5d1f3e1c246e0ccdb8808ddb4550bb2792f2df298f2" } }
wheels = [
{ url = "https://files.pythonhosted.org/packages/ce/75/0b8ede18506041c0bf23ac4d8e2971b4161cd6ce630b177d0a08eb0d8857/PyNaCl-1.5.0-cp36-abi3-macosx_10_10_universal2.whl", upload-time = 2022-01-07T22:05:49Z, size = 349920, hashes = { sha256 = "401002a4aaa07c9414132aaed7f6836ff98f59277a234704ff66878c2ee4a0d1" } },
{ url = "https://files.pythonhosted.org/packages/59/bb/fddf10acd09637327a97ef89d2a9d621328850a72f1fdc8c08bdf72e385f/PyNaCl-1.5.0-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", upload-time = 2022-01-07T22:05:50Z, size = 601722, hashes = { sha256 = "52cb72a79269189d4e0dc537556f4740f7f0a9ec41c1322598799b0bdad4ef92" } },
{ url = "https://files.pythonhosted.org/packages/5d/70/87a065c37cca41a75f2ce113a5a2c2aa7533be648b184ade58971b5f7ccc/PyNaCl-1.5.0-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", upload-time = 2022-01-07T22:05:52Z, size = 680087, hashes = { sha256 = "a36d4a9dda1f19ce6e03c9a784a2921a4b726b02e1c736600ca9c22029474394" } },
{ url = "https://files.pythonhosted.org/packages/ee/87/f1bb6a595f14a327e8285b9eb54d41fef76c585a0edef0a45f6fc95de125/PyNaCl-1.5.0-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", upload-time = 2022-01-07T22:05:54Z, size = 856678, hashes = { sha256 = "0c84947a22519e013607c9be43706dd42513f9e6ae5d39d3613ca1e142fba44d" } },
{ url = "https://files.pythonhosted.org/packages/66/28/ca86676b69bf9f90e710571b67450508484388bfce09acf8a46f0b8c785f/PyNaCl-1.5.0-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", upload-time = 2022-01-07T22:05:56Z, size = 1133660, hashes = { sha256 = "06b8f6fa7f5de8d5d2f7573fe8c863c051225a27b61e6860fd047b1775807858" } },
{ url = "https://files.pythonhosted.org/packages/3d/85/c262db650e86812585e2bc59e497a8f59948a005325a11bbbc9ecd3fe26b/PyNaCl-1.5.0-cp36-abi3-musllinux_1_1_aarch64.whl", upload-time = 2022-01-07T22:05:57Z, size = 663824, hashes = { sha256 = "a422368fc821589c228f4c49438a368831cb5bbc0eab5ebe1d7fac9dded6567b" } },
{ url = "https://files.pythonhosted.org/packages/fd/1a/cc308a884bd299b651f1633acb978e8596c71c33ca85e9dc9fa33a5399b9/PyNaCl-1.5.0-cp36-abi3-musllinux_1_1_x86_64.whl", upload-time = 2022-01-07T22:05:58Z, size = 1117912, hashes = { sha256 = "61f642bf2378713e2c2e1de73444a3778e5f0a38be6fee0fe532fe30060282ff" } },
{ url = "https://files.pythonhosted.org/packages/25/2d/b7df6ddb0c2a33afdb358f8af6ea3b8c4d1196ca45497dd37a56f0c122be/PyNaCl-1.5.0-cp36-abi3-win32.whl", upload-time = 2022-01-07T22:06:00Z, size = 204624, hashes = { sha256 = "e46dae94e34b085175f8abb3b0aaa7da40767865ac82c928eeb9e57e1ea8a543" } },
{ url = "https://files.pythonhosted.org/packages/5e/22/d3db169895faaf3e2eda892f005f433a62db2decbcfbc2f61e6517adfa87/PyNaCl-1.5.0-cp36-abi3-win_amd64.whl", upload-time = 2022-01-07T22:06:01Z, size = 212141, hashes = { sha256 = "20f42270d27e1b6a29f54032090b972d97f0a1b0948cc52392041ef7831fee93" } },
{ url = "https://files.pythonhosted.org/packages/70/24/1b639176401255605ba7c2b93a7b1eb1e379e0710eca62613633eb204201/pynacl-1.6.0-cp314-cp314t-macosx_10_10_universal2.whl", upload-time = 2025-09-10T23:38:28Z, size = 384141, hashes = { sha256 = "f46386c24a65383a9081d68e9c2de909b1834ec74ff3013271f1bca9c2d233eb" } },
{ url = "https://files.pythonhosted.org/packages/5e/7b/874efdf57d6bf172db0df111b479a553c3d9e8bb4f1f69eb3ffff772d6e8/pynacl-1.6.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", upload-time = 2025-09-10T23:38:38Z, size = 808132, hashes = { sha256 = "dea103a1afcbc333bc0e992e64233d360d393d1e63d0bc88554f572365664348" } },
{ url = "https://files.pythonhosted.org/packages/f3/61/9b53f5913f3b75ac3d53170cdb897101b2b98afc76f4d9d3c8de5aa3ac05/pynacl-1.6.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", upload-time = 2025-09-10T23:38:40Z, size = 1407253, hashes = { sha256 = "04f20784083014e265ad58c1b2dd562c3e35864b5394a14ab54f5d150ee9e53e" } },
{ url = "https://files.pythonhosted.org/packages/7c/0a/b138916b22bbf03a1bdbafecec37d714e7489dd7bcaf80cd17852f8b67be/pynacl-1.6.0-cp314-cp314t-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", upload-time = 2025-09-10T23:38:30Z, size = 843719, hashes = { sha256 = "bbcc4452a1eb10cd5217318c822fde4be279c9de8567f78bad24c773c21254f8" } },
{ url = "https://files.pythonhosted.org/packages/01/3b/17c368197dfb2c817ce033f94605a47d0cc27901542109e640cef263f0af/pynacl-1.6.0-cp314-cp314t-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", upload-time = 2025-09-10T23:38:33Z, size = 1445441, hashes = { sha256 = "51fed9fe1bec9e7ff9af31cd0abba179d0e984a2960c77e8e5292c7e9b7f7b5d" } },
{ url = "https://files.pythonhosted.org/packages/35/3c/f79b185365ab9be80cd3cd01dacf30bf5895f9b7b001e683b369e0bb6d3d/pynacl-1.6.0-cp314-cp314t-manylinux_2_34_aarch64.whl", upload-time = 2025-09-10T23:38:34Z, size = 825691, hashes = { sha256 = "10d755cf2a455d8c0f8c767a43d68f24d163b8fe93ccfaabfa7bafd26be58d73" } },
{ url = "https://files.pythonhosted.org/packages/f7/1f/8b37d25e95b8f2a434a19499a601d4d272b9839ab8c32f6b0fc1e40c383f/pynacl-1.6.0-cp314-cp314t-manylinux_2_34_x86_64.whl", upload-time = 2025-09-10T23:38:36Z, size = 1410726, hashes = { sha256 = "536703b8f90e911294831a7fbcd0c062b837f3ccaa923d92a6254e11178aaf42" } },
{ url = "https://files.pythonhosted.org/packages/bd/93/5a4a4cf9913014f83d615ad6a2df9187330f764f606246b3a744c0788c03/pynacl-1.6.0-cp314-cp314t-musllinux_1_2_aarch64.whl", upload-time = 2025-09-10T23:38:42Z, size = 801035, hashes = { sha256 = "6b08eab48c9669d515a344fb0ef27e2cbde847721e34bba94a343baa0f33f1f4" } },
{ url = "https://files.pythonhosted.org/packages/bf/60/40da6b0fe6a4d5fd88f608389eb1df06492ba2edca93fca0b3bebff9b948/pynacl-1.6.0-cp314-cp314t-musllinux_1_2_x86_64.whl", upload-time = 2025-09-10T23:38:44Z, size = 1371854, hashes = { sha256 = "5789f016e08e5606803161ba24de01b5a345d24590a80323379fc4408832d290" } },
{ url = "https://files.pythonhosted.org/packages/44/b2/37ac1d65008f824cba6b5bf68d18b76d97d0f62d7a032367ea69d4a187c8/pynacl-1.6.0-cp314-cp314t-win32.whl", upload-time = 2025-09-10T23:38:48Z, size = 230345, hashes = { sha256 = "4853c154dc16ea12f8f3ee4b7e763331876316cc3a9f06aeedf39bcdca8f9995" } },
{ url = "https://files.pythonhosted.org/packages/f4/5a/9234b7b45af890d02ebee9aae41859b9b5f15fb4a5a56d88e3b4d1659834/pynacl-1.6.0-cp314-cp314t-win_amd64.whl", upload-time = 2025-09-10T23:38:45Z, size = 243103, hashes = { sha256 = "347dcddce0b4d83ed3f32fd00379c83c425abee5a9d2cd0a2c84871334eaff64" } },
{ url = "https://files.pythonhosted.org/packages/c9/2c/c1a0f19d720ab0af3bc4241af2bdf4d813c3ecdcb96392b5e1ddf2d8f24f/pynacl-1.6.0-cp314-cp314t-win_arm64.whl", upload-time = 2025-09-10T23:38:46Z, size = 187778, hashes = { sha256 = "2d6cd56ce4998cb66a6c112fda7b1fdce5266c9f05044fa72972613bef376d15" } },
{ url = "https://files.pythonhosted.org/packages/63/37/87c72df19857c5b3b47ace6f211a26eb862ada495cc96daa372d96048fca/pynacl-1.6.0-cp38-abi3-macosx_10_10_universal2.whl", upload-time = 2025-09-10T23:38:49Z, size = 382610, hashes = { sha256 = "f4b3824920e206b4f52abd7de621ea7a44fd3cb5c8daceb7c3612345dfc54f2e" } },
{ url = "https://files.pythonhosted.org/packages/0c/64/3ce958a5817fd3cc6df4ec14441c43fd9854405668d73babccf77f9597a3/pynacl-1.6.0-cp38-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", upload-time = 2025-09-10T23:38:58Z, size = 798744, hashes = { sha256 = "16dd347cdc8ae0b0f6187a2608c0af1c8b7ecbbe6b4a06bff8253c192f696990" } },
{ url = "https://files.pythonhosted.org/packages/e4/8a/3f0dd297a0a33fa3739c255feebd0206bb1df0b44c52fbe2caf8e8bc4425/pynacl-1.6.0-cp38-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", upload-time = 2025-09-10T23:39:00Z, size = 1397879, hashes = { sha256 = "16c60daceee88d04f8d41d0a4004a7ed8d9a5126b997efd2933e08e93a3bd850" } },
{ url = "https://files.pythonhosted.org/packages/41/94/028ff0434a69448f61348d50d2c147dda51aabdd4fbc93ec61343332174d/pynacl-1.6.0-cp38-abi3-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", upload-time = 2025-09-10T23:38:50Z, size = 833907, hashes = { sha256 = "25720bad35dfac34a2bcdd61d9e08d6bfc6041bebc7751d9c9f2446cf1e77d64" } },
{ url = "https://files.pythonhosted.org/packages/52/bc/a5cff7f8c30d5f4c26a07dfb0bcda1176ab8b2de86dda3106c00a02ad787/pynacl-1.6.0-cp38-abi3-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", upload-time = 2025-09-10T23:38:52Z, size = 1436649, hashes = { sha256 = "8bfaa0a28a1ab718bad6239979a5a57a8d1506d0caf2fba17e524dbb409441cf" } },
{ url = "https://files.pythonhosted.org/packages/7a/20/c397be374fd5d84295046e398de4ba5f0722dc14450f65db76a43c121471/pynacl-1.6.0-cp38-abi3-manylinux_2_34_aarch64.whl", upload-time = 2025-09-10T23:38:54Z, size = 817142, hashes = { sha256 = "ef214b90556bb46a485b7da8258e59204c244b1b5b576fb71848819b468c44a7" } },
{ url = "https://files.pythonhosted.org/packages/12/30/5efcef3406940cda75296c6d884090b8a9aad2dcc0c304daebb5ae99fb4a/pynacl-1.6.0-cp38-abi3-manylinux_2_34_x86_64.whl", upload-time = 2025-09-10T23:38:56Z, size = 1401794, hashes = { sha256 = "49c336dd80ea54780bcff6a03ee1a476be1612423010472e60af83452aa0f442" } },
{ url = "https://files.pythonhosted.org/packages/be/e1/a8fe1248cc17ccb03b676d80fa90763760a6d1247da434844ea388d0816c/pynacl-1.6.0-cp38-abi3-musllinux_1_1_aarch64.whl", upload-time = 2025-09-10T23:39:01Z, size = 772161, hashes = { sha256 = "f3482abf0f9815e7246d461fab597aa179b7524628a4bc36f86a7dc418d2608d" } },
{ url = "https://files.pythonhosted.org/packages/a3/76/8a62702fb657d6d9104ce13449db221a345665d05e6a3fdefb5a7cafd2ad/pynacl-1.6.0-cp38-abi3-musllinux_1_1_x86_64.whl", upload-time = 2025-09-10T23:39:03Z, size = 1370720, hashes = { sha256 = "140373378e34a1f6977e573033d1dd1de88d2a5d90ec6958c9485b2fd9f3eb90" } },
{ url = "https://files.pythonhosted.org/packages/6d/38/9e9e9b777a1c4c8204053733e1a0269672c0bd40852908c9ad6b6eaba82c/pynacl-1.6.0-cp38-abi3-musllinux_1_2_aarch64.whl", upload-time = 2025-09-10T23:39:05Z, size = 791252, hashes = { sha256 = "6b393bc5e5a0eb86bb85b533deb2d2c815666665f840a09e0aa3362bb6088736" } },
{ url = "https://files.pythonhosted.org/packages/63/ef/d972ce3d92ae05c9091363cf185e8646933f91c376e97b8be79ea6e96c22/pynacl-1.6.0-cp38-abi3-musllinux_1_2_x86_64.whl", upload-time = 2025-09-10T23:39:06Z, size = 1362910, hashes = { sha256 = "4a25cfede801f01e54179b8ff9514bd7b5944da560b7040939732d1804d25419" } },
{ url = "https://files.pythonhosted.org/packages/35/2c/ee0b373a1861f66a7ca8bdb999331525615061320dd628527a50ba8e8a60/pynacl-1.6.0-cp38-abi3-win32.whl", upload-time = 2025-09-10T23:39:11Z, size = 226461, hashes = { sha256 = "dcdeb41c22ff3c66eef5e63049abf7639e0db4edee57ba70531fc1b6b133185d" } },
{ url = "https://files.pythonhosted.org/packages/75/f7/41b6c0b9dd9970173b6acc026bab7b4c187e4e5beef2756d419ad65482da/pynacl-1.6.0-cp38-abi3-win_amd64.whl", upload-time = 2025-09-10T23:39:08Z, size = 238802, hashes = { sha256 = "cf831615cc16ba324240de79d925eacae8265b7691412ac6b24221db157f6bd1" } },
{ url = "https://files.pythonhosted.org/packages/8e/0f/462326910c6172fa2c6ed07922b22ffc8e77432b3affffd9e18f444dbfbb/pynacl-1.6.0-cp38-abi3-win_arm64.whl", upload-time = 2025-09-10T23:39:10Z, size = 183846, hashes = { sha256 = "84709cea8f888e618c21ed9a0efdb1a59cc63141c403db8bf56c469b71ad56f2" } },
]

[[packages]]
Expand Down Expand Up @@ -3283,6 +3301,7 @@ wheels = [
[[packages]]
name = "torchvision"
version = "0.21.0+cu126"
marker = "platform_machine == 'x86_64'"
wheels = [
{ url = "https://download.pytorch.org/whl/cu126/torchvision-0.21.0%2Bcu126-cp310-cp310-linux_x86_64.whl", hashes = { sha256 = "db4369a89b866b319c8dd73931c3e5f314aa535f7035ae2336ce9a26d7ace15a" } },
{ url = "https://download.pytorch.org/whl/cu126/torchvision-0.21.0%2Bcu126-cp310-cp310-win_amd64.whl", hashes = { sha256 = "d6b23af252e8f4fc923d57efeab5aad7a33b6e15a72a119d576aa48ec1e0d924" } },
Comment on lines 3302 to 3307
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Verification agent

🧩 Analysis chain

Ensure a matching torchvision CPU entry exists for aarch64, otherwise arm64 builds will fail.

You added an x86_64-only torchvision==0.21.0+cu126 with marker. Verify the lock also contains a second [[packages]] name = "torchvision" block for aarch64 (CPU wheel, likely 0.21.0 without CUDA) with marker = "platform_machine == 'aarch64'", aligned with the per-arch indices in pyproject.toml. If missing, re-run a multi-platform lock.

Use:

If you need to re-lock:

  • Ensure pyproject has:
    • torchvision==0.21.0+cu126; platform_machine == "x86_64" with index = pytorch-cuda
    • torchvision==0.21.0; platform_machine == "aarch64" with index = pytorch-cpu
  • Then run: uv lock --platform linux/x86_64 --platform linux/aarch64.

If desired, I can open a tracking issue and push the regenerated lock.


🏁 Script executed:

#!/bin/bash
# Expect TWO torchvision blocks with distinct markers
rg -nPU '(?s)\[\[packages\]\]\s+name\s*=\s*"torchvision".*?marker\s*=\s*"platform_machine == '\''x86_64'\''"' runtimes/pytorch/ubi9-python-3.12/pylock.toml >/dev/null && echo "x86_64 torchvision: OK"
rg -nPU '(?s)\[\[packages\]\]\s+name\s*=\s*"torchvision".*?marker\s*=\s*"platform_machine == '\''aarch64'\''"' runtimes/pytorch/ubi9-python-3.12/pylock.toml >/dev/null && echo "aarch64 torchvision: OK"

# Optional: confirm aarch64 entry is CPU (no +cu tag)
rg -nPU '(?s)\[\[packages\]\]\s+name\s*=\s*"torchvision".*?marker\s*=\s*"platform_machine == '\''aarch64'\''".*?\n\s*version\s*=\s*"(0\.21\.0)(?!\+cu)' runtimes/pytorch/ubi9-python-3.12/pylock.toml && echo "aarch64 is CPU wheel"

Length of output: 107


🏁 Script executed:

#!/bin/bash
set -euo pipefail
file="runtimes/pytorch/ubi9-python-3.12/pylock.toml"
if [ ! -f "$file" ]; then
  echo "MISSING: $file"
  exit 0
fi

awk '
/^\[\[packages\]\]/ {
  if (block_name == "torchvision") {
    if (block_marker ~ /platform_machine == '\''x86_64'\''/) found_x=1
    if (block_marker ~ /platform_machine == '\''aarch64'\''/) {
      found_a=1
      if (block_version ~ /\+cu/) aarch64_pluscu=1
      else aarch64_cpu=1
    }
  }
  block_name=""; block_marker=""; block_version=""; next
}
{
  if ($0 ~ /^\s*name\s*=/) {
    if (match($0, /"([^"]+)"/, m)) block_name=m[1]
  } else if ($0 ~ /^\s*marker\s*=/) {
    if (match($0, /"([^"]+)"/, m)) block_marker=m[1]
  } else if ($0 ~ /^\s*version\s*=/) {
    if (match($0, /"([^"]+)"/, m)) block_version=m[1]
  }
}
END {
  if (block_name == "torchvision") {
    if (block_marker ~ /platform_machine == '\''x86_64'\''/) found_x=1
    if (block_marker ~ /platform_machine == '\''aarch64'\''/) {
      found_a=1
      if (block_version ~ /\+cu/) aarch64_pluscu=1
      else aarch64_cpu=1
    }
  }
  if (found_x) print "x86_64 torchvision: OK"
  if (found_a) {
    if (aarch64_cpu) print "aarch64 torchvision: OK (CPU wheel)"
    if (aarch64_pluscu) print "aarch64 torchvision: WARNING (CUDA wheel present)"
  }
  if (!found_x && !found_a) print "no torchvision blocks found"
}
' "$file"

Length of output: 148


🏁 Script executed:

#!/bin/bash
set -euo pipefail
file="runtimes/pytorch/ubi9-python-3.12/pylock.toml"
if [ ! -f "$file" ]; then
  echo "MISSING: $file"
  exit 0
fi

python3 - <<'PY'
import re
f="runtimes/pytorch/ubi9-python-3.12/pylock.toml"
blocks=[]
curr=None
with open(f, 'r', encoding='utf-8') as fh:
    for line in fh:
        if line.strip().startswith('[[packages]]'):
            if curr: blocks.append(curr)
            curr={'name':None,'version':None,'marker':None}
            continue
        if curr is None:
            continue
        m=re.match(r'\s*name\s*=\s*"([^"]+)"', line)
        if m: curr['name']=m.group(1)
        m=re.match(r'\s*version\s*=\s*"([^"]+)"', line)
        if m: curr['version']=m.group(1)
        m=re.match(r'\s*marker\s*=\s*"([^"]+)"', line)
        if m: curr['marker']=m.group(1)
if curr: blocks.append(curr)

found=False
for b in blocks:
    if b.get('name') == 'torchvision':
        found=True
        marker = b.get('marker') or '<no marker>'
        version = b.get('version') or '<no version>'
        print(f"torchvision -> marker: {marker} ; version: {version}")
if not found:
    print("NO_TORCHVISION_BLOCKS_FOUND")
PY

Length of output: 75


Add missing aarch64 (CPU) torchvision entry and re-lock

runtimes/pytorch/ubi9-python-3.12/pylock.toml currently only contains an x86_64 torchvision (0.21.0+cu126); add a second [[packages]] block for platform_machine == 'aarch64' with version 0.21.0 (CPU wheel) and regenerate the lock (e.g. uv lock --platform linux/x86_64 --platform linux/aarch64).

🤖 Prompt for AI Agents
In runtimes/pytorch/ubi9-python-3.12/pylock.toml around lines 3302-3307 the file
only defines an x86_64 torchvision package (0.21.0+cu126); add a second
[[package]] block for platform_machine == 'aarch64' with name "torchvision",
version "0.21.0" and the CPU wheel URL and its sha256 hash (the CPU wheel target
for cp310/linux_aarch64), then regenerate the lockfile for both architectures
(e.g. run: uv lock --platform linux/x86_64 --platform linux/aarch64) so the new
aarch64 entry is populated and hashes/resolved dependencies are updated.

Expand Down
13 changes: 11 additions & 2 deletions runtimes/pytorch/ubi9-python-3.12/pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,8 @@ dependencies = [
# PyTorch packages
'tensorboard~=2.19.0',
'torch==2.6.0+cu126',
'torchvision==0.21.0+cu126',
'torchvision==0.21.0+cu126; platform_machine == "x86_64"',
'torchvision==0.21.0; platform_machine == "aarch64"', # CUDA version not pre-built by pytorch for aarch64

# Datascience and useful extensions
'boto3~=1.37.8',
Expand Down Expand Up @@ -55,14 +56,22 @@ dependencies = [

[tool.uv.sources]
torch = { index = "pytorch-cuda" }
torchvision = { index = "pytorch-cuda" }
torchvision = [
{ index = "pytorch-cuda", marker = "platform_machine == 'x86_64'" },
{ index = "pytorch-cpu", marker = "platform_machine == 'aarch64'" }]
Comment on lines +59 to +61
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🛠️ Refactor suggestion

Also split uv source for torch per-arch to avoid using CUDA index on ARM

Without this, uv will still try pytorch-cuda for torch on aarch64.

-[tool.uv.sources]
-torch = { index = "pytorch-cuda" }
+[tool.uv.sources]
+torch = [
+    { index = "pytorch-cuda", marker = "platform_machine == 'x86_64'" },
+    { index = "pytorch-cpu",  marker = "platform_machine == 'aarch64'" }
+]
 torchvision = [
             { index = "pytorch-cuda", marker = "platform_machine == 'x86_64'" },
             { index = "pytorch-cpu", marker = "platform_machine == 'aarch64'" }]
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
torchvision = [
{ index = "pytorch-cuda", marker = "platform_machine == 'x86_64'" },
{ index = "pytorch-cpu", marker = "platform_machine == 'aarch64'" }]
[tool.uv.sources]
torch = [
{ index = "pytorch-cuda", marker = "platform_machine == 'x86_64'" },
{ index = "pytorch-cpu", marker = "platform_machine == 'aarch64'" }
]
torchvision = [
{ index = "pytorch-cuda", marker = "platform_machine == 'x86_64'" },
{ index = "pytorch-cpu", marker = "platform_machine == 'aarch64'" }]


# https://docs.astral.sh/uv/concepts/indexes/#package-indexes
[[tool.uv.index]]
name = "pytorch-cuda"
url = "https://download.pytorch.org/whl/cu126"
explicit = true

# Add CPU index for ARM64
[[tool.uv.index]]
name = "pytorch-cpu"
url = "https://download.pytorch.org/whl/cpu"
explicit = true

[tool.uv]
environments = [
"sys_platform == 'linux' and implementation_name == 'cpython'",
Expand Down
Loading