diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index d35074ca..2632536b 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -610,6 +610,8 @@ jobs: 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 diff --git a/distro/debian/dms-git/debian/changelog b/distro/debian/dms-git/debian/changelog index 14f4ba31..a08316da 100644 --- a/distro/debian/dms-git/debian/changelog +++ b/distro/debian/dms-git/debian/changelog @@ -1,12 +1,12 @@ -dms-git (0.6.2+git5) nightly; urgency=medium +dms-git (0.6.2+git2264.c5c5ce84) nightly; urgency=medium + * Add VERSION file creation to all distro packages + * Fix Fedora COPR to pass VERSION/COMMIT to make dist + * Fix obs-upload.sh auto-increment to preserve git hash and add ppa suffix * Fix debian/rules to use source at root level (native format) * Remove incorrect dms-git-source subdirectory references - * Fix Build-Depends parsing path issue in obs-upload.sh auto-increment - * Fix Build-Depends parsing in obs-upload.sh for proper dependency extraction * Build dms binary from source for true git version strings * Match Fedora COPR git build behavior - * Now shows proper git version (e.g., v0.6.2-11-g12e91534) * Add golang-go and make as build dependencies - -- Avenge Media Wed, 27 Nov 2025 04:15:00 -0500 + -- Avenge Media Tue, 03 Dec 2025 01:50:00 +0000 diff --git a/distro/debian/dms-git/debian/rules b/distro/debian/dms-git/debian/rules index c6ec3afa..de00f6f7 100755 --- a/distro/debian/dms-git/debian/rules +++ b/distro/debian/dms-git/debian/rules @@ -27,12 +27,11 @@ override_dh_auto_build: # Patch go.mod to use Go 1.24 base version (Debian 13 has 1.23.x, may vary) sed -i 's/^go 1\.24\.[0-9]*/go 1.24/' core/go.mod - # Extract version info for embedding - VERSION="$(UPSTREAM_VERSION)" - COMMIT=$$(echo "$(UPSTREAM_VERSION)" | grep -oP '(?<=git)[0-9]+\.[a-f0-9]+' | cut -d. -f2 | head -c8 || echo "unknown") - # Build dms-cli from source using vendored dependencies + # Extract version info and build in single shell to preserve variables # Architecture mapping: Debian amd64/arm64 -> Makefile amd64/arm64 + VERSION="$(UPSTREAM_VERSION)"; \ + COMMIT=$$(echo "$(UPSTREAM_VERSION)" | grep -oP '(?<=git)[0-9]+\.[a-f0-9]+' | cut -d. -f2 | head -c8 || echo "unknown"); \ if [ "$(DEB_HOST_ARCH)" = "amd64" ]; then \ MAKE_ARCH=amd64; \ BINARY_NAME=dms-linux-amd64; \ @@ -71,6 +70,8 @@ override_dh_auto_install: rm -rf debian/dms-git/usr/share/quickshell/dms/core \ debian/dms-git/usr/share/quickshell/dms/distro + echo "$(UPSTREAM_VERSION)" > debian/dms-git/usr/share/quickshell/dms/VERSION + override_dh_auto_clean: # Clean up build artifacts rm -f dms diff --git a/distro/fedora/dms.spec b/distro/fedora/dms.spec index 06ac8618..977d08c0 100644 --- a/distro/fedora/dms.spec +++ b/distro/fedora/dms.spec @@ -98,8 +98,11 @@ chmod +x %{_builddir}/dgop %build # Build DMS CLI from source (core/subdirectory) +VERSION="%{version}" +COMMIT=$(echo "%{version}" | grep -oP '[a-f0-9]{7,}' | head -n1 || echo "unknown") + cd core -make dist +make dist VERSION="$VERSION" COMMIT="$COMMIT" %install # Install dms-cli binary (built from source) @@ -132,11 +135,10 @@ install -Dm755 %{_builddir}/dgop %{buildroot}%{_bindir}/dgop # Install systemd user service install -Dm644 assets/systemd/dms.service %{buildroot}%{_userunitdir}/dms.service -# Install desktop file and icon 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 shell files to shared data location (from quickshell/ subdirectory) +# Install shell files to shared data location install -dm755 %{buildroot}%{_datadir}/quickshell/dms cp -r quickshell/* %{buildroot}%{_datadir}/quickshell/dms/ @@ -146,13 +148,9 @@ 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 -# Clean up old installation path from previous versions -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 # Restart DMS for active users after upgrade if [ "$1" -ge 2 ]; then diff --git a/distro/opensuse/dms-git.spec b/distro/opensuse/dms-git.spec index a3aebf7b..ddf43a08 100644 --- a/distro/opensuse/dms-git.spec +++ b/distro/opensuse/dms-git.spec @@ -103,6 +103,8 @@ rm -rf %{buildroot}%{_datadir}/quickshell/dms/.github rm -rf %{buildroot}%{_datadir}/quickshell/dms/distro rm -rf %{buildroot}%{_datadir}/quickshell/dms/core +echo "%{version}" > %{buildroot}%{_datadir}/quickshell/dms/VERSION + %posttrans if [ -d "%{_sysconfdir}/xdg/quickshell/dms" ]; then rmdir "%{_sysconfdir}/xdg/quickshell/dms" 2>/dev/null || true diff --git a/distro/opensuse/dms.spec b/distro/opensuse/dms.spec index 84415706..fed79972 100644 --- a/distro/opensuse/dms.spec +++ b/distro/opensuse/dms.spec @@ -77,12 +77,9 @@ rm -rf %{buildroot}%{_datadir}/quickshell/dms/.github rm -rf %{buildroot}%{_datadir}/quickshell/dms/distro rm -rf %{buildroot}%{_datadir}/quickshell/dms/core +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 if [ "$1" -ge 2 ]; then pkill -USR1 -x dms >/dev/null 2>&1 || true diff --git a/distro/scripts/obs-upload.sh b/distro/scripts/obs-upload.sh index c03ce068..8c59a607 100755 --- a/distro/scripts/obs-upload.sh +++ b/distro/scripts/obs-upload.sh @@ -619,15 +619,15 @@ fi # Only auto-increment on manual runs (REBUILD_RELEASE set or not in CI), not automated workflows OLD_DSC_FILE="" -if [[ -f "$WORK_DIR/$PACKAGE.dsc" ]]; then - OLD_DSC_FILE="$WORK_DIR/$PACKAGE.dsc" -elif [[ -f "$WORK_DIR/.osc/sources/$PACKAGE.dsc" ]]; then +if [[ -f "$WORK_DIR/.osc/sources/$PACKAGE.dsc" ]]; then OLD_DSC_FILE="$WORK_DIR/.osc/sources/$PACKAGE.dsc" +elif [[ -f "$WORK_DIR/.osc/$PACKAGE.dsc" ]]; then + OLD_DSC_FILE="$WORK_DIR/.osc/$PACKAGE.dsc" fi if [[ "$UPLOAD_DEBIAN" == true ]] && [[ "$SOURCE_FORMAT" == *"native"* ]] && [[ -n "$OLD_DSC_FILE" ]]; then OLD_DSC_VERSION=$(grep "^Version:" "$OLD_DSC_FILE" 2>/dev/null | awk '{print $2}' | head -1) - + IS_MANUAL=false if [[ -n "${REBUILD_RELEASE:-}" ]]; then IS_MANUAL=true @@ -639,20 +639,17 @@ if [[ "$UPLOAD_DEBIAN" == true ]] && [[ "$SOURCE_FORMAT" == *"native"* ]] && [[ IS_MANUAL=true echo "==> Local/manual run detected (not in CI)" fi - - if [[ -n "$OLD_DSC_VERSION" ]] && [[ "$OLD_DSC_VERSION" == "$CHANGELOG_VERSION" ]] && [[ "$IS_MANUAL" == true ]]; then - echo "==> Detected rebuild of same version $CHANGELOG_VERSION, incrementing version" + + CHANGELOG_BASE=$(echo "$CHANGELOG_VERSION" | sed 's/ppa[0-9]*$//') + OLD_DSC_BASE=$(echo "$OLD_DSC_VERSION" | sed 's/ppa[0-9]*$//') + + if [[ -n "$OLD_DSC_VERSION" ]] && [[ "$OLD_DSC_BASE" == "$CHANGELOG_BASE" ]] && [[ "$IS_MANUAL" == true ]]; then + echo "==> Detected rebuild of same base version $CHANGELOG_BASE, incrementing version" if [[ "$CHANGELOG_VERSION" =~ ^([0-9.]+)\+git$ ]]; then BASE_VERSION="${BASH_REMATCH[1]}" - NEW_VERSION="${BASE_VERSION}+git1" - echo " Incrementing git number: $CHANGELOG_VERSION -> $NEW_VERSION" - elif [[ "$CHANGELOG_VERSION" =~ ^([0-9.]+)\+git([0-9]+)$ ]]; then - BASE_VERSION="${BASH_REMATCH[1]}" - GIT_NUM="${BASH_REMATCH[2]}" - NEW_GIT_NUM=$((GIT_NUM + 1)) - NEW_VERSION="${BASE_VERSION}+git${NEW_GIT_NUM}" - echo " Incrementing git number: $CHANGELOG_VERSION -> $NEW_VERSION" + NEW_VERSION="${BASE_VERSION}+gitppa1" + echo " Adding PPA number: $CHANGELOG_VERSION -> $NEW_VERSION" elif [[ "$CHANGELOG_VERSION" =~ ^([0-9.]+)ppa([0-9]+)$ ]]; then BASE_VERSION="${BASH_REMATCH[1]}" PPA_NUM="${BASH_REMATCH[2]}" @@ -664,7 +661,14 @@ if [[ "$UPLOAD_DEBIAN" == true ]] && [[ "$SOURCE_FORMAT" == *"native"* ]] && [[ GIT_NUM="${BASH_REMATCH[2]}" GIT_HASH="${BASH_REMATCH[3]}" PPA_NUM="${BASH_REMATCH[5]}" - if [[ -n "$PPA_NUM" ]]; then + + # Check if old DSC has ppa suffix even if changelog doesn't + if [[ -z "$PPA_NUM" ]] && [[ "$OLD_DSC_VERSION" =~ ppa([0-9]+)$ ]]; then + OLD_PPA_NUM="${BASH_REMATCH[1]}" + NEW_PPA_NUM=$((OLD_PPA_NUM + 1)) + NEW_VERSION="${BASE_VERSION}+git${GIT_NUM}${GIT_HASH}ppa${NEW_PPA_NUM}" + echo " Incrementing PPA number from old DSC: $OLD_DSC_VERSION -> $NEW_VERSION" + elif [[ -n "$PPA_NUM" ]]; then NEW_PPA_NUM=$((PPA_NUM + 1)) NEW_VERSION="${BASE_VERSION}+git${GIT_NUM}${GIT_HASH}ppa${NEW_PPA_NUM}" echo " Incrementing PPA number: $CHANGELOG_VERSION -> $NEW_VERSION" diff --git a/distro/ubuntu/dms-git/debian/changelog b/distro/ubuntu/dms-git/debian/changelog index df137f75..98aedf91 100644 --- a/distro/ubuntu/dms-git/debian/changelog +++ b/distro/ubuntu/dms-git/debian/changelog @@ -1,5 +1,8 @@ -dms-git (0.6.2+git2169.f7f1bbbdppa10) questing; urgency=medium +dms-git (0.6.2+git2264.c5c5ce84) questing; urgency=medium - * Git snapshot (commit 2169: f7f1bbbd) + * Add VERSION file creation to all distro packages + * Fix Fedora COPR to pass VERSION/COMMIT to make dist + * Fix obs-upload.sh auto-increment to preserve git hash and add ppa suffix + * Git snapshot (commit 2264: c5c5ce84) - -- Avenge Media Wed, 26 Nov 2025 21:43:12 -0500 + -- Avenge Media Tue, 03 Dec 2025 01:50:00 +0000 diff --git a/distro/ubuntu/dms-git/debian/rules b/distro/ubuntu/dms-git/debian/rules index 6dd7619b..2171d5c4 100755 --- a/distro/ubuntu/dms-git/debian/rules +++ b/distro/ubuntu/dms-git/debian/rules @@ -62,6 +62,14 @@ override_dh_auto_install: install -Dm644 dms-git-repo/assets/danklogo.svg \ debian/dms-git/usr/share/icons/hicolor/scalable/apps/danklogo.svg + # Create DMS Version file + @if [ -f dms-git-repo/.dms-version ]; then \ + . dms-git-repo/.dms-version; \ + echo "$$VERSION" > debian/dms-git/usr/share/quickshell/dms/VERSION; \ + else \ + echo "dev" > debian/dms-git/usr/share/quickshell/dms/VERSION; \ + fi + override_dh_auto_clean: # Don't delete dms-git-repo directory - it's part of the source package (native format) # Clean up build artifacts diff --git a/distro/ubuntu/dms/debian/rules b/distro/ubuntu/dms/debian/rules index 8330302e..b3ddc510 100755 --- a/distro/ubuntu/dms/debian/rules +++ b/distro/ubuntu/dms/debian/rules @@ -54,6 +54,9 @@ override_dh_auto_install: install -Dm644 DankMaterialShell-$(BASE_VERSION)/assets/danklogo.svg \ debian/dms/usr/share/icons/hicolor/scalable/apps/danklogo.svg + # Create VERSION file for Quickshell (stable release format) + echo "$(BASE_VERSION)" > debian/dms/usr/share/quickshell/dms/VERSION + # Generate and install shell completions (if applicable) # Uncomment if dms supports completion generation # ./dms completion bash > dms.bash diff --git a/flake.nix b/flake.nix index c6559e8b..864ed295 100644 --- a/flake.nix +++ b/flake.nix @@ -88,6 +88,9 @@ mkdir -p $out/etc/xdg/quickshell cp -r ./ $out/etc/xdg/quickshell/dms + # Create DMS Version file + echo "${version}" > $out/etc/xdg/quickshell/dms/VERSION + # Install desktop file mkdir -p $out/share/applications cp ${./assets/dms-open.desktop} $out/share/applications/dms-open.desktop