48 lines
1.8 KiB
Bash
Executable File
48 lines
1.8 KiB
Bash
Executable File
#!/bin/bash
|
|
# Package pattern: "rocm-llvm-" followed by any characters and ending with ".pkg.tar.zst"
|
|
PACKAGE_PATTERN='rocm-llvm-[^"'\'' >]*\.pkg\.tar\.zst'
|
|
POOL_DIR="pool/packages"
|
|
|
|
# Iterate over each line in /etc/pacman.d/mirrorlist that starts with "Server"
|
|
grep -E '^Server' /etc/pacman.d/mirrorlist | while read -r line; do
|
|
# Extract the base URL (the part after "=")
|
|
base=$(echo "$line" | sed -E 's/.*=\s*(.*)/\1/')
|
|
# Get only the protocol and domain, discarding any extra paths
|
|
root=$(echo "$base" | sed -E 's|(https?://[^/]+).*|\1|')
|
|
# Ensure that root ends with a "/"
|
|
[[ "${root: -1}" != "/" ]] && root="${root}/"
|
|
|
|
# URL for the packages directory
|
|
dir_url="${root}${POOL_DIR}/"
|
|
echo "Listing files at: $dir_url"
|
|
|
|
# Retrieve the directory listing
|
|
listing=$(curl -s "$dir_url")
|
|
if [ -z "$listing" ]; then
|
|
echo "Could not retrieve listing from $dir_url (possibly the mirror does not allow directory listing)"
|
|
echo "-----------------------------"
|
|
continue
|
|
fi
|
|
|
|
# Search the listing for a package name matching the pattern
|
|
package=$(echo "$listing" | grep -oE "$PACKAGE_PATTERN" | head -n 1)
|
|
if [ -z "$package" ]; then
|
|
echo "No package matching the pattern was found in $dir_url"
|
|
echo "-----------------------------"
|
|
continue
|
|
fi
|
|
|
|
# Build the complete package URL
|
|
full_url="${dir_url}${package}"
|
|
echo "Testing: $full_url"
|
|
|
|
# Download the complete package (discarding the data) and measure the download speed in bytes/s
|
|
speed_bytes=$(curl -o /dev/null -s -w "%{speed_download}" "$full_url")
|
|
|
|
# Convert the speed to MB/s (1 MB = 1048576 bytes)
|
|
speed_MB=$(echo "scale=2; $speed_bytes/1048576" | bc)
|
|
echo "Download speed: $speed_MB MB/s"
|
|
echo "-----------------------------"
|
|
done
|
|
|