From 0d75a04fe824cd0e787a6554a25c7962293cd520 Mon Sep 17 00:00:00 2001 From: Michael Marineau Date: Mon, 14 Apr 2014 16:08:10 -0400 Subject: [PATCH 1/3] feat(app-emulation/xenstore): Add unit to moutn xenfs On Xen-based virtual machines this will automatically mount xenfs so the xenstore utility works out of the box. --- .../app-emulation/xenstore/files/proc-xen.mount | 9 +++++++++ .../{xenstore-4.4.0.ebuild => xenstore-4.4.0-r1.ebuild} | 5 ++++- 2 files changed, 13 insertions(+), 1 deletion(-) create mode 100644 sdk_container/src/third_party/coreos-overlay/app-emulation/xenstore/files/proc-xen.mount rename sdk_container/src/third_party/coreos-overlay/app-emulation/xenstore/{xenstore-4.4.0.ebuild => xenstore-4.4.0-r1.ebuild} (90%) diff --git a/sdk_container/src/third_party/coreos-overlay/app-emulation/xenstore/files/proc-xen.mount b/sdk_container/src/third_party/coreos-overlay/app-emulation/xenstore/files/proc-xen.mount new file mode 100644 index 0000000000..2213272f5c --- /dev/null +++ b/sdk_container/src/third_party/coreos-overlay/app-emulation/xenstore/files/proc-xen.mount @@ -0,0 +1,9 @@ +[Unit] +Before=local-fs.target +DefaultDependencies=false +ConditionVirtualization=xen + +[Mount] +What=xenfs +Where=/proc/xen +Type=xenfs diff --git a/sdk_container/src/third_party/coreos-overlay/app-emulation/xenstore/xenstore-4.4.0.ebuild b/sdk_container/src/third_party/coreos-overlay/app-emulation/xenstore/xenstore-4.4.0-r1.ebuild similarity index 90% rename from sdk_container/src/third_party/coreos-overlay/app-emulation/xenstore/xenstore-4.4.0.ebuild rename to sdk_container/src/third_party/coreos-overlay/app-emulation/xenstore/xenstore-4.4.0-r1.ebuild index 63db44d42e..9e6dcf926f 100644 --- a/sdk_container/src/third_party/coreos-overlay/app-emulation/xenstore/xenstore-4.4.0.ebuild +++ b/sdk_container/src/third_party/coreos-overlay/app-emulation/xenstore/xenstore-4.4.0-r1.ebuild @@ -6,7 +6,7 @@ EAPI=5 PYTHON_COMPAT=( python2_7 ) -inherit multilib python-any-r1 toolchain-funcs +inherit multilib python-any-r1 systemd toolchain-funcs MY_PV=${PV/_/-} S="${WORKDIR}/xen-${MY_PV}" @@ -70,4 +70,7 @@ src_compile() { src_install() { dolib.so tools/xenstore/libxenstore.so* dobin tools/xenstore/xenstore + + systemd_dounit "${FILESDIR}"/proc-xen.mount + systemd_enable_service local-fs.target proc-xen.mount } From 30ae893a5e3d41738cd9a96c4626aa0e61fd67a6 Mon Sep 17 00:00:00 2001 From: Michael Marineau Date: Mon, 14 Apr 2014 17:31:49 -0400 Subject: [PATCH 2/3] add(app-emulation/xenserver-pv-version): Fake XenServer PV drivers XenServer expects virtual machines to run their own version of the Xen para-virtualized drivers and will not attach disks otherwise. This is pretty silly considering the ones bundled in Linux are perfectly fine. In order to work around this write the latest version of XenServer to special variables in xenstore. This will be included in all images rather than OEM since this could impact any XenServer user and I want to write to xenstore as early as possible, possibly even in the initrd. --- .../files/xenserver-pv-version.service | 18 ++++++++++ .../xenserver-pv-version-6.2.0.ebuild | 35 +++++++++++++++++++ 2 files changed, 53 insertions(+) create mode 100644 sdk_container/src/third_party/coreos-overlay/app-emulation/xenserver-pv-version/files/xenserver-pv-version.service create mode 100644 sdk_container/src/third_party/coreos-overlay/app-emulation/xenserver-pv-version/xenserver-pv-version-6.2.0.ebuild diff --git a/sdk_container/src/third_party/coreos-overlay/app-emulation/xenserver-pv-version/files/xenserver-pv-version.service b/sdk_container/src/third_party/coreos-overlay/app-emulation/xenserver-pv-version/files/xenserver-pv-version.service new file mode 100644 index 0000000000..37e243d69a --- /dev/null +++ b/sdk_container/src/third_party/coreos-overlay/app-emulation/xenserver-pv-version/files/xenserver-pv-version.service @@ -0,0 +1,18 @@ +[Unit] +Description=Set fake PV driver version for XenServer +DefaultDependencies=false +Requires=proc-xen.mount +After=proc-xen.mount +IgnoreOnIsolate=true +ConditionVirtualization=xen + +[Service] +Type=oneshot +RemainAfterExit=true +# Only attempt the write if 'attr' exists, it may not. +ExecStart=/bin/sh -c \ + 'if xenstore exists attr; then xenstore write \ + attr/PVAddons/MajorVersion @@MAJOR@@ \ + attr/PVAddons/MinorVersion @@MINOR@@ \ + attr/PVAddons/MicroVersion @@MICRO@@ \ + data/updated 1; fi' diff --git a/sdk_container/src/third_party/coreos-overlay/app-emulation/xenserver-pv-version/xenserver-pv-version-6.2.0.ebuild b/sdk_container/src/third_party/coreos-overlay/app-emulation/xenserver-pv-version/xenserver-pv-version-6.2.0.ebuild new file mode 100644 index 0000000000..1ef244081f --- /dev/null +++ b/sdk_container/src/third_party/coreos-overlay/app-emulation/xenserver-pv-version/xenserver-pv-version-6.2.0.ebuild @@ -0,0 +1,35 @@ +# Copyright 1999-2014 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: $ + +EAPI=5 + +inherit systemd versionator + +DESCRIPTION="Fake data for XenServer's PV driver version detection." +HOMEPAGE="http://xenserver.org/" +SRC_URI="" + +LICENSE="GPL-2" +SLOT="0" +KEYWORDS="amd64" +IUSE="" + +DEPEND="" +RDEPEND="app-emulation/xenstore" + +S="${WORKDIR}" + +src_prepare() { + local split=($(get_version_components)) + sed -e "s/@@MAJOR@@/${split[0]}/" \ + -e "s/@@MINOR@@/${split[1]}/" \ + -e "s/@@MICRO@@/${split[2]}/" \ + "${FILESDIR}"/xenserver-pv-version.service \ + > "${T}"/xenserver-pv-version.service || die +} + +src_install() { + systemd_dounit "${T}"/xenserver-pv-version.service + systemd_enable_service sysinit.target xenserver-pv-version.service +} From 27e34e677318810ea6535d2341d8f0fbee2a8240 Mon Sep 17 00:00:00 2001 From: Michael Marineau Date: Mon, 14 Apr 2014 17:47:34 -0400 Subject: [PATCH 3/3] feat(coreos-base/coreos): Add XenServer compatibility hack --- .../{coreos-0.0.1-r231.ebuild => coreos-0.0.1-r232.ebuild} | 0 .../coreos-overlay/coreos-base/coreos/coreos-0.0.1.ebuild | 1 + 2 files changed, 1 insertion(+) rename sdk_container/src/third_party/coreos-overlay/coreos-base/coreos/{coreos-0.0.1-r231.ebuild => coreos-0.0.1-r232.ebuild} (100%) diff --git a/sdk_container/src/third_party/coreos-overlay/coreos-base/coreos/coreos-0.0.1-r231.ebuild b/sdk_container/src/third_party/coreos-overlay/coreos-base/coreos/coreos-0.0.1-r232.ebuild similarity index 100% rename from sdk_container/src/third_party/coreos-overlay/coreos-base/coreos/coreos-0.0.1-r231.ebuild rename to sdk_container/src/third_party/coreos-overlay/coreos-base/coreos/coreos-0.0.1-r232.ebuild diff --git a/sdk_container/src/third_party/coreos-overlay/coreos-base/coreos/coreos-0.0.1.ebuild b/sdk_container/src/third_party/coreos-overlay/coreos-base/coreos/coreos-0.0.1.ebuild index 31d9e7bd0a..92ad6b75cb 100644 --- a/sdk_container/src/third_party/coreos-overlay/coreos-base/coreos/coreos-0.0.1.ebuild +++ b/sdk_container/src/third_party/coreos-overlay/coreos-base/coreos/coreos-0.0.1.ebuild @@ -95,6 +95,7 @@ RDEPEND="${RDEPEND} RDEPEND="${RDEPEND} app-emulation/xenstore + app-emulation/xenserver-pv-version sys-apps/findutils sys-apps/which app-admin/fleet