72d6393910
It looks like there was a recent change that breaks routing to
download directories without a trailing slash.
For example:
> curl -s https://dl.winehq.org/wine/source/10.x
<Error><Code>NoSuchKey</Code><Message>The specified key does not exist.</Message><Key>wine/source/10.x</Key><RequestId>AKNHP1J5C1T3RPE7</RequestId><HostId>aRh+/1HwSjshv35lm1saNkVC46nJtYFQmc6a2KxO5ZoKAuOVy4qgf6BE5aNz/UCZ/wa8UxIGlKmnRFFF6NSOQpXRoMttaaHhhsiczYeNfRc=</HostId></Error>
> curl -s https://dl.winehq.org/wine/source/10.x/
<!doctype html>
<html lang="en">
<head>
<title>WineHQ Downloads: /wine/source/10.x/</title>
<meta charset="utf-8">
...
50 lines
1.5 KiB
Bash
50 lines
1.5 KiB
Bash
wine_url_base=https://dl.winehq.org/wine
|
|
|
|
sed_exprs=()
|
|
|
|
get_source_attr() {
|
|
nix-instantiate --eval --json -E "(let pkgs = import ./. {}; in pkgs.callPackage $sources_file { inherit pkgs; }).$1" | jq -r
|
|
}
|
|
|
|
set_source_attr() {
|
|
path="$1"
|
|
name="$2"
|
|
value="$3"
|
|
line=$(nix-instantiate --eval -E "(builtins.unsafeGetAttrPos \"$name\" (let pkgs = import ./. {}; in pkgs.callPackage $sources_file { inherit pkgs; }).$path).line")
|
|
sed_exprs+=(-e "${line}s@[^ ].*\$@$name = $value;@")
|
|
}
|
|
|
|
set_version_and_hash() {
|
|
set_source_attr "$1" version "\"$2\""
|
|
set_source_attr "$1" hash "\"$(to_sri "$3")\""
|
|
}
|
|
|
|
get_latest_wine_version() {
|
|
list-directory-versions --pname=wine --url="$wine_url_base/source/$1/" | grep -v 'diff\|rc\|tar' | sort --reverse --version-sort -u | head -n 1
|
|
}
|
|
|
|
get_latest_lib_version() {
|
|
curl -s "$wine_url_base/$1/" | grep -o 'href="[0-9.]*/"' | sed 's_^href="\(.*\)/"_\1_' | sort --reverse --version-sort -u | head -n 1
|
|
}
|
|
|
|
to_sri() {
|
|
nix --extra-experimental-features nix-command hash to-sri --type sha256 "$1"
|
|
}
|
|
|
|
autobump() {
|
|
attr="$1"
|
|
latest="$2"
|
|
fetcher="${3:-nix-prefetch-url}"
|
|
more="${4:-}"
|
|
version=$(get_source_attr "$attr.version")
|
|
if [[ "$version" != "$latest" ]]; then
|
|
url=$(get_source_attr "$attr.url")
|
|
set_version_and_hash "$attr" "$latest" "$($fetcher "${url//$version/$latest}")"
|
|
[[ -z "$more" ]] || $more "$version" "$latest"
|
|
fi
|
|
}
|
|
|
|
do_update() {
|
|
[[ "${#sed_exprs[@]}" -eq 0 ]] || sed -i "${sed_exprs[@]}" "$sources_file"
|
|
}
|