@@ -140,31 +140,44 @@ get_abi_and_repo_url() {
140140# Download and extract packagesite metadata
141141#
142142update_packagesite () {
143- local packagesite_url=" ${REPO_URL} /../packagesite.tzst"
143+ local packagesite_url=" ${REPO_URL} /../packagesite.pkg"
144+ local packagesite_file=" $CACHE_DIR /packagesite.pkg"
144145
145146 # Only print download messages once per session
146147 if [ $METADATA_UPDATED -eq 0 ]; then
147148 print_info " Downloading package metadata from: $packagesite_url "
148149 fi
149150
150- if ! fetch -o " $PACKAGESITE_TZST " " $packagesite_url " 2> /dev/null; then
151- print_error " Failed to download packagesite.tzst"
152- return 1
151+ if ! fetch -o " $packagesite_file " " $packagesite_url " 2> /dev/null; then
152+ if [ $METADATA_UPDATED -eq 0 ]; then
153+ print_info " packagesite.pkg not found, trying old format (packagesite.tzst)..."
154+ fi
155+
156+ packagesite_url=" ${REPO_URL} /../packagesite.tzst"
157+
158+ if ! fetch -o " $PACKAGESITE_TZST " " $packagesite_url " 2> /dev/null; then
159+ print_error " Failed to download packagesite (tried both .pkg and .tzst formats)"
160+ return 1
161+ fi
162+
163+ packagesite_file=" $PACKAGESITE_TZST "
153164 fi
154165
155166 # Only print extraction message once per session
156167 if [ $METADATA_UPDATED -eq 0 ]; then
157168 print_info " Extracting package metadata..."
158169 fi
159170
160- # Extract the tar archive compressed with zstd
161- # First decompress with zstd, then extract with tar
162171 local temp_tar=" $CACHE_DIR /packagesite.tar"
163172
164- if command -v " zstd" > /dev/null 2>&1 ; then
165- # Decompress zstd to tar
166- if ! zstd -d " $PACKAGESITE_TZST " -o " $temp_tar " 2> /dev/null; then
167- print_error " Failed to decompress packagesite.tzst with zstd"
173+ if file " $packagesite_file " 2> /dev/null | grep -q " Zstandard" ; then
174+ if command -v " zstd" > /dev/null 2>&1 ; then
175+ if ! zstd -d " $packagesite_file " -o " $temp_tar " 2> /dev/null; then
176+ print_error " Failed to decompress packagesite metadata with zstd"
177+ return 1
178+ fi
179+ else
180+ print_error " zstd decompression tool not available"
168181 return 1
169182 fi
170183
@@ -178,8 +191,10 @@ update_packagesite() {
178191 # Clean up temporary tar file
179192 rm -f " $temp_tar "
180193 else
181- print_error " zstd decompression tool not available"
182- return 1
194+ if ! tar -xf " $packagesite_file " -C " $CACHE_DIR " 2> /dev/null; then
195+ print_error " Failed to extract packagesite metadata"
196+ return 1
197+ fi
183198 fi
184199
185200 if [ ! -f " $PACKAGESITE_FILE " ]; then
@@ -437,13 +452,18 @@ install_package_file() {
437452 local package_filename
438453 package_filename=$( basename " $package_path " )
439454
440- local package_url=" ${REPO_URL} /${package_filename} "
455+ # Build URL using the full package path from metadata
456+ local repo_base_url=" ${REPO_URL%/ All} "
457+ # URL-encode the tilde character (~) which may appear in package filenames
458+ local encoded_path
459+ encoded_path=$( echo " $package_path " | sed ' s/~/%7E/g' )
460+ local package_url=" ${repo_base_url} /${encoded_path} "
441461 local temp_package=" $TEMP_DIR /${package_filename} "
442462
443463 print_info " Downloading: $package_name ($package_filename )"
444464
445465 if ! fetch -o " $temp_package " " $package_url " 2> /dev/null; then
446- print_error " Failed to download: $package_filename "
466+ print_error " Failed to download: $package_filename from $package_url "
447467 return 1
448468 fi
449469
0 commit comments