summaryrefslogtreecommitdiff
blob: 5a7a68a59a0b158a4c0ae2c6006ab7290b4c0edb (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
# Copyright 1999-2008 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/app-emulation/open-vm-tools/open-vm-tools-0.0.20071121.64693.ebuild,v 1.4 2008/04/26 14:04:22 ikelos Exp $

inherit eutils linux-mod versionator

MY_DATE="$(get_version_component_range 3)"
MY_BUILD="$(get_version_component_range 4)"
MY_PV="${MY_DATE:0:4}.${MY_DATE:4:2}.${MY_DATE:6:2}-${MY_BUILD}"
MY_P="${PN}-${MY_PV}"

S="${WORKDIR}/${MY_P}"

DESCRIPTION="Opensourced tools for VMware guests"
HOMEPAGE="http://open-vm-tools.sourceforge.net/"
SRC_URI="mirror://sourceforge/${PN}/${MY_P}.tar.gz"

LICENSE="GPL-2"
SLOT="0"
KEYWORDS="~x86 ~amd64"
IUSE="pam X xinerama"
DEPEND="
		virtual/linux-sources
		sys-apps/ethtool
		X? (
			x11-libs/libX11
			x11-libs/gtk+
			)
		xinerama? (
			x11-libs/libXinerama
			)
		!app-emulation/vmware-workstation-tools
		!app-emulation/vmware-server-tools
		!app-emulation/vmware-esx-tools
		"

RDEPEND="${DEPEND/virtual\/linux\-sources/}
		X? (
			x11-base/xorg-server
			x11-drivers/xf86-video-vmware
			x11-drivers/xf86-input-vmmouse
		)
"

VMWARE_MOD_DIR="modules/linux"
VMWARE_MODULE_LIST="vmblock vmhgfs vmsync vmmemctl vmxnet"

pkg_setup() {

	linux-mod_pkg_setup
	MODULE_NAMES=""
	BUILD_TARGETS="auto-build KERNEL_DIR=${KERNEL_DIR} KBUILD_OUTPUT=${KV_OUT_DIR}"

	for mod in ${VMWARE_MODULE_LIST};
	do
		if [[ "${mod}" == "vmxnet" ]];
		then
			MODTARGET="net"
		else
			MODTARGET="openvmtools"
		fi
		MODULE_NAMES="${MODULE_NAMES} ${mod}(${MODTARGET}:${S}/${VMWARE_MOD_DIR}/${mod})"
	done

	enewgroup vmware

}

src_unpack() {
	unpack ${A}
}

src_compile() {
	#if ! use X; then
	#	epatch ${FILESDIR}/disable-toolbox.patch
	#	rm -rf ${S}/toolbox
	#fi

	econf \
	$(use_with X x) \
	$(use_enable xinerama multimon) \
	|| die "Error: econf failed!"

	linux-mod_src_compile

	emake || die
}

src_install() {

	linux-mod_src_install

	if use pam; then
		LIB="$(get_libdir)"
		PAMFILE="${D}/etc/pam.d/vmware-guestd"
		dodir "${ROOT}${LIB}"
		dodir "${ROOT}etc/pam.d"
		echo '#%PAM-1.0' > "${PAMFILE}"
		if [[ -e "${ROOT}${LIB}/security/pam_unix2.so" ]];
		then
			PAM_VER=2
		fi

		echo -e "auth\tsufficient\t${ROOT}${LIB}/security/pam_unix${PAM_VER}.so\tshadow\tnullok" >> "${PAMFILE}"
		echo -e "auth\trequired\t${ROOT}${LIB}/security/pam_unix_auth.so\tshadow\tnullok" >> "${PAMFILE}"
		echo -e "account\tsufficient\t${ROOT}${LIB}/security/pam_unix${PAM_VER}.so" >> "${PAMFILE}"
		echo -e "account\trequired\t${ROOT}${LIB}/security/pam_unix_acct.so" >> "${PAMFILE}"

	fi

	# Install the various tools
	cd "${S}"
	VMWARE_BIN_LIST="hgfsclient xferlogs"
	VMWARE_SBIN_LIST="guestd checkvm"
	if use X; then
		# Fix up the vmware-user tool's name
		mv vmware-user/vmware-user vmware-user/user
		mv vmware-user user
		VMWARE_BIN_LIST="${VMWARE_BIN_LIST} user toolbox"
	fi
	for i in ${VMWARE_BIN_LIST}; do
		newbin ${i}/${i} vmware-${i} || die "Failed installing ${i}"
	done
	for i in ${VMWARE_SBIN_LIST}; do
		newsbin ${i}/${i} vmware-${i} || die "Failed installing ${i}"
	done

	dolib libguestlib/.libs/libguestlib.{so.0.0.0,a}

	# Deal with the hgfsmounter
	into "${ROOT}"
	newsbin hgfsmounter/hgfsmounter mount.vmhgfs
	fperms u+s "${ROOT}sbin/mount.vmhgfs"
	### FROM THIS POINT ON, into IS SET TO ${ROOT} not /usr !!!

	# Install the /etc/ files
	exeinto "${ROOT}etc/vmware-tools"
	doexe scripts/linux/*
	insinto "${ROOT}etc/vmware-tools"
	doins "${FILESDIR}/tools.conf"
	# Only install this, when X is being used. Else it's useless waste of
	# ressources when checking continuously for processes that will never appear
	use X && doins "${FILESDIR}/xautostart.conf"
	newinitd "${FILESDIR}/open-vm.initd" vmware-tools
	newconfd "${FILESDIR}/open-vm.confd" vmware-tools

	if use X;
	then
		elog "To be able to use the drag'n'drop feature of VMware for file"
		elog "exchange, you need to do this:"
		elog "	Add 'vmware-tools' to your default runlevel"
		elog "	Add the users which should have access to this function"
		elog "	to the group 'vmware'"
	fi
}