Skip to content

Commit 7839058

Browse files
committed
feat: Add checksum asset name generation for prebuilt binaries in cppllvm_build.py, ensuring integrity verification during downloads. Update download logic to utilize the new checksum format across ctidy, cformat, and tests.
1 parent ffd13cc commit 7839058

4 files changed

Lines changed: 46 additions & 19 deletions

File tree

cppllvm_build.py

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -116,6 +116,11 @@ def asset_name(config: PackageBuildConfig, stem: str) -> str:
116116
return f"{stem}-{llvm_major_version(config)}_{platform_name}{suffix}"
117117

118118

119+
def checksum_asset_name(config: PackageBuildConfig, stem: str) -> str:
120+
platform_name, _ = current_platform(config)
121+
return f"{stem}-{llvm_major_version(config)}_{platform_name}.sha512sum"
122+
123+
119124
def cached_download(url: str, destination: Path, *, package_name: str) -> Path:
120125
if destination.exists() and destination.stat().st_size > 0:
121126
return destination
@@ -151,19 +156,20 @@ def sha512(path: Path) -> str:
151156
def download_prebuilt_asset(config: PackageBuildConfig, stem: str) -> Path:
152157
release_tag = prebuilt_release_tag(config)
153158
asset = asset_name(config, stem)
159+
checksum_asset = checksum_asset_name(config, stem)
154160
asset_path = download_root(config) / release_tag / asset
155161
base_url = (
156162
"https://github.com/muttleyxd/clang-tools-static-binaries/releases/download/"
157163
f"{release_tag}/{asset}"
158164
)
159-
hash_path = asset_path.with_name(f"{asset}.sha512sum")
165+
hash_path = asset_path.with_name(checksum_asset)
166+
checksum_url = (
167+
"https://github.com/muttleyxd/clang-tools-static-binaries/releases/download/"
168+
f"{release_tag}/{checksum_asset}"
169+
)
160170

161171
cached_download(base_url, asset_path, package_name=config.package_name)
162-
cached_download(
163-
f"{base_url}.sha512sum",
164-
hash_path,
165-
package_name=config.package_name,
166-
)
172+
cached_download(checksum_url, hash_path, package_name=config.package_name)
167173

168174
expected = read_expected_sha512(hash_path)
169175
actual = sha512(asset_path)

packages/cformat/cppllvm_build.py

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -116,6 +116,11 @@ def asset_name(config: PackageBuildConfig, stem: str) -> str:
116116
return f"{stem}-{llvm_major_version(config)}_{platform_name}{suffix}"
117117

118118

119+
def checksum_asset_name(config: PackageBuildConfig, stem: str) -> str:
120+
platform_name, _ = current_platform(config)
121+
return f"{stem}-{llvm_major_version(config)}_{platform_name}.sha512sum"
122+
123+
119124
def cached_download(url: str, destination: Path, *, package_name: str) -> Path:
120125
if destination.exists() and destination.stat().st_size > 0:
121126
return destination
@@ -151,19 +156,20 @@ def sha512(path: Path) -> str:
151156
def download_prebuilt_asset(config: PackageBuildConfig, stem: str) -> Path:
152157
release_tag = prebuilt_release_tag(config)
153158
asset = asset_name(config, stem)
159+
checksum_asset = checksum_asset_name(config, stem)
154160
asset_path = download_root(config) / release_tag / asset
155161
base_url = (
156162
"https://github.com/muttleyxd/clang-tools-static-binaries/releases/download/"
157163
f"{release_tag}/{asset}"
158164
)
159-
hash_path = asset_path.with_name(f"{asset}.sha512sum")
165+
hash_path = asset_path.with_name(checksum_asset)
166+
checksum_url = (
167+
"https://github.com/muttleyxd/clang-tools-static-binaries/releases/download/"
168+
f"{release_tag}/{checksum_asset}"
169+
)
160170

161171
cached_download(base_url, asset_path, package_name=config.package_name)
162-
cached_download(
163-
f"{base_url}.sha512sum",
164-
hash_path,
165-
package_name=config.package_name,
166-
)
172+
cached_download(checksum_url, hash_path, package_name=config.package_name)
167173

168174
expected = read_expected_sha512(hash_path)
169175
actual = sha512(asset_path)

packages/ctidy/cppllvm_build.py

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -116,6 +116,11 @@ def asset_name(config: PackageBuildConfig, stem: str) -> str:
116116
return f"{stem}-{llvm_major_version(config)}_{platform_name}{suffix}"
117117

118118

119+
def checksum_asset_name(config: PackageBuildConfig, stem: str) -> str:
120+
platform_name, _ = current_platform(config)
121+
return f"{stem}-{llvm_major_version(config)}_{platform_name}.sha512sum"
122+
123+
119124
def cached_download(url: str, destination: Path, *, package_name: str) -> Path:
120125
if destination.exists() and destination.stat().st_size > 0:
121126
return destination
@@ -151,19 +156,20 @@ def sha512(path: Path) -> str:
151156
def download_prebuilt_asset(config: PackageBuildConfig, stem: str) -> Path:
152157
release_tag = prebuilt_release_tag(config)
153158
asset = asset_name(config, stem)
159+
checksum_asset = checksum_asset_name(config, stem)
154160
asset_path = download_root(config) / release_tag / asset
155161
base_url = (
156162
"https://github.com/muttleyxd/clang-tools-static-binaries/releases/download/"
157163
f"{release_tag}/{asset}"
158164
)
159-
hash_path = asset_path.with_name(f"{asset}.sha512sum")
165+
hash_path = asset_path.with_name(checksum_asset)
166+
checksum_url = (
167+
"https://github.com/muttleyxd/clang-tools-static-binaries/releases/download/"
168+
f"{release_tag}/{checksum_asset}"
169+
)
160170

161171
cached_download(base_url, asset_path, package_name=config.package_name)
162-
cached_download(
163-
f"{base_url}.sha512sum",
164-
hash_path,
165-
package_name=config.package_name,
166-
)
172+
cached_download(checksum_url, hash_path, package_name=config.package_name)
167173

168174
expected = read_expected_sha512(hash_path)
169175
actual = sha512(asset_path)

tests/test_cppllvm_build.py

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,12 @@
88

99
from setuptools.errors import SetupError
1010

11-
from cppllvm_build import PackageBuildConfig, asset_name, current_platform
11+
from cppllvm_build import (
12+
PackageBuildConfig,
13+
asset_name,
14+
checksum_asset_name,
15+
current_platform,
16+
)
1217

1318

1419
ROOT = Path(__file__).resolve().parents[1]
@@ -64,6 +69,10 @@ def test_cformat_asset_name_uses_package_version(self, *_args: object) -> None:
6469
asset_name(CFORMAT_CONFIG, "clang-format"),
6570
"clang-format-20_windows-amd64.exe",
6671
)
72+
self.assertEqual(
73+
checksum_asset_name(CFORMAT_CONFIG, "clang-format"),
74+
"clang-format-20_windows-amd64.sha512sum",
75+
)
6776

6877
@patch("cppllvm_build.machine", return_value="arm64")
6978
@patch("cppllvm_build.system", return_value="Linux")

0 commit comments

Comments
 (0)