Add port(5) UPGRADE_BLOCKED for ports that cannot be upgraded at the moment.

Fix detecting new releases on github by using the json API.

Fix detecting versions older than the current version.

Use wget --spider to speed up the download check.
This commit is contained in:
Jonas 'Sortie' Termansen 2024-09-05 21:19:08 +02:00
parent 05790e2cab
commit ee0e6506a9
6 changed files with 33 additions and 17 deletions

View file

@ -1,11 +1,24 @@
#!/bin/sh
set -e
NAME=$(tix-vars -d '' "$1" NAME)
if [ -t 1 ]; then
RED='\033[91m'
YELLOW='\033[93m'
GREEN='\033[92m'
RESET='\033[m'
else
RED=''
YELLOW=''
GREEN=''
RESET=''
fi
COMPRESSION=$(tix-vars -d '' "$1" COMPRESSION)
DISTNAME_REGEX=$(tix-vars -d '' "$1" DISTNAME_REGEX)
NAME=$(tix-vars -d '' "$1" NAME)
RELEASE_SEARCH_PAGE=$(tix-vars -d '' "$1" RELEASE_SEARCH_PAGE)
RELEASE_SEARCH_REGEX=$(tix-vars -d '' "$1" RELEASE_SEARCH_REGEX)
UPGRADE_BLOCKED=$(tix-vars -d '' "$1" UPGRADE_BLOCKED)
UPSTREAM_ARCHIVE=$(tix-vars -d '' "$1" UPSTREAM_ARCHIVE)
UPSTREAM_SITE=$(tix-vars -d '' "$1" UPSTREAM_SITE)
VERSION=$(tix-vars -d '' "$1" VERSION)
@ -22,7 +35,7 @@ TAR_REGEX="(\.tar(\.(gz|bz2|xz)))"
if [ -z "$RELEASE_SEARCH_PAGE" ]; then
case "$UPSTREAM_SITE" in
https://github.com/*/releases/*)
RELEASE_SEARCH_PAGE=$(echo "$UPSTREAM_SITE" | grep -Eo '.*/releases/');;
RELEASE_SEARCH_PAGE=$(echo "$UPSTREAM_SITE" | sed -E -e 's,https://github.com/(.*)/releases/.*,https://api.github.com/repos/\1/releases,');;
*) RELEASE_SEARCH_PAGE="$UPSTREAM_SITE/";;
esac
fi
@ -54,7 +67,7 @@ instantiate() {
upgrade_version "$1" "$2" | tix-vars - "$3"
}
LATEST=$(curl -Ls "$RELEASE_SEARCH_PAGE" | grep -Eo "$RELEASE_SEARCH_REGEX" | sort -Vu | tail -1)
LATEST=$(curl --compressed -Ls "$RELEASE_SEARCH_PAGE" | grep -Eo "$RELEASE_SEARCH_REGEX" | sort -Vu | tail -1)
case "$LATEST" in
*.tar) COMPRESSION=tar;;
*.tar.gz) COMPRESSION=tar.gz;;
@ -63,25 +76,17 @@ case "$LATEST" in
esac
NEW_VERSION="$(echo "$LATEST" | sed -E "s,$RELEASE_SEARCH_REGEX,\1,")"
if [ -t 1 ]; then
RED='\033[91m'
GREEN='\033[92m'
RESET='\033[m'
else
RED=''
GREEN=''
RESET=''
fi
if [ -z "$NEW_VERSION" ]; then
printf "$RED%s$RESET\n" "$UPSTREAM_ARCHIVE failed to find available versions: $RELEASE_SEARCH_PAGE | grep -E '$RELEASE_SEARCH_REGEX'"
exit 1
fi
NEW_VERSION=$({ echo "$NEW_VERSION" && echo "$VERSION"; } | sort -Vu | tail -1)
NEW_UPSTREAM_SITE=$(instantiate "$1" "$NEW_VERSION" "UPSTREAM_SITE")
NEW_UPSTREAM_ARCHIVE=$(instantiate "$1" "$NEW_VERSION" "UPSTREAM_ARCHIVE")
if ! wget -q "$NEW_UPSTREAM_SITE/$NEW_UPSTREAM_ARCHIVE" -O /dev/null; then
if ! wget -q --spider "$NEW_UPSTREAM_SITE/$NEW_UPSTREAM_ARCHIVE"; then
printf "$RED%s$RESET\n" "$NAME failed to download: $NEW_UPSTREAM_SITE/$NEW_UPSTREAM_ARCHIVE"
exit 1
fi
@ -91,6 +96,11 @@ if [ "$VERSION" = "$NEW_VERSION" ]; then
exit
fi
if [ -n "$UPGRADE_BLOCKED" ]; then
printf "$YELLOW%s$RESET\n" "$NAME $VERSION is blocked ($UPGRADE_BLOCKED) -> $NEW_VERSION $NEW_UPSTREAM_SITE/$NEW_UPSTREAM_ARCHIVE"
exit
fi
if [ "$2" = upgrade ]; then
if [ "$(tix-vars -d false "$1" DEVELOPMENT)" = true ]; then
echo "$0: warning: Not upgrading $1 in DEVELOPMENT=true mode" >&2

View file

@ -1,6 +1,7 @@
NAME=libcairo
BUILD_LIBRARIES='libz libbz2 libpng libfreetype libfontconfig? librsvg? libexpat? libpixman libglib?'
VERSION=1.16.0 # Update blocked by meson adoption
UPGRADE_BLOCKED=meson
VERSION=1.16.0
DISTNAME=cairo-$VERSION
COMPRESSION=tar.xz
ARCHIVE=$DISTNAME.$COMPRESSION

View file

@ -3,6 +3,7 @@ BUILD_LIBRARIES='libffi libiconv libintl libpcre libz libdbus? liblzma?'
# NOTE: 2.58.0 and above do not ship with configure and instead require either
# creating it locally using autotools or meson, so for time being we are
# stuck at 2.56.4.
UPGRADE_BLOCKED=meson
VERSION_MAJOR=2
VERSION_MINOR=56
VERSION_PATCH=4

View file

@ -1,6 +1,7 @@
NAME=libpixman
BUILD_LIBRARIES='libpng?'
VERSION=0.42.2 # Update blocked by meson adoption
UPGRADE_BLOCKED=meson
VERSION=0.42.2
DISTNAME=pixman-$VERSION
COMPRESSION=tar.gz
ARCHIVE=$DISTNAME.$COMPRESSION

View file

@ -1,6 +1,7 @@
NAME=libxkbcommon
BUILD_LIBRARIES=
VERSION=0.8.4 # Update blocked by meson adoption
UPGRADE_BLOCKED=meson
VERSION=0.8.4
DISTNAME=$NAME-$VERSION
COMPRESSION=tar.xz
ARCHIVE=$DISTNAME.$COMPRESSION

View file

@ -269,6 +269,8 @@ For
Use the named port's source code instead.
.It Sy SUBDIR
Run the build commands in this subdir.
.It Sy UPGRADE_BLOCKED
A reason why upgrading to a newer version is blocked.
.It Sy UPSTREAM_ARCHIVE
The filename of the upstream release on
.Sy UPSTREAM_SITE ,