packaging: add packaging spec files
authorChanho Park <chanho61.park@samsung.com>
Fri, 27 Jun 2014 05:53:53 +0000 (14:53 +0900)
committerChanho Park <parkch98@gmail.com>
Tue, 9 Sep 2014 02:33:11 +0000 (11:33 +0900)
This patch adds packaging files to build with GBS and rpmbuild.

Change-Id: I1cb93997635a28b91a489dbe77d306e6ac684581
Signed-off-by: Chanho Park <chanho61.park@samsung.com>
packaging/baselibs.conf [new file with mode: 0644]
packaging/bridge.conf [new file with mode: 0644]
packaging/qemu.changes [new file with mode: 0644]
packaging/qemu.spec [new file with mode: 0644]
packaging/qemu.spec.in [new file with mode: 0644]
packaging/qemu.spec.manifest [new file with mode: 0644]
packaging/rpmlintrc [new file with mode: 0644]
packaging/update_git.sh [new file with mode: 0644]

diff --git a/packaging/baselibs.conf b/packaging/baselibs.conf
new file mode 100644 (file)
index 0000000..d1a8ff3
--- /dev/null
@@ -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 (file)
index 0000000..d06c62a
--- /dev/null
@@ -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 (file)
index 0000000..cd216d0
--- /dev/null
@@ -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 (file)
index 0000000..d182436
--- /dev/null
@@ -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 (file)
index 0000000..57a2ba6
--- /dev/null
@@ -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 (file)
index 0000000..017d22d
--- /dev/null
@@ -0,0 +1,5 @@
+<manifest>
+ <request>
+    <domain name="_"/>
+ </request>
+</manifest>
diff --git a/packaging/rpmlintrc b/packaging/rpmlintrc
new file mode 100644 (file)
index 0000000..66f5a92
--- /dev/null
@@ -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 (file)
index 0000000..9583f1c
--- /dev/null
@@ -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
+