aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Makefile15
-rwxr-xr-xsource/debian/rules17
2 files changed, 29 insertions, 3 deletions
diff --git a/Makefile b/Makefile
index 131df63..ccc61fd 100644
--- a/Makefile
+++ b/Makefile
@@ -102,6 +102,12 @@ ${TAMPER}: tamper
tamper:
${MAKE} -C $(dir ${TAMPER})
+# For extra credit, figure out how to put the right path names into
+# the initial source tarball so we don't need to mess with it in the loop.
+#
+# For more extra credit, figure out how to do the pbuilder stuff as
+# GNU make $(eval) rules rather than as a shell for loop. Maybe.
+
dsc:
rm -f source/debian/changelog ${PACKAGE_NAME}_*.dsc ${PACKAGE_NAME}_*.tar.xz ${PACKAGE_NAME}_*_source.build ${PACKAGE_NAME}_*_source.changes
cd source; ../scripts/build-debian-control-files.py --debemail='${GPG_USER}' --package='${PACKAGE_NAME}' --newversion='${PACKAGE_VERSION}' --conflicts='${PACKAGE_CONFLICT}'
@@ -110,14 +116,17 @@ dsc:
pbuilder:
rm -f ${PBUILDER_BASE}/*result/*
touch -d 'last week' .pbuilder-sell-by-date
- umask ${REPO_UMASK}; \
+ set -x; umask ${REPO_UMASK}; \
for target in ${PBUILDER_TARGETS}; do echo $$target | tr '/' ' '; done | \
while read dist code arch; do \
- reprepro -b ${REPO_BASE}/apt/$$dist -A $$arch list $$code ${PACKAGE_NAME} | awk '{v = $$3} END {exit v != "${PACKAGE_VERSION}"}' && continue; \
+ reprepro -b ${REPO_BASE}/apt/$$dist -A $$arch list $$code ${PACKAGE_NAME} | awk -v "c=$$code" '{v = $$3} END {exit v != "${PACKAGE_VERSION}~" c}' && continue; \
if test $${HOME}/pbuilder/$${code}-$${arch}-base.tgz -ot .pbuilder-sell-by-date; then pbuilder-dist $$code $$arch update; else true; fi; \
pbuilder-dist $$code $$arch build ${PACKAGE_NAME}_${PACKAGE_VERSION}.dsc; \
+ test -f ${REPO_BASE}/brew/tarballs/${PACKAGE_NAME}_${PACKAGE_VERSION}.tar.xz || \
cp -p ${PBUILDER_BASE}/$${code}-$${arch}_result/${PACKAGE_NAME}_${PACKAGE_VERSION}.tar.xz ${REPO_BASE}/brew/tarballs/; \
- reprepro -b ${REPO_BASE}/apt/$$dist include $$code ${PBUILDER_BASE}/$${code}-$${arch}_result/${PACKAGE_NAME}_${PACKAGE_VERSION}_$${arch}.changes; \
+ reprepro -b ${REPO_BASE}/apt/$$dist -T dsc list $$code ${PACKAGE_NAME} | awk '{v = $$3} END {exit v != "${PACKAGE_VERSION}"}' || \
+ reprepro -b ${REPO_BASE}/apt/$$dist includedsc $$code ${PBUILDER_BASE}/$${code}-$${arch}_result/${PACKAGE_NAME}_${PACKAGE_VERSION}.dsc; \
+ reprepro -b ${REPO_BASE}/apt/$$dist includedeb $$code ${PBUILDER_BASE}/$${code}-$${arch}_result/${PACKAGE_NAME}_${PACKAGE_VERSION}~$${code}_$${arch}.deb; \
done
homebrew:
diff --git a/source/debian/rules b/source/debian/rules
index 88d6c5a..a0c3a65 100755
--- a/source/debian/rules
+++ b/source/debian/rules
@@ -16,6 +16,23 @@ export DEB_LDFLAGS_MAINT_APPEND = -Wl,--as-needed
# see EXAMPLES in dpkg-buildflags(1) and read /usr/share/dpkg/*
DPKG_EXPORT_BUILDFLAGS = 1
include /usr/share/dpkg/default.mk
+include /usr/share/dpkg/pkg-info.mk
%:
dh $@ --with python2
+
+# Distinct binary package versions for a single source package built
+# on multiple releases, to keep reprepro happy. See:
+#
+# https://unix.stackexchange.com/questions/31584/two-differently-versioned-binary-debian-packages-from-one-source#32377
+# https://salsa.debian.org/android-tools-team/android-sdk-meta/blob/master/debian/rules
+#
+# This relies on pbuilder-dist setting the DIST environment variable.
+# Without that, we fall back to the default behavior.
+
+ifneq (,${DIST})
+
+override_dh_gencontrol:
+ dh_gencontrol -- -v${DEB_VERSION}~${DIST}
+
+endif