On Sat, 2012-07-14 at 12:24 -0600, Ian Campbell wrote:
> On Sat, 2012-07-14 at 20:03 +0200, Bastian Blank wrote:
> > On Sat, Jul 14, 2012 at 11:39:01AM -0600, Ian Campbell wrote:
> > > On Thu, 2012-07-12 at 12:37 -0600, Ian Campbell wrote:
> > > > One possible solution would be to turn those virtual packages into real
> > > > ones, at which point I expect the versioning would cause the expected
> > > > upgrade.
> > > Perhaps inevitably this wasn't quite sufficient. The problem is that
> > > even if xen-hypervisor-amd64 becomes a real package on upgrade the
> > > dependency is already satisfied by xen-hypervisor-4.0-amd64 so apt
> > > doesn't do the upgrade.
> > 
> > This can be fixed by adding a version, like "(>> 0)"
> 
> I'll try this. I'd worry about it causing the 4.0 version to be
> uninstalled too which would not be preferable, but we'll see.

This worked properly and didn't mess with the 4.0 version either, thanks
for the tip -- I had actually read the bit of policy about versioned
Depends ignoring Provides this morning but >>0 didn't occur to me.

New patches attached.

Ian
>From 8b8c3c566e8acfce9c9c9600c3efaec0d76a96be Mon Sep 17 00:00:00 2001
From: Ian Campbell <i...@hellion.org.uk>
Date: Sat, 14 Jul 2012 18:25:00 +0100
Subject: [PATCH] Make xen-linux-system depend on a non virtual
 xen-hypervisor-flavour package

---
 linux/debian/bin/gencontrol.py |    2 +-
 linux/debian/changelog         |    4 ++++
 2 files changed, 5 insertions(+), 1 deletion(-)

diff --git a/linux/debian/bin/gencontrol.py b/linux/debian/bin/gencontrol.py
index 5fd5cda..8eafe82 100755
--- a/linux/debian/bin/gencontrol.py
+++ b/linux/debian/bin/gencontrol.py
@@ -266,7 +266,7 @@ class Gencontrol(Base):
             p = self.process_packages(self.templates['control.xen-linux-system'], vars)
             l = PackageRelationGroup()
             for xen_flavour in config_entry_xen['flavours']:
-                l.append("xen-hypervisor-%s" % xen_flavour)
+                l.append("xen-hypervisor-%s (>>0)" % xen_flavour)
             p[0]['Depends'].append(l)
             packages_dummy.extend(p)
 
diff --git a/linux/debian/changelog b/linux/debian/changelog
index 575c028..4b29249 100644
--- a/linux/debian/changelog
+++ b/linux/debian/changelog
@@ -34,6 +34,10 @@ linux (3.2.23-1) UNRELEASED; urgency=low
   * udf: Improve table length check to avoid possible overflow
   * CIFS: Respect negotiated MaxMpxCount (deferred from 3.2.14)
 
+  [ Ian Campbell ]
+  * xen-linux-system: Depend on a non-virtual xen-hypervisor-flavour to pull in
+    latest version.
+
  -- Ben Hutchings <b...@decadent.org.uk>  Fri, 29 Jun 2012 15:01:22 +0100
 
 linux (3.2.21-3) unstable; urgency=low
-- 
1.7.10

>From 0c9597b01776f4cd1f6d27748652320760f59d8e Mon Sep 17 00:00:00 2001
From: Ian Campbell <i...@hellion.org.uk>
Date: Fri, 13 Jul 2012 22:55:52 +0100
Subject: [PATCH] Make xen-hypervisor-flavour a real package

---
 xen/debian/changelog                       |    1 +
 xen/debian/rules.real                      |    9 +++++++++
 xen/debian/templates/control.hypervisor.in |    9 ++++++++-
 3 files changed, 18 insertions(+), 1 deletion(-)

diff --git a/xen/debian/changelog b/xen/debian/changelog
index 9fec290..7025f3b 100644
--- a/xen/debian/changelog
+++ b/xen/debian/changelog
@@ -2,6 +2,7 @@ xen (4.1.3~rc1+hg-20120614.a9c0a89c08f2-5) UNRELEASED; urgency=low
 
   [ Ian Campbell ]
   * Set tap device MAC addresses to fe:ff:ff:ff:ff:ff (Closes: #671018)
+  * Make xen-hypervisor-flavour a real package to aid upgrade (Closes: #681376)
 
   [ Bastian Blank ]
   * Actually build-depend on new enough version of dpkg-dev.
diff --git a/xen/debian/rules.real b/xen/debian/rules.real
index 99ae1f0..b1e5be9 100644
--- a/xen/debian/rules.real
+++ b/xen/debian/rules.real
@@ -23,6 +23,7 @@ binary-arch-arch: install-xenstore-utils_$(ARCH)
 binary-arch-arch: install-lib-ocaml-dev_$(ARCH)
 binary-arch-arch: install-lib-ocaml_$(ARCH)
 binary-arch-flavour: install-hypervisor_$(ARCH)_$(FLAVOUR)
+binary-arch-flavour: install-hypervisor-flavour_$(FLAVOUR)
 
 binary-indep: install-docs
 binary-indep: install-utils-common
@@ -140,6 +141,14 @@ install-hypervisor_$(ARCH)_$(FLAVOUR): $(STAMPS_DIR)/build-hypervisor_$(ARCH)_$(
 	cp $(DIR)/xen/xen.gz debian/$(PACKAGE_NAME)/boot/xen-$(VERSION)-$(FLAVOUR).gz
 	+$(MAKE_SELF) install-base
 
+install-hypervisor-flavour_$(FLAVOUR): PACKAGE_NAME = xen-hypervisor-$(FLAVOUR)
+install-hypervisor-flavour_$(FLAVOUR): DH_OPTIONS = -p$(PACKAGE_NAME)
+install-hypervisor-flavour_$(FLAVOUR):
+	dh_testdir
+	dh_testroot
+	dh_prep
+	+$(MAKE_SELF) install-base
+
 install-libxen_$(ARCH): DIR = $(BUILD_DIR)/install-utils_$(ARCH)
 install-libxen_$(ARCH): DH_OPTIONS = -plibxen-$(VERSION)
 install-libxen_$(ARCH): $(STAMPS_DIR)/install-utils_$(ARCH)
diff --git a/xen/debian/templates/control.hypervisor.in b/xen/debian/templates/control.hypervisor.in
index b0ee0dd..7796610 100644
--- a/xen/debian/templates/control.hypervisor.in
+++ b/xen/debian/templates/control.hypervisor.in
@@ -1,6 +1,6 @@
 Package: xen-hypervisor-@version@@localversion@
 Depends: ${misc:Depends}
-Provides: xen-hypervisor, xen-hypervisor-@version@, xen-hypervisor@localversion@
+Provides: xen-hypervisor, xen-hypervisor-@version@
 Recommends: xen-utils-@version@
 Suggests: xen-docs-@version@
 Description: Xen Hypervisor on @class@
@@ -14,3 +14,10 @@ Description: Xen Hypervisor on @class@
  specifically crafted to work as the Domain 0, mediating hardware access for
  XEN itself.
 
+Package: xen-hypervisor@localversion@
+Depends: xen-hypervisor-@version@@localversion@, ${misc:Depends}
+Description: Latest Xen Hypervisor on @class@
+ This package depends on the latest version of the Xen hypervisor for @class@
+ .
+ @desc@
+
-- 
1.7.10

Reply via email to