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