]> git.pld-linux.org Git - packages/qemu.git/blame - qemu.spec
- remove NAME=%k:
[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
461f3596 31%define rel 7
e900aba9 32
98a1a188 33%define kqemu_version 1.4.0pre1
dc9f9439 34%define qemu_version 0.11.1
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 44Source0: http://download.savannah.gnu.org/releases/qemu/%{pname}-%{version}.tar.gz
dc9f9439 45# Source0-md5: 193285b0bcf655a7f7577d05ffcb82b1
98a1a188
AM
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
995bac8b 70BuildRequires: perl-Encode
2fb8ea02 71BuildRequires: perl-tools-pod
ba84a935 72BuildRequires: pkgconfig
8bb1261c 73BuildRequires: sed >= 4.0
a1146336 74BuildRequires: texi2html
75BuildRequires: texinfo-texi2dvi
cad677a4 76BuildRequires: which
ba84a935 77BuildRequires: xorg-lib-libX11-devel
d1ae30a6 78%endif
8bb1261c 79Requires: SDL >= 1.2.1
2ef13cb9 80# sparc is currently unsupported (missing cpu_get_real_ticks() impl in vl.c)
007877cb 81ExclusiveArch: %{ix86} %{x8664} %{?with_userspace:ppc}
cd19124e 82BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
83
98a1a188
AM
84# some PPC/SPARC boot image in ELF format
85%define _noautostrip .*%{_datadir}/qemu/openbios-.*
a154aede 86
cd19124e 87%description
88QEMU is a FAST! processor emulator. By using dynamic translation it
89achieves a reasonnable speed while being easy to port on new host
90CPUs. QEMU has two operating modes:
91
92- User mode emulation. In this mode, QEMU can launch Linux processes
93 compiled for one CPU on another CPU. Linux system calls are converted
94 because of endianness and 32/64 bit mismatches. Wine (Windows
95 emulation) and DOSEMU (DOS emulation) are the main targets for QEMU.
96
97- Full system emulation. In this mode, QEMU emulates a full system,
8799423b
ER
98 including a processor and various peripherials. It can also be used to
99 provide virtual hosting of several virtual PC on a single server.
cd19124e 100
27b30e9c
JR
101%description -l pl.UTF-8
102QEMU to szybki(!) emulator procesora. Poprzez użycie dynamicznego
103tłumaczenia osiąga rozsądną szybkość i jest łatwy do przeportowania,
104aby działał na kolejnych procesorach. QEMU ma dwa tryby pracy:
5a2da1d0 105
27b30e9c 106- Emulacja trybu użytkownika. W tym trybie QEMU może uruchamiać
5a2da1d0 107 procesy linuksowe skompilowane dla jednego procesora na innym
27b30e9c
JR
108 procesorze. Linuksowe wywołania systemowe są tłumaczone ze względu na
109 niezgodność kolejności bajtów w słowie i 32/64-bitowego rozmiaru
110 słowa. Wine (emulacja Windows) i DOSEMU (emulacja DOS-a) to główne
5a2da1d0
JB
111 cele QEMU.
112
27b30e9c
JR
113- Pełna emulacja systemu. W tym trybie QEMU emuluje cały system,
114 włączając w to procesor i różne urządzenia peryferyjne. Może być także
115 używane do wirtualnego hostowania kilku wirtualnych pecetów na
8799423b 116 pojedynczym serwerze.
5a2da1d0 117
59d7e27b 118%package -n kernel%{_alt_kernel}-misc-kqemu
8bb1261c 119Summary: kqemu - kernel module
eec0535a 120Summary(pl.UTF-8): kqemu - moduł jądra
80bac37e 121Version: %{kqemu_version}
007877cb 122Release: %{rel}@%{_kernel_ver_str}
8bb1261c 123Group: Base/Kernel
04d100ab 124%{?with_dist_kernel:%requires_releq_kernel}
8f93639f 125License: GPL v2
8bb1261c 126Requires(post,postun): /sbin/depmod
39b50bf0 127Requires: module-init-tools >= 3.2.2-2
c382dda6 128Obsoletes: kernel%{_alt_kernel}-smp-misc-kqemu
8bb1261c 129
59d7e27b 130%description -n kernel%{_alt_kernel}-misc-kqemu
8bb1261c
KK
131kqemu - kernel module.
132
27b30e9c
JR
133%description -n kernel%{_alt_kernel}-misc-kqemu -l pl.UTF-8
134kqemu - moduł jądra.
8bb1261c 135
cd19124e 136%prep
80bac37e 137%setup -q -n %{pname}-%{qemu_version} %{?with_kernel:-a1}
b99b1652 138%patch0 -p0
8d073aaa 139%{?with_nosdlgui:%patch6 -p1}
81a493f2 140#%patch8 -p1
0b920c52
141
142%{__sed} -i -e 's/sdl_static=yes/sdl_static=no/' configure
8bb1261c 143%{__sed} -i 's/.*MAKE) -C kqemu$//' Makefile
cd19124e 144
c3048014 145# cannot use optflags on x86 - they cause "no register to spill" errors
0b920c52
146%if %{with cflags_passing}
147%{__sed} -i -e 's/-Wall -O2 -g/-Wall %{rpmcflags}/' Makefile Makefile.target
57d8430f
KK
148%else
149%{__sed} -i 's/-Wall -O2 -g/-Wall -O2/' Makefile Makefile.target
0b920c52 150%endif
c3048014 151
2dad6a94 152%if %{with kernel}
80bac37e 153echo -n > kqemu-%{kqemu_version}/install.sh
c33439fc
ER
154
155cat <<'EOF' > modprobe.conf
156# enable dynamic major
157options kqemu major=0
158# for autoloading from static dev
159#alias char-major-250 kqemu
160EOF
161
162cat <<'EOF' > udev.conf
c382dda6 163KERNEL=="kqemu", MODE="0666"
c33439fc 164EOF
0d2efd95 165
c9c22e78
ER
166%if %{with dosguest}
167%patch13 -p1
168%endif
169%patch14 -p1
98a1a188 170#%patch15 -p1
c9c22e78
ER
171%patch16 -p1
172
80bac37e 173cd kqemu-%{kqemu_version}
c1e4b9fd
ER
174%{__sed} -i 's#include ../config-host.mak##' ./common/Makefile
175%ifarch %{x8664}
176%{__sed} -i 's/^#ARCH=x86_64/ARCH=x86_64/' ./common/Makefile
c9c22e78 177%{__make} -C common -j1
0d2efd95 178mv -f kqemu-mod-x86_64.o{,.bin}
c1e4b9fd
ER
179%else
180%{__sed} -i 's/^#ARCH=i386/ARCH=i386/' ./common/Makefile
c9c22e78 181%{__make} -C common -j1
c1e4b9fd
ER
182mv -f kqemu-mod-i386.o{,.bin}
183%endif
184
35648466 185mv -f kqemu-linux.c{,.orig}
0d2efd95 186cat > Makefile <<'EOF'
187obj-m := kqemu.o
188kqemu-objs:= kqemu-linux.o kqemu-mod.o
189
190$(obj)/kqemu-mod.o: $(src)/kqemu-mod-$(ARCH).o.bin
df1c9a9c 191 cp $< $@
0d2efd95 192EOF
80bac37e
ER
193cd -
194%endif
195
80bac37e
ER
196%build
197%if %{with kernel}
198cd kqemu-%{kqemu_version}
59d7e27b 199%build_kernel_modules -m kqemu <<'EOF'
bd6addfd 200if grep -q "CONFIG_PREEMPT_RT" o/.config; then
59d7e27b 201 sed 's/SPIN_LOCK_UNLOCKED/SPIN_LOCK_UNLOCKED(kqemu_lock)/' \
202 kqemu-linux.c.orig > kqemu-linux.c
203else
204 cat kqemu-linux.c.orig > kqemu-linux.c
205fi
206EOF
8bb1261c 207cd -
4b0669f5 208%endif
a62a2d89 209
8bb1261c 210%if %{with userspace}
c3048014 211# --extra-cflags don't work (overridden by CFLAGS in Makefile*)
0b920c52 212# they can be passed if the cflags_passing bcond is used
8bd2aee2 213./configure \
214 --prefix=%{_prefix} \
98a1a188
AM
215 --cc="%{__cc}" \
216 --host-cc="%{__cc}" \
c33439fc 217 --make="%{__make}" \
a64911c4 218%if %{without kqemu}
8d073aaa
ER
219 --disable-kqemu \
220%endif
b99b1652 221 --enable-mixemu \
98a1a188 222 --audio-drv-list="alsa" \
80bac37e 223 --interp-prefix=%{_libdir}/%{pname}
8bb1261c 224%{__make}
4b0669f5 225%endif
cd19124e 226
227%install
228rm -rf $RPM_BUILD_ROOT
5a2da1d0 229
8bb1261c 230%if %{with userspace}
cd19124e 231%{__make} install \
232 DESTDIR=$RPM_BUILD_ROOT
ac6e5743 233
a91fea76 234install -d $RPM_BUILD_ROOT%{_sysconfdir}
235cat <<'EOF' > $RPM_BUILD_ROOT%{_sysconfdir}/qemu-ifup
ac6e5743 236#!/bin/sh
a91fea76 237
ac6e5743 238EOF
8bb1261c 239%endif
cd19124e 240
8bb1261c 241%if %{with kernel}
80bac37e 242%install_kernel_modules -m kqemu-%{kqemu_version}/kqemu -d misc
c33439fc 243install -d $RPM_BUILD_ROOT/etc/{modprobe.d/%{_kernel_ver}{,smp},udev/rules.d}
c33439fc 244install modprobe.conf $RPM_BUILD_ROOT/etc/modprobe.d/%{_kernel_ver}/kqemu.conf
c33439fc 245install udev.conf $RPM_BUILD_ROOT/etc/udev/rules.d/kqemu.rules
4b0669f5 246%endif
a62a2d89 247
c33439fc
ER
248# already packaged
249rm -rf $RPM_BUILD_ROOT%{_docdir}/qemu/qemu-{doc,tech}.html
250
cd19124e 251%clean
252rm -rf $RPM_BUILD_ROOT
253
2dad6a94 254%if %{with kernel}
8bb1261c 255%post
80bac37e 256%banner %{pname} -e <<EOF
8bb1261c 257To enable qemu accelerator (kqemu), the kqemu kernel module must be loaded:
4b0669f5 258modprobe kqemu
259EOF
260%endif
261
59d7e27b 262%post -n kernel%{_alt_kernel}-misc-kqemu
8bb1261c
KK
263%depmod %{_kernel_ver}
264
59d7e27b 265%postun -n kernel%{_alt_kernel}-misc-kqemu
8bb1261c
KK
266%depmod %{_kernel_ver}
267
8bb1261c 268%if %{with userspace}
cd19124e 269%files
270%defattr(644,root,root,755)
867764ba 271%doc README qemu-doc.html qemu-tech.html
a91fea76 272%attr(755,root,root) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/qemu-ifup
003e2129 273%attr(755,root,root) %{_bindir}/*
274%{_datadir}/qemu
cd19124e 275%{_mandir}/man1/qemu.1*
867764ba 276%{_mandir}/man1/qemu-img.1*
98a1a188 277%{_mandir}/man8/qemu-nbd.8*
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)
80bac37e 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 287%endif
This page took 0.109054 seconds and 4 git commands to generate.