]> git.proxmox.com Git - debcargo-conf.git/blobdiff - release.sh
thiserror-impl: new version
[debcargo-conf.git] / release.sh
index 00588b7f6ac158a6a7dd3aab345e6dc84fd480d7..7a6ad3cc05b982978416f768da2039195517c753 100755 (executable)
@@ -29,8 +29,20 @@ git fetch origin --prune
 git merge-base --is-ancestor origin/master HEAD || \
 abort 1 "You are not synced with origin/master, please do so before running this script."
 
+if [ "$RERELEASE" = 1 -o "$NOUPDATE" = 1 ]; then
+       REALVER="$(get_existing_version "$PKGDIR")"
+fi
+
 if head -n1 "$PKGDIR/debian/changelog" | grep -qv UNRELEASED-FIXME-AUTOGENERATED-DEBCARGO; then
-       abort 0 "Package already released."
+       if [ "$RERELEASE" = 1 ]; then
+               run_debcargo
+               ( cd "$PKGDIR" && dch -a "No-op source-only re-upload for Debian Testing Migration." )
+               export REUSE_EXISTING_ORIG_TARBALL=1
+       else
+               abort 0 \
+                 "Package already released. If you want to do a source-only re-upload e.g. to" \
+                 "hoop-jump through the Debian Testing migration requirements, set RERELEASE=1."
+       fi
 fi
 
 if [ -e "$PKGDIR/debian/BLOCK" ]; then
@@ -81,9 +93,22 @@ if ! run_debcargo --changelog-ready; then
        abort 1 "Release attempt failed to run debcargo, probably the package needs updating (./update.sh $*)"
 fi
 
+# sometimes the copyright years need to be updated, try to do this automatically
+if git diff -- "$PKGDIR_REL/debian/copyright.debcargo.hint" | patch -r - --no-backup-if-mismatch "$PKGDIR_REL/debian/copyright"; then
+       git add "$PKGDIR_REL/debian/copyright.debcargo.hint" "$PKGDIR_REL/debian/copyright"
+else
+       git diff -- "$PKGDIR_REL/debian/copyright.debcargo.hint"
+       revert_git_changes
+       abort 1 \
+         "copyright file needs updating; apply the above diff to $PKGDIR_REL/debian/copyright" \
+         "then commit your changes, and run me again."
+fi
+
 if ! git diff --exit-code -- "$PKGDIR_REL"; then
        revert_git_changes
-       abort 1 "Release attempt resulted in git diffs to $PKGDIR_REL, probably the package needs updating (./update.sh $*)"
+       abort 1 \
+         "Release attempt resulted in git diffs to $PKGDIR_REL, probably you need to update the package (./update.sh $*)." \
+         "Alternatively, set NOUPDATE=1 to override this requirement, but please have a good reason."
 fi
 
 if ! ( cd build && SOURCEONLY=1 ./build.sh "$CRATE" $VER ); then
@@ -98,7 +123,21 @@ git commit -m "Release package $PKGNAME"
 DEBVER=$(dpkg-parsechangelog -l $BUILDDIR/debian/changelog -SVersion)
 DEBSRC=$(dpkg-parsechangelog -l $BUILDDIR/debian/changelog -SSource)
 DEB_HOST_ARCH=$(dpkg-architecture -q DEB_HOST_ARCH)
-cat >&2 <<eof
+
+if [ "$RERELEASE" = 1 ]; then
+
+( cd build && dput "${DEBSRC}_${DEBVER}_source.changes" )
+git push origin "$RELBRANCH"
+git checkout master
+
+cat <<eof
+Source-only re-release of $CRATE uploaded. You need to perform the following steps:
+
+eof
+
+else
+
+cat <<eof
 Release of $CRATE ready as a source package in ${BUILDDIR#$PWD/}. You need to
 perform the following steps:
 
@@ -110,7 +149,8 @@ new binaries, then you can just go ahead and directly dput the source package.
 
   cd build && dput ${DEBSRC}_${DEBVER}_source.changes
 
-For your reference, this source package builds $(grep ^Package build/${CRATE//_/-}/debian/control | wc -l) binary package(s).
+For your reference, this source package builds $(grep ^Package build/${CRATE//_/-}/debian/control | wc -l) binary package(s):
+$(sed -ne 's/^Package: //pg' build/hmac/debian/control | tr '\n' ',')
 
 If this is a NEW source package or introduces NEW binary packages not already
 in the Debian archive, you will need to build a binary package out of it. The
@@ -133,8 +173,13 @@ master to continue development on other packages.
 
   git push origin $RELBRANCH && git checkout master
 
-Merge the pending-release branch when ACCEPTED
-==============================================
+eof
+
+fi
+
+cat >&2 <<eof
+Merge the pending-release branch if/when ACCEPTED
+=================================================
 
 When it's ACCEPTED by the Debian FTP masters, you may then merge this branch
 back into the master branch, delete it, and push these updates to origin.
@@ -142,13 +187,15 @@ back into the master branch, delete it, and push these updates to origin.
   git checkout master && git merge $RELBRANCH && git branch -d $RELBRANCH
   git push origin master :$RELBRANCH
 
-----
+Delete this branch without merging if/when REJECTED
+===================================================
 
-The above assumes you are a Debian Developer with upload rights. If not, you
-should revert what I just did. To do that, run:
+If your upload is REJECTED, or if you cannot perform an upload in the first
+place e.g. because you are not a Debian Developer, you should revert what I
+just did. To do that, run:
 
   git checkout master && git branch -D $RELBRANCH
 
-Then ask a Debian Developer to re-run me ($0 $*) on your behalf. Also touch
-and commit ${PKGDIR_REL}/debian/RFS so it's easy to track.
+Then ask a Debian Developer to re-run me ($0 $*) on your behalf. Also, touch
+and commit ${PKGDIR_REL}/debian/RFS so we can track these easier.
 eof