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