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