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