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