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

EAPI=6

MY_PN=${PN}${PV/\.*}
inherit eutils gnome2-utils systemd

DESCRIPTION="All-In-One Solution for Remote Access and Support over the Internet"
HOMEPAGE="https://www.teamviewer.com"
SRC_URI="amd64? ( https://dl.tvcdn.de/download/linux/version_${PV/\.*}x/${PN}_${PV}_amd64.tar.xz )
		x86? ( https://dl.tvcdn.de/download/linux/version_${PV/\.*}x/${PN}_${PV}_i386.tar.xz )"

LICENSE="TeamViewer MIT"
SLOT="${PV/\.*}"
KEYWORDS="-* ~amd64 ~x86"
IUSE=""

DEPEND="sys-apps/sed"
RDEPEND="
	dev-qt/qtcore:5
	dev-qt/qtdbus:5
	dev-qt/qtdeclarative:5
	dev-qt/qtgui:5
	dev-qt/qtnetwork:5
	dev-qt/qtquickcontrols:5
	dev-qt/qtwebkit:5
	dev-qt/qtwidgets:5
	dev-qt/qtx11extras:5
	sys-apps/dbus
"

RESTRICT="bindist mirror"

# Silence QA messages
QA_PREBUILT="opt/${MY_PN}/*"

S="${WORKDIR}"/teamviewer

src_prepare() {
	default

	# Switch operation mode from 'portable' to 'installed'
	sed -e "s/TAR_NI/TAR_IN/g" -i tv_bin/script/tvw_config || die

	sed -e "/^ExecStart/s/${PN}/${MY_PN}/" \
		-i tv_bin/script/teamviewerd.service || die
}

src_install() {
	local dst="/opt/${MY_PN}" # install destination

	# Quirk:
	# Remove Intel 80386 32-bit ELF binary 'libdepend' present in all
	# archives. It will trip the 'emerge @preserved-libs' logic on amd64
	# when changing the ABI of one of its dependencies. According to the
	# TeamViewer devs, this binary is an unused remnant of previous Wine-
	# based builds and will be removed in future releases anyway
	rm tv_bin/script/libdepend

	insinto ${dst}
	doins -r tv_bin

	# Set permissions for executables and libraries
	for exe in $(find tv_bin -type f -executable -or -name '*.so'); do
		fperms 755 ${dst}/${exe}
	done

	newinitd "${FILESDIR}"/teamviewerd13.init teamviewerd${SLOT}
	systemd_newunit tv_bin/script/${PN}d.service ${PN}d${SLOT}.service

	insinto /usr/share/dbus-1/services
	doins tv_bin/script/com.teamviewer.TeamViewer.service
	doins tv_bin/script/com.teamviewer.TeamViewer.Desktop.service

	insinto /usr/share/polkit-1/actions
	doins tv_bin/script/com.teamviewer.TeamViewer.policy

	for size in 16 24 32 48 256; do
		newicon -s ${size} tv_bin/desktop/teamviewer_${size}.png ${MY_PN}.png
	done

	# Install documents (NOTE: using 'dodoc -r doc' instead of loop will
	# have the undesired result of installing subdirectory 'doc' in /usr/
	# share/doc/teamviewer-<version>)
	for doc in $(find doc -type f); do
		dodoc ${doc}
	done

	keepdir /etc/${MY_PN}
	dosym ../../etc/${MY_PN} ${dst}/config

	# Create directory and symlink for log files (NOTE: according to Team-
	# Viewer devs, all paths are hard-coded in the binaries; therefore
	# using the same path as the DEB/RPM archives, i.e. '/var/log/teamviewer
	# <major-version>')
	keepdir /var/log/${MY_PN}
	dosym ../../var/log/${MY_PN} ${dst}/logfiles

	dodir /opt/bin
	dosym ${dst}/tv_bin/teamviewerd /opt/bin/teamviewerd${SLOT}
	dosym ${dst}/tv_bin/script/teamviewer /opt/bin/${MY_PN}

	make_desktop_entry ${MY_PN} "TeamViewer ${SLOT}" ${MY_PN}
}

pkg_postinst() {
	gnome2_icon_cache_update

	elog "Before using TeamViewer, you need to start its daemon:"
	elog "OpenRC:"
	elog "# /etc/init.d/teamviewerd${SLOT} start"
	elog "# rc-update add teamviewerd${SLOT} default"
	elog
	elog "Systemd:"
	elog "# systemctl start teamviewerd${SLOT}.service"
	elog "# systemctl enable teamviewerd${SLOT}.service"
	elog
	elog "To display additional command line options simply run:"
	elog "$ ${MY_PN} help"
}

pkg_postrm() {
	gnome2_icon_cache_update
}