From 4a79ad5b9c3fbaf5b1e5086dd2e334bb3aca6ebe Mon Sep 17 00:00:00 2001 From: Hans van Kranenburg Date: Fri, 23 Feb 2018 17:52:02 +0100 Subject: [PATCH] Move grub config into xen-hypervisor-common The grub config snippet is not arch dependent, neither version dependent, so it has to move into a 'common' package. The packages with a version number in their name only have contents that do not conflict with a previous or next version. Having this file in the version dependent xen-hypervisor package currently prevents us from being able to co-install the current and next version of Xen. Since users who install the whole set of hypervisor and utils via the meta package undoubtedly also want to get the example grub config, always install the xen-hypervisor-common package in that case, even if the user ignores Recommends (like I always do). Also see #852545 Signed-off-by: Hans van Kranenburg --- debian/.gitignore | 2 ++ debian/changelog | 1 + debian/rules.real | 23 +++++++++++++++---- debian/templates/control.hypervisor.in | 2 +- debian/templates/control.main.in | 12 ++++++++++ debian/templates/control.system.latest.in | 2 +- .../etc/default/grub.d/xen.cfg} | 0 debian/xen-hypervisor-common.install | 1 + 8 files changed, 36 insertions(+), 7 deletions(-) rename debian/{xen-hypervisor-4.8.xen.cfg => tree/xen-hypervisor-common/etc/default/grub.d/xen.cfg} (100%) create mode 100644 debian/xen-hypervisor-common.install diff --git a/debian/.gitignore b/debian/.gitignore index 166b19dffc..7d60fbd00a 100644 --- a/debian/.gitignore +++ b/debian/.gitignore @@ -16,5 +16,7 @@ __pycache__ /xen-utils-*.*.* !/xen-utils-common.* /xen-utils-common/ +!/xen-hypervisor-common.* +/xen-hypervisor-common/ *.debhelper* *.substvars diff --git a/debian/changelog b/debian/changelog index a1a68b9da0..98bcd5ea25 100644 --- a/debian/changelog +++ b/debian/changelog @@ -35,6 +35,7 @@ xen (4.10.1~pre+2.3921128fcb-1~) UNRELEASED; urgency=medium * Rebase patches against 4.10 upstream source. * Add README.source.md to document how the packaging works. * This package builds correctly with gcc 7. (Closes: #853710) + * Fix grub config file conflict when upgrading from Stretch. (Closes: #852545) [ Mark Pryor ] * Fix shared library build dependencies for the new xentoolcore library. diff --git a/debian/rules.real b/debian/rules.real index 175ac33042..95ecff6cbe 100644 --- a/debian/rules.real +++ b/debian/rules.real @@ -18,7 +18,7 @@ binary-arch-arch: install-utils_$(ARCH) binary-arch-arch: install-xenstore-utils_$(ARCH) binary-arch-flavour: install-hypervisor_$(ARCH)_$(FLAVOUR) -binary-indep: install-utils-common +binary-indep: install-utils-common install-hypervisor-common build-arch-arch: $(STAMPS_DIR)/build-utils_$(ARCH) build-arch-flavour: $(STAMPS_DIR)/build-hypervisor_$(ARCH)_$(FLAVOUR) @@ -137,6 +137,12 @@ $(STAMPS_DIR)/install-utils-common: $(STAMPS_DIR)/build-docs +$(MAKE_CLEAN) -C debian/scripts install touch $@ +$(STAMPS_DIR)/install-hypervisor-common: INSTALL_DIR = $(BUILD_DIR)/install-hypervisor-common +$(STAMPS_DIR)/install-hypervisor-common: $(STAMPS_DIR)/build-docs + @rm -rf $(INSTALL_DIR) + mkdir -p $(INSTALL_DIR) + + install-base: dh_installchangelogs -XChangelog dh_installdirs @@ -163,10 +169,6 @@ install-hypervisor_$(ARCH)_$(FLAVOUR): $(STAMPS_DIR)/build-hypervisor_$(ARCH)_$( dh_testroot dh_prep dh_installdirs boot - # FIXME: Think of better solution (grub used for other arches?) - dh_installdirs etc/default/grub.d - install -D -m644 debian/xen-hypervisor-$(VERSION).xen.cfg \ - debian/$(PACKAGE_NAME)/etc/default/grub.d/xen.cfg dh_install debian/templates/xen-hypervisor.bug/* usr/share/bug/$(PACKAGE_NAME) cp $(DIR)/xen/xen$(IMAGE_SUFFIX) debian/$(PACKAGE_NAME)/boot/xen-$(VERSION)-$(FLAVOUR)$(IMAGE_SUFFIX) ifeq ($(ARCH),amd64) @@ -258,6 +260,17 @@ install-utils-common: $(STAMPS_DIR)/install-utils-common dh_ucf +$(MAKE_SELF) install-base +install-hypervisor-common: DIR = $(BUILD_DIR)/install-hypervisor-common +install-hypervisor-common: PACKAGE_NAME = xen-hypervisor-common +install-hypervisor-common: DH_OPTIONS = -p$(PACKAGE_NAME) +install-hypervisor-common: $(STAMPS_DIR)/install-hypervisor-common + dh_testdir + dh_testroot + dh_prep + dh_install --sourcedir=$(DIR) + dh_ucf + +$(MAKE_SELF) install-base + install-xenstore-utils_$(ARCH): DIR = $(BUILD_DIR)/install-utils_$(ARCH) install-xenstore-utils_$(ARCH): PACKAGE_NAME = xenstore-utils install-xenstore-utils_$(ARCH): DH_OPTIONS = -p$(PACKAGE_NAME) diff --git a/debian/templates/control.hypervisor.in b/debian/templates/control.hypervisor.in index 51a47f100d..b27f748fe0 100644 --- a/debian/templates/control.hypervisor.in +++ b/debian/templates/control.hypervisor.in @@ -1,7 +1,7 @@ Package: xen-hypervisor-@version@@localversion@ Depends: ${misc:Depends} Provides: xen-hypervisor, xen-hypervisor-@version@, xen-hypervisor@localversion@ -Recommends: xen-utils-@version@ +Recommends: xen-utils-@version@, xen-hypervisor-common Description: Xen Hypervisor on @class@ The hypervisor is the "core" for XEN itself. It gets booted by the boot loader and controls cpu and memory, sharing them between your administrative domain diff --git a/debian/templates/control.main.in b/debian/templates/control.main.in index 932a39e854..bb16fef250 100644 --- a/debian/templates/control.main.in +++ b/debian/templates/control.main.in @@ -58,3 +58,15 @@ Description: Xen administrative tools - common files . This package is only required on the host system (Domain 0) and not on the virtual guest systems (Domain U). + +Package: xen-hypervisor-common +Architecture: all +Depends: ${misc:Depends} +Replaces: xen-hypervisor-4.8-amd64, xen-hypervisor-4.8-arm64, xen-hypervisor-4.8-armhf +Description: Xen Hypervisor - common files + The configuration which arranges for an installed hypervisor to + be booted as default, with the right command line arguments passed + to both hypervisor and host (Domain 0) kernel. + . + This package is only required on the host system (Domain 0) and not on + the virtual guest systems (Domain U). diff --git a/debian/templates/control.system.latest.in b/debian/templates/control.system.latest.in index 730002cc48..4130c80d23 100644 --- a/debian/templates/control.system.latest.in +++ b/debian/templates/control.system.latest.in @@ -1,5 +1,5 @@ Package: xen-system@localversion@ -Depends: xen-hypervisor-@version@@localversion@, xen-utils-@version@, ${misc:Depends} +Depends: xen-hypervisor-@version@@localversion@, xen-hypervisor-common, xen-utils-@version@, ${misc:Depends} Provides: xen-system Description: Xen System on @class@ (meta-package) This package depends on the latest Xen hypervisor for use on @class@ and the Xen utils. diff --git a/debian/xen-hypervisor-4.8.xen.cfg b/debian/tree/xen-hypervisor-common/etc/default/grub.d/xen.cfg similarity index 100% rename from debian/xen-hypervisor-4.8.xen.cfg rename to debian/tree/xen-hypervisor-common/etc/default/grub.d/xen.cfg diff --git a/debian/xen-hypervisor-common.install b/debian/xen-hypervisor-common.install new file mode 100644 index 0000000000..f8cfab91e2 --- /dev/null +++ b/debian/xen-hypervisor-common.install @@ -0,0 +1 @@ +../../tree/xen-hypervisor-common/* / -- 2.30.2