# vim: syntax=spec
. ./xen/xen-version
. ./.env.sh
%if 0%{with_hypervisor}
install_xen()
{
%ifarch x86_64
    local ext=""
    find %{buildroot}${XEN_BOOT_DIR} %{buildroot}${XEN_EFI_DIR} %{buildroot}${XEN_DEBUG_DIR} -ls
    if [ -n "$1" ]; then
        ext="-$1"
        mv %{buildroot}${XEN_BOOT_DIR}/xen-${XEN_FULLVERSION}%{xen_install_suffix} \
           %{buildroot}${XEN_BOOT_DIR}/xen${ext}-${XEN_FULLVERSION}%{xen_install_suffix}
        rm -fv \
          %{buildroot}${XEN_EFI_DIR}/xen-$XEN_VERSION.$XEN_SUBVERSION.efi \
          %{buildroot}${XEN_EFI_DIR}/xen-$XEN_VERSION.efi \
          %{buildroot}${XEN_EFI_DIR}/xen.efi \
          %{nil}
        mv %{buildroot}${XEN_EFI_DIR}/xen-${XEN_FULLVERSION}.efi \
           %{buildroot}${XEN_EFI_DIR}/xen${ext}-${XEN_FULLVERSION}.efi
        ln -sf xen${ext}-${XEN_FULLVERSION}.efi %{buildroot}${XEN_EFI_DIR}/xen${ext}.efi
        if test -e %{buildroot}${XEN_DEBUG_DIR}/xen-${XEN_FULLVERSION}.efi.map
        then
        mv %{buildroot}${XEN_DEBUG_DIR}/xen-${XEN_FULLVERSION}.efi.map \
           %{buildroot}${XEN_DEBUG_DIR}/xen${ext}-${XEN_FULLVERSION}.efi.map
        fi
        if test -e %{buildroot}${XEN_DEBUG_DIR}/xen-syms-${XEN_FULLVERSION}.map
        then
        mv %{buildroot}${XEN_DEBUG_DIR}/xen-syms-${XEN_FULLVERSION}.map \
           %{buildroot}${XEN_DEBUG_DIR}/xen-syms${ext}-${XEN_FULLVERSION}.map
        fi
        mv %{buildroot}${XEN_DEBUG_DIR}/xen-syms-${XEN_FULLVERSION} \
           %{buildroot}${XEN_DEBUG_DIR}/xen-syms${ext}-${XEN_FULLVERSION}
    fi
    rm -fv \
      %{buildroot}${XEN_BOOT_DIR}/xen-$XEN_VERSION.$XEN_SUBVERSION%{xen_install_suffix} \
      %{buildroot}${XEN_BOOT_DIR}/xen-$XEN_VERSION%{xen_install_suffix} \
      %{buildroot}${XEN_BOOT_DIR}/xen%{xen_install_suffix} \
      %{nil}
    ln -s xen${ext}-${XEN_FULLVERSION}%{xen_install_suffix} %{buildroot}${XEN_BOOT_DIR}/xen${ext}%{xen_install_suffix}
    find %{buildroot}${XEN_BOOT_DIR} %{buildroot}${XEN_EFI_DIR} %{buildroot}${XEN_DEBUG_DIR} -ls
%endif
:
}
#
if test "$debug_symbols" = "y"
then
	pushd dbg
	bash build_xen.sh install-xen
	install_xen dbg
	popd
fi
%endif
#
pushd non-dbg
%if 0%{with_hypervisor}
bash build_xen.sh install-xen
install_xen
%endif
#
echo > ../xen.files.txt
if test -d "%{buildroot}${XEN_EFI_DIR}"
then
	case "${XEN_EFI_DIR}" in
	%{_libdir}/*) ;;
	*)
	echo "%%dir ${XEN_EFI_DIR%%/*}" >> ../xen.files.txt
	;;
	esac
	echo "${XEN_EFI_DIR}" >> ../xen.files.txt
fi
# tools
make \
	CC=$CC \
	GCC=$CC \
	HOSTCC=$CC \
	HOST_CC=$CC \
	BUILD_CC=$CC \
	%{?_smp_mflags} -k \
	DESTDIR=%{buildroot} \
	SYSCONFIG_DIR=%{_fillupdir} \
	DOCDIR=%{_defaultdocdir}/xen \
	PKG_INSTALLDIR=%{_libdir}/pkgconfig \
	BASH_COMPLETION_DIR=%{_datadir}/bash-completion/completions \
	debug_symbols=$debug_symbols \
	install
find %{buildroot} -ls
if test -f %{buildroot}%{_datadir}/bash-completion/completions/xl.sh
then
	mv -v \
		%{buildroot}%{_datadir}/bash-completion/completions/xl.sh \
		%{buildroot}%{_datadir}/bash-completion/completions/xl
fi
for i in %{buildroot}%{_fillupdir}/*
do
	mv -v $i ${i%%/*}/sysconfig.${i##*/}
done
%if %{with xen_systemd}
rm -rfv %{buildroot}%{_initddir}
mods="`
for conf in $(ls %{buildroot}%{_unitdir}/*.conf)
do
        grep -v ^# $conf
        rm -f $conf
done | xargs
`"
unit=%{buildroot}%{_unitdir}/xen-dom0-modules.service
tee ${unit} <<_EOS_
[Unit]
Description=Load dom0 backend drivers
ConditionPathExists=/proc/xen
Before=xenstored.service xen-watchdog.service

[Install]
WantedBy=multi-user.target

[Service]
Type=oneshot
RemainAfterExit=true
Environment=PATH=/usr/local/sbin:/usr/sbin:/sbin:/usr/local/bin:/usr/bin:/bin
ExecStart=-/bin/sh -c "echo '$mods' | xargs --no-run-if-empty --max-args=1 modprobe -v ; exit 0"
_EOS_
unit=%{buildroot}%{_unitdir}/xencommons.service
tee ${unit} <<_EOS_
[Unit]
Description=xencommons
ConditionPathExists=/proc/xen/capabilities

# Pull in all upstream service files
Requires=proc-xen.mount
After=proc-xen.mount
Requires=xen-dom0-modules.service
After=xen-dom0-modules.service
Requires=xenstored.service
After=xenstored.service
Requires=xenconsoled.service
After=xenconsoled.service
Requires=xen-init-dom0.service
After=xen-init-dom0.service
Requires=xen-qemu-dom0-disk-backend.service
After=xen-qemu-dom0-disk-backend.service

# Make sure network (for bridge) and remote mounts (for xendomains) are available ...
After=network-online.target
After=remote-fs.target

# ... for libvirt and xendomains
Before=xendomains.service libvirtd.service

[Service]
Type=oneshot
RemainAfterExit=true
ExecStartPre=/bin/grep -q control_d /proc/xen/capabilities
ExecStart=/usr/bin/xenstore-ls -f
ExecStartPost=/bin/sh -c 'mv -vf /var/log/xen/xen-boot.log /var/log/xen/xen-boot.prev.log ; /usr/sbin/xl dmesg > /var/log/xen/xen-boot.log'

[Install]
WantedBy=multi-user.target
_EOS_

%endif
# Stubdom
rm -v -f %{buildroot}/usr/sbin/{qcow-create,img2qcow,qcow2raw}
%if %{with xen_kmp}
# pv driver modules
export INSTALL_MOD_PATH=%{buildroot}
export INSTALL_MOD_DIR=updates
for flavor in %flavors_to_build; do
    make -C /usr/src/linux-obj/%_target_cpu/$flavor modules_install \
-k \
        M=$PWD/obj/$flavor
done
%endif


mkdir -vp %{buildroot}%{_defaultdocdir}/%{name}/misc
for name in crashdb.txt ; do
    install -m 644 docs/misc/$name %{buildroot}%{_defaultdocdir}/%{name}/misc/
done
# directories
mkdir -vp %{buildroot}/var/lib/xenstored
mkdir -vp %{buildroot}/var/lib/xen/images
mkdir -vp %{buildroot}/var/lib/xen/jobs
mkdir -vp %{buildroot}/var/lib/xen/save
mkdir -vp %{buildroot}/var/lib/xen/dump
mkdir -vp %{buildroot}/var/log/xen
popd
find %{buildroot}/usr/share/doc/ -type f -name .deps -print -delete
# contains compiler version
find %{buildroot} -name "*ivshmem*" -type f -print -delete
# Remove non-x86 firmware files
find %{buildroot}%{_datadir} -xdev \( \
	-name "*.dtb" -o \
	-name "*ppc*" -o \
	-name "*e500*" -o \
	-name "*hppa*" -o \
	-name "*sparc*" -o \
	-name "*slof*" -o \
	-name "*riscv*" -o \
	-name "*rtas*" -o \
	-name "*s390*" -o \
	-name "palcode-clipper" \) \
	-exec rm -rfv '{}' + \
	%nil
# Clean up unpackaged files
rm -v -rf %{buildroot}/etc/xen/README*
rm -v -rf %{buildroot}/usr/local
rm -v -rf %{buildroot}%{_datadir}/doc/xen/qemu/
rm -v -f  %{buildroot}%{_datadir}/doc/qemu/qemu-*
rm -v -rf %{buildroot}%{_defaultdocdir}/%{name}/ps
rm -v -rf %{buildroot}%{_datadir}/xen/man
rm -v -f  %{buildroot}/usr/sbin/netfix
rm -v -rf %{buildroot}/%{_libdir}/python*/site-packages/*.egg-info
rm -v -rf %{buildroot}/html
rm -v -rf %{buildroot}%{_defaultdocdir}/%{name}/README.stubdom
rm -v -rf %{buildroot}%{_defaultdocdir}/%{name}/README.xenmon
rm -v -rf %{buildroot}%{_datadir}/doc/xen/README.xenmon
rm -v -rf %{buildroot}%{_datadir}/doc/xen/README.blktap
rm -v -f  %{buildroot}%{_datadir}/xen/create.dtd
rm -v -f  %{buildroot}/%{_libdir}/xen/bin/qemu-dm.debug
rm -v -f  %{buildroot}/%{_bindir}/qemu-img-xen
rm -v -f  %{buildroot}/%{_bindir}/qemu-nbd-xen
rm -v -f  %{buildroot}/usr/etc/qemu/target*.conf
rm -v -f  %{buildroot}/usr/libexec/qemu-bridge-helper
# FATE feature for remus rejected
rm -v -f  %{buildroot}/%{_bindir}/remus
rm -v -rf %{buildroot}/%{_libdir}/python*/site-packages/xen/remus

find \
%{buildroot}%{_libdir}/python* \
	| sed -e "
s@^%{buildroot}@@
/\.py$/ {
s@^.*@%config &@
p
d
}
/\.pyc$/ {
p
d
}
/\.pyo$/ {
p
d
}
/\.so$/ {
p
d
}
s@^.*@%dir &@
" | tee xen-tools.python.files.txt

%if %{with fdupes}
if test -x "$(type -P fdupes)"
then
%fdupes %{buildroot}/usr/share
fi
%endif

