diff --git a/pythons/test/update.sh b/pythons/test/update.sh index 08fe0df..ed7df4c 100755 --- a/pythons/test/update.sh +++ b/pythons/test/update.sh @@ -10,15 +10,16 @@ fail() { } write_meta() { - cat > binaries/3.14.0-ubuntu-24.04-x86_64.meta < "binaries/$name.meta" < "$tmpdir/binaries/3.14.0-ubuntu-24.04-x86_64.tar.gz" +printf archive-data > "$tmpdir/binaries/3.14.0-ubuntu-24.04-x86_64.tar.xz" printf definition > "$tmpdir/binaries/3.14.0-ubuntu-24.04-x86_64" +gzip_name=3.13.0-ubuntu-24.04-x86_64 +printf gzip-archive-data > "$tmpdir/binaries/$gzip_name.tar.gz" +printf definition > "$tmpdir/binaries/$gzip_name" cd "$tmpdir" -write_meta 3.14.0-ubuntu-24.04-x86_64.tar.gz +write_meta 3.14.0-ubuntu-24.04-x86_64.tar.xz +write_meta "$gzip_name.tar.gz" "$gzip_name" bash ./update.sh >/dev/null 2>&1 || fail "update failed" sha=8a6111c3ca752ed6d5f8e8a6daa3ba4b8c3b0bf55f00a87ac2b285024ef87e5f -[ "binaries/3.14.0-ubuntu-24.04-x86_64.tar.gz" -ef "$sha" ] || +[ "binaries/3.14.0-ubuntu-24.04-x86_64.tar.xz" -ef "$sha" ] || fail "checksum path is not a hardlink to the archive" -entry='
  • 3.14.0-ubuntu-24.04-x86_64.tar.gz (definition)
  • ' +entry='
  • 3.14.0-ubuntu-24.04-x86_64.tar.xz (definition)
  • ' grep -Fqx "$entry" index.html || fail "prebuilt archive is missing from index.html" +gzip_sha=c809857f5fa564e1a2fdb3618161114bfb9a9c624ade6b580f6d79df0adfcc26 +[ "binaries/$gzip_name.tar.gz" -ef "$gzip_sha" ] || + fail "gzip checksum path is not a hardlink to the archive" + +gzip_entry="
  • $gzip_name.tar.gz (definition)
  • " +grep -Fqx "$gzip_entry" index.html || fail "gzip prebuilt archive is missing from index.html" + cp index.html index.before bash ./update.sh >/dev/null 2>&1 || fail "second update failed" cmp -s index.before index.html || fail "second update changed index.html" [ "$(grep -Fxc "$entry" index.html)" -eq 1 ] || fail "prebuilt archive is listed more than once" +[ "$(grep -Fxc "$gzip_entry" index.html)" -eq 1 ] || fail "gzip prebuilt archive is listed more than once" bad_name=$'bad\nname' printf 'archive=bad\narchive=name.tar.gz\n' > "binaries/$bad_name.meta" @@ -83,14 +96,14 @@ if bash ./update.sh >/dev/null 2>&1; then fail "update accepted an archive outside binaries" fi -write_meta 3.14.0-ubuntu-24.04-x86_64.tar.gz +write_meta 3.14.0-ubuntu-24.04-x86_64.tar.xz rm binaries/3.14.0-ubuntu-24.04-x86_64 if bash ./update.sh >/dev/null 2>&1; then fail "update accepted a missing definition" fi printf definition > binaries/3.14.0-ubuntu-24.04-x86_64 -rm binaries/3.14.0-ubuntu-24.04-x86_64.tar.gz +rm binaries/3.14.0-ubuntu-24.04-x86_64.tar.xz if bash ./update.sh >/dev/null 2>&1; then fail "update accepted a missing archive" fi diff --git a/pythons/update.sh b/pythons/update.sh index bfc49e3..a367003 100755 --- a/pythons/update.sh +++ b/pythons/update.sh @@ -67,10 +67,13 @@ for meta in binaries/*.meta; do exit 1 ;; esac - if [ "$archive" != "$name.tar.gz" ]; then + case "$archive" in + "$name.tar.gz" | "$name.tar.xz") ;; + *) echo "Invalid archive in $meta" >&2 exit 1 - fi + ;; + esac if [ ! -f "binaries/$archive" ] || [ ! -f "binaries/$name" ]; then echo "Missing archive or definition for $name" >&2 exit 1