diff options
Diffstat (limited to 'app-emulation')
4 files changed, 558 insertions, 3 deletions
diff --git a/app-emulation/parallels-workstation/ChangeLog b/app-emulation/parallels-workstation/ChangeLog index f0a3c9052cd7..7d8a062ae769 100644 --- a/app-emulation/parallels-workstation/ChangeLog +++ b/app-emulation/parallels-workstation/ChangeLog @@ -1,6 +1,14 @@ # ChangeLog for app-emulation/parallels-workstation -# Copyright 1999-2007 Gentoo Foundation; Distributed under the GPL v2 -# $Header: /var/cvsroot/gentoo-x86/app-emulation/parallels-workstation/ChangeLog,v 1.2 2007/07/02 14:00:27 peper Exp $ +# Copyright 1999-2008 Gentoo Foundation; Distributed under the GPL v2 +# $Header: /var/cvsroot/gentoo-x86/app-emulation/parallels-workstation/ChangeLog,v 1.3 2008/02/07 15:43:49 cardoe Exp $ + +*parallels-workstation-2.2.2112-r2 (07 Feb 2008) + + 07 Feb 2008; Doug Klima <cardoe@gentoo.org> + +files/parallels-workstation-2.2.2112-2.6.23.patch, + +parallels-workstation-2.2.2112-r2.ebuild: + updated ebuild and patch from Andrey Romanchev <andreyr@parallels.com> for + bug #209171. Some clean ups and tweaks by me. 02 Jul 2007; Piotr Jaroszyński <peper@gentoo.org> parallels-workstation-2.2.2112-r1.ebuild: diff --git a/app-emulation/parallels-workstation/Manifest b/app-emulation/parallels-workstation/Manifest index 03e621e9140e..4420fccf9a43 100644 --- a/app-emulation/parallels-workstation/Manifest +++ b/app-emulation/parallels-workstation/Manifest @@ -1,6 +1,18 @@ +-----BEGIN PGP SIGNED MESSAGE----- +Hash: SHA1 + +AUX parallels-workstation-2.2.2112-2.6.23.patch 11559 RMD160 8d4e40c08e710584e1fadb4bb97e4aa4f4f59097 SHA1 81f070de2d366b53d76a8ee66bff4f4fa06d2ac1 SHA256 f540322750ed13d877a6a6de932668c873268ddcb1df7a6df06a4e939bba38bd AUX parallels-workstation-2.2.2112-prlnet.patch 340 RMD160 efacfdca7d5dfabec09a44fa8b31d8329ecd612b SHA1 c3f2b90ff9b7731f9e2d502b47671814bbf818d2 SHA256 b963f3d95f06a4300b5b10abea21422640d0f41950996c32dab599505e62d8cd AUX parallels.rc 836 RMD160 85d5dd81d63dfaddffa29ff922b87786c85dbfa0 SHA1 a943085b6c44048b75dfefa3d41099a67ef4c92e SHA256 db1af1c07170437a22f4ca39cf58fd0b9b067106e5a3647382fa031046d3ddf7 DIST Parallels-2.2.2112-lin.tgz 16779974 RMD160 cf4cc7773a168b14c315be7bb4a760749beeeefb SHA1 fed6d150a72216ac084825e8efcbb18cbd3629be SHA256 3ea46c2895c89eee23d14c9d20fc12d5892736297c5fb7c77a64bae8c94f2ce5 EBUILD parallels-workstation-2.2.2112-r1.ebuild 2254 RMD160 d9ede8ea80a6b24d73c135270155177a4efb0517 SHA1 867328f1daff1b43373bac89a8a1593e8897eeb1 SHA256 86abb18011d9977112de564d7679b19325dc9ab0ae087795ab355ed3f3e826cd -MISC ChangeLog 762 RMD160 4d7a19aa457c66b159b956fb31422b3c4f68783a SHA1 92c3449659e8fedbaa4b724f803e4ce3e8932a68 SHA256 cf974f37bd96a0dde5475a724f93dcb4b43eac62efc613c584ccc4e95f680648 +EBUILD parallels-workstation-2.2.2112-r2.ebuild 2126 RMD160 dff9a11b9b253bf644663868cf4711b8cdaef092 SHA1 99bb86a21d03d72ecdea2c613fd2eef1b73dc3ab SHA256 bfec2cf923664bf16d0f2a4e68e805a24e4cd66616e626ed33a60c90d7398d5b +MISC ChangeLog 1084 RMD160 ce8557f3071f5173c527565297d41a83698c48c8 SHA1 a05030327138d30ce59174e1e100a7b1b6ab3c24 SHA256 df8ea9fe4c7d5c93eb665b679a2cd4efbd2a6ed76358f9e8196b43a2d40de6b9 MISC metadata.xml 730 RMD160 c230554da9e45b7a7088fbffb6f21638a42753a7 SHA1 269bbbac7bdbd3513209bb666e1ccd3ea9adb9a9 SHA256 59c576c7bf7ddd5c0113c02f8056add269d3311a2609dfd698dd801c484b44d6 +-----BEGIN PGP SIGNATURE----- +Version: GnuPG v2.0.7 (GNU/Linux) + +iD8DBQFHqyc+oeSe8B0zEfwRAohBAJ9RdMN9AM+FnzlfDzJxOe0Irvms5gCffd81 +Uah6PzyucuC29b8w8vKcU7M= +=g49w +-----END PGP SIGNATURE----- diff --git a/app-emulation/parallels-workstation/files/parallels-workstation-2.2.2112-2.6.23.patch b/app-emulation/parallels-workstation/files/parallels-workstation-2.2.2112-2.6.23.patch new file mode 100644 index 000000000000..47efd01ff125 --- /dev/null +++ b/app-emulation/parallels-workstation/files/parallels-workstation-2.2.2112-2.6.23.patch @@ -0,0 +1,452 @@ +--- data/drivers/drv_main/compat/compat_memory.h ++++ data/drivers/drv_main/compat/compat_memory.h +123a124,136 +> /* change kmem_cache_t to kmem_cache */ +> #if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 22) +> # define kmem_cache_compat struct kmem_cache +> # if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 23) +> # define compat_kmem_cache_create(a, b, c, d, e, f) (kmem_cache_create(a, b, c, d, e)) +> # else +> # define compat_kmem_cache_create(a, b, c, d, e, f) (kmem_cache_create(a, b, c, d, e, f)) +> # endif +> #else +> # define kmem_cache_compat kmem_cache_t +> # define compat_kmem_cache_create(a, b, c, d, e, f) (kmem_cache_create(a, b, c, d, e, f)) +> #endif +> +--- data/drivers/drv_main/Makefile ++++ data/drivers/drv_main/Makefile +2c2 +< KSRC=/lib/modules/$(shell uname -r)/build +--- +> KSRC ?= /lib/modules/$(shell uname -r)/build +--- data/drivers/drv_main/mm/manager.c ++++ data/drivers/drv_main/mm/manager.c +22a23 +> #include <linux/sched.h> +268c269 +< vmGlobal.vmPmms.pmmRegionsSlab = kmem_cache_create("vmRegions", sizeof(struct pmm_region_t), 0, +--- +> vmGlobal.vmPmms.pmmRegionsSlab = compat_kmem_cache_create("vmRegions", sizeof(struct pmm_region_t), 0, +--- data/drivers/drv_main/mm/pages.c ++++ data/drivers/drv_main/mm/pages.c +20a21 +> #include <linux/sched.h> +--- data/drivers/drv_main/vmmain.h ++++ data/drivers/drv_main/vmmain.h +23a24 +> #include "compat/compat_memory.h" +196c197 +< kmem_cache_t *pmmRegionsSlab; +--- +> kmem_cache_compat *pmmRegionsSlab; +--- data/drivers/drv_net/linux/prlnet.c ++++ data/drivers/drv_net/linux/prlnet.c +6c6 +< // $Id: parallels-workstation-2.2.2112-2.6.23.patch,v 1.1 2008/02/07 15:43:50 cardoe Exp $ +--- +> // $Id: parallels-workstation-2.2.2112-2.6.23.patch,v 1.1 2008/02/07 15:43:50 cardoe Exp $ +17a18 +> #include <linux/mm.h> +33a35,38 +> #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,22) +> #include <net/ip.h> +> #endif +> +725a731,735 +> +> #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,22) +> skb_reset_mac_header(skb); +> skb_set_network_header(skb, sizeof(skb->mac_header)); +> #else +727a738 +> #endif +783a795,797 +> #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,22) +> eth = (eth_header_t *)skb_mac_header(skbout); +> #else +784a799 +> #endif +875c890,895 +< prlnet_recv(struct sk_buff *skb, struct net_device *dev, struct packet_type *pt) +--- +> prlnet_recv( +> struct sk_buff *skb, struct net_device *dev, struct packet_type *pt +> #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,14) +> , struct net_device *origdev +> #endif +> ) +884c904,909 +< && skb->ip_summed == CHECKSUM_HW; +--- +> && skb->ip_summed == +> #ifdef CHECKSUM_HW +> CHECKSUM_HW; +> #else +> CHECKSUM_PARTIAL; +> #endif +887a913,915 +> #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,22) +> int len = skb->data - skb_mac_header(skb) + skb->len; +> #else +888a917 +> #endif +891a921,936 +> #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,22) +> // can't use skb_copy_and_csum_dev(skb, buf + 2) here +> // because skb->h == skb->nh. opensource rules! +> int hoff = sizeof(struct ethhdr) + ip_hdrlen(skb); +> // IP header checksum is done by the kernel +> skb_copy_bits(skb, +> skb_mac_header(skb) - skb->data, buf + 2, hoff); +> +> // skb->csum is an offset from true skb->h.raw +> *(unsigned short *)(buf + 2 + hoff + skb->csum) = +> csum_fold( +> // kernel does conceptual header too +> skb_copy_and_csum_bits(skb, +> skb_mac_header(skb) + hoff - skb->data, +> buf + 2 + hoff, len - hoff, 0)); +> #else +897a943 +> +904a951 +> #endif +906a954,957 +> #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,22) +> skb_copy_bits(skb, +> skb_mac_header(skb) - skb->data, buf + 2, len); +> #else +908a960 +> #endif +910a963 +> kfree(buf); +912d964 +< kfree(buf); +922a975,977 +> #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,22) +> hw_recv(hw, skb_mac_header(skb), skb->data - skb_mac_header(skb) + skb->len); +> #else +923a979 +> #endif +1010a1067 +> #if WIRELESS_EXT < 19 +1012a1070 +> #endif +--- data/drivers/drv_net/linux/prlnet.h ++++ data/drivers/drv_net/linux/prlnet.h +6c6 +< // $Id: parallels-workstation-2.2.2112-2.6.23.patch,v 1.1 2008/02/07 15:43:50 cardoe Exp $ +--- +> // $Id: parallels-workstation-2.2.2112-2.6.23.patch,v 1.1 2008/02/07 15:43:50 cardoe Exp $ +Только в data/drivers/drv_net/linux: vm-bridge.mod.c +--- data/drivers/drv_virtualnic/vmvirtualnic.c ++++ data/drivers/drv_virtualnic/vmvirtualnic.c +72c72 +< MODULE_DESCRIPTION("Transparen ethernet bridge"); +--- +> MODULE_DESCRIPTION("Virtual ethernet card"); +75,77d74 +< // Version +< //static const char *version = "VMVirtualNIC.c:v1.01 VirtualNIC driver from Parallels Inc. http://www.parallelssoft.com/"; +< +79c76 +< struct net_device* dev; +--- +> struct net_device* devs[5]; +99d95 +< +101c97 +< }; +--- +> } +121d116 +< +123c118 +< }; +--- +> } +201a197,203 +> int maxdev = 1; +> #if defined(module_param) +> module_param(maxdev, int, 0); +> #elif defined(MODULE_PARM) +> MODULE_PARM(maxdev, "i"); +> #endif +> +217,222c219,233 +< // MAC address is hardwired to that value as in windows version +< unsigned char station_addr[6] = { 0x00, 0x01, 0x23, 0x45, 0xBE, 0xEF }; +< #if 0 +< hypervisorPresentInSystem(); /* fake call to hypervisor -- ms */ +< #endif +< +--- +> // MAC address is hardwired to that value as in windows version +> static const unsigned char station_addr[5][6] = { +> { 0x00, 0x01, 0x23, 0x45, 0xBE, 0xEF }, +> { 0x00, 0x01, 0x23, 0x45, 0xCA, 0xFE }, +> { 0x00, 0x01, 0x23, 0x45, 0xDA, 0xCE }, +> { 0x00, 0x01, 0x23, 0x45, 0xEC, 0xAE }, +> { 0x00, 0x01, 0x23, 0x45, 0xFA, 0xDE } +> }; +> int i; +> +> if (maxdev < 0) +> maxdev = 1; +> if (maxdev > 5) +> maxdev = 5; +> for (i = 0; i < maxdev; ++i) { +224c235 +< dev = alloc_etherdev(sizeof(struct net_device_stats)); +--- +> devs[i] = alloc_etherdev(sizeof(struct net_device_stats)); +226,229c237,239 +< dev = init_etherdev(0, 0); +< // May be it needed ? +< ether_setup(dev); +< dev->priv = kmalloc(sizeof(struct net_device_stats), GFP_KERNEL); +--- +> devs[i] = init_etherdev(0, 0); +> ether_setup(devs[i]); +> devs[i]->priv = kmalloc(sizeof(struct net_device_stats), GFP_KERNEL); +232,242c242,252 +< dev_alloc_name(dev, "vnic%d"); +< // Set MAC address +< memcpy(dev->dev_addr, station_addr, ETH_ALEN); +< memset(dev->priv, 0, sizeof(struct net_device_stats)); +< +< // Set functions +< dev->hard_start_xmit = &VNICXmit; +< dev->get_stats = &VNICGetStats; +< dev->open = &VNICOpen; +< dev->stop = &VNICClose; +< dev->set_mac_address = &VNICSetMAC; +--- +> dev_alloc_name(devs[i], "vnic%d"); +> // Set MAC address +> memcpy(devs[i]->dev_addr, station_addr[i], ETH_ALEN); +> memset(devs[i]->priv, 0, sizeof(struct net_device_stats)); +> +> // Set functions +> devs[i]->hard_start_xmit = VNICXmit; +> devs[i]->get_stats = VNICGetStats; +> devs[i]->open = VNICOpen; +> devs[i]->stop = VNICClose; +> devs[i]->set_mac_address = VNICSetMAC; +244c254 +< SET_MODULE_OWNER(dev); +--- +> SET_MODULE_OWNER(devs[i]); +248c258 +< register_netdev(dev); +--- +> register_netdev(devs[i]); +250,252c260,262 +< +< return(0); +< }; +--- +> } +> return 0; +> } +268a279 +> int i; +270,272c281,283 +< if (dev) +< { +< ndstat = dev->priv; +--- +> for (i = 0; i < 5; ++i) { +> if (devs[i]) { +> ndstat = devs[i]->priv; +274c285 +< unregister_netdev(dev); +--- +> unregister_netdev(devs[i]); +276c287 +< free_netdev(dev); +--- +> free_netdev(devs[i]); +278,280c289,291 +< kfree(ndstat); +< dev->priv = NULL; +< kfree(dev); +--- +> kfree(ndstat); +> devs[i]->priv = NULL; +> kfree(devs[i]); +281a293,294 +> devs[i] = NULL; +> } +--- data/drivers/hypervisor/hypercall.h ++++ data/drivers/hypervisor/hypercall.h +19,20c19,22 +< #ifndef __HYPERCALL_H__ +< #define __HYPERCALL_H__ +--- +> +> +> #ifndef __PRL_HYPERCALL_H__ +> #define __PRL_HYPERCALL_H__ +115,116c117 +< +< #endif /* __HYPERCALL_H__ */ +--- +> #endif /* __PRL_HYPERCALL_H__ */ +--- data/drivers/hypervisor/hypervisor.h ++++ data/drivers/hypervisor/hypervisor.h +19,20c19,20 +< #ifndef __HYPERVISOR_H__ +< #define __HYPERVISOR_H__ +--- +> #ifndef __PRL_HYPERVISOR_H__ +> #define __PRL_HYPERVISOR_H__ +33a34 +> # include "compat_memory.h" +130c131 +< kmem_cache_t *vmStateCache; +--- +> kmem_cache_compat *vmStateCache; +177c178 +< #endif /* __HYPERVISOR_H__ */ +--- +> #endif /* __PRL_HYPERVISOR_H__ */ +--- data/drivers/hypervisor/hypvmstate.c ++++ data/drivers/hypervisor/hypvmstate.c +24a25 +> #include "compat_memory.h" +169c170 +< if (!(hypState.vmStateCache = kmem_cache_create(VMSTATE_SLABNAME, sizeof(struct hyp_vmstate_t), 0, +--- +> if (!(hypState.vmStateCache = compat_kmem_cache_create(VMSTATE_SLABNAME, sizeof(struct hyp_vmstate_t), 0, +--- data/drivers/hypervisor/svm_init.h ++++ data/drivers/hypervisor/svm_init.h +34a35,38 +> /// Definitions of AMD CPUID function to get SVM revision and feature identification +> #define CPUID_SVM_REV 0x8000000a +> +> +37a42,48 +> /// Definition of bit SVM_LOCK in edx after CPUID_SVM_REV fn +> #define SVM_LOCK (1 << 2) +> +> /// Definition of bit SVM Disabled in VM_CR SMR +> #define VM_CR_SVMDIS (1 << 4) +> +> +45a57,83 +> /// Definition of address of VM_CR SMR +> #define SMR_VM_CR 0xc0010114 +> +> +> +> /** +> * Check CPU provider. +> */ +> static __inline__ int is_amd() +> { +> unsigned int _ebx, _ecx, _edx; +> +> __asm__ __volatile__( +> "cpuid \n\t" +> : /* out */ "=b" (_ebx), "=c" (_ecx), "=d" (_edx) +> : /* in */ "a" (0) +> : /* clo */ "memory" +> ); +> +> // "AuthenticAMD" +> if ((_ebx == 0x68747541) && +> (_ecx == 0x444D4163) && +> (_edx == 0x69746E65)) +> return 1; +> +> return 0; +> } +66,67c104,147 +< /* Check SVM bit in CPUID extended features */ +< return cpuid_ecx(CPUID_PROCESSOR_SIGNATURE) & CPUID_SVM; +--- +> // Don't initialize this variables !!! +> // because gcc on OSx remove all checks with this variables +> // and we can get wrmsr on locked msr register (which cause GP#) -- ms +> unsigned long msr_edx, msr_eax; +> unsigned int cpuid_1_ecx; +> unsigned int cpuid_2_edx; +> +> +> if (!is_amd()) +> return 0; +> +> msr_edx = 0; +> msr_eax = 0; +> +> // Check SVM bit in CPUID extended features +> cpuid_1_ecx = cpuid_ecx(CPUID_PROCESSOR_SIGNATURE); +> +> cpuid_2_edx = 0; +> +> // Check SVM bit in CPUID feature indentifiers +> if ((cpuid_1_ecx & CPUID_SVM) == 0) +> return 0; // SVM not available +> +> +> // Get VM_CR MSR value +> rdmsr(SMR_VM_CR, msr_eax, msr_edx); +> +> if((msr_eax & VM_CR_SVMDIS) == 0) +> { +> // set EFER.SVME +> rdmsr(MSR_IA32_EFER, msr_eax, msr_edx); +> wrmsr(MSR_IA32_EFER, msr_eax | EFER_SVME, msr_edx); +> return 1; // SVM allowed +> } +> +> // CPUID SVM Revision and Feature Identification EDX +> cpuid_2_edx = cpuid_edx(CPUID_SVM_REV); +> +> if((cpuid_2_edx & SVM_LOCK) == 0) +> { +> return 0; // SVM disabled at bios not unlockable +> } +> +> return 0; // SVM disabled with key +70a151 +> +--- data/drivers/hypervisor/vtx_init.h ++++ data/drivers/hypervisor/vtx_init.h +75a76,97 +> /** +> * Check CPU provider. +> */ +> static __inline__ int is_intelPW22() +> { +> unsigned int _ebx, _ecx, _edx; +> +> __asm__ __volatile__( +> "cpuid \n\t" +> : /* out */ "=b" (_ebx), "=c" (_ecx), "=d" (_edx) +> : /* in */ "a" (0) +> : /* clo */ "memory" +> ); +> +> // "GenuineIntel" +> if ((_ebx == 0x756e6547) && +> (_ecx == 0x6c65746e) && +> (_edx == 0x49656e69)) +> return 1; +> +> return 0; +> } +96a119,121 +> if (!is_intelPW22()) +> return 0; +> +--- data/drivers/Makefile ++++ data/drivers/Makefile +0a1 +> KSRC ?= /lib/modules/$(shell uname -r)/build +5c6 +< cd drv_main/ && $(MAKE) && cd .. +--- +> cd drv_main/ && $(MAKE) KSRC=${KSRC} && cd .. diff --git a/app-emulation/parallels-workstation/parallels-workstation-2.2.2112-r2.ebuild b/app-emulation/parallels-workstation/parallels-workstation-2.2.2112-r2.ebuild new file mode 100644 index 000000000000..3d8d7497df79 --- /dev/null +++ b/app-emulation/parallels-workstation/parallels-workstation-2.2.2112-r2.ebuild @@ -0,0 +1,83 @@ +# Copyright 1999-2008 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: /var/cvsroot/gentoo-x86/app-emulation/parallels-workstation/parallels-workstation-2.2.2112-r2.ebuild,v 1.1 2008/02/07 15:43:49 cardoe Exp $ + +inherit eutils + +S=${WORKDIR}/parallels-${PV}-lin +DESCRIPTION="Virtual machine software that runs multiple operating systems and their applications simultaneously on a single PC." +HOMEPAGE="http://www.parallels.com" +SRC_URI="http://download.parallels.com/GA/Parallels-${PV}-lin.tgz" + +LICENSE="Parallels" +SLOT="0" +KEYWORDS="-* ~x86" +RESTRICT="strip" + +DEPEND="virtual/os-headers + =x11-libs/qt-3* + >=sys-libs/libstdc++-v3-3.0.0 +" +destdir=/usr/lib/parallels + +src_unpack() { + unpack ${A} + cd "${S}" + + epatch "${FILESDIR}"/${PN}-2.2.2112-2.6.23.patch +} + +src_install() { + dodoc data/doc/README data/doc/INSTALL data/doc/LICENSE + + dodir ${destdir}/doc + insinto ${destdir}/doc + doins data/doc/README data/doc/INSTALL data/doc/LICENSE + + insinto ${destdir} + doins data/* + + dodir ${destdir}/bugreports + fperms 1777 ${destdir}/bugreports + + touch ${destdir}/.parallels_common_options + fperms 666 ${destdir}/.parallels_common_options + touch ${destdir}/.parallels_license + fperms 666 ${destdir}/.parallels_license + touch ${destdir}/.not_configured + + dosym ${destdir}/parallels /usr/bin/parallels + dosym ${destdir}/imagetool /usr/bin/imagetool + dosym ${destdir}/parallels-config /usr/bin/parallels-config + + dosym /usr/bin/parallels /usr/bin/Parallels + dosym /usr/bin/parallels-config /usr/bin/Parallels-config + + newinitd "${FILESDIR}"/parallels.rc parallels +} + +pkg_preinst() { + running=`rc-status -s | grep parallels | grep started` + if [[ $running != "" ]]; then + /etc/init.d/parallels stop + fi +} + +pkg_postinst() { + rm -f $destdir/.ereaded + + $destdir/tools/mimelink associate 2> /dev/null + chmod 06555 $destdir/parallels-linux + + echo + elog "You should configure ${PN} ${PV}" + elog "before starting it for the first time." + elog "Issue \"parallels-config\" command." + echo +} + +pkg_postrm() { + if [ -e $destdir/Makefile ]; then + make -C $destdir clean distclean > /dev/null 2>&1 + fi +} |