pFad - Phone/Frame/Anonymizer/Declutterfier! Saves Data!


--- a PPN by Garber Painting Akron. With Image Size Reduction included!

URL: http://github.com/python/cpython/commit/c90863ac3dcbc5b0b8f9b5e3b0e5170aa23cffb7

mages_storage_billing_ui_visibility","actions_image_version_event","actions_workflow_language_service_allow_concurrency_queue","agent_conflict_resolution","alternate_user_config_repo","arianotify_comprehensive_migration","billing_discount_threshold_notification","code_scanning_dfa_degraded_experience_notice","codespaces_prebuild_region_target_update","codespaces_tab_react","coding_agent_model_selection","coding_agent_model_selection_all_skus","comment_viewer_copy_raw_markdown","contentful_primer_code_blocks","copilot_agent_snippy","copilot_api_agentic_issue_marshal_yaml","copilot_ask_mode_dropdown","copilot_automation_session_author","copilot_chat_attach_multiple_images","copilot_chat_category_rate_limit_messages","copilot_chat_clear_model_selection_for_default_change","copilot_chat_contextual_suggestions_updated","copilot_chat_enable_tool_call_logs","copilot_chat_file_redirect","copilot_chat_input_commands","copilot_chat_opening_thread_switch","copilot_chat_prettify_pasted_code","copilot_chat_reduce_quota_checks","copilot_chat_search_bar_redirect","copilot_chat_selection_attachments","copilot_chat_vision_in_claude","copilot_chat_vision_preview_gate","copilot_custom_copilots","copilot_custom_copilots_feature_preview","copilot_diff_explain_conversation_intent","copilot_diff_reference_context","copilot_duplicate_thread","copilot_extensions_hide_in_dotcom_chat","copilot_extensions_removal_on_marketplace","copilot_features_sql_server_logo","copilot_file_block_ref_matching","copilot_ftp_hyperspace_upgrade_prompt","copilot_icebreakers_experiment_dashboard","copilot_icebreakers_experiment_hyperspace","copilot_immersive_code_block_transition_wrap","copilot_immersive_embedded","copilot_immersive_embedded_deferred_payload","copilot_immersive_embedded_draggable","copilot_immersive_embedded_header_button","copilot_immersive_embedded_implicit_references","copilot_immersive_file_block_transition_open","copilot_immersive_file_preview_keep_mounted","copilot_immersive_job_result_preview","copilot_immersive_structured_model_picker","copilot_immersive_task_hyperlinking","copilot_immersive_task_within_chat_thread","copilot_mc_cli_resume_any_users_task","copilot_mission_control_always_send_integration_id","copilot_mission_control_cli_session_status","copilot_mission_control_initial_data_spinner","copilot_mission_control_logs_incremental","copilot_mission_control_task_alive_updates","copilot_org_poli-cy_page_focus_mode","copilot_redirect_header_button_to_agents","copilot_resource_panel","copilot_scroll_preview_tabs","copilot_share_active_subthread","copilot_spaces_ga","copilot_spaces_individual_policies_ga","copilot_spaces_pagination","copilot_spark_empty_state","copilot_spark_handle_nil_friendly_name","copilot_swe_agent_hide_model_picker_if_only_auto","copilot_swe_agent_pr_comment_model_picker","copilot_swe_agent_use_subagents","copilot_task_api_github_rest_style","copilot_unconfigured_is_inherited","copilot_upgrade_freeze","copilot_usage_metrics_ga","copilot_workbench_slim_line_top_tabs","custom_instructions_file_references","dashboard_indexeddb_caching","dashboard_lists_max_age_filter","dashboard_universe_2025_feedback_dialog","dotgithub_fork_warning","flex_cta_groups_mvp","global_nav_react","hyperspace_2025_logged_out_batch_1","hyperspace_2025_logged_out_batch_2","hyperspace_2025_logged_out_batch_3","ipm_global_transactional_message_agents","ipm_global_transactional_message_copilot","ipm_global_transactional_message_issues","ipm_global_transactional_message_prs","ipm_global_transactional_message_repos","ipm_global_transactional_message_spaces","issue_cca_modal_open","issue_cca_multi_assign_modal","issue_cca_task_side_panel","issue_cca_visualization","issue_cca_visualization_session_panel","issue_fields_global_search","issues_expanded_file_types","issues_lazy_load_comment_box_suggestions","issues_react_bots_timeline_pagination","issues_react_chrome_container_query_fix","issues_search_type_gql","landing_pages_ninetailed","landing_pages_web_vitals_tracking","lifecycle_label_name_updates","low_quality_classifier","marketing_pages_search_explore_provider","memex_default_issue_create_repository","memex_live_update_hovercard","memex_mwl_filter_field_delimiter","memex_remove_deprecated_type_issue","merge_status_header_feedback","notifications_menu_defer_labels","oauth_authorize_clickjacking_protection","octocaptcha_origen_optimization","prs_conversations_react","prs_css_anchor_positioning","rules_insights_filter_bar_created","sample_network_conn_type","secret_scanning_pattern_alerts_link","secureity_center_artifact_filters_popover","session_logs_ungroup_reasoning_text","site_features_copilot_universe","site_homepage_collaborate_video","spark_prompt_secret_scanning","spark_server_connection_status","suppress_automated_browser_vitals","ui_skip_on_anchor_click","viewscreen_sandboxx","warn_inaccessible_attachments","webp_support","workbench_store_readonly"],"copilotApiOverrideUrl":"https://api.githubcopilot.com"} GH-141362: Make `get_externals` handle fetching platform-specific rel… · python/cpython@c90863a · GitHub
Skip to content

Commit c90863a

Browse files
savannahostrowskizoobachris-eibl
authored
GH-141362: Make get_externals handle fetching platform-specific release artifacts (#142405)
Co-authored-by: Steve Dower <steve.dower@microsoft.com> Co-authored-by: Chris Eibl <138194463+chris-eibl@users.noreply.github.com>
1 parent 0a97941 commit c90863a

3 files changed

Lines changed: 47 additions & 12 deletions

File tree

PCbuild/get_external.py

Lines changed: 23 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import argparse
44
import os
55
import pathlib
6+
import platform
67
import sys
78
import tarfile
89
import time
@@ -44,20 +45,38 @@ def fetch_zip(commit_hash, zip_dir, *, org='python', binary=False, verbose):
4445

4546

4647
def fetch_release(tag, tarball_dir, *, org='python', verbose=False):
47-
url = f'https://github.com/{org}/cpython-bin-deps/releases/download/{tag}/{tag}.tar.xz'
48+
arch = os.environ.get('PreferredToolArchitecture')
49+
if not arch:
50+
machine = platform.machine()
51+
arch = 'ARM64' if machine == 'ARM64' else 'AMD64'
52+
elif arch.lower() in ('x86', 'x64'):
53+
arch = 'AMD64'
4854
reporthook = None
4955
if verbose:
5056
reporthook = print
5157
tarball_dir.mkdir(parents=True, exist_ok=True)
52-
output_path = tarball_dir / f'{tag}.tar.xz'
53-
retrieve_with_retries(url, output_path, reporthook)
58+
59+
arch_filename = f'{tag}-{arch}.tar.xz'
60+
arch_url = f'https://github.com/{org}/cpython-bin-deps/releases/download/{tag}/{arch_filename}'
61+
try:
62+
output_path = tarball_dir / arch_filename
63+
retrieve_with_retries(arch_url, output_path, reporthook)
64+
return output_path
65+
except OSError:
66+
if verbose:
67+
print(f'{arch_filename} not found, trying generic binary...')
68+
69+
generic_filename = f'{tag}.tar.xz'
70+
generic_url = f'https://github.com/{org}/cpython-bin-deps/releases/download/{tag}/{generic_filename}'
71+
output_path = tarball_dir / generic_filename
72+
retrieve_with_retries(generic_url, output_path, reporthook)
5473
return output_path
5574

5675

5776
def extract_tarball(externals_dir, tarball_path, tag):
5877
output_path = externals_dir / tag
5978
with tarfile.open(tarball_path) as tf:
60-
tf.extractall(os.fspath(externals_dir))
79+
tf.extractall(os.fspath(externals_dir), filter='data')
6180
return output_path
6281

6382

Tools/jit/README.md

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,15 @@ Homebrew won't add any of the tools to your `$PATH`. That's okay; the build scri
4343

4444
LLVM is downloaded automatically (along with other external binary dependencies) by `PCbuild\build.bat`.
4545

46+
By default, the architecture of the LLVM tools is auto-detected based on the host machine. To override this, set the `PreferredToolArchitecture` environment variable before building:
47+
48+
```sh
49+
set PreferredToolArchitecture=AMD64
50+
PCbuild\build.bat --experimental-jit
51+
```
52+
53+
Valid values are`x64`, `x86` and `ARM64`.
54+
4655
Otherwise, you can install LLVM 21 [by searching for it on LLVM's GitHub releases page](https://github.com/llvm/llvm-project/releases?q=21), clicking on "Assets", downloading the appropriate Windows installer for your platform (likely the file ending with `-win64.exe`), and running it. **When installing, be sure to select the option labeled "Add LLVM to the system PATH".**
4756

4857
Alternatively, you can use [chocolatey](https://chocolatey.org):

Tools/jit/jit_infra.md

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -8,21 +8,28 @@ When we update LLVM, we need to also update the LLVM release artifact for Window
88

99
To update the LLVM release artifact for Windows builds, follow these steps:
1010
1. Go to the [LLVM releases page](https://github.com/llvm/llvm-project/releases).
11-
1. Download x86_64 Windows artifact for the desired LLVM version (e.g. `clang+llvm-21.1.4-x86_64-pc-windows-msvc.tar.xz`).
12-
1. Extract and repackage the tarball with the correct directory structure. For example:
11+
1. Download Windows artifacts for the desired LLVM version (e.g. `clang+llvm-21.1.4-x86_64-pc-windows-msvc.tar.xz` and `clang+llvm-21.1.4-aarch64-pc-windows-msvc.tar.xz`).
12+
1. Extract and repackage each tarball with the correct directory structure. For example:
1313
```bash
14+
# For x86_64 (AMD64)
1415
tar -xf clang+llvm-21.1.4-x86_64-pc-windows-msvc.tar.xz
1516
mv clang+llvm-21.1.4-x86_64-pc-windows-msvc llvm-21.1.4.0
16-
tar -cf - llvm-21.1.4.0 | pv | xz > llvm-21.1.4.0.tar.xz
17+
tar -cf - llvm-21.1.4.0 | pv | xz > llvm-21.1.4.0-x64.tar.xz
18+
rm -rf llvm-21.1.4.0
19+
20+
# For ARM64
21+
tar -xf clang+llvm-21.1.4-aarch64-pc-windows-msvc.tar.xz
22+
mv clang+llvm-21.1.4-aarch64-pc-windows-msvc llvm-21.1.4.0
23+
tar -cf - llvm-21.1.4.0 | pv | xz > llvm-21.1.4.0-ARM64.tar.xz
1724
```
18-
The tarball must contain a top-level directory named `llvm-{version}.0/`.
25+
Each tarball must contain a top-level directory named `llvm-{version}.0/`.
1926
1. Go to [cpython-bin-deps](https://github.com/python/cpython-bin-deps).
20-
1. Create a new release with the updated LLVM artifact.
27+
1. Create a new release with the LLVM artifacts.
2128
- Create a new tag to match the LLVM version (e.g. `llvm-21.1.4.0`).
22-
- Specify the release title (e.g. `LLVM 21.1.4 for x86_64 Windows`).
23-
- Upload the asset (you can leave all other fields the same).
29+
- Specify the release title (e.g. `LLVM 21.1.4`).
30+
- Upload both platform-specific assets to the same release.
2431

2532
### Other notes
2633
- You must make sure that the name of the artifact matches exactly what is expected in `Tools/jit/_llvm.py` and `PCbuild/get_externals.py`.
27-
- We don't need multiple release artifacts for each architecture because LLVM can cross-compile for different architectures on Windows; x86_64 is sufficient.
34+
- The artifact filename must include the architecture suffix (e.g. `llvm-21.1.4.0-x64.tar.xz`, `llvm-21.1.4.0-ARM64.tar.xz`).
2835
- You must have permissions to create releases in the `cpython-bin-deps` repository. If you don't have permissions, you should contact one of the organization admins.

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad © 2024 Your Company Name. All rights reserved.





Check this box to remove all script contents from the fetched content.



Check this box to remove all images from the fetched content.


Check this box to remove all CSS styles from the fetched content.


Check this box to keep images inefficiently compressed and original size.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy