]> git.pld-linux.org Git - packages/qemu.git/blame - qemu.spec
- from gentoo
[packages/qemu.git] / qemu.spec
CommitLineData
6aef4654 1#
0b920c52
2# TODO:
3# - wait till the gcc bug http://gcc.gnu.org/PR16185 is fixed.
cfa8e5c4 4# - update or drop gcc4 bcond patches
0b920c52 5#
6aef4654 6# Conditional build:
8f93639f 7%bcond_without kqemu # disable KQEMU ACCELERATOR support in QEMU
161ffd93 8%bcond_with cflags_passing # with passing rpmcflags to Makefiles
b4d7fbfb 9%bcond_with dosguest # add special patch when use with DOS as guest os
a6d3659e 10%bcond_with nosdlgui # do not use SDL gui (use X11 instead)
63dabd29 11# Note that gcc4 build is very problematic and not supported by qemu team
cfa8e5c4 12%bcond_with gcc4 # use gcc4 patches (broke build on gcc33)
8bb1261c 13%bcond_without dist_kernel # without distribution kernel
b337f190 14%bcond_without kernel # build kqemu KERNEL MODULES
dc54e1a6 15%bcond_without userspace # don't build userspace utilities
007877cb
ER
16
17%if %{without kernel}
18%undefine with_dist_kernel
19%endif
007877cb
ER
20
21# no kernel kqemu module for ppc
22%ifarch ppc
23%undefine with_kqemu
24%undefine with_kernel
25%endif
26
80bac37e
ER
27%if "%{_alt_kernel}" != "%{nil}"
28%undefine with_userspace
29%endif
3a6eaa3b 30
80bac37e 31%define kqemu_version 1.3.0pre11
007877cb 32%define qemu_version 0.9.1
80bac37e 33%define pname qemu
007877cb 34
c4b12b8b 35%define rel 9
cd19124e 36Summary: QEMU CPU Emulator
eec0535a 37Summary(pl.UTF-8): QEMU - emulator procesora
80bac37e
ER
38Name: %{pname}%{_alt_kernel}
39Version: %{qemu_version}
007877cb 40Release: %{rel}%{?with_kqemu:k}
5a2da1d0
JB
41License: GPL
42Group: Applications/Emulators
c4b12b8b 43# Source0Download: http://fabrice.bellard.free.fr/qemu/download.html
80bac37e 44Source0: http://fabrice.bellard.free.fr/qemu/%{pname}-%{version}.tar.gz
3f5b9075 45# Source0-md5: 6591df8e9270eb358c881de4ebea1262
80bac37e 46Source1: http://fabrice.bellard.free.fr/qemu/k%{pname}-%{kqemu_version}.tar.gz
b337f190 47# Source1-md5: 970521874ef8b1ba4598925ace5936c3
80bac37e
ER
48Patch0: %{pname}-nostatic.patch
49Patch1: %{pname}-cc.patch
50Patch3: %{pname}-dot.patch
51Patch4: %{pname}-gcc4_x86.patch
52Patch5: %{pname}-gcc4_ppc.patch
53Patch6: %{pname}-nosdlgui.patch
81a493f2 54# Proof of concept, for reference, do not remove
80bac37e 55Patch8: %{pname}-kde_virtual_workspaces_hack.patch
e05988b9 56# http://gwenole.beauchesne.info/en/projects/qemu
80bac37e
ER
57Patch9: %{pname}-0.8.0-gcc4-hacks.patch
58Patch11: %{pname}-0.7.2-gcc4-opts.patch
59#Patch12: %{pname}-0.7.2-dyngen-check-stack-clobbers.patch
60Patch13: %{pname}-dosguest.patch
c9c22e78
ER
61Patch14: %{pname}-ppc_old_binutils.patch
62Patch15: %{pname}-isa-bios-ram.patch
63# below one fixes problems with passing ram size to bios/bootloader
64# which affects coreboot/linuxbios
65Patch16: %{pname}-piix-ram-size.patch
c4b12b8b
ER
66Patch17: %{pname}-CVE-2008-0928.patch
67Patch18: %{pname}-CVE-2008-2004.patch
cd19124e 68URL: http://fabrice.bellard.free.fr/qemu/
d1ae30a6 69%if %{with kernel} && %{with dist_kernel}
70BuildRequires: kernel%{_alt_kernel}-module-build >= 3:2.6.7
a154aede 71BuildRequires: rpmbuild(macros) >= 1.379
d1ae30a6 72%endif
73%if %{with userspace}
867764ba 74BuildRequires: SDL-devel >= 1.2.1
b0b3ca8d 75BuildRequires: alsa-lib-devel
21c5c008 76%{!?with_gcc4:BuildRequires: gcc < 5:4.0}
2fb8ea02 77BuildRequires: perl-tools-pod
8bb1261c 78BuildRequires: sed >= 4.0
cad677a4 79BuildRequires: tetex
80BuildRequires: which
d1ae30a6 81%endif
8bb1261c 82Requires: SDL >= 1.2.1
2ef13cb9 83# sparc is currently unsupported (missing cpu_get_real_ticks() impl in vl.c)
007877cb 84ExclusiveArch: %{ix86} %{x8664} %{?with_userspace:ppc}
cd19124e 85BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
86
a154aede
ER
87# some SPARC boot image in ELF format
88%define _noautostrip .*%{_datadir}/qemu/openbios-sparc32
89
cd19124e 90%description
91QEMU is a FAST! processor emulator. By using dynamic translation it
92achieves a reasonnable speed while being easy to port on new host
93CPUs. QEMU has two operating modes:
94
95- User mode emulation. In this mode, QEMU can launch Linux processes
96 compiled for one CPU on another CPU. Linux system calls are converted
97 because of endianness and 32/64 bit mismatches. Wine (Windows
98 emulation) and DOSEMU (DOS emulation) are the main targets for QEMU.
99
100- Full system emulation. In this mode, QEMU emulates a full system,
8799423b
ER
101 including a processor and various peripherials. It can also be used to
102 provide virtual hosting of several virtual PC on a single server.
cd19124e 103
27b30e9c
JR
104%description -l pl.UTF-8
105QEMU to szybki(!) emulator procesora. Poprzez użycie dynamicznego
106tłumaczenia osiąga rozsądną szybkość i jest łatwy do przeportowania,
107aby działał na kolejnych procesorach. QEMU ma dwa tryby pracy:
5a2da1d0 108
27b30e9c 109- Emulacja trybu użytkownika. W tym trybie QEMU może uruchamiać
5a2da1d0 110 procesy linuksowe skompilowane dla jednego procesora na innym
27b30e9c
JR
111 procesorze. Linuksowe wywołania systemowe są tłumaczone ze względu na
112 niezgodność kolejności bajtów w słowie i 32/64-bitowego rozmiaru
113 słowa. Wine (emulacja Windows) i DOSEMU (emulacja DOS-a) to główne
5a2da1d0
JB
114 cele QEMU.
115
27b30e9c
JR
116- Pełna emulacja systemu. W tym trybie QEMU emuluje cały system,
117 włączając w to procesor i różne urządzenia peryferyjne. Może być także
118 używane do wirtualnego hostowania kilku wirtualnych pecetów na
8799423b 119 pojedynczym serwerze.
5a2da1d0 120
59d7e27b 121%package -n kernel%{_alt_kernel}-misc-kqemu
8bb1261c 122Summary: kqemu - kernel module
eec0535a 123Summary(pl.UTF-8): kqemu - moduł jądra
80bac37e 124Version: %{kqemu_version}
007877cb 125Release: %{rel}@%{_kernel_ver_str}
8bb1261c 126Group: Base/Kernel
04d100ab 127%{?with_dist_kernel:%requires_releq_kernel}
8f93639f 128License: GPL v2
04d100ab 129Obsoletes: kernel%{_alt_kernel}-smp-misc-kqemu
8bb1261c 130Requires(post,postun): /sbin/depmod
39b50bf0 131Requires: module-init-tools >= 3.2.2-2
8bb1261c 132
59d7e27b 133%description -n kernel%{_alt_kernel}-misc-kqemu
8bb1261c
KK
134kqemu - kernel module.
135
27b30e9c
JR
136%description -n kernel%{_alt_kernel}-misc-kqemu -l pl.UTF-8
137kqemu - moduł jądra.
8bb1261c 138
cd19124e 139%prep
80bac37e 140%setup -q -n %{pname}-%{qemu_version} %{?with_kernel:-a1}
968e3e81
JB
141%patch0 -p1
142%patch1 -p1
d8d8cede 143%patch3 -p1
27439af0 144%if %{with gcc4}
e05988b9 145%patch9 -p1
e05988b9 146%patch11 -p1
b337f190 147#%patch12 -p1
e05988b9 148#%patch4 -p0
8d073aaa 149%patch5 -p1
27439af0 150%endif
8d073aaa 151%{?with_nosdlgui:%patch6 -p1}
81a493f2 152#%patch8 -p1
0b920c52
153
154%{__sed} -i -e 's/sdl_static=yes/sdl_static=no/' configure
8bb1261c 155%{__sed} -i 's/.*MAKE) -C kqemu$//' Makefile
cd19124e 156
c3048014 157# cannot use optflags on x86 - they cause "no register to spill" errors
0b920c52
158%if %{with cflags_passing}
159%{__sed} -i -e 's/-Wall -O2 -g/-Wall %{rpmcflags}/' Makefile Makefile.target
57d8430f
KK
160%else
161%{__sed} -i 's/-Wall -O2 -g/-Wall -O2/' Makefile Makefile.target
0b920c52 162%endif
c3048014 163
2dad6a94 164%if %{with kernel}
80bac37e 165echo -n > kqemu-%{kqemu_version}/install.sh
c33439fc
ER
166
167cat <<'EOF' > modprobe.conf
168# enable dynamic major
169options kqemu major=0
170# for autoloading from static dev
171#alias char-major-250 kqemu
172EOF
173
174cat <<'EOF' > udev.conf
175KERNEL=="kqemu", NAME="%k", MODE="0666"
176EOF
0d2efd95 177
c9c22e78
ER
178%if %{with dosguest}
179%patch13 -p1
180%endif
181%patch14 -p1
182%patch15 -p1
183%patch16 -p1
c4b12b8b
ER
184%patch17 -p2
185%patch18 -p0
c9c22e78 186
80bac37e 187cd kqemu-%{kqemu_version}
c1e4b9fd
ER
188%{__sed} -i 's#include ../config-host.mak##' ./common/Makefile
189%ifarch %{x8664}
190%{__sed} -i 's/^#ARCH=x86_64/ARCH=x86_64/' ./common/Makefile
c9c22e78 191%{__make} -C common -j1
0d2efd95 192mv -f kqemu-mod-x86_64.o{,.bin}
c1e4b9fd
ER
193%else
194%{__sed} -i 's/^#ARCH=i386/ARCH=i386/' ./common/Makefile
c9c22e78 195%{__make} -C common -j1
c1e4b9fd
ER
196mv -f kqemu-mod-i386.o{,.bin}
197%endif
198
35648466 199mv -f kqemu-linux.c{,.orig}
0d2efd95 200cat > Makefile <<'EOF'
201obj-m := kqemu.o
202kqemu-objs:= kqemu-linux.o kqemu-mod.o
203
204$(obj)/kqemu-mod.o: $(src)/kqemu-mod-$(ARCH).o.bin
df1c9a9c 205 cp $< $@
0d2efd95 206EOF
80bac37e
ER
207cd -
208%endif
209
80bac37e
ER
210%build
211%if %{with kernel}
212cd kqemu-%{kqemu_version}
59d7e27b 213%build_kernel_modules -m kqemu <<'EOF'
bd6addfd 214if grep -q "CONFIG_PREEMPT_RT" o/.config; then
59d7e27b 215 sed 's/SPIN_LOCK_UNLOCKED/SPIN_LOCK_UNLOCKED(kqemu_lock)/' \
216 kqemu-linux.c.orig > kqemu-linux.c
217else
218 cat kqemu-linux.c.orig > kqemu-linux.c
219fi
220EOF
8bb1261c 221cd -
4b0669f5 222%endif
a62a2d89 223
8bb1261c 224%if %{with userspace}
c3048014 225# --extra-cflags don't work (overridden by CFLAGS in Makefile*)
0b920c52 226# they can be passed if the cflags_passing bcond is used
8bd2aee2 227./configure \
228 --prefix=%{_prefix} \
867764ba 229 --cc="%{__cc}" \
c33439fc
ER
230 --host-cc="%{__cc}" \
231 --make="%{__make}" \
a64911c4 232%if %{without kqemu}
8d073aaa
ER
233 --disable-kqemu \
234%endif
21c5c008 235 %{?with_gcc4:--disable-gcc-check} \
21c5c008 236 --enable-alsa \
80bac37e 237 --interp-prefix=%{_libdir}/%{pname}
8bb1261c 238%{__make}
4b0669f5 239%endif
cd19124e 240
241%install
242rm -rf $RPM_BUILD_ROOT
5a2da1d0 243
8bb1261c 244%if %{with userspace}
cd19124e 245%{__make} install \
246 DESTDIR=$RPM_BUILD_ROOT
ac6e5743 247
a91fea76 248install -d $RPM_BUILD_ROOT%{_sysconfdir}
249cat <<'EOF' > $RPM_BUILD_ROOT%{_sysconfdir}/qemu-ifup
ac6e5743 250#!/bin/sh
a91fea76 251
ac6e5743 252EOF
8bb1261c 253%endif
cd19124e 254
8bb1261c 255%if %{with kernel}
80bac37e 256%install_kernel_modules -m kqemu-%{kqemu_version}/kqemu -d misc
c33439fc 257install -d $RPM_BUILD_ROOT/etc/{modprobe.d/%{_kernel_ver}{,smp},udev/rules.d}
c33439fc 258install modprobe.conf $RPM_BUILD_ROOT/etc/modprobe.d/%{_kernel_ver}/kqemu.conf
c33439fc 259install udev.conf $RPM_BUILD_ROOT/etc/udev/rules.d/kqemu.rules
4b0669f5 260%endif
a62a2d89 261
c33439fc
ER
262# already packaged
263rm -rf $RPM_BUILD_ROOT%{_docdir}/qemu/qemu-{doc,tech}.html
264
cd19124e 265%clean
266rm -rf $RPM_BUILD_ROOT
267
2dad6a94 268%if %{with kernel}
8bb1261c 269%post
80bac37e 270%banner %{pname} -e <<EOF
8bb1261c 271To enable qemu accelerator (kqemu), the kqemu kernel module must be loaded:
4b0669f5 272modprobe kqemu
273EOF
274%endif
275
59d7e27b 276%post -n kernel%{_alt_kernel}-misc-kqemu
8bb1261c
KK
277%depmod %{_kernel_ver}
278
59d7e27b 279%postun -n kernel%{_alt_kernel}-misc-kqemu
8bb1261c
KK
280%depmod %{_kernel_ver}
281
8bb1261c 282%if %{with userspace}
cd19124e 283%files
284%defattr(644,root,root,755)
867764ba 285%doc README qemu-doc.html qemu-tech.html
a91fea76 286%attr(755,root,root) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/qemu-ifup
003e2129 287%attr(755,root,root) %{_bindir}/*
288%{_datadir}/qemu
cd19124e 289%{_mandir}/man1/qemu.1*
867764ba 290%{_mandir}/man1/qemu-img.1*
8bb1261c
KK
291%endif
292
293%if %{with kernel}
59d7e27b 294%files -n kernel%{_alt_kernel}-misc-kqemu
8bb1261c 295%defattr(644,root,root,755)
80bac37e 296%doc kqemu-%{kqemu_version}/LICENSE
c33439fc 297%config(noreplace) %verify(not md5 mtime size) /etc/udev/rules.d/kqemu.rules
bfcb25b9 298%config(noreplace) %verify(not md5 mtime size) /etc/modprobe.d/%{_kernel_ver}/kqemu.conf
b0b3ca8d 299/lib/modules/%{_kernel_ver}/misc/kqemu.ko*
8bb1261c 300%endif
This page took 0.102687 seconds and 4 git commands to generate.