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