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