Skip to content

Commit 76864ba

Browse files
node: Fix pnpm incompatible handling of non-lowercase / long package names
1 parent 5c73dc4 commit 76864ba

1 file changed

Lines changed: 7 additions & 1 deletion

File tree

node/flatpak_node_generator/populate_pnpm_store.py

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
import time
1212

1313
_SANITIZE_RE = re.compile(r'[\\/:*?"<>|]')
14+
_MAX_LENGTH_WITHOUT_HASH = 120
1415

1516

1617
def populate_store(manifest_path: str, tarball_dir: str, store_dir: str) -> None:
@@ -133,7 +134,12 @@ def _process_tarball(
133134
with open(url_idx_path, 'w', encoding='utf-8') as out:
134135
json.dump(index_data, out)
135136
else:
136-
url_dir_name = re.sub(r'[:/]', '+', tarball_url)
137+
url_dir_name = re.sub(r"[:/]", "+", tarball_url)
138+
if (
139+
len(url_dir_name) > _MAX_LENGTH_WITHOUT_HASH
140+
or url_dir_name != url_dir_name.lower()
141+
):
142+
url_dir_name = f"{url_dir_name[: _MAX_LENGTH_WITHOUT_HASH - 33]}_{hashlib.sha256(url_dir_name.encode()).hexdigest()[:32]}"
137143
url_idx_dir = os.path.join(store, url_dir_name)
138144
os.makedirs(url_idx_dir, exist_ok=True)
139145
url_idx_path = os.path.join(url_idx_dir, 'integrity.json')

0 commit comments

Comments
 (0)