From a54ee4b060df4dfe115103a83f88d61814069f51 Mon Sep 17 00:00:00 2001 From: Michael Young Date: Dec 18 2017 21:09:00 +0000 Subject: add configuration for partial builds --- diff --git a/xen.spec b/xen.spec index 4ec7854..0c9075f 100644 --- a/xen.spec +++ b/xen.spec @@ -3,6 +3,17 @@ # or ocamlopt is missing (the xen makefile doesn't build ocaml bits if it isn't there) %define with_ocaml %{?_without_ocaml: 0} %{?!_without_ocaml: 1} %define build_ocaml %(test -x %{_bindir}/ocamlopt && echo %{with_ocaml} || echo 0) +# Build with docs unless rpmbuild was run with --without docs +%define build_docs %{?_without_docs: 0} %{?!_without_docs: 1} +# Build with stubdom unless rpmbuild was run with --without stubdom +%define build_stubdom %{?_without_stubdom: 0} %{?!_without_stubdom: 1} +# Build with qemu-traditional unless rpmbuild was run with --without qemutrad +%define build_qemutrad %{?_without_qemutrad: 0} %{?!_without_qemutrad: 1} +%if ! %build_qemutrad +%define build_stubdom 0 +%endif +# Build with xen hypervisor unless rpmbuild was run with --without hyp +%define build_hyp %{?_without_hyp: 0} %{?!_without_hyp: 1} # build xsm support unless rpmbuild was run with --without xsm # or required packages are missing %define with_xsm %{?_without_xsm: 0} %{?!_without_xsm: 1} @@ -12,16 +23,15 @@ %define build_crosshyp %{?_without_crosshyp: 0} %{?!_without_crosshyp: 1} %ifnarch %{ix86} %define build_crosshyp 0 -%define build_hyp 1 -%else -%if %build_crosshyp -%define build_hyp 1 %else +%if ! %build_crosshyp %define build_hyp 0 +%endif +%endif # no point in trying to build xsm on ix86 without a hypervisor +%if ! %build_hyp %define build_xsm 0 %endif -%endif # build an efi boot image (where supported) unless rpmbuild was run with # --without efi %define build_efi %{?_without_efi: 0} %{?!_without_efi: 1} @@ -108,22 +118,21 @@ Patch73: qemu.trad.CVE-2017-9330.patch BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root -BuildRequires: transfig libidn-devel zlib-devel texi2html SDL-devel curl-devel -BuildRequires: libX11-devel python2-devel ghostscript texlive-latex -%if "%dist" >= ".fc18" -BuildRequires: texlive-times texlive-courier texlive-helvetic texlive-ntgclass +%if %build_qemutrad +BuildRequires: libidn-devel zlib-devel SDL-devel curl-devel +BuildRequires: libX11-devel gtk2-devel libaio-devel +# build using Fedora seabios and ipxe packages for roms +BuildRequires: seabios-bin ipxe-roms-qemu +%ifarch %{ix86} x86_64 +# for the VMX "bios" +BuildRequires: dev86 %endif -BuildRequires: ncurses-devel gtk2-devel libaio-devel -# for the docs -BuildRequires: perl-interpreter perl-generators perl(Pod::Man) perl(Pod::Text) texinfo graphviz -# optional requires for more documentation -#BuildRequires: pandoc discount -BuildRequires: discount +%endif +BuildRequires: python2-devel ncurses-devel +BuildRequires: perl-interpreter perl-generators %ifarch %{ix86} x86_64 # so that x86_64 builds pick up glibc32 correctly BuildRequires: /usr/include/gnu/stubs-32.h -# for the VMX "bios" -BuildRequires: dev86 %endif BuildRequires: gettext BuildRequires: gnutls-devel @@ -134,8 +143,6 @@ BuildRequires: pciutils-devel BuildRequires: libuuid-devel # iasl needed to build hvmloader BuildRequires: acpica-tools -# build using Fedora seabios and ipxe packages for roms -BuildRequires: seabios-bin ipxe-roms-qemu # modern compressed kernels BuildRequires: bzip2-devel xz-devel # libfsimage @@ -222,14 +229,25 @@ Requires: xen-licenses This package contains the Xen hypervisor +%if %build_docs %package doc Summary: Xen documentation Group: Documentation BuildArch: noarch Requires: xen-licenses +# for the docs +%if "%dist" >= ".fc18" +BuildRequires: texlive-times texlive-courier texlive-helvetic texlive-ntgclass +%endif +BuildRequires: transfig texi2html ghostscript texlive-latex +BuildRequires: perl(Pod::Man) perl(Pod::Text) texinfo graphviz +# optional requires for more documentation +#BuildRequires: pandoc discount +BuildRequires: discount %description doc This package contains the Xen documentation. +%endif %package devel @@ -349,6 +367,7 @@ export XEN_VENDORVERSION="-%{release}" export EXTRA_CFLAGS_XEN_TOOLS="$RPM_OPT_FLAGS" export EXTRA_CFLAGS_QEMU_TRADITIONAL="$RPM_OPT_FLAGS" export EXTRA_CFLAGS_QEMU_XEN="$RPM_OPT_FLAGS" +%if %build_hyp %if %build_crosshyp %define efi_flags LD_EFI=false XEN_TARGET_ARCH=x86_64 make %{?_smp_mflags} %{?efi_flags} prefix=/usr xen CC="/usr/bin/x86_64-linux-gnu-gcc `echo $RPM_OPT_FLAGS | sed -e 's/-m32//g' -e 's/-march=i686//g' -e 's/-mtune=atom//g'`" @@ -359,13 +378,22 @@ make %{?_smp_mflags} %{?efi_flags} prefix=/usr xen CC="gcc `echo $RPM_OPT_FLAGS make %{?_smp_mflags} %{?efi_flags} prefix=/usr xen CC="gcc $RPM_OPT_FLAGS" %endif %endif -./configure --prefix=%{_prefix} --libdir=%{_libdir} --with-system-seabios=%{seabiosloc} --with-system-qemu=/usr/bin/qemu-system-i386 --with-linux-backend-modules="xen-evtchn xen-gntdev xen-gntalloc xen-blkback xen-netback xen-pciback xen-scsiback xen-acpi-processor" +%endif +%if ! %build_qemutrad +CONFIG_EXTRA="--disable-qemu-traditional" +%else +CONFIG_EXTRA="" +%endif +./configure --prefix=%{_prefix} --libdir=%{_libdir} --with-system-seabios=%{seabiosloc} --with-system-qemu=/usr/bin/qemu-system-i386 --with-linux-backend-modules="xen-evtchn xen-gntdev xen-gntalloc xen-blkback xen-netback xen-pciback xen-scsiback xen-acpi-processor" $CONFIG_EXTRA make %{?_smp_mflags} %{?ocaml_flags} prefix=/usr tools +%if %build_docs make prefix=/usr docs +%endif export RPM_OPT_FLAGS_RED=`echo $RPM_OPT_FLAGS | sed -e 's/-m64//g' -e 's/--param=ssp-buffer-size=4//g' -e's/-fstack-protector-strong//'` %ifarch %{ix86} export EXTRA_CFLAGS_XEN_TOOLS="$RPM_OPT_FLAGS_RED" %endif +%if %build_stubdom %ifnarch armv7hl aarch64 make mini-os-dir make -C stubdom build @@ -374,6 +402,7 @@ make -C stubdom build export EXTRA_CFLAGS_XEN_TOOLS="$RPM_OPT_FLAGS_RED" XEN_TARGET_ARCH=x86_32 make -C stubdom pv-grub %endif +%endif %install @@ -384,16 +413,22 @@ mkdir -p %{buildroot}%{_libdir}/ocaml/stublibs %if %build_efi mkdir -p %{buildroot}/boot/efi/efi/fedora %endif +%if %build_hyp %if %build_crosshyp XEN_TARGET_ARCH=x86_64 make DESTDIR=%{buildroot} %{?efi_flags} prefix=/usr install-xen CC="/usr/bin/x86_64-linux-gnu-gcc" %else make DESTDIR=%{buildroot} %{?efi_flags} prefix=/usr install-xen %endif +%endif make DESTDIR=%{buildroot} %{?ocaml_flags} prefix=/usr install-tools +%if %build_docs make DESTDIR=%{buildroot} prefix=/usr install-docs +%endif +%if %build_stubdom %ifnarch armv7hl aarch64 make DESTDIR=%{buildroot} %{?ocaml_flags} prefix=/usr install-stubdom %endif +%endif %if %build_efi mv %{buildroot}/boot/efi/efi %{buildroot}/boot/efi/EFI %endif @@ -454,6 +489,10 @@ rm -rf %{buildroot}/%{_libdir}/*.a rm -rf %{buildroot}/%{_libdir}/efi %endif +%if ! %build_ocaml +rm -rf %{buildroot}/%{_unitdir}/oxenstored.service +%endif + ############ fixup files in /etc ############ # logrotate @@ -653,13 +692,16 @@ rm -rf %{buildroot} %dir /usr/lib/%{name}/bin %attr(0700,root,root) /usr/lib/%{name}/bin/* # QEMU runtime files +%if %build_qemutrad %ifnarch armv7hl aarch64 %dir %{_datadir}/%{name}/qemu %dir %{_datadir}/%{name}/qemu/keymaps %{_datadir}/%{name}/qemu/keymaps/* %endif +%endif # man pages +%if %build_docs %{_mandir}/man1/xentop.1* %{_mandir}/man1/xentrace_format.1* %{_mandir}/man8/xentrace.8* @@ -676,6 +718,7 @@ rm -rf %{buildroot} %{_mandir}/man5/xl-network-configuration.5.gz %{_mandir}/man7/xen-pv-channel.7.gz %{_mandir}/man7/xl-numa-placement.7.gz +%endif %{python_sitearch}/fsimage.so %{python_sitearch}/grub @@ -685,10 +728,12 @@ rm -rf %{buildroot} %ifarch %{ix86} x86_64 %dir /usr/lib/%{name}/boot /usr/lib/xen/boot/hvmloader +%if %build_stubdom /usr/lib/xen/boot/ioemu-stubdom.gz /usr/lib/xen/boot/xenstore-stubdom.gz /usr/lib/xen/boot/pv-grub*.gz %endif +%endif %if "%{_libdir}" != "/usr/lib" %{_libdir}/%{name} %endif @@ -709,9 +754,7 @@ rm -rf %{buildroot} %{_bindir}/xentrace* #%#{_bindir}/remus # XSM -%if %build_xsm %{_sbindir}/flask-* -%endif # Misc stuff %ifnarch armv7hl aarch64 %{_bindir}/xen-detect @@ -785,10 +828,12 @@ rm -rf %{buildroot} /usr/lib/debug/xen* %endif +%if %build_docs %files doc %defattr(-,root,root) %doc docs/misc/ %doc dist/install/usr/share/doc/xen/html +%endif %files devel %defattr(-,root,root) @@ -825,6 +870,10 @@ rm -rf %{buildroot} %changelog * Mon Dec 18 2017 Michael Young +- allow building without hypervisor, docs, qemu-xen-traditional or stubdoms +- fix build without ocaml + +* Mon Dec 18 2017 Michael Young - update to 4.10.0 adjust xen.use.fedora.ipxe.patch update xen.hypervisor.config