summaryrefslogtreecommitdiff
blob: 07243d0be1e6e85f24262f0405c2d150406c4675 (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
# Copyright 1999-2016 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2

EAPI=5

inherit eutils gnome2-utils systemd unpacker

# Major version
MV=${PV/\.*}
MY_PN=${PN}${MV}
DESCRIPTION="All-In-One Solution for Remote Access and Support over the Internet"
HOMEPAGE="https://www.teamviewer.com"
SRC_URI="https://download.teamviewer.com/download/version_${MV}x/${PN}_${PV}_i386.deb"

IUSE="+system-wine"

LICENSE="TeamViewer LGPL-2.1" #LGPL for bundled wine
SLOT=${MV}
KEYWORDS="-* ~amd64 ~x86"

RESTRICT="bindist mirror"

RDEPEND="
	system-wine? ( app-emulation/wine[abi_x86_32(-),png] )
	!system-wine? ( media-libs/libpng:1.2[abi_x86_32(-)] )
	sys-apps/dbus[abi_x86_32(-)]
	dev-qt/qtcore:4[abi_x86_32(-)]
	dev-qt/qtgui:4[abi_x86_32(-)]
	dev-qt/qtwebkit:4[abi_x86_32(-)]
	media-libs/alsa-lib[abi_x86_32(-)]
	x11-libs/libICE[abi_x86_32(-)]
	x11-libs/libSM[abi_x86_32(-)]
	x11-libs/libX11[abi_x86_32(-)]
	x11-libs/libXau[abi_x86_32(-)]
	x11-libs/libXdamage[abi_x86_32(-)]
	x11-libs/libXdmcp[abi_x86_32(-)]
	x11-libs/libXext[abi_x86_32(-)]
	x11-libs/libXfixes[abi_x86_32(-)]
	x11-libs/libXrandr[abi_x86_32(-)]
	x11-libs/libXtst[abi_x86_32(-)]"

QA_PREBUILT="opt/teamviewer${MV}/*"

S=${WORKDIR}/opt/teamviewer/tv_bin

src_prepare() {
	#epatch "${FILESDIR}/${P}-gentoo.patch"
	sed \
		-e "s/@TVV@/${MV}/g" \
		"${FILESDIR}"/${PN}d.init > "${T}"/init || die
	sed \
		-e "s:/opt/teamviewer:/opt/teamviewer${MV}:g" \
		"script//${PN}d.service" > "${T}/${PN}d.service" || die
	sed \
		-e "s/@TVV@/${PV}/g" \
		-e "s/@TVMV@/${MV}/g" \
		"${FILESDIR}"/${PN}.sh > "${T}"/sh || die
	if ! use system-wine; then
		sed -i "s/native=true/native=false/g" "${T}/sh" || die
	fi
}

src_install () {
	local destdir="/opt/${MY_PN}"

	# install wine prefix skeleton and reg keys
	insinto "${destdir}/wine/drive_c/"
	doins -r wine/drive_c/TeamViewer/
	# install bundled wine if necessary
	if ! use system-wine; then
		insinto "${destdir}/tv_bin/wine"
		doins -r wine/{lib,share}
		exeinto "${destdir}/tv_bin/wine/bin"
		doexe wine/bin/{wine,wine-preloader,wineserver}
	fi
	# fix permissions
	fperms 755 ${destdir}/wine/drive_c/TeamViewer/TeamViewer.exe

	# install wine wrapper
	exeinto "/opt/bin"
	newexe "${T}/sh" "${MY_PN}"

	# install teamviewer linux binaries
	exeinto "${destdir}/tv_bin"
	doexe TeamViewer_Desktop TVGuiDelegate TVGuiSlave.32
	use amd64 && doexe TVGuiSlave.64

	# install daemon binary and scripts
	exeinto "${destdir}/tv_bin"
	doexe ${PN}d
	newinitd "${T}/init" ${PN}d${MV}
	newconfd "${FILESDIR}/${PN}d.conf" ${PN}d${MV}
	systemd_newunit "${T}/${PN}d.service" ${PN}d${MV}.service

	# set up logdir
	keepdir /var/log/${MY_PN}
	dosym /var/log/${MY_PN} /opt/${MY_PN}/logfiles

	# set up config dir
	keepdir /etc/${MY_PN}
	dosym /etc/${MY_PN} /opt/${MY_PN}/config

	newicon -s 48 desktop/${PN}.png ${MY_PN}.png
	#dodoc ../doc/linux_FAQ_{EN,DE}.txt
	make_desktop_entry ${MY_PN} "TeamViewer ${MV}" ${MY_PN}
}

pkg_preinst() {
	gnome2_icon_savelist
}

pkg_postinst() {
	gnome2_icon_cache_update

	elog "TeamViewer from upstream uses an overly-complicated set of bash"
	elog "scripts to start the program.  This has been simplified for Gentoo"
	elog "use.  Any issues should be reported via bugzilla."
	if use system-wine; then
		elog
		elog "Due to bug #552016, when using system wine, one is not able to"
		elog "share one's own screen.  At this time, this may be remedied by"
		elog "toggling the system-wine USE flag."
	fi
	elog
	elog "The end-user client requires running the accompanying daemon,"
	elog "available via init-scripts."
}

pkg_postrm() {
	gnome2_icon_cache_update
}