[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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: