diff --git a/.github/workflows/run-obs.yml b/.github/workflows/run-obs.yml index 2a570559..67ec1245 100644 --- a/.github/workflows/run-obs.yml +++ b/.github/workflows/run-obs.yml @@ -140,66 +140,42 @@ jobs: - name: Update dms-git spec version if: contains(steps.packages.outputs.packages, 'dms-git') || steps.packages.outputs.packages == 'all' run: | - # Get commit info for dms-git versioning COMMIT_HASH=$(git rev-parse --short=8 HEAD) COMMIT_COUNT=$(git rev-list --count HEAD) BASE_VERSION=$(grep -oP '^Version:\s+\K[0-9.]+' distro/opensuse/dms.spec | head -1 || echo "0.6.2") - NEW_VERSION="${BASE_VERSION}+git${COMMIT_COUNT}.${COMMIT_HASH}" echo "📦 Updating dms-git.spec to version: $NEW_VERSION" - # Update version in spec sed -i "s/^Version:.*/Version: $NEW_VERSION/" distro/opensuse/dms-git.spec - # Add changelog entry + # Single changelog entry (git snapshots don't need history) DATE_STR=$(date "+%a %b %d %Y") - CHANGELOG_ENTRY="* $DATE_STR Avenge Media - ${NEW_VERSION}-1\n- Git snapshot (commit $COMMIT_COUNT: $COMMIT_HASH)" - sed -i "/%changelog/a\\$CHANGELOG_ENTRY" distro/opensuse/dms-git.spec + LOCAL_SPEC_HEAD=$(sed -n '1,/%changelog/{ /%changelog/d; p }' distro/opensuse/dms-git.spec) + { + echo "$LOCAL_SPEC_HEAD" + echo "%changelog" + echo "* $DATE_STR Avenge Media - ${NEW_VERSION}-1" + echo "- Git snapshot (commit $COMMIT_COUNT: $COMMIT_HASH)" + } > distro/opensuse/dms-git.spec - name: Update Debian dms-git changelog version if: contains(steps.packages.outputs.packages, 'dms-git') || steps.packages.outputs.packages == 'all' run: | - # Get commit info for dms-git versioning COMMIT_HASH=$(git rev-parse --short=8 HEAD) COMMIT_COUNT=$(git rev-list --count HEAD) BASE_VERSION=$(grep -oP '^Version:\s+\K[0-9.]+' distro/opensuse/dms.spec | head -1 || echo "0.6.2") - - # Debian version format: 0.6.2+git2256.9162e314 NEW_VERSION="${BASE_VERSION}+git${COMMIT_COUNT}.${COMMIT_HASH}" echo "📦 Updating Debian dms-git changelog to version: $NEW_VERSION" + # Single changelog entry (git snapshots don't need history) CHANGELOG_DATE=$(date -R) - - CHANGELOG_FILE="distro/debian/dms-git/debian/changelog" - - # Get current version from changelog - CURRENT_VERSION=$(head -1 "$CHANGELOG_FILE" | sed 's/.*(\([^)]*\)).*/\1/') - - echo "Current Debian version: $CURRENT_VERSION" - echo "New version: $NEW_VERSION" - - # Only update if version changed - if [ "$CURRENT_VERSION" != "$NEW_VERSION" ]; then - # Create new changelog entry at top - TEMP_CHANGELOG=$(mktemp) - - cat > "$TEMP_CHANGELOG" << EOF - dms-git ($NEW_VERSION) nightly; urgency=medium - - * Git snapshot (commit $COMMIT_COUNT: $COMMIT_HASH) - - -- Avenge Media $CHANGELOG_DATE - - EOF - - # Prepend to existing changelog - cat "$CHANGELOG_FILE" >> "$TEMP_CHANGELOG" - mv "$TEMP_CHANGELOG" "$CHANGELOG_FILE" - - echo "✓ Updated Debian changelog: $CURRENT_VERSION → $NEW_VERSION" - else - echo "✓ Debian changelog already at version $NEW_VERSION" - fi + { + echo "dms-git ($NEW_VERSION) nightly; urgency=medium" + echo "" + echo " * Git snapshot (commit $COMMIT_COUNT: $COMMIT_HASH)" + echo "" + echo " -- Avenge Media $CHANGELOG_DATE" + } > "distro/debian/dms-git/debian/changelog" - name: Update dms stable version if: steps.packages.outputs.version != '' @@ -208,13 +184,17 @@ jobs: VERSION_NO_V="${VERSION#v}" echo "Updating packaging to version $VERSION_NO_V" - # Update openSUSE dms spec (stable only) sed -i "s/^Version:.*/Version: $VERSION_NO_V/" distro/opensuse/dms.spec - # Update openSUSE spec changelog + # Single changelog entry (full history on OBS website) DATE_STR=$(date "+%a %b %d %Y") - CHANGELOG_ENTRY="* $DATE_STR AvengeMedia - ${VERSION_NO_V}-1\\n- Update to stable $VERSION release\\n- Bug fixes and improvements" - sed -i "/%changelog/a\\$CHANGELOG_ENTRY\\n" distro/opensuse/dms.spec + LOCAL_SPEC_HEAD=$(sed -n '1,/%changelog/{ /%changelog/d; p }' distro/opensuse/dms.spec) + { + echo "$LOCAL_SPEC_HEAD" + echo "%changelog" + echo "* $DATE_STR AvengeMedia - ${VERSION_NO_V}-1" + echo "- Update to stable $VERSION release" + } > distro/opensuse/dms.spec # Update Debian _service files (both tar_scm and download_url formats) for service in distro/debian/*/_service; do @@ -228,24 +208,16 @@ jobs: fi done - # Update Debian changelog for dms stable + # Update Debian changelog for dms stable (single entry, history on OBS website) if [[ -f "distro/debian/dms/debian/changelog" ]]; then CHANGELOG_DATE=$(date -R) - TEMP_CHANGELOG=$(mktemp) - - cat > "$TEMP_CHANGELOG" << EOF - dms ($VERSION_NO_V) stable; urgency=medium - - * Update to $VERSION stable release - * Bug fixes and improvements - - -- Avenge Media $CHANGELOG_DATE - - EOF - - cat "distro/debian/dms/debian/changelog" >> "$TEMP_CHANGELOG" - mv "$TEMP_CHANGELOG" "distro/debian/dms/debian/changelog" - + { + echo "dms ($VERSION_NO_V) stable; urgency=medium" + echo "" + echo " * Update to $VERSION stable release" + echo "" + echo " -- Avenge Media $CHANGELOG_DATE" + } > "distro/debian/dms/debian/changelog" echo "✓ Updated Debian changelog to $VERSION_NO_V" fi diff --git a/distro/scripts/ppa-build.sh b/distro/scripts/ppa-build.sh index 6cf998ae..57d18748 100755 --- a/distro/scripts/ppa-build.sh +++ b/distro/scripts/ppa-build.sh @@ -255,29 +255,20 @@ if [ "$IS_GIT_PACKAGE" = false ] && [ -n "$GIT_REPO" ]; then else info "Updating changelog to latest tag: $LATEST_TAG" fi - OLD_ENTRY_START=$(grep -n "^${SOURCE_NAME} (" debian/changelog | sed -n '2p' | cut -d: -f1) - if [ -n "$OLD_ENTRY_START" ]; then - CHANGELOG_CONTENT=$(tail -n +"$OLD_ENTRY_START" debian/changelog) - else - CHANGELOG_CONTENT="" - fi - if [ "$PPA_NUM" -gt 1 ]; then CHANGELOG_MSG="Rebuild for packaging fixes (ppa${PPA_NUM})" else CHANGELOG_MSG="Upstream release ${LATEST_TAG}" fi - CHANGELOG_ENTRY="${SOURCE_NAME} (${NEW_VERSION}) ${UBUNTU_SERIES}; urgency=medium + # Single changelog entry (full history available on Launchpad) + cat >debian/changelog < $(date -R)" - echo "$CHANGELOG_ENTRY" >debian/changelog - if [ -n "$CHANGELOG_CONTENT" ]; then - echo "" >>debian/changelog - echo "$CHANGELOG_CONTENT" >>debian/changelog - fi + -- Avenge Media $(date -R) +EOF success "Version updated to $NEW_VERSION" CHANGELOG_VERSION=$(dpkg-parsechangelog -S Version) @@ -406,24 +397,14 @@ if [ "$IS_GIT_PACKAGE" = true ] && [ -n "$GIT_REPO" ]; then NEW_VERSION="${BASE_VERSION}ppa${PPA_NUM}" - OLD_ENTRY_START=$(grep -n "^${SOURCE_NAME} (" debian/changelog | sed -n '2p' | cut -d: -f1) - if [ -n "$OLD_ENTRY_START" ]; then - CHANGELOG_CONTENT=$(tail -n +"$OLD_ENTRY_START" debian/changelog) - else - CHANGELOG_CONTENT="" - fi - - CHANGELOG_ENTRY="${SOURCE_NAME} (${NEW_VERSION}) ${UBUNTU_SERIES}; urgency=medium + # Single changelog entry (git snapshots don't need history) + cat >debian/changelog < $(date -R)" - - echo "$CHANGELOG_ENTRY" >debian/changelog - if [ -n "$CHANGELOG_CONTENT" ]; then - echo "" >>debian/changelog - echo "$CHANGELOG_CONTENT" >>debian/changelog - fi + -- Avenge Media $(date -R) +EOF success "Version updated to $NEW_VERSION" CHANGELOG_VERSION=$(dpkg-parsechangelog -S Version)