@@ -59,67 +59,72 @@ def warn_about_arm64_compatibility(self, force: bool = False) -> None:
5959 if not force and warning_file .exists ():
6060 return
6161
62- print ("\n ⚠️ WARNING: ARM64 Architecture Detected" , file = sys .stderr )
62+ print ("\n [!] WARNING: ARM64 Architecture Detected" , file = sys .stderr )
6363 print ("=" * 50 , file = sys .stderr )
6464
65- show_remediation = False
65+ show_remediation = self . _print_platform_status ()
6666
67+ if show_remediation :
68+ self ._print_remediation_steps ()
69+
70+ print ("=" * 50 , file = sys .stderr )
71+ print (file = sys .stderr )
72+
73+ # Mark that we've shown the warning
74+ SOLC_SELECT_DIR .mkdir (parents = True , exist_ok = True )
75+ with contextlib .suppress (OSError ):
76+ warning_file .touch ()
77+
78+ def _print_platform_status (self ) -> bool :
79+ """Print platform-specific ARM64 status and return whether remediation is needed."""
6780 if self .platform .os_type == "darwin" :
68- print ("✓ Native ARM64 binaries available for versions 0.8.5-0.8.23" , file = sys .stderr )
69- print ("✓ Universal binaries available for versions 0.8.24+" , file = sys .stderr )
81+ print ("[+] Native ARM64 binaries available for versions 0.8.5-0.8.23" , file = sys .stderr )
82+ print ("[+] Universal binaries available for versions 0.8.24+" , file = sys .stderr )
7083
7184 if detect_rosetta ():
7285 print (
73- "✓ Rosetta 2 detected - will use emulation for older versions" , file = sys .stderr
74- )
75- print (" Note: Performance will be slower for emulated versions" , file = sys .stderr )
76- else :
77- print (
78- "⚠ Rosetta 2 not available - versions prior to 0.8.5 are x86_64 only and will not work" ,
86+ "[+] Rosetta 2 detected - will use emulation for older versions" ,
7987 file = sys .stderr ,
8088 )
81- show_remediation = True
89+ print (" Note: Performance will be slower for emulated versions" , file = sys .stderr )
90+ return False
91+
92+ print (
93+ "[!] Rosetta 2 not available - versions prior to 0.8.5 are x86_64 only and will not work" ,
94+ file = sys .stderr ,
95+ )
96+ return True
8297
83- elif self .platform .os_type == "linux" :
84- print ("✓ Native ARM64 binaries available for versions 0.8.31+" , file = sys .stderr )
98+ if self .platform .os_type == "linux" :
99+ print ("[+] Native ARM64 binaries available for versions 0.8.31+" , file = sys .stderr )
85100
86101 if detect_qemu ():
87102 print (
88- "✓ qemu-x86_64 detected - will use emulation for versions < 0.8.31" ,
103+ "[+] qemu-x86_64 detected - will use emulation for versions < 0.8.31" ,
89104 file = sys .stderr ,
90105 )
91106 print (" Note: Performance will be slower for emulated versions" , file = sys .stderr )
92- else :
93- print (
94- "⚠ Versions < 0.8.31 require x86_64 emulation, but qemu is not installed" ,
95- file = sys .stderr ,
96- )
97- show_remediation = True
98- else :
99- show_remediation = True
107+ return False
100108
101- if show_remediation :
102- print ("\n To use solc-select on ARM64, you can:" , file = sys .stderr )
103- print (" 1. Install software for x86_64 emulation:" , file = sys .stderr )
109+ print (
110+ "[!] Versions < 0.8.31 require x86_64 emulation, but qemu is not installed" ,
111+ file = sys .stderr ,
112+ )
113+ return True
104114
105- if self .platform .os_type == "linux" :
106- print (
107- " sudo apt-get install qemu-user-static # Debian/Ubuntu" , file = sys .stderr
108- )
109- print (" sudo dnf install qemu-user-static # Fedora" , file = sys .stderr )
110- print (" sudo pacman -S qemu-user-static # Arch" , file = sys .stderr )
111- elif self .platform .os_type == "darwin" :
112- print (
113- " Use Rosetta 2 (installed automatically on Apple Silicon)" , file = sys .stderr
114- )
115+ return True
115116
116- print (" 2. Use an x86_64 Docker container" , file = sys .stderr )
117- print (" 3. Use a cloud-based development environment" , file = sys .stderr )
117+ def _print_remediation_steps (self ) -> None :
118+ """Print remediation steps for ARM64 emulation setup."""
119+ print ("\n To use solc-select on ARM64, you can:" , file = sys .stderr )
120+ print (" 1. Install software for x86_64 emulation:" , file = sys .stderr )
118121
119- print ("=" * 50 , file = sys .stderr )
120- print (file = sys .stderr )
122+ if self .platform .os_type == "linux" :
123+ print (" sudo apt-get install qemu-user-static # Debian/Ubuntu" , file = sys .stderr )
124+ print (" sudo dnf install qemu-user-static # Fedora" , file = sys .stderr )
125+ print (" sudo pacman -S qemu-user-static # Arch" , file = sys .stderr )
126+ elif self .platform .os_type == "darwin" :
127+ print (" Use Rosetta 2 (installed automatically on Apple Silicon)" , file = sys .stderr )
121128
122- # Mark that we've shown the warning
123- SOLC_SELECT_DIR .mkdir (parents = True , exist_ok = True )
124- with contextlib .suppress (OSError ):
125- warning_file .touch ()
129+ print (" 2. Use an x86_64 Docker container" , file = sys .stderr )
130+ print (" 3. Use a cloud-based development environment" , file = sys .stderr )
0 commit comments