diff --git a/deb/build-deb b/deb/build-deb index a67475a097..cf259a7859 100755 --- a/deb/build-deb +++ b/deb/build-deb @@ -43,8 +43,40 @@ debSource="$(awk -F ': ' '$1 == "Source" { print $2; exit }' debian/control)" debMaintainer="$(awk -F ': ' '$1 == "Maintainer" { print $2; exit }' debian/control)" debDate="$(date --rfc-2822)" +versionID="$(. /etc/os-release && echo "$VERSION_ID")" + +# Include an extra `.0` in the version, in case we ever would have to re-build an +# already published release with a packaging-only change. +pkgRevision=0 + +# Generate changelog. The version/name of the generated packages are based on this. +# +# Resulting packages are formatted as; +# +# - name of the package (e.g., "docker-ce") +# - version (e.g., "22.10.6~beta.0") +# - "-0" (mostly "best practice", and allows updating for specific situations) +# - distro (e.g., "ubuntu") +# - VERSION_ID (e.g. "22.04" or "11") this must be "sortable" to make sure that +# packages are upgraded when upgrading to a newer distro version ("codename" +# cannot be used for this, as they're not sorted) +# - pkgRevision (usually "0", see above) +# - SUITE ("codename"), e.g. "jammy" or "bullseye". This is mostly for convenience, +# because some places refer to distro versions by codename, others by version. +# we prefix the codename with a tilde (~), which effectively excludes it from +# version comparison. +# +# Note that while the `${EPOCH}${EPOCH_SEP}` is part of the version, it is not +# included in the package's *filename*. (And if you're wondering: we needed the +# EPOCH because of our use of CalVer, which made version comparing not work in +# some cases). +# +# Examples: +# +# docker-ce_22.10.6~beta.0-0~debian.11.0~bullseye_amd64.deb +# docker-ce_22.10.6~beta.0-0~ubuntu.22.04.0~jammy_amd64.deb cat > "debian/changelog" <<-EOF -$debSource (${EPOCH}${EPOCH_SEP}${DEB_VERSION}-0~${DISTRO}-${SUITE}) $SUITE; urgency=low +$debSource (${EPOCH}${EPOCH_SEP}${DEB_VERSION}-0~${DISTRO}.${versionID}.${pkgRevision}~${SUITE}) $SUITE; urgency=low * Version: $VERSION -- $debMaintainer $debDate EOF