diff options
author | Alexey Shvetsov <alexxy@gentoo.org> | 2009-03-23 12:17:04 +0000 |
---|---|---|
committer | Alexey Shvetsov <alexxy@gentoo.org> | 2009-03-23 12:17:04 +0000 |
commit | ee9916ed6dbe07af481a47d0680fe3a2d421fba6 (patch) | |
tree | 2c5d2c3610a310fccfb316f1dfeae51525becc34 | |
parent | Add live xen-sources (diff) | |
download | xen-ee9916ed6dbe07af481a47d0680fe3a2d421fba6.tar.gz xen-ee9916ed6dbe07af481a47d0680fe3a2d421fba6.tar.bz2 xen-ee9916ed6dbe07af481a47d0680fe3a2d421fba6.zip |
Add live xen-tools
(Portage version: 2.2_rc26/svn/Linux x86_64)
svn path=/overlay/; revision=85
-rw-r--r-- | app-emulation/xen-tools/ChangeLog | 22 | ||||
-rw-r--r-- | app-emulation/xen-tools/files/xen-consoles.logrotate | 5 | ||||
-rw-r--r-- | app-emulation/xen-tools/files/xend.initd | 61 | ||||
-rw-r--r-- | app-emulation/xen-tools/files/xendomains-screen.confd | 15 | ||||
-rw-r--r-- | app-emulation/xen-tools/files/xendomains.confd | 9 | ||||
-rwxr-xr-x | app-emulation/xen-tools/files/xendomains.initd | 108 | ||||
-rw-r--r-- | app-emulation/xen-tools/metadata.xml | 19 | ||||
-rw-r--r-- | app-emulation/xen-tools/xen-tools-9999.ebuild | 256 |
8 files changed, 495 insertions, 0 deletions
diff --git a/app-emulation/xen-tools/ChangeLog b/app-emulation/xen-tools/ChangeLog new file mode 100644 index 0000000..e01537e --- /dev/null +++ b/app-emulation/xen-tools/ChangeLog @@ -0,0 +1,22 @@ +# ChangeLog for app-emulation/xen-tools +# Copyright 1999-2009 Gentoo Foundation; Distributed under the GPL v2 +# $Header: $ + + 27 Feb 2009; Alexey Shvetsov <alexxy@gentoo.org> xen-tools-9999.ebuild: + fix ioemu + + 26 Feb 2009; Alexey Shvetsov <alexxy@gentoo.org> metadata.xml, + xen-tools-9999.ebuild: + Add ioemu support + + 24 Feb 2009; Alexey Shvetsov <alexxy@gentoo.org> xen-tools-9999.ebuild: + Fix tupo. it should be unkeyworded + +*xen-tools-9999 (24 Feb 2009) + + 24 Feb 2009; Alexey Shvetsov <alexxy@gentoo.org> + +files/xen-consoles.logrotate, +files/xend.initd, +files/xendomains.confd, + +files/xendomains.initd, +files/xendomains-screen.confd, +metadata.xml, + +xen-tools-9999.ebuild: + Add xen-tools-9999 + diff --git a/app-emulation/xen-tools/files/xen-consoles.logrotate b/app-emulation/xen-tools/files/xen-consoles.logrotate new file mode 100644 index 0000000..c644523 --- /dev/null +++ b/app-emulation/xen-tools/files/xen-consoles.logrotate @@ -0,0 +1,5 @@ +/var/log/xen-consoles/*.log { + rotate 7 + missingok + compress +} diff --git a/app-emulation/xen-tools/files/xend.initd b/app-emulation/xen-tools/files/xend.initd new file mode 100644 index 0000000..a28c6b4 --- /dev/null +++ b/app-emulation/xen-tools/files/xend.initd @@ -0,0 +1,61 @@ +#!/sbin/runscript +# Copyright 1999-2005 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: /var/cvsroot/gentoo-x86/app-emulation/xen-tools/files/xend.initd,v 1.1 2007/05/02 04:10:04 marineam Exp $ + +opts="start stop status restart" + +depend() { + need net + before xendomains sshd ntp-client ntpd nfs nfsmount rsyncd portmap dhcp +} + +await_daemons_up() { + for ((i=0; i<5; i++)); do + sleep 1 + /usr/sbin/xend status && return 0 + done + return 1 +} + +is_privileged_domain() { + grep -qsE '^control_d$' /proc/xen/capabilities + return $? +} + +start() { + if is_privileged_domain ; then + ebegin "Starting Xen control daemon" + /usr/sbin/xend start + /usr/sbin/xend status || await_daemons_up + eend $? + else + eerror "Can't start xend - this is not a privileged domain." + return 1 + fi +} + +stop() { + if [ "$(xm list | wc -l)" -gt 2 ]; then + ebegin " Stopping all domains" + /usr/sbin/xm shutdown --all --wait >/dev/null + eend $? + fi + + ebegin "Stopping Xen control daemon" + /usr/sbin/xend stop + eend $? + + # This needs more testing (bug #149321) + #ebegin "Stopping xenconsoled" + #kill $(</var/run/xenconsoled.pid) + #eend $? + + #ebegin "Stopping xenstored" + #kill $(</var/run/xenstore.pid) + #eend $? +} + +status() { + is_privileged_domain && /usr/sbin/xend status +} diff --git a/app-emulation/xen-tools/files/xendomains-screen.confd b/app-emulation/xen-tools/files/xendomains-screen.confd new file mode 100644 index 0000000..1482c0a --- /dev/null +++ b/app-emulation/xen-tools/files/xendomains-screen.confd @@ -0,0 +1,15 @@ +# When SCREEN="yes", domains in AUTODIR have their consoles connected to a +# screen session named SCREEN_NAME, with output logged to individual files +# named after each domain and written to /var/log/xen-consoles/ . These files +# are rotated (using app-admin/logrotate) every time xendomains is started. + +SCREEN="yes" +SCREEN_NAME="xen" + +# Number of seconds between writes to screen's logfiles. +# +# Lower values mean more disk activity and hence a possible performance +# impact, but higher values mean a greater chance of loosing some output +# in the event of a crash. + +SCREEN_LOG_INTERVAL="1" diff --git a/app-emulation/xen-tools/files/xendomains.confd b/app-emulation/xen-tools/files/xendomains.confd new file mode 100644 index 0000000..90c1f52 --- /dev/null +++ b/app-emulation/xen-tools/files/xendomains.confd @@ -0,0 +1,9 @@ +# /etc/conf.d/xendomains + +# Directory of domains to boot. AUTODIR should contain one or more symlinks +# to domain config files in /etc/xen +AUTODIR=/etc/xen/auto + +# Send shutdown commands to all domains in parallel instead of waiting for +# each to shutdown individually +PARALLEL_SHUTDOWN=yes diff --git a/app-emulation/xen-tools/files/xendomains.initd b/app-emulation/xen-tools/files/xendomains.initd new file mode 100755 index 0000000..9d8a063 --- /dev/null +++ b/app-emulation/xen-tools/files/xendomains.initd @@ -0,0 +1,108 @@ +#!/sbin/runscript +# Copyright 1999-2006 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: /var/cvsroot/gentoo-x86/app-emulation/xen-tools/files/xendomains.initd,v 1.3 2008/09/01 00:41:08 rbu Exp $ + +opts="start stop status restart" + +depend() { + need xend + after dhcp +} + +get_domname() { + local name_from_file=$(sed -rn 's/^name\W*=\W*\"?([[:alnum:]_\.-]+)\"?\W*;?/\1/p' "${1}" | tail -n 1) + + if [[ -z ${name_from_file} ]] ; then + basename "${1}" + else + echo ${name_from_file} + fi +} + +is_running() { + /usr/sbin/xm list "${1}" >/dev/null 2>&1 +} + +using_screen() { + [[ "${SCREEN}" == "yes" || "${SCREEN}" == "YES" ]] +} + +set_screen_cmd() { + screen_cmd="screen -q -r ${SCREEN_NAME:=xen} -X" +} + +start() { + set_screen_cmd + + einfo "Starting Xen domains from ${AUTODIR:=/etc/xen/auto}" + if using_screen ; then + ebegin "Creating screen session to hold domain consoles" + ( screen -d -m -S ${SCREEN_NAME} -t dom0 \ + && ${screen_cmd} zombie dr \ + && logrotate -f /etc/xen/xen-consoles.logrotate \ + && ${screen_cmd} logfile /var/log/xen-consoles/%t.log \ + && ${screen_cmd} logfile flush ${SCREEN_LOG_INTERVAL:-1} \ + && ${screen_cmd} log on \ + && ${screen_cmd} deflog on ) >/dev/null + if [[ $? -ne 0 ]] ; then + eend 1 + return 1 + else + eend + fi + fi + # Create all domains with config files in AUTODIR. + for dom in $(ls "${AUTODIR:=/etc/xen/auto}/"* 2>/dev/null | sort); do + name=$(get_domname ${dom}) + if ! is_running ${name} ; then + ebegin " Starting domain ${name}" + if using_screen ; then + ${screen_cmd} screen -t ${name} xm create ${dom} -c + else + xm create --quiet ${dom} + fi + eend $? + else + einfo " Not starting domain ${name} - already running" + fi + done +} + +stop() { + set_screen_cmd + + einfo "Shutting down Xen domains from ${AUTODIR:=/etc/xen/auto}" + # Stop all domains with config files in AUTODIR. + DOMAINS="$(ls "${AUTODIR:=/etc/xen/auto}/"* 2>/dev/null | sort -r)" + + if [[ "$PARALLEL_SHUTDOWN" = "yes" ]] ; then + for dom in $DOMAINS ; do + name=$(get_domname ${dom}) + if is_running ${name} ; then + ebegin " Asking domain ${name} to shutdown..." + xm shutdown ${name} >/dev/null + eend $? + fi + done + fi + for dom in $DOMAINS ; do + name=$(get_domname ${dom}) + if is_running ${name} ; then + ebegin " Waiting for domain ${name} to shutdown" + xm shutdown --wait ${name} >/dev/null + eend $? + else + einfo " Not stopping domain ${name} - not running" + fi + done + if using_screen ; then + ebegin "Closing screen session ${SCREEN_NAME}" + ${screen_cmd} quit + eend $? + fi +} + +status() { + /usr/sbin/xm list +} diff --git a/app-emulation/xen-tools/metadata.xml b/app-emulation/xen-tools/metadata.xml new file mode 100644 index 0000000..3bc0aca --- /dev/null +++ b/app-emulation/xen-tools/metadata.xml @@ -0,0 +1,19 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd"> +<pkgmetadata> +<herd>xen</herd> +<use> + <flag name='custom-cflags'>Use CFLAGS from /etc/make.conf rather than the + default Xen CFLAGS (not supported)</flag> + <flag name='hvm'>Enable support for hardware based virtualization (VT-x, + AMD-v</flag> + <flag name='pygrub'>Install the pygrub boot loader</flag> + <flag name='screen'>Enable support for running domain U console in an + <pkg>app-misc/screen</pkg> session</flag> + <flag name='acm'>Enable the ACM/sHype XSM module from IBM</flag> + <flag name='flask'>Enable the Flask XSM module from NSA</flag> + <flag name='api'>Build the C libxenapi bindings</flag> + <flag name='ioemu'>Enable ioemu support for HVM guests</flag> +<!-- <flag name='vtpm'>Enable TPM emulation</flag> --> +</use> +</pkgmetadata> diff --git a/app-emulation/xen-tools/xen-tools-9999.ebuild b/app-emulation/xen-tools/xen-tools-9999.ebuild new file mode 100644 index 0000000..6718c10 --- /dev/null +++ b/app-emulation/xen-tools/xen-tools-9999.ebuild @@ -0,0 +1,256 @@ +# Copyright 1999-2009 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: /var/cvsroot/gentoo-x86/app-emulation/xen-tools/xen-tools-3.3.0.ebuild,v 1.1 2008/09/01 00:41:07 rbu Exp $ + +inherit flag-o-matic eutils multilib python mercurial + +# TPMEMUFILE=tpm_emulator-0.4.tar.gz + +DESCRIPTION="Xend daemon and tools" +HOMEPAGE="http://xen.org/" +REPO="xen-unstable.hg" +EHG_REPO_URI="http://xenbits.xensource.com/${REPO}" +S="${WORKDIR}/${REPO}" + +LICENSE="GPL-2" +SLOT="0" +KEYWORDS="" +IUSE="doc debug screen custom-cflags pygrub hvm api acm flask ioemu" + +CDEPEND="dev-lang/python + sys-libs/zlib + hvm? ( media-libs/libsdl ) + acm? ( dev-libs/libxml2 ) + api? ( dev-libs/libxml2 net-misc/curl )" +# vtpm? ( dev-libs/gmp dev-libs/openssl ) + +DEPEND="${CDEPEND} + sys-devel/gcc + dev-lang/perl + app-misc/pax-utils + doc? ( + app-doc/doxygen + dev-tex/latex2html + media-gfx/transfig + media-gfx/graphviz + ) + hvm? ( + x11-proto/xproto + sys-devel/dev86 + )" + +RDEPEND="${CDEPEND} + sys-apps/iproute2 + net-misc/bridge-utils + dev-python/pyxml + screen? ( + app-misc/screen + app-admin/logrotate + ) + || ( sys-fs/udev sys-apps/hotplug )" + +PYTHON_MODNAME="xen grub" + +# hvmloader is used to bootstrap a fully virtualized kernel +# Approved by QA team in bug #144032 +QA_WX_LOAD="usr/lib/xen/boot/hvmloader" +QA_EXECSTACK="usr/share/xen/qemu/openbios-sparc32 + usr/share/xen/qemu/openbios-sparc64" + +pkg_setup() { + export "CONFIG_LOMOUNT=y" + + if use ioemu; then + export "CONFIG_IOEMU=y" + else + export "CONFIG_IOEMU=n" + fi + + if ! use x86 && ! has x86 $(get_all_abis) && use hvm; then + eerror "HVM (VT-x and AMD-v) cannot be built on this system. An x86 or" + eerror "an amd64 multilib profile is required. Remove the hvm use flag" + eerror "to build xen-tools on your current profile." + die "USE=hvm is unsupported on this system." + fi + + if [[ -z ${XEN_TARGET_ARCH} ]] ; then + if use x86 && use amd64; then + die "Confusion! Both x86 and amd64 are set in your use flags!" + elif use x86; then + export XEN_TARGET_ARCH="x86_32" + elif use amd64 ; then + export XEN_TARGET_ARCH="x86_64" + else + die "Unsupported architecture!" + fi + fi + + if use doc && ! built_with_use -o dev-tex/latex2html png gif; then + # die early instead of later + eerror "USE=doc requires latex2html with image support. Please add" + eerror "'png' and/or 'gif' to your use flags and re-emerge latex2html" + die "latex2html missing both png and gif flags" + fi + + if use pygrub && ! built_with_use dev-lang/python ncurses; then + eerror "USE=pygrub requires python to be built with ncurses support. Please add" + eerror "'ncurses' to your use flags and re-emerge python" + die "python is missing ncurses flags" + fi + + if ! built_with_use dev-lang/python threads; then + eerror "Python is required to be built with threading support. Please add" + eerror "'threads' to your use flags and re-emerge python" + die "python is missing threads flags" + fi + +# use vtpm && export "VTPM_TOOLS=y" + use api && export "LIBXENAPI_BINDINGS=y" + use acm && export "ACM_SECURITY=y" + use flask && export "FLASK_ENABLE=y" +} + +src_unpack() { + mercurial_src_unpack + cd "${S}" +# use vtpm && cp "${DISTDIR}"/${TPMEMUFILE} tools/vtpm + + # if the user *really* wants to use their own custom-cflags, let them + if use custom-cflags; then + einfo "User wants their own CFLAGS - removing defaults" + # try and remove all the default custom-cflags + find "${S}" -name Makefile -o -name Rules.mk -o -name Config.mk -exec sed \ + -e 's/CFLAGS\(.*\)=\(.*\)-O3\(.*\)/CFLAGS\1=\2\3/' \ + -e 's/CFLAGS\(.*\)=\(.*\)-march=i686\(.*\)/CFLAGS\1=\2\3/' \ + -e 's/CFLAGS\(.*\)=\(.*\)-fomit-frame-pointer\(.*\)/CFLAGS\1=\2\3/' \ + -e 's/CFLAGS\(.*\)=\(.*\)-g3*\s\(.*\)/CFLAGS\1=\2 \3/' \ + -e 's/CFLAGS\(.*\)=\(.*\)-O2\(.*\)/CFLAGS\1=\2\3/' \ + -i {} \; + fi + + # Disable hvm support on systems that don't support x86_32 binaries. + if ! use hvm; then + chmod 644 tools/check/check_x11_devel + sed -i -e '/^CONFIG_IOEMU := y$/d' "${S}"/config/*.mk + sed -i -e '/SUBDIRS-$(CONFIG_X86) += firmware/d' "${S}"/tools/Makefile + fi + + if ! use pygrub; then + sed -i -e '/^SUBDIRS-$(PYTHON_TOOLS) += pygrub$/d' "${S}"/tools/Makefile + fi + # Don't bother with ioemu, only needed for fully virtualised guests + if ! use ioemu; then + sed -i -e "/^CONFIG_IOEMU := y$/d" "${S}"/config/*.mk + sed -i -e "s:install-tools\: tools/ioemu-dir:install-tools\: :g" \ + "${S}/Makefile" + fi +} + +src_compile() { + export VARTEXFONTS="${T}/fonts" + local myopt + use debug && myopt="${myopt} debug=y" + + use custom-cflags || unset CFLAGS + if test-flag-CC -fno-strict-overflow; then + append-flags -fno-strict-overflow + fi + + emake -C tools ${myopt} || die "compile failed" + + if use doc; then + sh ./docs/check_pkgs || die "package check failed" + emake docs || die "compiling docs failed" + emake dev-docs || die "make dev-docs failed" + fi + + emake -C docs man-pages || die "make man-pages failed" +} + +src_install() { + make DESTDIR="${D}" DOCDIR="/usr/share/doc/${PF}" XEN_PYTHON_NATIVE_INSTALL=y install-tools \ + || die "install failed" + + # Remove RedHat-specific stuff + rm -rf "${D}"/etc/sysconfig + + dodoc README docs/README.xen-bugtool docs/ChangeLog + if use doc; then + emake DESTDIR="${D}" DOCDIR="/usr/share/doc/${PF}" install-docs \ + || die "install docs failed" + + dohtml -r docs/api/ + docinto pdf + dodoc docs/api/tools/python/latex/refman.pdf + + [ -d "${D}"/usr/share/doc/xen ] && mv "${D}"/usr/share/doc/xen/* "${D}"/usr/share/doc/${PF}/html + fi + rm -rf "${D}"/usr/share/doc/xen/ + + doman docs/man?/* + + newinitd "${FILESDIR}"/xend.initd xend \ + || die "Couldn't install xen.initd" + newconfd "${FILESDIR}"/xendomains.confd xendomains \ + || die "Couldn't install xendomains.confd" + newinitd "${FILESDIR}"/xendomains.initd xendomains \ + || die "Couldn't install xendomains.initd" + + if use screen; then + cat "${FILESDIR}"/xendomains-screen.confd >> "${D}"/etc/conf.d/xendomains + cp "${FILESDIR}"/xen-consoles.logrotate "${D}"/etc/xen/ + keepdir /var/log/xen-consoles + fi + + # xend expects these to exist + keepdir /var/run/xenstored /var/lib/xenstored /var/xen/dump /var/lib/xen /var/log/xen + + # for xendomains + keepdir /etc/xen/auto +} + +pkg_postinst() { + elog "Official Xen Guide and the unoffical wiki page:" + elog " http://www.gentoo.org/doc/en/xen-guide.xml" + elog " http://gentoo-wiki.com/HOWTO_Xen_and_Gentoo" + + if [[ "$(scanelf -s __guard -q $(type -P python))" ]] ; then + echo + ewarn "xend may not work when python is built with stack smashing protection (ssp)." + ewarn "If 'xm create' fails with '<ProtocolError for /RPC2: -1 >', see bug #141866" + ewarn "This probablem may be resolved as of Xen 3.0.4, if not post in the bug." + fi + + if ! built_with_use dev-lang/python ncurses; then + echo + ewarn "NB: Your dev-lang/python is built without USE=ncurses." + ewarn "Please rebuild python with USE=ncurses to make use of xenmon.py." + fi + + if built_with_use sys-apps/iproute2 minimal; then + echo + ewarn "Your sys-apps/iproute2 is built with USE=minimal. Networking" + ewarn "will not work until you rebuild iproute2 without USE=minimal." + fi + + if ! use hvm; then + echo + elog "HVM (VT-x and AMD-V) support has been disabled. If you need hvm" + elog "support enable the hvm use flag." + elog "An x86 or amd64 multilib system is required to build HVM support." + echo + elog "The ioemu use flag has been removed and replaced with hvm." + fi + + if grep -qsF XENSV= "${ROOT}/etc/conf.d/xend"; then + echo + elog "xensv is broken upstream (Gentoo bug #142011)." + elog "Please remove '${ROOT%/}/etc/conf.d/xend', as it is no longer needed." + fi + + python_mod_optimize +} + +pkg_postrm() { + python_mod_cleanup +} |