RFC: build apt from the same source for debian and ubuntu
Hi,
I would like to ask for comments on the following problem. Apt is
currently maintained in seperate branches for debian and ubuntu.
The differences between those branches are minimal (just the different
archive keyring names in apt.postinst and cmdline/apt-key). I would
like to build both debian and ubuntu packages out of the same source
to eliminate the need to have different branches at all.
Attached is a patch that uses lsb_release to figure what patches needs
to be applied depending on the distro that is used. This adds a
build-dep to lsb-release to apt (a package with a size of 9kb). What
do the other apt hackers think about that patch? Any ideas how this
could be done in a more elegant way?
I feel that it's importend for us to build apt out of the same branch
for both distros, otherwise I afraid that there may be subtle
differences creeping in over time.
Cheers,
Michael
--
Linux is not The Answer. Yes is the answer. Linux is The Question. - Neo
--- orig/debian/control
+++ mod/debian/control
@@ -4,7 +4,7 @@
Maintainer: APT Development Team <deity@lists.debian.org>
Uploaders: Jason Gunthorpe <jgg@debian.org>, Adam Heath <doogie@debian.org>, Matt Zimmerman <mdz@debian.org>, Michael Vogt <mvo@debian.org>
Standards-Version: 3.6.1
-Build-Depends: debhelper (>= 4.1.62), libdb4.2-dev, gettext (>= 0.12)
+Build-Depends: debhelper (>= 4.1.62), libdb4.2-dev, gettext (>= 0.12), lsb-release, dpatch
Build-Depends-Indep: debiandoc-sgml, docbook-utils (>= 0.6.12-1)
Package: apt
--- orig/debian/rules
+++ mod/debian/rules
@@ -17,6 +17,9 @@
export DEB_HOST_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE)
export DEB_BUILD_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE)
+# apt can be build from the same source on debian and ubuntu
+DIST = $(shell lsb_release -i -s)
+
# FOR AUTOCONF 2.52 AND NEWER ONLY
ifeq ($(DEB_BUILD_GNU_TYPE), $(DEB_HOST_GNU_TYPE))
confflags += --build $(DEB_HOST_GNU_TYPE)
@@ -111,7 +114,7 @@
cd build && CXXFLAGS="$(confcxxflags)" ../configure $(confflags)
touch $@
-build/build-stamp: build/configure-stamp
+build/build-stamp: build/configure-stamp patch
# Add here commands to compile the package.
$(MAKE) binary
touch $@
@@ -121,7 +124,7 @@
$(MAKE) doc
touch $@
-clean:
+clean: unpatch
dh_testdir
# dh_testroot
-$(MAKE) clean
@@ -331,6 +334,17 @@
-mkdir -p ../upload-$(APT_DEBVER)
cp `find debian/cvs-build -maxdepth 1 -type f` ../upload-$(APT_DEBVER)
+patch: patch-stamp
+patch-stamp:
+ cp debian/patches/00list.$(DIST) debian/patches/00list
+ dpatch apply-all
+ touch patch-stamp
+
+unpatch:
+ cp debian/patches/00list.$(DIST) debian/patches/00list
+ dpatch deapply-all
+ rm -rf patch-stamp debian/patched
+
arch-build:
rm -rf debian/arch-build
mkdir -p debian/arch-build/apt-$(APT_DEBVER)
--- /dev/null
+++ mod/debian/patches/00list.Ubuntu
@@ -0,0 +1 @@
+01_ubuntu_archive_key
--- /dev/null
+++ mod/debian/patches/01_ubuntu_archive_key.dpatch
@@ -0,0 +1,40 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+## 01_ubuntu_archive_key.dpatch by <egon@localhost.localdomain>
+##
+## All lines beginning with `## DP:' are a description of the patch.
+## DP: use the ubuntu archive key (instead of the debian one)
+
+@DPATCH@
+diff -urNad --exclude=CVS --exclude=.svn ./cmdline/apt-key /tmp/dpep-work.o4yrSO/apt--mvo/cmdline/apt-key
+--- ./cmdline/apt-key 2005-06-26 22:41:36.000000000 +0200
++++ /tmp/dpep-work.o4yrSO/apt--mvo/cmdline/apt-key 2005-08-01 17:59:56.000000000 +0200
+@@ -9,14 +9,14 @@
+ GPG="$GPG_CMD --keyring /etc/apt/trusted.gpg"
+
+
+-ARCHIVE_KEYRING=/usr/share/keyrings/debian-archive-keyring.gpg
+-REMOVED_KEYS=/usr/share/keyrings/debian-archive-removed-keys.gpg
++ARCHIVE_KEYRING=/usr/share/keyrings/ubuntu-archive-keyring.gpg
++REMOVED_KEYS=/usr/share/keyrings/ubuntu-archive-removed-keys.gpg
+
+
+ update() {
+ if [ ! -f $ARCHIVE_KEYRING ]; then
+ echo >&2 "ERROR: Can't find the archive-keyring"
+- echo >&2 "Is the debian-keyring package installed?"
++ echo >&2 "Is the ubuntu-keyring package installed?"
+ exit 1
+ fi
+
+diff -urNad --exclude=CVS --exclude=.svn ./debian/apt.postinst /tmp/dpep-work.o4yrSO/apt--mvo/debian/apt.postinst
+--- ./debian/apt.postinst 2005-06-26 22:41:36.000000000 +0200
++++ /tmp/dpep-work.o4yrSO/apt--mvo/debian/apt.postinst 2005-08-01 18:00:23.000000000 +0200
+@@ -17,7 +17,7 @@
+ configure)
+
+ if ! test -f /etc/apt/trusted.gpg; then
+- cp /usr/share/apt/debian-archive.gpg /etc/apt/trusted.gpg
++ cp /usr/share/apt/ubuntu-archive.gpg /etc/apt/trusted.gpg
+ fi
+
+ ;;
Reply to: