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