Skip to content

Commit 2ca8afb

Browse files
node: Fix pnpm incompatible handling of long tarball package dir names
1 parent 5c73dc4 commit 2ca8afb

1 file changed

Lines changed: 4 additions & 1 deletion

File tree

node/flatpak_node_generator/populate_pnpm_store.py

Lines changed: 4 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,9 @@ 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 len(url_dir_name) > _MAX_LENGTH_WITHOUT_HASH:
139+
url_dir_name = f"{url_dir_name[: _MAX_LENGTH_WITHOUT_HASH - 33]}_{hashlib.sha256(url_dir_name.encode()).hexdigest()[:32]}"
137140
url_idx_dir = os.path.join(store, url_dir_name)
138141
os.makedirs(url_idx_dir, exist_ok=True)
139142
url_idx_path = os.path.join(url_idx_dir, 'integrity.json')

0 commit comments

Comments
 (0)