diff --git a/distro/scripts/copr-upload.sh b/distro/scripts/copr-upload.sh new file mode 100755 index 00000000..b973d17c --- /dev/null +++ b/distro/scripts/copr-upload.sh @@ -0,0 +1,228 @@ +#!/bin/bash +set -euo pipefail + +# Build SRPM locally with correct tarball and upload to Copr +# Usage: ./create-upload-copr.sh VERSION [RELEASE] +# Example: ./create-upload-copr.sh 1.0.0 4 + +VERSION="${1:-1.0.0}" +RELEASE="${2:-1}" +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +REPO_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)" + +echo "Building DMS v${VERSION}-${RELEASE} SRPM for Copr..." + +# Setup build directories +mkdir -p ~/rpmbuild/{BUILD,BUILDROOT,RPMS,SOURCES,SPECS,SRPMS} +cd ~/rpmbuild/SOURCES + +# Create the corrected QML tarball locally +echo "Creating QML tarball with assets..." +TEMP_DIR=$(mktemp -d) +cd "$REPO_ROOT" + +# Copy quickshell contents to temp +cp -r quickshell/* "$TEMP_DIR/" + +# Copy root LICENSE and CONTRIBUTING.md +cp LICENSE CONTRIBUTING.md "$TEMP_DIR/" + +# Copy root assets directory (this is what was missing!) +cp -r assets "$TEMP_DIR/" + +# Create tarball +cd "$TEMP_DIR" +tar --exclude='.git' \ + --exclude='.github' \ + --exclude='*.tar.gz' \ + -czf ~/rpmbuild/SOURCES/dms-qml.tar.gz . + +cd ~/rpmbuild/SOURCES +echo "Created dms-qml.tar.gz with md5sum: $(md5sum dms-qml.tar.gz | awk '{print $1}')" +rm -rf "$TEMP_DIR" + +# Generate spec file +echo "Generating spec file..." +CHANGELOG_DATE="$(date '+%a %b %d %Y')" + +cat > ~/rpmbuild/SPECS/dms.spec <<'SPECEOF' +# Spec for DMS stable releases - Built locally + +%global debug_package %{nil} +%global version VERSION_PLACEHOLDER +%global pkg_summary DankMaterialShell - Material 3 inspired shell for Wayland compositors + +Name: dms +Version: %{version} +Release: RELEASE_PLACEHOLDER%{?dist} +Summary: %{pkg_summary} + +License: MIT +URL: https://github.com/AvengeMedia/DankMaterialShell + +Source0: dms-qml.tar.gz + +BuildRequires: gzip +BuildRequires: wget +BuildRequires: systemd-rpm-macros + +Requires: (quickshell or quickshell-git) +Requires: accountsservice +Requires: dms-cli = %{version}-%{release} +Requires: dgop + +Recommends: cava +Recommends: cliphist +Recommends: danksearch +Recommends: matugen +Recommends: wl-clipboard +Recommends: NetworkManager +Recommends: qt6-qtmultimedia +Suggests: qt6ct + +%description +DankMaterialShell (DMS) is a modern Wayland desktop shell built with Quickshell +and optimized for the niri and hyprland compositors. Features notifications, +app launcher, wallpaper customization, and fully customizable with plugins. + +Includes auto-theming for GTK/Qt apps with matugen, 20+ customizable widgets, +process monitoring, notification center, clipboard history, dock, control center, +lock screen, and comprehensive plugin system. + +%package -n dms-cli +Summary: DankMaterialShell CLI tool +License: MIT +URL: https://github.com/AvengeMedia/DankMaterialShell + +%description -n dms-cli +Command-line interface for DankMaterialShell configuration and management. +Provides native DBus bindings, NetworkManager integration, and system utilities. + +%prep +%setup -q -c -n dms-qml + +# Download architecture-specific binaries during build +case "%{_arch}" in + x86_64) + ARCH_SUFFIX="amd64" + ;; + aarch64) + ARCH_SUFFIX="arm64" + ;; + *) + echo "Unsupported architecture: %{_arch}" + exit 1 + ;; +esac + +wget -O %{_builddir}/dms-cli.gz "https://github.com/AvengeMedia/DankMaterialShell/releases/download/v%{version}/dms-distropkg-${ARCH_SUFFIX}.gz" || { + echo "Failed to download dms-cli for architecture %{_arch}" + exit 1 +} +gunzip -c %{_builddir}/dms-cli.gz > %{_builddir}/dms-cli +chmod +x %{_builddir}/dms-cli + +%build + +%install +install -Dm755 %{_builddir}/dms-cli %{buildroot}%{_bindir}/dms + +install -d %{buildroot}%{_datadir}/bash-completion/completions +install -d %{buildroot}%{_datadir}/zsh/site-functions +install -d %{buildroot}%{_datadir}/fish/vendor_completions.d +%{_builddir}/dms-cli completion bash > %{buildroot}%{_datadir}/bash-completion/completions/dms || : +%{_builddir}/dms-cli completion zsh > %{buildroot}%{_datadir}/zsh/site-functions/_dms || : +%{_builddir}/dms-cli completion fish > %{buildroot}%{_datadir}/fish/vendor_completions.d/dms.fish || : + +install -Dm644 assets/systemd/dms.service %{buildroot}%{_userunitdir}/dms.service + +install -Dm644 assets/dms-open.desktop %{buildroot}%{_datadir}/applications/dms-open.desktop +install -Dm644 assets/danklogo.svg %{buildroot}%{_datadir}/icons/hicolor/scalable/apps/danklogo.svg + +install -dm755 %{buildroot}%{_datadir}/quickshell/dms +cp -r %{_builddir}/dms-qml/* %{buildroot}%{_datadir}/quickshell/dms/ + +rm -rf %{buildroot}%{_datadir}/quickshell/dms/.git* +rm -f %{buildroot}%{_datadir}/quickshell/dms/.gitignore +rm -rf %{buildroot}%{_datadir}/quickshell/dms/.github +rm -rf %{buildroot}%{_datadir}/quickshell/dms/distro + +echo "%{version}" > %{buildroot}%{_datadir}/quickshell/dms/VERSION + +%posttrans +if [ -d "%{_sysconfdir}/xdg/quickshell/dms" ]; then + rmdir "%{_sysconfdir}/xdg/quickshell/dms" 2>/dev/null || true + rmdir "%{_sysconfdir}/xdg/quickshell" 2>/dev/null || true + rmdir "%{_sysconfdir}/xdg" 2>/dev/null || true +fi +# Signal running DMS instances to reload +pkill -USR1 -x dms >/dev/null 2>&1 || : + +%files +%license LICENSE +%doc README.md CONTRIBUTING.md +%{_datadir}/quickshell/dms/ +%{_userunitdir}/dms.service +%{_datadir}/applications/dms-open.desktop +%{_datadir}/icons/hicolor/scalable/apps/danklogo.svg + +%files -n dms-cli +%{_bindir}/dms +%{_datadir}/bash-completion/completions/dms +%{_datadir}/zsh/site-functions/_dms +%{_datadir}/fish/vendor_completions.d/dms.fish + +%changelog +* CHANGELOG_DATE_PLACEHOLDER AvengeMedia - VERSION_PLACEHOLDER-1 +- Stable release VERSION_PLACEHOLDER +- Built locally with corrected tarball +SPECEOF + +sed -i "s/VERSION_PLACEHOLDER/${VERSION}/g" ~/rpmbuild/SPECS/dms.spec +sed -i "s/RELEASE_PLACEHOLDER/${RELEASE}/g" ~/rpmbuild/SPECS/dms.spec +sed -i "s/CHANGELOG_DATE_PLACEHOLDER/${CHANGELOG_DATE}/g" ~/rpmbuild/SPECS/dms.spec + +# Build SRPM +echo "Building SRPM..." +cd ~/rpmbuild/SPECS +rpmbuild -bs dms.spec + +SRPM=$(ls ~/rpmbuild/SRPMS/dms-${VERSION}-*.src.rpm | tail -n 1) +if [ ! -f "$SRPM" ]; then + echo "Error: SRPM not found!" + 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 avengemedia/dms $SRPM" + exit 0 +fi + +# Upload to Copr +echo "" +echo "Uploading to Copr..." +if copr-cli build avengemedia/dms "$SRPM" --nowait; then + echo "" + echo "Build submitted successfully! Check status at:" + echo "https://copr.fedorainfracloud.org/coprs/avengemedia/dms/builds/" +else + echo "" + echo "Copr upload failed. You can manually upload the SRPM:" + echo " copr-cli build avengemedia/dms $SRPM" + echo "" + echo "Or upload via web interface:" + echo " https://copr.fedorainfracloud.org/coprs/avengemedia/dms/builds/" + echo "" + echo "SRPM location: $SRPM" + exit 1 +fi diff --git a/distro/scripts/obs-upload.sh b/distro/scripts/obs-upload.sh index a84029a9..00a09180 100755 --- a/distro/scripts/obs-upload.sh +++ b/distro/scripts/obs-upload.sh @@ -893,6 +893,8 @@ find . -maxdepth 1 -type f \( -name "*.dsc" -o -name "*.spec" \) -exec grep -l " rm -f "$conflicted_file" done +cd "$WORK_DIR" + echo "==> Staging changes" echo "Files to upload:" if [[ "$UPLOAD_DEBIAN" == true ]] && [[ "$UPLOAD_OPENSUSE" == true ]]; then diff --git a/distro/ubuntu/dms/debian/rules b/distro/ubuntu/dms/debian/rules index 0ed31766..d785c9f8 100755 --- a/distro/ubuntu/dms/debian/rules +++ b/distro/ubuntu/dms/debian/rules @@ -39,15 +39,7 @@ override_dh_auto_install: # Install binary install -Dm755 dms debian/dms/usr/bin/dms - # Install QML files from source tarball - mkdir -p debian/dms/usr/share/quickshell/dms - cp -r DankMaterialShell-$(BASE_VERSION)/* debian/dms/usr/share/quickshell/dms/ - - # Remove unnecessary directories - rm -rf debian/dms/usr/share/quickshell/dms/core - rm -rf debian/dms/usr/share/quickshell/dms/distro - - # Install systemd user service + # Install systemd user service (before copying everything else) install -Dm644 DankMaterialShell-$(BASE_VERSION)/assets/systemd/dms.service \ debian/dms/usr/lib/systemd/user/dms.service @@ -57,6 +49,15 @@ override_dh_auto_install: install -Dm644 DankMaterialShell-$(BASE_VERSION)/assets/danklogo.svg \ debian/dms/usr/share/icons/hicolor/scalable/apps/danklogo.svg + # Install QML files from source tarball + mkdir -p debian/dms/usr/share/quickshell/dms + cp -r DankMaterialShell-$(BASE_VERSION)/* debian/dms/usr/share/quickshell/dms/ + + # Remove unnecessary directories + rm -rf debian/dms/usr/share/quickshell/dms/core + rm -rf debian/dms/usr/share/quickshell/dms/distro + rm -rf debian/dms/usr/share/quickshell/dms/assets + # Create VERSION file for Quickshell (stable release format) echo "$(BASE_VERSION)" > debian/dms/usr/share/quickshell/dms/VERSION