diff options
author | Chanho Park <chanho61.park@samsung.com> | 2014-06-27 14:53:53 +0900 |
---|---|---|
committer | Yury Usishchev <y.usishchev@samsung.com> | 2014-12-10 14:51:43 +0300 |
commit | 0abe1f8ad0bf9088137e6f73e3b0027b8c8c6ad4 (patch) | |
tree | 22c3d5e98c6bc431fdbc34ad331b01bef69ee85c | |
parent | c0778d24183192081e66622b6beea055accffc7d (diff) | |
download | qemu-0abe1f8ad0bf9088137e6f73e3b0027b8c8c6ad4.tar.gz qemu-0abe1f8ad0bf9088137e6f73e3b0027b8c8c6ad4.tar.bz2 qemu-0abe1f8ad0bf9088137e6f73e3b0027b8c8c6ad4.zip |
packaging: add packaging spec files
This patch adds packaging files to build with GBS and rpmbuild.
Change-Id: I1cb93997635a28b91a489dbe77d306e6ac684581
Signed-off-by: Chanho Park <chanho61.park@samsung.com>
-rw-r--r-- | packaging/baselibs.conf | 7 | ||||
-rw-r--r-- | packaging/bridge.conf | 11 | ||||
-rw-r--r-- | packaging/qemu.changes | 17 | ||||
-rw-r--r-- | packaging/qemu.spec | 218 | ||||
-rw-r--r-- | packaging/qemu.spec.in | 289 | ||||
-rw-r--r-- | packaging/qemu.spec.manifest | 5 | ||||
-rw-r--r-- | packaging/rpmlintrc | 5 | ||||
-rw-r--r-- | packaging/update_git.sh | 105 |
8 files changed, 657 insertions, 0 deletions
diff --git a/packaging/baselibs.conf b/packaging/baselibs.conf new file mode 100644 index 000000000..d1a8ff3bd --- /dev/null +++ b/packaging/baselibs.conf @@ -0,0 +1,7 @@ +arch i686 targets armv7l:cross-arm + + +targettype cross-arm package qemu-linux-user + autoreqprov off + extension -cross + +/ diff --git a/packaging/bridge.conf b/packaging/bridge.conf new file mode 100644 index 000000000..d06c62a33 --- /dev/null +++ b/packaging/bridge.conf @@ -0,0 +1,11 @@ +# Access control file for qemu bridge helper +# Syntax consists of: +# # comment (ignored) +# allow all +# allow <bridge_name> +# deny all +# deny <bridge_name> +# include /path/to/additional/ACL/file +# Users are blacklisted by default and 'deny' takes precedence over 'allow'. +# Including additional ACL files allows file access permissions to be used as +# a component of the policy to allow access or deny access to specific bridges. diff --git a/packaging/qemu.changes b/packaging/qemu.changes new file mode 100644 index 000000000..cd216d07a --- /dev/null +++ b/packaging/qemu.changes @@ -0,0 +1,17 @@ +* Fri Sep 05 2014 Chanho Park <chanho61.park@samsung.com> upstream/2.1.0-41-g924386e +- Imported Upstream version 2.1.0 + +* Wed Aug 28 2013 Anas Nashif <anas.nashif@intel.com> submit/tizen/20130828.112706@2c24165 +- add baselibs.conf +- fixed group and license +- resetting manifest requested domain to floor + +* Sat May 11 2013 Anas Nashif <anas.nashif@intel.com> submit/tizen/20130509.183841@5388c0d +- Set license using %license + +* Wed Apr 17 2013 Patrick McCarty <patrick.mccarty@linux.intel.com> 1127a7e +- (TZPC-970) Enable SDL display support + +* Tue Jan 15 2013 Anas Nashif <anas.nashif@intel.com> upstream/1.3.0@4698b64 +- Update to 1.3 + diff --git a/packaging/qemu.spec b/packaging/qemu.spec new file mode 100644 index 000000000..d18243626 --- /dev/null +++ b/packaging/qemu.spec @@ -0,0 +1,218 @@ +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 +%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-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-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 diff --git a/packaging/qemu.spec.in b/packaging/qemu.spec.in new file mode 100644 index 000000000..57a2ba620 --- /dev/null +++ b/packaging/qemu.spec.in @@ -0,0 +1,289 @@ +# +# spec file for package qemu +# +# Copyright (c) 2012 SUSE LINUX Products GmbH, Nuernberg, Germany. +# +# All modifications and additions to the file contributed by third parties +# remain the property of their copyright owners, unless otherwise agreed +# upon. The license for this file, and modifications and additions to the +# file, is the same license as for the pristine package itself (unless the +# license for the pristine package is not an Open Source License, in which +# case the license is the MIT License). An "Open Source License" is a +# license that conforms to the Open Source Definition (Version 1.9) +# published by the Open Source Initiative. + +# Please submit bugfixes or comments via http://bugs.opensuse.org/ +# + + +Name: qemu +Url: http://www.qemu.org/ +Summary: Universal CPU emulator +License: BSD-3-Clause ; GPL-2.0+ ; LGPL-2.1+ ; MIT +Group: System/Emulators/PC +Version: 1.2.0 +Release: 0 +Source: %name-%version.tar.bz2 +PATCH_FILES +# this is to make lint happy +Source300: rpmlintrc +Source302: bridge.conf +Source400: update_git.sh +BuildRoot: %{_tmppath}/%{name}-%{version}-build +BuildRequires: SDL-devel +BuildRequires: bison +BuildRequires: bluez-devel +BuildRequires: curl-devel +BuildRequires: cyrus-sasl-devel +BuildRequires: e2fsprogs-devel +BuildRequires: libaio +BuildRequires: libaio-devel +BuildRequires: libattr-devel +BuildRequires: libcap-devel +BuildRequires: libcap-ng-devel +BuildRequires: libgnutls-devel +BuildRequires: libjpeg-devel +BuildRequires: libpcap-devel +BuildRequires: libpng-devel +BuildRequires: mozilla-nss-devel >= 3.12.8 +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 +%if 0%{?suse_version} >= 1120 +BuildRequires: zlib-devel-static +%else +BuildRequires: zlib-devel +%endif +%if 0%{?suse_version} >= 1210 +BuildRequires: glibc-devel-static +BuildRequires: libattr-devel-static +BuildRequires: libfdt1-devel +%endif +%if 0%{?suse_version} >= 1140 +BuildRequires: glib2-devel-static +%endif +%if 0%{?suse_version} >= 1220 +BuildRequires: pcre-devel-static +%endif +%if 0%{?suse_version} >= 1130 +%ifarch %ix86 x86_64 +BuildRequires: libspice-server-devel +BuildRequires: spice-protocol-devel +%endif +%endif +%ifarch ppc ppc64 +#we need that for -M pseries support in SLES +BuildRequires: libfdt1-devel +%endif +BuildRequires: fdupes +BuildRequires: glib2-devel +BuildRequires: libvdeplug3-devel +BuildRequires: pwdutils +BuildRequires: python +Requires: /usr/sbin/groupadd +Requires: pwdutils +Requires: timezone +Recommends: qemu-tools + +%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 +Group: System/Emulators/PC +Provides: qemu:%_libexecdir/qemu-bridge-helper +PreReq: permissions + +%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 +Group: System/Emulators/PC +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 +Group: System/Emulators/PC +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 +PATCH_EXEC + +%build +# build QEMU +mkdir -p dynamic +# build qemu-system +./configure --prefix=%_prefix --sysconfdir=%_sysconfdir \ + --libexecdir=%_libexecdir \ + --audio-card-list="ac97 es1370 sb16 cs4231a adlib gus" \ + --audio-drv-list="alsa sdl" --enable-mixemu --enable-vde \ + --enable-curl \ + --enable-virtfs \ + --extra-cflags="$QEMU_OPT_FLAGS" --enable-system --disable-linux-user \ +%if 0%{?suse_version} >= 1130 +%ifarch %ix86 x86_64 + --enable-spice +%else + --disable-spice +%endif +%else + --disable-spice +%endif +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{,.1} dynamic +make clean +# build userland emus +./configure --prefix=%_prefix --sysconfdir=%_sysconfdir \ + --libexecdir=%_libexecdir \ + --enable-linux-user \ + --disable-system \ + --static --disable-linux-aio \ + --extra-cflags="$QEMU_OPT_FLAGS" +%if 0%{?suse_version} == 1140 +# -lrt needs to come after -lglib-2.0 to avoid undefined clock_gettime +sed -i "s/-lglib-2.0/-lglib-2.0 -lrt/" config-host.mak +%endif +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 -m 644 dynamic/qemu-img.1 $RPM_BUILD_ROOT/%_mandir/man1 +install -m 644 dynamic/virtfs-proxy-helper.1 $RPM_BUILD_ROOT/%_mandir/man1 +install -d -m 755 $RPM_BUILD_ROOT/%_mandir/man8 +install -m 644 dynamic/qemu-nbd.8 $RPM_BUILD_ROOT/%_mandir/man8 +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 +%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 + +%if 0%{?suse_version} >= 1130 +%post tools +%set_permissions %_libexecdir/qemu-bridge-helper + +%verifyscript tools +%verify_permissions %_libexecdir/qemu-bridge-helper +%endif + +%files +%defattr(-, root, root) +%doc COPYING COPYING.LIB Changelog README TODO VERSION qemu-doc.html qemu-tech.html +%_bindir/qemu-system-* +%doc %_mandir/man1/qemu.1.gz +%_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) +%doc %_mandir/man1/qemu-img.1.gz +%doc %_mandir/man1/virtfs-proxy-helper.1.gz +%doc %_mandir/man8/qemu-nbd.8.gz +%_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-arm +%_bindir/qemu-armeb +%_bindir/qemu-cris +%_bindir/qemu-i386 +%_bindir/qemu-m68k +%_bindir/qemu-microblaze +%_bindir/qemu-microblazeel +%_bindir/qemu-mips +%_bindir/qemu-mipsel +%_bindir/qemu-mipsn32 +%_bindir/qemu-mipsn32el +%_bindir/qemu-or32 +%_bindir/qemu-ppc64abi32 +%_bindir/qemu-ppc64 +%_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 diff --git a/packaging/qemu.spec.manifest b/packaging/qemu.spec.manifest new file mode 100644 index 000000000..017d22d3a --- /dev/null +++ b/packaging/qemu.spec.manifest @@ -0,0 +1,5 @@ +<manifest> + <request> + <domain name="_"/> + </request> +</manifest> diff --git a/packaging/rpmlintrc b/packaging/rpmlintrc new file mode 100644 index 000000000..66f5a92d9 --- /dev/null +++ b/packaging/rpmlintrc @@ -0,0 +1,5 @@ +# This line is mandatory to access the configuration functions +from Config import * + +addFilter("arch-dependent-file-in-usr-share") + diff --git a/packaging/update_git.sh b/packaging/update_git.sh new file mode 100644 index 000000000..9583f1c8d --- /dev/null +++ b/packaging/update_git.sh @@ -0,0 +1,105 @@ +#!/bin/bash -e +# +# While updating versions of QEMU to 1.0 I got fed up with the +# quilt workflow and just put up a git tree that contains all +# the commits on top of a stable tarball. +# +# When updating this package, just either update the git tree +# below (use rebase!) or change the tree path and use your own +# +# That way we can easily rebase against the next stable release +# when it comes. + +GIT_TREE=git://github.com/openSUSE/qemu.git +GIT_LOCAL_TREE=~/git/qemu-opensuse +GIT_BRANCH=opensuse-2.0 +GIT_UPSTREAM_TAG=v2.0.0 +QEMU_TMP=/dev/shm/qemu-tmp + +restore_file_to_package() { +# If the processed file matches the previous one, move the previous +# one back in place, otherwise add the processed file. + + if cmp -s "$1" saved."$1"; then + osc mv --force saved."$1" "$1" + else + osc add "$1" + fi +} + +# save files in case they remain unchanged +if [ -e 0001-* ]; then + for i in 0*; do + osc mv $i saved.$i + done +fi +osc mv qemu.spec saved.qemu.spec +osc mv qemu-linux-user.spec saved.qemu-linux-user.spec + +# fetch all patches +rm -rf $QEMU_TMP +OSCDIR="$(pwd)" +if [ -d "$GIT_LOCAL_TREE" ]; then + git clone -ls $GIT_LOCAL_TREE $QEMU_TMP + cd $QEMU_TMP +else + git clone $GIT_TREE $QEMU_TMP + cd $QEMU_TMP + git remote add upstream git://git.qemu.org/qemu.git + git remote update +fi +git checkout $GIT_BRANCH +git format-patch -N $GIT_UPSTREAM_TAG -o "$OSCDIR" +QEMU_VERSION=`cat VERSION` +cd "$OSCDIR" +rm -rf $QEMU_TMP + +# cut off file name after 40 bytes, so we work around git version differences +# while at it, also remove the signature. +for i in 0*; do + PATCHNAME=${i%.patch} + PATCHNAME=${PATCHNAME:0:40}.patch + head -n $(expr $(wc -l $i | cut -d ' ' -f 1) - 3) $i > "$PATCHNAME.tmp" + rm "$i" + mv "$PATCHNAME.tmp" "$PATCHNAME" + restore_file_to_package "$PATCHNAME" +done + +# we have all patches as files now - generate the spec files! +for package in qemu qemu-linux-user; do + while IFS= read -r line; do + if [ "$line" = "PATCH_FILES" ]; then + for i in 0*; do + NUM=${i%%-*} + echo -e "Patch$NUM: $i" + done + elif [ "$line" = "PATCH_EXEC" ]; then + for i in 0*; do + NUM=${i%%-*} + echo "%patch$NUM -p1" + done + elif [ "$line" = "QEMU_VERSION" ]; then + echo "Version: $QEMU_VERSION" + elif [[ "$line" =~ ^Source: ]]; then + QEMU_TARBALL=qemu-`echo "$line" | cut -d '-' -f 2-` + VERSION_FILE=${QEMU_TARBALL%.tar.bz2}/roms/seabios/.version + SEABIOS_VERSION=`tar jxfO "$QEMU_TARBALL" "$VERSION_FILE"` + SEABIOS_VERSION=`echo $SEABIOS_VERSION | cut -d '-' -f 2` + echo "$line" + elif [ "$line" = "SEABIOS_VERSION" ]; then + echo "Version: $SEABIOS_VERSION" + else + echo "$line" + fi + done < $package.spec.in > $package.spec +done + +restore_file_to_package qemu.spec +restore_file_to_package qemu-linux-user.spec + +# remove any remaining saved files +files=(saved.*) +if [ -e "${files[0]}" ]; then + osc rm --force saved.* +fi + |