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