diff options
author | Robert Buchholz <rbu@gentoo.org> | 2007-07-08 02:32:11 +0000 |
---|---|---|
committer | Robert Buchholz <rbu@gentoo.org> | 2007-07-08 02:32:11 +0000 |
commit | b4f53d5d3d4f7e534a971390b00ca758bd6182bc (patch) | |
tree | e311b36f752f6984d949cbe8b3b86a2f2895065c /app-emulation | |
download | overlay-b4f53d5d3d4f7e534a971390b00ca758bd6182bc.tar.gz overlay-b4f53d5d3d4f7e534a971390b00ca758bd6182bc.tar.bz2 overlay-b4f53d5d3d4f7e534a971390b00ca758bd6182bc.zip |
Adding Xen 3.1 with kernel 2.6.20
svn path=/; revision=1
Diffstat (limited to 'app-emulation')
16 files changed, 716 insertions, 0 deletions
diff --git a/app-emulation/xen-tools/Manifest b/app-emulation/xen-tools/Manifest new file mode 100644 index 0000000..53ca082 --- /dev/null +++ b/app-emulation/xen-tools/Manifest @@ -0,0 +1,44 @@ +AUX xen-consoles.logrotate 63 RMD160 035bd8baf1ba68a5525bab4379c0c4e350001a74 SHA1 6f88a4da3349aade6070dfc5c4465e2c00f3e68c SHA256 0da87a4b9094f934e3de937e8ef8d3afc752e76793aa3d730182d0241e118b19 +MD5 9df68ac65dc3f372f5d61183abdc83ff files/xen-consoles.logrotate 63 +RMD160 035bd8baf1ba68a5525bab4379c0c4e350001a74 files/xen-consoles.logrotate 63 +SHA256 0da87a4b9094f934e3de937e8ef8d3afc752e76793aa3d730182d0241e118b19 files/xen-consoles.logrotate 63 +AUX xen-tools-3.1.0--as-needed.patch 460 RMD160 97327fdca3c4dd18108766c43feaf81ff74b8b19 SHA1 68417e6a6d7857b47f2b8f5cff90d426b1530efa SHA256 0dd2d75b04a4d22e41f2469959b4e45c477bc7db91721eb2eb2ac2b738350b51 +MD5 a997c2a9fcea45feef6d79cf63173f0e files/xen-tools-3.1.0--as-needed.patch 460 +RMD160 97327fdca3c4dd18108766c43feaf81ff74b8b19 files/xen-tools-3.1.0--as-needed.patch 460 +SHA256 0dd2d75b04a4d22e41f2469959b4e45c477bc7db91721eb2eb2ac2b738350b51 files/xen-tools-3.1.0--as-needed.patch 460 +AUX xen-tools-3.1.0-network-bridge-broadcast.patch 799 RMD160 66eca7e16f254de501ec5e9f91109d4c14aa9c49 SHA1 343948a54800112e86832ec2bb35f1e63f0deb43 SHA256 9d1110a3c36990a2047c5dd5dffcbb823314fe59956a070c76776da7c7cb7c78 +MD5 60b5102840074336e918804aad6cb730 files/xen-tools-3.1.0-network-bridge-broadcast.patch 799 +RMD160 66eca7e16f254de501ec5e9f91109d4c14aa9c49 files/xen-tools-3.1.0-network-bridge-broadcast.patch 799 +SHA256 9d1110a3c36990a2047c5dd5dffcbb823314fe59956a070c76776da7c7cb7c78 files/xen-tools-3.1.0-network-bridge-broadcast.patch 799 +AUX xen-tools-3.1.0-python-site-packages.patch 1205 RMD160 319e95a53b9860358849fef1eea6454a088f3b33 SHA1 8b850508f6caf189d04d5f2938599b5f2efacce4 SHA256 ff26da54fad7ac66b17774963220f265950d28ad167808bf41f9084425eb07d6 +MD5 e95f0b1dfd034e510237b90e9601c095 files/xen-tools-3.1.0-python-site-packages.patch 1205 +RMD160 319e95a53b9860358849fef1eea6454a088f3b33 files/xen-tools-3.1.0-python-site-packages.patch 1205 +SHA256 ff26da54fad7ac66b17774963220f265950d28ad167808bf41f9084425eb07d6 files/xen-tools-3.1.0-python-site-packages.patch 1205 +AUX xen-tools-3.1.0-remove-monitor-mode-from-vnc.patch 625 RMD160 5250f4614ffb7342d00a4d2b91caabdcfaf2fdb2 SHA1 d20bd76593d84bf42d7d847d9bee10f7599dd39c SHA256 7e6b8f98a6c7035151a81969a7862357bfd1806751f3ae7573431118ca732fd7 +MD5 10cba4ecd390bcfee1f17accfde9a7e5 files/xen-tools-3.1.0-remove-monitor-mode-from-vnc.patch 625 +RMD160 5250f4614ffb7342d00a4d2b91caabdcfaf2fdb2 files/xen-tools-3.1.0-remove-monitor-mode-from-vnc.patch 625 +SHA256 7e6b8f98a6c7035151a81969a7862357bfd1806751f3ae7573431118ca732fd7 files/xen-tools-3.1.0-remove-monitor-mode-from-vnc.patch 625 +AUX xend.initd 1187 RMD160 6e5313e02198700204b27e4b02f8579a247aa2a0 SHA1 f16d2d5e014c91b6bc0ff63da717e79b4faada1d SHA256 1e619990ccebe11dab4c6fa1a6e4e0e1101854f633ef9c05836d0e9fba25d5cd +MD5 e62f964336e77b320dcff0321d6166cf files/xend.initd 1187 +RMD160 6e5313e02198700204b27e4b02f8579a247aa2a0 files/xend.initd 1187 +SHA256 1e619990ccebe11dab4c6fa1a6e4e0e1101854f633ef9c05836d0e9fba25d5cd files/xend.initd 1187 +AUX xendomains-screen.confd 594 RMD160 79c7a3546cf1d3f8558c2120d6e8c93c753e66b9 SHA1 7f9ed2986495d5fa4a6f8b050cd632fde6a19994 SHA256 c4d7ffcdbeccc5e93460e2abbf70d642a78a363d79ccbbce0407f50cace54e0a +MD5 65a57a4fae5a300aed8b84c24cdeee42 files/xendomains-screen.confd 594 +RMD160 79c7a3546cf1d3f8558c2120d6e8c93c753e66b9 files/xendomains-screen.confd 594 +SHA256 c4d7ffcdbeccc5e93460e2abbf70d642a78a363d79ccbbce0407f50cace54e0a files/xendomains-screen.confd 594 +AUX xendomains.confd 163 RMD160 4bbf857cdfe7c15b5e3eac437020f4d9ac7dd837 SHA1 bf9a43a4812947189c9bedbf0f1b457f39f50893 SHA256 980eca0fe5723ac9941b28227818c430a16d63786f499f621cf62ddcc99f9aef +MD5 b9420a9887a4b4ca6749006f5586f130 files/xendomains.confd 163 +RMD160 4bbf857cdfe7c15b5e3eac437020f4d9ac7dd837 files/xendomains.confd 163 +SHA256 980eca0fe5723ac9941b28227818c430a16d63786f499f621cf62ddcc99f9aef files/xendomains.confd 163 +AUX xendomains.initd 2168 RMD160 c6dc22f50cf575393cb076c2abfff8b3f24b5540 SHA1 a7f75a7aff0ffdb3ca330f853855b888cfb7f752 SHA256 ed1adcb24e5ffe1c0abc33d6bd69f129b31b3d4f068222ee343809a8dd12b8d0 +MD5 a3b477fa44710894c47b0aeca7d6a57a files/xendomains.initd 2168 +RMD160 c6dc22f50cf575393cb076c2abfff8b3f24b5540 files/xendomains.initd 2168 +SHA256 ed1adcb24e5ffe1c0abc33d6bd69f129b31b3d4f068222ee343809a8dd12b8d0 files/xendomains.initd 2168 +DIST xen-3.1.0-src.tgz 6831094 RMD160 2fd65a3b81e522d0ed2d62fd11e5977167f1ceb3 SHA1 fa4b54c36626f2cce9b15dc99cafda0b42c54777 SHA256 b5d7cea6deeee1439e8883fed4b3f1a8e4f675b4af8148178721f99bd76676b7 +EBUILD xen-tools-3.1.0.ebuild 5903 RMD160 2ff8334ee8146c9f1c6ce15fb8bd90575a75e663 SHA1 3f2eb0b826c5250de5565e50dac40a72a7a8d615 SHA256 8f1aa5ba09d266de8938d75580782681b2b73466ca926cb437a0cf8e0e483ef2 +MD5 bc3cc71873e6b21b555ba0f6b8703129 xen-tools-3.1.0.ebuild 5903 +RMD160 2ff8334ee8146c9f1c6ce15fb8bd90575a75e663 xen-tools-3.1.0.ebuild 5903 +SHA256 8f1aa5ba09d266de8938d75580782681b2b73466ca926cb437a0cf8e0e483ef2 xen-tools-3.1.0.ebuild 5903 +MD5 b2e86effae6681cbbecdbf864b193b4a files/digest-xen-tools-3.1.0 235 +RMD160 2366b7298f0125f11d41aca0c6088c20863dbed1 files/digest-xen-tools-3.1.0 235 +SHA256 12c130912c624791e6855ebeb932368fc8889371876db396055b02ac9a3b9892 files/digest-xen-tools-3.1.0 235 diff --git a/app-emulation/xen-tools/files/digest-xen-tools-3.1.0 b/app-emulation/xen-tools/files/digest-xen-tools-3.1.0 new file mode 100644 index 0000000..e436de9 --- /dev/null +++ b/app-emulation/xen-tools/files/digest-xen-tools-3.1.0 @@ -0,0 +1,3 @@ +MD5 b7ae1f652b071862ae4c90b72d549627 xen-3.1.0-src.tgz 6831094 +RMD160 2fd65a3b81e522d0ed2d62fd11e5977167f1ceb3 xen-3.1.0-src.tgz 6831094 +SHA256 b5d7cea6deeee1439e8883fed4b3f1a8e4f675b4af8148178721f99bd76676b7 xen-3.1.0-src.tgz 6831094 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/xen-tools-3.1.0--as-needed.patch b/app-emulation/xen-tools/files/xen-tools-3.1.0--as-needed.patch new file mode 100644 index 0000000..ab25b9e --- /dev/null +++ b/app-emulation/xen-tools/files/xen-tools-3.1.0--as-needed.patch @@ -0,0 +1,13 @@ +Index: xen-3.1.0-src/tools/xenmon/Makefile +=================================================================== +--- xen-3.1.0-src.orig/tools/xenmon/Makefile ++++ xen-3.1.0-src/tools/xenmon/Makefile +@@ -42,6 +42,6 @@ clean: + + + %: %.c Makefile +- $(CC) $(CFLAGS) $(LDFLAGS) -lxenctrl -o $@ $< ++ $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $< -lxenctrl + xentrace_%: %.c Makefile +- $(CC) $(CFLAGS) $(LDFLAGS) -lxenctrl -o $@ $< ++ $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $< -lxenctrl diff --git a/app-emulation/xen-tools/files/xen-tools-3.1.0-network-bridge-broadcast.patch b/app-emulation/xen-tools/files/xen-tools-3.1.0-network-bridge-broadcast.patch new file mode 100644 index 0000000..31ccf65 --- /dev/null +++ b/app-emulation/xen-tools/files/xen-tools-3.1.0-network-bridge-broadcast.patch @@ -0,0 +1,20 @@ +Index: xen-3.1.0-src/tools/examples/network-bridge +=================================================================== +--- xen-3.1.0-src.orig/tools/examples/network-bridge ++++ xen-3.1.0-src/tools/examples/network-bridge +@@ -70,13 +70,13 @@ vdev="veth${vifnum}" + vif0="vif0.${vifnum}" + + get_ip_info() { +- addr_pfx=`ip addr show dev $1 | egrep '^ *inet' | sed -e 's/ *inet //' -e 's/ .*//'` ++ addr_pfx=`ip addr show dev $1 | egrep '^ *inet' | sed -e 's/ *inet //' -e "s/$1//"` + gateway=`ip route show dev $1 | fgrep default | sed 's/default via //'` + } + + do_ifup() { + if ! ifup $1 ; then +- if [ ${addr_pfx} ] ; then ++ if [ "${addr_pfx}" ] ; then + # use the info from get_ip_info() + ip addr flush $1 + ip addr add ${addr_pfx} dev $1 diff --git a/app-emulation/xen-tools/files/xen-tools-3.1.0-python-site-packages.patch b/app-emulation/xen-tools/files/xen-tools-3.1.0-python-site-packages.patch new file mode 100644 index 0000000..ea5a217 --- /dev/null +++ b/app-emulation/xen-tools/files/xen-tools-3.1.0-python-site-packages.patch @@ -0,0 +1,31 @@ +With xen-3.1.0 on Pardus 2007, "/usr/sbin/xend start" returns "Cannot find Xen +Python modules." cause Xen Python modules installed +into "/usr/lib/python2.4/site-packages/" + +Following patch adds site-packages into search path + +Signed-off-by: S.Çağlar Onur <caglar@pardus.org.tr> + +diff -r aee991c7723a tools/misc/xen-python-path +--- a/tools/misc/xen-python-path Wed May 09 16:34:47 2007 +0100 ++++ b/tools/misc/xen-python-path Sat May 19 02:24:24 2007 +0300 +@@ -30,12 +30,13 @@ import sys + + for p in ['python%s' % sys.version[:3], 'python']: + for l in ['/usr/lib64', '/usr/lib']: +- d = os.path.join(l, p) +- if os.path.exists(os.path.join(d, AUXBIN)): +- sys.path.append(d) +- import xen.util.auxbin +- print os.path.join(xen.util.auxbin.libpath(), p) +- sys.exit(0) ++ for k in ['', 'site-packages/']: ++ d = os.path.join(l, p, k) ++ if os.path.exists(os.path.join(d, AUXBIN)): ++ sys.path.append(d) ++ import xen.util.auxbin ++ print os.path.join(xen.util.auxbin.libpath(), p) ++ sys.exit(0) + + print >>sys.stderr, "Cannot find Xen Python modules." + sys.exit(1) diff --git a/app-emulation/xen-tools/files/xen-tools-3.1.0-remove-monitor-mode-from-vnc.patch b/app-emulation/xen-tools/files/xen-tools-3.1.0-remove-monitor-mode-from-vnc.patch new file mode 100644 index 0000000..b8c7910 --- /dev/null +++ b/app-emulation/xen-tools/files/xen-tools-3.1.0-remove-monitor-mode-from-vnc.patch @@ -0,0 +1,23 @@ +Index: xen-3.1.0-src/tools/ioemu/vnc.c +=================================================================== +--- xen-3.1.0-src.orig/tools/ioemu/vnc.c ++++ xen-3.1.0-src/tools/ioemu/vnc.c +@@ -962,18 +962,6 @@ static void do_key_event(VncState *vs, i + case XK_Num_Lock: + vs->numlock = !vs->numlock; + break; +- +- case XK_1 ... XK_9: +- if ((vs->ctl_keys & 3) != 3) +- break; +- +- console_select(sym - XK_1); +- if (is_graphic_console()) { +- /* tell the vga console to redisplay itself */ +- vga_hw_invalidate(); +- vnc_dpy_update(vs->ds, 0, 0, vs->ds->width, vs->ds->height); +- } +- break; + } + } + } diff --git a/app-emulation/xen-tools/files/xend.initd b/app-emulation/xen-tools/files/xend.initd new file mode 100644 index 0000000..7c24793 --- /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: $ + +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..f1d810d --- /dev/null +++ b/app-emulation/xen-tools/files/xendomains.confd @@ -0,0 +1,7 @@ +# /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 + diff --git a/app-emulation/xen-tools/files/xendomains.initd b/app-emulation/xen-tools/files/xendomains.initd new file mode 100644 index 0000000..6b408f9 --- /dev/null +++ b/app-emulation/xen-tools/files/xendomains.initd @@ -0,0 +1,96 @@ +#!/sbin/runscript +# Copyright 1999-2006 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: $ + +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}/"* 2>/dev/null); 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. + for dom in $(ls "${AUTODIR}/"* 2>/dev/null); do + name=$(get_domname ${dom}) + if is_running ${name} ; then + ebegin " Stopping domain ${name}" + 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/xen-tools-3.1.0.ebuild b/app-emulation/xen-tools/xen-tools-3.1.0.ebuild new file mode 100644 index 0000000..f4dc52d --- /dev/null +++ b/app-emulation/xen-tools/xen-tools-3.1.0.ebuild @@ -0,0 +1,202 @@ +# Copyright 1999-2006 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: $ + +inherit flag-o-matic distutils eutils multilib + +DESCRIPTION="Xend daemon and tools" +HOMEPAGE="http://www.xensource.com/xen/xen/" +MY_PV=${PV/_p/_} +SRC_URI="http://bits.xensource.com/oss-xen/release/${MY_PV/_/-}/src.tgz/xen-${MY_PV}-src.tgz" +S="${WORKDIR}/xen-${MY_PV}-src" + +LICENSE="GPL-2 BSD" +SLOT="0" +KEYWORDS="~amd64 ~x86" +IUSE="doc debug screen custom-cflags pygrub ioemu" + +CDEPEND="dev-lang/python + sys-libs/zlib + ioemu? ( media-libs/libsdl )" + +DEPEND="${CDEPEND} + sys-devel/gcc + dev-lang/perl + sys-devel/dev86 + app-misc/pax-utils + doc? ( + dev-tex/latex2html + media-gfx/transfig + ) + ioemu? ( + x11-proto/xproto + net-libs/libvncserver + )" + +RDEPEND="${CDEPEND} + sys-apps/iproute2 + net-misc/bridge-utils + 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" + +pkg_setup() { + if [[ "$(scanelf -s __guard -q `which python`)" ]] ; then + 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" + fi + + if [[ -z ${XEN_TARGET_ARCH} ]] ; then + if 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 +} + +src_unpack() { + unpack ${A} + cd "${S}" + + # 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 + + # xen tries to be smart and filter out CFLAGs not supported by gcc. + # It doesn't handle no* flags though, but flag-o-matic's test-flag-CC does. + # nopie will not be removed by test-flag, see bug #127659 + for FLAG in -nopie -fno-stack-protector -fno-stack-protector-all; do + test-flag-CC ${FLAG} && HARDFLAGS="${HARDFLAGS} ${FLAG}" + done + sed -i "s/^CFLAGS :=$/& ${HARDFLAGS}/" \ + "${S}"/tools/firmware/{hvmloader,vmxassist}/Makefile + + + # Disable the 32bit-only vmxassist if we are not on x86 and we don't + # support the x86 ABI. Also disable hvmloader, since it requires vmxassist. + if ! use x86 && ! has x86 $(get_all_abis); then + sed -i -e "/SUBDIRS += vmxassist/d" "${S}"/tools/firmware/Makefile + sed -i -e "/SUBDIRS += hvmloader/d" "${S}"/tools/firmware/Makefile + fi + + if ! use pygrub; then + sed -i -e "/^SUBDIRS-y += pygrub$/d" "${S}"/tools/Makefile + fi + + # Don't bother with ioemu, only needed for fully virtualised guests + if ! use ioemu; then + chmod 644 tools/check/check_x11_devel + sed -i -e "/^CONFIG_IOEMU := y$/d" "${S}"/config/*.mk + fi + + # Allow --as-needed LDFLAGS + epatch "${FILESDIR}/${P}"--as-needed.patch + + # Fix vnclisten + #epatch "${FILESDIR}/${P}"-vnclisten.patch + + # Fix network broadcast on bridged networks + epatch "${FILESDIR}/${P}"-network-bridge-broadcast.patch + + # Disable QEMU monitor mode in VNC, bug #170917 + epatch "${FILESDIR}/${P}"-remove-monitor-mode-from-vnc.patch + + # Also look in python's site packages for xen, as it installs there + epatch "${FILESDIR}/${P}"-python-site-packages.patch + + # beat me, but "-include .config" breaks with my system if there's no .config + touch .config +} + +src_compile() { + local myopt myconf + use debug && myopt="${myopt} debug=y" + + use custom-cflags || unset CFLAGS + gcc-specs-ssp && append-flags -fno-stack-protector -fno-stack-protector-all + + if use ioemu; then + myconf="${myconf} --disable-system --disable-user" + (cd tools/ioemu && econf ${myconf}) || die "configure failured" + fi + + emake -C tools ${myopt} || die "compile failed" + + if use doc; then + sh ./docs/check_pkgs || die "package check failed" + emake -C docs || die "compiling docs failed" + fi + + emake -C docs man-pages || die "make man-pages failed" +} + +src_install() { + local myopt="XEN_PYTHON_NATIVE_INSTALL=1" + + emake DESTDIR="${D}" ${myopt} install-tools \ + || die "install failed" + + # Remove RedHat-specific stuff + rm -rf "${D}"/etc/sysconfig + + if use doc; then + make DESTDIR="${D}" -C docs install || die "install docs failed" + # Rename doc/xen to the Gentoo-style doc/xen-x.y + mv "${D}"/usr/share/doc/{${PN},${PF}} + fi + + 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 +} + +pkg_postinst() { + elog "Please visit the Xen and Gentoo wiki:" + elog "http://gentoo-wiki.com/HOWTO_Xen_and_Gentoo" + + 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 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 +} diff --git a/app-emulation/xen/Manifest b/app-emulation/xen/Manifest new file mode 100644 index 0000000..9ac80b7 --- /dev/null +++ b/app-emulation/xen/Manifest @@ -0,0 +1,12 @@ +AUX xen-3.1.0-vpic-set-vector.patch 2664 RMD160 12224733158b3da8ac9d7b8ff1d1c2847d038a70 SHA1 020512dc4efad048f7a0665d31d9420ffecf44fd SHA256 42707ce2dee72753c615fd73cbf5c4829140a94932e5f8376bc924821186483b +MD5 a89c559464bf12d758124a8a33d6b7ab files/xen-3.1.0-vpic-set-vector.patch 2664 +RMD160 12224733158b3da8ac9d7b8ff1d1c2847d038a70 files/xen-3.1.0-vpic-set-vector.patch 2664 +SHA256 42707ce2dee72753c615fd73cbf5c4829140a94932e5f8376bc924821186483b files/xen-3.1.0-vpic-set-vector.patch 2664 +DIST xen-3.1.0-src.tgz 6831094 RMD160 2fd65a3b81e522d0ed2d62fd11e5977167f1ceb3 SHA1 fa4b54c36626f2cce9b15dc99cafda0b42c54777 SHA256 b5d7cea6deeee1439e8883fed4b3f1a8e4f675b4af8148178721f99bd76676b7 +EBUILD xen-3.1.0.ebuild 2941 RMD160 065f7223e23333db873ef0752c2d65f5fa57570d SHA1 9be70fdbbf762ea8d786dd3207f5fdc2ca87e6f2 SHA256 38acb4c426311226ca53a30b33557df5b7b322f203fdd83f838e74f2848a11fa +MD5 69e5193b343231caf400a1453c75c3f6 xen-3.1.0.ebuild 2941 +RMD160 065f7223e23333db873ef0752c2d65f5fa57570d xen-3.1.0.ebuild 2941 +SHA256 38acb4c426311226ca53a30b33557df5b7b322f203fdd83f838e74f2848a11fa xen-3.1.0.ebuild 2941 +MD5 b2e86effae6681cbbecdbf864b193b4a files/digest-xen-3.1.0 235 +RMD160 2366b7298f0125f11d41aca0c6088c20863dbed1 files/digest-xen-3.1.0 235 +SHA256 12c130912c624791e6855ebeb932368fc8889371876db396055b02ac9a3b9892 files/digest-xen-3.1.0 235 diff --git a/app-emulation/xen/files/digest-xen-3.1.0 b/app-emulation/xen/files/digest-xen-3.1.0 new file mode 100644 index 0000000..e436de9 --- /dev/null +++ b/app-emulation/xen/files/digest-xen-3.1.0 @@ -0,0 +1,3 @@ +MD5 b7ae1f652b071862ae4c90b72d549627 xen-3.1.0-src.tgz 6831094 +RMD160 2fd65a3b81e522d0ed2d62fd11e5977167f1ceb3 xen-3.1.0-src.tgz 6831094 +SHA256 b5d7cea6deeee1439e8883fed4b3f1a8e4f675b4af8148178721f99bd76676b7 xen-3.1.0-src.tgz 6831094 diff --git a/app-emulation/xen/files/xen-3.1.0-vpic-set-vector.patch b/app-emulation/xen/files/xen-3.1.0-vpic-set-vector.patch new file mode 100644 index 0000000..46b2200 --- /dev/null +++ b/app-emulation/xen/files/xen-3.1.0-vpic-set-vector.patch @@ -0,0 +1,73 @@ +Date: Tue, 22 May 2007 15:00:35 +0100 +From: "Stephen C. Tweedie" <sct@redhat.com> +Subject: [patch 1/2] HV: allow HVM virtual PICs to have their interrupt vector reprogrammed + + +Hi, + +> So the fix here is to first of all extend the virtual PIC provided by +> the hypervisor, supporting a new 2-byte control sequence which lets the +> guests change the interrupt vectors _without_ fully reinitialising the +> PIC + +And this is the patch for that. The new control sequence is: + +Write 0xff to ICW1: this is an otherwise unused value, since it has bit +4 set (ie. it's an initialisation register write), and yet bits 5--7 are +also set (only valid for MCS-80 mode, which the Xen vPIC doesn't emulate +at all.) This sets the PIC to expect ICW2 to follow, just as ICW1 +usually does, except that it does not reset the PIC internal state. + +Write the new vector to ICW2: completes the initialisation sequence. +This the same as a normal ICW2 write, except that it does not expect to +be followed by the usual ICW3/ICW4 writes. + +Note that the flag used to indicate this "special" ICW1 write is shared +between the two vPICs (master and slave), so it is not legal for the +guest to write 0xff to both master/slave ICW1 before following up with +the ICW2 writes. But since the only software that will use this is the +modified vmxassist, that's OK. + +--Stephen + +--- +Index: xen-3.1.0-src/xen/arch/x86/hvm/vpic.c +=================================================================== +--- xen-3.1.0-src.orig/xen/arch/x86/hvm/vpic.c ++++ xen-3.1.0-src/xen/arch/x86/hvm/vpic.c +@@ -178,13 +178,23 @@ static void vpic_ioport_write(struct hvm + { + int priority, cmd, irq; + uint8_t mask; ++ static int custom_revector_flag = 0; + + vpic_lock(vpic); + + addr &= 1; + if ( addr == 0 ) + { +- if ( val & 0x10 ) ++ if ( val == 0xff ) { ++ /* Extension to the PIC: lets us rewrite the icw2 vector ++ * without fully reinitialising the PIC, used by vmxassist ++ * to preserve icw2 vector translations across transitions ++ * into and back out of 32-bit mode. ++ */ ++ vpic->init_state = 1; ++ custom_revector_flag = 1; ++ } ++ else if ( val & 0x10 ) + { + /* ICW1 */ + /* Clear edge-sensing logic. */ +@@ -268,6 +278,10 @@ static void vpic_ioport_write(struct hvm + /* ICW2 */ + vpic->irq_base = val & 0xf8; + vpic->init_state++; ++ if (custom_revector_flag) { ++ custom_revector_flag = 0; ++ vpic->init_state = 0; ++ } + if ( !(vpic->init_state & 8) ) + break; /* CASCADE mode: wait for write to ICW3. */ + /* SNGL mode: fall through (no ICW3). */ diff --git a/app-emulation/xen/xen-3.1.0.ebuild b/app-emulation/xen/xen-3.1.0.ebuild new file mode 100644 index 0000000..457d4a5 --- /dev/null +++ b/app-emulation/xen/xen-3.1.0.ebuild @@ -0,0 +1,108 @@ +# Copyright 1999-2006 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: $ + +inherit mount-boot flag-o-matic + +DESCRIPTION="The Xen virtual machine monitor" +HOMEPAGE="http://www.xensource.com/xen/xen/" +SRC_URI="http://bits.xensource.com/oss-xen/release/${PV}/src.tgz/xen-${PV}-src.tgz" +S="${WORKDIR}/xen-${PV}-src" + +LICENSE="GPL-2" +SLOT="0" +KEYWORDS="~amd64 ~x86" +IUSE="debug custom-cflags pae" + +RDEPEND="|| ( sys-boot/grub + sys-boot/grub-static ) + >=sys-kernel/xen-sources-2.6.20.14" +PDEPEND="~app-emulation/xen-tools-${PV}" + +RESTRICT="test" + +# Approved by QA team in bug #144032 +QA_WX_LOAD="boot/xen-syms-${PV}" + +pkg_setup() { + if [[ -z ${XEN_TARGET_ARCH} ]]; then + if 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 +} + +src_unpack() { + unpack ${A} + cd "${S}" + + # 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 . -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 + + # xen tries to be smart and filter out CFLAGs not supported by gcc. + # It doesn't handle no* flags though, but flag-o-matic's test-flag-CC does. + + # nopie will not be removed by test-flag, see bug #127659 + for FLAG in -nopie -fno-stack-protector -fno-stack-protector-all; do + test-flag-CC ${FLAG} && HARDFLAGS="${HARDFLAGS} ${FLAG}" + done + sed -i "s/^CFLAGS-y.*__XEN__.*$/& ${HARDFLAGS}/" \ + ./xen/Rules.mk + + # allow HVM virtual PICs to have their interrupt vector reprogrammed + epatch "${FILESDIR}/${P}"-vpic-set-vector.patch + + # beat me, but "-include .config" breaks with my system if there's no .config + touch .config +} + +src_compile() { + local myopt + use debug && myopt="${myopt} debug=y" + use pae && myopt="${myopt} pae=y" + + if use custom-cflags; then + filter-flags -fPIE -fstack-protector + else + unset CFLAGS + fi + + # Send raw LDFLAGS so that --as-needed works + export LDFLAGS="$(raw-ldflags)" + emake xen ${myopt} || die "compile failed" +} + +src_install() { + local myopt + use debug && myopt="${myopt} debug=y" + use pae && myopt="${myopt} pae=y" + + emake DESTDIR="${D}" ${myopt} install-xen || die "install failed" +} + +pkg_postinst() { + elog "Please visit the Xen and Gentoo wiki:" + elog "http://gentoo-wiki.com/HOWTO_Xen_and_Gentoo" + + echo + elog "Note: xen tools have been moved to app-emulation/xen-tools" + + if use pae; then + echo + ewarn "This is a PAE build of Xen. It will *only* boot PAE kernels!" + fi +} |