From 67348d7a6ea9d8e85000eb5cfb8d0110ccb3c7af Mon Sep 17 00:00:00 2001 From: Matthias Saou Date: Aug 23 2006 16:22:50 +0000 Subject: Update to 0.8.2 (#200065) and various other fixes and enhancements. --- diff --git a/.cvsignore b/.cvsignore index ae29ae3..15c393f 100644 --- a/.cvsignore +++ b/.cvsignore @@ -1 +1 @@ -qemu-0.8.1.tar.gz +qemu-0.8.2.tar.gz diff --git a/qemu-0.8.1-syscall-macros.patch b/qemu-0.8.1-syscall-macros.patch deleted file mode 100644 index 9fbd433..0000000 --- a/qemu-0.8.1-syscall-macros.patch +++ /dev/null @@ -1,189 +0,0 @@ ---- qemu-0.8.1/linux-user/syscall.c~ 2006-05-03 21:32:58.000000000 +0100 -+++ qemu-0.8.1/linux-user/syscall.c 2006-06-07 22:11:48.000000000 +0100 -@@ -79,127 +79,59 @@ - #define VFAT_IOCTL_READDIR_SHORT _IOR('r', 2, struct dirent [2]) - - --#if defined(__powerpc__) --#undef __syscall_nr --#undef __sc_loadargs_0 --#undef __sc_loadargs_1 --#undef __sc_loadargs_2 --#undef __sc_loadargs_3 --#undef __sc_loadargs_4 --#undef __sc_loadargs_5 --#undef __sc_asm_input_0 --#undef __sc_asm_input_1 --#undef __sc_asm_input_2 --#undef __sc_asm_input_3 --#undef __sc_asm_input_4 --#undef __sc_asm_input_5 - #undef _syscall0 - #undef _syscall1 - #undef _syscall2 - #undef _syscall3 - #undef _syscall4 - #undef _syscall5 -+#undef _syscall6 - --/* need to redefine syscalls as Linux kernel defines are incorrect for -- the clobber list */ --/* On powerpc a system call basically clobbers the same registers like a -- * function call, with the exception of LR (which is needed for the -- * "sc; bnslr" sequence) and CR (where only CR0.SO is clobbered to signal -- * an error return status). -- */ -- --#define __syscall_nr(nr, type, name, args...) \ -- unsigned long __sc_ret, __sc_err; \ -- { \ -- register unsigned long __sc_0 __asm__ ("r0"); \ -- register unsigned long __sc_3 __asm__ ("r3"); \ -- register unsigned long __sc_4 __asm__ ("r4"); \ -- register unsigned long __sc_5 __asm__ ("r5"); \ -- register unsigned long __sc_6 __asm__ ("r6"); \ -- register unsigned long __sc_7 __asm__ ("r7"); \ -- \ -- __sc_loadargs_##nr(name, args); \ -- __asm__ __volatile__ \ -- ("sc \n\t" \ -- "mfcr %0 " \ -- : "=&r" (__sc_0), \ -- "=&r" (__sc_3), "=&r" (__sc_4), \ -- "=&r" (__sc_5), "=&r" (__sc_6), \ -- "=&r" (__sc_7) \ -- : __sc_asm_input_##nr \ -- : "cr0", "ctr", "memory", \ -- "r8", "r9", "r10","r11", "r12"); \ -- __sc_ret = __sc_3; \ -- __sc_err = __sc_0; \ -- } \ -- if (__sc_err & 0x10000000) \ -- { \ -- errno = __sc_ret; \ -- __sc_ret = -1; \ -- } \ -- return (type) __sc_ret -- --#define __sc_loadargs_0(name, dummy...) \ -- __sc_0 = __NR_##name --#define __sc_loadargs_1(name, arg1) \ -- __sc_loadargs_0(name); \ -- __sc_3 = (unsigned long) (arg1) --#define __sc_loadargs_2(name, arg1, arg2) \ -- __sc_loadargs_1(name, arg1); \ -- __sc_4 = (unsigned long) (arg2) --#define __sc_loadargs_3(name, arg1, arg2, arg3) \ -- __sc_loadargs_2(name, arg1, arg2); \ -- __sc_5 = (unsigned long) (arg3) --#define __sc_loadargs_4(name, arg1, arg2, arg3, arg4) \ -- __sc_loadargs_3(name, arg1, arg2, arg3); \ -- __sc_6 = (unsigned long) (arg4) --#define __sc_loadargs_5(name, arg1, arg2, arg3, arg4, arg5) \ -- __sc_loadargs_4(name, arg1, arg2, arg3, arg4); \ -- __sc_7 = (unsigned long) (arg5) -- --#define __sc_asm_input_0 "0" (__sc_0) --#define __sc_asm_input_1 __sc_asm_input_0, "1" (__sc_3) --#define __sc_asm_input_2 __sc_asm_input_1, "2" (__sc_4) --#define __sc_asm_input_3 __sc_asm_input_2, "3" (__sc_5) --#define __sc_asm_input_4 __sc_asm_input_3, "4" (__sc_6) --#define __sc_asm_input_5 __sc_asm_input_4, "5" (__sc_7) -- --#define _syscall0(type,name) \ --type name(void) \ --{ \ -- __syscall_nr(0, type, name); \ --} -- --#define _syscall1(type,name,type1,arg1) \ --type name(type1 arg1) \ --{ \ -- __syscall_nr(1, type, name, arg1); \ --} -- --#define _syscall2(type,name,type1,arg1,type2,arg2) \ --type name(type1 arg1, type2 arg2) \ --{ \ -- __syscall_nr(2, type, name, arg1, arg2); \ --} -- --#define _syscall3(type,name,type1,arg1,type2,arg2,type3,arg3) \ --type name(type1 arg1, type2 arg2, type3 arg3) \ --{ \ -- __syscall_nr(3, type, name, arg1, arg2, arg3); \ --} -- --#define _syscall4(type,name,type1,arg1,type2,arg2,type3,arg3,type4,arg4) \ --type name(type1 arg1, type2 arg2, type3 arg3, type4 arg4) \ --{ \ -- __syscall_nr(4, type, name, arg1, arg2, arg3, arg4); \ --} -- --#define _syscall5(type,name,type1,arg1,type2,arg2,type3,arg3,type4,arg4,type5,arg5) \ --type name(type1 arg1, type2 arg2, type3 arg3, type4 arg4, type5 arg5) \ --{ \ -- __syscall_nr(5, type, name, arg1, arg2, arg3, arg4, arg5); \ -+#define _syscall0(type,name) \ -+type name (void) \ -+{ \ -+ return syscall(__NR_##name); \ - } --#endif -+ -+#define _syscall1(type,name,type1,arg1) \ -+type name (type1 arg1) \ -+{ \ -+ return syscall(__NR_##name, arg1); \ -+} -+ -+#define _syscall2(type,name,type1,arg1,type2,arg2) \ -+type name (type1 arg1,type2 arg2) \ -+{ \ -+ return syscall(__NR_##name, arg1, arg2); \ -+} -+ -+#define _syscall3(type,name,type1,arg1,type2,arg2,type3,arg3) \ -+type name (type1 arg1,type2 arg2,type3 arg3) \ -+{ \ -+ return syscall(__NR_##name, arg1, arg2, arg3); \ -+} -+ -+#define _syscall4(type,name,type1,arg1,type2,arg2,type3,arg3,type4,arg4) \ -+type name (type1 arg1,type2 arg2,type3 arg3,type4 arg4) \ -+{ \ -+ return syscall(__NR_##name, arg1, arg2, arg3, arg4); \ -+} -+ -+#define _syscall5(type,name,type1,arg1,type2,arg2,type3,arg3,type4,arg4, \ -+ type5,arg5) \ -+type name (type1 arg1,type2 arg2,type3 arg3,type4 arg4,type5 arg5) \ -+{ \ -+ return syscall(__NR_##name, arg1, arg2, arg3, arg4, arg5); \ -+} -+ -+ -+#define _syscall6(type,name,type1,arg1,type2,arg2,type3,arg3,type4,arg4, \ -+ type5,arg5,type6,arg6) \ -+type name (type1 arg1,type2 arg2,type3 arg3,type4 arg4,type5 arg5,type6 arg6) \ -+{ \ -+ return syscall(__NR_##name, arg1, arg2, arg3, arg4, arg5, arg6); \ -+} -+ - - #define __NR_sys_uname __NR_uname - #define __NR_sys_getcwd1 __NR_getcwd ---- qemu-0.8.1/target-i386/helper2.c.orig 2006-06-08 11:09:41.000000000 +0100 -+++ qemu-0.8.1/target-i386/helper2.c 2006-06-08 11:10:30.000000000 +0100 -@@ -35,7 +35,10 @@ - #include - #include - --_syscall3(int, modify_ldt, int, func, void *, ptr, unsigned long, bytecount) -+int modify_ldt(int func, void *ptr, unsigned long bytecount) -+{ -+ return syscall(__NR_modify_ldt, func, ptr, bytecount); -+} - - #if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 5, 66) - #define modify_ldt_ldt_s user_desc diff --git a/qemu.spec b/qemu.spec index 78e3d4c..eb86b2f 100644 --- a/qemu.spec +++ b/qemu.spec @@ -1,63 +1,58 @@ Summary: QEMU is a FAST! processor emulator Name: qemu -Version: 0.8.1 -Release: 3%{?dist} - +Version: 0.8.2 +Release: 1%{?dist} License: GPL/LGPL Group: Development/Tools -URL: http://fabrice.bellard.free.fr/qemu +URL: http://www.qemu.org/ Source0: http://www.qemu.org/%{name}-%{version}.tar.gz Source1: qemu.init Patch0: qemu-0.7.0-build.patch Patch1: qemu-0.8.0-sdata.patch -Patch2: qemu-0.8.1-syscall-macros.patch BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) -BuildRequires: SDL-devel compat-gcc-32 zlib-devel texi2html -PreReq: /sbin/chkconfig -PreReq: /sbin/service -ExclusiveArch: %{ix86} ppc alpha sparc armv4l x86_64 +BuildRequires: SDL-devel compat-gcc-32 zlib-devel which texi2html +Requires(post): /sbin/chkconfig +Requires(preun): /sbin/service /sbin/chkconfig +Requires(postun): /sbin/service +ExclusiveArch: %{ix86} x86_64 ppc alpha sparc armv4l %description -By using dynamic translation it achieves a reasonable speed while being easy -to port on new host CPUs. QEMU has two operating modes: +QEMU is a generic and open source processor emulator which achieves a good +emulation speed by using dynamic translation. QEMU has two operating modes: + * Full system emulation. In this mode, QEMU emulates a full system (for + example a PC), including a processor and various peripherials. It can be + used to launch different Operating Systems without rebooting the PC or + to debug system code. * User mode emulation. In this mode, QEMU can launch Linux processes compiled - for one CPU on another CPU. Linux system calls are converted because of - endianness and 32/64 bit mismatches. Wine (Windows emulation) and DOSEMU - (DOS emulation) are the main targets for QEMU. - * Full system emulation. In this mode, QEMU emulates a full system, including - a processor and various peripherals. Currently, it is only used to launch - an x86 Linux kernel on an x86 Linux system. It enables easier testing and - debugging of system code. It can also be used to provide virtual hosting - of several virtual PC on a single server. + for one CPU on another CPU. -As QEMU requires no host kernel patches to run, it is very safe and easy to use. +As QEMU requires no host kernel patches to run, it is safe and easy to use. %prep %setup -q %patch0 -p1 %patch1 -p1 -%patch2 -p1 %build ./configure --prefix=%{_prefix} --interp-prefix=%{_prefix}/qemu-%%M \ %ifarch x86_64 - --target-list="i386-user arm-user armeb-user ppc-user mips-user mipsel-user i386-softmmu ppc-softmmu x86_64-softmmu mips-softmmu arm-softmmu" \ + --target-list="i386-user arm-user armeb-user ppc-user mips-user mipsel-user i386-softmmu ppc-softmmu x86_64-softmmu mips-softmmu arm-softmmu" \ %endif - --cc=gcc32 --enable-alsa -make + --cc=gcc32 --enable-alsa +make %{?_smp_mflags} %install rm -rf $RPM_BUILD_ROOT make prefix="${RPM_BUILD_ROOT}%{_prefix}" \ - bindir="${RPM_BUILD_ROOT}%{_bindir}" \ - sharedir="${RPM_BUILD_ROOT}%{_prefix}/share/qemu" \ - mandir="${RPM_BUILD_ROOT}%{_mandir}" \ - docdir="${RPM_BUILD_ROOT}%{_docdir}/%{name}-%{version}" \ - datadir="${RPM_BUILD_ROOT}%{_prefix}/share/qemu" install + bindir="${RPM_BUILD_ROOT}%{_bindir}" \ + sharedir="${RPM_BUILD_ROOT}%{_prefix}/share/qemu" \ + mandir="${RPM_BUILD_ROOT}%{_mandir}" \ + docdir="${RPM_BUILD_ROOT}%{_docdir}/%{name}-%{version}" \ + datadir="${RPM_BUILD_ROOT}%{_prefix}/share/qemu" install -install -D $RPM_SOURCE_DIR/qemu.init $RPM_BUILD_ROOT%{_sysconfdir}/rc.d/init.d/qemu +install -D -p -m 0755 %{SOURCE1} $RPM_BUILD_ROOT%{_sysconfdir}/rc.d/init.d/qemu %clean rm -rf $RPM_BUILD_ROOT @@ -66,22 +61,37 @@ rm -rf $RPM_BUILD_ROOT /sbin/chkconfig --add qemu %preun -if [ $1 = 0 ]; then - /sbin/service qemu stop > /dev/null 2>&1 +if [ $1 -eq 0 ]; then + /sbin/service qemu stop &>/dev/null || : + /sbin/chkconfig --del qemu +fi + +%postun +if [ $1 -ge 1 ]; then + /sbin/service qemu condrestart &>/dev/null || : fi -/sbin/chkconfig --del qemu %files %defattr(-,root,root) %doc Changelog README README.distrib TODO -%doc qemu-tech.texi qemu-doc.texi -%doc *.html -%{_bindir}/qemu* -%{_prefix}/share/qemu -%{_mandir}/man?/* +%doc qemu-doc.html qemu-tech.html %config %{_sysconfdir}/rc.d/init.d/qemu +%{_bindir}/qemu* +%{_prefix}/share/qemu/ +%{_mandir}/man1/* %changelog +* Wed Aug 23 2006 Matthias Saou 0.8.2-1 +- Update to 0.8.2 (#200065). +- Drop upstreamed syscall-macros patch2. +- Put correct scriplet dependencies. +- Force install mode for the init script to avoid umask problems. +- Add %%postun condrestart for changes to the init script to be applied if any. +- Update description with the latest "about" from the web page (more current). +- Update URL to qemu.org one like the Source. +- Add which build requirement. +- Don't include texi files in %%doc since we ship them in html. + * Thu Jun 8 2006 David Woodhouse 0.8.1-3 - More header abuse in modify_ldt(), change BuildRoot: diff --git a/sources b/sources index 7ee910f..ca93fec 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -67d924324a5ab79d017bd97a1e767285 qemu-0.8.1.tar.gz +5b3a89eb2f256a8a6f3bb07f7b3f1b07 qemu-0.8.2.tar.gz