Skip to content

Commit 5b7bb19

Browse files
feat: arm64 support (microsoft#1022)
1 parent 6e55a83 commit 5b7bb19

File tree

1 file changed

+67
-42
lines changed

1 file changed

+67
-42
lines changed

setup.py

Lines changed: 67 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -60,61 +60,86 @@ def run(self) -> None:
6060
if self.all:
6161
# If building for all platforms
6262
platform_map = {
63-
"darwin": {
64-
"zip_name": "mac",
65-
"wheels": ["macosx_10_13_x86_64.whl", "macosx_11_0_universal2.whl"],
66-
},
67-
"linux": {"zip_name": "linux", "wheels": ["manylinux1_x86_64.whl"]},
68-
"win32": {
69-
"zip_name": "win32_x64",
70-
"wheels": ["win32.whl", "win_amd64.whl"],
71-
},
63+
"darwin": [
64+
{
65+
"zip_name": "mac",
66+
"wheels": [
67+
"macosx_10_13_x86_64.whl",
68+
"macosx_11_0_universal2.whl",
69+
],
70+
},
71+
{
72+
"zip_name": "mac-arm64",
73+
"wheels": [
74+
"macosx_11_0_arm64.whl",
75+
],
76+
},
77+
],
78+
"linux": [
79+
{"zip_name": "linux", "wheels": ["manylinux1_x86_64.whl"]},
80+
{
81+
"zip_name": "linux-arm64",
82+
"wheels": ["manylinux_2_17_aarch64.manylinux2014_aarch64.whl"],
83+
},
84+
],
85+
"win32": [
86+
{
87+
"zip_name": "win32_x64",
88+
"wheels": ["win32.whl", "win_amd64.whl"],
89+
}
90+
],
7291
}
7392
platforms = [*platform_map.values()]
7493
else:
7594
# If building for only current platform
7695
platform_map = {
77-
"darwin": {
78-
"zip_name": "mac",
79-
"wheels": ["macosx_10_13_x86_64.whl"],
80-
},
81-
"linux": {"zip_name": "linux", "wheels": ["manylinux1_x86_64.whl"]},
82-
"win32": {
83-
"zip_name": "win32_x64",
84-
"wheels": ["win_amd64.whl"],
85-
},
96+
"darwin": [
97+
{
98+
"zip_name": "mac",
99+
"wheels": ["macosx_10_13_x86_64.whl"],
100+
},
101+
],
102+
"linux": [{"zip_name": "linux", "wheels": ["manylinux1_x86_64.whl"]}],
103+
"win32": [
104+
{
105+
"zip_name": "win32_x64",
106+
"wheels": ["win_amd64.whl"],
107+
}
108+
],
86109
}
87110
platforms = [platform_map[sys.platform]]
88111
for platform in platforms:
89-
zip_file = f"playwright-{driver_version}-{platform['zip_name']}.zip"
90-
if not os.path.exists("driver/" + zip_file):
91-
url = f"https://playwright.azureedge.net/builds/driver/next/{zip_file}"
92-
print(f"Fetching {url}")
93-
# Don't replace this with urllib - Python won't have certificates to do SSL on all platforms.
94-
subprocess.check_call(["curl", url, "-o", "driver/" + zip_file])
112+
for arch in platform:
113+
zip_file = f"playwright-{driver_version}-{arch['zip_name']}.zip"
114+
if not os.path.exists("driver/" + zip_file):
115+
url = f"https://playwright.azureedge.net/builds/driver/next/{zip_file}"
116+
print(f"Fetching {url}")
117+
# Don't replace this with urllib - Python won't have certificates to do SSL on all platforms.
118+
subprocess.check_call(["curl", url, "-o", "driver/" + zip_file])
95119
base_wheel_location = glob.glob(os.path.join(self.dist_dir, "*.whl"))[0]
96120
without_platform = base_wheel_location[:-7]
97121

98122
for platform in platforms:
99-
zip_file = f"driver/playwright-{driver_version}-{platform['zip_name']}.zip"
100-
with zipfile.ZipFile(zip_file, "r") as zip:
101-
extractall(zip, f"driver/{platform['zip_name']}")
102-
if platform_map[sys.platform] in platforms:
123+
for arch in platform:
124+
zip_file = f"driver/playwright-{driver_version}-{arch['zip_name']}.zip"
103125
with zipfile.ZipFile(zip_file, "r") as zip:
104-
extractall(zip, "playwright/driver")
105-
for wheel in platform["wheels"]:
106-
wheel_location = without_platform + wheel
107-
shutil.copy(base_wheel_location, wheel_location)
108-
with zipfile.ZipFile(wheel_location, "a") as zip:
109-
driver_root = os.path.abspath(f"driver/{platform['zip_name']}")
110-
for dir_path, _, files in os.walk(driver_root):
111-
for file in files:
112-
from_path = os.path.join(dir_path, file)
113-
to_path = os.path.relpath(from_path, driver_root)
114-
zip.write(from_path, f"playwright/driver/{to_path}")
115-
zip.writestr(
116-
"playwright/driver/README.md", f"{wheel} driver package"
117-
)
126+
extractall(zip, f"driver/{arch['zip_name']}")
127+
if platform_map[sys.platform][0] in platform:
128+
with zipfile.ZipFile(zip_file, "r") as zip:
129+
extractall(zip, "playwright/driver")
130+
for wheel in arch["wheels"]:
131+
wheel_location = without_platform + wheel
132+
shutil.copy(base_wheel_location, wheel_location)
133+
with zipfile.ZipFile(wheel_location, "a") as zip:
134+
driver_root = os.path.abspath(f"driver/{arch['zip_name']}")
135+
for dir_path, _, files in os.walk(driver_root):
136+
for file in files:
137+
from_path = os.path.join(dir_path, file)
138+
to_path = os.path.relpath(from_path, driver_root)
139+
zip.write(from_path, f"playwright/driver/{to_path}")
140+
zip.writestr(
141+
"playwright/driver/README.md", f"{wheel} driver package"
142+
)
118143

119144
os.remove(base_wheel_location)
120145
if InWheel:

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

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