Anki/qt/release/build.sh
Damien Elmes 246fa75a35 Create release wheel as part of normal build
Avoids the need for a separate publish
2025-06-21 19:17:48 +07:00

71 lines
1.7 KiB
Bash
Executable file

#!/bin/bash
set -e
test -f build.sh || {
echo "run from release folder"
exit 1
}
# Get the project root (two levels up from qt/release)
PROJ_ROOT="$(cd "$(dirname "$0")/../.." && pwd)"
# Use extracted uv binary
UV="$PROJ_ROOT/out/extracted/uv/uv"
# Read version from .version file
VERSION=$(cat "$PROJ_ROOT/.version" | tr -d '[:space:]')
# Copy existing pyproject.toml to .old if it exists
if [ -f pyproject.toml ]; then
cp pyproject.toml pyproject.toml.old
fi
# Export dependencies using uv
echo "Exporting dependencies..."
rm -f pyproject.toml
DEPS=$(cd "$PROJ_ROOT" && "$UV" export --no-hashes --no-annotate --no-header --extra audio --extra qt --all-packages --no-dev --no-emit-workspace)
# Generate the pyproject.toml file
cat > pyproject.toml << EOF
[project]
name = "anki-release"
version = "$VERSION"
description = "A package to lock Anki's dependencies"
requires-python = ">=3.9"
dependencies = [
"anki==$VERSION",
"aqt==$VERSION",
EOF
# Add the exported dependencies to the file
echo "$DEPS" | while IFS= read -r line; do
if [[ -n "$line" ]]; then
echo " \"$line\"," >> pyproject.toml
fi
done
# Complete the pyproject.toml file
cat >> pyproject.toml << 'EOF'
]
[build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"
# hatch throws an error if nothing is included
[tool.hatch.build.targets.wheel]
include = ["no-such-file"]
EOF
echo "Generated pyproject.toml with version $VERSION"
# Show diff if .old file exists
if [ -f pyproject.toml.old ]; then
echo
echo "Differences from previous release version:"
diff -u --color=always pyproject.toml.old pyproject.toml || true
fi
echo "Building wheel..."
"$UV" build --wheel --out-dir "$PROJ_ROOT/out/wheels"