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