summaryrefslogtreecommitdiff
path: root/packaging/qemu.spec
blob: 8269b49b71381a3990c9986b920a9b3e70f145f5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
Name:           qemu
Url:            http://www.qemu.org/
Summary:        Universal CPU emulator
License:        BSD-3-Clause and GPL-2.0 and GPL-2.0+ and LGPL-2.1+ and MIT
Group:          System/Utilities
Version:        2.1.0
Release:        0
Source:         %name-%version.tar.bz2
# this is to make lint happy
Source300:      rpmlintrc
Source302:      bridge.conf
Source303:      baselibs.conf
Source400:      update_git.sh
BuildRequires:  bison
BuildRequires:  curl-devel
BuildRequires:  e2fsprogs-devel
BuildRequires:  libattr-devel
BuildRequires:  libcap-devel
BuildRequires:  libcap-ng-devel
BuildRequires:  libgnutls-devel
BuildRequires:  libjpeg8-devel
BuildRequires:  libpng-devel
BuildRequires:  ncurses-devel
# we must not install the qemu package when under qemu build
%if 0%{?qemu_user_space_build:1}
BuildRequires:  -post-build-checks
%endif
BuildRequires:  zlib-devel-static
BuildRequires:  glibc-devel-static
BuildRequires:  libattr-devel-static
BuildRequires:  glib2-devel-static
BuildRequires:  pcre-devel-static
BuildRequires:  fdupes
BuildRequires:  glib2-devel
BuildRequires:  pwdutils
BuildRequires:  python
BuildRequires:  pkgconfig(sdl)
Requires:       /usr/sbin/groupadd
Requires:       pwdutils
Requires:       timezone

%description
QEMU is an extremely well-performing CPU emulator that allows you to
choose between simulating an entire system and running userspace
binaries for different architectures under your native operating
system. It currently emulates x86, ARM, PowerPC and SPARC CPUs as well
as PC and PowerMac systems.

%package tools
Summary:        Universal CPU emulator -- Tools
Provides:       qemu:%_libexecdir/qemu-bridge-helper

%description tools
QEMU is an extremely well-performing CPU emulator that allows you to
choose between simulating an entire system and running userspace
binaries for different architectures under your native operating
system. It currently emulates x86, ARM, PowerPC and SPARC CPUs as well
as PC and PowerMac systems.

This sub-package contains various tools, including a bridge helper.

%package guest-agent
Summary:        Universal CPU emulator -- Guest agent
Provides:       qemu:%_bindir/qemu-ga

%description guest-agent
QEMU is an extremely well-performing CPU emulator that allows you to
choose between simulating an entire system and running userspace
binaries for different architectures under your native operating
system. It currently emulates x86, ARM, PowerPC and SPARC CPUs as well
as PC and PowerMac systems.

This sub-package contains the guest agent.

%package linux-user
Summary:        Universal CPU emulator -- Linux User binaries
Provides:       qemu:%_bindir/qemu-arm

%description linux-user
QEMU is an extremely well-performing CPU emulator that allows you to
choose between simulating an entire system and running userspace
binaries for different architectures under your native operating
system. It currently emulates x86, ARM, PowerPC and SPARC CPUs as well
as PC and PowerMac systems.

This sub-package contains statically linked binaries for running linux-user
emulations. This can be used together with the OBS build script to
run cross-architecture builds.

%prep
%setup -q -n %name-%version

%build
export QEMU_OPT_FLAGS="$QEMU_OPT_FLAGS -Wno-error=type-limits"
# build QEMU
mkdir -p dynamic
# build qemu-system
./configure --prefix=%_prefix \
	--sysconfdir=%_sysconfdir \
	--libexecdir=%_libexecdir \
	--enable-curl \
	--enable-virtfs \
	--enable-attr \
	--disable-linux-aio \
	--extra-cflags="$QEMU_OPT_FLAGS" \
	--enable-system \
	--disable-linux-user \
	--enable-sdl

make %{?jobs:-j%jobs} V=1
mv *-softmmu/qemu-system-* dynamic
mv qemu-io qemu-img qemu-nbd qemu-bridge-helper dynamic
#mv qemu-img.1 qemu-nbd.8 dynamic
mv qemu-ga dynamic
mv fsdev/virtfs-proxy-helper dynamic
make clean
# build userland emus
./configure --prefix=%_prefix --sysconfdir=%_sysconfdir \
	--libexecdir=%_libexecdir \
	--enable-linux-user \
	--disable-system \
	--enable-attr \
	--static --disable-linux-aio \
	--extra-cflags="$QEMU_OPT_FLAGS"
make %{?jobs:-j%jobs} V=1

%install
make install DESTDIR=$RPM_BUILD_ROOT
rm -fr $RPM_BUILD_ROOT/%_datadir/doc
install -m 755 dynamic/qemu-system-* $RPM_BUILD_ROOT/%_bindir
install -m 755 dynamic/qemu-io $RPM_BUILD_ROOT/%_bindir
install -m 755 dynamic/qemu-img $RPM_BUILD_ROOT/%_bindir
install -m 755 dynamic/qemu-nbd $RPM_BUILD_ROOT/%_bindir
install -m 755 dynamic/qemu-ga $RPM_BUILD_ROOT/%_bindir
install -m 755 dynamic/virtfs-proxy-helper $RPM_BUILD_ROOT/%_bindir
install -d -m 755 $RPM_BUILD_ROOT/%_sbindir
install -m 755 scripts/qemu-binfmt-conf.sh $RPM_BUILD_ROOT/%_sbindir
install -d -m 755 $RPM_BUILD_ROOT/%_libexecdir
install -m 755 dynamic/qemu-bridge-helper $RPM_BUILD_ROOT/%_libexecdir
install -d -m 755 $RPM_BUILD_ROOT/%_mandir/man1
install -D -m 644 %{SOURCE302} $RPM_BUILD_ROOT/%{_sysconfdir}/qemu/bridge.conf
%ifnarch %ix86 x86_64
ln -sf ../../../emul/ia32-linux $RPM_BUILD_ROOT/usr/share/qemu/qemu-i386
%endif
%ifnarch ia64
mkdir -p $RPM_BUILD_ROOT/emul/ia32-linux
%endif
ln -sf /%_bindir/qemu-aarch64 $RPM_BUILD_ROOT/%_bindir/qemu-arm64
%fdupes -s $RPM_BUILD_ROOT

%clean
rm -rf ${RPM_BUILD_ROOT}

%pre
%{_bindir}/getent group kvm >/dev/null || %{_sbindir}/groupadd -r kvm 2>/dev/null
%{_bindir}/getent group qemu >/dev/null || %{_sbindir}/groupadd -r qemu 2>/dev/null
%{_bindir}/getent passwd qemu >/dev/null || \
  %{_sbindir}/useradd -r -g qemu -G kvm -d / -s /sbin/nologin \
  -c "qemu user" qemu

%files
%license COPYING
%defattr(-, root, root)
%doc COPYING COPYING.LIB Changelog README VERSION
%_bindir/qemu-system-*
%_datadir/%name
%ifnarch %ix86 x86_64 ia64
%dir /emul/ia32-linux
%endif
%dir %_sysconfdir/%name
%config %_sysconfdir/%name/target-x86_64.conf

%files tools
%defattr(-, root, root)
%_bindir/qemu-io
%_bindir/qemu-img
%_bindir/qemu-nbd
%_bindir/virtfs-proxy-helper
%verify(not mode) %_libexecdir/qemu-bridge-helper
%dir %_sysconfdir/%name
%config %_sysconfdir/%name/bridge.conf

%files guest-agent
%defattr(-, root, root)
%attr(755,root,kvm) %_bindir/qemu-ga

%files linux-user
%defattr(-, root, root)
%_bindir/qemu-alpha
%_bindir/qemu-aarch64
%_bindir/qemu-arm64
%_bindir/qemu-arm
%_bindir/qemu-armeb
%_bindir/qemu-cris
%_bindir/qemu-i386
%_bindir/qemu-m68k
%_bindir/qemu-microblaze
%_bindir/qemu-microblazeel
%_bindir/qemu-mips
%_bindir/qemu-mips64
%_bindir/qemu-mips64el
%_bindir/qemu-mipsel
%_bindir/qemu-mipsn32
%_bindir/qemu-mipsn32el
%_bindir/qemu-or32
%_bindir/qemu-ppc64abi32
%_bindir/qemu-ppc64
%_bindir/qemu-ppc64le
%_bindir/qemu-ppc
%_bindir/qemu-s390x
%_bindir/qemu-sh4
%_bindir/qemu-sh4eb
%_bindir/qemu-sparc32plus
%_bindir/qemu-sparc64
%_bindir/qemu-sparc
%_bindir/qemu-unicore32
%_bindir/qemu-x86_64
%_bindir/qemu-*-binfmt
%_sbindir/qemu-binfmt-conf.sh

%changelog