mirror of
https://github.com/AvengeMedia/DankMaterialShell.git
synced 2026-01-24 13:32:50 -05:00
124 lines
3.8 KiB
Bash
Executable File
124 lines
3.8 KiB
Bash
Executable File
#!/bin/bash
|
|
set -euo pipefail
|
|
|
|
# Build SRPM locally with correct tarball and upload to Copr
|
|
# Usage: ./copr-upload.sh [PACKAGE] [VERSION] [RELEASE]
|
|
# Examples:
|
|
# ./copr-upload.sh dms 1.0.3 1
|
|
# ./copr-upload.sh dms-greeter 1.0.3 1
|
|
|
|
PACKAGE="${1:-dms}"
|
|
VERSION="${2:-}"
|
|
RELEASE="${3:-1}"
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
REPO_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)"
|
|
|
|
# Determine Copr project based on package
|
|
if [ "$PACKAGE" = "dms" ]; then
|
|
COPR_PROJECT="avengemedia/dms"
|
|
elif [ "$PACKAGE" = "dms-greeter" ]; then
|
|
COPR_PROJECT="avengemedia/danklinux"
|
|
else
|
|
echo "❌ Unknown package: $PACKAGE"
|
|
echo "Supported packages: dms, dms-greeter"
|
|
exit 1
|
|
fi
|
|
|
|
# Get version from latest release if not provided
|
|
if [ -z "$VERSION" ]; then
|
|
echo "📦 Determining latest version..."
|
|
VERSION=$(curl -s https://api.github.com/repos/AvengeMedia/DankMaterialShell/releases/latest | jq -r '.tag_name' | sed 's/^v//')
|
|
if [ -z "$VERSION" ] || [ "$VERSION" = "null" ]; then
|
|
echo "❌ Failed to determine version. Please specify manually."
|
|
exit 1
|
|
fi
|
|
echo "✅ Using latest version: $VERSION"
|
|
fi
|
|
|
|
echo "Building ${PACKAGE} v${VERSION}-${RELEASE} SRPM for Copr..."
|
|
|
|
# Setup build directories
|
|
mkdir -p ~/rpmbuild/{BUILD,BUILDROOT,RPMS,SOURCES,SPECS,SRPMS}
|
|
cd ~/rpmbuild/SOURCES
|
|
|
|
# Download source tarball from GitHub releases
|
|
echo "📦 Downloading source tarball for v${VERSION}..."
|
|
if [ ! -f ~/rpmbuild/SOURCES/dms-qml.tar.gz ]; then
|
|
wget -O ~/rpmbuild/SOURCES/dms-qml.tar.gz "https://github.com/AvengeMedia/DankMaterialShell/releases/download/v${VERSION}/dms-qml.tar.gz" || {
|
|
echo "❌ Failed to download dms-qml.tar.gz for v${VERSION}"
|
|
exit 1
|
|
}
|
|
echo "✅ Source tarball downloaded"
|
|
else
|
|
echo "✅ Source tarball already exists"
|
|
fi
|
|
|
|
# Copy and prepare spec file
|
|
echo "📝 Preparing spec file..."
|
|
SPEC_FILE="$REPO_ROOT/distro/fedora/${PACKAGE}.spec"
|
|
if [ ! -f "$SPEC_FILE" ]; then
|
|
echo "❌ Spec file not found: $SPEC_FILE"
|
|
exit 1
|
|
fi
|
|
|
|
cp "$SPEC_FILE" ~/rpmbuild/SPECS/"${PACKAGE}".spec
|
|
|
|
# Replace placeholders in spec file
|
|
CHANGELOG_DATE="$(date '+%a %b %d %Y')"
|
|
sed -i "s/VERSION_PLACEHOLDER/${VERSION}/g" ~/rpmbuild/SPECS/"${PACKAGE}".spec
|
|
sed -i "s/RELEASE_PLACEHOLDER/${RELEASE}/g" ~/rpmbuild/SPECS/"${PACKAGE}".spec
|
|
sed -i "s/CHANGELOG_DATE_PLACEHOLDER/${CHANGELOG_DATE}/g" ~/rpmbuild/SPECS/"${PACKAGE}".spec
|
|
|
|
echo "✅ Spec file prepared for ${PACKAGE} v${VERSION}-${RELEASE}"
|
|
|
|
# Build SRPM
|
|
echo "🔨 Building SRPM..."
|
|
cd ~/rpmbuild/SPECS
|
|
rpmbuild -bs "${PACKAGE}".spec
|
|
|
|
SRPM=$(ls ~/rpmbuild/SRPMS/"${PACKAGE}"-"${VERSION}"-*.src.rpm | tail -n 1)
|
|
if [ ! -f "$SRPM" ]; then
|
|
echo "❌ Error: SRPM not found!"
|
|
echo "Expected pattern: ${PACKAGE}-${VERSION}-*.src.rpm"
|
|
ls -la ~/rpmbuild/SRPMS/ || true
|
|
exit 1
|
|
fi
|
|
|
|
echo "✅ SRPM built successfully: $SRPM"
|
|
|
|
# Check if copr-cli is installed
|
|
if ! command -v copr-cli &>/dev/null; then
|
|
echo ""
|
|
echo "⚠️ copr-cli is not installed. Install it with:"
|
|
echo " pip install copr-cli"
|
|
echo ""
|
|
echo "Then configure it with your Copr API token in ~/.config/copr"
|
|
echo ""
|
|
echo "SRPM is ready at: $SRPM"
|
|
echo "Upload manually with: copr-cli build $COPR_PROJECT $SRPM"
|
|
exit 0
|
|
fi
|
|
|
|
# Upload to Copr
|
|
echo ""
|
|
echo "🚀 Uploading to Copr..."
|
|
if copr-cli build "$COPR_PROJECT" "$SRPM" --nowait; then
|
|
echo ""
|
|
echo "✅ Build submitted successfully!"
|
|
echo "📊 Check status at:"
|
|
echo " https://copr.fedorainfracloud.org/coprs/${COPR_PROJECT}/builds/"
|
|
echo ""
|
|
echo "📦 SRPM location: $SRPM"
|
|
else
|
|
echo ""
|
|
echo "❌ Copr upload failed. You can manually upload the SRPM:"
|
|
echo " copr-cli build $COPR_PROJECT $SRPM"
|
|
echo ""
|
|
echo "Or upload via web interface:"
|
|
echo " https://copr.fedorainfracloud.org/coprs/${COPR_PROJECT}/builds/"
|
|
echo ""
|
|
echo "SRPM location: $SRPM"
|
|
exit 1
|
|
fi
|