File xen.spec of Package xen-vgallium

# norootforbuild


Name:           xen-tools-vgallium-dom0
ExclusiveArch:  %ix86 x86_64
%define xvers 3.3
%define xvermaj 3
%define changeset 18494
%define xen_build_dir xen-3.3.1-testing
%define with_kmp 0
%define _unpackaged_files_terminate_build 0
BuildRequires:  LibVNCServer-devel SDL-devel automake bin86 curl-devel dev86 graphviz latex2html libjpeg-devel libxml2-devel ncurses-devel openssl openssl-devel pciutils-devel python-devel transfig hermes-devel
%if %suse_version >= 1030
BuildRequires:  texlive texlive-latex
%else
BuildRequires:  te_ams te_latex tetex
%endif
%ifarch x86_64
BuildRequires:  glibc-32bit glibc-devel-32bit
%endif
%if %{?with_kmp}0
BuildRequires:  xorg-x11
%endif
Version:        3.3.1_18494_03
Release:        1.8
License:        GPL v2 only
Group:          System/Kernel
AutoReqProv:    on
Requires:       xen-libs = %{version}
Requires:       bridge-utils multipath-tools python python-curses python-openssl python-pam python-xml pyxml
Conflicts:      xen-tools
Provides:       xen-tools-ioemu = 3.2
Obsoletes:      xen-tools-ioemu <= 3.2
AutoReqProv:    on
PreReq:         %insserv_prereq %fillup_prereq
Summary:        Xen tools for Vgallium dom0
Source0:        xen-3.3.1-testing-src.tar.bz2
Source2:        README.SuSE
Source3:        boot.xen
Source4:        boot.local.xenU
Source5:        init.xend
Source6:        init.xendomains
Source7:        logrotate.conf
Source8:        domUloader.py
Source9:        xmexample.domUloader
Source10:       xmexample.disks
Source11:       block-nbd
Source12:       block-iscsi
Source13:       block-npiv
Source16:       xmclone.sh
Source17:       xend-relocation.sh
Source18:       init.xen_loop
# Xen API remote authentication sources
Source23:       etc_pam.d_xen-api
Source24:       xenapiusers
# sysconfig hook script for Xen
Source25:       xen-updown.sh
# Upstream patches
Patch0:         18406-constify-microcode.patch
Patch1:         18412-x86-page-type-preemptible.patch
Patch2:         18420-x86-page-type-preemptible-fix.patch
Patch3:         18428-poll-single-port.patch
Patch4:         18446-vtd-dom0-passthrough.patch
Patch5:         18456-vtd-dom0-passthrough-cmdline.patch
Patch6:         18464-cpu-hotplug.patch
Patch7:         18468-therm-control-msr.patch
Patch8:         18471-cpu-hotplug.patch
Patch9:         18475-amd-microcode-update.patch
Patch10:        18481-amd-microcode-update-fix.patch
Patch11:        18483-intel-microcode-update.patch
Patch12:        18484-stubdom-ioemu-makefile.patch
Patch13:        18487-microcode-update-irq-context.patch
Patch14:        18488-microcode-free-fix.patch
Patch15:        18509-continue-hypercall-on-cpu.patch
Patch16:        18519-microcode-retval.patch
Patch17:        18520-per-CPU-GDT.patch
Patch18:        18521-per-CPU-TSS.patch
Patch19:        18523-per-CPU-misc.patch
Patch20:        18528-dump-evtchn.patch
Patch21:        18539-pirq-vector-mapping.patch
Patch22:        18547-pirq-vector-mapping-fix.patch
Patch23:        18573-move-pirq-logic.patch
Patch24:        18574-msi-free-vector.patch
Patch25:        18577-bad-assertion.patch
Patch26:        18583-passthrough-locking.patch
Patch27:        18584-evtchn-lock-rename.patch
Patch28:        18620-x86-page-type-preemptible-fix.patch
Patch29:        18637-vmx-set-dr7.patch
Patch30:        18654-xend-vcpus.patch
Patch31:        18656-vtd-alloc-checks.patch
Patch32:        18661-recursive-spinlocks.patch
Patch33:        18720-x86-dom-cleanup.patch
Patch34:        18722-x86-fixmap-reserved.patch
Patch35:        18723-unmap-dom-page-const.patch
Patch36:        18724-i386-highmem-assist.patch
Patch37:        18731-x86-dom-cleanup.patch
Patch38:        18735-x86-dom-cleanup.patch
Patch39:        18741-x86-dom-cleanup-no-hack.patch
Patch40:        18742-x86-partial-page-ref.patch
Patch41:        18745-xend-ioport-irq.patch
Patch42:        18747-x86-partial-page-ref.patch
Patch43:        18771-reduce-GDT-switching.patch
Patch44:        18778-msi-irq-fix.patch
Patch45:        18764-cpu-affinity.patch
Patch46:        18780-cpu-affinity.patch
Patch47:        18799-cpu-affinity.patch
# Will be fixed in 3.3-testing soon
Patch90:        xen-x86-emulate-movnti.patch
# Our patches
Patch100:       xen-config.diff
Patch101:       xend-config.diff
Patch102:       xen-destdir.diff
Patch103:       xen-rpmoptflags.diff
Patch104:       xen-warnings.diff
Patch106:       xen-changeset.diff
Patch107:       xen-paths.diff
Patch108:       xen-xmexample.diff
Patch109:       xen-xmexample-vti.diff
Patch110:       xen-fixme-doc.diff
Patch111:       xen-domUloader.diff
Patch112:       xen-no-dummy-nfs-ip.diff
Patch113:       serial-split.patch
Patch114:       xen-xm-top-needs-root.diff
Patch115:       xen-tightvnc-args.diff
Patch116:       xen-max-free-mem.diff
Patch120:       xen-ioapic-ack-default.diff
Patch121:       xen-lowmem-emergency-pool.diff
Patch122:       block-losetup-retry.diff
Patch123:       block-flags.diff
Patch124:       xen-hvm-default-bridge.diff
Patch125:       xen-hvm-default-pae.diff
Patch126:       xm-test-cleanup.diff
Patch127:       cross-build-fix.diff
Patch130:       tools-xc_kexec.diff
Patch131:       tools-kboot.diff
Patch132:       libxen_permissive.patch
Patch133:       xenapi-console-protocol.patch
Patch134:       xen-disable-qemu-monitor.diff
Patch135:       supported_module.diff
Patch136:       qemu-security-etch1.diff
Patch137:       rpmlint.diff
Patch140:       cdrom-removable.patch
Patch150:       bridge-opensuse.patch
Patch151:       bridge-vlan.diff
Patch152:       bridge-bonding.diff
Patch153:       bridge-hostonly.diff
Patch154:       bridge-record-creation.patch
Patch155:       xend-core-dump-loc.diff
Patch156:       blktap.patch
Patch157:       xen-api-auth.patch
Patch158:       xen-qemu-iscsi-fix.patch
Patch159:       tools-gdbserver-build.diff
Patch160:       network-route.patch
# Needs to go upstream sometime, when python 2.6 is widespread
Patch161:       python2.6-fixes.patch
Patch162:       udev-rules.patch
Patch163:       ioemu-vnc-resize.patch
# Patches for snapshot support
Patch170:       qemu-img-snapshot.patch
Patch171:       ioemu-blktap-fix-open.patch
Patch172:       snapshot-ioemu-save.patch
Patch173:       snapshot-ioemu-restore.patch
Patch174:       snapshot-ioemu-delete.patch
Patch175:       snapshot-xend.patch
Patch180:       ioemu-qcow2-multiblock-aio.patch
Patch181:       ioemu-blktap-image-format.patch
Patch182:       build-tapdisk-ioemu.patch
Patch183:       blktapctrl-default-to-ioemu.patch
Patch184:       ioemu-blktap-barriers.patch
Patch185:       tapdisk-ioemu-logfile.patch
Patch186:       blktap-ioemu-close-fix.patch
Patch187:       ioemu-blktap-zero-size.patch
# Jim's domain lock patch
Patch190:       xend-domain-lock.patch
# Patches from Jan
Patch240:       dump-exec-state.patch
Patch241:       x86-show-page-walk-early.patch
Patch242:       x86-extra-trap-info.patch
Patch243:       x86-alloc-cpu-structs.patch
Patch244:       32on64-extra-mem.patch
Patch245:       msi-enable.patch
# PV Driver Patches
Patch350:       pv-driver-build.patch
Patch351:       xen-ioemu-hvm-pv-support.diff
Patch352:       pvdrv_emulation_control.patch
Patch353:       blktap-pv-cdrom.patch
Patch354:       x86-cpufreq-report.patch
Patch355:       dom-print.patch
# novell_shim patches
Patch400:       hv_tools.patch
Patch401:       hv_xen_base.patch
Patch402:       hv_xen_extension.patch
# Added for OpenTC
Patch403:       otc-xen.diff
Patch999:       tmp_build.patch
Url:            http://www.cl.cam.ac.uk/Research/SRG/netos/xen/
BuildRoot:      %{_tmppath}/%{name}-%{version}-build
%define pysite %(python -c "import distutils.sysconfig; print distutils.sysconfig.get_python_lib()")

%description
Xen tools modified for Vgallium dom0 components; alters Qemu and xend from their ordinary versions.

Authors:
--------
    Ian Pratt <ian.pratt@cl.cam.ac.uk>
    Keir Fraser <Keir.Fraser@cl.cam.ac.uk>
    Christian Limpach <Christian.Limpach@cl.cam.ac.uk>
    Mark Williamson <mark.williamson@cl.cam.ac.uk>
    Ewan Mellor <ewan@xensource.com>
    Christopher Smowton <cs448@cam.ac.uk>

%prep
%setup -q -n %xen_build_dir
%patch0 -p1
%patch1 -p1
%patch2 -p1
%patch3 -p1
%patch4 -p1
%patch5 -p1
%patch6 -p1
%patch7 -p1
%patch8 -p1
%patch9 -p1
%patch10 -p1
%patch11 -p1
%patch12 -p1
%patch13 -p1
%patch14 -p1
%patch15 -p1
%patch16 -p1
%patch17 -p1
%patch18 -p1
%patch19 -p1
%patch20 -p1
%patch21 -p1
%patch22 -p1
%patch23 -p1
%patch24 -p1
%patch25 -p1
%patch26 -p1
%patch27 -p1
%patch28 -p1
%patch29 -p1
%patch30 -p1
%patch31 -p1
%patch32 -p1
%patch33 -p1
%patch34 -p1
%patch35 -p1
%patch36 -p1
%patch37 -p1
%patch38 -p1
%patch39 -p1
%patch40 -p1
%patch41 -p1
%patch42 -p1
%patch43 -p1
%patch44 -p1
%patch45 -p1
%patch46 -p1
%patch47 -p1
%patch90 -p1
%patch100 -p1
%patch101 -p1
%patch102 -p1
%patch103 -p1
%patch104 -p1
%patch106 -p1
%patch107 -p1
%patch108 -p1
%patch109 -p1
%patch110 -p1
%patch111 -p1
%patch112 -p1
%patch113 -p1
%patch114 -p1
%patch115 -p1
%patch116 -p1
%patch120 -p1
%patch121 -p1
%patch122 -p1
%patch123 -p1
%patch124 -p1
%patch125 -p1
%patch126 -p1
#%patch127 -p1
%patch130 -p1
%patch131 -p1
%patch132 -p1
%patch133 -p1
%patch134 -p1
%patch135 -p1
%patch136 -p1
%patch137 -p1
%patch140 -p1
%patch150 -p1
%patch151 -p1
%patch152 -p1
#%patch153 -p1 hostonly
%patch154 -p1
%patch155 -p1
%patch156 -p1
%patch157 -p1
%patch158 -p1
%patch159 -p1
%patch160 -p1
%patch161 -p1
%patch162 -p1
%patch163 -p1
%patch170 -p1
%patch171 -p1
%patch172 -p1
%patch173 -p1
%patch174 -p1
%patch175 -p1
%patch180 -p1
%patch181 -p1
%patch182 -p1
%patch183 -p1
%patch184 -p1
%patch185 -p1
%patch186 -p1
%patch187 -p1
%patch190 -p1
%patch240 -p1
%patch241 -p1
%patch242 -p1
%patch243 -p1
%patch244 -p1
%patch245 -p1
%patch350 -p1
%patch351 -p1
%patch352 -p1
%patch353 -p1
%patch354 -p1
%patch355 -p1
%patch403 -p1
# Don't use shim for now
%ifarch x86_64
%patch400 -p1
%patch401 -p1
%patch402 -p1
%endif
%patch999 -p1

%build
XEN_EXTRAVERSION=%version-%release
XEN_EXTRAVERSION=${XEN_EXTRAVERSION#%{xvers}}
sed -i "s/XEN_EXTRAVERSION[\t ]*.=.*\$/XEN_EXTRAVERSION  = $XEN_EXTRAVERSION/" xen/Makefile
sed -i "s/XEN_CHANGESET[\t ]*=.*\$/XEN_CHANGESET     = %{changeset}/" xen/Makefile
RPM_OPT_FLAGS=${RPM_OPT_FLAGS//-fstack-protector/}
export CFLAGS="${RPM_OPT_FLAGS}"
export RPM_OPT_FLAGS
make -C tools/include/xen-foreign
make tools
cd tools/debugger/gdb
# there are code problems that don't pass the 02-check-gcc-output, hence bitbucket
./gdbbuild 1>/dev/null 2>/dev/null
cd ../../..

%install
test ! -z "$RPM_BUILD_ROOT" -a "$RPM_BUILD_ROOT" != "/" && rm -rf $RPM_BUILD_ROOT
export CFLAGS="$RPM_OPT_FLAGS" 
export RPM_OPT_FLAGS
make -C tools/include/xen-foreign
# tools
export XEN_PYTHON_NATIVE_INSTALL=1
make -C tools install \
    DESTDIR=$RPM_BUILD_ROOT MANDIR=%{_mandir}
cp tools/debugger/gdb/gdb-6.2.1-linux-i386-xen/gdb/gdbserver/gdbserver-xen $RPM_BUILD_ROOT/usr/bin/gdbserver-xen
make -C tools/misc/serial-split install \
    DESTDIR=$RPM_BUILD_ROOT MANDIR=%{_mandir}
%ifarch x86_64
mkdir -p $RPM_BUILD_ROOT/usr/lib/xen/bin/
ln -s %{_libdir}/xen/bin/qemu-dm $RPM_BUILD_ROOT/usr/lib/xen/bin/qemu-dm
%endif
# docs
make -C docs install \
    DESTDIR=$RPM_BUILD_ROOT MANDIR=%{_mandir} \
    DOCDIR=%{_defaultdocdir}/xen
for name in COPYING %SOURCE2 %SOURCE3 %SOURCE4; do
    install -m 644 $name $RPM_BUILD_ROOT/%{_defaultdocdir}/xen/
done
mkdir -p $RPM_BUILD_ROOT/%{_defaultdocdir}/xen/misc
for name in vtpm.txt crashdb.txt sedf_scheduler_mini-HOWTO.txt; do
    install -m 644 docs/misc/$name $RPM_BUILD_ROOT/%{_defaultdocdir}/xen/misc/
done
# init scripts
mkdir -p $RPM_BUILD_ROOT/etc/init.d
install %SOURCE5 $RPM_BUILD_ROOT/etc/init.d/xend
ln -s /etc/init.d/xend $RPM_BUILD_ROOT/usr/sbin/rcxend
install %SOURCE6 $RPM_BUILD_ROOT/etc/init.d/xendomains
ln -s /etc/init.d/xendomains $RPM_BUILD_ROOT/usr/sbin/rcxendomains
mkdir -p $RPM_BUILD_ROOT/etc/modprobe.d
install -m644 %SOURCE18 $RPM_BUILD_ROOT/etc/modprobe.d/xen_loop
# example config
mkdir -p $RPM_BUILD_ROOT/etc/xen/{vm,examples,scripts}
mv $RPM_BUILD_ROOT/etc/xen/xmexample* $RPM_BUILD_ROOT/etc/xen/examples
rm -f $RPM_BUILD_ROOT/etc/xen/examples/*nbd
install -m644 %SOURCE9 %SOURCE10 $RPM_BUILD_ROOT/etc/xen/examples/
# scripts
rm -f $RPM_BUILD_ROOT/etc/xen/scripts/block-*nbd
install -m755 %SOURCE11 %SOURCE12 %SOURCE13 %SOURCE16 %SOURCE17 $RPM_BUILD_ROOT/etc/xen/scripts/
# Xen API remote authentication files
install -d $RPM_BUILD_ROOT/etc/pam.d
install -m644 %SOURCE23 $RPM_BUILD_ROOT/etc/pam.d/xen-api
install -m644 %SOURCE24 $RPM_BUILD_ROOT/etc/xen/
# sysconfig hook for Xen
mkdir -p $RPM_BUILD_ROOT/etc/sysconfig/network/scripts
mkdir -p $RPM_BUILD_ROOT/etc/sysconfig/network/if-up.d
mkdir -p $RPM_BUILD_ROOT/etc/sysconfig/network/if-down.d
install -m755 %SOURCE25 $RPM_BUILD_ROOT/etc/sysconfig/network/scripts
ln -s /etc/sysconfig/network/scripts/xen-updown.sh $RPM_BUILD_ROOT/etc/sysconfig/network/if-up.d/xen
ln -s /etc/sysconfig/network/scripts/xen-updown.sh $RPM_BUILD_ROOT/etc/sysconfig/network/if-down.d/xen
# logrotate
install -m644 -D %SOURCE7 $RPM_BUILD_ROOT/etc/logrotate.d/xen
# directories
mkdir -p $RPM_BUILD_ROOT/var/lib/xenstored
mkdir -p $RPM_BUILD_ROOT/var/lib/xen/images
mkdir -p $RPM_BUILD_ROOT/var/lib/xen/jobs
mkdir -p $RPM_BUILD_ROOT/var/lib/xen/save
mkdir -p $RPM_BUILD_ROOT/var/lib/xen/dump
mkdir -p $RPM_BUILD_ROOT/var/lib/xen/xend-db/domain
mkdir -p $RPM_BUILD_ROOT/var/lib/xen/xend-db/migrate
mkdir -p $RPM_BUILD_ROOT/var/lib/xen/xend-db/vnet
mkdir -p $RPM_BUILD_ROOT/var/log/xen
mkdir -p $RPM_BUILD_ROOT/var/run/xenstored
ln -s /var/lib/xen/images $RPM_BUILD_ROOT/etc/xen/images
# Bootloader                                                                                                                         
install -m755 %SOURCE8 $RPM_BUILD_ROOT/usr/lib/xen/boot/
# udev support
mkdir -p $RPM_BUILD_ROOT/etc/udev/rules.d
mv $RPM_BUILD_ROOT/etc/udev/rules.d/xen-backend.rules $RPM_BUILD_ROOT/etc/udev/rules.d/40-xen.rules
#%find_lang xen-vm  # po files are misnamed upstream
# Clean up unpackaged files
rm -rf $RPM_BUILD_ROOT/%{_datadir}/doc/xen/qemu/
rm -f  $RPM_BUILD_ROOT/%{_datadir}/doc/qemu/qemu-*
rm -rf $RPM_BUILD_ROOT/%{_defaultdocdir}/xen/ps
rm -rf $RPM_BUILD_ROOT/usr/share/xen/man/man1/qemu/qemu*
rm -f  $RPM_BUILD_ROOT/usr/share/xen/qemu/openbios-sparc32
rm -f  $RPM_BUILD_ROOT/usr/share/xen/qemu/openbios-sparc64
rm -f  $RPM_BUILD_ROOT/usr/sbin/netfix
rm -f  $RPM_BUILD_ROOT/%pysite/*.egg-info
rm -rf $RPM_BUILD_ROOT/html
rm -rf $RPM_BUILD_ROOT/usr/share/doc/xen/README.*
rm -f  $RPM_BUILD_ROOT/%{_libdir}/xen/bin/qemu-dm.debug

%files
%defattr(-,root,root)
#/usr/bin/lomount
/usr/bin/xencons
/usr/bin/xenstore*
/usr/bin/xentrace*
/usr/bin/pygrub
/usr/bin/qemu-img-xen
/usr/bin/tapdisk-ioemu
/usr/bin/gdbserver-xen
/usr/sbin/blktapctrl
/usr/sbin/flask-loadpolicy
/usr/sbin/img2qcow
/usr/sbin/qcow-create
/usr/sbin/qcow2raw
/usr/sbin/rcxend
/usr/sbin/rcxendomains
/usr/sbin/tapdisk
/usr/sbin/xen*
/usr/sbin/xm
/usr/sbin/xsview
/usr/sbin/fs-backend
%dir %{_libdir}/xen
%dir %{_libdir}/xen/bin
%ifarch x86_64
%dir /usr/lib/xen
%dir /usr/lib/xen/bin
%endif
%dir /usr/lib/xen/boot
%{_datadir}/xen/*.dtd
%{_libdir}/xen/bin/readnotes
%{_libdir}/xen/bin/xc_restore
%{_libdir}/xen/bin/xc_save
%{_libdir}/xen/bin/xenconsole
%{_libdir}/xen/bin/xenctx
%{_libdir}/xen/bin/lsevtchn
%{_mandir}/man1/*.1.gz
%{_mandir}/man5/*.5.gz
%{_mandir}/man8/*.8.gz
/var/adm/fillup-templates/*
%dir /var/lib/xen
%dir %attr(700,root,root) /var/lib/xen/images
%dir %attr(700,root,root) /var/lib/xen/save
%dir %attr(700,root,root) /var/lib/xen/dump
%dir /var/lib/xen/xend-db
%dir /var/lib/xen/xend-db/domain
%dir /var/lib/xen/xend-db/migrate
%dir /var/lib/xen/xend-db/vnet
%dir /var/lib/xenstored
%dir /var/log/xen
%dir /var/run/xenstored
/etc/init.d/xend
/etc/init.d/xendomains
%config /etc/logrotate.d/xen
%dir %attr(700,root,root) /etc/xen
/etc/xen/auto
%config /etc/xen/examples
/etc/xen/images
/etc/xen/qemu-ifup
/etc/xen/scripts
/etc/xen/README*
%config /etc/xen/vm
%config /etc/xen/*.sxp
%config /etc/xen/*.xml
%config(noreplace) /etc/xen/xenapiusers
%config /etc/pam.d/xen-api
%config /etc/modprobe.d/xen_loop
%dir /etc/modprobe.d
%dir /etc/udev
%dir /etc/udev/rules.d
/etc/udev/rules.d/40-xen.rules
/etc/sysconfig/network/scripts/xen-updown.sh
/etc/sysconfig/network/if-up.d/xen
/etc/sysconfig/network/if-down.d/xen
%dir %{_defaultdocdir}/xen
%{_defaultdocdir}/xen/COPYING
%{_defaultdocdir}/xen/README.SuSE
%{_defaultdocdir}/xen/boot.local.xenU
%{_defaultdocdir}/xen/boot.xen
%{_defaultdocdir}/xen/misc
%dir %pysite/xen
%dir %pysite/grub
# formerly tools-ioemu
%dir %{_datadir}/xen
%dir %{_datadir}/xen/man
%dir %{_datadir}/xen/man/man1
%dir %{_datadir}/xen/qemu
%dir %{_datadir}/xen/qemu/keymaps
%{_datadir}/xen/qemu/*
%{_datadir}/xen/man/man1/*
%{_libdir}/xen/bin/qemu-dm
%ifarch x86_64
/usr/lib/xen/bin/qemu-dm
/usr/lib64/xen/bin/xc_kexec
%else
/usr/lib/xen/bin/xc_kexec
%endif
/usr/lib/xen/boot/hvmloader
%pysite/xen/*
/usr/lib/xen/boot/domUloader.py
%pysite/grub/*
%pysite/fsimage.so

%clean
#test ! -z "$RPM_BUILD_ROOT" -a "$RPM_BUILD_ROOT" != "/" && rm -rf $RPM_BUILD_ROOT
#rm -rf $RPM_BUILD_DIR/%xen_build_dir

%post
%{fillup_and_insserv -y -n xend xend}
%{fillup_and_insserv -y -n xendomains xendomains}

%preun
%{stop_on_removal xendomains xend}

%postun
%{restart_on_update xend}
%{insserv_cleanup}
openSUSE Build Service is sponsored by