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