Skip to content

Commit 24500ae

Browse files
authored
fix: update packagesite download logic to support .pkg format and fallback to .tzst
1 parent 68dbc09 commit 24500ae

1 file changed

Lines changed: 34 additions & 14 deletions

File tree

lilith/lilith.sh

Lines changed: 34 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -140,31 +140,44 @@ get_abi_and_repo_url() {
140140
# Download and extract packagesite metadata
141141
#
142142
update_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

Comments
 (0)